Home » Archimedes archive » Acorn User » AU 1998-05 B.adf » PRMs » OS

OS

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1998-05 B.adf » PRMs
Filename: OS
Read OK:
File size: C6530 bytes
Load address: 0000
Exec address: 0000
File contents
HELP(�����,����$DIR$���H������+�ADFS_�#H������+�BasicTrans_�'H���c��+�Buffer_�<H���غ�+,Cache_P=H���V��+�ColourTrans_�H����Ȁ+PDebugger_̎H���ɀ+(DeviceFS_�H���d΀+,DMA_��H����΀+�DOSFS_l�H����π+DrawFile_��H���Ԁ+Draw_�H���sր+�Econet_�VH����ۀ+Hevent_�yH����ހ+FileCore_T�H���i�+�Font_�QH���b�+Hourglass_�YH�����+LIIC_[H���O�+,FSLock_�[H�����+�fsys_�tH�����+�MessageTrans_ĒH���2��+LFPEmulator_,�H�����+�ImageEntry_��H���@��+�RamFS_D�H�����+p
service_��H���u�+LScreenBlanker_P�H�����+,ScreenModes_̼H�����+,SharedCLibrary_H�H�����+lShell_��H�����+HSound_�H���d�+tSuper_�H�����+tswi_hH�����+�Squash_H�����+�Territory_�QH���7�+(NetFS_dsH���r�+�NetPrint_T�H���1�+dOS_�:
H����(�+�Parallel_�B
H���6)�+�PDriver_С
H����+�+Podule_D�
H����Ɩ*_!Root��
H����,�+LJoystick_X�
H���-�+�JPEG_��
H����-�+�ResourceFS_��
H����-�+,SCSI_`�
H����-�+�CDFS_��
H���1.�+�CD_`'H����/�+,ATAPI_�'H���0�+,RemotePrinterSupport_�(H���0�+PMakePSFont_�)H���90�+(Portable_<6H���/4�+�about�SH����0�+FSEntry_��H���5�+Tvector_.G����(GԄ3!Pre�.H����w+�Contributions<4H���l��A3!Configure�4H���56�+HPDumperDIR$��l
G���^��!Root�H�����w
ControllerType�F���,��םDrives4
H����q��DescribeDisc�
H���Lw��DiscOp�F���\���zECCSAndRetries�F����īףFreeSpace�F������rHDCH���c�w�IDEUserOp�H�����w�MiscOp`H�����w=PowerControl�F���fĬ�dRetriesF���nج��SetIDEController�F������pVetFormatL!H���k�wkFlpProcessDCB�!G���FB��~LockIDE8"H����k��SectorOp�"H�����w�FreeSpace64DATAADFS
#Prefix ADFS_
#Parent !Root
#Table Columns 2
<ControllerType>
<DescribeDisc>
<DiscOp>
<Drives>
<ECCSAndRetries>
<FlpProcessDCB>
<FreeSpace>
<FreeSpace64>
<HDC>
<IDEUserOp>
<LockIDE>
<MiscOp>
<PowerControl>
<Retries>
<SectorOp>
<SetIDEController>
<VetFormat>
#EndTable
DATA
ADFS_ControllerType  (&40248)
=>	R0 =	drive number (0-7)
<=	R0 =	controller type:
	 	0 => disc not present
	 	1 => 1772
	 	2 => 710/711
	 	3 => ST506
	 	4 => IDE

This call returns the controller type of the given drive, and is not available under RISC OS 2.DATA�ADFS_Drives  (&40242)
#Parent ADFS_
This SWI calls <FileCore_Drives>, after first setting R8 to point to the FileCore instance private word for ADFS.DATA�ADFS_DescribeDisc  (&40245)
#Parent ADFS_
This SWI calls <FileCore_DescribeDisc>, after first setting R8 to point to the FileCore instance private word for ADFS.
DATA�ADFS_DiscOp  (&40240)
#Parent ADFS_
This SWI calls <FileCore_DiscOp>, after first setting R8 to point to the FileCore instance private word for ADFS.
DATAzADFS_ECCSAndRetries  (&40250)
#Parent ADFS_
This call is for internal use only, and not available under RISC OS 2.DATA�ADFS_FreeSpace  (&40243)
#Parent ADFS_
This SWI calls <FileCore_FreeSpace>, after first setting R8 to point to the FileCore instance private word for ADFS.DATArADFS_HDC  (&40241)
#Parent ADFS_
=>	R2 =	address of alternative hard disc controller
	R3 =	address of poll location for IRQ/DRQ
	R4 =	bits for IRQ/DRQ
	R5 =	address to enable IRQ/DRQ
	R6 =	bits to enable IRQ/DRQ

This call sets up the address of the ST5056 hard disc controller to be used by the ADFS. For instance, an expansion card can suplly an alternative controller to the one normally used. The controller must be an HD63463 (or compatible).

The polling and interupt sense is done using:
#Indent 2;fcode
LDRB  <Rn=>Assembly:Rn>,[poll location]
TST   Rn,[poll bits]
#Indent;f

The IRQ/DRQ must be 1 when active.
DATA�ADFS_IDEUserOp  (&4024B)
#Parent ADFS_
=>	R0 =	<flags=>.flags>
	R2 =	pointer to parameter block for command and results
	R3 =	pointer to buffer
	R4 =	length to transfer
	R5 =	timeout in centiseconds (0 => use default)
	R12 =	pointer to static work space

<=	R0 =	command status (0 or a disc error number)
	R2 preserved
	R3,R4 updated
	R5 corrupted

This call provides the direct use interface for low-level IDE commands. It must not be called in background.
#Subpage flags
IDE Controller flags
Bit	Meaning
#line
0	set : reset controller
	clr : process command
24-25	transfer direction:
	00 : no transfer
	01 : read (ie bit 24 set)
	10 : write (ie bit 25 set)
	11 : reserved
DATA�ADFS_MiscOp  (&4024C)
#Parent ADFS_
This SWI calls <FileCore_MiscOp>, after first setting R8 to point to the FileCore instance private word for ADFS.DATA=ADFS_PowerControl  (&40249)
=>	R0 =	reason code
	 	0 => read drive spin status
	 	1 => set drive autospindown
	 	2 => control drive spin directly without affecting autospindown
	R1 =	drive
	R2 =	drive autospindown, if R0 = 1;
	 	  5 נnumber of seconds
	 	or action to take, if R0 = 2;
	 	  0 to spin down immediately
	 	  otherwise, spin up immediately

<=	R2 =	drive spin status, if R0 = 0;
	 	  0 if drive isn't spinning
	 	  0 if drive is spinning
	R3 =	previously value for drive autospindown, if R0 = 1

This call controls the power saving features of the ADFS system. It can be dangerous to use this call on drives that not fully support drive spin control. The controller on at least two drives tested hang up when autospindown is enabled; a reset doesn't recover the situation, althought a power-down reset does.DATAdADFS_Retries  (&40244)
#Parent ADFS_
=>	R0 =	mask of bits to change
	R1 =	new values of bits to change

<=	R0 preserved
	R1 =	R0 AND entry value of R1
	R2 =	old value of retry word
	R3 =	new value of retry word

This call sets up the number of retries used by writing to the retry word. The format of the word is:

#Tab
Byte	Number of retries for
#Line
0	hard disc read/write sector
1	floppy disc read/write sector
2	floppy disc mount (per copy of the disc map)
3	verify after *Format, before sector is considered a defect

The new value is calculated as follows:
  (old value AND NOT R0) EOR (R1 AND R0)DATA�ADFS_SetIDEController  (&4024A)
#Parent ADFS_
=>	R2 =	pointer to IDE controller
	R3 =	pointer to interrupt status of controller
	R4 =	AND with status, NE => IRQ
	R5 =	pointer to interrupt mask
	R6 =	OR into mask enables IRQ
	R7 =	pointer to data read routine (0 for default)
	R8 =	pointer to data write routine (0 for default)
	R12 =	pointer to static work space

<=	All registers preserved

This call gives the IDE driver the details of an alternative controller.DATApADFS_VetFormat  (&40246)
#Parent ADFS_
=>	R0 =	pointer to disc format structure to be vetted
	R1 =	parameters previously passed by ADFS in R2 to 'Image'FS_DiscFormat (ie drive number)

<=	R0,R1 preserved

This call vets the given disc format structure for achievability with the available hardware. ADFS updates the disc format structures with values that it can actually achieve with the hardware available. For example the only fill byte value available when formatting might be 0, but the requested value may be &4E, hence 0 would be filled in as the fill byte value.

If ADFS can't sensibly downgrade the parameters structure, it will generate an error.

This call is typically made by FileCore or by the image filing system 'ImageFS', in response to ADFS calling <FileCore_DiscFormat> or 'ImageFS'_DiscFormat (eg <DOSFS_DiscFormat>) respectively.

The value in R1 is used to pass enough information on the hardware on which the format is to take place for the disc format structure to be vetted. ADFS uses the drive number for this; other handlers of discs may pass different information if they implement a VetFormat SWI.
DATAkADFS_FlpProcessDCB  (&40247)
This call is for internal use only, and not available under RISC OS 2.DATA~ADFS_LockIDE  (&40251)
#Parent ADFS_
=>	R0 =	flag, b0 set to lock, clear to unlock

This is used to lock the IDE bus.
DATA�ADFS_SectorOp  (&4024D)
#Parent ADFS_
This SWI calls <FileCore_SectorOp>, after first setting R8 to point to the FileCore instance private word for ADFS.DATA�ADFS_FreeSpace64  (&40252)
#Parent ADFS_
This SWI calls <FileCore_FreeSpace64>, after first setting R8 to point to the FileCore instance private word for ADFS.DIR$��$H����M!Root`$H���C��Error<%H����D��HELP�&H���BJ��MessageDATAMBasicTrans
#Parent !Root
#Prefix BasicTrans_
<Error>
<HELP>
<Message>DATA�BASICTrans_Error  (&42C81)
#Parent BASICTrans_
=>	R0 =	error number (0 - 112)
	R1 =	pointer to output buffer

<=	R0,R1,R2,R3 corrupted

This SWI writes an appropriate 0 terminated error message into the buffer.
DATA�BASICTrans_Help  (&42C80)
#Parent BASICTrans_
=>	R0 =	pointer to help text (lexically analysed and CR terminated)
	R1 =	pointer to name ('BASIC' or 'BASIC64')
	R2 =	pointer to lexical analyser tables

<=	R0,R2 corrupted
	R1 =	non zero instructs BASIC to print the default (English) text

BASIC tokenises the help text and then calls this SWI to print the appropriate help text.
DATA�BASICTrans_Message  (&42C812)
#Parent BASICTrans_
=>	R0 =	message number (0 - 25)
	R1 =	message dependent value
	R2 =	message dependent value
	R3 =	message dependent value

<=	R0,R1 corrupted

This SWI prints a 'miscellaneous' message.
DIR$���)H������!RootD*H����P��GetInfo�+F����b��buffers�,H���:�&�flags`-H����0�eCreate�/H���K��Remove�1H����+�5Deregister�2H���8N�HLinkDevice<4H����&��ModifyFlags�5H����3��ownerchange�7H���s.��Register49H�����)Threshold`:H����O��UnlinkDevice8;H���S�MwakeupDATA�Buffer
#Parent !Root
#Prefix Buffer_
<Create>
<Deregister>
<GetInfo>
InternalInfo
<LinkDevice>
<ModifyFlags>
<Remove>
<Register>
<Threshold>
<UnlinkDevice>DATA�Buffer_GetInfo  (&42947)
#Parent Buffer_
=>	R0 =	<buffer number=>Buffer_buffers>
<=	R0 =	<flags=>Buffer_flags>
	R1 =	pointer to buffer start
	R2 =	pointer to buffer end
	R3 =	insertion offset
	R4 =	removal offset
	R5 =	bytes free
	R6 =	bytes used

This SWI reads information about a particular buffer. Insertion and removal points wrap around, and the sum of free space and characters may not equal total buffer size.
DATA�Buffer buffers
\#	For
#Line
0	Keyboard
1	Serial input
2	Serial output
3	Printer
4	Sound channel 0
5	Sound channel 1
6	Sound channel 2
7	Sound channel 3
8	Speech
9	Mouse
DATA�Buffer flags
#Parent Buffer_GetInfo
Bit	Meaning
#Line
0	Dormant
1	Generate <event=>event_0> on empty
2	Generate <event=>event_1> on full
3	<UpCall=>OS_UpCallreasons> on threshold
DATAeBuffer_Create  (&42940)
#Parent Buffer_
=>	R0 =	buffer's <flag word=>buffer_flags>
	R1 =	size of buffer to be created
	R2 =	preferred handle for the buffer, -1 to get the buffer manager to generate one
<=	R0 =	buffer handle

This claims an area of the RMA and registers it as a buffer. It can at most hold R1-1 bytes.
If R2 \<>-1, the given number is checked for uniqueness, if it already exists, a new one is generated.
Note that you do not need any complicated calculations to write data into the buffer - it's a simply a block of memory . Get the address with <Buffer_GetInfo> and write to the buffer.
DATA�Buffer_Remove  (&42941)
#Parent Buffer_
=>	R0 =	Handle of buffer to be removed

This removes the buffer specified the handle given in R0. It releases the workspace in the RMA reserved for this buffer. You should this to remove buffers created with <Buffer_Create> - for buffers made using <Buffer_Register> you should use <Buffer_Deregister> instead.

Any data in the buffer will be purged, and an access via <InsV=>vector_InsV>, <RemV=>vector_RemV> and <CnpV=>vector_CnpV> will be ignored.
DATA5Buffer_Deregister  (&42943)
#Parent Buffer_
=>	R0 =	Handle of buffer to be removed

This deregisters the buffer specified by the handle given in R0. You should this to deregister buffers registerd with <Buffer_Register> - for buffers made using <Buffer_Create> you should use <Buffer_Remove> instead.
DATAHBuffer_LinkDevice  (&42945)
#Parent Buffer_
=>	R0 =	buffer handle
	R1 =	pointer to <wake up routine=>buffer_wakeup>
	 	0 for none
	R2 =	pointer to <owner change routine=>buffer_ownerchange>
	 	0 if the owner cannot be changed
	R3 =	routines' private word (R8)
	R4 =	workspace (R12)

This SWI links routines to a buffer.
DATA�Buffer_ModifyFlags  (&42944)
#Parent Buffer_
=>	R0 =	buffer handle
	R1 =	EOR mask
	R2 =	AND mask
<=	R1 =	old flags
	R2 =	new flags

This SWI modifies the buffer's <flag word=>buffer_flags>.

   NewVal = (OldVal AND R2) EOR R1

Ensure that you do not modifiy reserved bits with this call - reserved bits should be clear in R1, set in R2.
#tab
To read:	R1 = 0		R2 = &0000000F
To set:		R1 = new value	R2 = &FFFFFFF0
DATA�Buffer owner change routine
#Parent Buffer_LinkDevice
=>	R0 =	buffer handle
	R8 =	private word
	R12 =	workspace

On entry processor may be in any state (mode, interupts). On exit you must restore everything, unless you wish to return an error (in R0, V set). This routine is called whenever a buffer's owner is changing - {/}i.e.{/} removing/deregistering the buffer, a call to <Buffer_LinkDevice> for this buffer, or killing the buffer manager.
DATA�Buffer_Register  (&42942)
#Parent Buffer_
=>	R0 =	buffer's <flag word=>buffer_flags>
	R1 =	start address of buffer
	R2 =	byte beyond end of buffer
	R3 =	preferred handle for the buffer, -1 to get the buffer manager to generate one
<=	R0 =	buffer handle

This SWI is similar to <Buffer_Create>, but does not claim memory for you - rather it registers your existing memory as a buffer.
DATA)Buffer_Threshold  (&42949)
#Parent Buffer_
=>	R0 =	buffer handle
	R1 =	threshold (-1 to read, 0 for none)
<=	R1 =	previous value

OS_UpCall <8=>OS_UpCall8> and <9=>OS_UpCall9> are issued if bit 3 of the <buffer flags=>buffer_flags> is set, and the buffer free space crosses the threshold.
DATA�Buffer_UnlinkDevice  (&42946)
#Parent Buffer_
=>	R0 =	buffer handle

This SWI unlinks routines from a buffer linked with <Buffer_LinkDevice>. It does not call the <owner changed=>buffer_ownerchange> routine.
DATAMBuffer wakeup routine
#Parent OS_LinkDevice
=>	R0 =	buffer handle
	R8 =	private word
	R12 =	workspace

Before calling bit 0 is set in the <flags word=>buffer_flags>. On entry processor may be in any state (mode, interupts). On exit you must restore everything. This routine is called to allow you to wake up dormant hardware.DIR$,,�<F����K"��!RootDATA�Cache
#Parent !Root
#Prefix Cache_
#Table Columns 2
Control
Cacheable
Updateable
Disruptive
Flush
#EndTable

Not available from RISC OS 3.5 onwards.DIR$���CF����e�0SetFontColours$FF���wd�*ColourNumberToGCOLPGH���:��(GCOLToColourNumberxHF����d�*InvalidateCache�IF����,d��ReturnColourNumber|JF����6d�ZReturnColourNumberForMode�KH���?���ReturnFontColourshPF���"ad�IReturnGCOL�QF���\pd�QReturnGCOLForModeSF����d��ReturnOppColourNumber�SF���l�d�sReturnOppColourNumberForModeXUF�����d�ReturnOppGCOLVF���\�d�UReturnOppGCOLForModepWH���S(�SelectGCOLTablex[H�����VSelectTable�aF����Ce�[SetGCOL,cF����\e�'GCOLflagsTdF����re۴SetOppGCOLfG���d���pixtrans�fG���*��3SetColour�gH���::LConvertRGBToCIE$iH���'z9LConvertCIEToRGBpjH����n��ConvertRGBToHSV0lH���9(��ConvertHSVToRGB�mH����:�ConvertRGBToCMYK�oH���h4:�ConvertCMYKToRGB�qH�����:�fixedpointtrH���T*��calibrationtableTxH����J�0ConvertDeviceColour�yH������ConvertDevicePalette<{H������GenerateTable�{H����3�PMiscOp,|H����K�AReadCalibrationp}H������ReadPalette@�H���A�$SetCalibrationd�H���,��LSetOppTextColour��H�����HSetTextColour��H������LWriteCalibrationToFileD�H����3��WriteLoadingsToFile8�H�������WritePalette�H����f�!RootDATA0ColourTrans_SetFontColours (&4074F)
#Parent ColourTrans_
=>	R0 =	font handle, or 0 for current font
	R1 =	background palette entry
	R2 =	foreground palette entry
	R3 =	maximum foreground colour offset (0-14)

<=	R0 preserved
	R1 =	background logical colour (preserved if in 256 colour mode)
	R2 =	foreground logical colour
	R3 =	maximum sensible colour offset (up to R3 on entry)

This call, given a pair of palette entries, finds the best available range of anti-aliasing colours in the current palette, and sets the font manager to use these colours.DATA*ColourTrans_ColourNumberToGCOL (&4074D)
#Parent ColourTrans_
=>	R0 =	colour number
<=	R0 =	GCOL

This call changes the value passed from a colour number, to a GCOL.

Use this and <ColourTrans_GCOLToColourNumber>, only in 256 colour modes, the results in any other modes will be meaningless.DATA(ColourTrans_GCOLToColourNumber (&4074C)
#Parent ColourTrans_
=>	R0 =	GCOL
<=	R0 =	colour number

This call changes the value passed from GCOL, to a colour number.

Use this and <ColourTrans_ColourNumberToGCOL>, only in 256 colour modes, the results in any other modes will be meaningless.DATA*ColourTrans_InvalidateCache (&40750)
#Parent ColourTrans_
This call must be issued whenever the palette has changed since ColourTrans was last called. Note that colour changes due to a mode change are detected. You only need to use this if another of the palette change operations was used.DATA�ColourTrans_ReturnColourNumber (&40744)
#Parent ColourTrans_
=>	R0 =	palette entry
<=	R0 =	colour number

This call, given a palette entry, returns the closest colour number in the current mode and palette.DATAZColourTrans_ReturnColourNumberForMode (&40746)
=>	R0 =	palette entry
	R1 =	destination mode, or -1 for current mode
	R2 =	palette pointer, or -1 for current palette, or 0 for default for the mode

<=	R0 =	colour number
	R1,R2 preserved 

This call, given a palette entry, a destination mode and palette, returns the closest colour number.DATA�ColourTrans_ReturnFontColours (&4074E)
#Parent ColourTrans_
=>	R0 =	font handle, or 0 for current font
	R1 =	backgorund palette entry
	R2 =	foreground palette entry
	R3 =	maximum foreground colour offset (0-14)

<=	R0 preserved
	R1 =	background logical colour (preserved if in 256 colour mode)
	R2 =	foreground logical colour
	R3 =	maximum sensible colour offset (up to R3 on entry)

This call, given background and foreground colours and the number of anti aliasing colours desired, finds the maximum range of colour that can sensibly be used. So for the given palette entries, it finds the best fit in the current palette, and then inspects the other available colours to deduce the maximum possible amount of anti-aliasing up to the limit in R3.

If anti-aliasing is desirable, you should set R3=14 on entry; otherwise set R3=0 for monochrome.

The values in R1-R3 on exit are suitable for passing to <Font_SetFontColours>, or including in a font string in a command (18) sequence.

In 256 colour modes you can only set 16 colours before previously returned information becomes invalid - this is the source of the 16 colourchange limitation in <Font_Paint>.DATAIColourTrans_ReturnGCOL (&40742)
#Parent ColourTrans_
=>	R0 =	Palette entry
<=	R0 =	GCOL

This call, given a palette entry, returns the closest GCOL in the current mode and palette. It's equivalent to <ColourTrans_ReturnGCOLForMode> for the given palette entry, with parameters of -1 for both the mode and palette pointer.DATAQColourTrans_ReturnGCOLForMode (&40745)
#Parent ColourTrans_
=>	R0 =	Palette entry
	R1 =	destination mode, -1 for current mode
	R2 =	palette pointer, or -1 for current palette, or 0 for default for the mode

<=	R0 =	GCOL
	R1,R2 preserved

This call, given a palette entry, a destination mode and palette, returns the closest GCOL.DATA�ColourTrans_ReturnOppColourNumber (&40749)
#Parent ColourTrans_
=>	R0 =	palette entry
<=	R0 =	colour number

This call, given a palette entry, returns the furthest colour number in the current mode and palette.DATAsColourTrans_ReturnOppColourNumberForMode (&4074B)
#Parent ColourTrans_
=>	R0 =	palette entry
	R1 =	destination mode, or -1 for current mode
	R2 =	palette pointer, or -1 for current palette, or 0 for default for the mode

<=	R0 =	colour number
	R1,R2 preserved 

This call, given a palette entry, a destination mode and palette, returns the furthest colour number.DATA�ColourTrans_ReturnOppGCOL (&40747)
#Parent ColourTrans_
=>	R0 =	palette entry
<=	R0 =	GCOL

This call, given a palette entry, returns the furthest GCOL in the current mode and palette.DATAUColourTrans_ReturnOppGCOLForMode (&4074A)
#Parent ColourTrans_
=>	R0 =	Palette entry
	R1 =	destination mode, -1 for current mode
	R2 =	palette pointer, or -1 for current palette, or 0 for default for the mode

<=	R0 =	GCOL
	R1,R2 preserved

This call, given a palette entry, a destination mode and palette, returns the furthest GCOL.DATAColourTrans_SelectGCOLTable (&40741)
#Parent ColourTrans_
=>	R0 =	-1 for current mode
	 	(if \< 256)	source mode
	 	(if >= 256)	pointer to sprite area
	R1 =	(if R0 \< 256)	source palette pointer or -1 for current palette
	 	(if R0 >= 256)	pointer to sprite name/sprite in area pointed to by R0 (as specified by R5)
	R2 =	destination mode, or -1 for current mode
	R3 =	destination palette pointer, or -1 for current palette, or 0 for default for the mode
	R4 =	pointer to <buffer=>colourtrans_pixtrans>
	R5 =	<flags=>.flags> (only used if R0 >= 256)

<=	All registers preserved

This call, given a source mode and palette, a destination mode and palette, and a buffer, sets up a list of GCOLs in the buffer. The values can subsequently be used by passing them to <GCOL=>BASIC:GCOL> and <TINT=>BASIC:TINT>.
#Subpage flags
Select Table flags
Bit	Meaning if set
#Line
0	R1 = pointer to sprite (otherwise sprite name)
1	use current palette if sprite doesn't have one (otherwise default palette)
other bits reserved (must be zero)DATAVColourTrans_SelectTable (&40740)
#Parent ColourTrans_
=>	R0 =	-1 for current mode
	 	(if \< 256)	source mode
	 	(if >= 256)	pointer to sprite area
	R1 =	(if R0 \< 256)	source palette pointer or -1 for current palette
	 	(if R0 >= 256)	pointer to sprite name/sprite in area pointed to by R0 (as specified by R5)
	R2 =	destination mode, or -1 for current mode
	R3 =	destination palette pointer, or -1 for current palette, or 0 for default for the mode
	R4 =	pointer to <buffer=>colourtrans_pixtrans>, or 0 to return length
	R5 =	<flags=>.flags> (only used if R0 >= 256)
	R6 =	pointer to <transfer function=>.transferfunction> (if R0 => 256 and flags bit 2)
	R7 =	pointer to transfer function workspace (R12) (if R0 => 256 and flags bit 2)

<=	R4 =	required buffer size if 0 on entry, else preserved
	All other registers preserved

This call sets up a translation table in a buffer - that is, a set of colour numbers as used by scaled sprite plotting.
#Subpage flags
Select Table flags
Bit	Meaning if set
#Line
0	R1 = pointer to sprite (otherwise sprite name)
1	use current palette if sprite doesn't have one (otherwise default palette)
2	R6, R7 specify transfer function
24-31	Format of returned table	0 => <pixtrans table=>colourtrans_pixtrans>
	 				1 => physical palette table
other bits reserved (must be zero)
#Subpage transferfunction
ColourTrans transfer function
By setting bit 2 of the flags, ColourTrans will call the transfer function specified in R6 to pre-process each pallete entry
=>	R0 =	palette entry
	R12 =	workspace (as specifed in R7)
<=	R0 =	processed palette entry
	Preserve all other registersDATA[ColourTrans_SetGCOL (&40743)
#Parent ColourTrans_
=>	R0 =	Palette entry
	R3 =	<flags=>ColourTrans_GCOLflags>
	R4 =	GCOL action
   
<=	R0 =	GCOL
	R2 =	log2 of bits-per-pixel for current mode
	R3 =	initial value AND &80
	R4 preserved

This call, given a palette entry, works out the closest GCOL in the current mode and palette, and sets it.DATA'ColourTrans_SetGCOL flags for R3
Bit	Meaning if set
#Line
7	set background colour (otherwise foreground)
8	use ECF's to give a better approximation to the colour

The remaining bits of R3 and the top three bytes of R4 are reserved, and should be set to zero to allow for future expansionDATA�ColourTrans_SetOppGCOL (&40748)
#Parent ColourTrans_
=>	R0 =	palette entry
	R3 =	0 for foreground or 128 for background
	R4 =	GCOL action

<=	R0 =	GCOL
	R2 =	log2 of bits-per-pixel for current mode
	R3 =	initial value AND &80
	R4 preserved 

This call, given a palette entry, works out the furthest GCOL in the current mode and palette, and sets it.

The top three bits of R3 and R4 should be zero to allow for future expansion.DATA�Colour translation table
#Parent ColourTrans_SelectTable
0	Colour to use instead of sprite colour 0
1	Colour to use instead of sprite colour 1
.
.
15	Colour to use instead of sprite colour 15
DATAColourTrans_SetColour  (&4075E)
#Parent ColourTrans_
=>	R0 =	GCOL number
	R3 =	flags :
	 	  bit 7 set for background, else foreground
	 	  bit 9 set for text colour, else graphics
	R4 =	GCOL action

This SWI is used to change the current plotting colours.
DATALColourTrans_ConvertRGBToCIE (&40755)
#Parent ColourTrans_
=>	R0 =	<red component=>ColourTrans_fixedpoint>
	R1 =	<green component=>ColourTrans_fixedpoint>
	R2 =	<red component=>ColourTrans_fixedpoint>

<=	R0 =	CIE x value
	R1 =	CIE y value
	R2 =	CIE z value

This call converts the colour passed as RGB values to CIE values.
DATALColourTrans_ConvertCIEToRGB (&40756)
#Parent ColourTrans_
=>	R0 =	CIE x value
	R1 =	CIE y value
	R2 =	CIE z value

<=	R0 =	<red component=>ColourTrans_fixedpoint>
	R1 =	<green component=>ColourTrans_fixedpoint>
	R2 =	<red component=>ColourTrans_fixedpoint>

This call converts the colour passed as CIE values to RGB values.
DATA�ColourTrans_ConvertRGBToHSV (&40758)
#Parent ColourTrans_
=>	R0 =	<red component=>ColourTrans_fixedpoint>
	R1 =	<green component=>ColourTrans_fixedpoint>
	R2 =	<red component=>ColourTrans_fixedpoint>

<=	R0 =	<hue, 0 to 360=>ColourTrans_fixedpoint>
	R1 =	<saturation=>ColourTrans_fixedpoint>
	R2 =	<value=>ColourTrans_fixedpoint>

This call converts the colour passed as RGB values to HSV values. Hue is undefined for achromatic colours.
DATA�ColourTrans_ConvertHSVToRGB (&40759)
#Parent ColourTrans_
=>	R0 =	<hue, 0 to 360=>ColourTrans_fixedpoint>
	R1 =	<saturation=>ColourTrans_fixedpoint>
	R2 =	<value=>ColourTrans_fixedpoint>

<=	R0 =	<red component=>ColourTrans_fixedpoint>
	R1 =	<green component=>ColourTrans_fixedpoint>
	R2 =	<red component=>ColourTrans_fixedpoint>

This call converts the colour passed as HSV values to RGB values. It will generate an error for hue = staturation = 0.
DATA�ColourTrans_ConvertRGBToCMYK (&4075A)
#Parent ColourTrans_
=>	R0 =	<red component=>ColourTrans_fixedpoint>
	R1 =	<green component=>ColourTrans_fixedpoint>
	R2 =	<red component=>ColourTrans_fixedpoint>

<=	R0 =	<cyan component=>ColourTrans_fixedpoint>
	R1 =	<magenta component=>ColourTrans_fixedpoint>
	R2 =	<yellow component=>ColourTrans_fixedpoint>
	R3 =	<key component=>ColourTrans_fixedpoint>

This call converts the colour passed as RGB values to CMYK values.
DATA�ColourTrans_ConvertCMYKToRGB (&4075B)
#Parent ColourTrans_
=>	R0 =	<cyan component=>ColourTrans_fixedpoint>
	R1 =	<magenta component=>ColourTrans_fixedpoint>
	R2 =	<yellow component=>ColourTrans_fixedpoint>
	R3 =	<key component=>ColourTrans_fixedpoint>

<=	R0 =	<red component=>ColourTrans_fixedpoint>
	R1 =	<green component=>ColourTrans_fixedpoint>
	R2 =	<red component=>ColourTrans_fixedpoint>

This call converts the colour passed as CMYK values to RGB values.
DATA�ColourTrans fixed point values
#Parent ColourTrans_
Values passed as fixed point numbers have the point between bits 15 and 16,�so 1 is &10000, 0.01 is around &28F and 0.1 is around &1999.
DATA�ColourTrans calibration tables
#Parent ColourTrans_
# PRM 3-342
Tables are specified as

Size	Content
#Line
4	number of entries for component one
4	number of entries for component two
4	number of entries for component three
number * 4	entries for component one (in ascending device component order)
number * 4	entries for component two
number * 4	entries for component three
#Tab

An entry is packed in the form

	&BBGGRRDD

where	&BBGGRR	is the "standard" colour for
either	&0000DD	device component one
or	&00DD00	device component two
or	&DD0000	device component three

({/}i.e.{/} the table gives a mapping for a single pure device component to the standard RGB colour)

#Tab
To convert a device colour into a standard colour ColourTrans
�	splits the device colour into its 3 components
�	looks up each component in the calibration table
�	for entries not in the table performs linear interpolation on the two bounding values
�	sums the 3 standard colours derived from each of the 3 components

#Tab

For an interesting effect try the table

&00000002
&00000002
&00000002
&00000000
&7F7F00FF
&00000000
&7F007FFF
&00000000
&007F7FFF

Normality can be restored with

&00000002
&00000002
&00000002
&00000000
&0000FFFF
&00000000
&00FF00FF
&00000000
&FF0000FF

or by passing an invalid table to <ColourTrans_SetCalibration>, generating an error and restoring the default calibrartion.

The default calibration for the screen is linear - screen device colours are assumed to be standard colours.

DATA0ColourTrans_ConvertDeviceColour  (&40753)
#Parent ColourTrans_
=>	R0 =	device colour (&BBGGRR00)
	R1 =	pointer to <calibration table=>ColourTrans_calibrationtable>, or 0 to use current screen calibration
<=	R2 =	standard colour (&BBGGRR00)

This SWI converts a device colour to a standard colour.DATA�ColourTrans_ConvertDevicePalette  (&40754)
#Parent ColourTrans_
=>	R0 =	number of colours to convert
	R1 =	pointer to table of device colours (in the form &BBGGRR00)
	R2 =	pointer to table write standard colours (in the form &BBGGRR00)
	R3 =	pointer to <calibration table=>ColourTrans_calibrationtable>, or 0 to use current screen calibration
<=	R0 - R3 preserved

This SWI converts a table of device colours to a standard colours.DATA�ColourTrans_GenerateTable (&40763)
#Parent ColourTrans_
Identical to <ColourTrans_SelectTable>, except that it always assumes R5 contains valid flags.DATAPColourTrans_MiscOp  (&4075F)
#Parent ColourTrans_
For internal use only.DATAAColourTrans_ReadCalibration  (&40752)
#Parent ColourTrans_
=>	R0 =	pointer to buffer (0 to read size of buffer)
<=	R0 preserved
	R1 =	size of table if R0 = 0 on entry, else preserved

Copies the screen <calibration table=>ColourTrans_calibrationtable> into the specified buffer. The default table has a size of 0.DATA�ColourTrans_ReadPalette (&4075C)
#Parent ColourTrans_
=>	R0 =	-1 for current mode
	 	(if \< 256)	source mode
	 	(if >= 256)	pointer to sprite area
	R1 =	(if R0 \< 256)	source palette pointer or -1 for current palette
	 	(if R0 >= 256)	pointer to sprite name/sprite in area pointed to by R0 (as specified by R4)
	R2 =	pointer to buffer, or 0 to return size needed in R3
	R3 =	size of buffer (if R2 is nonzero)
	R4 =	<flags=>.flags> (only used if R0 >= 256)

<=	R2 =	incremented by words written
	R3 =	remaining size of buffer

This call reads the screen's palette or a sprite's palette. All entries are returned as _true_ 24 bit RGB, calibrated if required. In 256 colour modes the full 256 palette entries are returned, rather than the 16 used by VIDC 1.
#Subpage flags
Read Palette flags
Bit	Meaning if set
#Line
0	R1 =	pointer to sprite (otherwise sprite name)
1	return flashing colours (default is not to return flashing colours)
other bits reserved (must be zero)DATA$ColourTrans_SetCalibration  (&40751)
#Parent ColourTrans_
=>	R0 =	pointer to <calibration table=>ColourTrans_calibrationtable>

Copies the calibration table into the RMA, for use as the screen calibration table. Experimentation suggests that R0 = 0 restores the default without error.DATALColourTrans_SetoppTextColour (&40762)
#Parent ColourTrans_
=>	R0 =	Palette entry
	R3 =	flags:	bit 7 set for background, else foreground
	 	  	other bits 0 (reserved)
   
<=	R0 =	GCOL
	R3 preserved

This call, given a palette entry, works out the furthest GCOL in the current mode and palette, and sets the text colour to it.DATAHColourTrans_SetTextColour (&40761)
#Parent ColourTrans_
=>	R0 =	Palette entry
	R3 =	flags:	bit 7 set for background, else foreground
	 	  	other bits 0 (reserved)
   
<=	R0 =	GCOL
	R3 preserved

This call, given a palette entry, works out the closest GCOL in the current mode and palette, and sets the text colour to it.DATALColourTrans_WriteCalibrationToFile  (&40757)
#Parent ColourTrans_
=>	R0 =	flags	bit 0 set	always write calibration
	 	 	bit 0 clear	write calibration unless it is the default
		 	other bits reserved
	R1 =	file handle to write to
<=	R0 corrupted

Write * Commands to the given file to re-create the current calibration table.DATA�ColourTrans_WriteCalibrationToFile  (&40760)
#Parent ColourTrans_
=>	R1 =	file handle to write to
<=	All registers preserved

Write a * Command to the given file to restore the error loadings. This allows desktop saving of the loadings.DATA�ColourTrans_WritePalette (&4075D)
#Parent ColourTrans_
=>	R0 =	-1 for current mode or pointer to sprite area
	R1 =	(if R0 = -1)	-1 to write current palette else ignored
	 	(if R0 >= 0)	pointer to sprite name/sprite in area pointed to by R0 (as specified by R4)
	R2 =	pointer to palette to write
	R3 =	0 (reserved)
	R4 =	<flags=>.flags> (only used if R0 >= 0)

This call write the screen's palette or a sprite's palette. If possible 256 colour palettes are compacted to the 16 used by VIDC 1, else all 256 colours are written.
#Subpage flags
Write Palette flags
Bit	Meaning if set
#Line
0	R1 =	pointer to sprite (otherwise sprite name)
1	flashing colours in table (default is no flashing colours)
other bits reserved (must be zero)DATA�ColourTrans
#Parent !Root
#Prefix ColourTrans_
#Table Columns 3
<ColourNumberToGCOL>
<ConvertCIEToRGB>
<ConvertCMYKToRGB>
<ConvertDeviceColour>
<ConvertDevicePalette>
<ConvertHSVToRGB>
<ConvertRGBToCIE>
<ConvertRGBToCMYK>
<ConvertRGBToHSV>
<GCOLToColourNumber>
<GenerateTable>
<InvalidateCache>
<MiscOp>
<ReadCalibration>
<ReadPalette>
<ReturnColourNumber>
<ReturnColourNumberForMode>
<ReturnFontColours>
<ReturnGCOL>
<ReturnGCOLForMode>
<ReturnOppColourNumber>
<ReturnOppColourNumberForMode>
<ReturnOppGCOL>
<ReturnOppGCOLForMode>
<SelectGCOLTable>
<SelectTable>
<SetCalibration>
<SetColour>
<SetFontColours>
<SetGCOL>
<SetOppGCOL>
<SetOppTextColour>
<SetTextColour>
<WriteCalibrationToFile>
<WriteLoadingsToFile>
<WritePalette>
#EndTable
DIR$PPX�F���h�>!Root��G�����3DisassembleDATA>Debugger
#Parent !Root
#Prefix Debugger_
<Disassemble>DATA3Debugger_Disassemble  (&40380)
#Parent Debugger_
=>	R0 =	instruction
	R1 =	address it came from

<=	R1 =	pointer to zero terminated string
	R2 =	length, including terminator

This SWI disassembles an instruction. The address in R1 is needed for PC relative instructions (like B, BL, LDR x,[PC,#..] )DIR$((�H���|_��!Root��H���ړ� 3CallDevice��H����V�3Deregister��H���
���3DeregisterObjects��H���6���devicesD�H���̊� entryT�H������entry0�H����� entry1�H����*��entry10�H���j�� !entry11�H����(�xentry2��H���w��entry3��H���Vf�entry4��H��� 9entry5�H���`�� �entry6ܪH���ڴ�centry8@�H�����hentry9��H���!ʧ 3ReceivedCharacter��H����� w3Register(�H���+{��3RegisterObjects�H����^� 7
special<�H���tr� ~3Threshold��H���SŨ $3TransmitCharacterDATA�DeviceFS
#Parent !Root
#Prefix DeviceFS_
<CallDevice>
<Deregister>
<DeregisterObjects>
<ReceivedCharacter>
<Register>
<RegisterObjects>
<Threshold>
<TransmitCharacter>
DATADeviceFS_CallDevice  (&42744)
#Parent DeviceFS_
=>	R0 =	<reason code=>DeviceFS_entry>
	R1 =	device driver's handle, or path, or 0 to broadcast to all devices
	R2 - R7 are passed to device driver, and depend on reason code
	R12	= pointer to workspace
<=	depends on device and reason code

This SWI calls the <device entry point=>DeviceFS_entry> specified by the reason code. The device(s) to call can be specfied by device handle, filename in the directory structure ({fCode}${f} may be used), or 0 to broadcast to all devices.
DATADeviceFS_Deregister  (&42741)
#Parent DeviceFS_
=>	R0 =	device driver's handle

This SWI deregisters a device driver and associated devices, and removes any system variables associaged with the device, except {fCode}DeviceFS${/}Device{/}$options{f}.
DATA�DeviceFS_DeregisterObjects  (&42743)
#Parent DeviceFS_
=>	R0 =	device driver's handle
	R1 =	pointer to name of device to remove

This SWI deregisters a *single* additional device from an device driver. It appears to be misnamed.
DATA�Device description
#Parent DeviceFS_Register
Devices are specified as a list of 24 byte blocks, terminated by a null word.

Offset	Meaning
#Line
0	offset to device name
4	flags:	bit 0 set for buffered
	 	bit 1 set to create path variable ({/}e.g.{/} {fCode}Serial$Path{f} for a device {fCode}Serial{f})
8	default RX <buffer flags=>Buffer_flags>
12	default RX buffer size
16	default TX <buffer flags=>Buffer_flags>
20	default TX buffer size
24	0 (reserved)

The device name is used:

�	in the DeviceFS directory structure
�	to create a {fCode}DeviceFS${/}Device{/}$options{f} variable if this does not exist
�	a path variable (if the flag bit is set)
DATADevice driver entry point
#Parent DeviceFS_CallDevice
=>	R0 =	reason code :
	 	 	0	<Initialise=>DeviceFS_entry0>
	 	 	1	<Finalise=>DeviceFS_entry1>
	 	 	2	<Wake up for TX=>DeviceFS_entry2>
	 	 	3	<Wake up for RX=>DeviceFS_entry3>
	 	 	4	<Sleep RX=>DeviceFS_entry4>
	 	 	5	<Enumerate directory=>DeviceFS_entry5>
	 	 	6	<Create buffer for TX=>DeviceFS_entry6>
	 	 	7	<Create buffer for RX=>DeviceFS_entry6>
	 	 	8	<Halt=>DeviceFS_entry8>
	 	 	9	<Resume=>DeviceFS_entry9>
	 	 	10	<End of data=>DeviceFS_entry10>
	 	 	11	<Stream created=>DeviceFS_entry11>

	R8 =	private word
	R12 =	workspace pointer
	other registers as given in calls
<=	R0 preserved, or V set and R0 pointing to an <error block=>swi_errorblock>
	R1 preserved
	All named registers preserved

Number	Name
#Line
DATA�Device driver initialise entry point (0)
#Parent DeviceFS_CallDevice
=>	R0 =	0
	R2 =	DeviceFS stream handle
	R3 =	flags: bit 0 clear for RX, else TX
	R6 =	pointer to <"special field control block"=>DeviceFS_special>
<=	R2 =	device driver stream handle

This entry point is called when DeviceFS opens a stream onto the device driver. The {/}stream handle{/} it supplies must be stored, as you need it for DeviceFS SWIs such as <DeviceFS_ReceivedCharacter>. *Your* {/}stream handle{/} will be passed to other entry points - 0 is a reserved value, so you may not use this as your handle. The block in R6 will remain intact until the stream closes.
DATADevice driver finalise entry point (1)
#Parent DeviceFS_CallDevice
=>	R0 =	1
	R2 =	device driver stream handle, or 0 for all streams

This entry point is called when DeviceFS closes a stream on the device driver, or when the device driver is being removed (R2=0).
DATA�Device driver End of Data entry point (10)
#Parent DeviceFS_CallDevice
=>	R0 =	10
	R2 =	device driver stream handle
	R3 =	-1
<=	R3 =	0 if not end of data
	 	-1 if end of data

When DeviceFS is asked if EOF has been reached, it will respond false if a buffered stream still has buffered data, or an unbuffered stream has a non-empty RX/TX word. Otherwise it calls this entry point. Most devices will return -1 (EOF reached) but some ({/}e.g.{/} a scanner) may know that there is still data to dome).
DATA!Device driver Stream created entry point (11)
#Parent DeviceFS_CallDevice
=>	R0 =	11
	R2 =	device driver stream handle
	R3 =	buffer handle, or -1 for none

This entry point is called when a stream generation is complete. Your device driver can now start recieving or transmitting.
DATAxDevice driver Wake up for TX entry point (2)
#Parent DeviceFS_CallDevice
=>	R0 =	2
	R2 =	device driver stream handle
<=	R0 =	0 if you wish to remain dormant
	 	2 if you are ready to transmit

This entry point is called when DeviceFS has data ready to transmit. If you wish to wake up transmit data you should call <DeviceFS_TransmitCharacter> to obtain bytes to send.
DATADevice driver Wake up for RX entry point (3)
#Parent DeviceFS_CallDevice
=>	R0 =	3
	R2 =	device driver stream handle

This entry point is called when DeviceFS wants data from the device. You should call <DeviceFS_ReceivedCharacter> as bytes become available.
DATADevice driver Sleep RX entry point (4)
#Parent DeviceFS_CallDevice
=>	R0 =	4
	R2 =	device driver stream handle

This entry point is called when DeviceFS no longer awaits data from the device. Interupt-driven buffered device drivers will ignore this call, as they do not sleep.
DATA9Device driver Enumerate directory entry point (5)
#Parent DeviceFS_CallDevice
=>	R0 =	5
	R2 =	pointer to path being enumerated (null terminated)

This entry point is called in all devices when the DeviceFS directory structure is about to be read, allowing devices to add and remove non-permanent devices.
DATA�Device driver Create buffer entry points (6 & 7)
#Parent DeviceFS_CallDevice
=>	R0 =	6 (TX buffer) or 7 (RX buffer)
	R2 =	device driver stream handle
	R3 =	suggested <buffer flags=>Buffer_flags>
	R4 =	suggested buffer size (non-zero)
	R5 =	suggested buffer handle, or -1 to generate unique handle
	R6 =	suggested buffer threshold (when <halt event=>DeviceFS_entry8> is called)
<=	R3-R6 modified to driver's requirements

This entry point is called just before the buffer is created, to allow the driver to modify parameters as desired. The suggested buffer flags are those given when the <device was registered=>DeviceFS_devices>. R5 will default to -1 (generate unique handle) but you may specify the number of a buffer to link to.
DATAcDevice driver Halt entry point (8)
#Parent DeviceFS_CallDevice
=>	R0 =	8
	R2 =	device driver stream handle

This entry point is called when the free space falls below the threshold (set on creation, or modified by <DeviceFS_Threshold>). It allows the driver to attempt to stop incoming data ({/}e.g.{/} a serial device could perform handshaking).
DATAhDevice driver Resume entry point (9)
#Parent DeviceFS_CallDevice
=>	R0 =	9
	R2 =	device driver stream handle

This entry point is called when the free space rises above the threshold (set on creation, or modified by <DeviceFS_Threshold>). It allows the driver to attempt to restart incoming data ({/}e.g.{/} a serial device could perform handshaking).
DATADeviceFS_ReceivedCharacter  (&42746)
#Parent DeviceFS_
=>	R0 =	byte recieved
	R1 =	DevicesFS stream handle
<=	C clear if byte transferred
	C set if not transferred

This SWI is made by a device when it recieves a character. DeviceFS will then process the character (buffer it, or unblock a waiting stream).

Note - for speed DeviceFS_ReceivedCharacter and <DeviceFS_TransmitCharacter> do not validate the external handle passed - strange things will happen if bad handles are passed.
# Nasal demons
# Really ?
DATAwDeviceFS_Register  (&42740)
#Parent DeviceFS_
=>	R0 =	<flags=>.flags>
	R1 =	pointer to list of <devices to install=>DeviceFS_devices>
	R2 =	pointer to <device driver entry point=>DeviceFS_entry>
	R3 =	private word		(passed to entry point in R8)
	R4 =	workspace pointer	(passed to entry point in R12)
	R5 =	pointer to <special field validation string=>DeviceFS_special>
	R6 =	maximium RX devices (0 => none, -1 => unlimited)
	R7 =	maximium TX devices (0 => none, -1 => unlimited)
<=	R0 =	device driver's handle

This SWI registers a device driver (the hardware interface code) and associated devices ({/}e.g.{/} buffered and unbuffered) with DeviceFS. If any device in the list fails to register then all are removed.
#subpage flags
Meaning of bits in R0
Bit	meaning if clear	if set
0	character device	block device (unimplemented)
1	not full duplex		full duplex
2-31	0 (reserved)
DATA�DeviceFS_RegisterObjects  (&42742)
#Parent DeviceFS_
=>	R0 =	device driver's handle
	R1 =	pointer to list of <devices to install=>DeviceFS_devices>

This SWI registers additional devices with an device driver.
DATA7
Device driver special fields
#Parent DeviceFS_Register
(This is probably /the/ most poorly explained part of the entire PRM)

Special fields can be used to pass extra parameters to a device, and DeviceFS provides a mechanism to pass them, using a validation string. If a device does not want to use the DeviceFS mechanism, it should pass 0 as the validation string pointer, and be prepared to ignore unknown parameters in the special field.

Validation strings consist of keywords and escapes of the form

  {fCode}keyword[,keyword]/escape[/escape]{f}

escape is permitted two values:

/N	number
/S	switch

It is unclear how the validation string is built up by joining keyword sections - as the escape is fixed at one character maybe the sections are simply concatenated.
# Gerph> This is my belief

The special field itself is passed according to the validation string, and the results placed in a buffer. The buffer has one word per escape, which is set to &DEADDEAD if the keyword is absent from the special field. "<Parameters=>.parameters>" are terminated by a comma, or an out of place character ({/}e.g.{/} letter in a numeric field). Numbers are read with <OS_ReadUnsigned> and stored in the word. Switches store the state of the keyword - so a validation string of

#Indent 2;fCode
mike,dennis/S
#indent;f

will store 0 if "mike" is present in the special field, 1 if "dennis" is present.

Presumably this means that

#indent 2;fCode
mike,dennis/S/N
#indemt;f

will store

Offset	Value
#Line
0	0
4	7
  for "mike7"

or

0	1
4	16
  for "dennis16"

It is not clear what the "{*}special field control block{*}" of the <Initialise entry point=>DeviceFS_entry0> actually /is/ - the text suggests that it is a pointer to the (?unparsed) special field, whereas the name suggests it is a pointer to this parsed block.
#Subpage parameters
"Parameters"
"Parameters are separated by commas", "keywords separated by semicolons" gives the impression that the system was intended to support string parameters in addtion. Block devices are in the API, yet are unimplemented - was DeviceFS only partially implemented?
# Gerph> I've always wondered about this... You're probably right
#        /If/ it were implemented correctly, it would make an excellent
#        medium for Socket-like transfers.
#        How about a HTML->Text conversion, running as it receives data ?
#        Or a streaming graphic ? (outputs RGB values as they are processed
#        in the background.
#        ok, so they are stupid ideas, but at present they are not sensibly
#        possible because of certain 'failings' in DeviceFS.
DATA~DeviceFS_Threshold  (&42745)
#Parent DeviceFS_
=>	R1 =	DeviceFS <stream handle=>DeviceFS_entry0>
	R2 =	threshold to use, "or -1 to read"
<=	"R1, R2 preserved"
# Gerph> How bizarre... I believe it's lying... Hmm... Maybe I should
#        mail the oracle ? (Dave Walker)

This SWI sets the threshold at which <halt=>DeviceFS_entry8> and <resume=>DeviceFS_entry9> are called.
DATA$DeviceFS_TransmitCharacter  (&42747)
#Parent DeviceFS_
=>	R1 =	DevicesFS stream handle
<=	R0 =	byte to transmit
	C set if unable to read a character to transmit

This SWI is made by a device when it wants to transmit a character. DeviceFS will try to find character (unbuffer one, or read from a waiting stream).

Note - for speed DeviceFS_TransmitCharacter and <DeviceFS_ReceivedCharacter> do not validate the external handle passed - strange things will happen if bad handles are passed.
# Nasal demons
# They get everywhere, don't they ?DIR$,,�G����
���!RootDATA�DMA
#Parent !Root
#Prefix DMA_
#Table Columns 2
RegisterChannel
DeregisterChannel
QueueTransfer
TerminateTransfer
SuspendTransfer
ResumeTransfer
ExamineTransfer
#EndTable
DIR$��\�F���aXf�I!Root��H���C�1DiscFormat��F���m+fۃFormatSpec`�H����@�
LayoutStructureDATAIDOSFS
#Parent !Root
#Prefix DOSFS_
<DiscFormat>
<LayoutStructure>DATA1DOSFS_DiscFormat  (&41AC0)
#Parent DOSFS_
=>	R0 =	pointer to <disc format structure=>FileCore_Format> to be filled in
	R1 =	SWI number to call to vet disc format (eg <ADFS_VetFormat>)
	R2 =	parameter in R1 to use when calling vetting SWI
	R3 =	<format specifier=>DOSFS_FormatSpec>

<=	R0-R3 preserved

This call fills in the disc format structure pointed to by R0 with the 'prefect' parameters for the specified format, taking no account of the abilities of the available hardware that will have to perform the format. Once filled in, this SWI calls the vetting SWI to check the formay structure for achievability on the available hardware. The vetting SWI may generate an error if the format differs widely from what can be achieved; alternatively it may alter the format structure to the closest match that can be achieved. The vetting SWI then returns to this SWI, which checks whether the format block - as updated by the vetting SWI - is still an adequate match for the desired format. If it is, this SWI returns to its caller; otherwise it generates an error.DATA�Format specifier
\#	Name	Size	OS		Type
#Line
0	DOS/Q	1.44M	MS-DOS 3.20	double sided
1	DOS/M	720k	MS-DOS 3.20	double sided
2	DOS/H	1.20M	MS-DOS 3	double sided
3	DOS/N	360k	MS-DOS 2,3	double sided
4	DOS/P	180k	MS-DOS 2,3	single sided
5	DOS/T	320k	MS-DOS 1,2,3	double sided
6	DOS/U	160k	MS-DOS 1,2,3	single sided
7	Atari/M	720k	Atari		double sided
8	Atari/N	360k	Atari		single sidedDATA
DOSFS_LayoutStructure  (&41AC1)
#Parent DOSFS_
=>	R0 =	<structure specifier=>DOSFS_FormatSpec>
	R1 =	pointer to bad block list (terminated by -1)
	R2 =	pointer to null terminated disc name
	R3 =	image file handle

<= R0-R3 preserved

This call lays out in the specified image all necessary structures to have a valid, empty disc. It can be used:

#Indent 2
� to layout a structure on a black, formatted disc (in which case the specified image should be the whole disc image)
� to layout a partition in a file on a disc that has already been formatted (for example for the PC emulator).
#Indent

If the given image format has no option to store a disc name then this parameter should be ignored.

The bad block list should be presented as an array of bad block addresses. Each address is 4 bytes long. The array is terminated by a -1 entry.

It's assumed that R0 gives enough information for the format - it may be that R0 contains many bit fields or points to a block of informations - the choice is up to the image filing system module. The value in R0 is used to pass enough information to specify the disc structure DOSFS uses a simple table index for this; other image filing systems may pass different informations (using a pointer if necessary) for their LayoutStructure SWI.
DIR$��H������&!Root��H�����&`Render��H���7��&�BBox��H���d� �dashstyle8�H����e�&object08�H����J� .object1h�H���8k�&�object13@�H���*5� �object2��H���++� �object5t�H���C� �object6P�H����)� �object7��H���a$� @object90�H���t_� Mpathstyle��H����Y� Ztextbody��H����\� �textstyle��H����G� �object10x�H���a�Pobject11��H���t�&Aformat�H����7� =object16L�H���Ut��object12��H���$��&3renderstate��H���'i�&.header �H�����&�3declarestateDATADrawFile
#Parent !Root
#Prefix DrawFile_
#Table Columns 2
<Render>
<BBox>
DeclareFonts
#EndTable

Services:
#Indent 2
45540 <Service_DrawObjectRender=>service_45540>
45541 <Service_DrawObjectDeclareFonts=>service_45541>
#indent

<File format=>DrawFile_format>
DATA`DrawFile_Render
#Parent DrawFile_
=>	R0 =	<flags=>.flags>
	R1 =	pointer to <drawfile block=>Drawfile_format>
	R2 =	length of block
	R3 =	<transformation matrix=>Draw_transform>, or 0 to use identity matrix
	R4 =	pointer to <clipping rectangle=>swi_bbox> in OS units, or 0 for none
	R5 =	flatness if bit 2 of R0 set
<=	All preserved

This SWI renders a draw file at a given screen position where that position is defined as screen position 0, 0 with the x- and y-translations as specified in the transformation matrix. Hence, to render a non-rotated 1:1 draw file at (x, y) (screen coordinates in OS units) the transformation matrix is :
#Indent 2;Tab
(	1 << 16	0	)
(	0	1 << 16	)
(	256*x	256*y	)
#Indent

The clipping rectangle is typically a redraw rectangle returned by the Wimp on a redraw window request.  If R4 = 0, then the whole draw file is rendered. If non-zero, only objects which intersect the clipping rectangle are rendered.
#
#Subpage flags
DrawFile_Render flags
Bit	Meaning if set
#Line
0	render bounding boxes (as dotted red rectangles)
1	do not render the objects themselves
2	use R5 as flatness
DATA�DrawFile_BBox
#Parent DrawFile_
=>	R0 =	flags (must be 0)
	R1 =	pointer to drawfile block
	R2 =	length of block
	R3 =	<transformation matrix=>Draw_transform>, or 0 to use identity
	R4 =	pointer to 4 word buffer for <bounding box=>swi_bbox> in draw units
<=	All preserved

This SWI is used to determine the bounding box (in draw units) of the given draw file, as if it were plotted with the transformation given.
DATA�Draw dash style block
#Parent drawfile_format
Offset	Len	Contents
#Line
0	4	Offset to where to start
4	4	Number of elements
8	n*4	Length of element
...
DATAFont table object (0)
#Parent drawfile_format
This object has no bounding box. It should only appear once, and before any text objects.

It consists of a series of :
#Indent 2
1 byte font number
zero terminated fontname
0 to 3 zeros to pad to word
DATA.Text object (1)
#Parent drawfile_format
Offset	Len	Contents
#Line
24	4	Text colour
28	4	Background hint
32	4	<Text style=>drawfile_textstyle>
36	4	x-size (in 1/640's of a point)
40	4	y-size (ie draw units)
44	4	x coord of start of baseline
48	4	y coord of it
52	n	zero terminated string paddingDATA�Transformed sprite object (13)
#Parent drawfile_format
This is followed by a 24 byte <transformation matrix=>draw_transform>, and then a <sprite=>os_spriteop_ptr>. This is scaled to fill the bounding box.
DATA�Path object (2)
#Parent drawfile_format
Offset
#Line
24	4	Fill colour (-1 for none)
28	4	Outline col (-1 for none)
32	4	Outline width
36	4	<path style=>drawfile_pathstyle>
40	n	<Optional dash pattern=>drawfile_dashstyle>
	n	Path components :

+0	4	Tag id	Meaning
	 	0	End of path
	 	2	Move, one point
	 	5	Close sub-path
	 	8	Line, one point
	 	6	Bezier, three points

+4	n	0-3 sets of (x,y) dependant on tag
...
DATA�Sprite object (5)
#Parent drawfile_format
This is followed by a <sprite=>os_spriteop_ptr>, which is scaled to fill bounding box.
DATA�Group object
#Parent drawfile_format
# More faffing with spaces...
This consists of a 12 byte name (padded with {*}spaces{*}), and then a sequence of objects. These will all lie within the bounding box of this.
DATA�Tagged object (7)
#Parent drawfile_format
This consists of
�	1 word of tag id (allocated from acorn)
�	an object
�	optional extra data (word aligned)
DATA@Text area object (9)
#Parent drawfile_format
First, 1 or more <text columns=>drawfile_object10> and then :

Offset	Len	Contents
#Line
0	4	zero to mark end of columns
4	4	reserved
8	4	reserved
12	4	initial foreground col
16	4	initial background hint
20	n	zero terminated <body of text=>drawfile_textbody>
padding
DATAMPath style
#Parent drawfile_format
Bits	Meaning
#Line
0-1	Join style :
	  0  mitred
	  1  round
	  2  bevelled
2-3	End cap :
	  0  butt
	  1  round
	  2  sqare
	  3  triangle
4-5	Start cap
6	Winding rule :
	  0  non-zero
	  1  even-odd
7	dash pattern :
	  0  none
	  1  yes
16-23	triangle cap width
24-31	triangle cap length
DATAZEscape sequences in Draw text area
#Parent drawfile_format
Sequence		Meaning
#Line
\\!\<version>/		Version must be 1
\\A\<code>		Alignment: L, R, C, D
\\B\<R> \<G> \<B>/	Set background hint
\\C\<R> \<G> \<B>/	Set foreground colour
\\D\<number>/		Number of columns
\\F\<digit>\<name> \<size> [\<width>]/	Declare a font
\\\<digit>		Select a font
\\L\<value>/		Leading
\\M\<left> \<right>/	Sets margins
\\P\<value>/		Paragraph leading
\\U\<pos> \<thickness>/	Turn on underline
\\V[-]\<digit>		Vertical move
\\-			Soft hypen
\\\<newline>		Force line break
\\\\			"\\"
\\;\<text> \<newline>	comment
DATA�Text style
#Parent drawfile_format
First (lowest) byte is fontnumber, and refers to font in font table.

The rest of word is reserved, and should be zero.
DATA�Text column object (10)
#Parent drawfile_format
No data other than the standard 6 word header - the bounding box in the header gives the location of the column. Text column objects can only occur in <Text area objects=>drawfile_object9>.DATAPOption object (11)
#Parent Draw_fileformat
This object has space for a bounding box, but the 4 words should be set to zero.

Offset	Contents
#Line
0	paper size {/}e.g.{/}	A3 = &400
 	 			A4 = &500
	 			A5 = &600
4	paper limits	meaning when bit set:
	 		0		show limits
	 		4		landscape
	 		8		default to printer limits
	 		1-3,5-7,9-31	0 (reserved)
8	grid spacing (floating point)
16	grid division
	 			zero:		non-zero:
20	grid			rectangular	isometric
24	auto-adjust		off		on
28	grid shown		no		yes
32	units			inches		cm
36	zoom multiplier (1-8)	 
40	zoom divider (1-8)	 
44	zoom locking		none		powers of 2
48	toolbox			absent		present
52	initial entry mode - bit set for
	0 line
	1 closed line
	2 curve
	3 closed curve
	4 rectangle
	5 ellipse
	6 text line
	7 select
56	bytes in undo buffer

Personally I'd've packed words 20-52 in one word.DATAAFormat of Draw file (filetype aff)
#Parent Drawfile_
Draw files consist of :

<File header=>DrawFile_header>, followed by 0 or more objects :

Offset	Len	Contents
#Line
0	4	Object type
	 	  0	<Font table=>drawfile_object0>
	 	  1	<Text object=>drawfile_object1>
	 	  2	<Path object=>drawfile_object2>
	 	  5	<Sprite object=>drawfile_object5>
	 	  6	<Group object=>drawfile_object6>
	 	  7	<Tagged object=>drawfile_object7>
	 	  9	<Text area object=>drawfile_object9>
	 	  10	<Text column object=>drawfile_object10>
	 	  11	<Options object=>drawfile_object11>
	 	  12	<Transformed text object=>drawfile_object12>
	 	  13	<Transformed sprite object=>drawfile_object13>
	 	  16	<JPEG object=>drawfile_object16>
4	4	Word aligned size, including header
8	16	Bounding box (not all types have this)
n	n	Object specific data, if any
DATA=JPEG object (16)
#Parent drawfile_format
Offset	Len	Contents
#Line
24	4	height	(draw units)
28	4	width
32	4	x DPI	(90 for a normal square pixel mode)
36	4	y DPI
40	24	<transformation matrix=>draw_transform>
64	4	length of JPEG data
68	 	embedded JPEG (strictly JFIF) file
padding to next word

Currently it seems that the 6 word transformation matrix is used only to scale the JPEG image and translate it from (0,0),(height,width) to the required position on the page. It is not known whether this object can contain JPEG data in any format other than a JFIF file.
DATA�Transformed text object (12)
Offset	Len	Contents
#Line
24	24	<Transformation matrix=>Font_matrix>
# Oi Justin - Tekkie disc refers you to Font matrix, not draw matrix! :-)
# Ah, well I am wrong and it is right... Makes a change :-)
# I can see the headlines now - "PRM correct for once!"
48	4	Font flags :
	 	  bit 0 set : kern text
	 	  bit 1 set : right to left

Rest are as for normal <text object=>drawfile_object1> :

52	4	Text colour
56	4	Background hint
60	4	<Text style=>drawfile_textstyle>
64	4	x-size (in 1/640's of a point)
68	4	y-size (ie draw units)
72	4	x coord of start of baseline
76	4	y coord of it
80	n	zero terminated string
padding
DATARender state for DrawFile
#Parent Service_45540
Offset	Contents
#Line
0	pointer to <object to be rendered=>DrawFile_format>
# Gerph> Another horrid link
4	pointer to <DrawFile header=>drawfile_header>
8	pointer to <font table object=>Drawfile_object0>, or 0 if none found yet
12	flags passed to <DrawFile_Render>
16	pointer to <transformation matrix=>draw_transform>
20	pointer to <clipping rectangle=>swi_bbox>
24	flatness parameter passed to <DrawFile_Render>
28	pointer to <error block=>swi_errorblock>, or 0 if none
DATA.Drawfile header block
#Parent DrawFile_Format
Offset	Len	Contents
#Line
0	4	"Draw"
4	4	Major version, 201 at present
8	4	Minor version
12	12	Name of producing program, padded with *spaces*
# Hey, let's just stress that. It's stupid.
24	4	x low
28	4	y low   Bounding box
32	4	x high
36	4	y high
DATA�Declare fonts state for DrawFile
#Parent Service_45541
Offset	Contents
#Line
0	pointer to <object to be rendered=>DrawFile_format>
# Gerph> Another horrid link
4	pointer to <DrawFile header=>drawfile_header>
8	pointer to <font table object=>Drawfile_object0>, or 0 if none found yet
12	flags passed to <DrawFile_Render>
16	pointer to <error block=>swi_errorblock>, or 0 if none
DIR$��H�����e*r!Root �H���1^�3Fill��H���o^LfillstyleD�H���0�f*t3Stroke�H���;��@3joincapblock�H���W�f*3pathblockH����d�u3transform�H����k�@3transformunits�
H�����f*}3processpath@H����/f*�3dashblockH���Z�f*3FlattenPathH���R�b�3outpathblock�H���*	g*�3StrokePathXH���g*O3TransformPathDATArDraw
#Parent !Root
#Prefix Draw_
<Fill>
<FlattenPath>
<ProcessPath>
<Stroke>
<StrokePath>
<TransformPath>
DATA�Draw_Fill  (&40702)
#Parent Draw_
=>	R0 =	pointer to <path block=>draw_pathblock>
	R1 =	<fill style=>draw_fillstyle>, or 0 for <default=>.fill>
	R2 =	pointer to <transformation matrix=>draw_transform>, or 0 for default
	R3 =	flatness, or 0 for default

<=	R0 corrupt

This SWI is used to draw a path and fill its inside.
#SubPage fill
Draw_Fill default fill style
0 gives the default <fill style=>draw_fillstyle> - &30 - fill to boundary centre, non-zero rule.
DATALDraw fill styles
Bits	Meaning if set (or of value)
#Line
0,1	0	Non-zero winding rule
	1	Negative winding rule
	2	Even-odd winding rule
	3	Positive winding rule

2	Plot non-boundary exterior pixels
3	Plot boundary exterior pixels
4	Plot boundary interior pixels
5	Plot non-boundary interior pixels
others	Reserved, must be 0
DATAtDraw_Stroke  (&40704)
#Parent Draw_
=>	R0 =	pointer to <path block=>draw_pathblock>
	R1 =	<fill style=>draw_fillstyle>, or 0 for <default=>.fill>
	 	bit 31 clear to stroke each subpath in turn (can result in pixels being plotted twice)
	R2 =	pointer to <transformation matrix=>draw_transform>, or 0 for default
	R3 =	flatness, or 0 for default
	R4 =	line thickness, or 0 for default
	R5 =	pointer to <join/cap block=>draw_joincapblock>, or 0 if none
	R6 =	pointer to <dashing pattern=>draw_dashblock>, or 0 if none

<=	R0 corrupt

This SWI is used to draw a path.

If thickness is zero, fill bits 3,2 must not be 01
If thickness is non-zero, fill bits 2-5 must not be 0110 - {/}i.e.{/} filling just the boundary pixels.
# Gerph> it was 5-2 but that looks silly. However 2-5 puts the bits in the wrong
#        order - I've done this, because the ordering /isn't/ relevant here :-)
#SubPage fill
Draw_Stroke default fill style
0 gives the default <fill style=>draw_fillstyle> which depnds on R4 (line thickness):

R4 value	Default fill style
#Line
0		&30 - fill to boundary centre, non-zero rule.
other		&18 - fill only the boundary
DATA@Draw join/cap block
Offset	Meaning
#Line
0	<Join style=>.joinstyle>
1	<End cap=>.endsstyle>
2	<Start cap=>.endsstyle>
3	reserved, must be 0
4	mitre limit, in form &ffff.ffff; if the distance projected by mitres would be greater than this proportion of the line width then it will be bevelled
8,9	Additional width of start triangular cap, in 1/256 of line width
10,11	Extension of start cap from line, in 1/256 of line width
12,13	Additional width of end triangular cap, in 1/256 of line width
14,15	Extension of end cap from line, in 1/256 of line width

If mitres and triangles are not used then the block may be 4 bytes long.
If mitres are used but triangles are not, then the block may be 8 bytes long.
#subpage joinstyle
Join style
Value	Meaning
#Line
0	Mitred (edges continue until they meet)
1	Round (a curve from edge to edge)
2	Bevelled (a line from edge to edge)
#subpage endsstyle
Cap ends style
Value	Meaning
#Line
0	Butt (a line from edge to edge)
1	Round (a curve from edge to edge)
2	Squares (a square projects from the end)
3	Triangle (forming an arrow or similar)
DATADraw path block
#Parent Draw_
Draw path blocks consist of a block of words; code followed by any parameters. The block is terminated by an 'End of path' element.

Code	Parameters	Meaning
#Line
0	-		End of path (when writing a path a parameter is used to indicate the remaining length of the block, which is updated as data is written and the end of path marker is moved)
1	pointer		Continuation of path at pointer
2	x, y		Move to x,y starting a new sub-path
3	x, y		Move to x,y without starting a new sub-path (internal use)
4	-		Close sub-path with move
5	-		Close sub-path with line
6	cx1, cy1,
	cx2, cy2,
	x, y		Bezier curve to x,y using control points cx1, cy1 and cx2, cy2
7	x, y		Move to x,y without starting a new sub-path (mostly for internal use)
8	x, y		Line to x,y
DATAuTransformation matrix
Offset	Var	Contents
#Line
0	{/}a{/}	<x multiplier=>draw_transformunits>, for new x
4	{/}b{/}	<x multiplier=>draw_transformunits>, for new y
8	{/}c{/}	<y multiplier=>draw_transformunits>, for new x
12	{/}d{/}	<y multiplier=>draw_transformunits>, for new y
16	{/}e{/}	x translation, in draw units
20	{/}f{/}	y translation, in draw units

The new co-ordinates are calculated :
#Tab;Indent 2
newx =	{/}a{/}x + {/}c{/}y + {/}e{/}
newy =	{/}b{/}x + {/}d{/}y + {/}f{/}
#Indent

#Tab
Or, in matrix form :	{f24}�{f}	{/}a{/}	{/}b{/}	0	{f24}�{f}
			{f24}�{f}	{/}c{/}	{/}d{/}	0	{f24}�{f}
			{f24}�{f}	{/}e{/}	{/}f{/}	1	{f24}�{f}

<Standard examples=>.examples>
#Subpage examples
Transformation examples
Rotation can be performed by using :
#Tab;Indent 2
{/}a{/}	= cos( {/}angle{/} )	{/}b{/}	= sin ( {/}angle{/} )
{/}c{/}	= - sin( {/}angle{/} )	{/}d{/}	= cos ( {/}angle{/} )
#Indent

Scaling can be performed by using :
#Indent 2
{/}a{/}	= {/}scale{/}		{/}b{/}	= 0
{/}c{/}	= 0			{/}d{/}	= {/}scale{/}
#Indent

Translation can be performed by using :
#Tab;Indent 2
{/}e{/}	= {/}x translation{/}	{/}f{/}	= {/}y translation{/}
DATA@Draw Transform Units
#Parent Draw_
Draw transform units are fixed point numbers, with the bit between bits 15 and 16. In essence this means that the numbers are :

#Indent 4;fCode
&XXXX�XXXX
#Indent;f

That is, the top two bytes contains the whole part of the fraction, the bottom two bytes the fractional part.
DATA}Draw_ProcessPath  (&40700)
#Parent Draw_
=>	R0 =	pointer to <path block=>draw_pathblock>
	R1 =	<fill style=>draw_fillstyle> with <additions=>.extrafill>
	R2 =	pointer to <transformation matrix=>draw_transform>, or 0 for default
	R3 =	flatness, or 0 for default
	R4 =	line thickness, or 0 for default
	R5 =	pointer to <join/cap block=>draw_joincapblock>, or 0 if none
	R6 =	pointer to <dashing pattern=>draw_dashblock>, or 0 if none
	R7 =	pointer to <output path, or special value=>.specials>
<=	if R7 = 0, 1 or 2 :
	 	R0 corrupt
	if R7 = 3 :
	 	R0 = size of buffer
	if R7 is a pointer
	 	R0 = pointer to new end of buffer marker

This SWI is used to perform operations on a Draw path.
#Subpage specials
ProcessPath Special values
Value		Meaning
#Line
0		Output to the input buffer path
1		Fill the path in one go
2		Fill the path, doing one subpath at a time
3		Calculate output buffer size requirements
&80000000 + x	Output path's <bounding box=>swi_bbox> to block at x
x		Output path to <block=>Draw_outpathblock> at x
		The first item in this buffer should be 0, followed by a word denoting the size of the buffer
#Subpage extrafill
Extra fill path options for ProcessPath
Bit	Meaning if set
#Line
27	Open subpaths are to be closed
28	Path should be flattened
29	Path should be thickened
30	Path should be re-flattened after thinkening
31	Use floating point output (not implemented at present)
DATA�Draw dash block
#parent Draw_ProcessPath
Size	Meaning
#Line
4		distance into dash pattern to start (user coordinates)
4		/n/ - number of elements in pattern
4{/}n{/}	dash elements - each is a length in user coords

Each element gives a length of dash, starting with an on dash, aternating on - off, looping round the list of elements. Hence if /n/ is odd the second time round elements which were on first time round will now be off, and vica versa.
DATADraw_FlattenPath  (&40708)
#Parent Draw_
=>	R0 =	pointer to <path block=>draw_pathblock>
	R1 =	pointer to <output path block=>draw_outpathblock>, or 0 to calcluate size
	R2 =	flatness, or 0 for default

<=	R0 =	R1 = 0	calulated output buffer size
	 	else	pointer to end of <path marker=>draw_pathblock> in output path

This SWI is a subset of <Draw_StrokePath>, as it will only flatten a path. This is useful if you want to repeatedly stroke a path, without having to repeately spend time flattening it.
DATA�Draw output to a path block
#Parent Draw_
When writing to a path block the Draw module uses the word after the <end of path marker=>Draw_pathblock> to store the size of the buffer. As data is written and the the end of path marker is moved this value is updated, and the SWI returns a pointer to the new position of the end of path marker. This allows a second SWI to be called to append to the path, with no need for the program to keep track of the free space in the buffer.

Hence before calling any SWIs that write a path to a buffer the first two words should be initialised:

Offset	Value
#Line
0	0 (end of path marker)
4	size of buffer
DATA�Draw_StrokePath  (&40706)
#Parent Draw_
=>	R0 =	pointer to <path block=>draw_pathblock>
	R1 =	pointer to <output path block=>draw_outpathblock>, or 0 to calcluate size
	R2 =	pointer to <transformation matrix=>draw_transform>, or 0 for default
	R3 =	flatness, or 0 for default
	R4 =	line thickness, or 0 for default
	R5 =	pointer to <join/cap block=>draw_joincapblock>, or 0 if none
	R6 =	pointer to <dashing pattern=>draw_dashblock>, or 0 if none

<=	R0 =	R1 = 0	calulated output buffer size
	 	else	pointer to end of <path marker=>draw_pathblock> in output path

This SWI is like a call to <Draw_Stroke>, except that it writes it output as a path in the block, rather than to the VDU drivers.
DATAODraw_TransformPath  (&4070A)
#Parent Draw_
=>	R0 =	pointer to <path block=>draw_pathblock>
	R1 =	pointer to <output path block=>draw_outpathblock>, or 0 to calcluate size
	R2 =	pointer to <transformation matrix=>draw_transform>, or 0 for default
	R3 =	0

<=	R0 =	R1 = 0	calulated output buffer size
	 	else	pointer to end of <path marker=>draw_pathblock> in output path

This SWI is a subset of <Draw_StrokePath>, in that it only transforms a path. This can save the time taken to repeatedly transform the same path, or reduce errors by transforming *before* dashing and thickening.
DIR$��,$H���W�kI!Rootx&G���a��͈CreateReceive(G������ExamineReceive)H���,n�statuses�*H���Z(��ReadReceive�,G�������AbandonReceive�-H���pw�AWaitForReception�/G���H��ͺEnumerateReceive�0H����m�StartTransmit�2G��������PollTransmit|3G���ϯ�͏AbandonTransmit4H������DoTransmit�6G���뽸��ReadLocalStationAndNet�7H���&�n1ConvertStatusToString�9H�������ConvertStatusToError�;H���l�gprotects�<G���͸��ReadProtection�=H���&�gSetProtection�>G���\wO�PrintBannerh?G���Ӹ̀ReadTransportType�@G���>ո͍ReleasePortxAG���|ָ�AllocatePorttBG����ظ͖DeAllocatePortCG����ٸ;ClaimPort�CH����^�PStartImmediateFG������EnumerateTransmit�FH����lmAbandonAndReadReceivePHH���k�k~DoImmediate�JH����}lNetworkState�KH����l�PacketSize�LH����OhKReadStationNumberNH���ձl�ReadTransportName�NH���Ll-VersionPH�����s+immediate�VH�����eZimmediatebufferDATAIEconet
#Parent !Root
#Prefix Econet_
#Table Columns 3
<AbandonAndReadReceive>
<AbandonReceive>
<AbandonTransmit>
<AllocatePort>
<ClaimPort>
<ConvertStatusToError>
<ConvertStatusToString>
<CreateReceive>
<DeAllocatePort>
<DoImmediate>
<DoTransmit>
<EnumerateReceive>
<EnumerateTransmit>
<ExamineReceive>
<NetworkState>
<PacketSize>
<PollTransmit>
<PrintBanner>
<ReadLocalStationAndNet>
<ReadProtection>
<ReadReceive>
<ReadStationNumber>
<ReadTransportName>
<ReadTransportType>
<ReleasePort>
<SetProtection>
<StartImmediate>
<StartTransmit>
<WaitForReception>
<Version>
#EndTableDATA�Econet_CreateReceive  (&40000)
#Parent Econet_
=>	R0 =	port number
	R1 =	station number
	R2 =	net number
	R3 =	pointer to data buffer
	R4 =	buffer size

<=	R0 =	handle
	R2 =	0 if local net

This SWI creates a control block to receive data on an econet port. The data buffer should be in RMA or some other permanently available area of memory, due to the way in which the data is read.DATAEconet_ExamineReceive  (&40001)
#Parent Econet_
=>	R0 =	handle
<=	R0 =	<status=>econet_statuses>

This SWI reads the status of a receive block. For more information about the block you should use <Econet_ReadReceive>.

This is the receive counterpart of <Econet_PollTransmit>.DATA�Econet status values
Status	Valid	Meaning
#Line
0	T	Transmitted
1	T	Line jammed
2	T	Net error
3	T	Not listening
4	T	No clock
5	T	Transmit ready (awaiting connect)
6	T	Transmitting
7	R	Receive ready (awaiting data)
8	RW	Receiving
9	RW	Received (complete)
10	W	No reply
11	W	Escape pressed
12	?	Station not present

Meanings:
#Tab
R	Receive blocks
W	<Econet_WaitForReception>
T	Trasmit blocks
?	No call is documented as returning this statusDATA�Econet_ReadReceive  (&40002)
#Parent Econet_
=>	R0 =	handle
<=	R0 =	<status=>econet_statuses>
	R1 =	0, or flag byte if r0=9 on exit
	R2 =	port number
	R3 =	station number
	R4 =	net number
	R5 =	pointer to data buffer
	R6 =	size of buffer, or size of data received if r0=9 on exit

This SWI returns information about a control block, given its handle number. <Econet_ExamineReceive> performs a similar task, but more quickly.
DATA�Econet_AbandonReceive  (&40003)
#Parent Econet_
=>	R0 =	handle
<=	R0 =	<status=>econet_statuses>

This SWI abandons a receive block. Any data which was in transfer (r0=8 on exit) will be discarded and the block contents will remain the same.
DATAAEconet_WaitForReception  (&40004)
#Parent Econet_
=>	R0 =	handle
	R1 =	timeout in cs
	R2 =	0 if escape should *not* abort

<=	R0 =	<status=>econet_statuses>
	R1 =	0, or flag byte if r0=9 on exit
	R2 =	port number
	R3 =	station number
	R4 =	net number
	R5 =	pointer to data buffer
	R6 =	size of buffer, or size of data received if r0=9 on exit

This SWI checks the port repeatedly until either aborted, or the data is received. The block will be abandoned after it has been received. As this SWI enables interupts it should not be called from service or event handlers.
DATA�Econet_EnumerateReceive  (&40005)
#Parent Econet_
=>	R0 =	index, 1 for first block
<=	R0 =	handle, or 0 if no more blocks

This SWI enumerates the currently open receive blocks.
DATAEconet_StartTransmit  (&40006)
#Parent Econet_
=>	R0 =	flag byte
	R1 =	port number
	R2 =	station number
	R3 =	net number
	R4 =	pointer to data buffer
	R5 =	buffer size
	R6 =	retry count
	R7 =	delay in cs

<=	R0 =	handle
	R1 corrupted
	R2 =	buffer address
	R3 =	station number
	R4 =	net number, or 0 if R3 on entry was the local net

This SWI creates a control block to transmit data on an econet port. The data buffer should be in RMA or some other permanently available area of memory, due to the way in which the data is read.
DATA�Econet_PollTransmit  (&40007)
#Parent Econet_
=>	R0 =	handle
<=	R0 =	<status=>econet_statuses>

This SWI reads the status of a transmit block.

This is the transmit counterpart of <Econet_ExamineReceive>.DATA�Econet_AbandonTransmit  (&40008)
#Parent Econet_
=>	R0 =	handle
<=	R0 =	<status=>econet_statuses>

This SWI abandons a transmit block.
DATA�Econet_DoTransmit  (&40009)
#Parent Econet_
=>	R0 =	flag byte
	R1 =	port number
	R2 =	station number
	R3 =	net number
	R4 =	pointer to data buffer
	R5 =	buffer size
	R6 =	retry count
	R7 =	delay in cs

<=	R0 =	<status=>econet_statuses>
	R1 corrupted
	R2 =	pointer to buffer
	R3 =	station number
	R4 =	net number, or 0 if R3 on entry was the local net

This SWI creates a block and repeatedly polls until the data is received, or an error at which point the block is abandoned. As this SWI enables interupts it should not be called from service or event handlers. It will loop in USR mode with IRQs enabled - a side effect is that callbacks may occur.
DATA�Econet_ReadLocalStationAndNet  (&4000A)
#Parent Econet_
<=	R0 =	station number
	R1 =	net number

This call returns the computers station number and network. The net number will be zero if there are no bridges present.DATA1Econet_ConvertStatusToString  (&4000B)
#Parent Econet_
=>	R0 =	<status=>Econet_statuses>
# PRM 2-664 says R0 has range 0-14 (not 11, not 12)
	R1 =	pointer to buffer for string
	R2 =	buffer size
	R3 =	station number
	R4 =	net number

<=	R0 =	pointer to buffer
	R1 =	pointer to end address in buffer
	R2 =	space in buffer

This SWI converts a status result from a prior Econet call to a string. If the station or net is invalid then station information is not given. If R0 is out of range (PRM says 0-14) this call will Data Abort/Address exception. D'oh.DATA�Econet_ConvertStatusToError (&4000C)
#Parent Econet_
=>	R0 =	<status=>Econet_statuses>
	R1 =	pointer to error buffer
	R2 =	buffer size
	R3 =	station number
	R4 =	net number

<=	R0 =	<buffer=>swi_errorblock>
	V set

This SWI converts a status result from a prior Econet call to an error block and then generates an error. To prevent the error, call the X version of this SWI and read R0, or set the buffer address to 0 which will leave the string in the workspace.DATAEconet protection bits
Bit	Disabled if set
#Line
0	Peek
1	Poke
2	Remote JSR (BL)
3	User procedure call
4	OS procedure call
5	Halt
6	Continue (0 on RISC OS)
7	Machine peek (0 on RISC OS)
8	Get registers
9-30	reserved (0)
31	Write value to CMOS (in <Econet_SetProtection>)
DATA�Econet_ReadProtection  (&4000D)
#Parent Econet_
<=	R0 =	current <protection=>Econet_protects>

This SWI is used to read the current protection word for immediate operations.

You should use <Econet_SetProtection> instead of this call.DATAEconet_SetProtection  (&4000E)
#Parent Econet_
=>	R0 =	EOR mask word
	R1 =	AND mask word
<=	R0 =	old value

This SWI is used to modify or read the current <protection word=>Econet_protects> for immediate operations.

You should use R0=0, and R1=-1 to read the word.DATA�Econet_PrintBanner  (&40010)
#Parent Econet_
This SWI displays the econet banner. This is usually "Acorn Econet", but could be "Acorn Econet, no clock" if no clock is running.
DATA�Econet_ReadTransportType  (&40011)
#Parent Econet_
=>	R0 =	station number
	R1 =	net number
	R2 =	2 (why ?)
	
<=	R2 =	<transport type=>.transports>

This SWI returns the actual form in which the data will be sent so that the transmission type used can be changed accordingly.
#Subpage transports
Econet transport types
Type	Meaning
#Line
0	Not known
1	Internet
2	Econet
3	NexusDATA�Econet_ReleasePort  (&40012)
#Parent Econet_
=>	R0 =	port number

This SWI releases a port previously claimed by <Econet_ClaimPort>.
DATA�Econet_AllocatePort  (&40013)
#Parent Econet_
<=	R0 =	port number

This SWI asks the software for a unique port number which has not been claimed or allocated. When you have finished with the port, use <Econet_DeAllocatePort> to release it.
DATA�Econet_DeAllocatePort  (&40014)
#Parent Econet_
=>	R0 =	port number

This SWI releases a port previously claimed using <Econet_AllocatePort>.
DATA�Econet_ClaimPort  (&40015)
#Parent Econet_
=>	R0 =	port number

This SWI claims a specific port number. When you have finished with the port, use <Econet_ReleasePort> to release it.
DATAPEconet_StartImmediate  (&40016)
#Parent Econet_
=>	R0 =	<operation type=>Econet_immediate>
	R1 =	remote address, or procedure number
	R2 =	station number
	R3 =	net number
	R4 =	pointer to data buffer
	R5 =	data size
	R6 =	repeat count
	R7 =	delay in cs

<=	R0 =	handle
	R1 corrupted
	R2 =	pointer to buffer
	R3 =	station number
	R4 =	net number, or 0 if R3 on entry was the local net

This SWI opens a transmission block, and starts an immediate operation. The data buffer should be in RMA or some other permanently available area of memory, due to the way in which the data is read.
DATA�Econet_EnumerateTransmit (&4001F) (3.5)
#Parent Econet_
=>	R0 =	index, 1 for first block
<=	R0 =	handle, or 0 if no more blocks

This SWI enumerates the currently open transmit blocks.
DATAmEconet_AbandonAndReadReceive  (&40018)
#Parent Econet_
=>	R0 =	handle
<=	R0 =	<status=>econet_statuses>
	R1 =	0, or flag byte if r0=9 on exit
	R2 =	port number
	R3 =	station number
	R4 =	net number
	R5 =	pointer to data buffer
	R6 =	size of buffer (or size of data received if r0=9 on exit)

This SWI returns information about the control block it abandons.DATA~Econet_DoImmediate  (&40017)
#Parent Econet_
=>	R0 =	<operation type=>Econet_immediate>
	R1 =	remote address, or procedure number
	R2 =	station number
	R3 =	net number
	R4 =	pointer to data buffer
	R5 =	data size
	R6 =	repeat count
	R7 =	delay in cs

<=	R0 =	handle
	R1 corrupted
	R2 =	pointer to buffer
	R3 =	station number
	R4 =	net number (or 0 if R3 on entry was the local net)

This SWI opens a transmission block and repeatedly polls until it finishes transmission or an error occurs. It abandons the block and returns the final status. It will loop in USR mode with IRQs enabled - a side effect is that callbacks may occur.DATAEconet_NetworkState  (&4001A)
#Parent Econet_
=>	R0 =	station number
	R1 =	net number
<=	R2 =	0 fully functional
	 	strictly other values tranport dependent:
	 	1 no clock

This SWI returns the state of the underlying transport to the given station.DATA�Econet_PacketSize  (&4001AB)
#Parent Econet_
=>	R0 =	station number
	R1 =	net number
<=	R2 =	maximum permitted packet size

This SWI returns the maximum recommended packet size for the underlying transport to the given station.DATAKEconet_ReadStationNumber  (&4000F)
#Parent Econet_
=>	R1 =	string to read
<=	R1 =	address of terminating space/control character
	R2 =	station number (or -1)
	R3 =	net number (or -1)

This SWI is used extract the station and/or net number from a string expected to be of the form "{/}nnn{/}.{/}sss{/}".
# ?? or "{/}sss{/}".DATA�Econet_ReadTransportName  (&4001C)
#Parent Econet_
=>	R0 =	station number
	R1 =	net number
<=	R2 =	transport name

This SWI returns the name of the underlying transport to the given station.DATA-Econet_Version  (&40019)
#Parent Econet_
=>	R0 =	station number
	R1 =	net number
<=	R2 =	version number * 100

This SWI returns the version of software used on the underlying transport to the given station. Setting R0 and R1 to 0 on entry returns the version of the top level Econet software.
DATAEconet immediate operations
#Parent Econet_DoImmediate
Number	Name
#Line
1	Peek			Read destination machine's memory
2	Poke			Write destination machine's memory (!)
3	JSR			Calls a <subroutine=>.JSR>
4	UserProcedureCall	Generate <Event 8=>event_8>
5	OSProcedureCall		Generate <Event 16=>event_16>
# Gerph> Event 16 is linked to 8
6	Halt			Halt the destination machine (BBC & Master only)
7	Continue		(BBC & Master only)
8	MachinePeek		Returns a number identifying the <machine type=>.MPeek>
9	GetRegisters		Returns R0-R15, R13_irq, R14_irq, R13_svc, R14_svc (80 bytes)
#SubPage JSR
Econet JSR
This will cause a JSR or BL on the destination machine. Entry conditions:

=>	R1 =	<argument buffer=>Econet_immediatebuffer>
	R2 =	address of the code entered
	R3 =	sending station
	R4 =	sending net
<=	R0-R4 may be corrupted

If the address to call is -1 then the address called is the argument buffer - this allows ARM code to be sent. (Erm, security risk?)
#SubPage MPeek
Econet Machine Peek
Bits	Meaning
#Line
0-15	Machine type:
 	&0000	Reserved
 	&0001	BBC				(OS 1 or 2)
 	&0002	Atom
 	&0003	System 3 or 4
 	&0004	System 5
 	&0005	Master 128			(OS 3)
 	&0006	Electron			(OS 0)
 	&0007	Archimedes			(OS 6)
 	&0008	Reserved
 	&0009	Acorn Communicator
 	&000A	Master 128 Econet Terminal	(OS 4)
 	&000B	Acorn Filestore
 	&000C	Master 128 Compact		(OS 5)
 	&000D	Acorn Ecolink card for Personal Computers
 	&000E	Acorn Unix box
 	&FFFA	SCSI interface
 	&FFFB	SJ Research IBM PC Econet interface
 	&FFFC	Nascom 2
 	&FFFD	Reseach Machines 480Z
 	&FFFE	SJ Research File Server
 	&FFFF	Z80 CP/M
16-23	Software version number (BCD)
24-31	Software release number (BCD)
DATAZEconet procedure call argument buffer
Offset	Meaning
#Line
0	Size of buffer
4	DataDIR$HH(YH���*qX�11�^G���uw��10\`H����\&�indexeH�����Z&�2�eH���]���8�iH����316>event_8�iH���S�[&�14�jH���f��15PkH��� *6TmH���=0	%30|nH���
	�31LpH���q���124qH������I317�rH�����P22�sH���"��28�tH���=��33luH���R4[&�344wH������35�wH����67yH���ˎ[&�9DATA�Key transition event (11)
#Parent event_index
=>	R0 =	11 (event number)
	R1 =	transition value
	R2 =	<key number=>.keynumber>
	R3 =	keyboard driver ID

This event is polled when any key is pressed or released. Transition value is 0 when released and 1 when pressed.
#Subpage keynumber
Key numbers for transitions
#Table Columns 4
0   Escape
1   F1
2   F2
3   F3
4   F4
5   F5
6   F6
7   F7
8   F8
9   F9
10  F10
11  F11
12  F12
13  Print
14  Scroll Lock
15  Break
16  ~
17  1
18  2
19  3
20  4
21  5
22  6
23  7
24  8
25  9
26  0
27  -
28  =
29  �
30  \<-|
31  Insert
32  Home
33  Page Up
34  Num Lock
35  K /
36  K *
37  K #
38  Tab
39  Q
40  W
41  E
42  R
43  T
44  Y
45  U
46  I
47  O
48  P
49  [
50  ]
51  \
52  Delete
53  Copy
54  Page down
55  K 7
56  K 8
57  K 9
58  K -
59  L Ctrl
60  A
61  S
62  D
63  F
64  G
65  H
66  J
67  K
68  L
69  ;
70  '
71  Return
72  K 4
73  K 5
74  K 6
75  K +
76  L Shift
77  (<extra key=>.extra>)
78  Z
79  X
80  C
81  V
82  B
83  N
84  M
85  ,
86  .
87  /
88  R Shift
89  Up
90  K 1
91  K 2
92  K 3
93  Caps Lock
94  L Alt
95  Space
96  R Alt
97  R Ctrl
98  Left
99  Down
100 Right
101 K 0
102 K .
103 Enter
112 Select
113 Menu
114 Adjust
#EndTable
#subpage extra
Key number 77
Some national keyboards have an extra key between left shift and Z, which gives key number 77. This key is not present on the standard UK Archimedes keyboard, although a contact area for it is visible on the keyboard PCB.DATA�Mouse button event
#Parent event_index
=>	R0 =	10 (event number)
	R1 =	mouse's X-coordinate
	R2 =	mouse's Y-coordinate
	R3 =	<button state=>.state>
	R4 =	4 bytes of monotonic centi-second value

This event is generated when a mouse button is pressed or released.
#Subpage state
Mouse button states
Bit	Meaning
#Line
0	Right button (Adjust)
1	Middle button (Menu)
2	Left button (Select)DATA�Event numbers
\#	Description
#Line
0	<Output buffer has become empty=>event_0>
1	<Input buffer has become full=>event_1>
2	<Character placed in input buffer=>event_2>
3	<ADC conversion ended in BBC I/O expansion card=>event_3>
4	<VSync Event=>event_4>
5	<Interval timer has crossed zero=>event_5>
6	<Escape condition has been detected=>event_6>
7	<Serial RS423 error has been detected=>event_7>
8	<Econet user remote procedure called=>event_8>
9	<User has generated an event=>event_9>
10	<Mouse transition=>event_10>
11	<Key transition=>event_11>
12	<Sound system reached start of a bar=>event_12>
13	PC Emulator event
14	<Econet receive complete=>event_14>
15	<Econet transmit complete=>event_15>
16	<Econet OS remote procedure called=>event_16>
# this one links to event_8
17	<MIDI system event=>event_17>
18	Reserved for external developers
19	<Internet event=>InetSocket:event_19>
20	Reserved for external developers
21	Expansion event (sub-reason in r1)
22	<Device overrun event=>event_22>
23	Reserved for external developers
24	Driver recieved frame for Internet (DCI 2 only)
25	Driver completed Internet transmission request (DCI 2 only)
28	<Portable Battery Management Unit event=>event_28>
DATA�Character entering buffer event
#Parent event_index
=>	R0 =	2 (event number)
	R1 =	<buffer number=>Buffer_buffers>
	R2 =	byte being inserted

This event is generated when a byte is inserted into a buffer.
DATA�Econet UserRPC / OSProc events
#Parent event_index
=>	R0 =	8	(User procedure call)
	 	16	(OS procedure call)
	R1 =	<argument buffer=>Econet_immediatebuffer>
	R2 =	<RPC number=>.RPC>
	R3 =	sending station
	R4 =	sending station's network
<=	R0-R4 may be corrupted.

These events are generated when the Econet recieves a UserRPC or OS Procedure call sent by another station calling <Econet_DoImmediate>.
#SubPage RPC
Econet OS Procedure Calls
Number	Name
#Wrap off
#Line
0	<OSCharacterFromNotify=>.Notify>
1	OSInitialiseRemote	Unimplemented on RISC OS
2	OSGetViewParameters	Unimplemented on RISC OS
3	OSCauseFatalError	Calls <OS_GenerateError>. Ouch!
4	OSCharacterFromRemote	Unimplemented on RISC OS
#SubPage Notify
OSCharacterFromNotify
Outside the desktop the character is inserted into the keyboard buffer.

Inside the desktop, characters are collated by station, and at a pause, a <Message Notify=>Wimp:Msg_40040> is broadcast.
DATA# redirectionDATA�Econet Receive
#Parent event_index
=>	R0 =	14 (event number)
	R1 =	receive handle
	R2 =	9 (<status Received=>econet_statuses>)
	R3 =	port

This event is generated when the Econet completes a reception.
DATA�Econet Transmit
#Parent event_index
=>	R0 =	15	(event number)
	R1 =	transmit handle
	R2 =	<status=>econet_statuses>
	R3 =	port

This event is generated when the Econet completes a transmission.
DATAEscape event
#Parent event_index
=>	R0 =	6 (event number)

This event is generated when an escape condition occurs due to escape being pressed (or received in the serial buffer with <OS_Byte 181=>OS_Byte181> enabled). It is *not* generated by calling <OS_Byte 125=>OS_Byte125>.

If this event is enabled then keyboard escapes generate this event *instead* of calling the <escape handler=>OS_handlers_escape>. <OS_Byte 125=>OS_Byte125> generated escapes always call the <escape handler=>OS_handlers_escape>.
DATA%Output buffer empty event (0)
#Parent Event_index
=>	R0 =	0 (event number)
	R1 =	<buffer number=>Buffer_buffers>

This event is raised when an output buffer which has <event generation enabled=>Buffer_ModifyFlags> is emptied, or an attempt is made to remove a another byte when empty.
DATA�Input buffer full event (1)
#Parent Event_index
=>	R0 =	1 (event number)
	R1 =	<buffer number=>Buffer_buffers>, bit 31 set for block operation.
	R2 =	byte that could not be inserted (if single byte operation)
	 	pointer to data (if block operation)
	R3 =	number of bytes not inserted (if block operation)

This event is raised when an attempt is made to insert a character into a full input buffer which has <event generation enabled=>Buffer_ModifyFlags>.
DATA�Start of bar event
#Parent event_index
=>	R0 =	12 (event number)
	R1 =	2
	R2 =	0

This event is generated when the sound beat counter is reset. In future R2 may contain the invocation number of the task causing the event.
DATAIMIDI event (17)
#Parent Event_index
=>	R0 =	17 (event number)
	R1 =	<Event reason=>.code>

This event is raised by a MIDI card.
#Subpage code
MIDI event reasons
Code	Meaning
#Line
1	byte received into previously empty buffer
2	background MIDI error occurred
3	Scheduler queue about to empty - you can schedule more data.
DATAPDevice overrun event
#Parent event_index
=>	R0 =	22	(event number)
	R1 =	device driver's handle
	R2 =	file handle
	R3 =	0

This event is generated when <DeviceFS_ReceivedCharacter> is called for an unbuffered stream where the previously received character has not been read. The new character overwrites the previous character.
DATA�Portable BMU event
#Parent event_index
=>	R0 =	2 (event number)
	R1 =	<BMU flags=>Portable_BMUflags>

This event is generated when an interrupts is received from the battery management unit.
DATA�ADC conversion ended event (3)
#Parent Event_index
=>	R0 =	3 (event number)
	R1 =	channel that just converted

This event is raised by a BBC I/O card when an analogue-to-digital conversion is completed.
DATA�Vertical sync event (4)
#Parent Event_index
=>	R0 =	4 (event number)

This event is raised when the electron beam reaches the bottom of the display area and is about to start displaying border colour. This corresponds to the time that <OS_Byte 19=>OS_Byte019> returns. The frequency of this event depends on the scan rate of the monitor.

If you wish to synchronise music, you should probably use <TickerV=>Vector_TickerV> rather than this event.
DATA�Interval timer event (5)
#Parent Event_index
=>	R0 =	5 (event number)

This event is raised when the interval timer crosses zero (see <OS_Word 4=>OS_Word4>).
DATA6RS423 error event
#Parent event_index
=>	R0 =	7 (event number)
	R1 =	(pseudo 6850 status register) >> 1
	R2 =	character received

This event is generated when a serial error is detected. The error is specified by bits in R1:

Bit	Meaining when set
#Line
3	Framing error
4	Over-run error
5	Parity error
DATA�User event
#Parent event_index
=>	R0 =	9 (event number)
	R1... user parameters

This event is generated when the user calls <OS_GenerateEvent> with R0=9, and is entered in SVC mode, not IRQ.
DIR$�|G�������!Root�}H���;�]%�Disc��G���J���Formatt�F���e�$&gdiscaddress܆H����ʺlCreateH�H�����h&ofsdescriptor��F��������DescribeDisc��H����Ժ�DiscardReadSectorsCacheT�H���׺;DiscFormat��F�������densities|�F����zformatspec��H����ٺ�Drives�H���#ܺzFloppyStructurep�H���V���FreeSpace0�H���	ú6LayoutStructureh�G�������3defectlistP�G���x�ΛSectorOp�H���%��FreeSpace64��H����S�"�
3errors(�H������,cycleidT�H���x�+MiscOp�H���V�+dDiscOpDATA�FileCore
#Parent !Root
#Prefix Filecore_
#Table Columns 3
<Create>
<DescribeDisc>
<DiscardReadSectorsCache>
<DiscFormat>
<DiscOp>
<Drives>
<FloppyStructure>
<FreeSpace>
<LayoutStructure>
<MiscOp>
<SectorOp>
<FreeSpace64>
#EndTable
DATA�FileCore disc descriptor
Offset	Name		Meaning
#Line
0	log2secsize	Log2 of sector size (Sector size = 2^x)
1	secspertrack	number of sectors per track
2	heads		number of disc heads, if interleaved otherwise -1 (1 for old directories)
3	density		<disc density=>FileCore_densities>
4	idlen		length of id field of a map fragment (in bits)
5	log2bpmp	log2 of number of bytes per map bits
6	skew		track to track sector skew for random access file allocation
7	bootoption	boot option (as in *Opt 4,n)
8	lowsector	lowest numbered sector + <disc flags=>.flags>
9	nzones		number of zones in the map
A-B	zone_spare	number of non-allocation bits between zones
C-F	root		disc address of root directory
10-13	disc_size	disc size in bytes
14-15	disc_id		disc <cycle id=>FileCore_cycleid>
16-1F	disc_name	disc name (spaced to 10 chars, no terminator)
20-23	disctype	<filetype given to disc=>Filetypes:!Root>

{*}'Small' discs (Pre-RISC OS 3.6) :{*}
24-3F	 		reserved, must be 0

{*}'Large' discs (RISC OS 3.6 and later) :{*}
24-27	disc_size2	high word of disc size
28	share_size	b0-3: log2 share size granularity (in sectors)
	 		b4-7: reserved, must be 0
29	big_flag	b0: set if this is a 'large' disc
	 		b1-7: reserved, must be 0
2A-3F	 		reserved, must be 0
#subpage flags
Disc description flags
bits	Meaning
#line
0-5	lowest numbered sector id on a track
6	if set, treat sides as a sequence (not interleaved)
7	if set, disc is 40 track
DATA�Disc format block
Offset	Meaning
#Line
0	Sector size
4	Gap 1 side 0
8	Gap 1 side 1
C	Gap 3
10	Sectors per track
11	<Density=>FileCore_densities>
12	<Options=>.options>
13	Start sector on a track
14	Sector interleave
15	Side/side sector skew (signed)
16	Track/track sector skew (signed)
17	Sector fill value
18	Number of tracks to format (ie cylinders/drive: usually 80)
1C-23	Reserved, must be 0
24	sector id buffer, 1 word/sector
	bits	 0-7	Cylinder number mod 256
	 	 8-15	Head (0 onwards)
	 	16-23	Sector number
	 	24-31	log2(sector size)-7
#subpage options
Format options
bit	meaning
#Line
0	index mark required
1	double step
2-3	0 =	interleaved side
	1 =	format side 1 only
	2 =	format side 2 only
	3 =	sequenced sides
4-7	reserved, must be 0
DATAgFileCore_DiscOp address
Bit	Meaning
#Line
0-28	Disc address offset in bytes
29-31	Drive number
DATAlFileCore_Create  (&40541)
#Parent Filecore_
=>	R0 =	pointer to <descriptor block=>FileCore_fsdescriptor>
	R1 =	pointer to calling module's base
	R2 =	pointer to calling module's private word
	R3 =	<drives configuration=>.drives>
	R4 =	suggested size fo directory cache
	R5 =	suggested number of 1072 byte buffers or file cache
	R6 =	hard disc map sizes

<=	R0 =	pointer to FileCore instance private word
	R1 =	address to call after completing background floppy op
	R2 =	address to call after completing background hard disc op
	R3 =	address to call to release FIQ after low level op

This call creates a new instantiation of an ADFS like filing system. It must be called on initialisation by any filing system module that is adding itself to FileCore.

The only start up option currently supported is 'No directory state' which is indicated by setting bit 30. All other bits representing start up options must be clear.

If the filing system doesn't support background transfer of data, R5 must be zero.

The hard disc map size are given using 1 byte for each disc, with drive 4 in the low byte, and drive 7 in the high byte. The byte should contain 'map size'/256 (ie 2 for the old map). This is just a good guess and shouldn't involve starting up the drives to read from them. You might store this in the <CMOS RAM=>OS_ByteCmos>.

You must store the FileCore instance private word returned by this SWI in your modules workspace; it's your module's means of identifying itself to FileCore.
 
When your module calls the addresses returned in R1-R3, it must be in SVC mode with R12 holding the value of R0 that this SWI returned. Interrupts need to be disabled. R0, R1, R3-R11 and R13 will be preserved by FileCore over these calls.
#Subpage drives
Drives configuration
Bits	Contents
#Line
0-7	number of floppies (0-3)
8-15	number of harddiscs (0-3)
16-24	default drive
25-31	start up options
DATAoFilecore FS descriptor block
Offset	Contains
#Line
0	<disc flags=>.flags>
3	<filing system number=>fsys_ident>
4	offset of filing system title from module base
8	offset of boot text from module base
12	offset of low level disc op entry from module base
16	offset of low level miscellaneous entry from module base
#Subpage flags
Disc flags
Bit	Meaning when set
#Line
0	Hard disc needs FIQ
1	Floppy needs FIQ
2	Reserved must be zero
3	Use only scratch space when a temporary buffer is needed
4	Hard disc support mount like floppies do (ie they fill in sector size, heads, sectors per track and density)
5	Hard disc support poll change (ie the poll change call works for hard discs and returns a sensible value; also locking them gives a sensible result)
6	Floppies support power eject
7	Harddiscs support power eject
9	Sector addressing is possible (RISC OS 3.6 and later)
DATA�FileCore_DescribeDisc  (&40545)
#Parent FileCore_
=>	R0 =	pointer to disc name (or :0, etc)
	R1 =	<pointer to data block=>FileCore_disc>
	R8 =	pointer to FileCore instance private word

This call allows you to check the disc's format and internal structure. If the is specified is not in a drive it will be searched for and asked for in an error box or by prompt. If the disc name is that of a drive then if no disc is present then the Drive empty error will be reported.DATA�FileCore_DiscardReadSectorsCache  (&40546)
#Parent FileCore_
=>	R6 =	cache handle

This call discards the cache of read sectors created by <FileCore_DiscOp 9=>FileCore_DiscOp9>.
DATA;FileCore_DiscFormat  (&40547)
#Parent FileCore_
=>	R0 =	pointer to <disc format structure=>FileCore_format> to be filled in
	R1 =	SWI number to call to vet disc format (eg <ADFS_VetFormat>)
	R2 =	parameter in R1 to use when calling vetting SWI
	R3 =	<format specifier=>FileCore_formatspec>

<=	R0-R3 preserved

This call fills in the disc format structure pointed to by R0 with the 'prefect' parameters for the specified format, taking no account of the abilities of the available hardware that will have to perform the format. Once filled in, this SWI calls the vetting SWI to check the formay structure for achievability on the available hardware. The vetting SWI may generate an error if the format differs widely from what can be achieved; alternatively it may alter the format structure to the closest match that can be achieved. The vetting SWI then returns to this
SWI, which checks whether the format block - as updated by the vetting SWI - is still an adequate match for the desired format. If it is, this SWI returns to its caller; otherwise it generates an error.
DATA�Disc densities
\#	Meaning
#line
0	hard disc
1	single density (125 Kbps FM)
2	double density (250 Kbps FM)
3	double+ density (300 Kbps FM) (ie higher rotation speed DD)
4	quad density (500 Kbps FM)
8	octal density (1000 Kbps FM)
DATAzFormat specifier
\#	Meaning
#Line
&80	L format floppy
&81	D format floppy
&82	E format floppy
&83	F format floppy
DATA�FileCore_Drives  (&40542)
#Parent FileCore_
=>	R8 =	pointer to FileCore instance private word

<=	R0 =	default drive
	R1 =	number of floppy drives
	R2 =	number of hard disc drives

This call returns informations on the filing system's drives.
DATAzFileCore_FloppyStructure  (&40544)
#Parent FileCore_
=>	R0 =	pointer to buffer (must be >= 4k long)
	R1 =	pointer to <disc record=>FileCore_disc> describing shape and format
	R2	bit 7 set : old directory structure
	 	bit 6 set : old map
	R3 =	pointer to <list of defects=>FileCore_defectlist>

<=	R3 =	total size of structure created

This call creates a RAM image of a floppy disc map and root directory entry.

The pointer to a list of defects is only needed for new map discs. You don't need to know a FileCore instance private word to use this call; instead the disc record tells FileCore which filing system is involved.
DATA�FileCore_FreeSpace  (&40543)
#Parent FileCore_
=>	R0 =	pointer to disc specifier (name, or :0, etc)
	R8 =	pointer to FileCore instance private word

<=	R0 =	total free space on disc
	R1 =	size of largest object that can be created

This call returns the total free space on given disc, and the largest object that can be created on it. Values of &7FFFFFFF should be treated as 'at least 2Gb' - you might represent this casually as 'lots'.
DATA6FileCore_LayoutStructure  (&40548)
#Parent FileCore_
=>	R0 =	<identifier=>FileCore_Disc> of particular format
	R1 =	pointer to bad block list (terminated by -1)
	R2 =	pointer to null terminated disc name
	R3 =	image file handle

<=	R0-R3 preserved

This call lays out into the specified file a set of structure corresponding to the identified format. The format identifier is a pointer to a disc record. An error is returned if the specified format can't map out defects, and there were defects in the defect list.

This call isn't available under RISC OS 2.DATA�Defect lists
#Parent FileCore_
{*}For 'small' discs (without big_flag set) :{*}
#Indent 2
A list of defects in byte addresses, giving the start address of each defective sector and terminated by &20000000.
#Indent

{*}For '' discs (with big_flag set) :{*}
#Indent 2
A list of defects in byte addresses, giving the start address of each defective sector and terminated by &20000000. Followed by a second list with the defect addresses in sectors, terminated by &40000000.
#Indent
DATA�FileCore_SectorOp  (&4054A)
#Parent FileCore_
This SWI is identical to <FileCore_DiscOp> except that the addresses given are in sectors, not bytes.DATA�FileCore_FreeSpace64  (&4054B)
#Parent FileCore_
=>	R0 =	pointer to disc specifier (name, or :0, etc)
	R8 =	pointer to FileCore instance private word

<=	R0 =	least significant word of free space
	R1 =	most significant word of free space
	R2 =	size of largest object that can be created, or &7FFFFFFF if > 2Gb

This call returns the total free space on given disc with support for 'large' discs.
DATA�
FileCore_DiscOp error numbers
#Parent FileCore_DiscOp
Error	Meaning
#Line
0	*Invalid* : VS and R0 = 0 should never be used
\<&100	Internal filecore error number
# Gerph> Ok, WTF are the internal filecore error numbers documented ?!
b31 set	b0-20 :		disc address, shifted down 8 bits
	b21-23 :	drive number
	b24-29 :	<disc error number=>.fsspecific>
	b30 :		0
#Subpage fsspecific
FileCore_DiscOp FS specific errors
# Gerph> Really these should be documented using links to the right part of
#        the manual, but I can't be bothered right now
{*}1772 floppy discs:{*}
#Indent 2
Bit	Meaning
#line
7	Drive was already running
# I think
6	Drive is write protected
5	Write failed
4	Record not found
3	CRC error
2	Lost data
1	Track 0 found
0	Drive busy
# Last two are guesses

#indent
{*}ST506 hard discs:{*}
#Indent 2
Value	Meaning
#Line
&1	Abort command accepted
&2	Invalid command issued
&3	Invalid command parameter
&4	Head positioning, disc access, or drive check before SPC issued
&5	TST command after SPC command
&6	USELD for a drive has not been returned
&7	Write fault detected by interface
&8	Drive not ready
&9	Seek complete timed out
&A	SEK, or disc access issued during a seek
&B	Next cylinder address is too big
&C	Invalid step rate: highest-speed seek specified in normal mode
&D	SEK, or disc access issued to drive with seek error
&E	Data overrun (memory is slower than the drive)
# the above should not occur, even on A400's to my knowledge
&F	Head address too high
&10	Error correction code detected an error
&11	CRC error in data area
&12	Error correction code corrected an error
&13	Error correction code failed in data area
&14	In CMPD command data mismatched from host and disc
# is that 'verify failed' then ?
&15	CRC in ID field (never generated)
&16	ID search timed out
&17	ID area has bad address mark
&18	Missing address mark
&19	Drive write protected

#indent
{*}IDE discs:{*}
#Indent 2
Value	Meaning
#Line
&2	Command aborted by controller
&7	Write fault
&8	Drive not ready
&9	Track 0 not found
&13	Uncorrected data error
&16	Sector ID field not found
&17	Bad block mark detected
&18	No data address mark
&20	No DRQ when expected
&21	Drive busy when commanded
&22	Drive busy on command completion
# I don't get that, but there you go...
&23	Controller did not respond within timeout
&24	Unknown code in error register

#indent
{*}710/711 floppy discs:{*}
#indent 2
Value	Meaning
#Line
&1	Fatal error, controller hardware error
&2	Fatal error, command timed out; drive problem
&3	Fatal error, track 0 not found; drive problem
&10	Critical error, seek failed
&20	Recoverable error, non specific command error
&21	Data overrun
&22	Data CRC error
&23	Sector or ID not found
&24	Missing address mark
DATA,Disc cycle ID
#Parent FileCore_disc
The disc cycle ID should be either:
�	an ID stored on the disc which changes on each disc update ({/}i.e.{/} filcore's behaviour)
�	a value caluculated from an area of disc likely to change on each disc update ({/}e.g.{/} a CRC of the FAT on a DOS floppy)
DIR$`�H����=g*a!RootĴH����Rg*P0�H����]�"10�H����`�"~2��H���Fc�"�3��H���Re�"�4,�H����o�"6H�H���sr�"�7 �H���]P�"�5DATAaFileCore_MiscOp  (&40549)
#Parent FileCore_
=>	R0 =	reason code
	 	  0	<Mount=>FileCore_MiscOp0>
	 	  1	<Poll changed=>FileCore_MiscOp1>
	 	  2	<Lock drive=>FileCore_MiscOp2>
	 	  3	<Unlock drive=>FileCore_MiscOp3>
	 	  4	<Poll period=>FileCore_MiscOp4>
	 	  5	<Eject disc=>FileCore_MiscOp5>
	 	  6	<Read processed FileCore_Create block=>FileCore_MiscOp6>
	 	  7	<Read drive flags=>FileCore_MiscOp7>

	R1 =	drive number
	R2-R5 dependant on reason code
	R8 =	pointer to FileCore instance private word

This call performs miscellaneous functions for accessing drives depending on the reason code in R0.
DATAPFileCore_MiscOp 0
#Parent FileCore_MiscOp
=>	R0 =	0 (reason code)
	R1 =	drive
	R2 =	disc address to read from
	R3 =	pointer to buffer
	R4 =	length to read into buffer
	R5 =	pointer to <disc record=>FileCore_disc> to fill in (floppies and floppy like hard discs only)
	R8 =	pointer to FileCore instance private word

<=	R1-R5 preserved

This call mounts a disc, reading in the data asked for.

For a floppy disc, and for a hard disc where bit 4 of the descriptor block flags is set, this call asks the given filing system to first identify the disc's format. The suggested density to try first is given in the disc record; if this is not successful, the filing system should then try other densities. The following order is suggested:

#Indent 2
1. Quad density
2. Double dendity
3. Octal density
4. Single density
5. Double+ density
#Indent

Once the filing system has identified the disc's format, it fills in the 'log2secsize', 'secspertrack', 'heads', 'density', 'lowsector' and 'root' values in the disc record.

#Tab
�	If 'log2secsize'\<=8, then it gives 'heads' the value (actual number of heads -1), and sets bit 6 of 'lowsector', so sides are treated as sequenced. Otherwise (ie when 'log2secsize'>8) it gives 'heads' the value (actual number of heads), and clears bit 6 of low sector, so sides are treated as interleaved.
   
�	The filing system clears bit 7 of 'lowsector'; this is used as an initial value, which FileCore subsequently corrects if necessary.

Having filled in the disc record, the filing system then reads in the data asked for.

For hard discs where bit 4 of the <descriptor block=>FileCore_fsdescriptor.flags> flags is clear, this merely asks the given filing system to read in the data asked for. This typically necessitates it reading the boot block of the disc; if the disc doesn't have one, the filing system generates one itself.
DATAFileCore_MiscOp 1
#Parent FileCore_MiscOp
=>	R0 =	1 (reason code)
	R1 =	drive
	R2 =	sequence number
	R8 =	pointer to FileCore private instance word

<=	R2 =	sequence number
	R3 =	<result flag=>.flags>

The sequence number is to ensure no changes are lost due to reset being pressed. Both the given filing system and the FileCore incarnation should start with a sequence number of 0 for each drive. The filing system increments the sequence number with each change of state. If the filing system finds the entry sequence number doesn't match its copy it should return changed/maybe changed, depending on whether the disc changed line works/doesn't work.
#Subpage flags
MiscOp 3 result flags
Bit   Meaning when set
#Line
0	not changed
1	maybe changed
2	changed
3	empty
4	ready
5	drive is 40 track
6	empty works
7	changed works
8	disc in drive is high density
9	density sensing works
10	ready works
11-31	reserved must be zero

Exactly one of the bits 0-3 must be set. Once bit 6 or 7 is returned set for a given drive, they must always be so.
DATA~FileCore_MiscOp 2
#Parent FileCore_MiscOp
=>	R0 =	2 (reason code)
	R1 =	floppy drive
	R8 =	pointer to FileCore instance private word

This call locks a disc in a drive, you can only use it only for a floppy drive. It should at least ensure that the drive light stays on until unlocked. Note that locks are counted, so each 'lock drive' must be matched by an 'unlock drive'. DATA�FileCore_MiscOp 3
#Parent FileCore_MiscOp
=>	R0 =	3 (reason code)
	R1 =	drive
	R8 =	pointer to FileCore instance private word

This call can only be called for a floppy drive. It reverses a single MiscOp '<Lock drive=>FileCore_MiscOp2>'.DATA�FileCore_MiscOp 4
#Parent FileCore_MiscOp
=>	R0 =	4 (reason code)
	R1 =	drive
	R8 =	pointer to FileCore instance private word

<=	R5 =	minimum polling period (in centiseconds), or -1 if changed doesn't work
	R6 =	pointer to media type string (eg 'disc' for ADFS

This call informs FileCore of the minimum period between polling for disc insertion under the given filing system. This is so that drive lights don't remain continously illuminated.

The values are re-exported by FileCore in the UpCalls <'Media not present'=>OS_UpCall1> and <'Media not known'=>OS_UpCall2>. The value applies to all drives rather than a particular drive.DATAFileCore_MiscOp 6
#Parent FileCore_MiscOp
=>	R0 =	6 (reason code)
	R8 =	pointer to FileCore instance private word

<=	R0 =	pointer to <FileCore_Create> block, with addresses in place of offsets

This call reads the FileCore_Create block used to initialise this filing system.
DATA�FileCore_MiscOp 7
#Parent FileCore_MiscOp
=>	R0 =	7 (reason code)
	R1 =	drive number
	R8 =	pointer to FileCore instance private word

<=	R0 =	flag, b0 set: drive locked

This call read flags about the drive.
DATA�FileCore_MiscOp 5
#Parent FileCore_MiscOp
=>	R0 =	5 (reason code)
	R1 =	drive, bit 31 set if trying to find a dic
	R4 =	iteration count, if bit 31 of R1 set
	R5 =	timeout period, if bit 31 of R1 set
	R8 =	pointer to FileCore instance private word

This call causes a FileCore system to eject a disc.

<'Media not present'=>OS_UpCall1> and <'Media not known'=>OS_UpCall2> will cause bit 31 to be set, indicating that you should choose a suitable drive to eject the disc from.
DIR$ddh�H����͛"�!Root`�G�������;_flags��H���]�]%A0��H�����]%q1T�G������Ε15��G���,���72$�G���ݵ�� 3D�G���%t�΃4��G���Oi�ξ5��G���Of�Ε6 �G����b��&7-8H�H����]%9DATA�FileCore_DiscOp  (&40540)
#Prefix FileCore_DiscOp_
#Parent FileCore_
# Gerph> I've reorganised this page, 'cos it looked 'awkward' before
=>	R1 =	reasons and <flags>
	 	  0	<Verify=>FileCore_DiscOp0>
	 	  1	<Read sectors=>FileCore_DiscOp1>
	 	  2	<Write sectors=>FileCore_DiscOp2>
	 	  3	<Read track/Id=>FileCore_DiscOp3>
	 	  4	<Write/format track=>FileCore_DiscOp4>
	 	  5	<Seek=>FileCore_DiscOp5>
	 	  6	<Restore=>FileCore_DiscOp6>
	 	  7	<Step in=>FileCore_DiscOp7-8>
	 	  8	<Step out=>FileCore_DiscOp7-8>
	 	  9	<Read sectors via cache=>FileCore_DiscOp9>
	 	  15	<Specify ?=>FileCore_DiscOp15>

<=	R0 =	0 if no error, <error number=>FileCore_Errors> and VS otherwise
	N, Z and C preserved

This SWI performs various low-level accesses on a disc.
DATA;FileCore_DiscOp flags
#Parent FileCore_DiscOp
Bit	Meaning
#Line
4	Given alternative defect list
5	Given <sector list=>.seclist>
6	Ignore escape
7	Ignore timeout
8-31	Pointer to <alternative record=>FileCore_Disc> (shifted down twice)

Note that the alternative record is � 4 so that its LSB is actually bit 6, but because it must be word aligned the real LSB is bit 8.
#Subpage seclist
Use sector list
When bit 5 is set, the meaning of R3 (memory address) is altered. It doesn't point to the area of RAM to or from which the disc data is to be transferred. Instead, it points to a word-aligned list of memory address/length pairs. All but the last of these lengths must be a multiple of the sector size. These word-pairs are used for the transfer until the total number of bytes given in R4 has been transferred.

On exit, R3 points to the first pair which wasn't fully used, and this pair is updated to reflect the new start address/bytes remaining, so that a subsequent call would continue from where this call has finished.

This bit may only be set for reasom codes 0-2.
DATAAFileCore_DiscOp 0
#Parent FileCore_DiscOp
=>	R1 =	0 + <flags=>FileCore_DiscOp_flags>
	R2 =	<disc address=>FileCore_discaddress>
	R4 =	size to verify

<=	R2 =	next disc address
	R4 =	unverified

This call is used to verify sectors.
Note: For RISC OS 3.6, the value in R2 will be rounded down to be sector aligned.
DATAqFileCore_DiscOp 1
#Parent FileCore_DiscOp
=>	R1 =	1 + <flags=>FileCore_DiscOp_flags>
	R2 =	<disc address=>FileCore_discaddress>
	R3 =	pointer to block to read into
	R4 =	size

<=	R2 =	next disc address
	R3 =	next free address
	R4 =	unread

This call will read sectors from disc.
Note: For RISC OS 3.6, the value in R2 will be rounded down to be sector aligned.
DATA�FileCore_DiscOp 15
#Parent FileCore_DiscOp
Specify ?

=>	R1 =	15 + <flags=>FileCore_DiscOp_flags>
	R2 =	<disc address=>FileCore_discaddress>
DATA7FileCore_DiscOp 2
#Parent FileCore_DiscOp
=>	R1 =	2 + <flags=>FileCore_DiscOp_flags>
	R2 =	<disc address=>FileCore_discaddress>
	R3 =	pointer to block to write from
	R4 =	size to write
	
<=	R2 =	next disc address
	R3 =	next free address
	R4 =	unwritten bytes

This call is used to write sectors to disc.DATA FileCore_DiscOp 3
#Parent FileCore_DiscOp
Read track (from floppy) or id (from hard disc)

=>	R1 =	3 + <flags=>FileCore_DiscOp_flags>
	R2 =	<disc address=>FileCore_discaddress>
	R3 =	pointer to block to read into

If the alternate defect list option bit (bit 4) is set in R1 on entry when reading a track/ID, then a whole track's worth of ID fields is read. This usage isn't available under RISC OS 2.

The call reads 4 bytes of sector ID information into the buffer pointed to by R3 for every sector on the track. The order of data is:

#indent 2
Cylinder
Head
Sector number
Sector size (0 = 128;1 = 256, etc)
#indent

The operation is terminated after 200 mS (1 revolution)

The first sector ID transferred will normally be that following the index mark (it may be the second if there is abnormal interupt latency from the index pulse interrupt). The first two ID's read may also be duplicated at the buffer end due to interrupt latency. Consequently the buffer should be at least 16 bytes longer than the maximum number of ID's expected (512 bytes at most).

The disc record provided is updated to return the actual number of sectors per track found (at offset 1). Note to use this option you MUST provide a valid defect list, which at a minimum is a word of &20000000 following after the disc record.DATA�FileCore_DiscOp 4
#Parent FileCore_DiscOp
=>	R1 =	4 + <flags=>FileCore_DiscOp_flags>
	R2 =	<disc address=>FileCore_discaddress>
	R3 =	pointer to block to write or 0 to format
	R4 =	<format block=>FileCore_format>

This call is used to write or format tracks.

If R3=0, this call formats a track of the specified disc, an error is generated, if the specified format is not possible to generate, or if the track requested is outside the valid range. The tracks are numbered from 0 to (number of tracks)-1. The mapping of the address is controlled by the disc structure record.

If R3\<>0 then the data specified is written to the track.
DATA�FileCore_DiscOp 5
#Parent FileCore_DiscOp
Seek sector

=>	R1 =	5 + <flags=>FileCore_DiscOp_flags>
	R2 =	<disc address=>FileCore_discaddress>

This call is only used to park the disc.DATA�FileCore_DiscOp 6
#Parent FileCore_DiscOp
Restore ???

=>	R1 =	6 + <flags=>FileCore_DiscOp_flags>
	R2 =	<disc address=>FileCore_discaddress>
DATA&FileCore_DiscOp 7,8
#Parent FileCore_DiscOp
=>	R1 =	7 or 8 + <flags=>FileCore_DiscOp_flags>

This call is used to step in or out by a track. These are only supported by 1772 disc controllers, eg those found in pre-A5000 machines, and should not be used so as to maintain compatibility.
DATAFileCore_DiscOp 9
#Parent FileCore_DiscOp
=>	R1 =	9 + <flags=>FileCore_DiscOp_flags>
	R2 =	<disc address=>FileCore_discaddress>
	R3 =	pointer to block to read into
	R4 =	size to read
	R6 =	cache handle

<=	R2 =	next disc address
	R3 =	next free address
	R4 =	unread bytes
	R6 =	cache handle

This reason code reads sectors via a cache held in RMA, and isn't available under RISC OS 2.

To start a sequence of these operations, set R6 (cache handle) to zero on entry. Its value will be updated on exit, and subsequent calls should use this new values. Bits 4-7 of R1 should be zero, but are ignored if set.

To discard the cache once finished, just call <FileCore_DiscardReadSectorsCache>.
Note: For RISC OS 3.6, the value in R2 will be rounded down to be sector aligned.
DIR$��D�H����&�!Root��G���7���CacheAddr��H������&CCaret��H�����&bCharBBox@�G����{��ConverttoOS��H����'&�Converttopoints��G���A>���CurrentFont��H����5&�FindCarett�H���%=&FindCaretJ��H����J&FindFont��G���d��FutureFont��H���ӕ&�ListFonts��G���y��͕LoseFont4�H������&Opaint�H���m��paint1pE����!��paint2`G���;��ͅReadColourTable�G���@t��ReadDefn�	G������
ReadInfo�
G����a��ReadScaleFactor�G������eSetFontDG�������SetFontColours4
H���6O'kSetPalette�G�������SetScaleFactor�H���4['�StringBBox4G������FStringWidth|H���`m'UnCacheFile�H����Rs
ScanString�H���x�identifier#H����?�matrix$H������	SReadThresholds`%H����#�	�SetThresholdsX&H���k��	�ReadFontMax�'H���;��	�ReadFontPrefix�(H���y��&
readfontmetrics�2H���*L�	�SetColourTable�3H����r�	]ReadEncodingFilename�5H���I�'�ApplyFieldst8H������	yCurrentRGB�9H�����	�FindField�;H���w��	�FutureRGBp=H����~�	�DecodeMenuDBH���]H�	MakeBitmap\DH���t;�	�SetFontMax�EH�����	�thresholds�HH����
�	�LookupFont�JH���R?j�switchoutputtobufferLNH���ڗ�&GpaintflagsDATA�Font
#Parent !Root
#Prefix Font_
#Table Columns 3
<ApplyFields>
<CacheAddr>
<Caret>
<CharBBox>
<ConverttoOS>
<Converttopoints>
<CurrentFont>
<CurrentRGB>
<DecodeMenu>
<FindCaret>
<FindCaretJ>
<FindField>
<FindFont>
<FutureFont>
<FutureRGB>
<ListFonts>
<LookupFont>
<LoseFont>
<MakeBitmap>
<Paint>
<ReadColourTable>
<ReadDefn>
<ReadEncodingFilename>
<ReadFontMax>
<ReadFontMetrics>
<ReadFontPrefix>
<ReadInfo>
<ReadScaleFactor>
<ReadThresholds>
<ScanString>
<SetColourTable>
<SetFont>
<SetFontColours>
<SetFontMax>
<SetPalette>
<SetScaleFactor>
<SetThresholds>
<StringBBox>
<StringWidth>
<SwitchOutputToBuffer>
<UnCacheFile>
#EndTable
DATA�Font_CacheAddr  (&40080)
#Parent Font_
<=	R0 =	version number * 100
	R1 =	size of font cache
	R2 =	bytes used

This SWI returns version number of the font module, and information about the font cache.DATACFont_Caret  (&40087)
#Parent Font_
=>	R0 =	colour
	R1 =	height (OS)
	R2 =	<flags=>font_paintflags>, only bit 4 used
	R3 =	x coord
	R4 =	y coord

This SWI draws a caret at the given position. The colour is EORed onto the screen, so to get a specific colour, you have to take the background colour into consideration.DATAbFont_CharBBox  (&4008E)
#Parent Font_
=>	R0 =	font handle
	R1 =	character
	R2 =	<flags=>font_paintflags> (only bit 4 matters)

<=	R1 =	min x incl
	R2 =	min y incl
	R3 =	max x excl
	R4 =	max y excl

This SWI returns the bounding box for the given character of the given font. The bounding box is the smallest box neccessary to cover the character.DATA�Font_ConverttoOS  (&40088)
#Parent Font_
=>	R1 =	x millipoints
	R2 =	y millipoints

<=	R1 =	x OS
	R2 =	y OS

This SWI converts the coordinates from millipoints to OS units.DATA�Font_Converttopoints  (&40089)
#Parent Font_
=>	R1 =	x OS
	R2 =	y OS

<=	R0 corrupted
	R1 =	x millipoints
	R2 =	y millipoints

This SWI converts the coordinates from OS units to millipoints.DATA�Font_CurrentFont  (&4008B)
#Parent Font_
<=	R0 =	font handle
	R1 =	background colour
	R2 =	foreground colour
	R3 =	<foreground colour offset=>font_paint2>

This SWI returns the current colour settings of the font manager.DATA�Font_FindCaret  (&4008D)
#Parent Font_
=>	R1 =	pointer to string
	R2 =	x offset in millipoints
	R3 =	y offset in millipoints

<=	R1 =	pointer to closest char
	R2 =	width of string
	R3 =	height of string
	R4 =	length of string
	R5 =	index of closest char

This SWI returns info about which char is closest to the given offset. To find this in a justified string, use <Font_FindCaretJ>.

In RISC OS 3 and later it is recommended to use <Font_ScanString>.
DATAFont_FindCaretJ  (&40096)
#Parent Font_
=>	R1 =	pointer to string
	R2 =	x offset in millipoints
	R3 =	y offset in millipoints
	R4 =	x justification offset
	R5 =	y justification offset

<=	R1 =	pointer to closest char
	R2 =	width of string
	R3 =	height of string
	R4 =	length of string
	R5 =	index of closest char

This SWI returns info about which char is closest to the given offset. The supplied justification is divided on all spaces in the string.

In RISC OS 3 and later it is recommended to use <Font_ScanString>.
DATAFont_FindFont  (&40081)
#Parent Font_
=>	R1 =	pointer to ctrl terminated font name.
	R2 =	x points * 16
	R3 =	y points * 16
	R4 =	x dpi, or 0 for default
	R5 =	y dpi, or 0 for default

<=	R0 =	font handle
	R4 =	x dpi
	R5 =	y dpi

This SWI returns a handle for the given font name. The font is also set as current font. When you no longer need the font, use <Font_LoseFont>. If R1 points to a string containing no '\\' characters it is assumed to be a font name. Otherwise it is treated as a <font identifier=>Font_identifier>.DATAFont_FutureFont  (&4008C)
#Parent Font_
<=	R0 =	font handle
	R1 =	background colour
	R2 =	foreground colour
	R3 =	<foreground colour offset=>font_paint2>

This SWI returns what the state after the next call to <Font_Paint> would be. You must first have called <Font_StringWidth>.DATA�Font_ListFonts  (&40091)
#Parent Font_
=>	R1 =	pointer to 40-byte buffer
	R2 =	count, or 0 for first call
	R3 =	path string, or -1 for Font$Path

<=	R2 =	count, or -1 if no more

{*}Or{*} :
=>	R1 =	pointer to buffer for identifier, or font menu
	R2 =	counter and <flags=>.flags>
	R3 =	size of buffer in R1
	R4 =	pointer to buffer for font name, or indirected data
	R5 =	size of buffer in R4
	R6 =	pointer to identifier to tick, or 0 for none, or 1 for 'System font'
<=	R2 =	new counter, or -1 if no more
	R3 =	required size of buffer in R1 if R1 = 0,
	 	or 0 if building a menu and the menu is null
	 	otherwise the length of data placed in the buffer
	R5 =	required size of buffer in R4 if R4 = 0,
	 	otherwise the length of data placed in the buffer

This SWI returns, one at a time, the fonts found with the given path, or a font menu.
#Subpage flags
Font_ListFonts flags
bit	meaning if set
#Line
0-15	counter, should be 0 on first call
16	return font identifier in R1
17	return local name in R4
18	terminate with 13 rather than 0
19	return menu definition in R1, and indirected data in R4
20	place 'System font' at head of menu
21	tick font in R6, and its parent
22	return list of encodings rather than fonts
23-31	reserved, must be 0
DATA�Font_LoseFont  (&40082)
#Parent Font_
=>	R0 =	font handle

This SWI tells the font manager that the font is no longer needed by your program.DATAOFont_Paint  (&40086)
#Parent Font_
=>	R0 =	Font handle (if applicable)
	R1 =	<String=>font_paint1>
	R2 =	<Flags=>font_paintflags>
	R3 =	x
	R4 =	y
	R5 =	pointer to <block=>.block> (if applicable)
	R6 =	pointer to <transformation matrix=>Font_matrix> (if applicable)
	R7 =	Length (if applicable)

This SWI paints a string to the screen using the currently selected font, or a specific font if flags indicate so.

Note: Underline and rubout do not work unless transformed x-axis is parallel (not anti-parallel) to output x-axis.
# Gerph> Do you mean perpendicular when you say anti-parallel ?
#subpage block
Font_Paint block
Offset	Contents
#Line
0	additional x offset for spaces
4	additional y offset for spaces
8	additional x offset for each letter
12	additional y offset for each letter
16	x coordinate for bottom left of rubout box (inclusive)
20	y coordinate for bottom left of rubout box (inclusive)
24	x coordinate for top right of rubout box (exclusive)
28	y coordinate for top right of rubout box (exclusive)

These values are in millipoints (<bit 4 of R2=>font_paintflags> must be clear)
DATA�Special characters
#Parent Font_Paint
Some control characters have special meanings :

 9	dx low,middle,high		:	Move print position horizontally
 11	dy low,middle,high		:	Move print position vertically
 17	colour				:	Set font colour (+&80 for background)
 18	background, foreground, offset	:	See <Font_SetFontColours>
 19	background, foreground, offset	:	See <ColourTrans_SetFontColours>
 21	comment string, ctrl terminated
 25	underline pos, thickness	:	Turn underline on/off
 26	font handle			:	See <Font_SetFont>
 27	ALIGN; a, b, c, d, e, f		:	Full <transform matrix=>font_matrix>
 28	ALIGN; a, b, c, d		:	<Transform matrix=>font_matrix> with 0 translation
 
#tab align right
9,11	The 3 byte print-position is given in millipoints
25	pos & thickness is given in 1/256th of current font size - pos is sign extended, thickness is unsigned. Set thickness to 0 to turn off underlining. 
27,28	The code must be followed by 0-3 null bytes to word align the <transformation matrix=>Font_matrix>.
DATA�Colour offset
This is the number of colours that is used when anti aliasing. The colours used will be from \<foreground> to \<foreground> + \<offset>. The offset can be from -14 to 14. If offset is 0, then no anti-aliasing is done.DATA�Font_ReadColourTable (&40098)
#Parent Font_
=>	R1 =	16-byte buffer

This SWI returns the 16 colours used to do anti-aliasing.DATAFont_ReadDefn  (&40083)
#Parent Font_
=>	R0 =	font handle
	R1 =	pointer to buffer for font name

<=	R2 =	x points * 16
	R3 =	y points * 16
	R4 =	x dpi
	R5 =	y dpi
	R6 =	age of font
	R7 =	usage count

This SWI returns information about the given font.
DATA
Font_ReadInfo  (&40084)
#Parent Font_
=>	R0 =	font handle
<=	R1 =	min x, inclusive
	R2 =	min y, inclusive
	R3 =	max x, exclusive
	R4 =	max y, exclusive

This SWI returns, in OS units, the smallest possible box needed to cover any character in the given font.DATA�Font_ReadScaleFactor  (&4008F)
#Parent Font_
<=	R1 =	x scale factor
	R2 =	y scale factor

This SWI returns the values used when converting between OS coordinates and
millipoints. To set values, use <Font_SetScaleFactor>.DATAeFont_SetFont  (&4008A)
#Parent Font_
=>	R0 =	new font handle

This SWI sets the current font.DATA�Font_SetFontColours  (&40092)
#Parent Font_
=>	R0 =	font handle (0 for current)
	R1 =	background colour
	R2 =	foreground colour
	R3 =	<foreground colour offset=>font_paint2>

This SWI sets the font colours and, optionally, the font.DATAkFont_SetPalette  (&40093)
#Parent Font_
=>	R1 =	background logical colour
	R2 =	foreground logical colour
	R3 =	foreground colour offset
	R4 =	background physical colour
	R5 =	foreground physical colour
	R6 =	&65757254 ('True') to use 24 bit colours in R4,R5

This SWI is used to set the anti-alias palette. You should *not* use this if you're running in the desktop. Instead you should use <Wimp_SetFontColours=>Wimp:Wimp_SetFontColours> or <ColourTrans_SetFontColours>.

On RISC OS 3 and later, if R6 != 'True' then R4,R5 have their top nibbles copied to their bottom nibbles, so &12345678 becomes &11335500.
DATA�Font_SetScaleFactor  (&40090)
#Parent Font_
=>	R1 =	x scale factor
	R2 =	y scale factor

This SWI sets the values used when converting between OS coordinates and millipoints. To read values, use <Font_ReadScaleFactor>.DATA�Font_StringBBox  (&40097)
#Parent Font_
=>	R1 =	pointer to string
<=	R1 =	min x, inclusive
	R2 =	min y, inclusive
	R3 =	max x, exclusive
	R4 =	max y, exclusive

This SWI returns the smallest possible box that covers the whole string. The box is returned in millipoints. This call can not, due to rounding and anti-aliasing, be used to find size on screen.

In RISC OS 3 and later it is recommended to use <Font_ScanString>.
DATAFFont_StringWidth  (&40085)
#Parent Font_
=>	R1 =	pointer to <string=>font_paint1>
	R2 =	max width in millipoints
	R3 =	max height in millipoints
	R4 =	split character (or -1)
	R5 =	max string length

<=	R1 =	pointer to where scan ended.
	R2 =	width of scanned string.
	R3 =	height of scanned string.
	R4 =	number of split chars found
	R5 =	length of scanned string.

This SWI calculates how wide a string would be under the given limits. After this SWI, you can call <Font_FutureFont> to find out what the current font would be after a call to <Font_Paint> with this string.DATAFont_UnCacheFile  (&4009A)
#Parent Font_
=>	R1 =	pointer to full filename
	R2 =	recache flag

This SWI either caches or uncaches a font. This is used when the font file is altered. You should call with R2 = 0, then replace the old file, then call with R2 = 1.DATAs
Font_ScanString  (&400A1)
#Parent Font_
=>	R0 =	initial font handle, 0 for current
	R1 =	pointer to string
	R2 =	<flags=>.flags>
	R3,4 =	(x,y) of mouse click, or max w,h of string
	R5 =	pointer to <block holding spacing, split & bounding box=>.block>
	R6 =	<transformation matrix=>Font_matrix>
	R7 =	length of string

<=	R1 =	pointer to where the scan ended
	R3,4 =	(x,y) of where the scan ended
	R7 =	number of split chars in scanned part of string.

This SWI is used to find various info on a string :

#Tab
	�	How wide is a string?
	 	Use large values for R3,4 and no split character
	�	Given a width, how much of a string will fit?
AND	�	Address of a mouse click?
	 	Use correct width in R3,large value in R4 and (if needed) a split char in the buffer at R5
	�	Graphical position of a caret?
	 	Set R7 to offset into string, use huge values for R3,4, and no split

Registers 0,5,6 and 7 are only used if bits 8,5,6 and 7 are set in R2

If bit 8 of R2 is clear then the current font will be assumed. This call *does not* alter current font, so if you are scanning several sequential lines, and these can contain font shifts, you should call <Font_FutureFont> to find which font handle to pass in R0 the next time.

If bit 20 of R2 is set but there is no split character, then R7 will be used to return the number of non-control characters (codes 32 or greater and not within a control sequence)

Unlike <Font_Paint>, this call only allows millipoints for all coordinates. Convert to/from OS units by dividing/multiplying by 400. (Instead of dividing, you can multiply by (1\<\<18 / 400) and then shift down 18 to get an approximate answer)
#
#Subpage flags
Font_ScanString flags
Bit	Meaning if set
#Line
0-4	0 (reserved)
5	R5 is pointer to <block=>.block>
6	R6 is pointer to <transformation matrix=>Font_matrix>
7	R7 is length of string
8	R0 is initial font handle
9	perform kerning
10	writing direction is Right to Left
11-16	0 (reserved)
17	return nearest caret position (If x offset is less than half way through a char, we don't include this char)
18	return bounding box in R5 (bit 5 must also be set)
19	return updated matrix in R6 (bit 6 must also be set)
20	return number of split chars in R7 (bit 7 must also be set)
21-31	0 (reserved)
#subpage block
Font_ScanString block
Offset	Contents
#Line
0	additional x offset for spaces
4	additional y offset for spaces
8	additional x offset for each letter
12	additional y offset for each letter
16	split character (or -1 for none)
20	returns left of bounding box (if b18 set)
24	returns bottom of bounding box (if b18 set)
28	returns right of bounding box (if b18 set)
32	returns top of bounding box (if b18 set)
DATAFont identifier strings
#Parent Font_FindFont
If the string does not start with '\\' it is assumed to be a font name ({/}i.e.{/} \\F is implicitly prepended). The identifer string consists of a series of qualifiers/value pairs:

#tab
Qualifier	Meaning
#Line
\\F		font identifier (RISC OS 2 old style font name) space/control terminated
\\f		territory number, space, font name (in the current territory's�language and alphabet) control terminated
\\E		encoding identifier control terminated
\\e		territory number, space, encoding name control terminated
\\M		<transformation matrix=>font_matrix>, 6 1/1000th em values as *decimal* signed integers, all {*}6{*} followed by a space. The first 4 are actually interpreted as fixed point fractions of the form &XXXX�XXXX.DATAFont transformation matrices
These are standard 'Draw' <transformation matrices=>Draw_transform>.

If a call does not need the translation values specified ({/}e.g.{/} the control code 28 in <Font_Paint>) then it will use 0 for both translation values.
DATASFont_ReadThresholds  (&40094)
#Parent Font_
=>	R1 =	pointer to <result buffer=>Font_thresholds>

This SWI reads the threshold values used by the Font Manager when painting. The length of table required is one byte for each logical colour used ({/}i.e.{/} 3 + ABS(foreground colour offset) which can be read with <Font_CurrentFont>)DATA�Font_SetThresholds  (&40095)
#Parent Font_
=>	R1 =	pointer to <threshold data=>Font_thresholds>

This SWI sets the threshold values used by the Font Manager when painting. This is unlikely to be needed, because the default should work well.DATA�Font_ReadFontMax  (&4009C)
#Parent Font_
<=	R0 =	FontMax		in bytes
	R1 =	FontMax1	in points
	R2 =	FontMax2	in points
	R3 =	FontMax3	in points
	R4 =	FontMax4	in points
	R5 =	FontMax5	in points
	R6 =	possibly corrupted
	R7 =	possibly corrupted

This SWI reads the current FontMax and FontMax1 - FontMax5 (not the configured values).�The values in R1-R5 should be in pixes * 72 * 16 for RISC OS 2.DATA�Font_ReadFontPrefix  (&4009D)
#Parent Font_
=>	R0 =	font handle
	R1 =	pointer to buffer
	R2 =	length of buffer
<=	R0 =	preserved
	R1 =	pointer to terminating 0 in buffer
	R2 =	free bytes in buffer

This SWI returns the full path to the font data.DATA
Font_ReadFontMetrics  (&4009F)
#Parent Font_
=>	R0 =	font handle
	R1 =	pointer to buffer for <bounding box=>swi_bbox> array, or 0 to read size
	R2 =	pointer to buffer for x width data, or 0 to read size
	R3 =	pointer to buffer for y width data, or 0 to read size
	R4 =	pointer to buffer for misc data, or 0 to read size
	R5 =	pointer to buffer for kerning data, or 0 to read size
	R6 =	0
	R7 =	0

<=	R0 =	<file flags=>.flags>
	R1 =	size of bounding box data, or 0 if not in file
	R2 =	size of x width data, or 0 if not in file
	R3 =	size of y width data, or 0 if not in file
	R4 =	size of <misc data=>.misc>, or 0 if not in file
	R5 =	size of <kerning data=>.kern>, or 0 if not in file
	R6 =	possibly corrupted
	R7 =	possibly corrupted

This SWI reads information in the font's IntMetrics file. Currently it is not permitted on fonts which have had a transformation matrix applied. All values are signed millipoints, unless specificly stated.

Width data is an array of 256 words, bounding box data an array of 256 * 4 words (x0, y0, x1, y1).
# Gerph> Is this still true of fonts with > 256 characters in them ?
#Subpage flags
File flags
1	kern pairs don't have x offsets
2	kern pairs don't have y offsets
3	>255 kern pairs present
0,4-31	undefined (reserved)
#Subpage misc
Miscelaneous IntMetrics data
Offset	Value
#Line
Maximum bounding box
0	x0
2	y0
4	x1
6	y1

8	default x offset
10	default y offset
12	italic h-offset per em (-1000 * TAN (italic angle))
14	underline position (1/256 em)
15	underline thickness (1/256 em, unsigned)
16	cap height
18	X height
20	descender
22	ascender
24	0 (reserved)
#Subpage kern
Kerning data
Kerning information is found by hash table lookup, using the function
    hash table index = (first letter) EOR (second letter ROR 4)
The second letter can be calculated by
    second letter = (first letter EOR hash table index) ROR 4
where both rotates are perfomed 8 bits only.

Data is stored as :

Size	Value
#Line
256 * 4	hash table of offsets to first kern pair with this hash value
4	offset of end of all pairs
4	flags - meaning when bits set:
	0	no bounding boxes
	1	no x offsets
	2	no y offsets
	31	'short' kern pairs
	3-30	undefined (reserved)
?	kern pair data (stored consecutively, in hash function order)

Kern pair data is stored as :

Size	Value
#Line
4	first letter of kern pair
4	x offset (if flag bit 1 clear)
4	y offset (if flag bit 1 clear)

If bit 31 of the flags is set, the kern data is compressed by combining the first two (or only two) words:

bits 0-7	first letter of kern pair
bits 8-31	x or y offset
DATA�Font_SetColourTable  (&400A2)
#Parent Font_
For internal use by ColourTrans only.
Use <ColourTrans_SetFontColours> or <Font_Paint> control sequence 19.DATA]Font_ReadEncodingFilename  (&400A5)
#Parent Font_
=>	R0 =	font handle
	R1 =	pointer to buffer
	R2 =	length of buffer
<=	R0 =	pointer to encoding filename (in buffer)
	R1 =	pointer to terminating 0 in buffer
	R2 =	free bytes in buffer

This SWI returns the filename of the encoding file, primarily of use to PDriverPS. The font manager only uses public encoding files with names of the form
    {/}font_prefix.{/}Encodings{/}.encoding{/}
PDriverPS uses the private encoding files with names of the form
    {/}font_prefix.font_name{/}Encoding
to find the PostScript names of the font's characters.
DATA�Font_ApplyFields  (&400A7)
#Parent Font_
=>	R0 =	pointer to original <font identifier=>Font_identifier>
	R1 =	pointer to fields to add (in font identifier format)
	R2 =	pointer to ouput buffer (0 to return size)
	R3 =	size of output buffer

<=	R0-R2 preserved
	R3 =	free space remaining in output buffer or size of buffer needed

This SWI merges new fields into an font identifier, replacing the values of any existing fields also defined in the fields to add. By adding null fields you can delete an existing field. Fields not present in original identifier are placed in the result after fields present in the original identifier.DATAyFont_CurrentRGB  (&400A3)
#Parent Font_
<=	R0 =	font handle
	R1 =	background colour	(&BBGGRR00)
	R2 =	foreground colour	(&BBGGRR00)
	R3 =	maximum colour offset (0 -> mono, otherwise anti-aliased)

This SWI returns the current colour settings ater calling <Font_Paint>. If the colours were not set using RGB values it will generate the error 'Undefined RGB font colours'DATA�Font_FindField  (&400A6)
#Parent Font_
=>	R1 =	pointer to <font identifier=>Font_identifier>
	R2 =	character code of required qualifer
<=	R1 =	pointer to value following qualifer within string (if present, else preserved)
	R2 =	0 if field not present, otherwise preserved

This SWI returns a pointer to the specifed field with the font string. Note that the F field is space terminated, all others are control-char terminated.DATA�Font_FutureRGB  (&400A4)
#Parent Font_
<=	R0 =	font handle
	R1 =	background colour	(&BBGGRR00)
	R2 =	foreground colour	(&BBGGRR00)
	R3 =	maximum colour offset (0 -> mono, otherwise anti-aliased)

This SWI returns the current colour settings ater calling <Font_ScanString>, <Font_StringWidth>, <Font_StringBBox>, <Font_FindCaret>, <Font_FindCaretJ>. If the colours were not set using RGB values it will generate the error 'Undefined RGB font colours'DATA�Font_DecodeMenu  (&400A0)
#Parent Font_
=>	R0 =	bit 0	set for encoding menu, clear for font menu
	 	bits 1-31	0 (reserved)
	R1 =	pointer to menu definition from <Font_ListFonts>
	R2 =	pointer to menu selections from <Wimp_Poll 9=>Wimp:Wimp_Poll9> 
	R3 =	pointer to buffer (or 0 to return size needed)
	R4 =	size of buffer (unless R3 is 0)

<=	R0 =	preserved
	R1 =	preserved
	R2 =	pointer to rest of menu selelections
	R3 =	preserved
	R4 =	size of buffer required (0 means no font selected, *or* system font selected - check the word at R2 before calling)

#tab
This SWI decodes the font or encoding menu, returning a string with a format dependent on whether the font/encoding names were specifed in a Messages{/}n{/} file in the font directory. If no Messages{/}n{/} file was found (and hence the font manager has found the font names by scanning the directory tree) the name field is absent.

Messages file holds	Returned string
#line
Font id, no name	\\Ffont_id
Font id, name		\\Ffont_id\\fterritory fontname
Encoding, no name	\\Eencoding
Encoding, name		\\Eencoding\\eterritory encoding name

Experimentation suggests that passing in a selection block pointing at System Font will generate an error, rather than set R4 = 0DATAFont_MakeBitmap  (&40099)
#Parent Font_
=>	R1 =	font handle, or pointer to identifier
	R2 =	x points * 16
	R3 =	y points * 16
	R4 =	x dpi
	R5 =	y dpi
	R6 =	<flags=>.flags>

This SWI creates a bitmap file stored in the font's directory, speeding up caching, especially for subpixel positioning.
#Subpage flags
Meaning of bits in R2 when set
0	1 = f9999x9999 (4 bpp), 0 = b9999x9999 (1 bpp)
1	perform horizontal subpixel positioning.
2	perform vertical subpixel positioning.
3	delete old file (do not replace)
4-31	0 (reserved)DATA�Font_SetFontMax  (&4009B)
#Parent Font_
=>	R0 =	new FontMax	in bytes
	R1 =	new FontMax1	in points
	R2 =	new FontMax2	in points
	R3 =	new FontMax3	in points
	R4 =	new FontMax4	in points
	R5 =	new FontMax5	in points
	R6 =	0		reserved
	R7 =	0		reserved

This SWI sets the current FontMax and FontMax1 - FontMax5 (but not the configured values).�The values in R1-R5 should be in pixes * 72 * 16 for RISC OS 2.DATA�Font thresholds
Font thresholds are used by the Font Manager to convert from the 16 anti-alias levels in the font definition to the logical colours available. They are read and set using a table of the form:

Offset	Contents
#Line
0	Foreground colour offset
1	1st threshold value
2	2nd
3	...
n	&FF

For example in a 16 colour mode in the Wimp, background is 0, foreground is 1, foreground colour offset is 6, giving the table:

0	6
1	2
2	4
3	6
4	8
5	10
6	12
7	14
8	&FF
#tab
This causes the mapping from the 16 colours the font is defined in to the 8 available:

	In	Out	Threshold
	  0	0
	  1	0
	  2	1	  2
	  3	1
	  4	2	  4
	  5	2
	  6	3	  6
	  7	3
	  8	4	  8
	  9	4
	10	5	10
	11	5
	12	6	12
	13	6
	14	7	14
	15	7DATA�Font_LookupFont  (&400A8)
#Parent Font_
=>	R0 =	font handle (0 for current handle)
	R1 =	0
	R2 =	0
<=	R0 =	preserved
	R1 =	preserved
	R2 =	characteristics of font
	R3 =	corrupted
	R4 =	corrupted
	R5 =	corrupted
	R6 =	corrupted
	R7 =	corrupted

This SWI returns information about a font as a bitmap in R2.

#tab
bit	meaning when set
#line
0	font is old bitmap format ('x90y45')
1	font is in ROM
8	font is monochrome only
9	font is filled non-zero (rather than even-odd)
2-7,10-31	ignore (reserved)DATA�Font_SwitchOutputToBuffer  (&4009E)
#Parent Font_
=>	R0 =	<flags=>.flags> if R1 >0, else 0
	R1 =	pointer to word aligned buffer or
	 	8	to count buffer space needed
	 	0	to switch to normal output
	 	-1	to read state
<=	R0 =	previous flags
	R1 =	previous buffer pointer + size needed by Draw file structure.

This SWI allows calls to <Font_Paint> to be redirected to build <Draw file=>DrawFile_format> objects in the supplied buffer. R1 returned points at the 0 terminator (it and the new size remaining are not counted in the data generated). Each letter is converted to a filled path object, as are rubout box(es) and underlining. Before calling the buffer should be

Offset	Contents
#Line
0	0
4	size remaining (bytes)
#Subpage flags
Meaning of bits in R0 when set
0	Update R1 but don't actually store anything
1	Apply hints
4	Generate error if bitmapped characters found
2,3,5-31	0 (reserved)DATAGFont_Paint Flags
#Parent Font_Paint
bit	meaning
#Line
0	1 = justify specifed by graphics cursor, 0 = not justified
1	1 = rub-out box specifed by graphics curso, 0 = don't rub-out
4	1 = x and y are in OS, 0 = millipoints
5	justify & rub-out specifed by block in R5 (bit 4 must be clear), 0 = use flags in bits 0,1
6	<Transformation matrix=>Font_matrix> specifed by R6 (bit 4 must be clear)
7	Given string length
8	Given font
9	Kern
10	Right to left
17	Return caret position
18	Return bounding box
19	Return matrix
20	Return split count
Others	Reserved, must be zero

RISC OS 2 only recognises flags in bits 0,1,4

To specify justify using the graphics cursor, first move to right side. To specify a rub-out box using the graphics cursor, first move to lower left and then to upper right of box.

If both, then do justify move last.
DIR$�RH�����(l!RootSG���k����LEDs�SG��������Off�TG���8�{��On�UG���Y���PercentagehVG�����͓Smash�VG�����StartXH���%��ColoursDATAlHourglass
#Parent !Root
#Prefix Hourglass_
<Colours>
<LEDs>
<Off>
<On>
<Percentage>
<Smash>
<Start>
DATA�Hourglass_LEDs  (&406C5)
#Parent Hourglass_
=>	R0 =	EOR word
	R1 =	AND word
<=	R0 =	old LED word

This SWI controls the appearance of two LEDs. Bit 0 controls the LED above the hourglass, and bit 1 the one below.DATA�Hourglass_Off  (&406C1)
#Parent Hourglass_
This decreases the count of times the hourglass has been turned on with <Hourglass_On> or <Hourglass_Start>, and turns it off when it reaches zero. To force it off, use <Hourglass_Smash>.DATA�Hourglass_On  (&406C0)
#Parent Hourglass_
This shedules the hourglass to appear after 1/3 second. To turn off again, use <Hourglass_Off>. To decide the delay yourself, use <Hourglass_Start>.DATA�Hourglass_Percentage  (&406C4)
#Parent Hourglass_
=>	R0 =	percentage

This SWI displays a percentage below the hourglass if R0 is in the range 0 to 99, otherwise it turns percentage display off.DATA�Hourglass_Smash  (&406C2)
#Parent Hourglass_
This SWI turns the hourglass off immediately. Normally you should use <Hourglass_Off> instead.DATAHourglass_Start  (&406C3)
#Parent Hourglass_
=>	R0 =	centi-seconds before startup

This SWI shedules the hourglass to appear after the given delay. To turn off again, use <Hourglass_Off>. A delay of 0 will suppress the hourglass until you call <Hourglass_Off>.DATA�Hourglass_Colours  (&406C6)
#Parent Hourglass_
=>	R0 =	new colour 1
	R1 =	new colour 3
<=	R0 =	old/current colour 1
	R1 =	old/current colour 3

This SWI sets or reads the colours of the hourglass. To read the existing value without changing it, specify the colour as -1. To change the colour, specify it as &00BBGGRR (it's *different* to the ColourTrans palette entries).

Colour 1 default is cyan, colour 3 blue.
DIR$LL�YH���D�0!Root,ZH���)�ControlDATA0IIC
#Parent !Root
#Prefix IIC_
<Control>DATA�IIC_Control  (&240)
#Parent IIC_
=>	R0 =	device address, (bit 0 set to read, clear to write)
	R1 =	pointer to block
	R2 =	size of block (bytes)

Reads from or writes to the specified IIC device ({/}e.g.{/} the clock chip).
DIR$,,@[G����
��P!RootDATAPFSLock
#Parent !Root
#Prefix FSLock_
#Table Columns 2
Version
#EndTable
DIR$��h]H�������ident�^H��� ��""infowordbH����0�'loadexec$dH�����cobjattr�fH���VU� 
objtype�hG���_�A �image_infoblock$kG���<�= yimage_infoword�kH����v�"infoblock�nG����W5��extra_infoword�oH���(e&nopts�pH����� opt4�qH���
"e&opt1sH����Mi&�access_stringDATA�Filing System numbers
#Table Columns 2
0   None
3   ROMFS
5   NetFS
8   ADFS
12  NetPrint
13  Null
14  Printer
15  Serial
17  VDU
18  RawVDU
19  Kbd
20  RawKbd
21  DeskFS
22  C.C. RomFS
23  RamFS
24  RISCiXFS
25  Streamer
26  SCSI
27  Digitiser
28  Scanner
29  MultiFS
33  NFS
37  CDFS
43  DOSFS
46  ResourceFS
47  PipeFS
53  DeviceFS
54  Parallel
56  ArcFS
99  ShareFS
#EndTable
DATA"Filing system information word
Bit	Meaning
#Line
31	Special fields supported
30	Streams are interactive
29	Null-length filenames supported
28	File must be opened
27	Tell FS when flushing
26	FS supports <FSEntry_File 9=>FSEntry_File9>
25	FS supports <FSEntry_Func 20=>FSEntry_Func20>
24	FS supports <FSEntry_Func 18=>FSEntry_Func18>
23	FS supports image filing system extensions
22	Pass & and % where appropriate
21	Directories not required
20	Use Open/GetBytes/Close instead of <FSEntry_File 255=>FSEntry_File255>
19	Use Open/PutBytes/Close instead of <FSEntry_File 0=>FSEntry_File0>
18	Use <FSEntry_Func 9=>FSEntry_Func9> instead of <FSEntry_File>
17	Extra FS information word present
16	FS is read-only
8-15	number of files, or 0 if no limiting factor
0-7	<FS identification no.=>fsys_ident>
DATALoad and Exec address
#Parent OS_File5
If all 12 upper bits of the load address are set :

Load addr		Exec addr
#Line
# N> Hmm. It seems I need 2 {fCode} when I use a tab
# Gerph> Hmm. That's because each part of a tabbed block 
# can have its own style, but you can't use it here,
# because you want the headings in a different style
{fCode}{*}FFF{*}tttcc{f}	{fCode}dddddddd{f}

{fCode}ttt{f} is <filetype=>Filetypes:!Root>
{fCode}ccdddddddd{f} is date

otherwise load and exec address are exactly what they claim to be.
DATAcFile Attributes
Bit	Meaning when set
#Line
0	Read access for you
1	Write access for you
2	-
3	Locked
4	Read access for others
5	Write access for others
6	Hidden (Filer+)
7	Application (Filer+)

If both 6 & 7 set then file is super hidden. The top 24 bits are filing system dependant - <NetFS=>NetFS_timeblock> uses them to store the date.

Bit 2 was used for 'Owner execute only' (BBC ADFS), which means that the file could only be run, not loaded. Archimedes ADFS ignores this, and clears the bit on save, which allows this setting to be circumvented. SJ Research fileservers used bit 2 for 'Private'.
DATA
Object types
#Parent OS_File 5
# Not sure if this is the world's best parent for this page.
# Hmm... I'll live with it :-)
Type	Meaning
#Line
0	Object not found
1	File
2	Directory
3	Image

Image files only exist under RISC OS 3. They are typed files which can be accessed as normal directories, and therefore have qualities of both files and directories. Images may be locked to prevent modification of their entire contents, and deletion will delete the whole tree without checking for locked files within the tree.
DATA�ImageFS information block
#f
# The line above MUST be present to allow ImageEntry_!root to work
Offset	Contents
#Line
&00	ImageFS <information word=>fsys_image_infoword>
&04	ImageFS <filetype=>Filetypes:!Root>
&08	Offset of routine to open files		<ImageEntry_Open>
&0C	Offset of routine to get bytes		<ImageEntry_GetBytes>
&10	Offset of routine to put bytes		<ImageEntry_PutBytes>
&14	Offset of routine to control open files	<ImageEntry_Args>
&18	Offset of routine to close open files	<ImageEntry_Close>
&1C	Offset of routine to do file operations	<ImageEntry_File>
&20	(nothing ?)
&24	Offset of routine to do FS operations	<ImageEntry_Func>
DATAyImage FS information word
Bit	Meaning
#Line
27	Tell FS when flushing buffers

All others reserved and must be 0.
DATAFS information block
#f
# The line above MUST be present to allow FSEntry_!root to work
Offset	Contents
#Line
&00	Offset of filing system name
&04	Offset of filing system startup text, or -1 to use <FSEntry_Func 17=>FSEntry_Func17>
&08	Offset of routine to open files		<FSEntry_Open>
&0C	Offset of routine to get bytes		<FSEntry_GetBytes>
&10	Offset of routine to put bytes		<FSEntry_PutBytes>
&14	Offset of routine to control open files	<FSEntry_Args>
&18	Offset of routine to close open files	<FSEntry_Close>
&1C	Offset of routine to do file operations	<FSEntry_File>
&20	FS <information word=>fsys_infoword>
&24	Offset of routine to do FS operations	<FSEntry_Func>
&28	Offset of routine to do GBPB operations	<FSEntry_GBPB>
&2C	Extra FS <information word=>fsys_extra_infoword>
DATA�Extra filing system information word
#Parent FSEntry_
Bit	Meaning
#Line
0	FS supports FSEntry_Func 34
1	FS should be called to do *Cat
2	FS should be called to do *Ex
3-31	Reserved, must be zero
DATAnOptions
#Parent OS_FSControl10
Option	Set per		Meaning
#Line
0	whole machine	reset all filing systems to defaults
1	filing system	<Filing system messages=>fsys_opt1> on loading, saving, creating
4	disc		<Boot action=>fsys_opt4>

Options 2 & 3 relate to the BBC micro, repectively action to take on detecting tape errors, and setting the tape interblock gap.
DATAFiling system Option 4
#Parent fsys_opts
Option 4 is set separately for each disc. The boot "file" (it can be an application) is falled "!Boot" on most filing systems.

Value	Boot option
#Line
0	no boot
1	*Load boot file
2	*Run boot file
3	*Exec boot file
DATAFiling system Option 1
#Parent fsys_opts
Option 1 is set separately for each filing system. It doesn't work well under RISC OS 3.

Value	Items printed
#Line
0	nothing
1	filename
2	filename, hex address and length
3	filename, (datestamp and length) or (load and exec addresses)
DATA�Access Attribute String
# Was OS_access_string
#Parent FSEntry_Func9
This string is the same as used by the {fCode}*Access{f} command, of the form

  LWR/wr

L	locked against deletion
W	owner write permission
R	owner read permission
w	public write permission
r	public read permission

Case and order within sections is insignificant - owner permissions occur before the '/', public permissions after it.
DIR$���vH���ma��!RootLwG�����ͱCloseFilexG�������FileInfoyH���a�G�Lookup�}H���F�E�MakeMenus�G������ʹmenudefЂH���Y�Eopenfile�E����8�tokenl�H���j�G�GSLookup�H����F�EnumerateTokens|�H���7���CopyErrorx�H���R��ErrorLookup�H������errorblockDATA�MessageTrans
#Parent !Root
#Prefix MessageTrans_
#table columns 3
<CloseFile>
<CopyError>
<EnumerateTokens>
<ErrorLookup>
<FileInfo>
<GSLookup>
<Lookup>
<MakeMenus>
<OpenFile>
#endtable
DATA�MessageTrans_CloseFile  (&41504)
#Parent MessageTrans_
=>	R0 =	pointer to 4-word data structure

This SWI closes the file previously opened with <MessageTrans_OpenFile>.DATAMessageTrans_FileInfo  (&41500)
#Parent MessageTrans_
=>	R1 =	pointer to filename
<=	R0 =	bit 0 set if held in memory
	R2 =	size of buffer needed
	
Returns information about the size required to hold a message file before <MessageTrans_OpenFile> used.DATA�MessageTrans_Lookup  (&41502)
#Parent MessageTrans_
=>	R0 =	pointer to 4-word data structure, or 0 for global messages
	R1 =	pointer to <Token=>messagetrans_token>
	R2 =	pointer to buffer
	R3 =	buffer size
	R4 =	pointer to parameter 0, or 0 if none
	R5 =	pointer to parameter 1, or 0 if none
	R6 =	pointer to parameter 2, or 0 if none
	R7 =	pointer to parameter 3, or 0 if none
<=	R1 =	pointer to token-terminator
	R2 =	result string
	R3 =	size of result

This SWI looks up the token on the message file. If R2 = 0 on entry, you'll get a pointer to a read-only string, and no parameter substitution will be done, also the string will be terminated by 10, and not 0. If R2 != 0, %0 to %3 in the string will be replaced by the strings in R4 to R7. Prior to this call, you must have called <MessageTrans_OpenFile>.

If the token is not found in the message file specified, it will be searched for in the global message file. If R2 = 0 on entry and the file is not stored in your own workspace, then the pointer will become invalid after <Service_MessageFileClosed=>service_5E> is issued - your application must trap this service call so it can re-read pointers.DATA�MessageTrans_MakeMenus  (&41503)
#Parent MessageTrans_
=>	R0 =	pointer to data structure
	R1 =	<menu definition=>messagetrans_menudef>
	R2 =	pointer to destination buffer
	R3 =	Size of buffer
<=	R1 =	pointer to menu data
	R2 =	pointer updated to end of data in buffer
	R3 =	bytes remaining in buffer

This SWI creates a menu structure from a skeleton menu of tokens. If the menu item is writeable and indirected, the corresponding 3 words in the destination buffer should be set to correct values *before* calling this SWI. If the menu item is indirected and not writeable then a pointer into the message file will be stored in the menu structure created. If the message file is held in RMA this pointer (and hence the menu structure) will become invalid after <Service_MessageFileClosed=>service_5E> is issued - your application must trap this service call and delete the menu if it is issued.DATA�Menu definition
0	Token for menu title, or null for no more

n	6 bytes :
	  menu title foreground and frame colour
	  menu title background colour
	  menu work area foreground colour
	  menu work area background colour
	  height of menu items
	  gap between items

n+6	m menu items :
	  Token for menu item
	  Word-align
	  3 Words :
	    Menu flags (bit 7 set for last item)
	    Offset to submenu ( 0 for none)
	    Icon flagsDATAMessageTrans_OpenFile  (&41501)
#Parent MessageTrans_
=>	R0 =	pointer to 4-word data structure
	R1 =	pointer to filename
	R2 =	pointer to buffer for file data, or 0 to use RMA

This SWI opens a message-file. If R2 = 0, then the data-structure in R0 and the filename in R1 both must be in the RMA.

An application may decide that it would like to buffer the file in its own workspace (rather than the RMA) if it needs to be loaded, or use the file directly if it is already in memory.  To do this:

#fCode
#Indent 4
#Wrap off
SYS "<MessageTrans_FileInfo>",,filename$ TO flags%,,size%
IF flags% AND 1 THEN buffer%=0 ELSE buffer%=FNalloc(size%)
SYS "<OS_Module>",6,,,17+LENfilename$ TO ,,filedesc%
$(filedesc%+16)=filename$
SYS "MessageTrans_OpenFile",filedesc%,filedesc%+16,buffer%
#Wrap
#f
#Indent

where FNalloc() allocates a buffer of a given size, by using the <Wimp_SlotSize=>Wimp:Wimp_SlotSize> or "END=" command.  Note that in fact the filename and file descriptor only need to be in the RMA if R2=0 on entry to MessageTrans_OpenFile.DATA�Token
Token is terminated by any control char, space, "," or ")".
It can also be of the form token:default terminated by \\0DATA�MessageTrans_GSLookup  (&41507)
#Parent MessageTrans_
=>	R0 =	pointer to 4-word data structure, or 0 for global messages
	R1 =	pointer to <Token=>messagetrans_token>
	R2 =	pointer to buffer
	R3 =	buffer size
	R4 =	pointer to parameter 0, or 0 if none
	R5 =	pointer to parameter 1, or 0 if none
	R6 =	pointer to parameter 2, or 0 if none
	R7 =	pointer to parameter 3, or 0 if none
<=	R1 =	pointer to token-terminator
	R2 =	result string
	R3 =	size of result

This SWI is like <MessageTrans_LookUp> except that the result is then <GSTrans'd=>OS_GSTrans> before return. If R2 = 0 on entry this call is identical to <MessageTrans_LookUp>.DATA�MessageTrans_EnumerateTokens  (&41505)
#Parent MessageTrans_
=>	R0 =	pointer to 4-word data structure (not 0)
	R1 =	pointer to token (possibly <wildcarded=>.wildcard>)
	R2 =	pointer to buffer for result
	R3 =	size of buffer
	R4 =	index (0 for first time)
<=	R0, R1 preserved
	R2 =	0 if no more matching tokens, else preserved
	R3 =	length of result excluding terminator
	R4 =	next index

This SWI looks up *tokens* that match the given wildcarded token specification. The token returned in the buffer has the same terminator as the wildcard in R1.
#subpage wildcard
MessageTrans token wildcards
?	match 1 character
*	match 0 or more charactersDATA�MessageTrans_CopyError  (&41508)
#Parent MessageTrans_
=>	R0 =	pointer to <error block=>swi_errorblock>
<=	R0 =	pointer to error buffer used

This call copies an error message to one of the internal buffers used by <MessageTrans_ErrorLookup>.
DATA�MessageTrans_ErrorLookup  (&41506)
#Parent MessageTrans_
=>	R{*}0{*} =	pointer to <error block=>MessageTrans_errorblock>
	R{*}1{*} =	pointer to 4-word data structure, or 0 for global messages
	R2 =	pointer to buffer for result (0 to use internal buffer)
	R3 =	buffer size
	R4 =	pointer to parameter 0, or 0 if none
	R5 =	pointer to parameter 1, or 0 if none
	R6 =	pointer to parameter 2, or 0 if none
	R7 =	pointer to parameter 3, or 0 if none
<=	R0 =	pointer to error buffer used
	V set

This SWI is like <MessageTrans_Lookup> except that it is passed a token in an error block in {*}R0{*}. The data structure is in {*}R1{*}, not R0. If the token is not found in the message file specified, it will be searched for in the global message file. If R2 = 0 on entry MessageTrans will use an internal buffer. There are 2 for calls from IRQ routines, and 10 for forground processes, which it cycles through.

To check that your error message was looked up (rather than MessageTrans itself reporting an error) verify that the error number in the returned block is the same as that passed in.
# Does this mean that 11 taskwindows can have a race condition?
DATA�MessageTrans_ErrorLookup block
#Parent MessageTrans_ErrorLookup
Offset	Value
#line
0	Error number (as in a <SWI error block=>swi_errorblock>)
4	null terminated <Token=>messagetrans_token>
DIR$LL�H����(?!RootP�H���eSm'�VersionDATA?FPEmulator
#Parent !Root
#Prefix FPEmulator_
<Version>
DATA�FPEmulator_Version  (&40480)
#Parent FPEmulator_
<=	R0 =	version of FPEmulator * 100

This SWI returns the version of the floating point emulator in use.

#tab
Note:	The PRMs incorrectly claim this to be in BCD.
DIR$���G���#�> �Open��G����A �Close��G����A !Root��H���i�� �Func8�H����	h&�Func8(�H���	��+�Args��H������+�File�H���H�&Func14,�H�����&func15L�H���� 1Func21��H���� OFunc22��H����\� �Func25P�H���� �Func264�H����� 4Func27h�H���q� 5Func28��H���� �Func29\�H����� kFunc30��H����� 7Func31�H���~�g&bFunc32d�H���R��GetBytesD�H����]�OPutBytesDATA�ImageEntry_Open
#Parent ImageEntry_
=>	R1 =	pointer to filename
	R3 =	FileSwitch file handle which will be allocated
	R6 =	file handle of image containing object

<=	R0 =	<file information word=>.fileinfo>
	R1 =	internal file handle, or 0 if unable to open
	R2 =	buffer for FileSwitch to use (powers of 2 from 64 to 1024)
	R3 =	file extent
	R4 =	space allocated to file (multiple of R2)
	
This entry point is called when an attempt is made to access a file inside an image. The internal file handle will be referred to by FileSwitch in subsequent file accesses if the file was successfully opened.
#
#Subpage fileinfo
File information word (images)
Bit	Meaning
#Line
31	Writes are allowed
30	Reads are allowed
DATA�ImageEntry_Close
#Parent ImageEntry_
=>	R1 =	internal file handle returned by <ImageEntry_Open>
	R2 =	new load address of file
	R3 =	new exec address of file

This entry point is called when files are being closed.
DATAImageEntry - Image filing system entry points
# This page
#Parent !Root
Image filing system entry points are defined by the image filing system information block :

#fH4
#Include fsys_image_infoblock

To create an image filing system, use <OS_FSControl 35=>OS_FSControl35>.DATA�ImageEntry_Func
#Parent ImageEntry_
=>	R0 =	<reason code=>.reason>
	R1 =	pointer to filename
	others dependant on call

This entry point is called for operations on the filing system in general.
#
#Subpage reason
ImageEntry_Func reason codes
Reason	Meaning
#Line
8	<Rename object=>ImageEntry_Func8>
14	<Read directory entries=>ImageEntry_Func14>
15	<Read directory entries and info=>ImageEntry_Func15>
21	<Notification of a new image=>ImageEntry_Func21>
22	<Notification of image file closing=>ImageEntry_Func22>
25	<Read defect list=>ImageEntry_Func25>
26	<Add a defect=>ImageEntry_Func26>
27	<Read boot option=>ImageEntry_Func27>
28	<Write boot option=>ImageEntry_Func28>
29	<Read used space map=>ImageEntry_Func29>
30	<Read free space map=>ImageEntry_Func30>
31	<Name image=>ImageEntry_Func31>
32	<Stamp image=>ImageEntry_Func32>

Other reasons are not used for ImageEntry calls (FSEntry only).
DATA�ImageEntry_Func 8
#Parent ImageEntry_Func
=>	R0 =	8 (Rename object)
	R1 =	pointer to original filename
	R2 =	pointer to new filename
	R6 =	<image filing system's handle=>ImageEntry_Func21>

This call is made to rename an object.
DIR$����G���@B h!Rootd�H����23��G����2@ �4��G����@ �6<�G���ܟ@ G7��G�����@ �8p�G�����@ 9DATAhImageEntry_Args
#Parent ImageEntry_
=>	R0 =	<reason code=>.reason>
	R1 =	internal file handle returned by <ImageEntry_Open>
	others dependant on call

This entry point is called when control operations are performed on open files.
#
#Subpage reason
ImageEntry_Args reason codes
Reason	Meaning
#Line
3	<Write file extent=>ImageEntry_Args3>
4	<Read size allocated to file=>ImageEntry_Args4>
6	<Flush modified data=>ImageEntry_Args6>
7	<Ensure file size=>ImageEntry_Args7>
8	<Zero pad file=>ImageEntry_Args8>
9	<Read datastamp=>ImageEntry_Args9>

Other reasons are not used for ImageEntry calls (FSEntry only).
DATA2ImageEntry_Args 3
=>	R0 =	3 (Write file extent)
	R1 =	internal file handle returned by <ImageEntry_Open>
	R2 =	new file extent

This call is made when FileSwitch needs to extend a file beyond its current length. On systems with no concept of extents (eg streams) this should *not* return an error.
DATA�ImageEntry_Args 4
=>	R0 =	4 (Read space allocated)
	R1 =	internal file handle returned by <ImageEntry_Open>
<=	R2 =	size allocated to the file

This call is made when FileSwitch wishes to find the actual length of a file.
DATA�ImageEntry_Args 6
=>	R0 =	6 (Flush modified data)
	R1 =	internal file handle returned by <ImageEntry_Open>
<=	R2 =	load address of file, or 0 if not possible
	R3 =	exec address of file, or 0 if not possible

This call is made when FileSwitch wants you to store all cached data. This will only be called if bit 27 of the <information word=>fsys_image_infoword> is set.

The load and exec addresses are used for purposes of date stamping.DATAGImageEntry_Args 7
=>	R0 =	7 (Ensure file size)
	R1 =	internal file handle returned by <ImageEntry_Open>
	R2 =	size of file
<=	R2 =	size actually ensured

This call is made to ensure that a file is of a particular size. Space should be reserved, but it is not required to be initialised. This is meaningless on streams.
DATA�ImageEntry_Args 8
=>	R0 =	8 (Zero pad file)
	R1 =	internal file handle returned by <ImageEntry_Open>
	R2 =	offset at which to write
	R3 =	number of bytes to write

This call is made to pad a file with zeroes to initialise it.
DATAImageEntry_Args 9
=>	R0 =	9 (Read file datestamp)
	R1 =	internal file handle returned by <ImageEntry_Open>
<=	R2 =	load address of file, or 0 if not possible
	R3 =	exec address of file, or 0 if not possible

This call is made to read the datestamp of an open file.
DIR$��t�G���5�w)W!RooṱG�������0��H���IUg&\1�H����Yg&�5��H����[g&a6 �H����eg&�7��H���ig&~80�H���VWg&�10DATAWImageEntry_File
#Parent ImageEntry_
=>	R0 =	<reason code=>.reason>
	R1 =	pointer to filename
	others dependant on call

This entry point is called for operations on whole files.
#
#Subpage reason
ImageEntry_File reason codes
Reason	Meaning
#Line
0	<Save file=>ImageEntry_File0>
1	<Write catalogue information=>ImageEntry_File1>
5	<Read catalogue information=>ImageEntry_File5>
6	<Delete object=>ImageEntry_File6>
7	<Create file=>ImageEntry_File7>
8	<Create directory=>ImageEntry_File8>
10	<Read block size=>ImageEntry_File10>

Other reasons are not used for ImageEntry calls (FSEntry only).
DATA�ImageEntry_File 0
#Parent ImageEntry_File
=>	R0 =	0 (Save file)
	R1 =	pointer to filename
	R2 =	<load address=>fsys_loadexec> of file
	R3 =	<exec address=>fsys_loadexec> of file
	R4 =	pointer to start of buffer
	R5 =	pointer to byte after end of buffer
	R6 =	handle of image file
<=	R6 =	pointer to leafname for printing *OPT 1 info

This call is made to save a block of memory as a file. The buffer in which R6 exists need not exist for long.
DATA\ImageEntry_File 1
#Parent ImageEntry_File
=>	R0 =	1 (Write catalogue information)
	R1 =	pointer to filename
	R2 =	<load address=>fsys_loadexec> of file
	R3 =	<exec address=>fsys_loadexec> of file
	R4 =	new <attributes=>fsys_objattr> of file
	R6 =	handle of image file

This call is made to set the catalogue information about a given file.
DATA�ImageEntry_File 5
#Parent ImageEntry_File
=>	R0 =	5 (Read catalogue information)
	R1 =	pointer to filename
	R6 =	handle of image file

<=	R0 =	<object type=>fsys_objtype>
	R2 =	<load address=>fsys_loadexec> of file
	R3 =	<exec address=>fsys_loadexec> of file
	R4 =	length of file
	R5 =	<attributes=>fsys_objattr> of file
	R6 preserved

This call is made to read the catalogue information about a given file.

The object type 'Image' must not be returned.
DATAaImageEntry_File 6
#Parent ImageEntry_File
=>	R0 =	6 (Delete object)
	R1 =	pointer to filename
	R6 =	handle of image file

<=	R0 =	<object type=>fsys_objtype>
	R2 =	<load address=>fsys_loadexec> of file
	R3 =	<exec address=>fsys_loadexec> of file
	R4 =	length of file
	R5 =	<attributes=>fsys_objattr> of file

This call is made to delete a file.
DATA�ImageEntry_File 7
#Parent ImageEntry_File
=>	R0 =	7 (Create file)
	R1 =	pointer to filename
	R2 =	<load address=>fsys_loadexec> of file
	R3 =	<exec address=>fsys_loadexec> of file
	R4 =	start address in memory
	R5 =	byte after end address in memory
	R6 =	handle of image file

This call is made to create a file. R4 and R5 are used to calculate the length of the file and no data is stored.
DATA~ImageEntry_File 8
#Parent ImageEntry_File
=>	R0 =	8 (Create directory)
	R1 =	pointer to filename
	R2 =	<load address=>fsys_loadexec> of file
	R3 =	<exec address=>fsys_loadexec> of file
	R4 =	number of entries, or 0 for default
	R6 =	handle of image file

This call is made to create a directory. R4 and R5 are used to calculate the length of the file and no data is stored.
DATA�ImageEntry_File 10
#Parent ImageEntry_File
=>	R0 =	10 (Read block size)
	R1 =	pointer to filename
<=	R2 =	natural block size of file

This call is made to read the natural block size of a file, see <ImageEntry_Open>.
DATAImageEntry_Func 14
#Parent ImageEntry_Func
=>	R0 =	14 (Read directory entries)
	R1 =	pointer to (wilcarded) directory name
	R2 =	pointer to buffer
	R3 =	number of objects to read
	R4 =	where to start, 0 for first time
	R5 =	length of buffer
	R6 =	<image filing system's handle=>ImageEntry_Func21>

<=	R3 =	number of objects read
	R4 =	where to continue, or -1 for no more

This call should fill the buffer in R2 with null terminated leaf names of entries in the specified directory, or the current directory if the name is null. The length of the buffer validated depends on which OS_GBPB SWI causes this call:

#Tab
<OS_GBPB 8=>OS_GBPB8>	11 * R3 bytes
<OS_GBPB 9=>OS_GBPB9>	R5 bytes

and there is no way to tell which is the case. :-(

Only count leaf names that fit completely into the buffer. Return an error if the cataloged object is not found or a file, but return valid with R3=0, R4\<>1 for buffer overflow or more names to read, R3=0,R4=-1 if the previous call didn't detect the end but you now find that there are no more names.
DATAImageEntry_Func 15
#Parent ImageEntry_Func
=>	R0 =	15 (Read directory entries and information)
	R1 =	pointer to (wilcarded) directory name
	R2 =	pointer to buffer
	R3 =	number of objects to read
	R4 =	where to start, 0 for first time
	R5 =	length of buffer
	R6 =	<image filing system's handle=>ImageEntry_Func21>

<=	R3 =	number of objects read
	R4 =	where to continue, or -1 for no more

This call should fill the buffer in R2 with entries in <OS_GBPB 10 format=>OS_GBPB10buffer>.

Only count leaf names that will fit completely into the buffer. Return an error if the cataloged object is not found or a file, but return valid with R3=0, R4\<>1 for buffer overflow or more names to read, R3=0, R4=-1 if the previous call didn't detect the end but you now find that there are no more names.
DATA1ImageEntry_Func 21
#Parent ImageEntry_Func
=>	R0 =	21 (Notification of new image)
	R1 =	fileswitch handle for the file
	R2 =	buffer size for file, or 0 if uknown

<=	R1 =	image filing system's handle for image

This call is made to notify your filing system that FileSwitch would like it to handle a new image. The image should be marked as 'stamp on next update' (use <OS_Args 8=>OS_Args008> to inform the host filing system whenever it and its <cycle ID=>FileCore_cycleid> are updated). The buffer size should be treated as a hint to the sector size.
DATAOImageEntry_Func 22
#Parent ImageEntry_Func
=>	R0 =	22 (Notification of image closure)
	R1 =	<image filing system's handle=>ImageEntry_Func21>

This call is made to notify your filing system that FileSwitch is about to close the image. All files will already be closed - this call is made to allow you to write out cached data.
DATA�ImageEntry_Func 25
#Parent ImageEntry_Func
=>	R0 =	25 (Read defect list)
	R2 =	pointer to buffer
	R5 =	length of buffer
	R6 =	<image filing system's handle=>ImageEntry_Func21>

This call fills the buffer with the defect list of an image. The buffer is filled with words giving byte offsets of defects, terminated by &20000000. It implements <OS_FSControl 41=>OS_FSControl41>.
DATA�ImageEntry_Func 26
#Parent ImageEntry_Func
=>	R0 =	26 (Add a defect)
	R2 =	byte offset to start of defect
	R6 =	<image filing system's handle=>ImageEntry_Func21>

This call implements <OS_FSControl 42=>OS_FSControl42>.
DATA4ImageEntry_Func 27
#Parent ImageEntry_Func
=>	R0 =	27 (Read boot option)
	R1 =	pointer to name of any object on image
	R6 =	<image filing system's handle=>ImageEntry_Func21>

<=	R2 =	<boot option=>fsys_opt4>

This call reads the boot option of a disc, implementing <OS_FSControl 47=>OS_FSControl47>.
DATA5ImageEntry_Func 28
#Parent ImageEntry_Func
=>	R0 =	28 (Write boot option)
	R1 =	pointer to name of any object on image
	R2 =	new <boot option=>fsys_opt4>
	R6 =	<image filing system's handle=>ImageEntry_Func21>

This call sets the boot option of a disc, implementing <OS_FSControl 48=>OS_FSControl47>.
DATA�ImageEntry_Func 29
#Parent ImageEntry_Func
=>	R0 =	29 (Read used space map)
	R1 =	pointer to name of any object on image
	R2 =	pointer to buffer
	R5 =	size of buffer
	R6 =	<image filing system's handle=>ImageEntry_Func21>

This call reads the used space map of an image, implementing <OS_FSControl 46=>OS_FSControl46>. The buffer is pre-filled with 0s - you must fill it with 1s for used blocks, to the limit of the image/the buffer.
DATAkImageEntry_Func 30
#Parent ImageEntry_Func
=>	R0 =	30 (Read free space)
	R1 =	pointer to name of any object on image
	R6 =	<image filing system's handle=>ImageEntry_Func21>

<=	R0 =	free space
	R1 =	size of largest object that can be created.
	R2 =	size of disc

This call reads the free space of an image, implementing <OS_FSControl 49=>OS_FSControl49>.
DATA7ImageEntry_Func 31
#Parent ImageEntry_Func
=>	R0 =	31 (Name image)
	R1 =	pointer to name of any object on image
	R2 =	pointer to new *disc name* for image
	R6 =	<image filing system's handle=>ImageEntry_Func21>

This call sets the disc name for an image, implementing <OS_FSControl 50=>OS_FSControl50>.
DATAbImageEntry_Func 32
#Parent ImageEntry_Func
=>	R0 =	32 (Stamp image)
	R1 =	pointer to name of any object on image
	R2 =	0 (stamp when updated)
	 	1 (stamp now)
	R6 =	<image filing system's handle=>ImageEntry_Func21>

This call requests that the <cycle ID=>FileCore_cycleid> of the image be updated, implementing <OS_FSControl 51=>OS_FSControl51>.
DATA�ImageEntry_GetBytes
#Parent ImageEntry_
=>	R1 =	internal file handle returned by <ImageEntry_Open>
	R2 =	pointer to buffer to read into
	R3 =	length to read
	R4 =	offset from which to read
<=	all preserved

This entry point is called when data is needed to be read from a file for which FileSwitch has no buffered data. This will not be performed on the initial open, but only on subsequent access to the file.

Memory addresses are *not* guaranteed to be word aligned.
DATAOImageEntry_PutBytes
#Parent ImageEntry_
=>	R1 =	internal file handle returned by <ImageEntry_Open>
	R2 =	pointer to buffer to write from
	R3 =	length to write
	R4 =	offset at which to write
<=	all preserved

This entry point is called when data is written to an image. Memory addresses are *not* guaranteed to be word aligned.
DIR$��L�H�����X!Root��H���Y�>�DescribeDiscT�H�����>�DiscOp��H����s��Drives��H���u��FreeSpaceDATAXRamFS
#Prefix RamFS_
#Parent !Root
<DescribeDisc>
<DiscOp>
<Drives>
<FreeSpace>
DATA�RamFS_DescribeDisc  (&40785)
#Parent RamFS_
This SWI calls <FileCore_DescribeDisc>, after first setting R8 to point to the FileCore instance private word for RamFS. 
DATA�RamFS_DiscOp  (&40780)
#Parent RamFS_
This SWI calls <FileCore_DiscOp>, after first setting R8 to point to the FileCore instance private word for RamFS.
DATA�RamFS_Drives  (&40782)
#Parent RamFS_
This SWI calls <FileCore_Drives>, after first setting R8 to point to the FileCore instance private word for RamFS.
DATA�RamFS_FreeSpace  (&40783)
#Parent RamFS_
This SWI calls <FileCore_FreeSpace>, after first setting R8 to point to the FileCore instance private word for RamFS.
DIR$p
p
��H���u�z+a8D�H����ty+�53��H���Wxy+�B7��H����y+�B9��H���t�y+!7C��H�����ug380380�H���#Fy+�28��H���KIy+�290�H����Ly+*2a\H���|^y+�42H����
z+Vindex`H����y+173�H���{�y+X8c�H���iOz+�82�H����5z+�48TH����yy+�56�H�����y+�5EdH���A�y+�83�H�����y+�84�H�����y+�8A�H����z+�8B H����y+�5B�H��� yy+�55� H�����y+59�!H����y+�5a�"H��� �y+�5F(#H���r�y+�60�&H���(y+04)H����)y+�06*H����/y+�07�+H����3y+09�,H����0y+=08.H����4y+90BH/H����5y+m0C�0H����Cy+�12�1H����Dy+627�3H���E\y+40�4H���9�mY4145H���'_y++44`6H���cy+�46X7H���8dy+�479H����iy+49,>H����jy+@4Al?H���~ky+O4B�DH���?ly+F4CFH����ly+�4D�HH���ny+
4F�IH���|ny+Q50HPH���oy+�51(RH����oy+�52�TH���{vy+D54VH���|zy+57WH���ȏy+5C<YH����y+�5D�YH���s�y+�64�ZH�����y+�65�[H�����y+#68�]H���T�y+�6A�cH���P�y+�6E�dH����y+�6FDeH�����y+�758fH����y+�76lH����y+w78|pH���οy+�7AqH�����y+7B(rH�����y+67D`sH�����y+K7E�tH�����y+27F�uH���'�y+�80pvH����y+�858wH�����y+886pxH���K�y+�87LyH�����y+�88zH�����y+�89�{H������+�43�H���zAy+�11��H����_y+'45БH����9y+�10800ĔH����:y+�10801��H���?y+�10802p�H����y+81��H���=z+�4EH�H���/�y+�66,�H�����y+�67ȝH���[�y+�69��H�����y+'6B��H�����y+	6CȫH�����y+K6D�H����y+[70p�H���f�y+�71d�H����y+)72��H����y+�79x�H����`y+�345540(�H����ay+^345541DATAaService_EnumerateScreenModes (&8D)
#parent Service_index
=>	R1 =	&8D (service number)
	R2 =	number of modes to skip
	R3 =	monitor type
	R4 =	memory bandwidth available (in bytes/sec)
	R5 =	total amount of video RAM in system (in bytes)
	R6 =	pointer to <block to return data=>.block>, or 0 to just count entries
	R7 =	size of block (in bytes) if R6\<>0, or 0 if R6=0

<=	R1 =	0 if claimed (further valid modes are available, but would not fit in the block); else preserved
	R2 =	-(number of modes filled in)
	R3 - R5 preserved
	R6 =	pointer to byte after last one filled in, or preserved if 0 on entry
	R7 =	amount of unused space in block, or -(amount of space need in block) if counting

This service enumerates the available screen modes. Modules return information on all modes they provide that work on the specified monitor type and which require no more than the specified memory bandwidth and video memory.

<OS_ScreenMode 2=>os_screenmode2> provides a front-end for applications; you should use it rather than issuing this service call yourself.

By setting R6 and R7 to zero, clients can find the amount of space required to hold all the returned modes; they can then issue the call again to actually read the information. Alternatively, clients can use a fixed size buffer, and repeatedly issue the call until it is no longer claimed.
When using this method, R2 on entry - the number of modes to skip this iteration - should be set to: (previous R2 on entry) - (R2 on exit)

Click <here=>.coding> for details about writing extension modules.
#
#subpage block
Enumerate screen modes block
Offset	Value
#Line
0	size of entry in bytes (24 for this format)
4	<mode provider flags=>.providerflags>
8	x-resolution (in pixels)
12	y-resolution (in pixels)
16	pixel depth (as in mode selector)
20	frame rate (in Hz, to nearest integer)
24	mode name, null terminated, and then padded with nulls until it is word aligned. (For unnamed modes this will simply be a single word whose value is 0).
#
#Subpage providerflags
Mode provider flags
Bit	Contents
0	1
1-7	mode info format specifier (zero for this format)
8-31	additional mode info flags (must be zero)

Future modules may use different mode info formats, therefore callers should check bits 0-7 of the mode provider flags before extracting the other information in this block. If the caller doesn't recognise the mode info format for an entry, then it can skip the entry by using the size field at offset 0. For format checking purposes, bits 8-31 should be ignored.
#
#Subpage coding
Providing extension screen modes
Mode-providing modules that wish to respond to this service call should use this algorithm:

#fCode
For each mode that they want to return
#Indent 2
If R2 > 0 Then
#Indent 4
do nothing, i.e. skip it
#Indent 2
Else
#Indent 4
If R6\<>0 Then
#Indent 6
(enumeration case - filling in block)
If R7 >= entrysize Then
#Indent 8
store entry at R6
R6 += entrysize
#Indent 6
Else
#Indent 8
(not enough space for next mode)
R1 = 0 (Service_Serviced)
Return (service call claimed)
#Indent 6
EndIf
#Indent 4
EndIf
R7 -= entrysize
#Indent 2
EndIf
R2 -= 1
#Indent 0
Next
Return (service call passed on)
DATA�Service_WimpCloseDown (&53)
#Parent Service_index
=>	R0 =	0 if closing down, or \> 0 if starting new task
	R1 =	&53 (service number)
	R2 =	task handle

<=	R0 preserved, or set to <error block=>swi_errorblock> to stop start up

This service is called when a task exits using <Wimp_CloseDown=>Wimp:Wimp_CloseDown>, or when <Wimp_Initialise=>Wimp:Wimp_Initialise> is called from within an task that is already initialised. If a task exits without calling Wimp_CloseDown, or if an error occurs and the task does not trap it then the Wimp will call this service so that it still has a chance to shut any jobs it may have active currently.

If the 'starting task' form of this service is called then the usual response is to return an error similar to 'Wimp is currently active' (the command line does this) in R0 when returning.

The DDEUtils module uses this service to trap when a task for which a prefix has been set is exiting.
DATA�Service_UKCompression (&B7)
#Parent service_index
=>	R0 =	<sub-reason=>.subreason>
	R1 =	&B7 (service number)
	R2 =	<load address=>fsys_loadexec>
	R3 =	size
	R4 =	<execute address=>fsys_loadexec>
	R5 =	filename (not canonicalised)

<=	R1 =	0 if claimed (all changes have been performed); else preserved
	R3 =	new size
	R4 =	new execute address

This service is used to provide patches for RISC OS 3.7 where required. It is called when an <Absolute=>FileTypes:FF8> file is run. Only if the file does not contain an AIF header will sub-reason 0 be called. After patching <OS_SynchroniseCodeAreas> will be called.
#
#SubPage subreason
UKCompression sub-reasons
Reason	Meaning
#Line
0	First pass - unsqueeze
1	Second pass - patch
others	reserved
DATA�Service_ModulePreInit (&B9)
#Parent Service_index
=>	R0 =	module address
	R1 =	&B9 (service number)
	R2 =	module length
<=	R1 preserved

This service is called just before being initialised after being loaded.
DATA!Service_DesktopWelcome (&7C)
#Parent Service_index
=>	R1 =	&7C (service number)
<=	R1 =	0 to claim, preserved otherwise

This service is issued by the 'Desktop' module before it displays the startup banner. If the service is claimed then the standard banner will not be displayed.
DATAgSoundFile_IdentifySoundFile  (&80380)
#Parent Service_index
=>	R0 =	<reason code=>.reasons>
	R1 =	&80380 (service number)
	R2 =	sound stream handle
	R4 =	pointer to <format block=>.formatblk>
<=	R0 =	0, or error if failed if recognised; preserved otherwise
	R1 =	0 if recognised; preserved otherwise
	R4 =	updated block, if recognised

This service is used to identify the style of sound file passed to it from its header. The service also allows you to provide special decoding routines for it.
#Subpage reasons
IdentifySoundFile reasons
Reason	Meaning
#Line
0	File has not been identified
1	File is a Microsoft WAV file of an unrecognised format
others	reserved
#Subpage formatflags
SoundFile_IdentifySoundFile format flags
Bit	Meaning if set
0	Data is signed
1	Data is in stereo
2	?
#Subpage formatblk
SoundFile_IdentifySoundFile block in r4
Offset	Contents
#Line
0	<flags=>.formatflags>
4	<Filetype=>Filetypes:!Root>
# &FB1      = wav file
# &20434F56 = VOC
# &20205541 = AU
# &58564328 = 8SVX
# &6F697350 = Psion
# These seem to be space passed ASCII versions of the filetype
8	bits per sample
9	number of channels
10	sample period in microseconds
11	interleave format
12	<Sound data format=>.soundformats>
16	Sample rate, shifted up 10
20	Number of samples
24	Sound data offset in file
28	Sound data length
32	?
36	?
40	?
44	pointer to something?
128	name for sound format
152	name for compression style
172	comments ?
# #Subpage blockr2
# SoundFile_Something block in r2
# Offset	Contents
# #Line
# 0	flags
# 4	current position in file
# 8	pointer to file buffer
# 12	buffer length
# 16	file handle
# 20	pointer to filename
DATA�Service_UKConfig (&28)
#Parent Service_index
=>	R0 =	pointer to command tail, or 0 for syntax line
	R1 =	&28 (service number)
<=	R0 =	<error code=>.errors>
	R1 =	0 to claim (option recognised), preserved otherwise

This service is issued when a *Configure command is issued with an unknown parameter. You should use the <module command table=>OS_Module_ComTable> to trap specific configure options in preference to this service.
#Subpage errors
UKConfig error codes
Code	Meaning
#Line
\<0	no error
0	Bad {fCode}*Configure{f} option
1	Numeric parameter needed
2	Parameter too large
3	Too many parameters
\>3	pointer to <error block=>swi_errorblock>
DATA�Service_UKStatus (&29)
#Parent Service_index
=>	R0 =	pointer to command tail, or 0 if none given
	R1 =	&29 (service number)
<=	R0 preserved
	R1 =	0 to claim (option recognised), preserved otherwise

This service is issued when a *Status command is issued. You should use the <module command table=>OS_Module_ComTable> to trap specific status options in preference to this service.
DATA*Service_NewApplication (&2A)
#Parent Service_index
=>	R1 =	&2A (service number)
<=	R1 =	0 to claim (prevents application starting), preserved otherwise

This service is issued when a new application is about to be started. Usually this occurs after a *Go, *RMRun or *Run operation. If you provide <another means of starting an application=>.another> that does not include one of these you should issue this Service and act accordingly.
#Subpage another
NewApplication: Another means of starting an application
Whilst this is pretty unlikely, it may in future be possible to trasmit your application to another computer via a network link for execution. As such the code would have been executed directly and not through the 'standard' channels. Such a method would require the use of this Service call.DATA�Service_LookupFiletype (&42)
#Parent Service_Index
=>	R1 =	&42 (service number)
	R2 =	<filetype=>Filetypes:!Root>
<=	R1 =	0 to claim (filetype known), preserved otherwise
	R2 =	first four characters, if known
	R3 =	last found characters, if known

This service is issued when a filetype lookup in the File$Type_### variable fails. You probably shouldn't be using this service as the system variables are more useful.
DATAVService calls
#Parent OS_
# I'd like to take this opportunity to thank Nicholas Clark for a large number
# of these service definitions.
#Table Columns 3
00 Call claimed
04 <Unknown command=>Service_04>
06 <Error has occured=>Service_06>
07 <Unknown OS_Byte=>Service_07>
08 <Unknown OS_Word=>Service_08>
09 <*Help called=>Service_09>
0B <Release FIQ=>Service_0B>
0C <Claim FIQ=>Service_0C>
11 <MEMC remap warning=>Service_11>
12 <Start a FS (old)=>Service_12>
18 Service_PostHelp
27 <Post-Reset=>Service_27>
28 <Unknown *Configure=>Service_28>
29 <Unknown *Status=>Service_29>
2A <New application=>Service_2A>
40 <FS re-init=>Service_40>
41 <PDriver print=>Service_41>
42 <Lookup filetype=>Service_42>
43 <International service=>Service_43>
44 <Keyboard handler=>Service_44>
45 <Pre-Reset=>Service_45>
46 <Post-mode change=>Service_46>
47 <Claim background FIQ=>Service_47>
48 <Econet reallocate ports=>Service_48>
49 <Start Wimp=>Service_49>
4A <Started Wimp=>Service_4A>
4B <Start Filer=>Service_4B>
4C <Started Filer=>Service_4C>
4D <Pre-mode change=>Service_4D>
4E <Memory Moved=>Service_4E>
4F <Filer is dying=>Service_4F>
50 <Mode extension=>Service_50>
51 <Mode translation=>Service_51>
52 <Mouse trap=>Service_52>
53 <Wimp_Closedown=>Service_53>
54 <Sound=>Service_54>
55 <*Logon/*Bye (NetFS)=>Service_55>
56 <Econet dying=>Service_56>
57 <Wimp ReportError=>Service_57>
58 Service_MIDI
59 <ResourceFS started=>Service_59>
5A <ResourceFS dying=>Service_5A>
5B <ColourTrans calibration changed=>Service_5B>
5C <Wimp SaveDesktop=>Service_5C>
5D <Wimp Palette=>Service_5D>
5E <MessageTrans file closed=>Service_5E>
5F <NetFS dying=>Service_5F>
60 <ResourceFS starting=>Service_60>
64 <TerritoryManager Loaded=>Service_64>
65 <PDriver starting=>Service_65>
66 <PDumper starting=>Service_66>
67 <PDumper dying=>Service_67>
68 <Closing files=>Service_68>
69 <Identify disc=>Service_69>
6A <Filer enumerate formats=>Service_6A>
6B <Identify format=>Service_6B>
6C <Display format help=>Service_6C>
6D <Validate Address=>Service_6D>
6E <Fonts changed=>Service_6e>
6F <Buffer starting=>Service_6f>
70 <DeviceFS starting=>Service_70>
71 <DeviceFS dying=>Service_71>
72 <Switching output to sprite=>Service_72>
73 <PostInit=>Service_73>
75 <Territory started=>Service_75>
76 <Monitor lead translation=>Service_76>
78 <PDriver GetMessages=>Service_78>
79 <DeviceFS device dead=>Service_79>
7A <Screen blanked=>Service_7A>
7B <Screen restored=>Service_7B>
7C <Desktop welcome message=>Service_7C>
7D <Disc dismounted=>Service_7D>
7E <Shutdown=>Service_7E>
7F <PDriver changed=>Service_7F>
80 <Shutdown Complete=>Service_80>
81 <DeviceFS close request=>Service_81>
82 <ColourTrans invalidate cache=>Service_82>
83 <Econet protocol dying=>Service_83>
84 <Econet find network driver=>Service_84>
85 <Wimp SpritesMoved=>Service_85>
86 <Wimp RegisterFilters=>Service_86>
87 <FilterManager installed=>Service_87>
88 <FilterManager dying=>Service_88>
89 <Mode changing=>Service_89>
8A <Portable=>Service_8A>
8B <Network driver status (DCI2)=>Service_8B>
8C <Syntax error=>Service_8C>
8D <Enumerate screen modes=>Service_8D>
8E Pages unsafe
90 Created dynamic area
91 Remove dynamic area
92 Renumber dynamic area
93 Colour picker loaded
9B Enumerate network drivers
9D DCI driver status
9E DCI frame type freed
9F DCI Protocol status
A7 <URI operation=>InetSWIs:Service_A7>
B7 <UKCompression=>Service_B7>
B9 <ModulePreInit=>Service_B9>
10800 <ADFSPodule=>Service_10800>
10801 <ADFSPodule IDE=>Service_10801>
10802 <ADFSPodule IDE dying=>Service_10802>
400C0 Wimp ErrorStarting
400C1 Wimp ErrorButtonPressed
400C2 Wimp ErrorEnding
45540 <DrawFile ObjectRender=>Service_45540>
45541 <DrawFile DeclareFonts=>Service_45541>
80380 <SoundFile Identify Sound File=>Service_80380>
#EndTable
# 9B <Enumerate network drivers=>InetSWIs:Service_9B>
# 9D <DCI driver status=>InetSWIs:Service_9D>
# 9E <DCI frame type freed=>InetSWIs:Service_9E>
DATA1Service_PostInit (&73)
#Parent Service_index
=>	R1 =	&73 (service number)
<=	R1 preserved (should never be claimed)

This service is issued after all the ROM modules have been initialised. It is unlikely that you will be able to use this service unless you are part of the OS or live on a Podule.
DATAXService_SyntaxError (&8C)
#Parent Service_Index
=>	R1 =	&8C (service number)
	R2 =	pointer to entry in <command table=>OS_Module_ComTable>
	R3 =	pointer to base of module
	R4 =	pointer to command string in module
<=	R0 =	pointer to error block, or preserved to pass on
	R1 =	0 to claim, preserved otherwise
	R2-R4 preserved

This service is issued before a syntax error is returned from a *command resident in a module, which allows a module to localise messages for the current teritory. This might be the way in which RISC OS 3.5 translates the MessageTrans tokens to form a valid message.
DATA�Service_Invalidate Cache (&82)
#Parent Service_Index
=>	R1 =	&82 (service number)

This service is issued by ColourTrans when the the cache is flushed by ColourTrans. I'm not sure when you might need to know this.
DATA�Service_ReAlloctePorts (&48)
#Parent Service_Index
=>	R1 =	&48 (service number)

This service is issued when Econet restarts.
DATA�Service_EconetDying (&56)
#Parent Service_Index
=>	R1 =	&56 (service number)

This service is issued when Econet is about to quit.
DATA�Service_MessageFileClosed (&5E)
#Parent Service_Index
=>	R1 =	&5E (service number)

This service is issued by MessageTrans to warn that all files have been closed. It is *only* needed by applications which use direct pointers into message files - they must re-open message files with <MessageTrans_OpenFile> and recache pointers. If applications are using direct pointers ({/}e.g.{/} indirected icons) with <MessageTrans_MakeMenus> then they will need to close menus and re-make them if this service is issued. Use <Wimp_GetMenuState=>Wimp:Wimp_GetMenuState> to check whether your own application's menu is open - close it if it is.
DATA�Service_ProtocolDying (&83)
#Parent Service_Index
=>	R1 =	&83 (service number)

This service is part of the AUN Driver Control Interface.
DATA�Service_FindNetworkDriver (&84)
#Parent Service_Index
=>	R1 =	&84 (service number)

This service is part of the AUN Driver Control Interface.
DATA�Service_Portable (&8A)
#Parent Service_index
=>	R1 =	&8A (service number)
	R2 =	0	power up
	 	1	power down
	R3 =	<bitmask=>.bitmask> of ports which will be powered down/have been powered up
<=	R1 =	&8A (don't claim, unless R3 = 0)
	R2 preserved
	R3 =	<bitmask=>.bitmask> - set bits mean no objection to power up/down

This service is issued before powering down, or after powering up certain hardware. If a module wishes to prevent power down it should clear the appropriate bits for that hardware. If this results in R3 = 0, the service should be claimed to prevent it being needlessly passed round remaining modules.
#SubPage bitmask
Bitmask of ports
Bit	Hardware
#Line
0	Econet
3	Serial oscillator and buffer
14	Floppy Disc Controller oscillator
DATA�Service_NetworkDriverStatus (&8B)
#Parent Service_Index
=>	R1 =	&8B (service number)

This service is part of the AUN Driver Control Interface.
DATA�Service_CalibrationChanged (&5B)
#Parent Service_Index
=>	R1 =	&5A (service number)

This service is issued by ColourTrans when the <ColourTrans_SetCalibration> SWI is called.
DATA�Service_NetFS (&55)
#Parent Service_Index
=>	R1 =	&55 (service number)

This service is issued by NetFS to inform NetFiler that things may have changed ({/}i.e.{/} *Logon, *Bye or *Sdisc/*Mount has occurred).

DATAService_ResourceFSStarted (&59)
#Parent Service_Index
=>	R1 =	&59 (service number)
<=	R1 preserved (do not claim)

This service is issued whenever files are added or removed from ResourceFS. It allows programs using files in ResourceFS to check if things have changed.
DATA�Service_ResourceFSDying (&5A)
#Parent Service_Index
=>	R1 =	&5A (service number)
<=	R1 preserved (do not claim)

This service is issued by ResourceFS just before it removes itself as a filing system.
DATA�Service_NetFSDying (&5F)
#Parent Service_Index
=>	R1 =	&5F (service number)

This service is issued when NetFS is about to quit.
DATA�Service_ResourceFSStarting (&60)
#Parent Service_Index
=>	R1 =	&60 (service number)
	R2 =	address to call
	R3 =	workspace for ResourceFS
<=	R1 - R3 preserved (do not claim)

This service is issued by ResourceFS when it (re)initialises. As it is not linked into the module chain at this point, its SWIs cannot be called, so programs should call the code addressed by R2 directly:

#wrap off
#fCode
STMFD   sp!, \{r0, lr}
ADR     r0, files       ; pointer to <resource file block=>ResourceFS_fileblock>
MOV     lr, pc          ; emulate BL
MOV     pc, r2          ; call ResourceFS code
LDMFD   sp!, \{r0, pc}^
#wrap
#f

Unlike <ResourceFS_RegisterFiles>, the routine addressed by R2 does not issue <Service_ResourceFSStarted=>service_59> for each block registered. Instead it issues one <Service_ResourceFSStarted=>service_59> after all modules have recieved this service call.
# yeah. StudleyCaps RuleOK
# Exactly how many hedgehogs have you been smoking today, sir ?
DATAService_UKCommand (&04)
#Parent Service_index
=>	R0 =	pointer to command
	R1 =	&4 (service number)
<=	R0 & R1 preserved to pass on else
	R0 =	0 if command successful, else pointer to error
	R1 =	0 (to claim service)

This service is issued when a command is unknown, before the filing system us called to attempt to <run=>OS_FSControl4> the command. NetFS uses this service to implement file server commands.

Use the <command table=>OS_Module_ComTable> in a Relocatable Module if possible to implement new * Commands.
DATA�Service_Error (&06)
#Parent Service_index
=>	R0 =	pointer to <error block=>swi_errorblock>
	R1 =	&6 (service number)
<=	R0 & R1 preserved

This service is issued after an error, but before the error handler is called. You should not claim it.
DATA�Service_UKByte (&7)
#Parent Service_Index
=>	R0 =	pointer to <error block=>swi_errorblock>
	R1 =	&7 (service number)
	R2 =	<OS_Byte> number
	R3,R4 =	R1,R2 passed to OS_Byte
<=	preserve all regisers to pass on, else
	R1 =	0 (claim service)
	R3,R4 =	R1,R2 to return to caller

This service is issued when an unknown OS_Byte code is given. You should use <ByteV=>Vector_index> in preference to trapping this service.
DATAService_Help (&9)
#Parent Service_index
=>	R0 =	pointer to command line
	R1 =	&9 (service number)
<=	R1 =	0 to claim, preserved otherwise

This service is issued when a *Help command is issued. You should not claim this unless you wish to augment or replace the *Help command.
DATA=Service_UKWord (&8)
#Parent Service_index
=>	R1 =	&8 (service number)
	R2 =	<OS_Word> number
	R3 =	pointer to OS_Word data block
<=	R1 =	0 to claim, preserved otherwise

This service is issued when an unknown OS_Word code is given. You should use <WordV=>Vector_index> in preference to trapping this service.
DATA9Service_ReleaseFIQ (&B)
#Parent Service_index
=>	R1 =	&B (service number)
<=	R1 =	0 to claim, preserved to pass on

This service must be issued by a module when it releases the FIQ hardware vector. If you wish to claim the FIQ instead of the default owner (Econet or Kernel) you should claim this service
DATAmService_ClaimFIQ (&0C)
#Parent Service_Index
=>	R1 =	&C (service number)
<=	R1 =	0 to claim, or preserved to pass on

This service is issued by a module running as a foreground task (not IRQ) that wants to claim the FIQ hardware vector. If you are the current owner you must release the vector as soon as possible, and signal this by claiming this service.
DATA�Service_StartUp (&12)
#Parent Service_index
=>	R1 =	&12 (service number)
	R2 =	<filing system number=>fsys_ident>

This service is the old way of starting a filing system. Use <OS_FSControl 12=>OS_FSControl12> instead.
DATA6Service_PostReset (&27)
#Parent Service_Index
=>	R1 =	&27 (service number)

This service is issued at the end of a machine reset. General module tasks and filers should reset their taskhandles as if <Service_StartedWimp=>Service_4A> or <Service_StartedFiler=>Service_4C> had been called, ready for <Service_StartWimp=>Service_49> or <Service_StartFiler=>Service_4B>.

MessageTrans does not close message files on a soft reset - if you do not want your files to remain open this service will be useful.
# Hey, this service is detailed on 3-69, 3-72 and 2-492
DATAService_FSRedeclare (&40)
#Parent Service_index
=>	R1 =	&40 (service number)
<=	R1 preserved (do not claim)

This service is called when FileSwitch re-initilised. Filing systems should call <OS_FSControl 12=>OS_FSControl12> to re-declare themselves.
DATAYService_Print (&41)
#Parent Service_Index
This service is for internal use only.
DATA+Service_KeyHandler (&44)
#Parent Service_index
=>	R1 =	&44 (service number)
	R2 =	<keyboard ID=>OS_keyboardid>
<=	R0 & R1 preserved (do not claim)

This service is issued after <OS_InstallKeyHandler> is called, or after a reset, to inform keyboard handlers what sort of keyboard is present.
DATA�Service_ModeChange (&46)
#Parent Service_Index
=>	R1 =	&46 (service number)
	R2 =	<mode number=>VDU:22a>
	R3 =	<monitor type=>OS_monitortypes>
<=	R1-R3 preserved (do not claim)

This service is issued when a mode change has taken place.
DATA�Service_ClaimFIQinBackground (&47)
#Parent Service_index
=>	R1 =	&47 (service number)
<=	R1 =	0 to claim, or preserved to pass on

This service is issued by a module running as a backround task ({/}i.e.{/} IRQ) that wants to claim the FIQ hardware vector, or a foreground task that wants to poll availability of the vector. If you are the current owner and wish to release the vector, you should do so and signal this by claiming this service.
DATAService_StartWimp (&49)
#Parent Service_index
=>	R1 =	&49 (service number)
<=	R0 & R1 preserved to pass on else
	R0 =	pointer to command to start module
	R1 =	0 (to claim service)

This service is issued by the Wimp to start up resident module tasks by passing the returned command to <Wimp_StartTask=>Wimp:Wimp_StartTask>. Module tasks which wish to start should claim this service, passing their start command in R0. The Wimp will re-issue this service until no more modules claim it.

Filer module tasks should wait for <Service_StartFiler=>Service_4B> instead. 

To prevent infinite loops if an error occurs in starting a task, modules should:

1	set their taskhandle to 0 on <initialise=>OS_Module_init>, <Service_Reset=>Service_27> or <Service_StartedWimp=>Service_4A>
2	only claim this service if their taskhandle is zero ({/}i.e.{/} they are not already running, and not attempting to re-start)
3	set their taskhandle to a flag value (-1) when they claim this service
4a	set their taskhandle based on the return result of <Wimp_Initialise=>Wimp:Wimp_Initialise> if their command is called
4b	or set their taskhandle back to 0 on <Service_StartedWimp=>Service_4A> (failed to initialise)
5	set their taskhandle back to 0 when they quit using <Wimp_CloseDown=>Wimp:Wimp_CloseDown>
DATA@Service_StartedWimp (&4A)
#Parent service_index
=>	R1 =	&4A (service number)
<=	R1 preserved (do not claim)

This service is issued by the desktop after resident module tasks have started, to allow tasks that have failed to initialise to reset - see <Service_StartWimp=>Service_49> for details of the procedure.
DATAOService_StartFiler (&4B)
#Parent Service_index
=>	R0 =	task handle of Filer
	R1 =	&49 (service number)
<=	R0 & R1 preserved to pass on else
<=	R0 =	pointer to command to start module
	R1 =	0 (to claim service)

This service is issued by the Filer to start up resident filer module tasks by passing the returned command to <Wimp_StartTask=>Wimp:Wimp_StartTask>. Module tasks which wish to start should claim this service, passing their start command in R0. The Filer will re-issue this service until no more modules claim it.

To prevent infinite loops if an error occurs in starting a task, modules should:

1	set their taskhandle to 0 on <initialise=>OS_Module_init>, <Service_Reset=>Service_27> or <Service_StartedFiler=>Service_4C>
2	only claim this service if their taskhandle is zero ({/}i.e.{/} they are not already running, and not attempting to re-start)
3	set their taskhandle to a flag value (-1) when they claim this service
4a	set their taskhandle based on the return result of <Wimp_Initialise=>Wimp:Wimp_Initialise> if their command is called
4b	or set their taskhandle back to 0 on <Service_StartedFiler=>Service_4C> (failed to initialise)
5	set their taskhandle back to 0 when they quit using <Wimp_CloseDown=>Wimp:Wimp_CloseDown>

Filer tasks should also check for <Service_FilerDying=>Service_4F>, and close down if they recieve it.
DATAFService_StartedFiler (&4C)
#Parent Service_index
=>	R1 =	&4C (service number)
<=	R1 preserved (do not claim)

This service is issued by the Filer after resident Filer module tasks have started, to allow tasks that have failed to initialise to reset - see <Service_StartFiler=>Service_4B> for details of the procedure.
DATA�Service_PreModeChange (&4D)
#Parent Service_Index
=>	R1 =	&46 (service number)
	R2 =	<mode number=>VDU:22a>
<=	see below

This service allows a module to object to a mode change, or subsitute a different mode:

{*}Case 1{*} - module has no objection

<=	R1,R2 preserved (pass on)

{*}Case 2{*} - module objects, and takes alternative action

<=	R1 =	0 (claim service)
	R2 =	0

{*}Case 3{*} - module objects, and returns an error

<=	R0 =	pointer to <error block=>swi_errorblock>
	R1 =	0 (claim service)

{*}Case 4{*} - module wishes to subsitute an alternative mode

<=	R1 =	&46 (service number) - pass on
	R2 =	new <mode number=>VDU:22a>

<Service_ModeTranslation=>Service_51> offers a better method to support new monitor types.
DATA
Service_FilerDying (&4F)
#Parent Service_Index
=>	R1 =	&4F (service number)

This service is issued when the Filer task is closed down. Filer module tasks should close down in sympathy when they recieve this service (see <Service_FilerStarted=>Service_4B>).
DATAQService_ModeExtension (&50)
#Parent Service_index
=>	R1 =	&50 (service number)
	R2 =	mode number
	R3 =	<monitor type=>OS_monitortypes> or -1 for don't care
<=	R1-R4 preserved to pass on else
<=	R1 =	0 (to claim service)
	R2 preserved
	R3 =	pointer to <VIDC list=>.VIDC>
	R4 =	pointer to <workspace list=>.workspace>

This service is issued when a mode number that RISC OS does not provide is requested. Mode numbers are allocated by this scheme:

Mode	Use
#Line
0-63	<RISC OS=>VDU:22a>
64-95	Third party applications (allocated by Acorn)
96-127	User defined modes

VIDC parameters may differ for the same mode depending on monitor type, but workspace parameters *must* be constant.
#SubPage VIDC
VIDC list
VIDC list format 0:

Size	Value
#Line
4	0 (list format)
4	VIDC base mode (default for parameters not explicitly specified)
4	VIDC parameter
	(repeat)
4	-1 (terminator)

VIDC list format 1 (A540 and later):

Size	Value
#Line
4	1 (list format)
4	VIDC base mode (default for parameters not explicitly specified)
4	VIDC parameter
	(repeat)
4	-1 (terminator)
4	<extended parameter=>.extend>
	(repeat)
4	-1 (terminator)
#SubPage extend
VIDC extended parameters
VIDC extended paramters are encoded as ({/}n{/} << 24 OR {/}value{/})

n	value			bit	meaning when set	default
#Line
0	pixel rate (kHz)	 	 			24MHz
1	sync polarity		0	HSync -ve (else +ve)	+ve
	 			1	VSync -ve (else +ve)	+ve
2	VIDC clock rate (kHz)	 
#Subpage workspace
VIDC workspace list
Size	Value
#Line
4	0 (list format)
4	Workspace base mode
8	<Mode variable index=>OS_ReadModeVariable.variable>
	Mode variable value
	(repeat)
4	-1 (terminator)
DATA�Service_ModeTranslation (&51)
#Parent Service_index
=>	R1 =	&51 (service number)
	R2 =	mode number
	R3 =	<monitor type=>OS_monitortypes>
<=	R1-R3 preserved to pass on else
	R1 =	0 (to claim service)
	R2 =	substitute mode
	R3 preserved

This service is issued by <OS_CheckModeValid> or a mode change when the monitor type is unknown by RISC OS, and the mode is not available with the current monitor type (as already ascertained by <Service_ModeExtension=>Service_50>).
DATA�Service_MouseTrap (&52)
#Parent Service_Index
=>	R0 =	mouse x coord
	R1 =	&52 (service number)
	R2 =	button state (from <OS_Mouse>)
	R3 =	time of event (from <OS_ReadMonotonicTime>)
	R4 =	mouse x coord (as R1 is used for reason code)

This service is issued to report that a program has detected significant mouse movement ({/}e.g.{/} the Wimp detects the pointer moving over a submenu arrow). Mouse logging programs can use this service to ensure that they do not miss these events. Programs that react to mouse movement should issue this service for the benefit of logging programs.

Note - mouse loggers should also trap <INKEY=>OS_Byte129> (both postive and negative)
DATADService_Sound (&54)
#Parent Service_Index
=>	R0 =	0	DMA Handler starting
	 	1	DMA Handler dying
	 	2	Channel Handler starting
	 	3	Channel Handler dying
	 	4	Scheduler starting
	 	5	Scheduler dying
	R1 =	&54 (service number)

This service is issued to report when a part of the Sound system is staring or finishing.
DATAService_WimpReportError (&57)
#Parent Service_index
=>	R0 =	0 (window closing)
	 	1 (window opening)
	R1 =	&57 (service number)

This service is provided so that tasks that usually trap VDU output can suspend trapping while an error window is displayed.
DATAService_WimpSaveDesktop (&5C)
#Parent Service_index
=>	R0 =	0 (flags as in <Message_SaveDesktop=>Wimp:Msg_A> - currently all reserved)
	R1 =	&5C (service number)
	R2 =	file handle of desktop file being written
<=	R0 =	pointer to <error block=>swi_errorblock>, or preserve if not claimed
	R1 =	0 to claim, or preserved to pass on
	R2 preserved

This service is issued before <Message_SaveDesktop=>Wimp:Msg_A> to allow modules to save state to a desktop boot file in the form of *Commands. It should only be claimed if an error occurs.
DATA�Service_WimpPalette (&5D)
#Parent Service_index
=>	R1 =	&5D (service number)

This service is issued when <Wimp_SetPalette=>Wimp:Wimp_SetPalette> is called.
DATA�Service_TerritoryManagerLoaded (&64)
#Parent Service_Index
=>	R1 =	&64 (service number)

This service is issued when the territory manager starts, to indicate that territory modules should register themselves with <Territory_Register>.
DATA�Service_PDriverStarting (&65)
#Parent Service_Index
=>	R1 =	&65 (service number)

This service is issued when the PDriver module starts - printer drivers should call <PDriver_DeclareDriver> to declare themselves.
DATA#Service_CloseFile (&68)
#Parent Service_Index
=>	R1 =	&68 (service number)
	R2 =	pointer to canonical filename (null terminated)
	R3 =	number of files closed (initially 0)
<=	R1, R2 preserved (do not claim)
	R3 =	updated number of files closed

This service is issued when the object specified by R2, and all other objects beneath it in the directory tree are to be closed. Your module need not close files if this may potentially cause problems. Do *not* claim this service - pass it on with R3 updated by the number of files you closed.
DATA�Service_EnumerateFormats (&6A)
#Parent Service_Index
=>	R1 =	&6A (service number)
	R2 =	pointer to linked list of <format specifications=>.block>
<=	R1 =	&6A (do not claim)
	R2 =	pointer to extended linked list

This service is issued to get information about available disc formats from softloaded modules. It should be issued whenever this information is requested, in case new modules mean more formats are now available. The service must not be claimed - rather it should be passed on with an extended list.

The service issuer is responsible for freeing the list and all data from the RMA after use, or if an error occurs during generation.
#SubPage block
Service_EnumerateFormats format block
Offset	Meaning
#Line
0	Pointer to next block, or 0 to terminate list
4	Pointer to *RMA* block with text for *Format* submenu
8	Pointer to *RMA* block with help text for *Format* submenu
12	SWI to call to get raw disc format info
16	R3 parameter for this SWI
20	SWI to call to lay down disc structure
24	R0 parameter for this SWI
28	Flags:	bit 0 set for native ADFS format.
	 	other bits 0 (reserved)

The block should be built in this order:
1	allocate block in RMA
2	zero offsets 4 and 8 (pointers to text)
3	link into list
4	allocate block in RMA for text at offset 4
5	link this to the block
6	allocate block in RMA for text at offset 8
7	link this to the block
8	*copy* text into the two RMA blocks
9	fill in the rest of the block

This allows an error to be returned by claiming the service and returning the intact list.
DATA�Service_FontsChanged (&6E)
#Parent Service_Index
=>	R1 =	&6E (service number)

This service is issued when the Font Manager detects that Font$Path has change, so apps in modules can call <Font_ListFonts>.
DATA�Service_BufferStarting (&6F)
#Parent Service_Index
=>	R1 =	&6F (service number)

This service is issued when the buffer manager starts.
DATA�Service_TerritoryStarted (&75)
#Parent Service_Index
=>	R1 =	&75 (service number)

This service is issued when the machine's territory is changed. (ROM modules will re-open their messages files - RAM modules can ignore this service).
DATA�Service_MonitorLeadTranslation (&76)
#Parent Service_index
=>	R1 =	&76 (service number)
	R2 =	<monitor lead ID=>.leadID>
<=	R1-R5 preserved to pass on else
<=	R1 =	0 (to claim service)
	R2 preserved
	R3 =	default screen mode for this monitor type
	R4 =	<monitor type=>OS_monitortypes>
	R5 =	0 => separate syncs
	 	1 => composite sync

This service is issued by <OS_ReadSysInfo 1=>OS_ReadSysInfo.1> if the configured value for any of Mode, Monitor Type or Sync is "auto", to determine these parameters from the monitor lead. Older machines ({/}e.g.{/} A400 series vintage) cannot read monitor lead IDs
# I presume that "older machines" have 9 pin D plugs, not 15 pin sub-Ds
#SubPage leadid
Monitor lead IDs
The monitor conector has 4 ID pins (0 to 3). The connection of each pin is reported as a value:

Value	ID pin is tied to
#Line
0	0v
1	+5v
2	Hsync
3	indeterminate
#Tab

The connections of the 4 pins are reported in a bitfield:

Pin	Bits
#Line
ID0	0,1
ID1	2,3
ID2	4,5
ID3	6,7
#Tab

For example the portable module recognises that 1,1,1,1 occurs when no lead is connected, and sets mode 27, type 5, sync 0.

If the service is unclaimed RISC OS recognises the following values:

ID0	ID1	ID2	Type		Sync		Mode
#Line
H	+5v	+5v	0 (TV)		composite	12
+5v	+5v	H	1 (Multisync)	composite	27
+5v	0v	+5v	3 (Mono VGA)	separate	27
0v	+5v	+5v	3 (Colour VGA)	separate	27
0v	+5v	0v	4 (SVGA)	separate	27

(Value of ID3 is not used)

If even this fails, RISC OS assumes type 0 - TV standard.
DATAwService_PDriverGetMessages (&78)
#Parent Service_Index
=>	R1 =	&78 (service number)
<=	preserve all regisers to pass on, else
	R1 =	0 (claimed)
	R3 =	pointer to <20 byte block=>.block>

This service is issued when a PDriver module is about to open Resources:$.Resources.PDrivers.Messages. If another PDriver module has already opened this file, it should claim the service and return the <block=>.block>.

If a PDriver module issues this service and it goes unclaimed, it should allocate 20 bytes with <OS_Module 6=>OS_Module6>, pass the block to <MessageTrans_OpenFile>, and set the last word (usage count) to 1.

If the service is claimed, then the PDriver module should increase the usage count in the <block=>.block> by 1.

Either way, when the PDriver module is finished with the file, it should decrease the usuage count in the <block=>.block> by 1. If this reduces the count to 0, it should call <MessageTrans_CloseFile> and then <OS_Module 7=>OS_Module7> to free the block.

Simple eh?
# Yeah, right !
#Subpage block
PDriverGetMessages Block
Size	Meaning
#Line
16	MessageTrans block, from <MessageTrans_OpenFile>
4	usage count
DATA�Service_ScreenBlanked (&7A)
#Parent Service_index
=>	R1 =	&7A (service number)

This service is issued just after the screen is blanked.
DATAService_ScreenRestored (&7B)
#Parent service_index
=>	R0 =	0 for normal restoration
	 	Flags passed in R4 to <ScreenBlanker_Control 2=>ScreenBlanker_Control.2> if screen was flashed.
	R1 =	&7B (service number)

This service is issued just after the screen is restored.
DATA6Service_DiscDismounted (&7D)
#Parent Service_Index
=>	R1 =	&7D (service number)
	R2 =	pointer to "filing_system::disc"

This service is issued when a disc is dismounted - this allows the Filer to close open directory displays. Disc name should be used in preference to disc number in the string in R2.
DATAKService_ShutDown (&7E)
#Parent Service_index
=>	R1 =	&7E (service number)
<=	R1 =	0 to claim, preserved otherwise

This service is issued by the Task manager when it is asked to perform a shutdown - if it is claimed then the shutdown will not happen. RamFS will claim this service to warn the user of a non-empty RAM disc.
DATA2Service_PDriverChanged (&7F)
#Parent Service_Index
=>	R1 =	&7F (service number)
	R2 =	<printer driver number=>PDriver_printernumbers>

This service is issued when PDriver changes the currently selected printer. !Printers will issue <Message_SetPrinter=>Wimp:Msg_80147> when the printer is changed.
DATA�Service_ShutDownComplete (&80)
#Parent Service_index
=>	R1 =	&80 (service number)
#Wrap off

"Is is now safe to turn your computer off"
DATA�Service_WimpSpritesMoved (&85)
#Parent Service_index
=>	R1 =	&85 (service number)
	R2 =	pointer to ROM area
	R3 =	pointer to RAM area

This service is issued if the sprite pools have to move.
DATA8Service_WimpRegisterFilers (&86)
#Parent Service_index
=>	R1 =	&86 (service number)

This service is issued when the Wimp resets the filter table to its default state. You should register any filters with <Wimp:Wimp_RegisterFilter>. It should only be used if you are a replacement to the Filter Manager.
DATA�Service_FilterManagerInstalled (&87)
#Parent Service_Index
=>	R1 =	&87 (service number)

This service is issued when the <FilterManager=>Wimp:Filter_> starts, to indicate that filters can be registered with it.DATA�Service_FilterManagerDying (&88)
#Parent Service_Index
=>	R1 =	&88 (service number)

This service is issued when the FilterManager is quiting, to inform filters that they have been deregistered.
DATA�Service_ModeChanging (&89)
#Parent Service_Index
=>	R1 =	&89 (service number)
	R2 =	<mode number=>VDU:22a>
	R3 =	<monitor type=>OS_monitortypes>
<=	R1-R3 preserved (do not claim)

This service is issued when a mode change about to take place (or after <Service_PreReset=>Service_45>). It is intended to be used by modules that which which to claim <PaletteV=>Vector_palettev> for particular combinations of mode and monitor.
DIR$���|H����cs�!RootTH���.h*�_0T�H���>=h*�_1T�H���O��'_2`�H����i�'_3p�H���r��'�_4\�H���n�'V_5��H���Ÿ5_6DATA�Service_International (&43)
#Parent Service_Index
#Prefix service_43_
=>	R1 =	&43 (reason code)
	R2 =	sub reason code
	R3-R5 depend on R2
<=	R1 =	0 to claim, preserved otherwise
	R4,R5 depend on R2

This service provides a variety of conversion and infomation functions:

R2	Service
#Line
<0>	<Convert country name to number=>service_43_0>
<1>	<Convert alphabet name to number=>service_43_1>
<2>	<Convert country number to name=>service_43_2>
<3>	<Convert alphabet number to name=>service_43_3>
<4>	<Convert country number to alphabet number=>service_43_4>
<5>	<Define range of characters=>service_43_5>
<6>	<Info - New keyboard selected=>service_43_6>
DATA�Service_International 0
#Parent Service_43
=>	R1 =	&43 (reason code)
	R2 =	0 (sub reason code)
	R3 =	pointer to null terminated <country name=>Territory_numbers>
<=	R1 =	0 to claim, preserved otherwise
	R4 =	country number, or preserved if unrecognised

This service converts a country name to number. If a module provides additional countries it should check this service - if the name matches (case insensitive, allow abbreviations with ".") one provided by the module it should claim this service.
DATA�Service_International 1
#Parent Service_43
=>	R1 =	&43 (reason code)
	R2 =	1 (sub reason code)
	R3 =	pointer to null terminated <alphabet name=>Territory_anumbers>
<=	R1 =	0 to claim, preserved otherwise
	R4 =	country number, or preserved if unrecognised

This service converts a country name to number. If a module provides additional alphabets it should check this service - if the name matches (case insensitive, allow abbreviations with ".") one provided by the module it should claim this service.
DATAService_International 2
#Parent Service_43
=>	R1 =	&43 (reason code)
	R2 =	2 (sub reason code)
	R3 =	<country number=>Territory_numbers>
	R4 =	pointer to buffer
	R5 =	length of buffer
<=	R1 =	0 to claim, preserved otherwise
	R2-R4 preserved
	R5 =	number of characters put into buffer, or preserved if unrecognised.

This service converts a country name to number. If a module provides additional countries it should check this service - if the number matches one provided by the module it should claim this service.
DATAService_International 3
#Parent Service_43
=>	R1 =	&43 (reason code)
	R2 =	3 (sub reason code)
	R3 =	<alphabet number=>Territory_anumbers>
	R4 =	pointer to buffer
	R5 =	length of buffer
<=	R1 =	0 to claim, preserved otherwise
	R2-R4 preserved
	R5 =	number of characters put into buffer, or preserved if unrecognised.

This service converts a alphabet name to number. If a module provides additional alphabets it should check this service - if the number matches one provided by the module it should claim this service.
DATA�Service_International 4
#Parent Service_43
=>	R1 =	&43 (reason code)
	R2 =	4 (sub reason code)
	R3 =	<country number=>Territory_numbers>
<=	R1 =	0 to claim, preserved otherwise
	R2-R3 preserved
	R5 =	<alphabet number=>Territory_anumbers>, or preserved if unrecognised.

This service converts a country number to alphabet number. If a module provides additional countries it should check this service - if the number matches one provided by the module it should claim this service.
DATAVService_International 5
#Parent Service_43
=>	R1 =	&43 (reason code)
	R2 =	5 (sub reason code)
	R3 =	<alphabet number=>Territory_anumbers>
	R4 =	ASCII code of first character
	R5 =	ASCII code of last character
<=	R1 =	0 to claim, preserved otherwise

This service defines a range of characters for a given alphabet number. If a module provides additional countries it should check this service - if the number matches one provided by the module it should claim this service, and call <VDU 23=>VDU:23,32-255> to define any characters in the range (R4-R5) inclusive defined in this alphabet.
DATA5Service_International 6
#Parent Service_43
=>	R1 =	&43 (reason code)
	R2 =	6 (sub reason code)
	R3 =	new <keyboard number=>OS_keyboardid>
	R4 =	<alphabet number=>Territory_anumbers> for this keyboard
<=	R1-R4 preserved (do not claim)

This service is generated when the keyboard selection is changed.
DATA�Service_Memory (&11)
#Parent Service_Index
=>	R0 =	amount application space will change by
	R1 =	&11 (service number)
	R2 =	<currently active object=>OS_handlers_cao> pointer
<=	R1 =	0 to claim and prevent re-mapping

This service is issued just before memory is remapped to change the size of the application space. When <Wimp_Initialise=>Wimp:Wimp_Initialise> is called the Wimp inspects the CAO - if it is outside application space the Wimp will issue this service prior to reducting the application space to 0. If it is unclaimed the memory change will take place. If you are a module who wants to use application space ({/}e.g.{/} a module task) then you should check the CAO - if it is your start address in the RMA you should claim the service to stop the change, and hence retain the memory.

An conventional application's CAO is within application workspace, so the Wimp will not attempt to issue this service, or change the memory map.
DATA'Service_PreReset (&45)
#Parent Service_Index
=>	R1 =	&45 (service number)

This service is issued when Break is released, just before a software generated reset occurs. This allows expansion card software to reset devices, as there is no hardware reset signal on the expansion card bus.
DATA�Service_ADFSPodule (&10800)
#Parent Service_Index
=>	R1 =	&10800 (service number)
	R2 =	address of current ST506 controller
	R3 =	address of IRQ status register for controller
	R4 =	AND mask - AND this with IRQ status reqister to give non-zero when IRQs are enabled
	R5 =	address of IRQ mask register for controller
	R6 =	OR mask - ORR this with IEQ mask register to enable IRQs.
<=	preserve all registers to pass on, or
	R1 =	0 (to claim)
	R2 =	address of new ST506 controller
	R3 =	address of IRQ status register for controller
	R4 =	AND mask
	R5 =	address of IRQ mask register for controller
	R6 =	OR mask

This service is issued by ADFS to allow a ST506 hard disc expansion card to use its hardware in place of the machine's built in hardware.
DATA�Service_ADFSPoduleIDE (&10801)
#Parent Service_Index
=>	R1 =	&10801 (service number)
	R2 =	address of current IDE controller
	R3 =	address of IRQ status register for controller
	R4 =	AND mask - AND this with IRQ status reqister to give non-zero when IRQs are enabled
	R5 =	address of IRQ mask register for controller
	R6 =	OR mask - ORR this with IEQ mask register to enable IRQs.
<=	preserve all registers to pass on, or
	R1 =	0 (to claim)
	R2 =	address of new IDE controller
	R3 =	address of IRQ status register for controller
	R4 =	AND mask
	R5 =	address of IRQ mask register for controller
	R6 =	OR mask

This service is issued by ADFS to allow a IDE hard disc expansion card to use its hardware in place of the machine's built in hardware.
DATA�Service_ADFSPoduleDying (&10802)
#Parent Service_Index
=>	R1 =	&10802 (service number)

"This call is issued by an IDE expansion card to warn ADFS of its immenient demise."
DATAService_DeviceFSCloseRequest (&81)
#Parent Service_Index
=>	R1 =	&81 (service number)
	R2 =	file handle

<=	preserve all registers to pass on

else

<=	R1 =	0 (claim, if you were able to close file in R2)

This service is issued by DeviceFS when an open attempt on a device is frustrated because either:

�	that device already has its maximum number of streams open
�	a non-full-duplex device has one or more streams open in the conficting direction

Hopefully sufficient blocking streams can be closed, which will allow the open request to be fulfilled. If you opened the stream in R2, and it need no longer be kept open, then you should close it and claim the service. The kernel responds to this service to close the printer and serial devices if it has implicitly opened them.
DATA�Service_MemoryMoved (&4E)
#Parent Service_Index
=>	R1 =	&4E (service number)

This service is issued when <OS_ChangeDynamicArea> has just finished, and is used by the Wimp to tidy up.
DATA�Service_PDumperStarting (&66)
#Parent Service_Index
=>	R1 =	&66 (service number)

This service is issued when the PDriverDP module starts - printer dumpers should call <PDriver_MiscOpForDriver> to declare themselves.
DATA�Service_PDumperDying (&67)
#Parent Service_Index
=>	R1 =	&67 (service number)

This service is issued when <PDumper=>PDumper_> is about to quit.
DATA�Service_IdentifyDisc (&69)
#Parent Service_Index
=>	R1 =	&69 (service number)
	R2 =	pointer to buffer for format name
	R3 =	buffer length
	R5 =	pointer to <disc record=>FileCore_Disc>
	R6 =	sector cache handle
	R8 =	*pointer to* FileCore instance private word

If format unrecognised
<=	R1 =	&69 (do not claim)
	R5,R8 preserved
	R6 =	new sector cache handle

else 

=>	R1 =	0 (to claim)
	R2 =	filetype number for given disc
	R5 =	pointer to modified <disc record=>FileCore_Disc>
	R6 =	new sector cache handle
	R8 preserved

This service is issued to identify a disc format. FileCore claims it for formats it recognises.

The idenitfication procedure is involved:

1	(Unless any of the <4 values are zero=>.harddisc>) check the <disc record=>FileCore_Disc>'s sector size, sectors per track, density and lowest sector ID number
	Pass on the service if the sector scheme is unrecognised
2	Update the values in the <disc record=>FileCore_Disc> for disc size, sequence sizes, double step and <heads=>.heads>.
3	<Read the sector contents=>.read> and check them - if it does not recognise these then pass on the service with R6 updated
4	Update the values in the <disc record=>FileCore_Disc> for <disc cycle id=>FileCore_cycleid> and disc name
# Tag buffer
5	Fill the buffer in R2 with text suitable for the *current format* menu entry
6	(Finally) claim the service call.
#Subpage harddisc
Sector size etc. zero
If any of sector size, sectors per track, density and lowest sector ID number are 0 then these were not supplied by <FileCore_MiscOp 0=>FileCore_MiscOp0> - this should only happen for hard discs.
#Subpage heads
Updating heads in the disc record
The heads field of the <disc record=>FileCore_Disc> should be updated in line with the sequence sides bit - if this bit becomes cleared add one to the heads, if this bit becomes set subtract one (but do not reduce heads below 0).
#Subpage read
Reading the sector contents
The sector contents should be read with <FileCore_DiscOp 9=>FileCore_DiscOp9> with
R1 =	flags 01x0 binary (1 second timeout, ignore escape, no alternative defect list)
	pointer to the alternative disc record supplied
R2 =	the disc address given by the root directory address on the <disc record=>FileCore_Disc> supplied
DATA'Service_IdentifyFormat (&6B)
#Parent Service_Index
=>	R0 =	pointer to <format name=>.name>
	R1 =	&69 (service number)

If format name unrecognised
<=	R0,R1 preserved to pass on

else 
=>	R0 preserved
	R1 =	0 (to claim)
	R2 =	SWI to call to get raw disc format info
	R3 =	R3 parameter for this SWI
	R4 =	SWI to call to lay down disc structure
	R5 =	R0 parameter for this SWI

This service is issued to identify how to layout a disc format. If DOSFS recognised the <format name=>DOSFS_FormatSpec> then R2 would be <DOSFS_DiscFormat> and R4 <DOSFS_LayoutStructure>.
#subpage name
Format specification string
The "Format specification string" is the name of the format, {/}i.e.{/}
#fCode
  L
  D
  E
  F
#f
or one of the <DOSFS format names=>DOSFS_FormatSpec> would be recongised between ADFS and DOSFS.DATA	Service_DisplayFormatHelp (&6C)
#Parent Service_Index
=>	R0 =	0
	R1 =	&69 (service number)

If no error then
<=	R0,R1 preserved to pass on

else 
=>	R0 =	pointer to <error block=>swi_errorblock>
	R1 =	0 (to claim)

This service is issued by {fcode}*Help Format{f}. For each of your formats you should display one line of the form

   {/}format - description{/}

{/}e.g.{/}

#fCode
L - 640K, 47 entry directories, old map, all ADFS.
#f

Only claim this service if there is an error while displaying the help text.
DATAKService_ValidateAddress (&6D)
#Parent Service_Index
=>	R1 =	&6D (service number)
	R2,R3 =	R0,R1 as passed to <OS_ValidateAddress>
<=	R1 =	0 to indicate area is valid, else &6D to pass on

This service is issued when <OS_ValidateAddress> encounters an unrecognised area. It is *not* called for areas which should be mapped.
DATA[Service_DeviceFSStarting (&70)
#Parent Service_Index
=>	R1 =	&70 (service number)

This service is issued by DeviceFS when it (re)initialises. Unlike <Service_ResourceFSStarting=>service_60>, DevicsFS has the good sense to issue this service on a callback, so its SWIs ({/}e.g.{/} <DeviceFS_Register>) can be called in the normal fashion.
DATA�Service_DeviceFSDying (&71)
#Parent Service_Index
=>	R0 =	0
	R1 =	&71 (service number)

This service is issued by DeviceFS when it is about to be killed. All devices will have already been issued with <Service_DeviceDead=>service_79>.
DATA)Service_SwitchingOutputToSprite (&72)
#Parent Service_index
=>	R1 =	&72 (service number)
	R2-R5	values passed in R0-R3 to <OS_SpriteOp>

This service is issued immediately after output has been switched to/from a sprite or mask by <OS_SpriteOp 60=>OS_SpriteOp_60> or <61=>OS_SpriteOp_61>.
DATA�Service_DeviceDead (&79)
#Parent Service_Index
=>	R0 =	0
	R1 =	&79 (service number)
	R2 =	device driver handle
	R3 =	pointer to device name, or 0 if whole device driver is being deregistered

This service is issued by <DeviceFS=>DeviceFS_> when a specified device has been killed - usually because a second device of the same name has been registered. If the entire driver is being deregistered, then this service is issued for each name in turn, and a final time with R3 = 0.
DATA�Service_DrawObjectRender (&45540)
#Parent Service_index
=>	R0 =	<object type=>DrawFile_format>
# Gerph> This really should go directly to the types page, but for now...
	R1 =	&45540 (service number)
	R2 =	pointer to the <render state=>Drawfile_renderstate>
<=	R1 =	0 if recognised, preserved otherwise

This service is made whenever <DrawFile_Render> encounters an object whose type it doesn't know. Extension modules should recognise the object type, process it and then claim the service. Errors should *only* be reported if there is no error presently known - the Drawfile module will continue after errors, but only report the first one.
# Gerph> /why/ should it continue ?
DATA^Service_DrawObjectDeclareFonts (&45541)
#Parent Service_index
=>	R0 =	<object type=>DrawFile_format>
# Gerph> This really should go directly to the types page, but for now...
	R1 =	&45541 (service number)
	R2 =	pointer to <declare font state block=>drawfile_declarestate>
<=	R1 =	0 if recognised, preserved otherwise

# Gerph> You've not documented DeclareFonts, Justin.
This service is made whenever DrawFile_DeclareFonts encounters an object whose type it doesn't know. Extension modules should recognise the object type, declare the fonts in it and then claim the service. Errors should *only* be reported if there is no error presently known - the Drawfile module will continue after errors, but only report the first one.
# Gerph> This is stupid. There is no way to include multiple font table objects
#        unless I've misunderstood completely.
DIR$LLԸG����*
D!Root�H���%�7ControlDATADScreenBlanker
#Parent !Root
#Prefix ScreenBlanker_
<Control>DATA7ScreenBlanker_Control  (&43100)
#Parent ScreenBlanker_
=>	R0 =	<reason code=>.reasons>

Control screen blanking.
#
#Subpage reasons
ScreenBlanker reason codes
Reason	Meaning
#Line
0	Blank screen immediately
1	Unblank screen immediately
2	<Flash screen=>.2>
3	<Set blanking delay=>.3>
4	<Get blanking delay=>.4>
#
#Subpage 2
ScreenBlanker_Control 2
=>	R0 =	2 (Flash screen)
	R1 =	time to turn on in centi-seconds
	R2 =	time to turn off in centi-seconds
	R3 =	maximum number of flashes
	R4 =	flags (not documented, see <Service_ScreenRestored=>Service_7B>)
#
#Subpage 3
ScreenBlanker_Control 3
=>	R0 =	3 (Set blanking delay)
	R1 =	delay in centi-seconds, or 0 to disable
#
#Subpage 4
ScreenBlanker_Control 4
=>	R0 =	4 (Get blanking delay)
<=	R0 =	internal blanking time
	R1 =	delay in centi-seconds, or 0 if disabled
DIR$,,|�H����PP!RootDATAPScreenModes (&65) (3.5)
#Parent OS_
#Table Columns 2
ReadInfo
#EndTable
DIR$,,��F�����g�P!RootDATAPSharedCLibrary
#Parent !Root
LibInitAPCS_A
LibInitAPCS_R
LibInitModule  DIR$ll��H���3�=!Root�H���TJ�VCreateL�H����O�WDestroyDATA=Shell
#Parent !Root
#Prefix Shell_
<Create>
<Destroy>DATAVShell_Create  (&405C0)
#Parent Shell_
For internal use by the ShellCLI module.DATAWShell_Destroy  (&405C1)
#Parent Shell_
For internal use by the ShellCLI module.DIR$HH��H����<�!Roott�G���o����AttachNamedVoice\�G����͡AttachVoice�G���R���HConfigureH�H������Enable�H����6!InstallVoice$�G��������RemoveVoice�G����#"SoundLog �H���n��zVolume��G���~��lStereo�G���I�o�33Control<�H����7�3volumes4�G���yw�.3pitchesd�G���6�o��3durations�H�����+Phandler_0�H���f��3ControlPacked �H���:[5LogScale4�H�����7-Pitchd�H���r|;�QBeat`�H���w�:dQDispatch��H���(�:&QFree��H���n�:�QInit��H����;eQInterfaceH�H���:bQRemove��H����a;	QSchedule��H�����:�QTempo��H���uH�
ReadControlBlock��H����;�+3sccb��H���!�4�Speaker��H����87�Tuning��H����E�"WriteControlBlockDATA�Sound
#Parent !Root
#Prefix Sound_
#Table 14 18
<AttachNamedVoice>
<AttachVoice>
<Configure>
<Control>
<ControlPacked>
<Enable>
<InstallVoice>
LinearHandler
<LogScale>
Mode
<Pitch>
<QBeat>
<QFree>
<QInit>
<QInterface>
<QRemove>
<QSchedule>
<QDispatch>
<QTempo>
<ReadControlBlock>
<RemoveVoice>
SampleRate
<SoundLog>
<Speaker>
<Stereo>
<Tuning>
<Volume>
<WriteControlBlock>
#EndTableDATA�Sound_AttachNamedVoice  (&4018A)
#Parent Sound_
=>	R0 =	channel number (1-8)
	R1 =	pointer to voice name (null terminated ASCII)

<=	R0 =	preserved, or 0 for fail
	R1 =	preserved

See <Sound_AttachVoice> for more details.DATA�Sound_AttachVoice  (&40185)
#Parent Sound_
=>	R0 =	channel number (1-8)
	R1 =	voice slot to attach (0 to detach and mute)

<=	R0 =	preserved (or 0 if illegal channel number)
	R1 =	previous voice number (0 for no previous)

The previous voice is shut down and the new one is reset.

Different algorithms have different internal state representations so it is not possible to swap Voice Generators in mid-sound.DATAHSound_Configure  (&40140)
#Parent Sound_
=>	R0 =	number of channels; rounded to 1,2,4 or 8, or 0 to read
	R1 =	DMA buffer size, in bytes for one channel, or 0 to read
	R2 =	sample period in �s (overall), or 0 to read
	R3 =	pointer to <Channel Handler block=>Sound_handler_channel> (0 to preserve)
	R4 =	pointer to <Scheduler=>Sound_handler_scheduler> (0 to preserve)

<=	R0-R4 =	previous values
                 
Please note that R2 sets the sample period for all channels, so a call with R0=4 and R2=48 gives a sample period of 48/4 = 12 �s per channel, while the period of the sound system is 48 �s. Use the formula f=1/T to compute the sample rate (here 20.833 kHz). R1 specifies the DMA swap buffer length for one channel, the entire memory area has R1*R0 bytes.

All current settings may be read by using zero input parameters.DATA�Sound_Enable  (&40141)
#Parent Sound_
=>	R0 =	new state:
	 	  0 for no change (read state)
	 	  1 for OFF
	 	  2 for ON

<=	R0 =	previous state:
	 	  1 for OFF
	 	  2 for ON	 	  0 for OFF

This SWI is used to enable or disable all Sound interrupts and DMA activity.
# This previously said :
# 	 	  1 for closedown imminent
# 	 	  2 for closedown in progress
# 	 	  3 for active ON
# where I got these docs from is unclear - ideas ?
DATA!Sound_InstallVoice  (&40183)
#Parent Sound_
=>	R0 =	pointer to Voice Generator or
	 	0 to <read current voice's name=>.0>
	 	1 to <add a voice using a local name=>.1>
	 	2 to <read current voice's local name=>.2>
	 	3 to <change current voice's local name=>.3>
	R1 =	voice slot (1-32) (0 to use next free slot)

<=	R0 =	pointer to name of previous voice (or null terminated error string)
	R1 =	voice number allocated (0 for failed!)

Use this call to add a Voice Generator to the table of available voices. An error is indicated by R1 set to zero on exit, and R0 pointing to an error string, not the V bit set in the usual manner.
#SubPage 0
Sound_InstallVoice 0  (&40183)
=>	R0 =	0
	R1 =	voice slot (1-32)

<=	R0 =	pointer to name of voice (or null if slot is free)
	R1 preserved

Reads the name of the voice currently installed in the specified slot.
#SubPage 1
Sound_InstallVoice 1  (&40183)
=>	R0 =	1
	R1 =	voice slot (1-32)
	R2 =	pointer to Voice Generator
	R3 =	voice name in local language (or 0 if no local name)

<=	R0 preserved
	R1 =	voice number allocated (0 for failed!)
	R0 =	pointer to name of previous voice (or null terminated error string if R1 = 0)
	R3 preserved

This bodge allows a voice to be installed with a local name.
#SubPage 2
Sound_InstallVoice 2  (&40183)
=>	R0 =	0
	R1 =	voice slot (1-32)

<=	R0, R1 preserved
	R2 =	pointer to name of voice (or null if slot is free)
	R3 =	pointer to local name of voice

Reads the name of the voice currently installed in the specified slot, and the name in the local language.
#SubPage 3
Sound_InstallVoice 3  (&40183)
=>	R0 =	0
	R1 =	voice slot (1-32)
	R2 =	0
	R3 =	voice name in local language

<=	R0 - R3 preserved

This call sets the name of the voice in the local language. It doesn't matter whether the voice had any local name prior to the call.DATA�Sound_RemoveVoice  (&40184)
#Parent Sound_
=>	R0 =	voice slot to remove (1-32)

<=	R0 =	pointer to name of previous voice (or error message)
	R1 =	voice number de-allocated (0 for fail)

This SWI is used to remove a voice from the system, and notifies the Channel Handler. Error handling like in <Sound_InstallVoice>. This call must also be issued before the RMA is tidied, since the module contains absolute pointers to Voice Generators that are likely to exist in RMA.DATASound_SoundLog  (&40181)
#Parent Sound_
=>	R0 =	32-bit signed integer

<=	R0 =	8-bit signed volume-scaled logarithm (LSB)

This call converts a signed integer longword to a signed logarithm byte in VIDC lower sign bit format via table lookup (ie the current volume setting!).DATAzSound_Volume  (&40180)
#Parent Sound_
=>	R0 =	sound volume (1-127) (0 to read setting)
<=	R0 =	previous volume

This call sets the maximum overall volume of the Sound system. A change of 16 will halve or double the volume. The command also scales the internal volume lookup tables of the Voice Generators, which involves a large amount of calculation behind the scenes.
DATAlSound_Stereo  (&40142)
#Parent Sound_
=>	R0 =	channel number
	R1 =	<stereo position=>.positions>
<=	R0 preserved
	R1 =	previous position, or -128 if invalid channel

This call sets the stereo position of a particular channel.
#Subpage positions
Stereo positions
Value	Meaning
#Line
0	Centre
-127	Left
127	Right
-128	Read position (if using <Sound_Stereo>)
DATA3Sound_Control (&40189)
#Parent Sound_
=>	R0 =	channel (1-8)
	R1 =	<volume=>sound_volumes>
	R2 =	<pitch=>sound_pitches>
	R3 =	<duration=>sound_durations>

This SWI will play a sound on a given channel. If any of the parameters are incorrect then no error is raised and no operation will be performed.DATA�Sound volumes
Volume		Meaning
#Line
-15 - 0		BBC style volume
&FFF1 - &FFFF	ditto
&100 - &17F	Gate on, logarithmic volume (cuts current note and plays new one)
&180 - &1FF	Smooth update, logarithmic volume (changes current note parameters)
DATA.Sound pitches
Pitch		Meaning
#Line
0 - 255		BBC style pitch (increase by 4 for one semitone)
&0100 - &7FFF	Enhanced pitch control : &offf
		&o000 is octave, &0fff is fraction of octave;
		&4000 is usually middle C though this depends on the sample
&8000 - &FFFF	Phase accumulator increment (?)
DATA�Sound duration
Duration	Meaning
#Line
1 - 254		BBC style duration (in 5 cs multiples)
255		BBC style infinite duration (actually &F0000000)
256 -		duration in 5 cs periods
DIR$PPh�G���};���3channel<�G���K3���3schedulerDATA�Sound Channel handler block
Offset	Meaning
#Line
0	pointer to <fill code=>.fill>
4	pointer to <overrun fixup code=>.fixup>
8	pointer to linear-to-log conversion table
12	pointer to log volume scale table

The volume scale table can be used to scale samples to the current volume.
#subpage fill
Channel handler fill code
=>	R12 =	pointer to DMA buffer
	R11 =	number of channels
<=	no registers need preserving

These values have been found by example only. It is the job of the channel handler to call the voice generators as required.
#subpage fixup
Channel handler overrun fixup
This code is never called, but for safety you should make this point to {fCode}MOVS pc,link{f} which will return immediately if called.
DATA�Sound scheduler handler block
Offset	Meaning
#Line
0	pointer to <schedule code=>.schedule>

The sound scheduler is called every centi-second to schedule more sounds.
#subpage schedule
Schedule handler fill code
=>	unknown
<=	unknown
DATA�Sound_ControlPacked  (&40186)
#Parent Sound_
=>	R0 =	&AAAACCCC	<amplitude=>sound_volumes>	channel (1-8)
	R1 =	&DDDDPPPP	<duration=>sound_durations>	<pitch=>sound_pitches>
<=	R0, R1 preserved

This SWI is identical to <Sound_Control>, except that the parameters are packed as pairs of 16 bit values into R0 and R1. It is provided for BBC compatibility and the scheduler. Use <Sound_Control> instead if possible.

The advantage of this SWI is that it may be used with <Sound_QSchedule>.
DATASound_LogScale  (&40182)
#Parent Sound_
=>	R0 =	8-bit signed logarithm

<=	R0 =	8-bit signed volume-scaled logarithm (LSB)

This call converts a signed logarithm byte in VIDC lower sign bit format to a byte scaled for the current volume setting. (via a lookup table)DATA-Sound_Pitch  (&40188)
#Parent Sound_
=>	R0 =	pitch value
	 	14-12	3 bit octave number
	 	11-0	12 bit octave fraction (1/4096ths of an octave.)
<=	R0 =	(entry R0 \< &8000)	32 bit phase accumulator value
	 	(entry R0 => &8000)	preserved

This SWI maps a 15 bit pitch value to an internal format.DATA�Sound_QBeat  (&401C6)
#Parent Sound_
=>	R0 =	\< -1	disable beat counter, set bar length to 0
	 	-1	read current bar length
	 	0	read current beat number
	 	> 0	enable beat counter, set bar length to R0
<=	R0 =	(entry R0 = 0)	current beat number
	 	else		previous bar length

This call sets and reads the beat counter or bar length. When enabled the beat counter counts from 0 to (bar length - 1). Disabling the beat counter causes <Sound_QSchedule> to schedule relative to the time of the SWI calls.DATAdSound_QDispatch  (&401C4)
#Parent Sound_
This SWI is for the exclusive use of the scheduler.DATA&Sound_QFree  (&401C3)
#Parent Sound_
<=	R0 =	number of slots guaranteed free
	 	\< 0 means worst case limit exceeded - some free slots may remain

This SWI returns the number of free slots in the Scheduler queue. The value returned is pessimistic - it assumes that the worst possible combination of schedule times will be requested when it calculates free space. Because of this it may possible to successfully schedule more events than the number returned, and it may be possible still to schedule events when the returned value is negative.DATA�Sound_QInit  (&401C0)
#Parent Sound_
<=	R0 =	0 (success)

This call flushes and re-initialises the queue. The beat counter is reset and disabled, the tempo is set to a default value (see <Sound_QTempo>), the bar length is set to zero.DATAeSound_QInterface  (&401C7)
#Parent Sound_
This SWI is for the exclusive use of the scheduler.DATAbSound_QRemove  (&401C2)
#Parent Sound_
This SWI is for the exclusive use of the scheduler.DATA	Sound_QSchedule  (&401C1)
#Parent Sound_
=>	R0 =	schedule period or
	 	  -1		to synchronise with the previously scheduled event
	 	  -2		immediately schedule
	R1 =	0		Schedule <Sound_ControlPacked>
	 	&F0XXXXXX	Schedule SWI number &XXXXXX
	R2 =	R0 for SWI
	R3 =	R1 for SWI
<=	R0 =	0	success
	 	\< 0	failure

This call schedules a SWI on the queue. Typically this is <Sound_ControlPacked>, but any SWI may be scheduled provided:

#tab
�	entry is R0, R1 as specifed, R2-R7 = 0
�	if R0 or R1 point to buffered parameters, these must be available when the SWI is called

The X form of the SWI is forced, return parameters are discarded.

When the beat counter is enabled the schedule period is measured from the last bar start; when disabled from the time of this SWI call.DATA�Sound_QTempo  (&401C5)
#Parent Sound_
=>	R0 =	new tempo (0 to read)
<=	R0 =	previous tempo

This call sets the Scheduler tempo. The default tempo of &1000 gives 1 beat per centisecond - tempo is linear so &2000 will give 2 beats per centisecond.DATA
Sound_ReadControlBlock  (&4018B)
#Parent Sound_
=>	R0 =	channel number (1-8)
	R1 =	offset to read (0-255)

<=	R0 =	preserved, or 0 for fail
	R1 =	preserved
	R2 =	word read from offset in R1.

This SWI reads a word from the channel's <control block=>Sound_sccb>.DATA+Sound Channel Control Block
#Parent Sound_
For each channel a *SCCB* (Sound Channel Control Block) is maintained by the channel handler. The first 9 words are usually stored in R0-R8.

Offset	Value
#Line
0	gate bit, channel amplitude (7 bit log)
1	voice table index
2	attached voice instance number
3	control/status flags
4	phase accumulator pitch oscillator
8	phase accumulator timbre oscillator
12	counter of remaining buffer fills
16	working R4
20	working R5
24	working R6
28	working R7
32	working R8
36-63	reserved (Acorn)
64-255	for user use
DATA�Sound_Speaker (&40143)
#Parent Sound_
=>	R0 =	new state:
	 	  0 for no change (read state)
	 	  1 for OFF
	 	  2 for ON

<=	R0 =	previous state:
	 	  1 for OFF
	 	  2 for ON

This SWI is used to enable or disable the internal speaker(s).DATA�Sound_Tuning  (&40187)
#Parent Sound_
=>	R0 =	new tuning value (0 to read)
<=	R0 =	previous tuning value

This call sets the sound system tuning, in 1/4096ths of an octave.DATA"Sound_WriteControlBlock  (&4018C)
#Parent Sound_
=>	R0 =	channel number (1-8)
	R1 =	offset to write (0-255)
	R2 =	word to write

<=	R0 =	preserved, or 0 for fail
	R1 =	preserved
	R2 =	previous word at this offset

This SWI writes a word to the channel's <control block=>Sound_sccb>.DIR$tt8�H�����@!Rootx�H����FSample45��H���;�FSample90DATA@Super
#Parent !Root
#Prefix Super_
<Sample45>
<Sample90>DATAFSuper_Sample45  (&40D81)
#Parent Super_
For internal use only.DATAFSuper_Sample90  (&40D80)
#Parent Super_
For internal use only.DIR$tt|�H����,errorblock|�F���w��Ydateformat�H����j %�3bboxDATASWI Error block:
0	Error number
4..	Error string. Zero terminated.

Bits in Error number
#Line; tab
0-7	Basic error number
8-23	'Owner'/<Generator of error=>.generators>
24-29	Reserved. Must be 0
30	Defined to be 0
31	Error is serious (hardware). Owner is then
	  0 Machine
	  1 Co-Processor
	  2 Floating point
	  3 Econet

Note:	Even *X* SWIs are allowed to *generate* (rather than return) serious errors.
#Subpage generators
Error generators
&000 - &0FF	Operating system - BBC compatible error
&100 - &11F	<OS_Module> errors
&120 - &13F	<OS_ReadVarVal>/<OS_SetVarVal> errors
&140 - &15F	Redirection manager errors
&160 - &17F	<OS_EvaluateExpression> errors
&180 - &19F	<OS_Heap> errors
&1A0 - &1AF	<OS_Claim>/<OS_Release> errors
&1B0 - &1BF	<OS_ChangeEnvironment> errors
&1C0 - &1DF	<OS_ChangeDynamicArea> errors
&1E0 - &1EF	<OS_CLI>/miscellaneous errors
&200 - &27F	<Font manager=>Font_> errors
&280 - &2BF	<Wimp=>Wimp:Wimp_> errors
&2C0 - &2FF	Date/time conversion error
&300 - &3FF	<Econet=>Econet_> errors
&400 - &4FF	FileSwitch errors
&500 - &5BF	<Podule=>Podule_> errors
&5C0 - &5FF	<Printer driver=>PDriver_> errors
&600 - &63F	General OS errors
&640 - &6FF	International module errors
&700 - &7FF	<Sprite=>OS_SpriteOp> errors
&800 - &87F	<Debugger=>Debugger_> errors
&880 - &8FF	BBC I/O Podule errors
&900 - &97F	Shell CLI errors, and miscellaneous others
&980 - &9FF	<Draw=>Draw_> errors
&A00 - &A3F	<ColourTrans=>ColourTrans_> errors
&A40 - &A7F	<ARM3=>Cache_> errors
&A80 - &ABF	<TaskWindow=>Wimp:TaskWindow_> errors
&AC0 - &AFF	<MessageTrans=>MessageTrans_> errors
&B00 - &B3F	Pinboard errors
&B40 - &B4F	Portable module errors
&1XX00 - &1XXFF	Errors from <filing system number &XX=>fsys_ident>
&20000 - &200FF	<Sound=>Sound_> errors
&20200 - &200FF	More podule errors
DATAYDate format string tokens
Token	Meaning
#Line
%DY	 Date (08)
%ST	 st, th or nd by date
%MN	 Month as number (04)
%MO	 Month as long entry (April)
%M3	 Month as 3 letters (Apr)
%WK	 Week of year
%DN	 Day with in year (098)
%WN	 Week day as number (7 = Saturday)
%W3	 Week day as 3 letters (Sat)
%WE	 Week day as long (Saturday)
%CE	 Century as 2 digits (19)
%YR	 Year as 2 digits (95)
%24	 Hour as 24 hour (15)
%12	 Hour as 12 hour (03)
%AM	 am or pm
%PM	 am or pm
%MI	 Minute as 2 digits (25)
%SE	 Second as 2 digits (50)
%CS	 Centisecond as 2 digits (87)
%TZ	 Time zone (BST/DST/+01:00, etc)
DATA�Bounding box block
#Parent !Root
Offset	Contents
#Line
0	Left co-ordinate
4	Bottom co-ordinate
8	Right co-ordinate
12	Top co-ordinate
DIR$��H����H�g!RoothH���E@�'�3Compress�H���(�� �3Decompress�H���O7`&zfileformatDATAgSquash
#Parent !Root
#Prefix Squash_
<Compress>
<Decompress>

<File format=>Squash_fileformat>
DATA�Squash_Compress  (&42700)
#Parent Squash_
If R0 bit 3 is set:
=>	R0 =	<flags=>.flags>
	R1 =	input size, or -1 means don't return max output size
<=	R0 =	required work space size
	R1 =	maximum output size, or -1 if we don't know or were not asked

If R0 bit 3 is clear:
=>	R0 =	<flags=>.flags>
	R1 =	workspace pointer
	R2 =	input pointer
	R3 =	bytes of input available
	R4 =	output pointer
	R5 =	bytes of output space available
<=	R0 =	<status=>.status>
	R1 preserved
	R2 =	pointer to first unused input byte
	R3 =	input bytes unused
	R4 =	pointer to first unused output byte
	R5 =	unused output space remaining

Call this SWI initially with R0 = 8 and R1 = input file size, using the sizes it reports to allocate workspace and output buffers as appropriate. Then call repeatedly with R0 bit 3 clear until all the data is processed (as reported via the <status bits=>.status> returned in R0). If all the input data can be presented at once (R0 bits 0,1 clear) and the output buffer is large enough, a faster algorithm is used.
#subpage Flags
Squash_Compress flags
Bit	Meaning if set
#Line
0	Continuing existing operation
1	More input remains after this
2	0 (reserved)
3	return workspace needed and max output size (all other bits must be 0)
4-31	0 (reserved)
#subpage Status
Squash_Compress statuses
Value	Meaning if set
#Line
0	Operation complete
1	Input exhausted		(R3�=�0)
2	Output space exhausted	(R5�\<�12)
DATA�Squash_Decompress  (&42701)
#Parent Squash_
If R0 bit 3 is set:
=>	R0 =	<flags=>.flags>
	R1 =	input size (-1 means don't return max output size)
<=	R0 =	required work space size
	R1 =	maximum output size (-1 means don't know/not asked)

If R0 bit 3 is clear:
=>	R0 =	<flags=>.flags>
	R1 =	workspace pointer
	R2 =	input pointer
	R3 =	bytes of input available
	R4 =	output pointer
	R5 =	bytes of output space available
<=	R0 =	<status=>.status>
	R1 preserved
	R2 =	pointer to first unused input byte
	R3 =	input bytes unused
	R4 =	pointer to first unused output byte
	R5 =	unused output space remaining

Call this SWI initially with R0 = 8 and R1 = input file size, using the sizes it reports to allocate workspace and output buffers as appropriate. Note that the current algorithm always returns R1 = -1, so you must get this size by some other means. Then call repeatedly with R0 bit 3 clear until all the data is processed (as reported via the <status bits=>.status> returned in R0). If the input is exhausted (R3 \< 12, <R0 bit 1 set=>.status>) the unused input must be resupplied.

If all the input data can be presented at once (R0 bits 0,1 clear) and the output buffer is large enough, a faster algorithm is used.
#subpage Flags
Squash_Decompress flags
Bit	Meaning if set
#Line
0	Continuing existing operation
1	More input remains after this
2	Asssume all ouput will fit in buffer (if bits 0,1 clear a faster algorithm is used)
3	return workspace needed and max output size (all other bits must be 0)
4-31	0 (reserved)
#subpage Status
Squash_Decompress statuses
Value	Meaning if set
#Line
0	Operation complete
1	Input exhausted		(R3�\<�12)
2	Output space exhausted	(R5�=�0)
DATAzFormat of Squash file (filetype fca)
#Parent Squash_
File header

Offset	Len	Contents
#Line
0	4	"SQSH"
4	4	length of data when uncompressed
8	4	<load address=>fsys_loadexec>	typically these hold
12	4	<exec address=>fsys_loadexec>	filetype and datestamp.
16	4	0 (reserved)

This is followed by compressed data from <Squash_Compress>, which is currently identical to the output from Unix {fCode}compress{f} in 12 bit mode. ({/}i.e.{/} remove the 20 byte header and the resulting file can be passed to {fCode}uncompress{f} or {fCode}gunzip{f}!)
# N> Not a lot of people know that. :-)
# Gerph> WHAT ! Coo, so it does - how cool!
DIR$���H���Q��!RootpH���R��NumberH������Register�H����
��Deregister�H���0���NumberToNamepH����
��Exists<H����*�AlphabetNumberToName4H���Զ��SelectAlphabet�F���O�X��SetTime�H���d���ReadCurrentTimeZone`H�����*�Alphabet H���';��AlphabetIdentifier� H���06�[CharacterPropertyTable(#H����2��Collate%H�����ControlTable$&H�����LowerCaseTable8'H���3���NameToNumber,(H���F�
PlainTable8)H�������ReadCalendarInformation�+H���'��?RepresentationTable -H���u���SelectKeyboardHandler�-H�����jTransformString /H���G��UpperCaseTable40H������{ValueTable�1H������WriteDirectionP3H�������ReadTimeZones�4H���"��
ReadSymbols�>H���]�+�Convert<OH�������3numbers�PH�������3anumbersDATA�Territory
#Prefix Territory_
#Parent !Root
#Table Columns 2
<Alphabet>
<AlphabetIdentifier>
<AlphabetNumberToName>
<CharacterPropertyTable>
<Collate>
<ControlTable>
<ConvertDateAndTime>
<ConvertOrdinalsToTime>
<ConvertStandardDate>
<ConvertStandardDateAndTime>
<ConvertStandardTime>
<ConvertTextToString>
<ConvertTimeStringToOrdinals>
<ConvertTimeToOrdinals>
<ConvertTimeToUTCOrdinals>
<Deregister>
<Exists>
<LowerCaseTable>
<NameToNumber>
<Number>
<NumberToName>
<PlainTable>
<ReadCalendarInformation>
<ReadCurrentTimeZone>
<ReadSymbols>
<ReadTimeZones>
<Register>
<RepresentationTable>
<SelectAlphabet>
<SelectKeyboardHandler>
<SetTime>
<TransformString>
<UpperCaseTable>
<ValueTable>
<WriteDirection>
#EndTable
DATA�Territory_Number  (&43040)
#Parent Territory_
<=	R0 =	<Current territory number=>Territory_numbers>

Reads the current territory number.
DATA�Territory_Register  (&43041)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>
	R1 =	pointer to table of entry points
	R2 =	R12 for code

Adds a territory to the list of active territories.
DATA�Territory_Deregister  (&43042)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>

Removes a territory from the list of active territories.
DATA�Territory_NumberToName  (&43043)
#Parent Territory_
=>	R0 =	<territory number=>territory_numbers>
	R1 =	pointer to buffer for name
	R2 =	length of buffer
	
Returns the name of given territory in the current territory's language.
DATA�Territory_Exists  (&43044)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>
<=	Z flag set if the territory is loaded (ie is EQ)

Checks to see if the given territory is present.
DATA�Territory_AlphabetNumberToName  (&43045)
#Parent Territory_
=>	R0 =	<alphabet number=>Territory_anumbers>
	R1 =	pointer to buffer to hold name
	R2 =	length of buffer
	
Returns the name of the alphabet in the current territory's language.
DATA�Territory_SelectAlphabet  (&43046)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 to use current territory
	
Selects the correct alphabet for a given territoty.DATA�Territory_SetTime  (&43047)
#Parent Territory_
=>	R0 =	pointer to a 5-byte UTC time
	
Sets the internal clock to a given time.DATA�Territory_ReadCurrentTimeZone  (&43048)
#Parent Territory_
<=	R0 =	pointer to name of the current time zone
	R1 =	offset from UTC to current time zone in centi-seconds
	
Returns information on the current timezone.DATA�Territory_Alphabet  (&43052)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 for current

<=	R0 =	<alphabet number=>Territory_anumbers> used
DATA�Territory_AlphabetIdentifier  (&43053)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 for current

<=	R0 =	pointer to identifier string for alphabet usedDATA[Territory_CharacterPropertyTable  (&43056)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 for current
	R1 =	code for required character property table
<=	R0 =	pointer to character property table

A character property table is a 256 bittable indicating whether or not each
character in the given territory's alphabet has a particular property.

#Tab
Code	Meaning when set
#line
0	Control code
1	Uppercase
2	Lowercase
3	Alphabetic
4	Punctuation
5	White space
6	Digit
7	Hex digit
8	Accent
9	Flows in same direction as territory write direction
10	Flows in reverse directionDATA�Territory_Collate  (&4305D)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 for current
	R1 =	pointer to string 1 (null terminated)
	R2 =	pointer to string 2 (null terminated)
	R3 =	flags:
	 	bit 0: ignore case
	 	bit 1: ignore accents
	 	bits 2-31: reserved (must be zero)

<=	R0 =	\<0 if string1 \< string2
	 	=0 if string1 = string2
	 	\>0 if string1 \> string2
	R1-R3 	preserved

This call compares strings in the given territory's alphabet.DATATerritory_ControlTable  (&43059)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 for current

<=	R0 =	pointer to control table

A character property table is a 256 byte table giving the value of each
character if pressed with the Ctrl key depressed.DATATerritory_LowerCaseTable  (&43057)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 for current

<=	R0 =	pointer to lower case table

A character property table is a 256 byte table with the lower case version of
each character in the alphabet.DATA�Territory_NameToNumber (&43060)
#Parent Territory_
=>	R0 = 	<territory number=>territory_numbers> of name
	R1 = 	pointer to territory name in alphabet of territory (R0)

<=	R0 = 	<territory number=>territory_numbers>, or 0 if unknown
DATA
Territory_PlainTable  (&4305A)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 for current

<=	R0 =	pointer to unaccented character table

A character property table is a 256 byte table giving the unaccented version
of each character.DATA�Territory_ReadCalendarInformation  (&4305F)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 to use current territory
	R1 =	pointer to 5 byte UTC time
	R2 =	pointer to 12 word buffer

<=	R0-R2 preserved

Offset	Value
#Line
0	Number of first working day in the week
4	Number of last working day in the week
8	Number of months in the current year
12	Number of days in the current month
16	Maximum length of AM/PM string
20	Maximum length of WE string
24	Maximum length of W3 string
28	Maximum length of DY string
32	Maximum length of ST string (may be zero)
36	Maximum length of MO string
40	Maximum length of M3 string
44	Maximum length of TZ stringDATA?Territory_RepresentationTable  (&4305C)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 for current

<=	R0 =	pointer to numeric representation table

A character property table is a 16 byte table giving the 16 characters
in the alphabet which should be used to represent the values 0-15.DATA�Territory_SelectKeyboardHandler  (&43054)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 to use current territory
DATAjTerritory_ConvertTextToString  (&43061)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 for current
	R1 =	pointer to buffer to hold transformed string
	R2 =	pointer to source string
	R3 =	length of buffer

<=	R0 =	length of transformed string (excl. null)

Transforms a string to allow a direct territory independent comparison.

DATATerritory_UpperCaseTable  (&43058)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 for current

<=	R0 =	pointer to upper case table

A character property table is a 256 byte table with the upper case version of
each character in the alphabet.DATA{Territory_ValueTable  (&4305B)
#Parent Territory_
=>	R0 =	<territory number=>territory_numbers>, or -1 for current

<=	R0 =	pointer to numeric value table

A character property table is a 256 byte table giving the numeric value
of each character in the given territory's alphabet. This includes
non-decimal numbers, hence F and f have a value of 15, while Z has no value.DATA�Territory_WriteDirection  (&43055)
#Parent Territory_
=>	R0 = <territory number=>territory_numbers>, or -1 for current

<=	R0 = bit field giving write direction
	 	Bit	Value	Meaning
	 	0	0	Left to right
	 	 	1	Right to left
	 	1	0	Top to bottom
	 	 	1	Bottom to top
	 	2	0	Lines are horizontal
	 	 	1	Lines are vertical

This SWI is used to read the direction that writing appears in a particular territory.
DATA�Territory_ReadTimeZones  (&4304A)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 to use current territory

<=	R0 =	pointer to name of standard time zone for territory
	R1 =	pointer to name of summer time
	R2 =	offset from UTC to standard time, in cs (signed 32-bit)
	R3 =	offset from UTC to summer time, in cs (signed 32-bit)

Returns information on the time zones for a territory.DATA
Territory_ReadSymbols  (&4304E)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 to use current territory
	R1 =	reason code

<=	R0 = 	requested value

Code	Meaning (strings are null terminated)
#Line
0	Pointer to decimal point string
1	Pointer to thousands separator
2	Pointer to byte list containing size of each group of digits
	in formatted non-monetary quantities (least significant first).
	 	255	no further grouping
	 	0	repeat last grouping for rest of number
	 	other	size of current group; next byte contains size
	 	 	of next more significant grup of digits.
3	Pointer to international currency symbol
4	Pointer to local currency symbol
5	Pointer to monetary decimal point string
6	Pointer to monetary thousands separator
7	Pointer to byte list containing size of each group of digits
	in formatted monetary quantities (least significant first).
	 	255	no further grouping
	 	0	repeat last grouping for rest of number
	 	other	size of current group; next byte contains size
	 	 	of next more significant grup of digits.
8	Pointer to positive sign used for monetary quantities
9	Pointer to negative sign used for monetary quantities
10	Number of fractional digits to be displayed in a formatted
	international monetary quantity
11	Number of fractional digits to be displayed in a formatted
	monetary quantity
12	Return for a non-negative formatted monetary quantity
	 	0 if currency symbol precedes value
	 	1 if currency symbol follows value
13	Return for a non-negative formatted monetary quantity
	 	0 if a space separates currency symbol and value
	 	1 if symbol and value not separated
14	Return for a negative formatted monetary quantity
	 	0 if currency symbol precedes value
	 	1 if currency symbol follows value
15	Return for a negative formatted monetary quantity
	 	0 if a space separates currency symbol and value
	 	1 if symbol and value not separated
16	Return for a non-negative formatted monetary quantity
	 	0 if parentheses surround symbol and value
	 	1 if the sign string precedes value and symbol
	 	2 if the sign string follows value and symbol
	 	3 if the sign string immediately precedes the symbol
	 	4 if the sign string immediately follows the symbol
17	Return for a negative formatted monetary quantity
	 	0 if parentheses surround symbol and value
	 	1 if the sign string precedes value and symbol
	 	2 if the sign string follows value and symbol
	 	3 if the sign string immediately precedes the symbol
	 	4 if the sign string immediately follows the symbol
18	Return pointer to list separator

DIR$���@H�����)�TimeToUTCOrdinals�AH����u��TextToString<BH���j���DateAndTime0DH����)OrdinalsToTime8EH���@y��StandardTime�FH����)�TimeStringToOrdinals�HH����S))TimeToOrdinals�IH������StandardDate`KH���2|��StandardDateAndTime�LH���Hq)H3_time_block_out8NH�����)3_time_block_inDATA�Territory_ConvertTimeToUTCOrdinals  (&43049)
#Parent Territory_
=>	R1 =	pointer to 5 byte time block
	R2 =	pointer to buffer to hold <result=>Territory_Convert_time_block_out>
	
Returns the time block as a set of useful numbers.
DATA�Territory_ConvertTextToString  (&73075)
#Parent Territory_
Not yet implemented - returns to caller with all registers preserved.DATA�Territory_ConvertDateAndTime  (&4304B)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 for current
	R1 =	pointer to 5 byte UTC time
	R2 =	pointer to output buffer
	R3 =	size of buffer
	R4 =	pointer to null terminated <format string=>swi_dateformat>

<=	R0 =	pointer to buffer (R2 on entry)
	R1 =	pointer to terminating 0
	R2 =	number of bytes free in buffer
	R3 =	pointer to format string (R4 on entry)
	R4 =	preserved

Result is in local time, language, and alphabet.DATATerritory_ConvertOrdinalsToTime  (&43051)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 for current
	R1 =	pointer to block to hold 5 byte UTC time
	R2 =	pointer to <ordinals=>Territory_Convert_time_block_in>

<=	R1, R2 preserved
DATA�Territory_ConvertStandardTime  (&4304E)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 for current
	R1 =	pointer to 5 byte UTC time
	R2 =	pointer to output buffer
	R3 =	size of buffer

<=	R0 =	pointer to buffer (R2 on entry)
	R1 =	pointer to terminating 0
	R2 =	number of bytes free in buffer
	R3 =	preserved

Result is in local time, language, and alphabetDATA�Territory_ConvertTimeStringToOrdinals  (&43050)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 for current
	R1 =	reason code of format string:
	 	1 => %24:%MI:%SE
	 	2 => %W3, %DY-%M3-%CE%YR
	 	3 => %W3, %DY-%M3-%CE%YR.%24:%MI:%SE
	R2 =	pointer to time string
	R3 =	pointer to buffer to hold <result=>Territory_Convert_time_block_in>

This SWI returns the time block as a set of useful numbers. Values not passed in the string are assigned -1 in the block.
DATA)Territory_ConvertTimeToOrdinals  (&4304F)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 for current
	R1 =	pointer to 5 byte time block
	R2 =	pointer to buffer to hold <result=>Territory_Convert_time_block_out>
	
Returns the time block as a set of useful numbers.
DATA�Territory_ConvertStandardDate  (&4304D)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 for current
	R1 =	pointer to 5 byte UTC time
	R2 =	pointer to output buffer
	R3 =	size of buffer

<=	R0 =	pointer to buffer (R2 on entry)
	R1 =	pointer to terminating 0
	R2 =	number of bytes free in buffer
	R3 =	preserved

Result is in local time, language, and alphabetDATA�Territory_ConvertStandardDateAndTime  (&4304C)
#Parent Territory_
=>	R0 =	<territory number=>Territory_numbers>, or -1 for current
	R1 =	pointer to 5 byte UTC time
	R2 =	pointer to output buffer
	R3 =	size of buffer

<=	R0 =	pointer to buffer (R2 on entry)
	R1 =	pointer to terminating 0
	R2 =	number of bytes free in buffer
	R3 =	preserved

Result is in local time, language, and alphabetDATAHUsable time block
#Parent Territory_ConvertTimeToOrdinals
Offset	Contents		Base value	Notes
#Line
0	centisecond
4	second
8	minute
C	hour (out of 24)
10	day within month	1		ANSI also uses 1
14	month in year		1		ANSI uses 0
18	year			0		ANSI uses 1900
1C	day of the week		1		ANSI uses 0
20	day of the week		1		ANSI uses 0
DATAUsable time block
#Parent Territory_ConvertTimeToOrdinals
Offset	Contents		Base value	Notes
#Line
0	centisecond
4	second
8	minute
C	hour (out of 24)
10	day within month	1		ANSI also uses 1
14	month in year		1		ANSI uses 0
18	year			0		ANSI uses 1900
DATA�Territory numbers
#Parent Territory_
Number	Territory
#Line
1	UK
2	Master
3	Compact
4	Italy
5	Spain
6	France
7	Germany
8	Portugal
9	Esperanto
10	Greece
11	Sweden
12	Finland
13	Unused
14	Denmark
15	Norway
16	Iceland
17	Canada1
18	Canada2
19	Canada
20	Turkey
21	Arabic
22	Ireland
23	Hong Kong
24	Russia
25	Russia2
26	Israel
27	Mexico
28	LatinAm
48	USA

It appears that territory and country numbers share the same sequence.
DATA�Alphabet numbers
#Parent Territory_
Number	Alphabet
#Line
100	BFont
101	Latin1
102	Latin2
103	Latin3
104	Latin4
105	Cyrillic
106	Arabic
107	Greek
108	Hebrew
120	Cyrillic2
DIR$((�TH���gG�C!RootVH���C��ConvertDate,WH����6g�DoFSOp�XH����1g�DoFSOpToGivenFS�ZH����I��EnableCache�[H����ê �EnumerateFS�^H����Ǫ EnumerateFSContexts�aH���0˪ �EnumerateFSListPdH���7��fsblock�dH������UGetObjectUID@gH���S�x~ReadCurrentContext�gH����}x@ReadFSNameiH����`x�ReadFSNumber�iH����/yReadFSTimeouts�jH������[ReadUserIdLlH���)�x�SetCurrentContext�lH����xSetFSName�mH�����x�SetFSNumber�nH���,AySetFSTimeouts�oH����кUpdateFSList�pH������htimeblockDATACNetFS
#Parent !Root
#Prefix NetFS_
<ConvertDate>
<DoFSOp>
<DoFSOpToGivenFS>
<EnableCache>
<EnumerateFS>
<EnumerateFSContexts>
<EnumerateFSList>
<GetObjectUID>
<ReadCurrentContext>
<ReadFSName>
<ReadFSNumber>
<ReadFSTimeouts>
<ReadUserId>
<SetCurrentContext>
<SetFSName>
<SetFSNumber>
<SetFSTimeouts>
<UpdateFSList>
DATANetFS_ConvertDate  (&4004B)
#Parent NetFS_
=>	R0 =	pointer to <file server format date and time=>NetFS_timeblock>
	R1 =	pointer to 5 byte output buffer

This SWI converts from a 5 byte <file server format date and time=>NetFS_timeblock> to a standard RISC OS 5 byte time block.
DATA�NetFS_DoFSOp  (&40048)
#Parent NetFS_
=>	R0 =	file server function
	R1 =	buffer
	R2 =	number of bytes to send from buffer to file server
	R3 =	total size of buffer
<=	R0 =	return condition from file server
	R3 =	number of bytes written to buffer by file server

This SWI commands the file server to perform the function in R0. If an error is returned you should copy it, as its buffer may be overwritten by subsequent use of NetFS.
DATA�NetFS_DoFSOpToGivenFS  (&4004C)
#Parent NetFS_
=>	R0 =	file server function
	R1 =	buffer
	R2 =	number of bytes to send from buffer to file server
	R3 =	total size of buffer
	R4 =	station number
	R5 =	net number
<=	R0 =	return condition from file server
	R3 =	number of bytes written to buffer by file server

This SWI commands the specified file server to perform the function in R0. If an error is returned you should copy it, as its buffer may be overwritten by subsequent use of NetFS.
DATA�NetFS_EnableCache  (&40051)
#Parent NetFS_

This SWI restarts the automatic update of the list of fileservers, which is automaticly suspended when <NetFS_EnumerateFSList> is called.
# Not EnumerateFS, as the 2-369 says.
DATA�NetFS_EnumerateFS  (&4004A)
#Parent NetFS_
=>	R0 =	offset in file server list of first item to read
	R1 =	pointer to buffer
	R2 =	size of buffer
	R3 =	number of items to read
<=	R0 =	offset of next item to read, or -1 if finished
	R3 =	number of items read

This SWI is used to list information about file servers which NetFS is currently logged on to - similar the information returned by the {fCode}*FS{f} command with no parameters. The information is returned as a series of <20 byte blocks=>NetFS_fsblock> - if you are logged on to your current file server it will be returned last. Apart from this the order is undefined. To return user ID information in the list use <NetFS_EnumerateFSContexts>.
DATANetFS_EnumerateFSContexts  (&4004E)
#Parent NetFS_
=>	R0 =	offset in file server list of first item to read
	R1 =	pointer to buffer
	R2 =	size of buffer
	R3 =	number of items to read
<=	R0 =	offset of next item to read, or -1 if finished
	R2 =	space remaining in buffer
	R3 =	number of items read

This SWI is used to list information about file servers which NetFS is currently logged on to, /including/ user ID - the information returned by the {fCode}*FS{f} command with no parameters. The information is returned as a series of <44 byte blocks=>.fsblock>.
#SubPage fsblock
NetFS file server block with user name
#Parent NetFS_
Size	Contents
#Line
1	Station number
1	Net number
1	Driver number
16	Disc name, space padded
1	Null byte
21	User name, space padded
1	Null byte
2	reserved
DATA�NetFS_EnumerateFSList  (&40049)
#Parent NetFS_
=>	R0 =	offset in file server list of first item to read
	R1 =	pointer to buffer
	R2 =	size of buffer
	R3 =	number of items to read
<=	R0 =	offset of next item to read, or -1 if finished
	R3 =	number of items read

This SWI is used to list information about file servers held by NetFS - the information returned by the {fCode}*ListFS{f} command. The information is returned as a series of <20 byte blocks=>NetFS_fsblock>, in alphabetical order. To ensure that the list does not change during enumeration the SWI disables the automatic update of the list - you *must* restart this after enumeration by calling <NetFS_EnableCache>.
DATA�NetFS file server block
#Parent NetFS_
Size	Contents
#Line
1	Station number
1	Net number
1	Driver number
16	Disc name, space padded
1	Null byte
DATAUNetFS_GetObjectUID  (&40050)
#Parent NetFS_
=>	R1 =	pointer to canonical object name
	R6 =	pointer to canonical special field

<=	R0 =	<object type=>fsys_objtype>
	R2 =	<load address=>fsys_loadexec>
	R3 =	<exec address=>fsys_loadexec>
	R4 =	object length
	R5 =	<object attributes=>fsys_objattr>
	R6 =	least significant word of UID
	R7 =	most significant word of UID

This SWI is similar to <OS_File 5=>OS_File5>, except that it also returns a 64 bit UID for the object. This is guaranteed to be unique over all file servers on all networks. Oh, for something equivalent for local files...
DATA~NetFS_ReadCurrentContext  (&40044)
#Parent NetFS_
<=	R0-R2 corrupted

This SWI is unimplemented, and will be removed.
DATA@NetFS_ReadFSName  (&40042)
#Parent NetFS_
=>	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI reads the name of your current file server, or returns a null string if your are not logged on.
DATA�NetFS_ReadFSNumber  (&40040)
#Parent NetFS_
<=	R0 =	station number
	R1 =	net number

This SWI returns the full station number of your current file server, or R0 = R1 = 0 if your current file server is not set.
DATANetFS_ReadFSTimeouts  (&40046)
#Parent NetFS_
<=	R0 =	transmit count
	R1 =	transmit delay
	R2 =	machine peek count
	R3 =	machine peek delay
	R4 =	receive delay
	R5 =	broadcast delay

This SWI reads the current communication timeouts. All delays are in centiseconds.
DATA[NetFS_ReadUserId  (&4004F)
#Parent NetFS_
=>	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 corrupted
	R1 =	pointer to terminator
	R2 =	free bytes in buffer (including terminator)

This SWI reads the user ID if logged onto the current file server, or returns a null string (single zero) if your are not logged on.
DATA�NetFS_SetCurrentContext  (&40045)
#Parent NetFS_
<=	All registers preserved.

This SWI is unimplemented, and will be removed.
DATANetFS_SetFSName  (&40043)
#Parent NetFS_
=>	R0 =	pointer to name

This SWI sets the named file server as the NetFS current file server, or generates an error if you are not logged onto the specified file server. It restores contex ({/}e.g.{/} the current directory).
DATA�NetFS_SetFSNumber  (&40041)
#Parent NetFS_
=>	R0 =	station number
	R1 =	net number
<=	R0,R1 corrupted

This SWI sets the full station number used by NetFS as the current file server. It restores contex ({/}e.g.{/} the current directory).

DATANetFS_SetFSTimeouts  (&40047)
#Parent NetFS_
=>	R0 =	transmit count
	R1 =	transmit delay
	R2 =	machine peek count
	R3 =	machine peek delay
	R4 =	receive delay
	R5 =	broadcast delay

This SWI sets the current communication timeouts. All delays are in centiseconds.
DATANetFS_UpdateFSList  (&4004D)
#Parent NetFS_
=>	R0 =	station number
	R1 =	net number
<=	R0, R1 corrupted

This SWI fetches the names of discs on the given file server (or all servers if R0 = R1 = 0), to ensure that the list from <NetFS_EnumerateFS> is current.
DATAhFiler server date and time block
#Parent NetFS_ConvertDate
Offset	Bits	Meaning			Base	Range
#Line
0	0-4	Day of Month		 	0-31
 	5-7	High bits of year	1980	0-127
1	0-3	Month of year		 	1-12
 	4-7	Low bits of year	1980	0-127
2	0-4	Hours			 	0-23
3	0-5	Minutes			 	0-59
4	0-5	Seconds			 	0-59

NetFS stores the file modification date in bits 8-23 of the file access attributes in the same format:

Offset	Bits	Meaning			Base	Range
#Line
0	0-7	Standard <access attributes=>fsys_objattr>	 
1	0-4	Day of Month		 	0-31
 	5-7	High bits of year	1980	0-127
2	0-3	Month of year		 	1-12
 	4-7	Low bits of year	1980	0-127
DIR$��uH���8G��!Root�uH���vA��BindPSName�vH���}�h*ConvertStatusToString�xH���5�h*ListServers}H���*K��ReadPSName�~H���,G��ReadPSNumber�H����M�ReadPSTimeouts̀H���k�h*�SetPSName��H���0I��SetPSNumberP�H����N�SetPSTimeoutsh�H�����h*�statusesDATA�NetPrint
#Parent !Root
#Prefix NetPrint_
<BindPSName>
<ConvertStatusToString>
<ListServers>
<ReadPSName>
<ReadPSNumber>
<ReadPSTimeouts>
<SetPSName>
<SetPSNumber>
<SetPSTimeouts>
DATA�NetPrint_BindPSName  (&40206)
#Parent NetPrint_
=>	R0 =	pointer to name
<=	R0 =	station number
	R1 =	net number

This SWI attempts to find a printer server with the given name that is not busy. If none can be found an error is returned.
DATANetPrint_ConvertStatusToString  (&40208)
#Parent NetPrint_
=>	R0 =	pointer to <status block=>.status>
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts the given <status=>NetPrint_statuses> to a null terminated string in the supplied buffer.
#SubPage status
NetPrint_ConvertStatusToString status block
Offset	Contents
#Line
0	<status=>NetPrint_statuses>
1	optional station number
2	optional net number
DATANetPrint_ListServers  (&40207)
#Parent NetPrint_
=>	R0 =	Format code:
	 	  0	<names and numbers=>.0>
	 	  1	<names only=>.1>, sorted with no duplicates
	 	  2	<names, numbers, status=>.2>
	R1 =	pointer to buffer
	R2 =	size of buffer
	R3 =	time to take before returning (centiseconds)
<=	R0 =	number of entries returned
	R3 =	Return code:
	 	  0	timed out
	 	  1	buffer full

This SWI returns the names of all printer servers. The format of the data returned in the buffer depends on the code passed in R0.
#SubPage 0
NetPrint_ListServers 0
The buffer is filled with entries of the form:

Size	Contents
#Line
1	station number
1	net number
	null terminated name
#SubPage 1
NetPrint_ListServers 1
The buffer is filled with sorted entries of the form:

Size	Contents
#Line
	null terminated name (case insensitve)
#SubPage 2
NetPrint_ListServers 2
The buffer is filled with entries of the form:

Size	Contents
#Line
1	station number
1	net number
1	<status=>NetPrint_statuses>
1	station number for status
1	net number for status
	null terminated name
DATA�NetPrint_ReadPSName  (&40202)
#Parent NetPrint_
=>	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI reads the name of your current printer server, or returns a null string if your printer server is only stored as a number.

Note: NetPrint prior to 5.26 is buggy, returning R1 one too great, and R2 one too small.

DATA�NetPrint_ReadPSNumber  (&40200)
#Parent NetPrint_
<=	R0 =	station number
	R1 =	net number

This SWI returns the full station number of your current printer server, or R0 = R1 = 0 if your current printer server is stored only as a name.
DATANetPrint_ReadPSTimeouts  (&40204)
#Parent NetPrint_
<=	R0 =	transmit count
	R1 =	transmit delay
	R2 =	machine peek count
	R3 =	machine peek delay
	R4 =	receive delay
	R5 =	broadcast delay

This SWI reads the current communication timeouts. All delays are in centiseconds.
DATA�NetPrint_SetPSName  (&40203)
#Parent NetPrint_
=>	R0 =	pointer to name

This SWI sets the named printer server as your current printer server.
# Gerph> I assume it takes a copy of it, but I'll have to check...
DATA�NetPrint_SetPSNumber  (&40201)
#Parent NetPrint_
=>	R0 =	station number
	R1 =	net number

This SWI sets the full station number of your current printer server.
DATANetPrint_SetPSTimeouts  (&40205)
#Parent NetPrint_
=>	R0 =	transmit count
	R1 =	transmit delay
	R2 =	machine peek count
	R3 =	machine peek delay
	R4 =	receive delay
	R5 =	broadcast delay

This SWI sets the current communication timeouts. All delays are in centiseconds.
DATA�NetPrint status values
Status	Name
#Line
0	Status_Ready
1	Status_Busy
2	Status_Jammed
6	Status_Offline
7	Status_AlreadyOpen

Status_Busy is the only status which uses the optional station and net number in its English message.
DIR$dd��H���5�u&�!root��H���W�AddCallBackp�F���bT���areasP�G���˩͡BGet�H����K�BinaryToDecimal�G����B�́BPut��G����֩͑ChangeDynamicArea(�H���܆JlClaim��G���`��hClaimScreenMemory��G�����͆CRC��G�������EnterOSp�G�����͆EvaluateExpression��H�����)Exit$�G����1��ExitAndDie@�G���X���Find,�H���w��GetEnv@�G���8b��arelease��G����r�SetECFOrigind�H����87�swinumberfromstring,�G���/h��<SWINumberToStringh�G���cG��GUpdateMEMC��F�������ValidateAddress��G���&ĥ�generateevent��H���/y�Mouse��H������ChangeEnvironmentx�G����m��Confirm<�G���%z��'SetVarVald�H����c��vartypes@�H����	�+`Args��H���P
�+<Byte�H����+`File�8H�����+�FSControl�H�����+SpriteOp_XH�����+�Module�RH�����+�ConvertԈH�����+�UpCall��H���W�+TGBPBt�H����+�PlotX�H���Q�+�GS8�H�����+pHeap�	H���( �+�Read<>	H���5!�+�Worddn	H����"�+�WritePy	F���a�^�QFindMemMapEntries�|	H����C�tmemmaprequest~	G������cSetMemMapEntries|	G���̮��7CallAfter��	G�����͞RemoveCallBackT�	G�����ͬRemoveTickerEvent�	G�������NCallEveryP�	H����#�+�DynamicArea�	F�����V�uAddToVector��	F����V�*BreakCtrl��	H����ai&�BreakPt|�	H������CallAVectord�	F�����\�NCallBack��	F�����\��ChangedBox��	H����i&EChangeRedirection�	H���T;�CheckModeValid�	H���]g�(�ClaimDeviceVectorм	H���m�(7systemdevices�	G����J�~CLI��	F���Qt^�BControl��	H���ᱮ�DelinkApplication`�	H���O=�GenerateError0�	H�����tKInstallKeyHandler|�	F�������intoffT�	F����L��inton(�	F���d��MouseButtons��	H����9�(�NewLine8�	H������1PrintCharl�	H���Ay�(�ReleaseDeviceVector�	G���C���RelinkApplication�	H����[7RemoveCursorsT�	F���
�i��RestoreCursors��	H����
��SetCallBack��	F�����j�SetEnv��	G�������SetColour��	F���/^k��setcolouractions`�	H���q�SubstituteArgs�	F����k�(UnusedSWI8�	G������ǒscalefactors��	G���Z.�ySClaimProcessorVector �	G���[(�Reset��	H���A&�+PSerialOp�
H����&�+Lhardware_t
H���'�+�ScreenMode�
G���87���servicecalll
H���K'�+HMMUControl$
H���o'�+HPlatformFeatures$
G����H��SynchroniseCodeAreas
H����g^%�3depreciated�
H����'�+,FSEntry_�
H����u�keyboardidD
H����Y��monitortypes�
H���e�CallASWI�
H����,�CallASWIR12
H����&�SpriteOp 
H���(�+�handlers�0
H�����q*�	PrettyPrintDATA�OS
#Parent !Root
#Prefix OS_
#Table Columns 5
<AddCallBack>
<AddToVector>
AMBControl
<Args>
<BGet>
<BinaryToDecimal>
<BPut>
<BreakPt>
<Byte>
<CallAfter>
<CallASWI>
<CallASWIR12>
<CallAVector>
<CallEvery>
<ChangedBox>
<ChangeDynamicArea>
<ChangeEnvironment>
<ChangeRedirection>
<CheckModeValid>
<Claim>
<ClaimDeviceVector>
<ClaimProcessorVector>
<ClaimScreenMemory>
<CLI>
<Confirm>
<Convert<name\><number\>=>OS_Convert>
<CRC>
<DelinkApplication>
<DynamicArea>
<EnterOS>
<EvaluateExpression>
<Exit>
<ExitAndDie>
<File>
<Find>
<FindMemMapEntries>
<FSControl>
<GBPB>
<GenerateError>
<GenerateEvent>
<GetEnv>
<GSInit>
<GSRead>
<GSTrans>
<Heap>
<HeapSort>
<InstallKeyHandler>
<IntOff>
<IntOn>
<MMUControl>
<Module>
<Mouse>
<NewLine>
<PlatformFeatures>
<Plot>
<PrettyPrint>
<PrintChar>
<ReadArgs>
<ReadC>
<ReadDefaultHandler>
<ReadDynamicArea>
<ReadEscapeState>
<ReadLine>
<ReadMemMapEntries>
<ReadMemMapInfo>
<ReadModeVariable>
<ReadMonotonicTime>
<ReadPalette>
<ReadPoint>
<ReadRAMFsLimits>
<ReadSysInfo>
<ReadUnsigned>
<ReadVarVal>
<ReadVduVariables>
<Release>
<ReleaseDeviceVector>
<RelinkApplication>
<RemoveCallBack>
<RemoveCursors>
<RemoveTickerEvent>
<Reset>
<RestoreCursors>
<ScreenMode>
<SerialOp>
<ServiceCall>
<SetCallBack>
<SetECFOrigin>
<SetMemMapEntries>
<SetColour>
<SetVarVal>
<SpriteOp>
<SubstituteArgs>
<SWINumberFromString>
<SWINumberToString>
<SynchroniseCodeAreas>
<UpCall>
<UpdateMEMC>
<ValidateAddress>
<Word>
<Write0>
<WriteC>
<WriteEnv>
<WriteI>
<WriteN>
<WriteS>
#EndTable

#Indent 2
<OS_Byte values=>OS_ByteIndex>	<CMOS RAM bytes=>OS_ByteCMOS>	<Service Calls=>Service_Index>	<Vectors=>vector_index>	<Images=>ImageEntry_>	<FileSystems=>FSEntry_>	<Hardware vectors=>os_hardware_vectors>	<Depreciated calls=>OS_depreciated>DATA�OS_AddCallBack  (&54)
#Parent OS_
=>	R0 =	pointer to address to call
	R1 =	value of R12 to be called with

<=	R0, R1 preserved
                 
A transient callback is placed on a list of tasks who want to be called as soon as RISC OS is not busy. And this SWI will place a transient routine on that list. It is usually used by an interrupt routine that needs to do complex processing that would take too long in an interrupt, or that needs to call a non-re-entrant SWI. OS_AddCallBack tells RISC OS that the interrupt routine wishes to be 'called back'. This can happen when RISC OS is being threaded out of - that is, when it enters User mode with interrupts enabled and the SVC stack empty (either after a SWI is called, or after an interrupt). It can also happen when RO is idling, for example, while it is waiting in <OS_ReadC>.

Transient CallBacks can safely be used by many clients.

A routine called by this mechanism must preserve ALL registers and return by MOV PC,R14.DATA�Dynamic areas
Area	Contents
#Line
0	System Heap
1	RMA
2	Screen Area
3	Sprite Area
4	Font Cache
5	RAM Filing System
6	Free pool (RISC OS 3.6)

256+	User dynamic area

See <memory map=>Machine:Logical> for location.DATA�OS_BGet  (&0A)
#Parent OS_
=>	R1 =	file handle

<=	R0 =	byte read
	C clear if byte read.

This SWI reads a byte from the current sequential file pointer.DATAOS_BinaryToDecimal  (&28)
#Parent OS_
=>	R0 =	integer
	R1 =	pointer to buffer
	R2 =	size of buffer
<=	R2 =	length of string

This SWI converts a 32 bit integer to a string. Why we have this call, is a bit unclear, as <OS_ConvertInteger4=>OS_Convert> should do the same..   DATA�OS_BPut  (&0B)
#Parent OS_
=>	R0 =	byte
	R1 =	file handle

This SWI writes a byte to the current sequential file pointer.DATA�OS_ChangeDynamicArea  (&2A)
#Parent OS_
=>	R0 =	<area=>OS_Areas> to alter
	R1 =	amount to move in bytes (signed integer)

<=	R0 preserved
	R1 =	amount the area has changed by ({*}unsigned{*})

Let you enlarge (r1 positive) or shrink (r1 negative) the selected area.

If you need to release as much space as possible from an area, try to reduce its size by 16 MBytes.

Note, that normally this cannot be used while the application work area is being used; main purpose is for the *OS, modules and utilities. This SWI does an upcall, if the upcall is claimed when an application is running in the application workspace, the memory movement is allowed.DATAlOS_Claim  (&1F)
#Parent OS_
=>	R0 =	<vector number=>vector_index>
	R1 =	pointer to address of claiming routine
	R2 =	value to be passed in R12 when the routine is called.

<=	R0-R2 preserved
                 
This call adds the <routine=>vector_rules> whose address is given in R1 to the <list=>vector_chain> of routines claiming the vector. This becomes the first routine to be used when the vector is called.

Any earlier instances of the same routine are removed. Routines are defined to be the same if the values passed in R0, R1 and R2 are identical. If you wish to add multiple "identical" routines use <OS_AddToVector>.

The R2 value enables the routine to have a workspace pointer set up in R12 when it is called. If the routine using the vector is in a module (as will often be the case), this pointer will usually be the same as its module workspace pointer.DATAhOS_ClaimScreenMemory  (&41)
#Parent OS_
=>	R0 =	1 for claim, 0 for release
	R1 =	bytes required

<=	C set : memory not claimed
	R1 =	bytes available
	C clear : memory claimed
	R1 =	bytes available
	R2 =	start address

Can only be claimed if no other bank than 1 has been used. While claimed you must not cause screen to scroll.

Not very useful, is it?DATA�OS_CRC  (&5B)
#Parent OS_
=>	R0 =	CRC continuation value, or 0
	R1 =	pointer to start of block
	R2 =	pointer to end of block
	R3 =	Increment

<=	R0 =	CRC value

Calculate the Cyclic-Redundancy Check for a block of data.

#tab
Note:	The SWI adds R3 to R1 until it equals R2, ie if R1 never equals R2 you have an infinite loop.
Note2:	The byte at R2 is not included in the CRC value.
DATA�OS_EnterOS  (&16)
#Parent OS_
<=	R13 =	R13_svc
	R14 =	R14_svc

This SWI sets the processor to Supervisor mode. Interrupt and Fast Interrupt status is unaltered.

To return to UserMode:
#tab ,fCode
	TEQP  PC,#0		;	Set Usermode, enable interrups
	MOV   R0,R0		;	Anything that doesn't use 8-14
or	
	BIC   R14,PC,#%11	;	Only sets usermode.
	TEQP  R14,#0		;	Interrupts & flags
	MOV   R0,R0		;	are not affected.

#tab
Note:	SWI calls while in SVC, will alter R14, and will use R13 as stack.DATA�OS_EvaluateExpression  (&2D)
#Parent OS_
=>	R0 =	pointer to string
	R1 =	pointer to buffer
	R2 =	length of buffer

<=	R1 =	0 if integer returned, else preserved
	R2 =	integer if R1=0, else length of string

This SWI takes a string, evaluates it, and places result in given buffer. Type of the result is given in R1 :

	0	Integer returned in R2
	Not 0	Pointer to string, length in R2DATA)OS_Exit  (&11)
#Parent OS_
=>	R0 =	Pointer to <error block=>swi_errorblock>
	R1 =	"ABEX" (&58454241) If Return code
	R2 =	Return code
   
<=	Never returns

This SWI passes control over to the most recent <exit handler=>OS_handlers_exit>.

If R1 = "ABEX", and 0 \<= R2 \<= Sys$RCLimit, then Sys$ReturnCode is set to R2.

If R1 = "ABEX" and R2 is outside this range, then Sys$ReturnCode is still set to R2, and a garbled error message issued (0 is used at the pointer to an error block). This is a very long lived OS bug.

See also <OS_ExitAndDie>DATAOS_ExitAndDie  (&50)
#Parent OS_
=>	R0 =	pointer to <error block=>swi_errorblock>
	R1 =	"ABEX" (&58454241) if return code
	R2 =	return code
	R3 =	pointer to module name

<=	Never returns

This SWI does exactly what <OS_Exit> does, but in addition it kills the module in R3.DATA�OS_Find  (&0D)
#Parent OS_
=>	R0 =	reason code, and <path bits=>.pathbits> if reason\<\>0
	R1 =	filename for opening files, handle otherwise
	R2 =	pathname, if 'path used' is 1 or 2)

<=	R0 =	file handle, if opening

This SWI opens and closes files according to the reason code

#tab
R0	Action
#Line
&00	Closes file R1, or all files if R1 = 0
&40	Open existing file with read-only access
&80	Create empty file with read/write access
&C0	Open existing file with read/write access
#
#Subpage pathbits
OS_Find path bits
Low bits	Meaning
#Line
0-1		Path used
		  0 : File$Path
		  1 : String pointed to by R2
		  2 : Variable pointed to by R2
		  3 : None
2		If 1 then error if open existing dir
3		If 1 then error if file doesn't exist
4-5		0DATAOS_GetEnv  (&10)
#Parent OS_
<=	R0 =	address of *command
	R1 =	RAM limit
	R2 =	pointer to 5-byte time of prog start

The values returned by this SWI in R0 and R2 can be set with <OS_WriteEnv>, the RAM limit is set with <OS_ChangeEnvironment 0=>OS_ChangeEnvironment>.
DATAaOS_Release  (&20)
#Parent OS_
=>	R0 =	<vector=>vector_index> number
	R1 =	address of releasing routine
	R2 =	value given in R2 when claimed.

<=	R0-R2 preserved
                 
This removes the routine, which is identified by both its address and workspace pointer, from the list for the specified vector. The routine will no longer be called.DATA�OS_SetECFOrigin  (&56)
#Parent OS_
=>	R0 =	x
	R1 =	y

This SWI sets the point with which to align the bottom left of ECF patterns with.

You can also use <VDU 23,17,6=>VDU:23,17,6>.DATA�OS_SWINumberFromString  (&39)
#Parent OS_
=>	R1 =	pointer to name, control terminated

<=	R0 =	SWI number
	R1 =	preserved

This call converts a SWI name string to a SWI number. An error is given if the SWI name is not recognized.

#tab
The conversion is as follows:
�	A leading X is stripped. If present, it will cause &20000 to be added to the number returned (bit 17).
�	System names are checked for. Note that the conversion of SWIs isn't very bidirectional: the name OS_WriteI+" " can be produced, but only OS_WriteI is recognized.
�	Modules are scanned. If the module prefix matches the one given, and the suffix to the name is a number, then that number is added to the module's SWI 'chunk' base, and the sum returned. For example, Wimp_&23 returns &400E3, as the Wimp's chunk number is &400C0.
�	If the suffix is a name, and this can be matched by the module, the appropriate number is returned. For example, <Wimp_Poll=>Wimp:Wimp_Poll> returns &400C7.
DATA<OS_SWINumberToString  (&38)
#Parent OS_
=>	R0 =	SWI Number
	R1 =	pointer to buffer
	R2 =	buffer length

<=	R0,R1 preserved
	R2 =	length of string in buffer

This call converts a SWI number to a string containing its SWI name. The returned string is null-terminated, and starts with an X if the SWI number has bit 17 set.

SWI numbers \< &200 have an 'OS_' prefix to the main part, and a SWI-dependent end section (which is 'Undefined' for unkown OS SWIs).

SWI numbers in the range &100 to &1FF are converted in the form OS_WriteI+"A", or OS_WriteI+23 if the character is not a printable one.

SWI numbers >= &200 are looked for in modules. If a suitable name is found, it is given in the form module_name or module_number, eg. Wimp_Initialise, Wimp_32. If no name is found in the modules, the string 'User' is returned.DATAGOS_UpdateMEMC  (&1A)
#Parent OS_
=>	R0 =	New bits
	R1 =	Mask

<=	R0 =	Old register value

This SWI programs individual bits in the <MEMC control register=>Machine:MEMC1>. Since the MEMC is write-only, this is done via a software copy, maintained by the OS.

Reg = (RegCopy AND NOT R1) OR (R0 AND R1)

To read: R0,R1 = 0DATA�OS_ValidateAddress  (&3A)
#Parent OS_
=>	R0 =	minimum address
	R1 =	maximum address

<=	R0,R1 preserved
	C flag is clear if the range is OK, set otherwise

SWI checks the address range between R0 and R1-1 to see if the specified range lies in <logical RAM=>Machine:Logical> and has a mapping into physical RAM.

Note: This does /not/ check that the memory actually exists, only that it ought to exist. If you have used <OS_SetMemMapEntries>, then this call will not work as expected.DATAOS_GenerateEvent  (&22)
#Parent OS_
=>	R0 =	<event number=>Event_index>
	R1... event parameters

<=	all registers preserved

Note that, as usual, the event vector will only be called if the event number given in R0 has previously been enabled using <OS_Byte 14=>os_byte014>.
DATAOS_Mouse  (&1C)
#Parent OS_
#Wrap Off
<=	R0 =	x co-ordinate
	R1 =	y co-ordinate
	R2 =	<buttons=>OS_mousebuttons>
	R3 =	time of button change.
#Wrap

This SWI returns the current mouse status, either from the mouse buffer, or the current mouse position if the buffer is empty.
DATA�OS_ChangeEnvironment (&40)
#Parent OS_
=>	R0 =	<handler number=>OS_handlers>
	R1 =	new address, or 0 to read
	R2 =	value of R12 when code is called
	R3 =	pointer to buffer if appropriate or 0 to read

<=	R0 preserved
	R1 =	previous address
	R2 =	previous R12
	R3 =	previous buffer pointer

This is a single routine which performs the actions of <OS_Control>, <OS_SetEnv>, <OS_CallBack>, <OS_BreakCtrl> and <OS_UnusedSWI>. In fact all of those routines use this call and are only kept for backwards compatibility, so you should use this call in preference.

Note, OS_ChangeEnvironment vectors through ChangeEnvironmentV. A routine linked into this vector can stop the change from happening by setting R1 to zero and passing the call on.

If you set up any handlers, you *must* provide Error, Exit and UpCall handlers so that you can restore all handlers on any kind of program exit (even X SWIs can generate serious errors).
DATA�OS_Confirm  (&59)
#Parent OS_
<=	R0 =	result
	C set if escape pressed
	Z set if result was in any way Yes.

This call asks the user for confirmation of an action by changing the pointer and waiting until a key or mouse button is pressed. Select returns the value 121 (character y), Menu and Adjust return 110 (character n). Keypresses return the lower-case ascii value.

This should only be used in applications outside the desktop, if ever.DATA'OS_SetVarVal  (&24)
#Parent OS_
=>	R0 =	pointer to name
	R1 =	pointer to value to set to
	R2 =	length, or -1 to unset
	R3 =	name pointer (0 for 1st call)
	R4 =	<variable type=>OS_vartypes>
	
<=	R3 =	new name pointer
	R4 =	variable type

This SWI sets a variables value to that specified.DATA�Variable types
0	String		Pointer to string, which will be <GSTransed=>OS_GS1> now (will not be 0 terminated)
1	Number		4 byte integer
2	Macro		Pointer to string, which will be GSTransed each time it is used
3	Expanded	Expression which will be sent through <OS_EvaluateExpression>
4	Literal		String that will not be GSTransed
+16	Code		Pointer to a block of <code=>.code>
#Subpage code
Variable type Code
R1 points to a block containing the following :

Offset	Contents
#Line
0	This is where the OS jumps when the variable is to be written. Will normally be a branch instruction
4	This is where the OS jumps when the variable is to be read - your code may start here
#tab

When the Write entry is called :
=>	R1 =	value
	R2 =	length of value
<=	R1,2,4,10-12 may be corrupted.

When the Read entry is called :
=>	-
<=	R0 =	pointer to value
 	R1 may be corrupted
 	R2 =	len of value

The two entry points are called in SVC mode, so if you call a SWI then R14 will be corrupted.

Note that <OS_ReadVarVal> is marked as being re-entrant, so in theory your code could be called while threaded. However, the PRM makes no mention of this, neither warning that it could happen, nor stating that the kernel makes sure that it does not happen.
DIR$``��H����`��!Root��G���6 ���000|�G����S�Ͷ0014�G���͑��z002��G���CV�͏003@�G�����Ͱ004��G������}005p�G���[����006<�G�����007�G���x��ͼ254��F���.��U�255X�H����H,J008DATA�OS_Args  (&09)
#Parent OS_
=>	R0 =	reason code
	R1 =	file handle
	R2 =	(attribute)
#tab

Reason codes :
0	<Read pointer/FS=>os_args000>
1	<Write pointer=>os_args001>
2	<Read extent=>os_args002>
3	<Write extent=>os_args003>
4	<Read allocated size=>os_args004>
5	<Read EOF status=>os_args005>
6	<Reserve space=>os_args006>
7	<Read pathname of open file=>os_args007>
8	<Inform of changed image stamp=>os_args008>
254	<Read info on file handle=>os_args254>
255	<Flush file(s)=>os_args255>DATA�OS_Args 0
#Parent OS_Args
#Wrap off
=>	R0 =	0
	R1 =	file handle or 0
<=	R0 =	<filing system=>fsys_ident>	(if R1 = 0)
	R2 =	file pointer			(if R1 \<> 0)
#Wrap on

This SWI returns the temporary filing system no, or filing pointer.DATA�OS_Args 1
#Parent OS_Args
=>	R0 =	1
	R1 =	file handle
	R2 =	new pointer

This SWI sets the files sequential pointer. If it is outside current extent, more space is allocated.DATAzOS_Args 2
#Parent OS_Args
=>	R0 =	2
	R1 =	file handle
<=	R2 =	extent of file

This SWI reads the extent of a file.DATA�OS_Args 3
#Parent OS_Args
=>	R0 =	3
	R1 =	file handle
	R2 =	extent

This SWI sets the extent of a file. New space is filled with zeros.DATA�OS_Args 4
#Parent OS_Args
=>	R0 =	4
	R1 =	file handle
<=	R2 =	new extent

This SWI returns the actual size of the file. This will be equal to or larger than its extent.DATA}OS_Args 5
#Parent OS_Args
=>	R0 =	5
	R1 =	file handle
<=	R2 =	0 if not EOF

This SWI returns 0 if not at End of File.DATA�OS_Args 6
#Parent OS_Args
=>	R0 =	6
	R1 =	file handle
	R2 =	size to ensure
<=	R2 =	actual size

This SWI ensures that the size of the file is not less than R2. Note that the extent is not altered.DATA�OS_Args 7
#Parent OS_Args
=>	R0 =	7
	R1 =	file handle
	R2 =	pointer to buffer
	R5 =	length of buffer
<=	R5 =	free bytes in buffer

This SWI returns the pathname of the file given in R1.DATA�OS_Args 254
#Parent OS_Args
=>	R0 =	254
	R1 =	file handle
<=	R0 =	stream status word
	R2 =	<filing system info word=>fsys_infoword>

This SWI returns info on the given file handle.

#Tab
Bits in stream status word :
3	Stream is interactive
4	Unbuffered. Directly supports GBPB
5	Is a directory
6	Read access
7	Write access
8	Have written to it
9	Next read gives EOF error
10	Unbuffered
11	Un-allocated
12	Critical
13	Data have been lostDATA�OS_Args 255
#Parent OS_Args
=>	R0 =	255
	R1 =	file handle or 0 for all

This SWI ensures that any buffered data on the given file(s) is written out.DATAJOS_Args 8
#Parent OS_Args
=>	R0 =	8
	R1 =	file handle
	R2 =	new <image stamp=>FileCore_cycleid>

This SWI is made by an image filing system when it has changed a disc's image stamp. FileSwitch passes this on to the handler of discs, which typically does nothing more than storing the new image stamp in the disc's record.
DIR$<<��G����b��*!Root�H�����O004\�G������@121��H���c�V121a��H�����200��H���l]�n229L�G�������247<�H���Nt�)254h�H���5Au&index�H����/Yv013H���H�Y/0140G���zp���161�G����t��C162@H���
�+cmosX=H����
�0020AH������011�BG���H���\015PDG�������019LEG���p���b020�FH���{�021lGH���6���025HIH�����)�106LG���h��
112(NH�����%Q113|OH����'@!-117�QG������H118�SG�����͐134�UG����<��)135�WG���-{�͏144@YG���5��165@ZH����q
�177�[G���?��%196 ]G������b197�^H���L�202�bH���{��255�fH�����012�hH�����B!{003 kH���L=�000�mH���Dgy001LoH����M�8005�pH���p���127lqH���G��139XrH���Gg�2410tH���x��|245�uH�����g�printersTwH���eC!m003state�yH�������004statep{H���~��006}H���yz��008�}H����
�009�H����	�0104�H����g��007,�H���4D018��H���22�070p�H�����071�H���
U��3121a_A5000�H���W�z114hH�����`120�H����<122H���V,y124�H���*-1125�H����+126�!H���P�128�$H���G�&w129P+H����+�138�.H���s�.�143�/H���ۄq&�145�1H���֊q&152�3H���>Z153,7H����q&Y156�<H�����Y160�@H�����D163(EH������176�FH���D{.uinputsourceshGH���4K178�HH����
��181�KH���b���182�MH���+i�191OH���9:)8192DQH����tg198�RH����	>199�TH���}��201�VH���C�203�XH�����204�ZH����qS211�[H���H�212�]H���gh*��121a_RPC �H���r>)193,�H��� �&�194�H���/&�&�195��H��� �
�213��H����
;214��H���l�216L�H������217�H����$��218��H���X���219h�H���� �w220�H����,+�	221�H����.�230@	H����f�f236�
H������\237H����V��238�H���X�240�H���TQ(�242�H����''�243H����t��246�H����&�250�H����q&�251 H�����%�253DATA*OS_Byte  (&06)
#Parent OS_
=>	R0 =	<reason code=>os_byteindex>

This SWI does a bewildering amount of different things, based on the reason code in R0.

For calls with R0 between 166 and 255:
   NewVal = (OldVal AND R2) EOR R1

#tab
To read:	R1 = 0		R2 = &FF
To set:		R1 = new value	R2 = 0
DATAOOS_Byte 4  Cursor Key Status
#Parent OS_ByteIndex
=>	R0 =	4 (&04)
	R1 =	<new state=>OS_Byte004state>

<=	R0 preserved
	R1 =	old state
	R2 corrupted

This call alters the effect of the four arrow keys and the Copy key. The value of R1 determines their state.

<OS_Byte 237=>OS_Byte237> may be used to write and read this state.
DATA@OS_Byte 121  Keyboard scan
#Parent OS_ByteIndex
=>	R0 =	121 (&79)
	R1 =	<key=>os_byte121a> to start at, or key EOR &80 for single key

<=	R1 =	for range check :	key pressed, or &FF if none pressed
	 	for single key :	&FF if key pressed, or other if not
	R2 =	corrupted

This checks which keys are being pressed.
DATAVInternal Keys
#Parent OS_Byte121
#wrap off
32	Print	69	J	19	5	61	Insert		106	kp 0
113	F1	70	K	52	6	62	Home		107	kp 1
114	F2	86	L	36	7	63	Pg Up		124	kp 2
115	F3	101	M	21	8	78	Pg Down		108	kp 3
20	F4	85	N	38	9	79	"		122	kp 4
116	F5	54	O	102	,	0	Shift		123	kp 5
117	F6	55	P	23	-	1	Ctrl		26	kp 6
22	F7	16	Q	103	.	2	Alt		27	kp 7
118	F8	51	R	104	/	3	Left Shift	42	kp 8
119	F9	81	S	56	[	4	Left Ctrl	43	kp 9
30	F10	35	T	120	\\	5	Left Alt	58	kp +
28	F11	53	U	88	]	6	Right Shift	59	kp -
29	F12	99	V	87	;	7	Right Ctrl	76	kp .
65	A	33	W	112	ESC	8	Right Alt	74	kp /
100	B	66	X	96	TAB	98	Space		90	kp #
82	C	68	Y	64	Caps	89	Delete		91	kp *
50	D	97	Z	31	ScrollL	73	Return		60	kp Enter
34	E	39	0	77	NumL	105	Copy		9	Left mouse
67	F	48	1	44	Break	57	up		10	Center mouse
83	G	49	2	45	~	121	right		11	Right mouse
84	H	17	3	46	�	25	left		94	extra key
37	I	18	4	47	\<-|	41	down		93	+

<Diagram of the standard Archimedes keyboard=>.a5000>
<Diagram of RiscPC keyboard=>.rpc>
#Subpage a5000
Diagram of standard Archimedes keyboard
#draw c,f OS_Byte121a_A5000
#Subpage rpc
Diagram of RiscPC keyboard
#draw c,f OS_Byte121a_RPC
DATA�OS_Byte 200  Alter Break and Escape effect
#Parent OS_ByteIndex
=>	R0 =	200 (&C8)
	R1 =	EOR value
	R2 =	AND value

<=	R0 =	preserved
	R1 =	state before being overwritten
	R2 =	keyboard disable flag (see <OS_Byte 201=>OS_Byte201>)
                                                  
This call can read or change the effects of a reset (including resets caused by Break) and of Escape.

The bottom two bits of R1 have the following significance:

#Tab
Bit	Value	Effect
#line
0	0	Normal escape action
	1	Escape disabled unless caused by <OS_Byte 125=>OS_Byte125>
1	0	Normal reset action
	1	Power on reset (only if bits 2-7 of R1 are zero) This means a value of %00000001x causes a memory clear (no matter what kind of reset was pressed)
DATAnOS_Byte 229  Alter Escape key status
#Parent OS_ByteIndex
=>	R0 =	229 (&E5)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	state before being overwritten
	R2 =	escape effects (see <OS_Byte 230=>OS_Byte230>)
                                                  
This call allows you to enable or disable the generation of escape conditions, and to read the current setting. Escape conditions may be caused by pressing the current escape character or by inserting it into the input buffer with <OS_Byte 153=>OS_Byte153>.

If the value in R1 passed is zero, which is the default, then escape conditions are enabled. Any non-zero value will disable them. When they're disabled, the current escape character set by <OS_Byte 220=>OS_Byte220> will pass through the input stream unaltered.

<OS_Byte 200=>OS_byte200> can also control the enabling of the escape conditions.
DATA�OS_Byte 247  Alter Break key actions
#Parent OS_ByteIndex
=>	R0 =	247 (&F7)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	value before being overwritten
	R2 corrupted
                                                  
This call reads and changes the result of pressing Break. The value byte alters Break and modifiers of it as follows:

#Tab
Bits	Key combination
0,1	Break
2,3	Shift Break
4,5	Ctrl Break
6,7	Ctrl Shift Break

Each two bit numbers can mean one of these:

00	Act as reset
01	Act as escape key
10	No effect
11	undefined

The default is %00000001, so Break causes an escape condition, together with Shift and/or Ctrl it acts like the reset button. Please note that this SWI also alters the CMOS when writing a new status.DATA)OS_Byte 254  Alter effect of keypad keys
#Parent OS_ByteIndex
=>	R0 =	254 (&FE)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	value before being overwritten
	R2 corrupted
                                                  
This call allows you to enable or disable the effect of Shift and Ctrl on the numeric keypad or to read the current state. These keys may modify the code just before it is inserted into the input buffer.

If R1 is zero, then Shift and Ctrl are enabled. Any non-zero value will disable them. This is the default.

#Tab
If Shift/Ctrl are enabled, then the following action occur depending on the value generated by a keypad key:

* key value >=&80	:	Shift exclusive ORs the value with &10 Ctrl  exclusive ORs the value with &20
* key value \<&80	:	Shift and Ctrl still have no effect.

If NumLock is off, then a {fCode}*Fx 254 0{f} makes the keypad to act exactly like the cursor keys, including Shift, Ctrl or both.

The base value used for numeric keypad interpretation can be read and written with <OS_Byte 238=>OS_Byte238>.
DATAOS_Byte Index
#Parent OS_Byte
0	&00	<Display OS version info=>os_byte000>
1	&01	<Write user flag=>os_byte001>
2	&02	<Specify input stream=>os_byte002>
3	&03	<Specify output stream=>os_byte003>
4	&04	<Cursor key status=>os_byte004>
5	&05	<Write printer driver type=>os_byte005>
6	&06	<Write printer ignore char=>os_byte006>
7	&07	<Write RS232 receive rate=>os_byte007>
8	&08	<Write RS232 transmit rate=>os_byte008>
9	&09	<Write duration of first flash colour=>os_byte009>
10	&0A	<Write duration of second flash colour=>os_byte010>
11	&0B	<Write keyboard auto-repeat delay=>os_byte011>
12	&0C	<Write keyboard auto-repeat rate=>os_byte012>
13	&0D	<Disable event=>os_byte013>
14	&0E	<Enable event=>os_byte014>
15	&0F	<Flush buffer=>os_byte015>
18	&12	<Reset function keys=>os_byte018>
19	&13	<Wait for vsync=>os_byte019>
20	&14	<Reset font definitions=>os_byte020>
21	&15	<Flush selected buffer=>os_byte021>
25	&19	<Reset group of font definitions=>os_byte025>
70	&46	<Read/Write country number=>os_byte070>
71	&47	<Read/Write alphabet number=>os_byte071>
106	&6A	<Select pointer / Activate mouse=>os_byte106>
112	&70	<Write VDU driver screen bank=>os_byte112>
113	&71	<Write display hardware screen bank=>os_byte113>
114	&72	<Write shadow/non-shadow state=>os_byte114>
117	&75	<Read VDU status=>os_byte117>
118	&76	<Reflect keyboard status in LEDs=>os_byte118>
120	&78	<Write keys pressed information=>os_byte120>
121	&79	<Keyboard scan=>os_byte121>
122	&7A	<Keyboard scan from 16 decimal=>os_byte122>
124	&7C	<Clear escape condition=>os_byte124>
125	&7D	<Set escape condition=>os_byte125>
126	&7E	<Acknowledge escape condition=>os_byte126>
127	&7F	<Check for end of file=>os_byte127>
128	&80	<Get buffer/mouse status=>os_byte128>
129	&81	<Scan for a particular key=>os_byte129>
134	&86	<Read text cursor position=>os_byte134>
135	&87	<Read char at text cursor, and screen mode=>os_byte135>
138	&8A	<Insert byte into buffer=>os_byte138>
139	&8B	<Write filing system options=>os_byte139>
143	&8F	<Issue module service call=>os_byte143>
144	&90	<Set vertical screen shift, and interlace=>os_byte144>
145	&91	<Get char from buffer=>os_byte145>
152	&98	<Examine buffer status=>os_byte152>
153	&99	<Insert char into input buffer=>os_byte153>
156	&9C	<Read/Write serial port state=>os_byte156>
160	&A0	<Read VDU variable value=>os_byte160>
161	&A1	<Read battery backed RAM=>os_byte161>
162	&A2	<Write battery backed RAM=>os_byte162>
163	&A3	<Read/Write general graphics info=>os_byte163>
165	&A5	<Read output cursor position=>os_byte165>
176	&B0	<50 Hz counter=>os_byte176>
177	&B1	<Read input source=>os_byte177>
178	&B2	<Read/Write keyboard semaphore=>os_byte178>
181	&B5	<Read/Write serial input interpretation status=>os_byte181>
182	&B6	<Read/Write NoIgnore state=>os_byte182>
191	&BF	<Read/Write RS423 busy flag=>os_byte191>
192	&C0	<Read serial port state=>os_byte192>
193	&C1	<Read/Write flash counter=>os_byte193>
194	&C2	<Read duration of second flash colour=>os_byte194>
195	&C3	<Read duration of first flash colour=>os_byte195>
196	&C4	<Read/Write keyboard auto-repeat delay=>os_byte196>
197	&C5	<Read/Write keyboard auto-repeat rate=>os_byte197>
198	&C6	<Read/Write *Exec file handle=>os_byte198>
199	&C7	<Read/Write *Spool file handle=>os_byte199>
200	&C8	<Read/Write Break and Escape effect=>os_byte200>
201	&C9	<Read/Write keyboard disable flag=>os_byte201>
202	&CA	<Read/Write keyboard status byte=>os_byte202>
203	&CB	<Read/Write serial input buffer minimum space=>os_byte203>
204	&CC	<Read/Write serial ignore flag=>os_byte204>
211	&D3	<Read/Write bell channel=>os_byte211>
212	&D4	<Read/Write bell sound volume=>os_byte212>
213	&D5	<Read/Write bell frequency=>os_byte213>
214	&D6	<Read/Write bell duration=>os_byte214>
216	&D8	<Read/Write length of function key string=>os_byte216>
217	&D9	<Read/Write paged mode line count=>os_byte217>
218	&DA	<Read/Write bytes in VDU queue=>os_byte218>
219	&DB	<Read/Write Tab key code=>os_byte219>
220	&DC	<Read/Write escape character=>os_byte220>
221	&DD	<Read/Write interpretation of input values &C0-&CF=>os_byte221>
222	&DE	<Read/Write interpretation of input values &D0-&DF=>os_byte221>
223	&DF	<Read/Write interpretation of input values &E0-&EF=>os_byte221>
224	&E0	<Read/Write interpretation of input values &F0-&FF=>os_byte221>
225	&E1	<Read/Write function key interpretation=>os_byte221>
226	&E2	<Read/Write Shift Fn interpretation=>os_byte221>
227	&E3	<Read/Write Ctrl Fn interpretation=>os_byte221>
228	&E4	<Read/Write Shift Ctrl Fn interpretation=>os_byte221>
229	&E5	<Read/Write escape key status=>os_byte229>
230	&E6	<Read/Write escape effects=>os_byte230>
236	&EC	<Read/Write character destination status=>os_byte236>
237	&ED	<Read/Write cursor key status=>os_byte237>
238	&EE	<Read/Write numeric keypad interpretation=>os_byte238>
240	&F0	<Read country number=>os_byte240>
241	&F1	<Read/Write user flag=>os_byte241>
242	&F2	<Read serial baud rates=>os_byte242>
243	&F3	<Read timer switch state=>os_byte243>
245	&F5	<Read/Write printer driver type=>os_byte245>
246	&F6	<Read/Write printer ignore character=>os_byte246>
247	&F7	<Read/Write Break key actions=>os_byte247>
250	&FA	<Read VDU driver screen bank number=>os_byte250>
251	&FB	<Read display screen bank number=>os_byte251>
253	&FD	<Read last break type=>os_byte253>
254	&FE	<Set effect of Shift-Ctrl on numeric keypad=>os_byte254>
255	&FF	<Read/Write boot option=>os_byte255>
DATAvOS_Byte 13  Disable event
#Parent OS_ByteIndex
=>	R0 =	13 (&0D)
	R1 =	<event number=>event_index>
<=	R0 preserved
	R1 =	old enable state (0 means was already disabled)
	R2 corrupted

This call decreases the count of enable requests for a particular event being called though the <Event Vector=>vector_eventv>. When the count reaches 0 the event is actually disabled.DATA/OS_Byte 14  Enable event
#Parent OS_ByteIndex
=>	R0 =	14 (&0E)
	R1 =	<event number=>event_index>
<=	R0 preserved
	R1 =	old enable state (0 means previously disabled)
	R2 corrupted

This call enables a particular event so that it is being called through the <Event Vector=>vector_eventv>. A count is maintained of the number of enables and disables set so that multiple routines enabling and disabling events are handled correctly. An event will only be disabled after equal numbers of <disable event=>OS_Byte013> and enable event calls have been made.DATA�OS_Byte 161  Read CMOS RAM
#Parent OS_ByteIndex
=>	R0 =	161 (&A1)
	R1 =	<byte number=>os_bytecmos>

<=	R2 =	value

This call reads the battery backed RAM used to store configuration information.DATACOS_Byte 162  Write CMOS RAM
#Parent OS_ByteIndex
=>	R0 =	162 (&A2)
	R1 =	<byte number=>os_bytecmos>
	R2 =	value

This call writes to the battery backed RAM used to store configuration information.

Note: If the byte you are setting contains multiple bits then you must *only* modify those bits you require to alter.DIR$LG����ST!Root�*G�����n10+F�����Y��11�+F���3�Y��15�,F�����Y��16-G������17�-F����iM�28�.G����0�132x0F���#�Y�p133�1F����-hM�135p2F����fM�136�2G����^\140X3F���OfM^148�3G���(�?188�4F���ϲfM�193�5G���c��195�6F���u�iM�198�7F����gMP208�7F���)�O�215�8F����|gM�220h9F���9iMW28a�9F����8iMU29:F���e�iM_displayx:F���WjMlsort�:F���	ȠMG197,<F���O�216�<H���f�[24DATATOS_Byte CMOS settings
0	&00	Econet station number
1	&01	Econet fileserver station number, 0 for name
2	&02	Econet fileserver network number/name
3	&03	Econet printer server station number, 0 for name
4	&04	Econet printer server network number/name
5	&05	Filing system module
6	&06	Unplugged modules byte 0
7	&07	Unplugged modules byte 1
10	&0A	<Misc mode data=>os_bytecmos10>
11	&0B	<Drive/Caps/Mount=>os_bytecmos11>
12	&0C	Keyboard auto-repeat delay
13	&0D	Keyboard auto-repeat time
14	&0E	Printer ignore character
15	&0F	<Misc printer/Serial data=>os_bytecmos15>
16	&10	<Loud/NoScroll/Boot/Serial format=>os_bytecmos16>
17	&11	<NetFiler flags=>os_bytecmos17>
18	&12	Unplugged modules byte 2
19	&13	Unplugged modules byte 3
20	&14	Unplugged extension modules byte 0
21	&15	Unplugged extension modules byte 1
22	&16	Wimp double click move
23	&17	Wimp auto menu delay
24	&18	<Territory=>os_bytecmos24>
25	&19	Printer buffer size
26	&1A	ADFS spindown (in 5 seconds)
27	&1B	Wimp menu drag delay
28	&1C	<Truncate/DragASprite/FilerAction/Dither=>os_bytecmos28>
29	&1D	<Mouse type=>os_bytecmos29>
128	&80	Year byte 0
129	&81	Year byte 1
132	&84	<DumpFormat/Misc data=>os_bytecmos132>
133	&85	<Monitor data=>os_bytecmos133>
134	&86	Font size in 4k units
135	&87	<Number of drives=>os_bytecmos135>
136	&88	<Floppy step rates=>os_bytecmos136>
137	&89	ADFS buffers
138	&8A	CDFS flags
139	&8B	Time zone (15 mins as signed)
140	&8C	<NewLook flags=>os_bytecmos140>
141	&8D	Printer destination
142	&8E	Twin flags
143	&8F	Screen size
144	&90	RAMFS size
145	&91	System heap size
146	&92	RMA size
147	&93	Sprite size
148	&94	<SoundDefault=>os_bytecmos148>
149	&95	Basic editor flags byte 0
150	&96	Basic editor flags byte 1
151	&97	Basic editor flags byte 2
152	&98	Basic editor flags byte 3
153	&99	Econet printer server name byte 1
154	&9A	Econet printer server name byte 2
155	&9B	Econet printer server name byte 3
156	&9C	Econet printer server name byte 4
157	&9D	Econet printer server name byte 5
158	&9E	Econet fileserver name byte 1
159	&9F	Econet fileserver name byte 2
160	&A0	Econet fileserver name byte 3
161	&A1	Econet fileserver name byte 4
162	&A2	Econet fileserver name byte 5
163	&A3	Econet fileserver name byte 6
164	&A4	Econet fileserver name byte 7
165	&A5	Econet fileserver name byte 8
166	&A6	Econet fileserver name byte 9
167	&A7	Econet fileserver name byte 10
168	&A8	Econet fileserver name byte 11
169	&A9	Econet fileserver name byte 12
170	&AA	Econet fileserver name byte 13
171	&AB	Econet fileserver name byte 14
172	&AC	Econet fileserver name byte 15
173	&AD	Unplugged modules byte 4
174	&AE	Unplugged modules byte 5
175	&AF	Unplugged modules byte 6
176	&B0	Unplugged modules byte 7
177	&B1	Unplugged extension card 0
178	&B2	Unplugged extension card 1
179	&B3	Unplugged extension card 2
180	&B4	Unplugged extension card 3
181	&B5	Basic editor wild card 0
182	&B6	Basic editor wild card 1
183	&B7	Basic editor wild card 2
184	&B8	Basic editor wild card 3
185	&B9	Language
186	&BA	Country
187	&BB	VFS ?
188	&BC	<Blanker/Misc data=>os_bytecmos188>
189	&BD	ADFS disc size 0
190	&BE	ADFS disc size 1
191	&BF	ADFS disc size 2
192	&C0	ADFS disc size 3
193	&C1	<Protection flags=>os_bytecmos193>
194	&C2	Mouse step
195	&C3	<Broadcast/Cache/AutoWimp/Misc data=>os_bytecmos195>
196	&C4	Wimp mode
197	&C5	<Wimp flags=>os_bytecmos197>
198	&C6	<Filer flags=>os_bytecmos198>
199	&C7	ADFS directory cache
200	&C8	FontMax
201	&C9	FontMax1
202	&CA	FontMax2
203	&CB	FontMax3
204	&CC	FontMax4
205	&CD	FontMax5
206	&CE	FontMax6
207	&CF	FontMax7
208	&D0	<SCSIFS drives=>os_bytecmos208>
209	&D1	SCSIFS buffers
210	&D2	SCSIFS directory cache
211	&D3	SCSIFS disc size 0
212	&D4	SCSIFS disc size 1
213	&D5	SCSIFS disc size 2
214	&D6	SCSIFS disc size 3
215	&D7	<Auto load applications=>os_bytecmos215>
216	&D8	<Auto load applications=>os_bytecmos216>
220	&DC	<Alarm flags/DST=>os_bytecmos220>
221	&DD	Wimp drag click delay
222	&DE	Wimp drag move delay
223	&DF	Wimp double click delay
233	&E9	FSLock password byte 0
234	&EA	FSLock password byte 1
235	&EB	FSLock password byte 2
236	&EC	FSLock password byte 3
237	&ED	FSLock password byte 4
238	&EE	FSLock password byte 5
239	&EF	Checksum
DATAnOS_Byte CMOS 10
Bit(s)	Meaning
#Line
0,1,2,3	Mode (RO2 only)
4	Interlace active
5,6,7	Vertical adjust
DATA�OS_Byte CMOS 11
Bit(s)	Meaning
#Line
0,1,2	Drive number
3,4,5	<Caps lock status=>.caps>
6	Mount discs if set
#Subpage caps
Caps Lock status
Value	Meaning
#Line;Wrap off
1	Shift Capitals
2	No Capitals (Caps off)
4	Caps Lock
DATA�OS_Byte CMOS 15
Bit(s)	Meaning
#Line
1	No printer ignore character
2,3,4	<Serial port baud rate=>OS_SerialOpSpeeds>
5,6,7	Printer destination
DATA�OS_Byte CMOS 16
Bit(s)	Meaning
#Line
1	Loud beep
3	NoScroll
4	Boot from disc
5,6,7	<Serial data format=>OS_SerialOpFormat>DATA�OS_Byte CMOS 17
Bit(s)	Meaning
#Line
#Wrap off
0,1	NetFiler FS <sort format=>os_bytecmossort>
2	Use ArthurLib for library on Logon
3,4	NetFiler <display format=>os_bytecmosdisplay>DATA�OS_Byte CMOS 28
Bit(s)	Meaning
#Line
0	Truncate filenames
1	DragASprite enabled
2	Don't use FilerAction
3	Dither in 4 colour modes
4	Don't obscure icon bar
6,7	<Last shutdown type=>os_bytecmos28a>
DATA�OS_Byte CMOS 132
Bit(s)	Meaning
#Line
0-4	<Dump format=>.dump>
5	Tube expansion card enabled
6,7	Tube expansion podule
#Subpage dump
Dump format
Bit(s)	Meaning
#Line
0,1	<Invalid character format=>.invalid>
2	Treat top bit characters as valid
3	AND characters with &7F in *Dump
4	Tabs expand to 8 spaces
#Subpage invalid
Invalid character codes
#Wrap off
Value	Meaning for invalid characters
#Line
0	GSTrans format
1	Dots
2	Decimal in \<>'s
3	Hexadecimal in \<>'s
DATApOS_Byte CMOS 133
Bit(s)	Meaning
#Line
0 & 7	<Sync=>.sync>
1	Top bit of mode
2-6	<Monitor type=>.monitors>
#Subpage sync
Monitor sync
Value	Meaning
#Line
0	Vertical sync
1	Composite sync
&81	Auto select sync mode
#Subpage monitors
Monitor types
Value	Meaning
#Line
0	Standard
1	Multi-frequency
2	Hi-res mono
3	VGA
4	Super VGA
5	LCD
&1F	Auto select monitor type
DATA�OS_Byte CMOS 135
Bit(s)	Meaning
#Line
#Wrap off
0-2	Number of floppy drives
3-5	Number of hard drives
6,7	Number of IDE drives
DATA�OS_Byte CMOS 136
Bit(s)	Meaning
#Line
0,1	Floppy 0 step rate
2,3	Floppy 1 step rate
4,5	Floppy 2 step rate
6,7	Floppy 3 step rateDATA\OS_Byte CMOS 140
Bit(s)	Meaning
#Line
0	3D Newlook enabled
2-4	WimpFont
7	Don't tileDATA^OS_Byte CMOS 148
Bit(s)	Meaning
#Line
0-3	Sound voice
4-6	Sound volume
7	Sound enabledDATA?OS_Byte CMOS 188
Bit(s)	Meaning
#Line
0,1	ROMFS opt 4 state
2	Cache icon enable state
3-5	<Blank time=>.times>
6	Unblank screen on write
7	Disable long system test
#Subpage times
Screen blank times
Value	Meaning
#Line
0	Off
1	30 seconds
2	1 minute
3	2 minutes
4	5 minutes
5	10 minutes
6	15 minutes
7	30 minutes
DATA�OS_Byte CMOS 193
Bit(s)	Meaning
#Line
0	Protection Peek
1	Protection Poke
2	Protection JSR
3	Protection UserRPC
4	Protection OSProc
5	Protection Halt
6	Protection GetRegsDATA�OS_Byte CMOS 195
Bit(s)	Meaning
#Line
0	Use BootNet
1	Dynamic station
2	CMOS reset last reset
3	Power save enabled
4	Auto select Wimp mode
5	Disable processor cache
6	Disable broadcast loader
7	Enable hourglass colour changing by broadcast loaderDATA�OS_Byte CMOS 198
Bit(s)	Meaning
#Line
0,1	Filer <display format=>os_bytecmosdisplay>
2,3	Filer <sort format=>os_bytecmossort>
4	Filer Force enabled
5	Filer Confirm enabled
6	Filer Verbose enabled
7	Filer Newer enabledDATAPOS_Byte CMOS 208
Bit(s)	Meaning
#Line
0-2	SCSIFS discs
3-5	SCSIFS drive
DATA�OS_Byte CMOS 215
Bit(s)	Meaning
#Line
0	Auto-load !Alarm
1	Auto-load !Calc
2	Auto-load !Chars
3	Auto-load !Configure
4	Auto-load !Draw
5	Auto-load !Edit
6	Auto-load !Help
7	Auto-load !Paint
DATA�OS_Byte CMOS 215
Bit(s)	Meaning
#Line
0-2	Alarm format
3	Alarm confirm deletions
4	Alarm auto save after changes
5	Alarm keep to working week
6	Alarm silent unless urgent
7	DST active
DATAWShutdown types
Value	Meaning
#Line
0	Unknown
1	Failed
2	Power lost
3	Undefined
DATAUMouse types
Value	Meaning
#Line
0	Quadrature
1	Microsoft serial
2	MSC serial
DATA_Display formats
Value	Meaning
#Line
0	Large icons
1	Small icons
2	Full info
3	undefinedDATAlSort types
Value	Meaning
#Line
0	Sort by name
1	Sort by number or type
2	Sort by size
3	Sort by dateDATAGOS_Byte CMOS 197
Bit(s)	Meaning
#Line
0	Continuous window movement
1	Continuous window resizing
2	Continuous horizontal scroll
3	Continuous vertical scroll
4	Don't beep when error box appears
5	Allow windows partly off screen (down right)
6	Allow windows partly off screen (all directions)
7	Open submenus automaticallyDATA�OS_Byte CMOS 216
Bit(s)	Meaning
#Line
0	!BatMan :-)

No, it really says that :

#Wrap off
{fCode}OSByte_ConfigureROMBatMan       *       216
OSByte_ConfigureROMBatManMask   *       &1{f}

So there!!!DATA[OS_Byte CMOS 24
Bit(s)	Meaning
#Line
0-7	<Territory number=>Territory_numbers> - 1
DATA�OS_Byte 2  Specify input stream
#Parent OS_ByteIndex
=>	R0 =	2 (&02)
	R1 =	<stream selection=>.streams>

<=	R0 preserved
	R1 =	value before being overwritten
	R2 corrupted

This call select the device from which all subsequent input is taken by <OS_ReadC>. Note that on exit only 0 or 1 can be returned, so 0 may also mean 2. The state of this variable can be read with <OS_Byte 177=>OS_Byte177>. If Exec is enabled (see <OS_Byte 198=>OS_Byte198>) then the Exec file handle is used as the current input stream.
#subpage streams
Input streams
Value	Meaning
0	Keyboard input with serial input buffer disabled
1	Serial input
2	Keyboard input with serial input buffer enabled

The difference between 0 and 2 is that the latter allows characters to be recieved into the serial buffer under interrupts as the same time as the keyboard is being used as the primary input. If the input streams are subsequently switched to the serial device, then those characters can then be read.
DATA�OS_Byte 11  Write keyboard auto repeat delay
#Parent OS_ByteIndex
=>	R0 =	11
	R1 =	delay period in centiseconds

<=	R0 preserved
	R1 =	previous delay period
	R2 corrupted

You must hold down each key on the keyboard for a number of centiseconds before it begins to autorepeat. This call enables you to change the initial delay from the default set by <*Configure Delay=>*Status Delay>. This variable may also be read or set by <OS_Byte196>.
DATA\OS_Byte 15  Flush buffer
#Parent OS_ByteIndex
=>	R0 =	15 (reason code)
	R1 =	0 to flush all buffers
	 	1 to flush the current input buffer

<=	R0 preserved
	R1,R2 corrupted

The contents of either all buffers or only the current input buffer are discarded, depending on R1. Individual buffers may be flushed using <OS_Byte 21=>os_byte021>.
DATA�OS_Byte 19  Wait for VSync
#Parent OS_ByteIndex
=>	R0 =	19

<=	R0 preserved
	R1,R2 corrupted

This call takes the control of the ARM until the electron beam of the monitor has reached its last position and jumps to the top left of the screen.
DATAbOS_Byte 20  Reset font definition
#Parent OS_ByteIndex
=>	R0 =	20

<=	R0 preserved
	R1,R2 corrupted

This call is used to reset the shape of the printable ASCII characters in the range of 32-127, which may be modified with <VDU 23,32-255=>VDU:23,32+>. To reset the whole or a smaller group of character definitions, use <OS_Byte 25=>os_byte025>.
DATA�OS_Byte 21  Flush specified buffer
#Parent OS_ByteIndex
=>	R0 =	21
	R1 =	<buffer number=>Buffer_buffers>

<=	R0,R1 preserved
	R2 corrupted

This call flushes the specified buffer.
DATA�OS_Byte 25  Reset groups of font definition
#Parent OS_ByteIndex
=>	R0 =	25
	R1 =	<group to restore=>.groups>

<=	R0 preserved
	R1,R2 corrupted

This call restores the characters eventually redefined by the <VDU 23,32-355=>VDU:23,32-255> command in the range of 32-255. Which characters are to be reset is given in R1.
#Subpage groups
Character groups
Value	Range of keys to be restored
#Line
0	32-255
1	32-63
2	64-95
3	96-127
4	128-159
5	160-191
6	192-223
7	224-255
DATA�OS_Byte 106  Select pointer/activate mouse
#Parent OS_ByteIndex
=>	R0 =	106
	R1 =	<pointer shape and linkage flag=>.flags>, or -1 to read
# Gerph> This may be undocumented in the PRM's

<=	R0 preserved
	R1 =	shape and linkage flag before overwritten
	R2 corrupted

You can define four 'pointer buffers' using <OS_Word 21=>OS_Word21>, each holding a different shape definition for the mouse pointer. This call allows you to select one of these definitions for future use, or to turn off the pointer depending on the bottom <seven bits of R1=>.flags>.
#Subpage flags
Pointer flags
Bit	Meaning
#Line
0-2	Select pointer number (1 to 4, or 0 to turn off)
7	Link pointer to mouse if unset
# Gerph> Check this in the PRMs

DATA
OS_Byte 112  Write VDU driver screen bank
#Parent OS_ByteIndex
=>	R0 =	112
	R1 =	bank number

<=	R0 preserved
	R1 =	previous bank number
	R2 corrupted

This call selects the bank of screen memory which is to be used by the VDU drivers according to R1, where 0 means the default for the current mode (1 or 2). Any other value means to set the screenbank which starts at Screenstart+(R1*Modesize). The maximum bank number is TotalScreensize/ModeSize. The default bank is for a non-shadow mode 1, for a shadow mode 2.DATAQOS_Byte 113  Write display hardware screen bank
#Parent OS_ByteIndex
=>	R0 =	113
	R1 =	bank number, or 0 for default

<=	R0 preserved
	R1 =	value before being overwritten
	R2 corrupted

This call selects the bank of screen memory which is to be used by the display hardware. The value may be read with <OS_Byte 251=>OS_Byte251>.
DATA-OS_Byte 117  Read VDU status
#Parent OS_ByteIndex
=>	R0 =	117

<=	R0 preserved
	R1 =	<status flags=>.flags>

This call returns the content of the VDU status byte. This byte gives information on the way in which characters are output.
#Subpage flags
VDU Status
Bit	Status when set
#Line
0	Print output enabled by <VDU 2=>VDU:2>
1	Unused
2	Paged scrolling selected by <VDU 14=>VDU:14>
3	Text window in force {/}i.e.{/} software scrolling
4	In a shadow mode
5	In <VDU 5=>VDU:5> mode
6	Cursor editing in progress
7	Screen disabled with <VDU 21=>VDU:21>
DATAHOS_Byte 118  Reflect keyboard status in LEDs
#Parent OS_ByteIndex
=>	R0 =	118

<=	R0 preserved
	R1,R2 corrupted

The settings of Caps Lock, Scroll Lock and Num Lock are held in a location referred to as the keyboard status byte. See <OS_Byte 202=>OS_Byte202> for details of this. Under normal circumstances they are shown by the keyboard LEDs which are set into the keycaps. However, if the keyboard status byte is written to using OS_Byte 202, then the LEDs will not update. This call ensures, that the current contents of the keyboard status byte are reflected in the LEDs.
DATA�OS_Byte 134  Read text cursor position
#Parent OS_ByteIndex
=>	R0 =	134

<=	R0 preserved
	R1 =	position in x direction
	R2 =	position in y direction

This call returns the text cursor position unless cursor editing is in progress, in which case the position returned is that of the input cursor. <OS_Byte 165=>OS_Byte165> reads the position of the cursor irrespective of cursor editing mode.
DATA)OS_Byte 135  Read char at cursor position and screen mode
#Parent OS_ByteIndex
=>	R0 =	135

<=	R0 preserved
	R1 =	ASCII value of character (0 if unreadable)
	R2 =	screen mode

This call returns the screen mode and the ASCII code of the character at the text cursor position. If cursor editing is in progress, it returns the character code returned by the character at the input cursors position (ie the character would be copied as input the next time copy is pressed.) Note that the screen mode never has bit 7 set, even if it's a shadow mode.
DATA�OS_Byte 144  Set vertical shift and interlace
#Parent OS_ByteIndex
=>	R0 =	144
	R1 =	vertical screen shift (as a signed 8 bit number)
	R2 =	interlace flag, 0=on, 1=off

<=	R0 preserved
	R1 =	previous vertical screen shift
	R2 =	previous interlace flag

This call specifies the vertical screen alignment and interlace options after the next mode change. This is equivalent to <*TV=>*Help TV>.DATAOS_Byte 165  Read output cursor position
#Parent OS_ByteIndex
=>	R0 =	165

<=	R0 preserved
	R1 =	position in x direction
	R2 =	position in y direction

This call returns the position of the output cursor, even whilst cursor editing is in progress.
DATA�OS_Byte 177  Read input source
#Parent OS_ByteIndex
=>	R0 =	177
	R1 =	0
	R2 =	255

<=	R0 preserved
	R1 =	<value of stream selection=>OS_Byteinputsources>
	R2 corrupted

This returns the number of the buffer from which character input gets characters (assuming Exec is not enabled  - see <OS_Byte 198=>OS_Byte198>). You *must not* use any numbers than 0 and 255 for R1 and R2 - to change this variable use <OS_Byte 2=>OS_Byte002>.
DATA%OS_Byte 196  Read/Write keyboard auto repeat delay
#Parent OS_ByteIndex
=>	R0 =	196
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	value before being overwritten
	R2 =	keyboard auto repeat rate (see <OS_Byte 197=>OS_Byte197>)

See <OS_Byte 11=>OS_Byte011> for more information.DATAbOS_Byte 197  Read/Write keyboard auto repeat rate
#Parent OS_ByteIndex
=>	R0 =	197
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	value before being overwritten
	R2 =	corrupted

Note, that *FX 12,0 resets the auto repeat rate/delay to default *FX 197,0 sets the auto repeat rate to zero. See <OS_Byte 12=>OS_Byte012> for more information.DATAOS_Byte 202  Read/Write keyboard status byte
#Parent OS_ByteIndex
=>	R0 =	202
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	<status before being overwritten=>.status>
	R2 =	serial input threshold (see <OS_Byte 203=>OS_Byte203>)

The keyboard status byte holds information on the current status of the keyboard, such as the setting of Caps Lock. This call enables you to read and change these settings. Note that this call does not update the LEDs. If you don't stamp this state with <OS_Byte 118=>OS_Byte118>, the LEDs won't be switched on or off.
#Subpage status
Status byte format
Bit	Value	State	Meaning
#Line
0	-	-	Reserved for the keyboard handler, must be preserved when writing
1	0	off	Scroll lock
	1	on
2	0	on	Num Lock
	1	off
3	0	off	Shift
	1	on
4	0	on	Caps Lock
	1	off
5	 	 	Normally set
6	0	off	Control
	1	on
7	0	off	Shift Enable
	1	on

On means LED on or key pressed, off the opposite. If Caps Lock is on and Shift Enable off, Shift will have no effect on the letters, if Shift enable is on, you'll get lower case.
DATAOS_Byte 255  Read/Write boot option
#Parent OS_ByteIndex
=>	R0 =	255
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	previous state
	R2 corrupted

This call reads or sets the current auto boot flag in <CMOS=>OS_bytecmos> RAM. Because this call is obsolete, you should use <OS_FSControl 10=>OS_FSControl10> in preference. If NoBoot is set, after a reset the computer isn't automatically booted. If Boot is set, the boot file on the filing system is accessed on reset. To invert this setting, hold Shift down after releasing the reset keys. The bit 3 of R1 indicates the named option. Set means NoBoot, Clear means Boot.

Hum. Yes. This is what the PRM says, and it's utter garbage.

This call reads or sets the *soft* copy, which defaults to the contents of the CMOS ram. But you can change it. And OS_FSControl 10 *sets* the *boot* option, which is something else (even if machine will try to boot, if the boot option on the disc is off, nothing happens.) OS_FSControl 10 cannot *read* anything. It's write only.
DATAOS_Byte 12  Write keyboard auto repeat rate
#Parent OS_Byte
=>	R0 =	12
	R1 =	repeat rate in centiseconds (0 to set repeat delay/rate to default)

<=	R0 preserved
	R1 =	previous repeat rate
	R2 corrupted

After the auto-repeat delay specified by <OS_Byte 11=>OS_Byte011>, each key will repeat until released at the rate passed to this call. This enables you to change the initial rate from the default set by <*Configure Repeat=>*Status Repeat> This variable may also be set/read by <OS_Byte 197=>OS_Byte197>.
DATA{OS_Byte 3  Specify output stream
#Parent OS_ByteIndex
=>	R0 =	3 (&03)
	R1 =	<bit mask for output streams=>OS_Byte003state>

<=	R0 preserved
	R1 =	value before being overwritten
	R2 corrupted

This call select the device(s) to which all subsequent output from <OS_WriteC etc.=>vector_wrchv> is sent. The state of this variable can be read and written with <OS_Byte 236=>OS_Byte236>.

Enabling the serial device and printer with this OS_Byte *and* setting the printer to the serial device with <OS_Byte 5=>OS_Byte005> causes characters to be placed in both serial and printer buffers, which both are then fed to the serial port.
DATA�OS_Byte 0  Display OS version
#Parent OS_ByteIndex
=>	R0 =	0
	R1 =	0 to display OS version
	 	1 to return machine info

Display OS version
<=	R0 =	pointer to OS version string as an error block
	R1 preserved
	R2 corrupted
	V set

Return machine info
<=	R0 preserved
	R1 =	<machine type=>.types>
	R2 corrupted

If R1=0 this call displays the OS version by returning it as an error string, with V set.

If R1=1 this call returns the machine type in R1 - all RISC OS machines return 6.
#Subpage types
OS_Byte 0 OS version return types
Number	OS
#Line
0	Electron
1	BBC
2	BBC
3	Master 128
4	Master 128 Econet Terminal
5	Master 128 Compact
6	Archimedes (Arthur and RISC OS)
?	Brazil
DATAyOS_Byte 1  Write user flag
#Parent OS_ByteIndex
=>	R0 =	1
	R1 =	new value

<=	R0 preserved
	R1 =	machine type
	R2 corrupted

This call writes a location that is unused by the OS, which can be used to pass results between programs. The location may be read (and written) with <OS_Byte 241=>OS_Byte241>. System variables now provide a much better way of passing results.
DATA8OS_Byte 5  Write printer driver type
#Parent OS_ByteIndex
=>	R0 =	5
	R1 =	printer driver <type=>OS_Byteprinters>

<=	R0 preserved
	R1 =	previous printer driver type
	R2 corrupted

This call determines the path to use for printer output. The type may be read (and written) with <OS_Byte 245=>OS_Byte245>.
DATA�OS_Byte 127  Check for end of file
#Parent OS_ByteIndex
=>	R0 =	127
	R1 =	file handle

<=	R0 preserved
	R1 =	non-zero for EOF
	R2 corrupted

This call checks for end of file. It uses <OS_Args 5=>OS_Args005> - so should you.
DATA�OS_Byte 139  Write filing system options
#Parent OS_ByteIndex
=>	R0 =	139
	R1 =	<option=>fsys_opts>
	R2 =	value

<=	R0 preserved
	R1, R2 corrupted

This call uses <OS_FSControl 10=>OS_FSControl10> to set filing system options.
DATA�OS_Byte 241  Read/Write user flag
#Parent OS_ByteIndex
=>	R0 =	241 (&F1)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	value before being overwritten
	R2 corrupted
                                                  
This call alters a location that is unused by the OS, which can be used to pass results between programs. The location may be also be written with <OS_Byte 1=>OS_Byte001>. System variables now provide a much better way of passing results.
DATA|OS_Byte 245  Read/Write printer driver type
#Parent OS_ByteIndex
=>	R0 =	245 (&F5)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	value before being overwritten
	R2 corrupted
                                                  
This call reads or sets the path to use for printer output. The <type=>OS_Byteprinters> may also be written with <OS_Byte 5=>OS_Byte005>.
DATA�OS_Byte Printer driver types
#Parent OS_Byte245
The value of the printer driver, /n/, selects which {fCode}PrinterType${/}n{/}{f} variable is used as the path of the printer. The default values are:

/n/	Printer			Note
#Line
0	Null:			(printer sink)
1	Parallel device
2	Serial device
3	{fCode}PrinterType$3{f}	reserved for user printer driver
4	Network printer
5-255	/n/ for {fCode}PrinterType${/}n{/}{f} variable
DATAmOutput stream status
#Parent OS_Byte003
Bit	Stream affected
#Line
0	Enables serial driver
1	Disables VDU drivers
2	Disables VDU printer stream
3	Enables printer
4	Disables spooled output
5	Calls <VDUXV=>Vector_vduxv> instead of VDU drivers
6	Disables printer, except for <VDU 1,n=>VDU:1>

Bit 1 is not the same as <VDU 21=>VDU:21> - with VDU 21 bytes are still sent to the printer if it has been enables with <VDU 2=>VDU:2>.

Bit 3 is not the same as <VDU 2=>VDU:2> - when set (and bits 2 and 6 clear!) *all* bytes except the printer ignore character (see <OS_Byte 6=>OS_Byte006>) are sent to the printer stream.
DATA�Cursor key state
#Parent OS_Byte4
0 :	Enables cursor editing (default state).

1 :	Disables cursor editing. They return the following ASCII values:
	  Copy		=> 135
	  Left arrow	=> 136
	  Right arrow	=> 137
	  Down arrow	=> 138
	  Up arrow	=> 139

2 :	Cursor keys act as function keys. The function key numbers assigned are:
	  Copy		=> 11
	  Left arrow	=> 12
	  Right arrow	=> 13
	  Down arrow	=> 14
	  Up arrow	=> 15DATA�OS_Byte 6  Write printer ignore character
#Parent OS_ByteIndex
=>	R0 =	6
	R1 =	ASCII code of ignore character

<=	R0 preserved
	R1 =	previous ignore character
	R2 corrupted

This call writes the printer ignore character. It may be read (and written) with <OS_Byte 246=>OS_Byte246>. To unset the ignore character (NoIgnore) you cannot use this call, you need to use <OS_Byte 182=>OS_Byte182>.
DATA�OS_Byte 8  Write RS232 transmit rate
#Parent OS_ByteIndex
=>	R0 =	8
	R1 =	<baud rate code=>OS_SerialOpSpeeds>

<=	R0 preserved
	R1,R2 corrupted

This call writes the RS232 transmit rate - <OS_SerialOp 6=>OS_SerialOp6> should be used instead.
DATA�OS_Byte 9  Write duration of first flash colour
#Parent OS_ByteIndex
=>	R0 =	9
	R1 =	new duration (in video frames)

<=	R0 preserved
	R1 =	previous duration
	R2 corrupted

This call sets the duration of the first flash colour. A duration of 0 means display the first colour constantly. The current duration may be read with <OS_Byte 195=>OS_Byte195>, and may also be set with <VDU 23,9=>VDU:23,9>.
DATA�OS_Byte 10  Write duration of second flash colour
#Parent OS_ByteIndex
=>	R0 =	10
	R1 =	new duration (in video frames)

<=	R0 preserved
	R1 =	previous duration
	R2 corrupted

This call sets the duration of the second flash colour. A duration of 0 means display the secondt colour constantly. The current duration may be read with <OS_Byte 194=>OS_Byte194>, and may also be set with <VDU 23,10=>VDU:23,10>.
DATA�OS_Byte 7  Write RS232 receive rate
#Parent OS_ByteIndex
=>	R0 =	7
	R1 =	<baud rate code=>OS_SerialOpSpeeds>

<=	R0 preserved
	R1,R2 corrupted

This call writes the RS232 receive rate - <OS_SerialOp 5=>OS_SerialOp5> should be used instead.
DATAOS_Byte 18  Reset function key definitions
#Parent OS_ByteIndex
=>	R0 =	18 (reason code)

<=	R0 preserved
	R1,R2 corrupted

The contents unsets the system variables {fCode}Key$0{f} to {fCode}Key$15{f} and cancels any current function key expansion. Function key expansion can also be cancelled with <OS_Byte 216=>OS_Byte216>.
# And the PRM doesn't make this cross reference!
DATA�OS_Byte 70  Read/Write country number
#Parent OS_ByteIndex
=>	R0 =	70 (&46)
	R1 =	<country number=>Territory_numbers>, or 127 to read

<=	R0 =	preserved
	R1 =	0 if invalid country number passed
	 	country number before being overwritten
	R2 corrupted
                                                  
This call reads or writes the country number used by the international module. This value can also be read with <OS_Byte 240=>OS_Byte240>.
DATA�OS_Byte 71  Read/Write alphabet or keyboard
#Parent OS_ByteIndex
=>	R0 =	71 (&47)
	R1 =	0-126	set <alphabet number=>Territory_anumbers>
	 	127	read alphabet number
	 	128-254	set <keyboard number=>OS_keyboardid> as R1 - 128
	 	255	read keyboard number

<=	R0 =	preserved
	R1 =	0 if invalid alphabet or keyboard  number passed
	 	or country/keyboard number before being overwritten
	R2 corrupted
                                                  
This call reads or writes the alphabet or keyboard number used by the international module. Although keyboard numbers are passed in with 128 added, they are returned as the actual value.
DATA��Draw�Draw Plus   z(O��z�rHomerton.BoldT�z(O��z�r            dz(�Lz�2O������ 						z��M�#�Md֑O��V��M������ 						��M�O��H�u6]��bK��            ��u����bK��            l�u����bK��������L��VvL���JL���Jn���Vvn���VvL��l���X��4��������L��8�j�����j�����Y��8�Y��8�j���l���X��Z��������L��^�j����j����Y��^�Y��^�j���l
�X��~+�������L���j���+j���+Y���Y���j���DVv�8���J�9�������@��Vv 9���J 9��\L� ����������@����L����r���@�r����L��D^�����������@��^��������D^�����������@��^�0��0�D��X�@�H������@������@���8�Qx������������ � ���x��98f�Qx����������� � R��x��108�	�x���%	������� � ��x��11<Ŕ6]���!{�����((6��]��MouseL��U������            @%��U�����{�����((��b^��The Keypad��ч������            ��B���^"��������@����B���B���B��".��"��"����"��������������������r�����^�����^�����^���^�.��r�B����B����B����B����/B���:i��������@��zEB���ZB���aB���h.���h���h�����h�����a�����Z����f>����N7����:0����:0����:0��:0.��N7B��f>B��zEB��zEB����vB������������@��V�B����B����B��Ư.��Ư��Ư����Ư����������������B�����*~����w����w����w��w.��*~B��B�B��V�B��V�B�����B������������@��2�B��v�B����B����.������������������������v�����������������������������.���B���B��2�B��2�B����f\��^"���������@����f����f����f���"R���":���"�j��"�c����\����\�����\��r��\��^��c��^��j��^�:���^�R���r�f�����f�����f�����f�����/f\��:i���������@��zEf����Zf����af����hR����h:����h�j���h�c���a�\���Z�\��f>�\��N7�\��:0�c��:0�j��:0:���:0R���N7f���f>f���zEf���zEf�����vf\������������@��V�f�����f�����f���ƯR���Ư:���Ư�j��Ư�c�����\�����\��B��\��*~�\��w�c��w�j��w:���wR���*~f���B�f���V�f���V�f������f\������������@��2�f���v�f�����f�����R�����:������j�����c�����\��v��\����\����\����c����j���:����R����f����f���2�f���2�f��������^"�N�������@�����N����N����N��"vG��"^@��"$��"����������������r����^����^�$��^�^@��^�vG��r��N�����N�����N�����N����/���:i�N�������@��zE�N���Z�N���a�N���hvG���h^@���h$���h����a����Z���f>���N7���:0���:0$��:0^@��:0vG��N7�N��f>�N��zE�N��zE�N����v�����N�������@��V��N�����N�����N��ƯvG��Ư^@��Ư$��Ư�������������B����*~���w���w$��w^@��wvG��*~�N��B��N��V��N��V��N����������N�������@��2��N��v��N�����N����vG����^@����$������������v�����������������$���^@���vG����N����N��2��N��2��N�������^"��������@���������������"���"����"*��"���������������r����^���^�*��^�����^����r���������������������/���:i��������@��zE����Z����a����h����h�����h*���h���a����Z���f>���N7���:0��:0*��:0����:0���N7���f>���zE���zE�����v������������@��V��������������Ư���Ư����Ư*��Ư������������B����*~���w��w*��w����w���*~���B����V����V�����m�ч���h"��������@��*����Z����a���6hƹ��6h����6h����6h~����a"����Z"�����"���r�"�����~�����������������ƹ��r���������*���*�����v҇���"��������@��V��������������Ư����Ư����ƯN���Ư:�����"�����"���B�"���*~"���w:���wN���w����w����*~���B����V����V�����v�Z����r�������@��ƽ���ƽ����ƽ�����"����"���"���"��v����v�����v�v���v�^�������������������������ƽb���ƽv���ƽ���ƽ���8p�ָ��2�������ָ��778L?ָ���^2�����f>ָ��748�L���(�������B�ָ��918��L���7��������ָ��908a��q����������q��278?�q��^�����f>�q��428��pq��[������B��q��438��pq��7��������q��598]�+��9A�����r�+��122896�*��eA�����N4+��1238��*��[�A�����B�+��268���*����A������+��588]����(������r�B�107896B�Se(������N4B�1248}��{�(������*{B�1088��H���7�����������608(�ܜ��[�L������B�f���768�ܜ���AL�������f���106�V6��
�����@�������������������z���������������������������z������d�,O��R/�M������ 						.�M.O��\iB��������((�q�Keyboardp†6]���M�8            @Ŗ6]���7�{�����((��]��Controls†҇���M�8            �†B������������@��R�B����B����B��¿.��¿��¿����¿����������������>�����&�������������������.��&�B��>�B��R�B��R�B�����B������������@��.�B��r�B����B���.���������������������r���������������������������������.���B���B��.�B��.�B���zB����M��������@��
*B��N?B��bFB��zM.��zM��zM����zM����bF����N?�����"�����������������������.���B���"B��
*B��
*B���†f\������������@��R�f�����f�����f���¿R���¿:���¿�j��¿�c�����\�����\��>��\��&��\����c����j���:����R���&�f���>�f���R�f���R�f������f\������������@��.�f���r�f�����f����R����:�����j����c�����\��r��\����\����\�����c�����j����:�����R����f����f���.�f���.�f����zf\���M���������@��
*f���N?f���bFf���zMR���zM:���zM�j��zM�c��bF�\��N?�\���"�\����\����c����j���:����R����f����"f���
*f���
*f����†҇���"��������@��R��������������¿����¿����¿N���¿:�����"�����"���>�"���&�"����:����N�������������&����>����R����R�������҇���"��������@��.����r��������������������N����:�����"���r�"����"����"�����:�����N�����������������������.����.�����z҇���M"��������@��
*���N?���bF���zM����zM����zMN���zM:���bF"���N?"����""����"����:����N������������������"���
*���
*������������������@��.����r�������������������*����������r������������������*���������������������.����.�����†b�����8�����@��R�b8��b8��b8¿J1¿6*¿�
¿�������������>�����&���������
�6*�J1&�b8>�b8R�b8R�b8���b�����8�����@��.�b8r�b8��b8�J1�6*��
��������r���������������������
��6*��J1�b8�b8.�b8.�b8�zb����M�8�����@��
*b8N?b8bFb8zMJ1zM6*zM�
zM�bF����N?�����"�������������
�6*�J1�b8�"b8
*b8
*b88�hW��*���>��328��h��*�����318�#�MCN*����"�448�ܜ��W�L������>�f���258��f����²������f���418�f���rCL�������f���1218��������������B�578�pq��W������>��q��898��pq����������q��1058�#pq���C������"�q��788�L���$�������>�ָ��618��L���3��������ָ��628�#L���C�������"ָ��63�
��)��V1��@��n��)z�(N�(Z��)f��+f�/Z�1N��2z��2n�1b�/b��+n��)�Y�1�bKr            l�xn�������@���xn�~�n�~����x���xn���1~
kR������@��JG��\��c��j��j֨�j~��jj��cR~�\R~6@R~9R~
2j�
2~�
2֨
2�9�6@�JG�JG���x~�R������@��&��j��~�������֨��~���j�~�R~j�R~�R~�R~�xj��x~��x֨�x�����&��&���r�~�R������@����F��Z��r��r�֨r�~�r�j�Z�R~F�R~��R~��R~¿j�¿~�¿֨¿������������N~�?R������@����"1�68�N?�N?֨N?~�N?j�68R~"1R~�R~�
R~�j��~��֨���
��������*M~z�R������@���b��w��*��*�֨*�~�*�j�R~�wR~�[R~�TR~zMj�zM~�zM֨zM��T��[��b��b���~V�R������@�����ھ�������֨�~��j���R~ھR~��R~j�R~V�j�V�~�V�֨V��j��������������~2R������@��r���������֨�~��j��R~�R~^�R~F�R~2�j�2�~�2�֨2��F��^��r��r����!~[R������@��N7��L��S��Z��Z֨�Z~��Zj��SR~�LR~:0R~")R~"j�"~�"֨"�")�:0�N7�N7���h~�R������@��*~�n����������֨��~���j���R~n�R~wR~�oR~�hj��h~��h֨�h��o�w�*~�*~��v�~��R������@����J��^��v��v�֨v�~�v�j�^�R~J�R~�R~ڶR~Ưj�Ư~�Ư֨Ư�ڶ��������R�~�/R������@����&!�:(�R/�R/֨R/~�R/j�:(R~&!R~�R~��R~��j���~���֨�������������.=~~vR������@���R�h�o�.v�.v֨.v~�.vj�oR~hR~�KR~�DR~~=j�~=~�~=֨~=��D��K��R��R��
�~Z�R������@�����ޮ���
��
�֨
�~�
�j��R~ޮR~��R~n�R~Z�j�Z�~�Z�֨Z��n��������������~6R������@��v����������֨�~��j��R~��R~b�R~J�R~6�j�6�~�6�֨6��J��b��v��v����~KR������@��R'��<��C��J��J֨�J~��Jj��CR~�<R~> R~&R~j�~�֨�&�> �R'�R'��
�"�Z�r�����@����"ޮ"�"
�

��
���
����r�ޮr���r�n�r�Z���Z���Z��Z�
n�"��"��"��"���"�6r�����@��v�"��"�"�
���������r���r�b�r�J�r�6���6���6��6�
J�"b�"v�"v�"��"�Kr�����@��R'"�<"�C"�J
�J��J���J���Cr��<r�> r�&r������
&"> "R'"R'"�.="�~vr�����@���R"h"o".v
.v�.v��.v��or�hr��Kr��Dr�~=��~=��~=�~=
�D"�K"�R"�R"��1"�
kr�����@��JG"�\"�c"�j
�j��j���j���cr��\r�6@r�9r�
2��
2��
2�
2
9"6@"JG"JG"��&7R�vp�����@����&p��&p��&p�i��a��E��>��v7��v7~�v7j�v7R��>R��ER��aR�ij�&p~�&p��&p��&p���&7.vp�����@��r�&p�
&p�&p�i��a��E��>�v7�
v7Z�v7F�v7.��>.��E.��a.�iF�&pZ�&pr�&pr�&p��)&7
cvp�����@��N?&p�T&p�[&p�bi�b�a�b�E�b�>�[v7�Tv768v7"1v7
*�>
*�E
*�a
*i"1&p68&pN?&pN?&p��p&7�vp�����@��*�&pj�&p��&p��i���a���E���>��v7j�v7v7�wv7�p�>�p�E�p�a�pi�w&p&p*�&p*�&p�r�&7��vp�����@���&pF�&p^�&pr�ir��ar��Er��>^�v7F�v7��v7ھv7·�>·�E·�a·iھ&p��&p�&p�&p�N�&7�7vp�����@���&p")&p:0&pN7iN7�aN7�EN7�>:0v7")v7�v7�v7���>���E���a��i�&p�&p�&p�&p�*E&7z~vp�����@���Z&p�o&pw&p*~i*~�a*~�E*~�>wv7�ov7�Sv7�Lv7zE�>zE�EzE�azEi�L&p�S&p�Z&p�Z&p��&7V�vp�����@����&pڶ&p�&p�i��a��E��>�v7ڶv7��v7n�v7V��>V��EV��aV�in�&p��&p��&p��&p���&72vp�����@��v�&p��&p�&p�i��a��E��>�v7��v7^�v7J�v72��>2��E2��a2�iJ�&p^�&pv�&pv�&p��&7Svp�����@��R/&p�D&p�K&p�Ri�R�a�R�E�R�>�Kv7�Dv7:(v7&!v7�>�E�ai&!&p:(&pR/&pR/&p��`&7�vp�����@��.v&pn�&p��&p��i���a���E���>��v7n�v7ov7hv7�`�>�`�E�`�a�`ih&po&p.v&p.v&p�v�&7��vp�����@��
�&pJ�&pb�&pv�iv��av��Ev��>b�v7J�v7�v7ޮv7Ƨ�>Ƨ�EƧ�aƧiޮ&p�&p
�&p
�&p�R�&7Kvp�����@���&p�<&p�C&p�Ji�J�a�J�E�J�>�Cv7�<v7�v7��v7���>���E���a��i��&p�&p�&p�&p��1&7v�vp�����@��JG&p�&p�&p&�i&��a&��E&��>�v7�v76@v79v7
2�>
2�E
2�a
2i9&p6@&pJG&pJG&p�F�J����)�����@����J)�J).�J)F�6"F�F��F���.������¿�����������������6"��J)¿J)��J)��J)�"�J�r1�)�����@���
J)�"J)
*J)"16""1"1�"1��
*���"���������r���r��r�r�6"��J)�J)�
J)�
J)��>J�Nx�)�����@���TJ)�iJ)�pJ)�w6"�w�w��w���p���i��zM��bF��N?��N?�N?N?6"bFJ)zMJ)�TJ)�TJ)�څJ�*��)�����@��j�J)��J)·J)ھ6"ھھ�ھ��·������V���>���*���*��*�*�6">�J)V�J)j�J)j�J)���J��)�����@��F�J)��J)��J)�6"��������������2�������������6"�J)2�J)F�J)F�J)��J��L�)�����@��")J)f>J)zEJ)�L6"�L�L��L��zE��f>��"������������6"�J)"J)")J)")J)�nZJ����)�����@���oJ)B�J)V�J)n�6"n�n��n���V���B����h���a���Z���Z��Z�Z6"�aJ)�hJ)�oJ)�oJ)�J�J����)�����@��ڶJ)�J)2�J)J�6"J�J��J���2������Ư�����������������6"��J)ƯJ)ڶJ)ڶJ)�&�J�v!�)�����@����J)�J)J)&!6"&!&!�&!���������������v���v��v�v�6"��J)��J)��J)��J)�/J�Rh�)�����@���DJ)�YJ)�`J)h6"hh�h���`���Y��~=��f6��R/��R/�R/R/6"f6J)~=J)�DJ)�DJ)��uJ�.��)�����@��n�J)��J)ƧJ)ޮ6"ޮޮ�ޮ��Ƨ������Z���B}��.v��.v�.v.v6"B}J)Z�J)n�J)n�J)��n�R�������@����n���n���n��Z��B����ְ��������~���j���R�ְR��R�B�R�Z�j�n�~�n���n���n����n�.�������@��r�n��
n��n��Z��B����ְ����
��Z���F���.�ְ.��.�B�.�Z�F�n�Z�n�r�n�r�n���)n�
c�������@��N?n��Tn��[n��bZ��bB��b��bְ�[���T��68��"1��
*ְ
*�
*B�
*Z�"1n�68n�N?n�N?n���pn���������@��*�n�j�n���n���Z���B������ְ����j������w���pְ�p��pB��pZ��wn�n�*�n�*�n��r�n����������@���n�F�n�^�n�r�Z�r�B�r��r�ְ^���F�������ھ��·ְ·�·B�·Z�ھn���n��n��n��N�n��7�������@���n�")n�:0n�N7Z�N7B�N7�N7ְ:0��")����������ְ�����B���Z��n��n��n��n��*En�z~�������@���Zn��on�wn�*~Z�*~B�*~�*~ְw���o���S���L��zEְzE�zEB�zEZ��Ln��Sn��Zn��Zn���n�V��������@����n�ڶn��n��Z��B����ְ���ڶ������n���V�ְV��V�B�V�Z�n�n���n���n���n����n�2�������@��v�n���n��n��Z��B����ְ�������^���J���2�ְ2��2�B�2�Z�J�n�^�n�v�n�v�n���n�S�������@��R/n��Dn��Kn��RZ��RB��R��Rְ�K���D��:(��&!��ְ�B�Z�&!n�:(n�R/n�R/n���`n���������@��.vn�n�n���n���Z���B������ְ����n���o��h���`ְ�`��`B��`Z�hn�on�.vn�.vn��v�n�K�������@���n��<n��Cn��JZ��JB��J��Jְ�C���<�����ޮ��ƧְƧ�ƧB�ƧZ�ޮn��n���n��n���1n�v�������@��JGn��n��n�&�Z�&�B�&��&�ְ������6@��9��
2ְ
2�
2B�
2Z�9n�6@n�JGn�JGn�����b�?�����@��r���"1��68��N?~�N?f�N?qN?�i68�b"1�bZ��bF��b.��i.�q.�f�.�~�F���Z���r���r�����1J����)����@��JGJ)>�J)R�J)j�6"j�j��j���R���>���6@��9��
2��
2�
2
26"9J)6@J)JGJ)JGJ)�V[�bv!�����@���p�������&!~�&!f�&!q&!�i�b��b�i�b�b�b�[�i�[q�[f��[~��b���i���p���p���.=�b������@���R��n���������~���f���q���i���bn��b�K�b�D�b~=�i~=q~=f�~=~��D���K���R���R���R��bK�����@������<���C���J~��Jf��Jq�J�i�C�b�<�b��b���b���i��q��f���~�����������������J�K�)�����@��J�J)�<J)�CJ)�J6"�J�J��J���C���<��6������
���
��
�
�6"�J)6�J)J�J)J�J)�>"�fwr�����@���S"�h"�o"w
w�w��w���or��hr��Lr�zEr�f>��f>��f>�f>
zE"�L"�S"�S"��"�B�r�����@����"Ư"ڶ"�
��������ڶr�Ưr�n�r�V�r�B���B���B��B�
V�"n�"��"��"���"�r�����@��^�"��"��"�
����������r���r�J�r�2�r����������
2�"J�"^�"^�"�:�"��0r�����@���"""")":0
:0�:0��:0��")r�"r��r���r��������������
��"�"�"�"�"�"�r1r�����@���
"�""
*""1
"1�"1��"1��
*r��"r��r���r�r���r���r��r�
��"�"�
"�
"��>"�Nxr�����@���T"�i"�p"�w
�w��w���w���pr��ir�zMr�bFr�N?��N?��N?�N?
bF"zM"�T"�T"�څ"�*�r�����@��j�"��"·"ھ
ھ�ھ��ھ��·r���r�V�r�>�r�*���*���*��*�
>�"V�"j�"j�"�F�"���r�����@����"�".�"F�
F��F���F���.�r��r�¿r���r��������������
��"¿"��"��"8	6���d����4��1128��(�q���������1138q����+�������1148MC(�)r���bA��1158>�(�������>��� 208��(�e*��������1168eB���q���z@��1178E���������n���228�(�������2���1188}A(�Yp�����?��1198]�(�����������3089�(������b���288!(�W@����> ��298��T��������738�0L�6�b�����L1208� ���@����> ��478�)�w�I����")&x988U�x��������~��9481�x�������Z��978
9x�OX�����68�668�x�+�������828��x����������998�x�}1�������1008}Tx��s������S�858Y�x�������n��10185�x������J��1028x��L�����&�1038�dx�������c�1048��T������¿�658uT�"������8182NT�m����zM�508-�T۴����V��678	�TK�����2��838�"TeB����"�848�iT������h�698��T������Ư�708y�T��������868@�Ts�����Z��798ɶ0L���b�����L888�o0L/��b���o�L568�(0LSHb���:(�L558�0L�b���^��L548Y�0L��b������L378^T0L�s�b����S�L538�
0Lm-�b�����L688��0L��b������L358�0L��b����L518
90L�X�b���68�L3481�0Ls�b���Z��L338i�0L���b���~��L168MV0L�u�b���vU�L968�@�O`����6@��458ʇ���|�������488���O5�������178�]�I||�����[��188m�������������1981�SP�����:0��368�w����|����w��218ɾ�����������388���$��������398]�������������938��{�|����b���468�R�"����&R�18�RkY&}���&Rk78�hR��t�����hR�28�h�jNu�}���hRk88m����n������.�08m����n������.�68qJO�~d�����Iž238WJO�~d�����Iˆ408>A
>[J!���~@
7281A���[J���~@
�878%�že����r�ž248�O�2����r�ˆ528eR��������
R�28K�j�}����
Rk58A]��gin�����\.�08A]��giz�����\.�38;e
�l� ����c
18;d
��p�
����c
�48��O��������ž498��ˆB�������ˆ71�Rw֊����@���~&��|2��y2��w&��u��uB��w6��y*��|*��~6���B�����~&���1�bv������@��JG��������&�~�&�f�&�q&��i��b��b6@�b9�b
2�i
2q
2f�
2~�9��6@��JG��JG��89O�w�n����bN&x64��}یF�����@����+��7��7��}+��{��{G��};��/��/���;��G�����+�e�

�?�?�F�F�F�Fe8

���eD

	��������  e�

		$$$					$$		$	$			Standardep

DATAzOS_Byte 114  Write shadow/non-shadow state
#Parent OS_ByteIndex
=>	R0 =	114
	R1 =	0	modes will be shadow
	 	1	modes will be non-shadow

<=	R0 preserved
	R1 =	previous shadow sate
	R2 corrupted

This call determines whether future <mode changes=>VDU:22> will be forced to use shadow state. <OS_Byte 112=>OS_Byte112> and <113=>OS_Byte113> control the use of shadow banks.
DATA`OS_Byte 120  Temporarily lock auto-repeat
#Parent OS_ByteIndex
=>	R0 =	120 (&78)
	R1 =	0
	R2 =	0

<=	R0 preserved
	R1,R2 corrupted
                                                  
This call is kept for compatibility with the BBC/Master 128. It locks the auto-repeat mechanism for the duration of a key being down (to prevent multiple input).
DATA<OS_Byte 122  Keyboard scan from 16 decimal
#Parent OS_ByteIndex
=>	R0 =	122 (&7A)

<=	R0 preserved
	R1 =	<key pressed=>os_byte121a>, or &FF if none pressed
	R2 =	corrupted

This call is equivalent to <OS_Byte 121=>os_byte121> with R1=16. It scans the keyboard ignoring Shift, Control, Alt and mouse buttons.
DATAyOS_Byte 124  Clear escape condition
#Parent OS_ByteIndex
=>	R0 =	124 (&7C)

<=	R0 preserved
	R1,R2 corrupted
                                                  
This call clears any escape condition by calling the <escape handler=>OS_handlers_escape> with R11=0, then returns. (Unless you read page 1-848 of the PRM, which says that it doesn't call the escape handler.)
DATA1OS_Byte 125  Set escape condition
#Parent OS_ByteIndex
=>	R0 =	125 (&7D)

<=	R0 preserved
	R1,R2 corrupted
                                                  
This call sets an escape condition (calling the <escape handler=>OS_handlers_escape>), but does *not* generate an <escape_event=>event_6>.
DATAOS_Byte 126  Acknowledge escape condition
#Parent OS_ByteIndex
=>	R0 =	126 (&7E)

<=	R0 preserved
	R1 =	0 if no escape condition
	 	255 if escape condition cleared
	R2 corrupted
                                                  
This call attempts to clear an escape condition. If an escape condition exists, it performs the escape condition side effects if these have been enabled with <OS_Byte 230=>OS_Byte230>, and then calls the <escape handler=>OS_handlers_escape> to indicate that the escape has been cleared.
DATAOS_Byte 128  Get buffer/mouse status
#Parent OS_ByteIndex
=>	R0 =	128
	R1 =	<reason code=>.reason>

<=	R0 preserved
	R1 =	bits 0-7 give LSB of answer
	R2 =	bits 0-23 give bits 8-31 of answer

This call checks the (buffered) mouse position or the free space in system buffers, depending on the reason code passed in R1. It is recommended to use <OS_Mouse> to read the mouse position, as this reads the current (unbuffered) position.
#subpage reason
OS_Byte 128 reason codes
entry R1	value returned
#Line
7		mouse x
8		mouse y
246		free bytes in mouse buffer
252		free bytes in printer buffer
253		free bytes in serial output buffer
254		free bytes in serial input buffer
255		free bytes in keyboard buffer

Note that for reading free space, R1 = 255 - <buffer number=>Buffer_buffers>.
DATAwOS_Byte 129  Get buffer/mouse status
#Parent OS_ByteIndex
=>	R0 =	129 (&81)

To read a key within a time limit
	R1 =	0-255		time limit low byte
	R2 =	{*}&00 - &7F{*}	time limit high byte

<=	R1 =	ASCII code of character read, undefined if not read
	R2 =	0		character read
	 	27		escape condition
	 	255		timeout

To read the OS version identifier
	R1 =	{*}0{*}
	R2 =	{*}&FF{*}

<=	R1 =	<value identifying OS=>.identifier>
	R2 =	0

To scan the keyboard for a range of keys
	R1 =	{*}&01-&7F{*}	lowest <internal key number=>OS_Byte121a> EOR &7F
	R2 =	{*}&FF{*}

<=	R1 =	internal key number
	 	255 if none pressed
	R2 corrupted

To scan the keyboard for a single key
	R1 =	{*}&80-&FF{*}	<internal key number=>OS_Byte121a> EOR &FF
	R2 =	{*}&FF{*}

<=	R1 =	0 if not pressed
	 	255 if pressed
	R2 =	0 if not pressed
	 	255 if pressed

This call provides four distinct operations, distinguished by the values in *both* R1 and R2.

Read key within a time limit will extract a character from the keyboard buffer/current function key expansion if one is available, else will wait for (R2 * 256 + R1) centiseconds, where the maximum wait is 327.67 seconds, as R2 <= 127. Cursor edit mode will operate if enabled with <OS_Byte 4=>OS_Byte004>. If an escape condition is detected the application should either acknowledge it with <OS_Byte 126=>OS_Byte126> or clear it with <OS_Byte 124=>OS_Byte124>.
#subpage identifier
OS_Byte 129 Operating System version identifiers
R1 value	Version
#Line
&A0		Arthur	1.20
&A1		RISC OS	2.00
&A2		RISC OS	2.01
&A3		RISC OS	3.00
&A4		RISC OS	3.10 and 3.11
# Check		&A5		RISC OS	3.50
# These		&A6		RISC OS	3.60
&A7		RISC OS	3.70
DATA�OS_Byte 138  Insert byte into buffer
#Parent OS_ByteIndex
=>	R0 =	138
	R1 =	<buffer number=>Buffer_buffers>
	R2 =	byte to insert

<=	R0-R2 preserved
	C flag	set if buffer was full, otherwise clear

This call inserts a byte into a buffer. While inserting 9 bytes into the mouse buffer you must disable interupts to prevent a real most transition from being entered into the middle of your data.

Note that characters 0 and 128-255 are inserted into the keyboard buffer as two byes 0,{/}n{/} to distinguish them from function keys - if you are inserting strings into the keyboard buffer you should be careful to check for top bit set characters and preced them with a 0 byte, else you may erroneously insert function key keypresses - '�' is equivalent to pressing F12, '�' to pressing Control, Shift F12, which in the desktop *will* respectively generate a CLI prompt, and initiate desktop shutdown.
DATA�OS_Byte 143  Issue module service call
#Parent OS_ByteIndex
=>	R0 =	143
	R1 =	service type
	R2 =	argument for service

<=	R0,R1 preserved
	R2 =	possible return argument

This call is provided for BBC compatibilty. Use <OS_ServiceCall> instead.
DATA�OS_Byte 145  Get char from buffer
#Parent OS_ByteIndex
=>	R0 =	145 (&91)
	R1 =	<buffer number=>Buffer_buffers>

<=	R0, R1 preserved
	R2 =	byte removed
	C flag	set if buffer was empty on entry
	 	clear if byte was successfully removed
                                                  
This call extracts the next byte from the given buffer. The buffer number is *not* validated - undefined results (rather than an error) occur if a bad buffer number is passed.
DATAOS_Byte 152  Examine status of a buffer
#Parent OS_ByteIndex
=>	R0 =	152 (&98)
	R1 =	<buffer number=>Buffer_buffers>

<=	R0, R1 preserved
	R2 =	next byte in buffer, corrupted if buffer empty
	C flag	set if buffer is empty, otherwise clear
                                                  
This call checks whether a given buffer is empty, and if a byte is available returns it without removing it from the buffer. The buffer number is *not* validated - undefined results (rather than an error) occur if a bad buffer number is passed.
DATAZOS_Byte 153  Insert char into input buffer
#Parent OS_ByteIndex
=>	R0 =	153 (&99)
	R1 =	<input buffer number=>OS_Byteinputsources>
	R2 =	byte to insert

<=	R0 preserved
	R1, R2 corrupted
	C flag	set if buffer was full, otherwise clear
                                                  
This call inserts a character into either the keyboard or serial buffer.

If	the current escape character (set with <OS_Byte 220=>OS_Byte220>) is inserted and escape generation is not disabled (see <OS_Byte 229=>OS_Byte229> *and* <OS_Byte 200=>OS_Byte200>)
then	an escape condition occurs
	either	an <escape event=>event_6> is generated (if enabled with <OS_Byte 14,6=>OS_Byte014>)
	or	the <escape handler=>OS_handlers_escape> is called.
	The effects set by <OS_Byte 230=>OS_Byte230> occur when the escape condition is acknowledged with <OS_Byte 126=>OS_Byte126>.
DATAYOS_Byte 156  Read/Write serial port state
#Parent OS_ByteIndex
=>	R0 =	156 (&9C)
	R1 =	EOR value
	R2 =	AND value

<=	R0 =	preserved
	R1 =	state before being overwritten
	R2 =	keyboard disable flag (see <OS_Byte 201=>OS_Byte201>)
                                                  
This call reads or writes the serial port state. It is provided for backwards compatibility - use <OS_SerialOp 0 and 1=>OS_SerialOp> instead, and <OS_Byte 2=>OS_Byte002> to change the receive interrupt/control bit.

When writing the effects depend on R1:

#Tab
Bits	Value	Effect
#line
0-1	0-2	No effect
	3	Reset transmit, receive, control registers
2-4	0	7 bit, even parity, 2 stop bits (7E2)
	1	7 bit, odd parity, 2 stop bits (7O2)
	2	7 bit, even parity, 1 stop bits (7E1)
	3	7 bit, odd parity, 1 stop bit (7O1)
	4	8 bit, no parity, 2 stop bits (8N2)
	5	8 bit, no parity, 1 stop bits (8N1)
	6	8 bit, even parity, 1 stop bits (8E1)
	7	8 bit, odd parity, 1 stop bit (8O1)
5-6	0	RTS low, transmit interrupt disabled
	1	RTS low, transmit interrupt enabled
	2	RTS high, transmit interrupt disabled
	3	RTS low, transmit interrupt disabled, break level on transmit data
7	0	Receive interrupt disabled
	1	Receive interrupt enabled

You should only write bit 7 with this call (and really should be using <OS_Byte 2=>OS_Byte002>). The value can also be read with <OS_Byte 192=>OS_Byte192>.
DATAYOS_Byte 160  Read VDU variable number
#Parent OS_ByteIndex
=>	R0 =	160 (&A0)
	R1 =	<VDU variable number=>.numbers>

<=	R0 preserved
	R2 =	value of variable
	R2 =	value of next variable (entry R1 + 1)

This call is provided for compatibility with the BBC/Master 128, and reads various VDU variables. Note that it does not use the same numbers for variables as <OS_ReadVDUVariables>, and that that SWI can read many more variables.
#SubPage numbers
OS_Byte 160 VDU variable numbers
Number	Value
#Line
0	LSB of graphics window left column	(ic)
1	MSB of graphics window left column	(ic)
2	LSB of graphics window bottom row	(ic)
3	MSB of graphics window bottom row	(ic)
4	LSB of graphics window right column	(ic)
5	MSB of graphics window right column	(ic)
6	LSB of graphics window top row	(ic)
7	MSB of graphics window top row	(ic)
8	text window left column
9	text window bottom row
10	text window right column
11	text window top row
12	LSB of graphics origin x coordinate	(ec)
13	MSB of graphics origin x coordinate	(ec)
14	LSB of graphics origin y coordinate	(ec)
15	MSB of graphics origin y coordinate	(ec)
DATADOS_Byte 163  Read general graphics information
#Parent OS_ByteIndex
=>	R0 =	163
	R1 =	242
	R2 =	<length or action code=>.codes>

<=	R0 preserved
	R1,R2 depend on entry R2

This call reads, sets or resets the dot-dash pattern length or returns status information dependent on the value of R2.
#SubPage codes
OS_Byte 163 codes
# This one is going to be a sod to wrap - the defalt behaviour of only wrapping the last column really looks naff, but turning wrap off completely may make the page too wide for some monitors.
#Wrap off
R2 Value	Action						return R1		return R2
#Wrap 
#Line
0		reset dot-dash pattern and length to defaults	preserved		preserved
1-64		set dot-dash pattern repeat length		preserved		preserved
65		return status information			<packed info=>.info>	system sprite area size (bytes)
#Wrap off
66		return information on current sprite		width (pixels)		height (pixels)
#Wrap 
#SubPage info
OS_Byte 163 status information
Bits	Meaning
#Line
7	if set sprites are always active
6	if set flood fill is always active
0-5	current dot-dash pattern repeat length (0 means 64)
DATA�OS_Byte 176  Read/Write 50Hz counter
#Parent OS_ByteIndex
=>	R0 =	176 (&B0)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	value before being overwritten
	R2 corrupted
                                                  
This call reads or sets the "50Hz" counter, a 1 byte counter which is decreased every vSync. As a consequence the rate of this counter is actually mode and monitor dependent, and should not be used for accurate timing.
DATAuInput sources
#Parent OS_Byte177
Number	Stream
#Line
#Wrap off
0	Keyboard buffer
1	Serial input buffer
#Wrap
DATAKOS_Byte 178  Read/Write keyboard semaphore
#Parent OS_ByteIndex
=>	R0 =	178 (&B2)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	value before being overwritten
	R2 corrupted
                                                  
This call is obsolete and should not be used. It is not documented in the RISC OS 3 PRMs.
DATA�OS_Byte 181  Read/Write serial input interpretation status
#Parent OS_ByteIndex
=>	R0 =	181 (&B5)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	status before being overwritten
	R2 =	NoIgnore state (see <OS_Byte 182=>OS_Byte182>)
                                                  
This call reads or sets the state of serial interpretation

Status	Meaining
#Line
0	Characters read from the serial buffer are given the same interpretation as those read from the keyboard buffer:
		�	Current escape character generates an escape condition
		�	Function keys are expanded
		�	<Escape=>event_6> and <character entering buffer=>event_2> events are generated
1 (default)	No keyboard interpretation is performed
DATA�OS_Byte 182  Read/Write printer NoIgnore state
#Parent OS_ByteIndex
=>	R0 =	182 (&B6)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	value before being overwritten
	R2 corrupted
                                                  
This call reads or sets the printer NoIgnore state. If bit 7 is clear then the ignore character set by <OS_Byte 6=>OS_Byte006> or <OS_Byte 246=>OS_Byte246> is filtered from the printer output stream. If bit 7 is set, then the printer stream passes all characters.
DATA�OS_Byte 191  Read/Write serial busy flag
#Parent OS_ByteIndex
=>	R0 =	191 (&BF)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	value before being overwritten
	R2 =	serial port state (see <OS_Byte 192=>OS_Byte192>)
                                                  
This call is obsolete - on the BBC/Master 128 the cassette interface and RS423 serial port shared hardware.
DATA8OS_Byte 192  Read serial port state
#Parent OS_ByteIndex
=>	R0 =	192 (&C0)
	R1 =	0
	R2 =	255

<=	R0 =	preserved
	R1 =	communications state
	R2 =	flash counter (see <OS_Byte 193=>OS_Byte193>)
                                                  
This call reads the serial port state - equivalent to a read operation with <OS_Byte 156=>OS_Byte156>. It is provided for backwards compatibility - use <OS_SerialOp 0 and 1=>OS_SerialOp> instead. This call should not be used to write the value - doing so would make the value in memory inconsistent with the hardware.
DATAgOS_Byte 198  Read/Write *Exec file handle
#Parent OS_ByteIndex
=>	R0 =	198
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	previous file handle
	R2 corrupted

This call reads or sets the {fCode}*Exec{f} file handle. A handle of 0 means that Exec is disabled. A non-zero handle means that Exec is enabled, and hence is the current input stream.
DATA>OS_Byte 199  Read/Write *Spool file handle
#Parent OS_ByteIndex
=>	R0 =	199
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	previous file handle
	R2 corrupted

This call reads or sets the {fCode}*Spool{f} file handle. A handle of 0 means that spooling is disabled, a non-zero handle means that spooling is enabled (unless disabled with <OS_Byte 3=>OS_Byte003>). Changing the spool handle to an invalid file handle can really ruin your day (every call to <OS_WriteC> {/}etc.{/} will return an error, including the calls used to report the error to screen...).
DATA�OS_Byte 201  Read/Write keyboard disable flag
#Parent OS_ByteIndex
=>	R0 =	201 (&C9)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	flag before being overwritten
	R2 corrupted
                                                  
This call enables or disables the keyboard. 0 will enable the keyboard (as normal). Any other value will stop the interupt routine inserting keypresses into the keyboard buffer.
DATAOS_Byte 203  Read/Write serial buffer threshold
#Parent OS_ByteIndex
=>	R0 =	203 (&CB)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	value before being overwritten
	R2 =	serial ignore flag (see <OS_Byte 204=>OS_Byte204>)
                                                  
This call reads or sets the serial buffer threshold. While the free space is below this value the serial harware will attempt to halt incoming data. <OS_SerialOp 0=>OS_SerialOp0> controls the handshaking method. The default threshold is 9 characters.
DATA�OS_Byte 204  Read/Write serial ignore flag
#Parent OS_ByteIndex
=>	R0 =	204 (&CC)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	flag before being overwritten
	R2 corrupted
                                                  
This call enables or disables serial input buffering. 0 will enable buffering of recieved data. Any other value will prevent buffering, but errors will still generate <events=>event_7> if enabled with <OS_Byte 14=>OS_Byte014>.
DATASOS_Byte 211  Read/Write bell channel
#Parent OS_ByteIndex
=>	R0 =	211 (&DC)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	previous channel
	R2 =	bell volume (see <OS_Byte 212=>OS_Byte212>)
                                                  
This call reads or sets the sound channel for the bell. The default channel is 1.
DATA�OS_Byte 212  Read/Write bell volume
#Parent OS_ByteIndex
=>	R0 =	212 (&D4)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	previous volume
	R2 =	bell frequency (see <OS_Byte 213=>OS_Byte213>)
                                                  
This call reads or sets the bell volume, the range 128 (loud) - 248 (soft). The default volume is &90 for {fCode}*Configure Loud{f}, &D0 for {fCode}*Configure Quiet{f}.
DATA��Draw�Draw        z
z�r�Homerton.BoldX�?����z
z�r�            dz
�z�2������ 						z����d�sVv������� 						u�u\KB�qL�����((�SOKeyboardH�W�b-�            ��W�;b-�            l�W�;b-�{�����L��VXL{�,L{�,n<VXn<VXL{l�w�4��[�����L��8xj[��j[��8x8xj[l��Z��[�����L��^�j[��j[��^�^�j[l
��~
�[�����L����j[
j[
����j[DVX���,�������@��VX ��, �\L� {��������@����L{��r�@�r���L{D^����������@��^�������D^������������@��^�0���0�D��X�@�H������@����Х@�Х8z��/:�&I���� � ���098Ҳ�/��&I���� � R��0108$�f0d�H���� � ���011<6v�6��3���((6t�Moused�R������� 						���h��/��            @.x�.n4���((�v�Controls`�h�?�/��            ��hB[��������@��R~B���B���B�¡.�¡�¡�i¡�b���[���[>w�[&p�[i�bi�ii�i.�&pB�>wB�R~B�R~B����B[���������@��.�B�r�B���B���.�������i���b���[r��[��[��[��b��i���.��B��B�.�B�.�B��z�B[�/�������@��
B�N!B�b(B�z/.�z/�z/�iz/�bb(�[N!�[��[��[��b��i���.��B��B�
B�
B���hf��M�����@��R~fM��fM��fM¡RF¡:?¡�"¡�������>w�&p�i�i�"i:?iRF&pfM>wfMR~fMR~fM���f���M�����@��.�fMr�fM��fM��RF��:?���"������r����������"�:?�RF�fM�fM.�fM.�fM�z�f�/�M�����@��
fMN!fMb(fMz/RFz/:?z/�"z/�b(�N!���������"�:?�RF�fM�fM
fM
fM��h�?�"y�����@��R~�x���x���x¡�q¡�j¡NN¡:G��"@��"@>w"@&p"@i:GiNNi�ji�q&p�x>w�xR~�xR~�x����?��"y�����@��.��xr��x���x���q���j��NN��:G��"@r�"@�"@�"@�:G�NN��j��q��x��x.��x.��x�z��?�/"y�����@��
�xN!�xb(�xz/�qz/�jz/NNz/:Gb("@N!"@�"@�"@�:G�NN��j��q��x��x
�x
�x��������������@��.���r�����������������*��������r������������*�������������.���.�����hb���������@��R~b���b���b�¡J�¡6�¡��¡ƾ��������>w��&p��iƾi��i6�iJ�&pb�>wb�R~b�R~b����b����������@��.�b�r�b���b���J���6�������ƾ����r����������ƾ����6��J��b��b�.�b�.�b��z�b��/�������@��
b�N!b�b(b�z/J�z/6�z/��z/ƾb(��N!���������ƾ����6��J��b��b�
b�
b�8~w����r����>w��328Z���Z�r�������3186r��%��������448~wfT���k���>wfU258Z��TZ�&k����fU418^��T�%�k����fU1218Z�B��������B�578~w�(��z@���>w�)898���(B�z@�����)1058v�(�%z@�����)788~w�o~�V����>w�p618Z��o��V������p6286�ov%V������p63t�"
����            @��"
�"4���((��bThe Keypad��?����            ��B[^�������@����B��B���B�.���i�b���[��[���[r��[^��b^��i^��^�.�r�B���B���B���B���B[:K�������@��z'B��<B��CB��J.��J��J�i�J�b�C�[�<�[f �[N�[:�b:�i:�:.�NB�f B�z'B�z'B���XB[��������@��VnB���B���B�Ƒ.�Ƒ�Ƒ�iƑ�b���[���[Bg�[*`�[Y�bY�iY�Y.�*`B�BgB�VnB�VnB����B[���������@��2�B�v�B���B���.�������i���b���[v��[��[��[��b��i���.��B��B�2�B�2�B���f^�M�����@����fM�fM��fMRF:?�"���������r��^��^��"^�:?^�RFr�fM��fM��fM��fM��f:K�M�����@��z'fM�<fM�CfM�JRF�J:?�J�"�J��C��<�f �N�:�:�"::?:RFNfMf fMz'fMz'fM��Xf��M�����@��VnfM��fM��fMƑRFƑ:?Ƒ�"Ƒ�������Bg�*`�Y�Y�"Y:?YRF*`fMBgfMVnfMVnfM����^������@����������v�^���������������r���^���^��^�^�^�v�r���������������:K������@��z'��<��C��Jv��J^��J��J���C���<��f ��N��:��:�:^�:v�N�f �z'�z'���X���������@��Vn�������Ƒv�Ƒ^�Ƒ�Ƒ����������Bg��*`��Y��Y�Y^�Yv�*`�Bg�Vn�Vn�����^�������@�����������������*�������������r���^��^�*�^���^���r�������������������:K�������@��z'���<���C���J���J���J*��J��C���<��f ��N��:�:*�:��:��N��f ��z'��z'����X����������@��Vn����������Ƒ��Ƒ��Ƒ*�Ƒ���������Bg��*`��Y�Y*�Y��Y��*`��Bg��Vn��Vn���n��?�J"y�����@��*��x�<�x�C�x6J�q6J�j6J�N6J~G�C"@�<"@��"@r�"@��~G���N���j���qr��x���x*��x*��x��X�?�"y�����@��Vn�x���x���xƑ�qƑ�jƑNNƑ:G��"@��"@Bg"@*`"@Y:GYNNY�jY�q*`�xBg�xVn�xVn�x�v�Z@��r������@��ƟpƟ��Ɵ¸Ҧ"�ޭ"��"��"�v���v���v�vNv�^G��@��@ޭ�@Ҧ�@ƟbGƟvNƟpƟp�v����,M�����@��Ɵ�Ɵd?Ɵ|FҦ�Lޭ�L��L��Lv�xFv�d?v�0�v���d��d�ޭh�Ҧh�Ɵ�Ɵ0�Ɵ�Ɵ�8
�VpJ���������p778� Vp&A�����f �p748�g�o��V����Bg�p918��z)J�z@������)278� z)�@z@���f �)428�g�(‡z@���Bg�)438^��o��W������p598����������r��1228���G�����N�1238�g�‡�����Bg�268^��������588��B��²���r�B�1078�›�G²���NB�1248�^B��²���*]B�1088^��w��R������x608�gfT‡�k���BgfU768b�fT"$�k�����fU106tW��-r�            ��naJb������BJ)n��Sn��Zn��aZ��aB��a�o�a�h�Z�a�S�a6"�a�a
�h
�o
B�
Z�n�6"n�J)n���6
MRo�����@��J)o�>o�Eo�L�g�L�`�L~D�Lj=�ER6�>R66"R6R6
j=
~D
�`
�go6"oJ)oJ)o��Z6�Ro�����@��&poj�o~�o���g���`��~D��j=~�R6j�R6iR6�aR6�Zj=�Z~D�Z�`�Z�g�aoio&po&po�r�6��Ro�����@���oF�oZ�or��gr��`r�~Dr�j=Z�R6F�R6�R6֨R6¡j=¡~D¡�`¡�g֨o�o�o�o�N�6�!Ro�����@���o"o6oN!�gN!�`N!~DN!j=6R6"R6�R6��R6��j=��~D���`���g��o�o�o�o�*/6zhRo�����@���Do�Yoao*h�g*h�`*h~D*hj=aR6�YR6�=R6�6R6z/j=z/~Dz/�`z/�g�6o�=o�Do�Do�v6V�Ro�����@����oڠo�o��g��`�~D�j=�R6ڠR6��R6j}R6Vvj=Vv~DVv�`Vv�gj}o��o��o��o��62�Ro�����@��r�o��o��o��g��`�~D�j=��R6��R6^�R6F�R62�j=2�~D2��`2��gF�o^�or�or�o��6=Ro�����@��No�.o�5o�<�g�<�`�<~D�<j=�5R6�.R6:R6"R6j=~D�`�g"o:oNoNo��J6�Ro�����@��*`onuo�|o���g���`��~D��j=�|R6nuR6YR6�QR6�Jj=�J~D�J�`�J�g�QoYo*`o*`o�v�6��Ro�����@���oJ�o^�ov��gv��`v�~Dv�j=^�R6J�R6�R6ژR6Ƒj=Ƒ~DƑ�`Ƒ�gژo�o�o�o�R�6�Ro�����@����o&o:
oR�gR�`R~DRj=:
R6&R6��R6��R6��j=��~D���`���g��o��o��o��o�.6~XRo�����@���4oJoQo.X�g.X�`.X~D.Xj=QR6JR6�-R6�&R6~j=~~D~�`~�g�&o�-o�4o�4o�
f6Z�Ro�����@���{oސo�o
��g
��`
�~D
�j=�R6ސR6�tR6nmR6Zfj=Zf~DZf�`Zf�gnmo�to�{o�{o�
f"�Z�r������@���{"�ސ"��"�
�
�
���
���
����r�ސr��tr�nmr�Zf��Zf��Zf��Zf
�nm"��t"��{"��{"���"�6�r������@��v�"���"���"���
���������������r���r�b�r�J�r�6���6���6���6�
�J�"�b�"�v�"�v�"����"�-r������@��R	"��"��%"��,
��,���,���,���%r��r�>r�&�r�����������
�&�"�>"�R	"�R	"��."�~Xr������@���4"�J"�Q"�.X
�.X��.X��.X��Qr�Jr��-r��&r�~��~��~��~
��&"��-"��4"��4"���"�
Mr������@��J)"��>"��E"��L
��L���L���L���Er��>r�6"r�r�
��
��
��

�"�6""�J)"�J)"���v&�<�v(�����@����&(��&(ب&(�!��������بv���v�h�v�T~v�<w��<w��<w�<w!T~&(h�&(��&(��&(�Ƚ&��v(�����@��\�&(��&(��&(�!����������v���v�D�v�0�v����������!0�&(D�&(\�&(\�&(��&��=v(�����@��8&(x/&(�6&(�=!�=��=���=���6v�x/v� v�v����������!&( &(8&(8&(��K&�Єv(�����@��a&(Tv&(l}&(��!�����������l}v�Tvv��Yv��Rv��K���K���K��K!�R&(�Y&(a&(a&(�\�&���v(�����@���&(0�&(H�&(\�!\��\���\���H�v�0�v�ؠv�ęv��������������!ę&(ؠ&(�&(�&(�8�&��v(�����@����&(&($&(8!8�8��8��$v�v���v���v��������������!��&(��&(��&(��&(� &�dYv(�����@���5&(�J&(R&(Y!Y�Y��Y��Rv��Jv��.v�|'v�d ��d ��d �d !|'&(�.&(�5&(�5&(��f&�@�v(�����@���|&(đ&(ܘ&(�!��������ܘv�đv�luv�Xnv�@g��@g��@g�@g!Xn&(lu&(�|&(�|&(�̭&��v(�����@��`�&(��&(��&(��!�������������v���v�H�v�4�v����������!4�&(H�&(`�&(`�&(���&��-v(�����@��<
&(|&(�&&(�-!�-��-���-���&v�|v�$v��v��������������!�&($&(<
&(<
&(��;&��tv(�����@��Q&(Xf&(pm&(�t!�t��t���t��pmv�Xfv�Jv��Bv��;���;���;��;!�B&(J&(Q&(Q&(�`�&���v(�����@���&(4�&(L�&(`�!`��`���`���L�v�4�v�ܐv�ȉv��������������!ȉ&(ܐ&(�&(�&(�F�J����������@��֨J��J�.�J�F�6�F��F�ƶF���.������¡������������ƶ�����6���J�¡J�֨J�֨J��"�J�r�������@����J��J�
J�"6�"�"ƶ"��
�������������r���r�ƶr��r�6���J���J���J���J��� J�NZ�������@���6J��KJ��RJ��Y6��Y��Yƶ�Y���R���K��z/��b(��N!��N!ƶN!�N!6�b(J�z/J��6J��6J���gJ�*��������@��j}J���J�™J�ڠ6�ڠ�ڠƶڠ��™������Vv��>o��*h��*hƶ*h�*h6�>oJ�VvJ�j}J�j}J����J���������@��F�J���J���J���6������ƶ������������2����������ƶ���6��J�2�J�F�J�F�J����J��.�������@��"J�f J�z'J��.6��.��.ƶ�.��z'��f ������������ƶ���6���J�J�"J�"J��n<J��u�������@���QJ�BgJ�VnJ�nu6�nu�nuƶnu��Vn��Bg���J���C���<���<ƶ�<��<6��CJ��JJ��QJ��QJ��J�J����������@��ژJ��J�2�J�J�6�J��J�ƶJ���2������Ƒ������������ƶ�����6���J�ƑJ�ژJ�ژJ��&�J�v�������@����J���J��J�&6�&�&ƶ&�����������������v���v�ƶv��v�6���J���J���J���J������!�S����@��r��S"�S6�SN!~LN!fEN!)N!�!6�"�Z��F��.��!.�).�fE.�~LF��SZ��Sr��Sr��S��J���������@��J)J�>wJ�R~J�j�6�j��j�ƶj���R~��>w��6"����
��
ƶ
�
6�J�6"J�J)J�J)J��V=�v�S����@���R�S���S��S&~L&fE&)&�!������K��D��=�!�=)�=fE�=~L�D�S�K�S�R�S�R�S�.��{�S����@���4�Snm�S�t�S�{~L�{fE�{)�{�!�t�nm��-��&�~�!~)~fE~~L�&�S�-�S�4�S�4�S�R��-�S����@�����S��S�%�S�,~L�,fE�,)�,�!�%������������!��)��fE��~L���S���S���S���S� "�fYr������@���5"��J"��Q"�Y
�Y��Y��Y���Qr��Jr��.r�z'r�f ��f ��f ��f 
�z'"��."��5"��5"���f"�B�r������@���|"�Ƒ"�ژ"��
����������ژr�Ƒr�nur�Vnr�Bg��Bg��Bg��Bg
�Vn"�nu"��|"��|"��έ"��r������@��^�"���"���"���
���������������r���r�J�r�2�r�����������
�2�"�J�"�^�"�^�"��:�"��r������@����"�"�""�:
�:��:��:��"r�r���r���r���������������
���"���"���"���"��"�"�rr������@����"��"�
"�"
�"��"��"��
r��r���r���r�r���r���r���r�
���"���"���"���"��� "�NZr������@���6"��K"��R"��Y
��Y���Y���Y���Rr��Kr�z/r�b(r�N!��N!��N!��N!
�b("�z/"��6"��6"���g"�*�r������@��j}"���"�™"�ڠ
�ڠ��ڠ��ڠ��™r���r�Vvr�>or�*h��*h��*h��*h
�>o"�Vv"�j}"�j}"��F�"���r������@��֨"��"�.�"�F�
�F���F���F���.�r��r�¡r���r���������������
���"�¡"�֨"�֨"�8�2�^G2������1128*�����2��������1138�2�r��������1148�$���Tr����b#��1158�n��>�2����>o�� 208����2��������1168�#2��Sr����z"��1178�u2��2����nu��228������2����2���1188#���R2�����!��1198�t���2�����t��308����b�2����b���288~���"2����>��298V���V+�������738s�K�Va���3��K478b&/",�F���"&0988��޼G�^�����޽1208�޼B�^����¡޽658��޼�^������޽818�/޼�O^����z/޽508�v޼�^����Vv޽678r�޼��^����2�޽838N޼�$^����޽848*K޼jk^�����J޽698F�޼F�^����Ƒ޽708��޼"�^������޽868�f޼چ^����Zf޽798��ܱ:���ܐ�888@J��j:���J�568d��#z���$�558����z���H��548�u�,�:���lu�378�.�O:����.�538����:������688��X�:���ؠ�358<Z�<vz����Y�518`��3:��� �348�����:���D��338���:���h��168�0��P:���`0�968v"�J�BVa���6"�K458Ri�J�b���i�K488J�K�Va�����K178&?�J�^b����=�K188��J�b������K198z�J�2b���:�K368VYKVub���Y�K2182��J�b�����K388��JNb������K398�t�J�b����t�K938&��8��K���&�R918f��"��5���&�R#78BJ�8BWL���JR928BJR"�W6���JR#88��.i���|�����.j68�+�U�F�i����+�V238�+�?�F�S����+�@408�"��~=�����~"
�728�"
��=�����~"
�878��BV���i���r��V248r��?r��S���r��@528���8�L�����R928��R"��5�����R#58��U��i�����V498B�B@��S�����@71��<_AjG�K��@���E&C�C2A�@2A�>&C�<E�<BH�>6J�@*L�C*L�E6J�GBH�GE�E&C���vp�S����@��J)�S�a�Si�S&p~L&pfE&p)&p�!i��a�6"��
�!
)
fE
~L�S6"�SJ)�SJ)�S8c<޼�\^����#<޽648F;�"�H�5���F;R#48�=�8_F�K����<R91�J�RJ�������B�&J��;J��BJ�J6�J�JƶJ���B���;����g��R��RƶR�R6�gJ�J��&J��&J���WJ�.��������BmmJ���J�ƉJ�ސ6�ސ�ސƶސ��Ɖ������[f��C_��.X��.Xƶ.X�.X6�C_J�[fJ�mmJ�mmJ����J���������BM�J���J���J���6������ƶ������������5��� �������ƶ���6� �J�5�J�M�J�M�J���&�`iv(�����BJ)&(�Z&(�a&(i!i�i��i���av��Zv�6"v�v�
��
��
�
!&(6"&(J)&(J)&(<�J�-v(�����B�,ƶ�,���%������������������ƶ��J���b���v���v���v��������������!��&(��&(�&(�%&(�,!�,��F�6^,To�����@���o�o�%o,�g,�`,�D,�=�%T6�T6b�T6J�T6���=���D���`���gJ�ob�o�o�o��ona&�������@��j�n���n�¡n�֨Z�֨B�֨�o֨�h¡�a���aR~�a>w�a&p�h&p�o&pB�&pZ�>wn�R~n�j�n�j�n����na��������@��F�n���n���n���Z���B����o���h���a���a.��a��a��h��o�B��Z��n�.�n�F�n�F�n����na�6�������@��"n�b(n�z/n��6Z��6B��6�o�6�hz/�ab(�a
�a��a��h��o�B��Z��n�
n�"n�"n��jDna�}�������@���Yn�>on�Vvn�j}Z�j}B�j}�oj}�hVv�a>o�a�R�a�K�a�D�h�D�o�DB��DZ��Kn��Rn��Yn��Yn��F�na���������@��ڠn��n�2�n�F�Z�F�B�F��oF��h2��a��a™�a���a���h���o��B���Z���n�™n�ڠn�ڠn��"�nar�������@����n���n�n�"Z�"B�"�o"�h�a���a���a���ar��hr��or�B�r�Z���n���n���n���n���naNR�������@���.n��Cn��Jn��QZ��QB��Q�o�Q�h�J�a�C�az'�af �aN�hN�oNB�NZ�f n�z'n��.n��.n���_na*��������@��nun���n�Ƒn�ژZ�ژB�ژ�oژ�hƑ�a���aVn�aBg�a*`�h*`�o*`B�*`Z�Bgn�Vnn�nun�nun����na��������@��J�n���n���n���Z���B����o���h���a���a2��a��a��h��o�B��Z��n�2�n�J�n�J�n����na�&�������@��&n�fn�~n��&Z��&B��&�o�&�h~�af�a��a���a���h���o��B���Z���n��n�&n�&n��n4na�m�������@��Jn�B_n�Zfn�nmZ�nmB�nm�onm�hZf�aB_�a�B�a�;�a�4�h�4�o�4B��4Z��;n��Bn�Jn�Jn�8�~v������R~w948n�v�������.�w978Jv�,�����
w668&Svfs������Rw828�vB������™w998
�v��������w1008�'v�G�����z'w858�cvB������Bbw1018��v^�������w1028z�v:!�������w1038V8vVh������6w1048��.��������.�08�7.�D����x7.�08�7.i�D�|���x7.j3�J{na-�������B��n��n��%n��,Z��,B��,�o�,�h�%�a��aƉ�a���a�{�h�{�o�{B��{Z���n�Ɖn�a�n���n�e�

�?$@�F�Fe8

���eD

	��������  e�

		$$$					$$		$	$			Standardep

DATAOS_Byte 193  Read/Write flash counter
#Parent OS_ByteIndex
=>	R0 =	193 (&C1)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	value before being overwritten
	R2 corrupted

This call reads or sets the count-down timer for flashing colours. Provided that the flash period is not infinite, the counter is loaded with the duration of the first flash colour and counts down by one every VSync until it reaches zero. At this point the colours are swapped and the counter loaded with the second flash period. /etc/.
DATA�OS_Byte 194  Read duration of second flash colour
#Parent OS_ByteIndex
=>	R0 =	194 (&C2)
	R1 =	0
	R2 =	255

<=	R0 =	preserved
	R1 =	duration (video frames)
	R2 corrupted
                                                  
This call reads the duration of the second flash colour, as set with <OS_Byte 10=>OS_Byte010> or <VDU 23,10=>VDU:23,10>. This call should not be used to write the value - doing so would only change the value in memory, without affecting the hardware.
DATA�OS_Byte 195  Read duration of first flash colour
#Parent OS_ByteIndex
=>	R0 =	195 (&C3)
	R1 =	0
	R2 =	255

<=	R0 =	preserved
	R1 =	duration (video frames)
	R2 corrupted
                                                  
This call reads the duration of the first flash colour, as set with <OS_Byte 9=>OS_Byte009> or <VDU 23,9=>VDU:23,9>. This call should not be used to write the value - doing so would only change the value in memory, without affecting the hardware.
DATA�OS_Byte 213  Read/Write bell frequency
#Parent OS_ByteIndex
=>	R0 =	213 (&D5)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	previous frequency
	R2 =	bell duration (see <OS_Byte 214=>OS_Byte214>)
                                                  
This call reads or sets the bell frequency, which is an <BBC style frequency=>Sound_pitches> in the range 0-255. The default frequency is 100.
DATA;OS_Byte 214  Read/Write bell duration
#Parent OS_ByteIndex
=>	R0 =	214 (&D6)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	previous duration
	R2 corrupted
                                                  
This call reads or sets the bell duration, in multiples of 5 cs. The default duration is 6.
DATA�OS_Byte 216  Read/Write length of function key string
#Parent OS_ByteIndex
=>	R0 =	216 (&D8)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	previous length
	R2 =	paged mode line count (see <OS_Byte 217=>OS_Byte217>)

This call reads or sets the count of characters left in the currently active function key definition. If this count is 0, then no current function key string is being read. If this count is non-zero then <OS_ReadC> is reading from a function key definition rather than the current input stream.

Writing a 0 length will cancel the current function key expansion - the effect of writing any other value is indeterminate.
DATA�OS_Byte 217  Read/Write paged mode line count
#Parent OS_ByteIndex
=>	R0 =	217 (&D9)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	previous count
	R2 corrupted
                                                  
This call reads or sets the count of lines displayed since the last page halt when in <paged mode=>VDU:14>. Usually this call is used to set the count to 0, before requesting user input - <OS_ReadLine> makes this call automatically.
DATA�OS_Byte 218  Read/Write bytes in VDU queue
#Parent OS_ByteIndex
=>	R0 =	218 (&DA)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	previous count
	R2 corrupted
                                                  
This call reads or sets the count of bytes in the VDU queue. The value of the count is {fCode}-(bytes needed to complete <VDU sequence=>VDU:!Root>){f} held in 1 byte, so if two bytes are needed to complete the current sequence then count will be &FE.

Usually this call is used to set the count to 0, which abandons any current VDU sequence. This stops error messages being garbled by a partially completed VDU sequence.
DATA�OS_Byte 219  Read/Write Tab key code
#Parent OS_ByteIndex
=>	R0 =	219 (&DB)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	previous value
	R2 corrupted
                                                  
This call reads or sets the character that the tab key produces. If 128 <= value <= 255 then the character inserted in the buffer is modified by shift and control:

Key	Modification
#Line
Shift	value EOR &10
Control	value EOR &20
DATAwOS_Byte 220  Read/Write escape character
#Parent OS_ByteIndex
=>	R0 =	220 (&DC)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	previous value
	R2 corrupted
                                                  
This call reads or sets the character that causes an escape condition when read from the input stream. The default is 27 (generated by the escape key).
DATA�	OS_Byte 221-228  Read/Write interpretation of input values &80-&FF
#Parent OS_ByteIndex
=>	R0 =	221-228 (&DD - &E5)	controls <range of buffer codes=>.range> affected
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	previous value
	R2 corrupted
                                                  
This call reads or sets the interpretation of input values &80-&FF, which includes <codes generated by the function keys=>.codes>. The 128 buffer codes are divided into 8 blocks, and the block affected is chosen by R0. The value generated via R1 and R2 determines the interpretation of buffer codes:

Value	Interpretation
#Line
0	discard
1	expand function key number (code MOD 16)
2	insert 0 byte followed by code
3-255	insert (code MOD 16) + value

#SubPage codes
OS_Byte 221-228 key codes
Function keys generate these codes unshifted

Key		Code
#Line
Print		&80
F1-F9		&81-&89
Copy		&8B
Left		&8C
Right		&8D
Down		&8E
Up		&8F
Page down	&{*}9{*}E
Page up		&{*}9{*}F
F10-F12		&CA-&CC
Insert		&CD
#tab

Shift EORs the code with &10
Control EORs the code with &20

The cursor keys and copy only generate these codes if set up to act as function keys by calling <OS_Byte 4=>OS_Byte004> with R1=2.

&80 + Buffer value gives the character codes used by the <Wimp=>Wimp:Wimp_Poll8a>. When reset occurs &CA ({/}i.e.{/} F10) is inserted into the input buffer.

Unlisted codes cannot be generated by the main keyboard, but can occur by
�	Using these OS_Byte calls to set keys to generate them
�	Changing the numeric keypad base with <OS_Byte 238=>OS_Byte238>
�	Inserting bytes into the keyboard buffer with <OS_Byte 138=>OS_Byte138> and <153=>OS_Byte153>.
�	Recieving bytes from the serial port (see also <OS_Byte 181=>OS_Byte181> to control serial input interpretation)

Note that page up and down effectively behave as Up and Down with shift toggled. In fact, it is impossible to distinguish shift/control combinations of page up and down with shift/control combinations of cursor up and down, which can prove frustrating.
#SubPage range
OS_Byte 221-228 ranges
R0	Range affected	Default value	Effect
#Line
221	&C0-&CF		1		function keys (Print, F1-F9, cursor keys and copy <if acting as function keys=>OS_Byte004>)
222	&D0-&FF		&80		return buffer code - 16
223	&E0-&FF		&90		return buffer code - 16
224	&F0-&FF		0		discard
#Wrap off
225	&80-&8F		1		function keys (F10-F12, Insert)
226	&90-&9F		&D0		return buffer code
227	&A0-&AF		&E0		return buffer code
228	&B0-&BF		&F0		return buffer code
#Wrap
DATA�OS_Byte 230  Read/Write escape effects
#Parent OS_ByteIndex
=>	R0 =	230 (&E6)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	state before being overwritten
	R2 corrupted
                                                  
This call reads or sets the escape effects. A non-zero state disables escape effects. A state of 0 (the default) enables escape effects - when <escape is acknowledged=>OS_Byte126>:

�	<active output buffers are flushed=>OS_Byte021>
�	<current *Exec file closed=>OS_Byte198>
�	<VDU queue cleared=>OS_Byte218>
�	<VDU paged line count cleared=>OS_Byte217>
�	Terminates any sound being produced
# Hmm. Don't know which SWI does that
DATAfOS_Byte 236  Read/Write character destination status
#Parent OS_ByteIndex
=>	R0 =	236
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	previous state
	R2 =	cursor key status (see <OS_Byte 237=>OS_Byte237>)

This call reads or sets the <character destination status=>OS_Byte003state>. The state may also be written with <OS_Byte 3=>OS_Byte003>.
DATA\OS_Byte 237  Read/Write cursor key status
#Parent OS_ByteIndex
=>	R0 =	237
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	previous state
	R2 =	numeric keypad interpretation (see <OS_Byte 238=>OS_Byte238>)

This call reads or sets the <cursor key status=>OS_Byte004state>. The state may also be written with <OS_Byte 4=>OS_Byte004>.
DATA�OS_Byte 238  Read/Write numeric keypad interpretation
#Parent OS_ByteIndex
=>	R0 =	238
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	previous base number
	R2 corrupted

This call reads or sets the numeric keypad interpretation. Keypad keys generate offsets from this base value, which with the default base number of 48 give the key presses shown:

Key	Offset		Key code	Offset with	Key Code
Pressed	from base	Generated 	NumLock		generated
#Line
0	�0		"0"		+157		Insert
1	+1		"1"		+91		Copy
2	+2		"2"		+94		Down
3	+3		"3"		+110		Page Down
4	+4		"4"		+92		Left
5	+5		"5"		(ignored)
6	+6		"6"		+93		Right
7	+7		"7"		-18		Home
8	+8		"8"		+95		Up
9	+9		"9"		+111		Page Up
.	-2		"."		+79		Delete
/	-1		"/"		unchanged
*	-6		"*"		unchanged
\#	-13		"\"		unchanged
-	-3		"-"		unchanged
+	-5		"+"		unchanged
Enter	-35		Return		unchanged


The effects of shift and control are set with <OS_Byte 254=>OS_Byte254>.
DATA�OS_Byte 240  Read country number
#Parent OS_ByteIndex
=>	R0 =	240 (&F0)
	R1 =	0
	R2 =	255

<=	R0 preserved
	R1 =	<country number=>Territory_numbers>
	R2 =	user flag (see <OS_Byte 241=>OS_Byte241>)
# Hmm. Tekkie disk makes this cross reference to 241, even though it doesn't document 241
                                                  
This call writes the country number used by the international module. This value can be written (and read) with <OS_Byte 70=>OS_Byte070>.
DATA�OS_Byte 242  Read serial baud rates
#Parent OS_ByteIndex
=>	R0 =	242 (&FB)
	R1 =	0
	R2 =	255

<=	R0 preserved
	R1 =	<baud rates=>.baud>
	R2 =	timer switch state (see <OS_Byte 243=>OS_Byte243>)

This call reads the serial rates in a backwards compatible format. You should use <OS_SerialOp 5=>OS_SerialOp5> and <6=>OS_SerialOp5> in preference
#Subpage baud
OS_Byte 242 baud rate block
The bits in this block are arranged to extend the block used by the original hardware

Bit	Meaning
#Line
0-2	Transmit bits 0-2
3-5	Receive bits 0-2
6	Receive bit 3
7	Transmic bit 3

where the 4 bit values encode the buad rates:

#Tab
Value	Baud rate
#Line
0	19200
1	1200
2	4800
3	150
4	9600
5	300
6	2400
7	75
8	7200
9	134.5
10	1800
11	50
12	3600
13	110
14	600
15	undefined
DATA�OS_Byte 243  Read timer switch state
#Parent OS_ByteIndex
=>	R0 =	243 (&F3)
	R1 =	0
	R2 =	255

<=	R0 preserved
	R1 =	switch state
	R2 corrupted

This call is obsolete - it reads which of the two copies of the centisecond clock is read/written to by <OS_Word 3 and 4=>OS_Word4>, and which is updated on the 100Hz interupt. In effect it provides a location that changes 100 times per second.
DATA�OS_Byte 246  Read/Write printer ignore character
#Parent OS_ByteIndex
=>	R0 =	246 (&F6)
	R1 =	EOR value
	R2 =	AND value

<=	R0 preserved
	R1 =	value before being overwritten
	R2 corrupted
                                                  
This call reads or set the printer ignore character. It may also be written with <OS_Byte 6=>OS_Byte006>. To unset the ignore character (NoIgnore) you cannot use this call, you need to use <OS_Byte 182=>OS_Byte182>.
DATA�OS_Byte 250  Read VDU driver screen bank number
#Parent OS_ByteIndex
=>	R0 =	250 (&FA)
	R1 =	0
	R2 =	255

<=	R0 preserved
	R1 =	VDU driver screen bank
	R2 =	display screen bank (see <OS_Byte 251=>OS_Byte251>)

This call reads the screen bank used by the display, as set with <OS_Byte 112=>OS_Byte112>. This call should not be used to write the value - doing so would only change the value in memory, without affecting the hardware.
DATA�OS_Byte 251  Read display screen bank number
#Parent OS_ByteIndex
=>	R0 =	251 (&FB)
	R1 =	0
	R2 =	255

<=	R0 preserved
	R1 =	display screen bank
	R2 corrupted

This call reads the screen bank used by the display, as set with <OS_Byte 113=>OS_Byte113>. This call should not be used to write the value - doing so would only change the value in memory, without affecting the hardware.
DATA�OS_Byte 253  Read last reset type
#Parent OS_ByteIndex
=>	R0 =	253 (&FD)
	R1 =	0
	R2 =	255

<=	R0 preserved
	R1 =	<break type=>.type>
	R2 =	effect of shift on keypad (see <OS_Byte 254=>OS_Byte254>)
                                                  
This call read the type of the last reset.
#subpage type
Last reset type
\#	Reset type
#Line
0	Soft reset
1	Power-on reset
2	Hard reset
DIR$``G���C&��O!Root\#H�����*�0 %H���7�*{1�'H���
*12�,H�����*5�.H�����*�6\0H����*�11\1H�����*&7�2H����*�8p3G��� ���20�5H���= *�24P7H����*�19DATAOOS_File  (&08)
#Parent OS_
=> R0 = reason code

Miscellaneous operations on whole files :

0	<Save block of memory as a file=>OS_File0>
1	<Write catalogue info for named object=>OS_File1>
2	<Write load address for named object=>OS_File1>
3	<Write exec address for named object=>OS_File1>
4	<Write attributes for named object=>OS_File1>
5	<Read catalogue info for object=>OS_File5>
6	<Delete named object=>OS_File6>
7	<Create empty un-stamped file=>OS_File7>
8	<Create directory=>OS_File8>
9	<Date stamp named object=>OS_File1>
10	<Save block of memory as a typed file=>OS_File0>
11	<Create empty file=>OS_File11>
12	<Load named file given path=>OS_File12>
13	<Read catalogue info for object given path=>OS_File5>
14	<Load named file given path variable=>OS_File12>
15	<Read catalogue info for object given path variable=>OS_File5>
16	<Load named file without path=>OS_File12>
17	<Read catalogue info for object without path=>OS_File5>
18	<Set type of named object=>OS_File1>
19	<Generate error message=>OS_File19>
20	<Read catalogue info for stamped object=>OS_File20>
21	<Read catalogue info for stamped object given path=>OS_File20>
22	<Read catalogue info for stamped object given path variable=>OS_File20>
23	<Read catalogue info for stamped object without path=>OS_File20>
24	<Read block size of file=>OS_File24>
255	<Load named file=>OS_File12>
DATA�OS_File 0 and 10
#Parent OS_File
=>	R0 =	0 or 10 (reason codes)
	R1 =	pointer to filename
	 	if R0 =  0 :	R2 = <load address=>fsys_loadexec>
	 	 		R3 = <exec address=>fsys_loadexec>
	 	if R0 = 10 :	R2 = <filetype=>Filetypes:!Root>
	R4 =	pointer to start address
	R5 =	pointer to end address

<=	all registers preserved

This SWI is used to save a block of memory as a file. An error is returned if object is locked, is open or is a directory.
DATA{OS_File 1,2,3,4,9 and 18
#Parent OS_File
=>	R0 =	1, 2, 3, 4, 9 or 18 (reason codes)
	R1 =	pointer to filename
	 	if R0 in (1,2)	: R2 =	<load address=>fsys_loadexec>
	 	if R0 = 18	: R2 =	<filetype=>Filetypes:!Root>
	 	if R0 in (1,3)	: R3 =	<exec address=>fsys_loadexec>
	 	if R0 in (1,4)	: R5 =	<attributes=>fsys_objattr>

<=	registers preserved

This SWI is used to write various catalogue information for a named object.

R0	Info written
#Line
1	Load and exec address + object attributes
2	Load address
3	Exec address
4	Object attributes
9	Date/time stamp + filetype to &FFD if not set.
18	Filetype, and date/time if not set.
DATAOS_File 12,14,16 and 255
#Parent OS_File
=>	R0 =	12,14,16 or 255 (reason code)
	R1 =	pointer to filename
	 	if R3 AND &FF = 0 :
	 	  R2 = load address
	 	  (if b31 set then the file is code and will be synchronised)
	 	else :
	 	  load at files load address
	 	if R0 = 255 :	use File$Path
	 	if R0 = 12 :	R4 = pointer to path string
	 	if R0 = 14 :	R4 = pointer to path variable
	 	if R0 = 16 :	use no path

#Tab
<=	R0 =	<object type=>fsys_objtype>
	R2 =	<load address=>fsys_loadexec>
	R3 =	<exec address=>fsys_loadexec>
	R4 =	object length
	R5 =	<object attributes=>fsys_objattr>

This SWI is used to load a named file. An error will be generated if not found, is directory, no read access, or a bad load address.

If the file is stamped, and loading at load address (R3 AND &FF \<> 0) the variable '{fCode}Alias$@LoadType_{/}xxx{/}{f}' will be used, and it is possible that (like <OS_FSControl 4=>OS_FSControl4>) this call may not return. The PRMs are incorrect in their statement that this is an error.
# Gerph> And incorrect in stating (2-15) that the CLI performs the expansion.
#        All in all, this oversight took a Chris and me about 5 hours to find!
#        This feature is present in RO3.1 and is still in RO3.6

Note: b31 is not implemented before (and including) RO3.7.
DATAOS_File 5,13,15 and 17
#Parent OS_File
=>	R0 =	5,13,15 or 17
	R1 =	pointer to filename
	 	if R0 = 5 :	use File$Path
	 	if R0 = 13 :	R4 = pointer to path string
	 	if R0 = 15 :	R4 = pointer to path variable
	 	if R0 = 17 :	use no path

<=	R0 =	<object type=>fsys_objtype>
	R2 =	<load address=>fsys_loadexec>
	R3 =	<exec address=>fsys_loadexec>
	R4 =	object length
	R5 =	<object attributes=>fsys_objattr>
	R2-R5 corrupted if object not found

This SWI is used to read catalogue information for a named object.
DATA�OS_File 6
#Parent OS_File
=>	R0 =	6 (reason code)
	R1 =	pointer to non-wildcarded object name

<=	R0 =	<object type=>fsys_objtype>
	R2 =	<load address=>fsys_loadexec>
	R3 =	<exec address=>fsys_loadexec>
	R4 =	object length
	R5 =	<object attributes=>fsys_objattr>

This SWI deletes a named object. It is not an error if the object does not exist. An error is generated if object is locked, open or non-empty directory.
DATA�OS_File 11
#Parent OS_File
=>	R0 =	11 (reason code)
	R1 =	pointer to non-wildcarded object name
	R2 =	<file type=>FileTypes:!Root>
	R4 =	0
	R5 =	size of file
	
This SWI attempts to create a stamped file of a given size with a particular file type.DATA&OS_File 7
#Parent OS_File
=>	R0 =	7 (reason code)
	R1 =	pointer to non-wildcarded object name
	R2 =	<load address=>fsys_loadexec>
	R3 =	<exec address=>fsys_loadexec>
	R4 =	0
	R5 =	size of file
	
This SWI attempts to create an un-stamped file of a given size with a particular file type.DATA�OS_File 8
#Parent OS_File
=>	R0 =	8 (reason code)
	R1 =	pointer to non-wildcarded filename
	R4 =	number of entries, or 0 for default

This SWI is used to create a directory. It is not an error if the directory already exists.
DATAOS_File 20, 21, 22 and 23
#Parent OS_File
Read catalogue info for named stamped object

=>	R0 =	20, 21, 22 or 23
	R1 =	pointer to filename
	 	if R0 = 20 :	use File$Path
	 	if R0 = 21 :	R4 = pointer to path string
	 	if R0 = 22 :	R4 = pointer to path variable
	 	if R0 = 23 :	use no path

<=	R0 =	<object type=>fsys_objtype>
	R2 =	<load address=>fsys_loadexec>
	R3 =	<exec address=>fsys_loadexec>
	R4 =	object length
	R5 =	<object attributes=>fsys_objattr>
	R6 =	<filetype=>Filetypes:!Root>
	
R2-R5 corrupted if object not foundDATA�OS_File 24  (&08)
#Parent OS_File
=>	R0 =	24 (reason code)
	R1 =	pointer to filename
<=	R2 =	natural block size in bytes

This call allows you to find the /natural block size/ of a given file. When you create or extend a file, disc space can only be allocated in chunks of a minimum size (512 bytes, for example). If your file is just 1 byte long for example, 511 bytes of disc space may have to be wasted after it if the natural block size is 512.DATA�OS_File 19
#Parent OS_File
=>	R0 =	19 (reason code)
	R1 =	pointer to filename
	R2 =	<object type=>.type>
<=	R0 =	pointer to <error block=>swi_errorblock>

This SWI will generate error based on filename.
#
#Subpage type
OS_File Generate errror messages
R2	Error message
#line
0	File '{/}wibble{/}' not found
1	'{/}wibble{/}' is a file
2	'{/}wibble{/}' is a directory
&100	Directory '{/}wibble{/}' not found
DIR$���?H���[�&k!Root�JH����piFlags`NH����x�Descriptor�NH�����o27TPH������28,RH������0,SH�����J1xTH���Z�18�UG���1$��231�VH���R��26pZH���I��25H\H�����13@_H����<�33aH���$}�37�cH���$��38�eG����.�͸39�fG���w$< �40`gG���< v43�gG���M< m44HhG����< n45�hH����5� �47�iH���:� �48�jH���ls]%�49lG���&O���50�lH���d� 52oG���=��53(qG����c�ͱ54�sH���+�.35uH���m'*�4�vH���N���14�wH����%�012yH������16�yH���7S^%*55|G������V56h}H�����]%�57�~H����	
10�H�����j11p�H������15�H���(
��17��H����H�19��H���;f�02�H���E20�H���~�21��H����N22�H������23�H����o&.24�H�����%30D�H����*�32��H������36ܖH����	[418�H����	�42$�H���X46<�H�����54�H�����518�H���NQ�6,�H����T�7$�H����V�8�H����X�9��H����� D52objectDATAkOS_FSControl  (&29)
#Parent OS_
This SWI controls the filing system manager and the filing systems themselves. Action taken depends on R0 :

#Indent 1
#Table Columns 2
00 &00  <Set current dir=>os_fscontrol0>
01 &01  <Set library dir=>os_fscontrol1>
02 &02  <Inform of start of new app=>os_fscontrol2>
03 &03  Internal
04 &04  <Run a file=>os_fscontrol4>
05 &05  <Catalogue a dir=>os_fscontrol5>
06 &06  <Examine current dir=>os_fscontrol6>
07 &07  <Catalogue library=>os_fscontrol7>
08 &08  <Examine library=>os_fscontrol8>
09 &09  <Examine objects=>os_fscontrol9>
10 &0A  <Set FS options=>os_fscontrol10>
11 &0B  <Set temporary FS=>os_fscontrol11>
12 &0C  <Add a FS=>os_fscontrol12>
13 &0D  <Check for FS=>os_fscontrol13>
14 &0E  <Select FS=>os_fscontrol14>
15 &0F  <Boot from FS=>os_fscontrol15>
16 &10  <Remove FS=>os_fscontrol16>
17 &11  <Add secondary module=>os_fscontrol17>
18 &12  <Convert filetype number to name=>OS_FSControl18>
19 &13  <Restore current FS=>os_fscontrol19>
20 &14  <Read location of temp FS=>os_fscontrol20>
21 &15  <Return a file handle=>os_fscontrol21>
22 &16  <Close all open files=>os_fscontrol22>
23 &17  <Shutdown FS=>os_fscontrol23>
24 &18  <Set attributes of objects=>os_fscontrol24>
25 &19  <Rename object=>OS_FSControl25>
26 &1A  <Copy objects=>OS_FSControl26>
27 &1B  <Wipe objects=>OS_FSControl27>
28 &1C  <Count objects=>OS_FSControl28>
29 &1D  Internal
30 &1E  Internal
31 &1F  <Convert filetype name to number=>OS_FSControl31>
32 &20  <Output list of obj names & info=>OS_FSControl32>
33 &21  <Convert a filing system number to a name=>OS_FSControl33>
34 &22  Reserved
35 &23  <Add an image FS=>OS_FSControl35>
36 &24  <Remove an image FS=>OS_FSControl36>
37 &25  <Canonicalise path=>OS_FSControl37>
38 &26  <Extract filetype from file information=>OS_FSControl38>
39 &27  <Set User Root Directory=>OS_FSControl39>
40 &28  <Swap current and previous directories=>OS_FSControl40>
41 &29  Return defect list for an image file
42 &2A  Map out defect from an image file
43 &2B  <Unset the Current Directory=>OS_FSControl43>
44 &2C  <Unset the User Root Directory=>OS_FSControl44>
45 &2D  <Unset the Library Directory=>OS_FSControl45>
46 &2E  Return /used space map/ of image file
47 &2F  <Read boot option for disc or image file=>OS_FSControl47>
48 &30  <Write boot option for disc or image file=>OS_FSControl48>
49 &31  <Read free space for disc or image file=>OS_FSControl49>
50 &32  <Rename disc or image file=>OS_FSControl50>
51 &33  Request update of image stamp
52 &34  <Find object at offset within image file=>OS_FSControl52>
53 &35  <Set given directory to path unchecked=>OS_FSControl53>
54 &36  <Read path of given directory=>OS_FSControl54>
55 &37  <Read free space for a large disc or image file=>OS_FSControl55>
56 &38  <Read defect list for a large disc or image file=>OS_FSControl56>
57 &39  <Map out defect from large disc or image=>OS_FSControl57>
#EndTable
DATAiFlags for file operations
Bit	Use	Meaning
#Line
0	CWN	{_}R{_}ecurse
1	CW	{_}F{_}orce
2	CWN	Given times in block
3	CWN	{_}C{_}onfirm operation
4	CWN	{_}V{_}erbose
5	C	{_}Q{_}uick (use application area - not really safe)
6	C	{_}P{_}rompt for new disc
7	C	{_}D{_}elete after copy
8	CWN	Allow printing of progress
9	C	{_}A{_}ccess attributes as in source
10	C	{_}S{_}tamp files
11	C	S{_}t{_}ructure copy only
12	C	{_}N{_}ewer than destination
13	C	<Use descriptor block=>OS_FSControlDescriptor> as workspace
14	C	{_}L{_}ook at destination first

Usages :
C	Copy
W	Wipe
N	Count (Number)

Verbose will list every file it performs an operation on.
Allow printing will print a summary of every directory it acts upon.
Underlined letters show the equivalent *Command option letters.
# N> Doesn't work as well with bold or italic.
# Gerph> Ok, I'll let you off - I agree :-)
DATA�File descriptor blocks
#Parent OS_FSControl26
#Wrap off
Offset	Contents
#Line
0	Address of workspace
4	Length of workspace
DATAoOS_FSControl 27  (&29)
#Parent OS_FSControl
=>	R0 =	27 (Wipe objects)
	R1 =	pointer to wildcarded filename of files to wipe
	R3 =	<flags=>OS_FSControlFlags>
	R4 =	<start load=>fsys_loadexec>
	R5 =	<start exec=>fsys_loadexec>
	R6 =	<end load=>fsys_loadexec>
	R7 =	<end exec=>fsys_loadexec>

This SWI allows you to wipe files as in the {fCode}*Wipe{f} command.
DATA�OS_FSControl 28  (&29)
#Parent OS_FSControl
=>	R0 =	28 (Count objects)
	R1 =	pointer to wildcarded filename of files to count
	R3 =	<flags=>OS_FSControlFlags>
	R4 =	<start load=>fsys_loadexec>
	R5 =	<start exec=>fsys_loadexec>
	R6 =	<end load=>fsys_loadexec>
	R7 =	<end exec=>fsys_loadexec>
	R8 =	<pointer to descriptor=>OS_FSControlDescriptor>

<=	R2 =	total length
	R3 =	number of files

This SWI allows you to count files as in the {fCode}*Count{f} command.
DATA�OS_FSControl 0  (&29)
#Parent OS_FSControl
=>	R0 =	0 (Set current directory)
	R1 =	pointer to (wildcarded) filename

This SWI sets current directory and filing system. If a pointer to "" is used, the directory is set to the User Root Directory.
DATAJOS_FSControl 1  (&29)
#Parent OS_FSControl
=>	R0 =	1 (Set Library)
	R1 =	pointer to (wildcarded) filename

This SWI sets the library directory and filing system. If a pointer to "" is used, the default for this filing system is used.

On FileCore-based filing systems, the default is to search &.Library, $.Library and @.
DATAOS_FSControl 18  (&29)
#Parent OS_FSControl
#Wrap off
=>	R0 =	18 (Convert filetype number to name)
	R2 =	filetype (bits 0-11)
#Wrap

<=	R2 =	first four chars
	R3 =	final four chars

This SWI issues <Service_LookupFiletype=>Service_42>. If unclaimed, it builds a default string.
DATA2OS_FSControl 31  (&29)
=>	R0 =	31 (Filetype name to number)
	R1 =	pointer to filetype string
<=	R2 =	<filetype=>Filetypes:!Root>

This SWI converts string to a filetype number. The string can be a filetype-name ("Obey"), or a filetype-number ("FEB")

An error is generated if conversion impossible.DATA�OS_FSControl 26  (&29)
#Parent OS_FSControl
=>	R0 =	26 (Copy objects)
	R1 =	pointer to wildcarded filename of files to copy
	R2 =	pointer to destination
	R3 =	<flags=>OS_FSControlFlags>
	R4 =	<start load=>fsys_loadexec>
	R5 =	<start exec=>fsys_loadexec>
	R6 =	<end load=>fsys_loadexec>
	R7 =	<end exec=>fsys_loadexec>
	R8 =	<pointer to descriptor=>OS_FSControlDescriptor>

This SWI allows you to copy files from one directory to another or as a new name. The destination leafname may not be wildcarded, unless it is "*" signifying "take destination leafname from source leafname".

It is not possible to choose a combination of flags to perform the same operation as "no confirm" in the desktop, as the desktop *will* overwrite files without confirmation, but won't force the overwriting of locked files, whereas this SWI will only overwrite files if it either has force set, or confirm set and gets positive confirmation.
DATA�OS_FSControl 25  (&29)
#Parent OS_FSControl
=>	R0 =	25 (Rename object)
	R1 =	pointer to original filename
	R2 =	pointer to new filename

This SWI allows you to rename a file. It can only rename objects to new names on the same filing system and disc - otherwise use <move=>OS_FSControl26> (copy with delete). There is no SWI to discover which disc a given file is on - hence it is impossible to ascertain whether this SWI will fail without actually calling it.
DATA�OS_FSControl 13  (&29)
#Parent OS_FSControl
=>	R0 =	13 (Check for presence of FS)
	R1 =	filing system number or pointer to name
	R2 =	depends on R1

<=	R0 preserved
	R1 =	<filing system number=>fsys_ident>
	R2 =	pointer to filing system control block or 0 if not found

The FS name match is case-insensitive. If R2 is 0, the FS name is taken to be terminated with any control character or the characters: "#",":" or "-". If R2 is not 0, then the FS name is terminated by any control character.

The FS control block that is pointed to by R2 on exit is for the internal use of FileSwitch, and you should not use or alter it. You should only test R2 for equality (not 0).

An error is returned if the FS name contains bad chars or is badly terminated.
DATA�OS_FSControl 33  (&29)
#Parent OS_FSControl
=>	R0 =	33 (Convert FS number to name)
	R1 =	<filing system number=>fsys_ident>
	R2 =	pointer to buffer
	R3 =	length of buffer

<=	Registers preserved

This call converts the filing system number passed in R1 to a filing system name. The name is stored in the buffer pointed to by R2, and is null-terminated. If FileSwitch does not know of the filing system number you pass it, a null string is returned.
DATA�OS_FSControl 37  (&29)
#Parent OS_FSControl
=>	R0 =	37 (Canonicalise path)
	R1 =	pointer to pathname to convert
	R2 =	pointer to buffer
	R3 =	pointer to name of path variable, or 0 for none
	R4 =	pointer to ctrl-terminated comma seperated path string, or 0 for none
	R5 =	buffer size
<=	R5 =	number of spare bytes in buffer (inc. term)

This call takes a filename (which may contain wildcards) and converts it into a complete pathmame, including disc and directory name when not provided.

#tab
*Example*:	{Fcode}fred{f} may convert to {Fcode}SCSI::Gamma.$.Utils.Fred{f}

*Note*:	If you call once with R2 and R5 set to zero, R5 will return minus the number of bytes needed. Now you can call again having allocated -R5 bytes from somewhere.
DATA�OS_FSControl 38  (&29)
#Parent OS_FSControl
=>	R0 =	38 (Extract filetype from file information)
	R1 =	pointer to pathname
	R2 =	<load address=>fsys_loadexec>
	R3 =	<exec address=>fsys_loadexec>
	R4 =	length
	R5 =	<Attributes=>fsys_objattr>
	R6 =	<Object type=>fsys_objtype>
<=	R2 =	<File type=>FileTypes:!Root> or
	 	-1	untyped
	 	&1000	directory
	 	&2000	application

Supply the relevant information on entry and this call will return the file type of the object.
DATA�OS_FSControl 39  (&29)
#Parent OS_FSControl
=>	R0 =	39 (Set URD)
	R1 =	pointer to pathname
<=	all registers preserved

Sets the User Root Directory (URD) to the given pathname.DATA�OS_FSControl 40  (&29)
=>	R0 =	40 (Swap current and previous directories)
<=	Registers preserved

Performs the equivalent of {fCode}*Back{f}, i.e. swaps the previous directory with the current directory.DATAvOS_FSControl 43  (&29)
=>	R0 =	43 (Unset CSD)
<=	Registers preserved

Unsets the Currently Selected Directory.DATAmOS_FSControl 44  (&29)
=>	R0 =	44 (Unset URD)
<=	Registers preserved

Unsets the User Root Directory.DATAnOS_FSControl 45  (&29)
=>	R0 =	45 (Unset Library)
<=	Registers preserved

Unsets the Library DirectoryDATA�OS_FSControl 47  (&29)
#Parent OS_FSControl
=>	R0 =	47 (Read boot option for disc or image)
	R1 =	pointer to name of object
<=	R0,R1 preserved
	R2 =	<boot option=>fsys_opt4>

Reads the boot option for a disc or image.
DATA�OS_FSControl 48  (&29)
#Parent OS_FSControl
=>	R0 =	48 (Write boot options for disc or image)
	R1 =	pointer to name of object
	R2 =	new <boot option=>fsys_opt4>
<=	Registers preserved

Sets the boot option for a disc or image.
DATA�OS_FSControl 49  (&29)
#Parent OS_FSControl
=>	R0 =	49 (Read free space for disc or image file)
	R1 =	pointer to name of object
<=	R0 =	free space
	R1 =	size of largest object that can be created.
	R2 =	size of disc

Reads the free space on a disc or image containing a named object. For large discs you will have to call <OS_FSControl 55=>OS_FSControl55> (RISC OS 3.6 only).
DATA�OS_FSControl 50  (&29)
#Parent OS_FSControl
=>	R0 =	50 (Rename disc of image file)
	R1 =	pointer to name of object
	R2 =	new disc name
<=	all registers preserved

Renames the disc or image file containing the given object.DATAOS_FSControl 52 (&29)
#Parent OS_FSControl
=>	R0 =	52 (Find object at offset within image file)
	R1 =	pointer to name of image file or disc
	R2 =	offset into image file or disc
	R3 =	pointer to buffer to receive object name
	R4 =	buffer length
<=	Buffer contains object name (may be corrupted if not found)
	R2 =	<Object type=>OS_FSControl52object>
	Other registers preserved

This call scans a disc or image file to find which object occupies a particular disc address. This is useful in trying to recover files, or map out a defect.
DATAOS_FSControl 53  (&29)
#Parent OS_FSControl
=>	R0 =	53 (Set given directory to path - unchecked)
	R1 =	pointer to new path
	R2 =	<directory to set=>.dirtype>
	R3 =	pointer to name of filing system
	R6 =	pointer to special field (or 0 for none)
<=	all registers preserved

This call sets a directory to a given path without checking if the path is okay.
#Subpage dirtype
Directory types
\#	Meaning
#line
0	CSD (Currently Selected Directory)
1	PSD (Previously Selected Directory)
2	URD (User Root Directory)
3	Library DirectoryDATA�OS_FSControl 54  (&29)
#Parent OS_FSControl
=>	R0 =	54 (Read path of given directory)
	R1 =	pointer to buffer to hold pathname
	R2 =	<directory to read=>OS_FSControl53.dirtype>
	R3 =	pointer to name of filing system
	R5 =	size of buffer (or 0 to read required size)
<=	Buffer is filled with pathname
	R1 =	pointer to rest of path, or 0 if directory is not set
	R5 =	(buffer length) minus (length of string (with terminator))
	R6 =	pointer to special field, terminated with null or "," (or 0 for none)

This call reads the path of the specified directory.

*Notes*:	Like other OS_FSControl calls, use this call twice: after the first call (r5 = 0), and on exit r5 = -(bytes needed).DATA.OS_FSControl 35  (&29)
#Parent OS_FSControl
#Wrap off
=>	R0 =	35 (Add image filing system)
	R1 =	module base address
	R2 =	offset of <ImageFS information block=>fsys_image_infoblock>
	R3 =	value to pass to routines in R12
#Wrap

This SWI is used to register an image filing system with the OS.
DATA�OS_FSControl 4  (&29)
#Parent OS_FSControl
=>	R0 =	4 (Run file)
	R1 =	pointer to (wildcarded) filename

This SWI runs a file. Files with load and exec addresses will be loaded and executed, files of type &FF8 (Absolute) will be loaded and executed at &8000. Utilities (type &FFC) will be loaded into RMA and run. All other filetypes will be searched for in {fCode}Alias$@RunType_{/}xxx{/}{f}.

It is possible that this call will not exit depending on the execution of the file.
DATA�OS_FSControl 14  (&29)
#Parent OS_FSControl
=>	R0 =	14 (Select FS)
	R1 =	<filing system number=>fsys_ident> or pointer to name, or 0 for none
<=	all preserved

Selects a filing system as both current and temporary filing system.
DATA0OS_FSControl 12
#Parent OS_FSControl
#Wrap off
=>	R0 =	12 (Add a FS)
	R1 =	pointer to module base
	R2 =	offset of filing system <information block=>fsys_infoblock>
	R3 =	pointer to private word
#Wrap
<=	All registers preserved

This SWI is used to make FileSwitch aware of a new a Filing System.
DATA�OS_FSControl 16
#Parent OS_FSControl
#Wrap off
=>	R0 =	16 (Remove FS)
	R1 =	pointer to filing system name
#Wrap
<=	All registers preserved

This SWI is used to remove a Filing System from FileSwitch.
DATA*OS_FSControl 55  (&37)
#Parent OS_FSControl
=>	R0 =	55 (Read free space for a large disc or image file)
	R1 =	pointer to name of object
<=	R0 =	least significant word of free space
	R1 =	most significant word of free space
	R2 =	size of largest object that can be created
	R3 =	least significant word of disc size
	R4 =	most significant word of disc size

Reads the free space on a disc or image containing a named object. This call is only implemented in RISC OS 3.6 and later. See <OS_FSControl 49=>OS_FSControl49> for the prior implementation.DATAVOS_FSControl 56 (&38)
#Parent OS_FSControl
=>	R0 =	56 (Read defect list for a large disc or image file)
	R1 =	pointer to name of object
	R2 =	pointer to buffer
	R3 =	length of buffer
<=	R0 preserved
	R1 =	number of defects placed in the buffer

Reads the defects list for a large disc. The buffer consists of 64bit values (LSW first).DATA�OS_FSControl 57 (&39)
#Parent OS_FSControl
=>	R0 =	57 (map out defect from large disc or image)
	R1 =	pointer to name of object
	R2 =	least significant word of defect address
	R3 =	most significant word of defect address

Maps out a defect from a large disc or image. This call is only supported on RISC OS 3.6 and later, prior to that <OS_FSControl 42=>OS_FSControl42> should be used.
DATA
OS_FSControl 10
#Parent OS_FSControl
#Wrap off
=>	R0 =	10 (Set FS options)
	R1 =	<option=>fsys_opts>
#Wrap
	R2 =	value

This SWI sets the options on the temporary filing system. See <OS_FSControl 48=>OS_FSControl48> to set the boot option (4) for a given disc.
DATAjOS_FSControl 11  (&29)
#Parent OS_FSControl
=>	R0 =	11 (Set temporary filing system)
	R1 =	pointer to (wildcarded) filename

<=	R0 preserved
	R1 =	updated to point beyond filing system specifier
	R2 =	-1	no filing system specifier present (call has no effect)
	 	>= 0	<filing system=>fsys_ident> to restore
	R3 =	pointer to special field, 0 if not present

This SWI sets the temporary filing system from the prefix string in R1. It is used by <OS_CLI> to set the temporary filing system for the command's duration. After the command the current filing system is restored with <OS_FSControl 19=>OS_FSControl19>
DATAOS_FSControl 15  (&29)
#Parent OS_FSControl
=>	R0 =	15 (Boot from FS)

<=	R0 preserved - may not return if boot runs an application

This SWI boots from the *current* filing system. The actions taken are dependant on the <boot setting=>OS_Byte255> and <option 4 setting=>fsys_opts> - the latter is set on the *temporary* filing system with <OS_FSControl 10=>OS_FSControl10>.
DATA�OS_FSControl 17
#Parent OS_FSControl
#Wrap off
=>	R0 =	17 (Add secondary module)
	R1 =	pointer to filing system name
	R2 =	pointer to secondary system name
	R3 =	secondary system private word
#Wrap
<=	All registers preserved

This SWI is used add secondary modules which provide additional <filing system commands=>OS_Module_Comflags>. For example, this allows filecore to add the commands provided by ADFS.
DATAOS_FSControl 19  (&29)
#Parent OS_FSControl
=>	R0 =	19 (Restore current FS)

This SWI sets the temporary filing system back to the current filing system. It is called by <OS_CLI> after a command has run, and by the kernel before the <error handler=>OS_handlers_error> is called.
DATA0OS_FSControl 2  (&29)
#Parent OS_FSControl
=>	R0 =	2 (Start new app)
	R1 =	pointer to command tail
	R2 =	<currently active object pointer=>OS_handlers_cao> to write
	R3 =	pointer to command name

<=	registers preserved, but may not return

#tab
This SWI allows you to fake starting an application. It

1	issues <UpCall 256=>OS_UpCall256> to inform the current application - if the upcall is claimed then the error "Unable to start application"

2	issues <Service_NewApplication=>Service_2A> to inform modules. If the service is claimed, then the error cannot be returned to you (as your application will now have been killed) so the error "Unable to start application" is passed to <OS_GenerateError>, which results in the error being sent to your parent's <error handler=>OS_handlers_error>.

3	if the <exit handler=>OS_handlers_exit> is below <memory limit=>OS_handlers_limit> then all handlers below memory limit are reset to their <defaults=>OS_ReadDefaultHandler>

4	the <CAO=>OS_handlers_cao> is set; the current time and command tail <are set=>OS_WriteEnv>
DATAOS_FSControl 20
#Parent OS_FSControl
#Wrap off
=>	R0 =	20 (Read location of temporary FS)

<=	R0 preserved
	R1 =	pointer to primary module base
	R2 =	pointer to private word
#Wrap

This SWI reads the location of the primary module for the temporary filing system. If there is no tempoarary filing system this call will return values for the current filing system. If there is no current filing system R1=0, R2 is undefined. The secondary module values can be read with <OS_FSControl 30=>OS_FSControl30>.
DATA�OS_FSControl 21
#Parent OS_FSControl
#Wrap off
=>	R0 =	21 (Read FS internal file handle)
	R1 =	(fileswitch) file handle

<=	R0 preserved
	R1 =	filing system file handle
	R2 =	filing system <information word=>fsys_infoword>
#Wrap

This SWI returns the internal file handle (as returned by <FSEntry_Open>) for a given file handle. If the fileswitch handle is invalid R1=0 on return. This SWI should only be used to implement a filing system.
DATANOS_FSControl 22
#Parent OS_FSControl
#Wrap off
=>	R0 =	22 (Close all open files)
#Wrap

This SWI flushes and closes all open files on all filing systems. It does not stop if an individual close reports an error, but will only return without error if all individual closes were error free. It is equivalent to {fCode}*Shut{f}.
DATA�OS_FSControl 23
#Parent OS_FSControl
#Wrap off
=>	R0 =	23 (Shutdown all filing systems)
#Wrap

This SWI flushes and closes all open files on all filing systems. It does not stop if an individual close reports an error, but will only return without error if all individual closes were error free. It informs all filing systems of the shutdown - this means that:

�	NetFS logs off from all file servers
�	FileCore dismounts all discs
�	disc heads are parked

It is equivalent to {fCode}*Shutdown{f}.
DATA.OS_FSControl 24  (&29)
#Parent OS_FSControl
#Wrap off
=>	R0 =	24 (Set attributes)
	R1 =	pointer to (wildcarded) filename
	R2 =	<attribute string=>fsys_access_string>
#Wrap

This SWI sets the access attributes for all leaf objects that match the filename. It is equivalent to {fCode}*Access{f}.
DATA%OS_FSControl 30
#Parent OS_FSControl
#Wrap off
=>	R0 =	20 (Read location of temp FS secondary module)

<=	R0 preserved
	R1 =	pointer to seconday module base
	R2 =	pointer to private word
#Wrap

This SWI reads the location of the secondary module for the temporary filing system. If there is no tempoarary filing system this call will return values for the current filing system. If there is no current filing system, or no secondary module R1=0, R2 is undefined. The primary module values can be read with <OS_FSControl 20=>OS_FSControl20>.
DATA�OS_FSControl 32  (&29)
#Parent OS_FSControl
#Wrap off
=>	R0 =	32 (Output list of objects)
	R1 =	(wildcarded) filename
#Wrap

This SWI is equivalent to {fCode}*FileInfo{f}.
DATA�OS_FSControl 36
#Parent OS_FSControl
#Wrap off
=>	R0 =	36 (Remove image filing system)
	R1 =	image filing system's <file type=>FileTypes:!Root>
#Wrap

This SWI is used to remove an image filing system from FileSwitch.
DATA[OS_FSControl 41  (&29)
#Parent OS_FSControl
#Wrap off
=>	R0 =	41 (Return image defect list)
	R1 =	pointer to name of image (null terminated)
	R2 =	pointer to buffer
	R5 =	buffer size
#Wrap

This SWI fills the buffer with the defect list of an image. The buffer is filled with words giving byte offsets of defects, terminated by &20000000.
DATA�OS_FSControl 42  (&29)
#Parent OS_FSControl
#Wrap off
=>	R0 =	42 (Map out defect from image)
	R1 =	pointer to name of image (null terminated)
	R2 =	byte offsets of defect start
#Wrap

This SWI maps out a defect from the image.
DATAOS_FSControl 46  (&29)
#Parent OS_FSControl
#Wrap off
=>	R0 =	46 (Return image used space map)
	R1 =	pointer to name of image (null terminated)
	R2 =	pointer to buffer
	R5 =	buffer size
#Wrap

This SWI writes the image used space map to the buffer, 1 bits signifying used blocks, 0 bits free blocks. Bit 0 in a byte comes before bit 7. This SWI sets bits up to min( buffer size, file size � block size ). Block size for a file can be read with <OS_File 24=>OS_File24>. For a non-image file the buffer will be filled with ones.
DATA�OS_FSControl 5  (&29)
#Parent OS_FSControl
#Wrap off
=>	R0 =	5 (Catalogue directory)
	R1 =	pointer to (wildcarded) filename
#Wrap

This SWI is equivalent to "{fCode}*Cat{f}". If a pointer to "" is used, the current directory is catalogued.
DATAOS_FSControl 51  (&29)
#Parent OS_FSControl
#Wrap off
=>	R0 =	51 (Request update of image stamp)
	R1 =	pointer to name of object
	R2 =	0 (stamp when updated)
	 	1 (stamp now)
#Wrap

This SWI is called by a hander of discs (such as FileCore) when it wants an image filing system ({/}e.g.{/} DOSFS) to update the image stamp (a.k.a. <cycle ID=>FileCore_cycleid>).
# N> OK, why can't the PRM settle on consistent jargon?
# Gerph> let not thy left hand know what thy right hand doeth
#           Matthew 5:48
DATA�OS_FSControl 6  (&29)
#Parent OS_FSControl
#Wrap off
=>	R0 =	6 (Examine directory)
	R1 =	pointer to (wildcarded) filename
#Wrap

This SWI is equivalent to "{fCode}*Ex{f}". If a pointer to "" is used, the current directory is examined.
DATA�OS_FSControl 7  (&29)
#Parent OS_FSControl
#Wrap off
=>	R0 =	7 (Catalogue library directory)
	R1 =	pointer to (wildcarded) filename
#Wrap

This SWI is equivalent to "{fCode}*LCat{f}". If a pointer to "" is used, the library is catalogued.
DATA�OS_FSControl 8  (&29)
#Parent OS_FSControl
#Wrap off
=>	R0 =	8 (Examine library)
	R1 =	pointer to (wildcarded) filename
#Wrap

This SWI is equivalent to "{fCode}*LEx{f}". If a pointer to "" is used, the library is examined.
DATA�OS_FSControl 9  (&29)
#Parent OS_FSControl
#Wrap off
=>	R0 =	9 (Examine objects)
	R1 =	pointer to (wildcarded) filename
#Wrap

This SWI is equivalent to {fCode}*Info{f}.
DATADObject types for disc address scan
#Parent OS_FSControl52
\#	Meaning
#Line
0	No object found (offset is free/defect/beyond image end)
1	No object found (offset used for free space map or other non-file use)
2	Object found (cannot share offset with other objects)
3	Object found (can share offset with other objects)
DIR$�G���s���12�G���-���2�G���'ݦ��26ԫH���rZ^%�3��G����v��{34�G���B��X36`�G�����ͬ40�G���\y��m9|�H���X�&action��H���NO��areaH�H���(#�Nptr��H����-�&reason��G����m5�reason2��G���r��T8$�G������410X�G�����͸11�G������L13\�G���C���144�G������_15��G������F16��G���n��824�G����
���25��G����ۦ�-27�H����kG28T�G���2L��294�G���Z	��30��G������;314�G���Y��32L�G�������33$�G���Y��35(�G���V��37D�G������C41��G���<���742��G�������;43��G�����K44H�G���F���C45��G���*���46��H���=x�47��G���d���48��G�����K49��G�����ͣ50��G���.��͈51�G������ͬ52��H�������53L�G������54l�G�����͍60��G�����ͅ61��G���4�� 62��G������17��G�����:̀type,�G���b��@57l�G������V58�H������h55,H�����,356>OS_SpriteOp_55DATA�Save sprite area  (12)
#Parent OS_SpriteOp_Reason
=>	R0 =	<12, &C=>OS_spriteop_Reason2> (Save sprite area)
	R1 =	<Sprite area=>OS_SpriteOp_Area>
	R2 =	pointer to filename

This call saves the entire sprite area to a file.DATA�Screen save  (2)
#Parent OS_SpriteOp_Reason
=>	R0 =	<2, &2=>os_spriteop_reason2> (Screen save)
	R2 =	pathname
	R3 =	palette save (0,1=no,yes)

This SWI saves the current graphics window. Spritename is "screendump".DATA�Rename sprite  (26)
#Parent OS_SpriteOp_Reason
=>	R0 =	<26, &1A=>OS_spriteop_Reason2> (Rename sprite)
	R1 =	<Sprite area=>OS_SpriteOp_Area>
	R2 =	Sprite name/pointer
	R3 =	new name of sprite

This SWI renames the specified sprite.DATA�Screen load  (3)
#Parent OS_SpriteOp_Reason
=>	R0 =	<3, &3=>os_spriteop_reason2> (Screen load)
	R2 =	pointer to filename

This SWI plots the first sprite in the file in the bottom left of the graphics window. Changes mode if neccessary, and sets palette if there is any.

Note: On RO3.5 and later, this call will load the image at the bottom left of the screen. Earlier versions of RISC OS will load the image to the screen origin.
DATA{Put sprite at coords  (34)
#Parent OS_SpriteOp_Reason
=>	R0 =	<34, &22=>OS_spriteop_Reason2> (Put sprite at coords)
	R1 =	<Sprite area=>OS_SpriteOp_Area>
	R2 =	Sprite name/pointer
	R3 =	x
	R4 =	y
	R5 =	<action=>OS_SpriteOp_Action>

This SWI plots the sprite specified at the co-ordinates given. Do not use if not in the same mode style (colours/resolution) as the sprite.DATAXSet pointer shape  (36)
#Parent OS_SpriteOp_Reason
=>	R0 =	<36, &24=>OS_SpriteOp_Reason2> (Set pointer shape)
	R1 =	<Sprite area=>OS_SpriteOp_Area>
	R2 =	Sprite name/pointer
	R3 =	<flags=>.flags>
	R4 =	X offset of active point
	R5 =	Y offset of active point
	R6 =	<scale factors=>os_scalefactors>, or 0 for 1:1 scaling
	R7 =	<pixel translation table=>colourtrans_pixtrans>

This SWI sets one of the four pointer shapes. (R4,R5) is pixel-offset from top left corner.
#Subpage flags
Bits	Meaning
#Line
0-3	pointer number (1-4)
4	0 => Set shape data
5	0 => Set palette
6	0 => Set pointer number
DATA�Read sprite info  (40)
#Parent OS_SpriteOp_Reason
=>	R0 =	<40, &28=>OS_SpriteOp_Reason2> (Read sprite info)
	R1 =	<Sprite area=>OS_SpriteOp_Area>
	R2 =	Sprite name/pointer

<=	R3 =	width in pixels
	R4 =	height in pixels
	R5 =	0,1 for mask no,yes
	R6 =	Mode, or <sprite type=>OS_SpriteOp_Type>

This SWI returns info about the given sprite.
To find OS width and height, read <mode variables=>OS_ReadModeVariable> 4 and 5.DATAmInitialise area  (9)
#Parent OS_SpriteOp_Reason
=>	R0 =	<9, &9=>OS_spriteop_reason2> (Initialise area)
	R1 =	<Sprite area=>OS_SpriteOp_Area>

This SWI clears all sprites from the sprite area specified. To start using a sprite area set the area block :
0	Size of area
4	0 (number of sprites)
8	16 (pointer to first sprite)
12	16 (pointer to first free word)
DATA&Action codes when plotting sprites
Value	Meaning
#Line
0	Overwrite
1	Disjoin (OR)
2	Conjoin (AND)
3	Exclusive Disjoin (EOR)
4	Invert screen
5	Identity (No change)
6	Conjoin Negation (?)
7	Disjoin Negation (?)
8	Use mask
#Wrap off
16	Use ECF 1	}
32	Use ECF 2	} Only one of these may
48	Use ECF 3	} be used
64	Use ECF 4	}
80	Use giant ECF	}

#Wrap on
In the Acorn Aasm header files I use for reference it also specifies that 32 may be used to mean Use sprite palette, but I cannot reconcile this with the rest of the table nor other literature.DATA�Format of sprite area
#Parent OS_SpriteOp
A sprite area consists of a control block followed by an optional extension area, sprites, and free space. Note that a sprite file is simply a sprite area saved without its first word.

Offset	Contents
#Line
0	Total size of sprite area
4	Number of sprites in area
8	Offset to 1st <sprite=>os_spriteop_ptr>
12	Offset to 1st free word
16..	Extension words (usually none)
DATANFormat of sprite
#Parent OS_SpriteOp_area
0	Offset to next sprite
4	Sprite name (max 12 chars)
16	Width in words - 1
20	Height in scan lines - 1
24	First bit used (left)
28	Last bit used  (right)
32	Offset to sprite image
36	Offset to sprite mask, or sprite itself if none
40	<sprite type=>OS_SpriteOp_Type>
44..	Palette data
DATAOS_SpriteOp reason codes
#Parent OS_SpriteOp
#Table Columns 2
2  2  <Screen save=>os_spriteop_2>
3  3  <Screen load=>os_spriteop_3>
8  8  <Read area control block=>os_spriteop_8>
9  9  <Initialise sprite area=>os_spriteop_9>
A  10 <Load sprite file=>OS_SpriteOp_10>
B  11 <Merge sprite file=>OS_SpriteOp_11>
C  12 <Save sprite file=>OS_SpriteOp_12>
D  13 <Return name=>OS_SpriteOp_13>
E  14 <Get sprite=>OS_SpriteOp_14>
F  15 <Create sprite=>OS_SpriteOp_15>
10 16 <Get sprite from user coords=>OS_SpriteOp_16>
11 17 <Verify sprite area=>OS_SpriteOp_17>
18 24 <Select sprite=>OS_SpriteOp_24>
19 25 <Delete sprite=>OS_SpriteOp_25>
1A 26 <Rename sprite=>OS_SpriteOp_26>
1B 27 <Copy sprite=>OS_SpriteOp_27>
1C 28 <Put sprite=>OS_SpriteOp_28>
1D 29 <Create mask=>OS_SpriteOp_29>
1E 30 <Remove mask=>OS_SpriteOp_30>
1F 31 <Insert row=>OS_SpriteOp_31>
20 32 <Delete row=>OS_SpriteOp_32>
21 33 <Flip about x axis=>OS_SpriteOp_33>
22 34 <Put sprite at user coords=>OS_SpriteOp_34>
23 35 <Append sprite=>OS_SpriteOp_35>
24 36 <Set pointer shape=>os_spriteop_36>
25 37 <Create/remove palette=>os_spriteop_37>
28 40 <Read sprite info=>os_spriteop_40>
29 41 <Read pixel colour=>os_spriteop_41>
2A 42 <Write pixel colour=>os_spriteop_42>
2B 43 <Read pixel mask=>os_spriteop_43>
2C 44 <Write pixel mask=>os_spriteop_44>
2D 45 <Insert column=>os_spriteop_45>
2E 46 <Delete column=>os_spriteop_46>
2F 47 <Flip about y axis=>os_spriteop_47>
30 48 <Plot sprite mask=>os_spriteop_48>
31 49 <Plot mask at user coords=>os_spriteop_49>
32 50 <Plot mask scaled=>os_spriteop_50>
33 51 <Paint char scaled=>os_spriteop_51>
34 52 <Paint sprite scaled=>os_spriteop_52>
35 53 <Put sprite grey scaled=>os_spriteop_53>
36 54 <Remove lefthand wastage=>os_spriteop_54>
37 55 <Plot mask transformed=>os_spriteop_55>
38 56 <Plot sprite transformed=>os_spriteop_56>
39 57 <Insert/delete rows=>os_spriteop_57>
3A 58 <Insert/delete columns=>os_spriteop_58>
3C 60 <Switch output to sprite=>os_spriteop_60>
3D 61 <Switch output to mask=>os_spriteop_61>
3E 62 <Read save area size=>os_spriteop_62>
#EndTable
DATAParameters to pass to OS_SpriteOp
reason+0	Use system area
reason+256	Use user <sprite area=>OS_SpriteOp_Area> pointed to by R1
reason+512	Use user <sprite area=>OS_SpriteOp_Area> pointed to by R1. R2 contains <pointer to sprite=>OS_SpriteOp_ptr>, rather than sprite name.
DATATRead area control block (8)
#Parent OS_SpriteOp_Reason
=>	R0 =	<8, &8=>os_spriteop_reason2> (Read area control block)
	R1 =	<Sprite area=>OS_SpriteOp_Area>
<=	R2 =	Size of sprite area
	R3 =	Number of sprites
	R4 =	Offset to first sprite
	R5 =	Offset to first free word

This call returns information held in a sprite area's header.
DATA4Load sprite file  (10)
#Parent OS_SpriteOp_Reason
=>	R0 =	<10, &A=>os_spriteop_reason2> (Load sprite file)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Pointer to pathname

This loads the given sprite file into the given sprite area. NOTE this will over write any sprites that are already in the area.DATA�Merge sprite file  (11)
#Parent OS_SpriteOp_Reason
=>	R0 =	<11, &B=>os_spriteop_reason2> (Merge sprite file)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Pointer to filename

This loads the sprites in the given sprite file into the specified area. If a sprite already exists it will be replaced. There must be enough memory in the sprite area to hold both set of sprites as replacements are made after the whole file has been loaded.DATALReturn name (13)
#Parent OS_SpriteOp_Reason
=>	R0 =	<13, &D=>os_spriteop_reason2> (Return name)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Pointer to buffer
	R3 =	Buffer size
	R4 =	Sprite number n
<=	R3 =	Length of name

This returns the name of the n'th sprite in the given sprite area where the first sprite is number 1.
DATA�Get sprite (14)
#Parent OS_SpriteOp_Reason
=>	R0 =	<14, &E=>os_spriteop_reason2> (Get sprite)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	0 => Exclude palette
	 	1 => Include palette
<=	R2 =	Address/Offset of sprite unless in wimp or system area.

This grabs the area of screen defined by the current and old graphic cursor coordinates. Any area outside the present graphics window will be filled in with the present background colour.
DATA_Create sprite (15)
#Parent OS_SpriteOp_Reason
=>	R0 =	<15, &F=>os_spriteop_reason2> (Create sprite)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	0 => Exclude palette
	 	1 => Include palette
	R4 =	Width in pixels
	R5 =	Height in pixels
	R6 =	Mode number, or <sprite type=>OS_SpriteOp_Type>

This creates a blank sprite.DATAFGet sprite from coords (16)
#Parent OS_SpriteOp_Reason
=>	R0 =	<16, &10=>os_spriteop_reason2> (Get sprite from coords)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	0 => Exclude palette
	 	1 => Include palette
	R4 =	Minimum x coordinate (ic)
	R5 =	Minimum y coordinate (ic)
	R6 =	Maximum x coordinate (ic)
	R7 =	Maximum y coordinate (ic)
<=	R2 =	Address/Offset of sprite unless in wimp or system area.

This grabs the area of screen defined by R4-R7. Any area outside the present graphics window will be filled in with the present background colour.
DATA8Select sprite (24)
#Parent OS_SpriteOp_Reason
=>	R0 =	<24, &18=>os_spriteop_reason2> (Select sprite)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
<=	R2 =	Address/Offset of sprite unless in wimp or system area.

This selects the given sprite for subsequent plotting with VDU 25,232-239.DATA�Delete sprite (25)
#Parent OS_SpriteOp_Reason
=>	R0 =	<25, &19=>os_spriteop_reason2> (Delete sprite)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer

This deletes the sprite.DATA-Copy sprite (27)
#Parent OS_SpriteOp_Reason
=>	R0 =	<27, &1B=>os_spriteop_reason2> (Copy sprite)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	New name

This copies the sprite unless a sprite already exists under the new name, in which case an error will be generated. DATAGPut sprite (28)
#Parent OS_SpriteOp_Reason
=>	R0 =	<28, &1C=>os_spriteop_reason2> (Put sprite)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R5 =	<Plot action=>os_spriteop_action>

This plots the sprite with its bottom left hand corner at the graphics cursor. It uses the plot action specified by R5.DATA�Create mask (29)
#Parent OS_SpriteOp_Reason
=>	R0 =	<29, &1D=>os_spriteop_reason2> (Create mask)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer

This creates a mask with all pixels defined as solid.DATA�Remove mask (30)
#Parent OS_SpriteOp_Reason
=>	R0 =	<30, &1E=>os_spriteop_reason2> (Remove mask)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer

This removes the mask.
DATA;Insert row (31)
#Parent OS_SpriteOp_Reason
=>	R0 =	<31, &1F=>os_spriteop_reason2> (Insert row)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	Row number

This inserts a row of transparant colour 0 pixels at the given row, moving all rows above it up a row. The bottom row is number 0.DATADelete row (32)
#Parent OS_SpriteOp_Reason
=>	R0 =	<32, &20=>os_spriteop_reason2> (Delete row)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	Row number

This deletes the given row, moving all rows above it down a row. The bottom row is number 0.DATA�Flip about x axis (33)
#Parent OS_SpriteOp_Reason
=>	R0 =	<33, &21=>os_spriteop_reason2> (Flip about x axis)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer

This turns the sprite upside down.DATAAppend sprite (35)
#Parent OS_SpriteOp_Reason
=>	R0 =	<35, &23=>os_spriteop_reason2> (Append sprite)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite 1 name/pointer
	R3 =	Sprite 2 name/pointer		{fCode}  �__ __{f}
	R4 =	0 => Merge horizontally		{fCode}  |__|__|{f}
	 	1 => Merge vertically		{fCode}.--.{f}
	 	 				{fCode}|--|{f}
	 	 				{fCode}'--'{f}

This merges two sprites of the same height or width together. The result is stored as sprite 1 and sprite 2 is deleted, hence no extra memory is needed.DATACreate/Remove palette (37)
#Parent OS_SpriteOp_Reason
=>	R0 =	<37, &25=>os_spriteop_reason2> (Create/remove palette)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	-1 => Read current palette size
	 	0 => Remove palette
	 	else => Create palette
	 	If bit 31 set then use 256 entries. (Not RO2)

<=	All registers preserved unless R3 =-1 on entry:
	R3 =	Size of palette, or 0 if no palette
	R4 =	Pointer to palette, or 0 if no palette
	R5 =	Mode

Note: Do not use this whilst output is switched to the sprite.
DATACRead pixel colour (41)
#Parent OS_SpriteOp_Reason
=>	R0 =	<41, &29=>os_spriteop_reason2> (Read pixel colour)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	x coordinate (in pixels)
	R4 =	y coordinate (in pixels)

<=	R5 =	Colour
	R6 =	Tint
	
This call reads the colour of a pixel in a sprite.
DATA7Write pixel colour (42)
#Parent OS_SpriteOp_Reason
=>	R0 =	<42, &2A=>os_spriteop_reason2> (Write pixel colour)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	x coordinate (in pixels)
	R4 =	y coordinate (in pixels)
	R5 =	Colour
	R6 =	Tint

This sets the pixel to the given colour. DATA;Read pixel mask (43)
#Parent OS_SpriteOp_Reason
=>	R0 =	<43, &2B=>os_spriteop_reason2> (Read pixel mask)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	x coordinate (in pixels)
	R4 =	y coordinate (in pixels)

<=	R5 =	0 => Transparant
	 	1 => Solid

This SWI reads the mask at a point.DATAKWrite pixel mask (44)
#Parent OS_SpriteOp_Reason
=>	R0 =	<44, &2C=>os_spriteop_reason2> (Write pixel mask)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	x coordinate (in pixels)
	R4 =	y coordinate (in pixels)
	R5 =	0 =>	Transparant
	 	1 =>	Solid

This sets the mask's state at the given coordinates.DATACInsert column (45)
#Parent OS_SpriteOp_Reason
=>	R0 =	<45, &2D=>os_spriteop_reason2> (Insert column)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	Column number

This inserts a column of transparent, colour zero pixels at the give column. All columns to the right are shifted right a pixel.
DATADelete column (46)
#Parent OS_SpriteOp_Reason
=>	R0 =	<46, &2E=>os_spriteop_reason2> (Delete column)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	Column number

This deletes a column. All columns to the right are shifted left a pixel.DATA�Flip about y axis (47)
#Parent OS_SpriteOp_Reason
=>	R0 =	<47, &2F=>os_spriteop_reason2> (Flip about y axis)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer

This replaces the sprite with its mirror image.DATAPlot mask (48)
#Parent OS_SpriteOp_Reason
=>	R0 =	<48, &30=>os_spriteop_reason2> (Plot mask)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer

This plots the solid pixels in the background colour with the bottom left corner at the present graphics cursor.DATAKPlot mask at coords (49)
#Parent OS_SpriteOp_Reason
=>	R0 =	<49, &31=>os_spriteop_reason2> (Plot mask at coords)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	x coordinate
	R4 =	y coordinate

This plots the solid pixels in the background colour with the bottom left corner at the given coordinates. DATA�Plot mask scaled (50)
#Parent OS_SpriteOp_Reason
=>	R0 =	<50, &32=>os_spriteop_reason2> (Plot mask scaled)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	x coordinate
	R4 =	y coordinate
	R6 =	<Scale factors=>os_scalefactors>, or 0 for 1:1 scaling

This plots the solid pixels in the background colour (using the given scaling factors) with the bottom left corner at the given coordinates.DATA�Paint character scaled (51)
#Parent OS_SpriteOp_Reason
=>	R0 =	<51, &33=>os_spriteop_reason2> (Paint character scaled)
	R1 =	Character code
	R3 =	x coordinate
	R4 =	y coordinate
	R6 =	<Scale factors=>os_scalefactors>, or 0 for 1:1 scaling

This plots the specified colour in the forground colour (using the given scaling factors) with the bottom left corner at the given coordinates. DATA�Put sprite scaled (52)
#Parent OS_SpriteOp_Reason
=>	R0 =	<52, &34=>os_spriteop_reason2> (Put sprite scaled)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	x coordinate
	R4 =	y coordinate
	R5 =	<Plot action=>os_spriteop_action>
	R6 =	<Scale factors=>os_scalefactors>, or 0 for 1:1 scaling
	R7 =	<Pixel translation table=>colourtrans_pixtrans>, or 0 for no translation

This plots the given sprite.DATA�Put sprite grey scaled (53)
#Parent OS_SpriteOp_Reason
=>	R0 =	<53, &35=>os_spriteop_reason2> (Put sprite grey scaled)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	x coordinate
	R4 =	y coordinate
	R5 =	0
	R6 =	<Scale factors=>os_scalefactors> or 0 for 1:1 scaling
	R7 =	<Pixel translation table=>colourtrans_pixtrans> or 0 for no translation

This anti-aliases the sprite as it scales it. The sprite must have been defined in a 16 colour mode whose pixels reflect a linear grey scale. Note this is considerably slower than <OS_SpriteOp 52=>os_spriteop_52>.

Note: This code is not available on SpriteExtend 0.99 and later.
DATARemove left hand wastage (54)
#Parent OS_SpriteOp_Reason
=>	R0 =	<54, &36=>os_spriteop_reason2> (Remove lefthand wastage)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer

This makes the left hand edge of the sprite word aligned. Thus reducing any waste of space.DATA�Switch output to sprite (60)
#Parent OS_SpriteOp_Reason
=>	R0 =	<60, &3C=>os_spriteop_reason2> (Switch output to sprite)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer or 0 to switch to screen
	R3 =	0 => No save area
	 	1 => System save area
	 	else => Pointer to save area
<=	R1-R3 = Previous values

This SWI decrees that all subsequent output should be displayed in the sprite given, rather than to the previous destination. Save areas are only required if you wish to retain the 'state' of the sprite between switches.

You should ensure that errors are handled correctly and switch output back whilst using switched output.DATA�Switch output to mask (61)
#Parent OS_SpriteOp_Reason
=>	R0 =	<61, &3D=>os_spriteop_reason2> (Switch output to mask)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer or 0 to switch to screen
	R3 =	0 => No save area
	 	1 => System save area
	 	else => Pointer to save area
<=	R1-R3 = Previous values

This SWI decrees that all subsequent output should be placed in the sprite mask, rather than to the previous destination. Save areas are only required if you wish to retain the 'state' of the sprite between switches.

You should ensure that errors are handled correctly and switch output back whilst using switched output.DATA Read save area size (62)
#Parent OS_SpriteOp_Reason
=>	R0 =	<62, &3E=>os_spriteop_reason2> (Read save area size)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer, or 0 for the screen
<=	R3 =	Size of required save area in bytes

This calculates the size of a save area for the given sprite. It is constant for a particular release of RISC OS but may change in the future.

For the first use you should set the first word of the save area to 0 so that the area can be initialised; subsequently it will be updated by the OS.DATAVerify sprite area (17)
#Parent OS_SpriteOp_Reason
=>	R0 =	<17, &11=>os_spriteop_reason2> (Verify sprite area)
	R1 =	<Sprite area=>os_spriteop_area>

This verifies a sprite area for consistency. This SWI is only available with SpriteExtend 0.99 or later.
DATA�Sprite Type Field
bits 27-31	Meaning
#line
0	Old format mode word. Mode is in bits 0-6 of the Mode Word
1	1 bpp
2	2 bpp
3	4 bpp
4	8 bpp
5	16 bpp
6	24 bpp
7	CMYK format allocated to CC
8	24 bpp format allocated to CC
9	JPEG format allocated
10-31	For future expansion

If Type Field is non-zero, then bits 0-26 are:
bit(s)	Meaning
0	Takes the value 1, to distinguish this from a so-called <mode selector=>Wimp:Wimp_ModeSelect>
1-13	Horizontal dots per inch of sprite
14-26	Vertical dots per inch of sprite. Only 90 � 45 and 90 � 90 will initially be supported (corresponding to the low and high vertical resolutions currently in use)DATA@Insert/delete rows (57)
#Parent OS_SpriteOp_Reason
=>	R0 =	<57, &39=>os_spriteop_reason2> (Insert/delete rows)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	Row number
	R4 =	+ve : Number of rows to insert
	 	-ve : Number of rows to delete

Insert or delete rows from the sprite specified.DATAVInsert/delete columns (58)
#Parent OS_SpriteOp_Reason
=>	R0 =	<58, &3A=>os_spriteop_reason2> (Insert or delete columns)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	Column number
	R4 =	+ve : Number of columns to insert
	 	-ve : Number of columns to delete

Insert or delete columns from the sprite specified.
DATAhPlot mask/sprite transformed (55/56)
#Parent OS_SpriteOp_Reason
=>	R0 =	<55, &37=>os_spriteop_reason2> (Plot mask) or <56, &38=>os_spriteop_reason2> (Plot sprite)
	R1 =	<Sprite area=>os_spriteop_area>
	R2 =	Sprite name/pointer
	R3 =	<flags=>.flags>
	R4 =	Pointer to <source rectangle=>.source> within sprite
	R5 =	<Plot action=>os_spriteop_action>
	R6 =	If R3 bit 0 clear : pointer to matrix
	 	 	R6 = pointer to <transformation matrix=>draw_transform>
	 	If R3 bit 0 set : pointer to destination coords
	 	 	R6 =	+0,4	= x0,y0 on screen (1/256th OS unit)
	 	 	 	+8,12	= x1,y1 on screen (1/256th OS unit)
	 	 	 	+16,20	= x2,y2 on screen (1/256th OS unit)
	 	 	 	+24,28	= x3,y3 on screen (1/256th OS unit)
	R7 =	<Pixel translation table=>colourtrans_pixtrans> or 0 for none

RISC OS 3 Only
#Subpage flags
Transformation flags
Bit	Meaning
#Line
0	1=> R6 =	Pointer to destination coords
	0=> R6 =	Pointer to <transformation matrix=>draw_transform>
1	1=> R4 =	Pointer to source rectangle within sprite
2-31	Reserved must be 0
#Subpage source
Transformation source
Offset	Contents
#Line
0	x left
4	y bottom
8	x right
12	y top
DATA,# This file links to OS_SpriteOp_55
DIR$���G���2K��Y!RootTG���@p�'618�G����?�͇6G���ʊ��m7�G����C���13p	G������͆4�	H����n_%�12�H����d�&�1LH����X�&�0@
H����J�"p2�F���Pdb�3�F����{b��5�F����b�"8�F���$�b��10pF����b�M11�F�����b��14�F����b��15�F�����b��16TF����Rc�317�H���ӿi*�19-20\H���#W�ROMSections\ F���>�c��9� H����+�_DATAYOS_Module  (&1E)
#Parent OS_
=> R0 = Reason :
0	<Run=>OS_Module0>             	Other stuff:
1	<Load=>OS_Module1>		  <Service calls=>service_index>
2	<Enter=>OS_Module2>		  <Module format=>os_module_format>
3	<ReInit=>OS_Module3>
4	<Delete=>OS_Module4>
5	<Describe RMA=>OS_Module5>
6	<Claim=>OS_Module6>
7	<Free=>OS_Module7>
8	<Tidy=>OS_Module8>
9	<Clear=>OS_Module9>
10	<Insert module from memory=>OS_Module10>
11	<Insert module from memory and move to RMA=>OS_Module11>
12	<Extract module info=>OS_Module12>
13	<Extend block=>OS_Module13>
14	<Create new instantiation=>OS_Module14>
15	<Rename instantiation=>OS_Module15>
16	<Make preferred instantiation=>OS_Module16>
17	<Add expansion card module=>OS_Module17>
18	<Lookup module name=>os_module18>
19	<Enumerate ROM modules=>OS_Module19-20>
20	<Enumerate ROM modules with version=>OS_Module19-20>
DATA6OS_Module 18
#Parent OS_Module
=>	R0 =	18
	R1 =	name[%instantiation]

<=	R1 =	module number
	R2 =	instantiation number
	R3 =	<module code=>os_module_format>
	R4 =	private word
	R5 =	postfix string

This SWI returns information about a named module. The name used, is the same as you see with <*Modules>DATA�OS_Module 6
#Parent OS_Module
=>	R0 =	6
	R3 =	size of area
<=	R2 =	block

This SWI returns an area of free RMA claimed for use.DATAmOS_Module 7
#Parent OS_Module
=>	R0 =	7
	R2 =	block

This SWI frees a�previously claimed area of RMA.DATA�OS_Module 13
#Parent OS_Module
=>	R0 =	13
	R2 =	pointer to block
	R3 =	size increase
<=	R2 =	new block pointer

This SWI extends or reduces a currently claimed block of RMA. If required it also moves the contents of the area.DATA�OS_Module 4
#Parent OS_Module
=>	R0 =	4
	R1 =	module name

This SWI kills a module. This is equivilent to the *RMKill command.DATA�OS_Module 12
#Parent OS_Module
=>	R0 =	12
	R1 =	module number
	R2 =	instance number

<=	R1 =	next module number
	R2 =	next instance number
	R3 =	pointer to module
	R4 =	pointer to workspace
	R5 =	pointer to postfix string (the instantiation's name)

This SWI returns information about a module, given its number. If a module is not multiply instantiated R5 will be returned pointing to the string "Base".
DATA�OS_Module 1
#Parent OS_Module
=>	R0 =	1
	R1 =	pointer to filename (and optional parameters)

This SWI loads a module. It is equivilent to the *{fCode}RMLoad{f} command.
DATA�OS_Module 0
#Parent OS_Module
=>	R0 =	0
	R1 =	pointer to filename (and optional parameters)

This SWI run a module, calling its start address. It is equivilent to the {fCode}*RMRun{f} command. Use <OS_Exit> or <OS_ExitAndDie> to leave.
DATApOS_Module 2
#Parent OS_Module
=>	R0 =	2 (reason code)
	R1 =	pointer to module name
	R2 =	pointer to parameters

Doesn't return unless error occurs. If the module has got a <start address=>OS_Module_Start>, it resets the supervisor stack, sets user mode and makes it the current application. Any specified instantiation will become the preferred instantiation.
DATAOS_Module 3
=>	R0 =	3 (reason code)
	R1 =	pointer to module name plus any parameters for initialisation

<=	R0,R1 preserved

This call <RMKills=>os_module4> and <RMLoads=>os_module1> the named module again, if the module refuses to initialise, it is removed from RMA.
DATA�OS_Module 5
=>	R0 =	5 (reason code)

<=	R0 preserved
	R2 =	size of largest block available in bytes
	R3 =	total amount free in RMA in bytes

This reason code reads infos on the RMA.DATA"OS_Module 8
=>	R0 =	8 (reason code)

<=	R0 preserved

This gives each instantiation of all modules in turn, from the end of the module list and working backwards, a non-fatal finalisation call.

Instantiations of a particular module are killed in the order they appear on the current instantiation list.

If it succeeds, it collects the RMA together into one large unfragmented block and reinitialises the modules again. Any private words containing pointer to workspace blocks in RMA are relocated.

{*}Note:{*} This is NOT recommended.
DATA�OS_Module 10
=>	R0 =	10 (reason code)
	R1 =	pointer to start of module

<=	R0,R1 preserved

This takes a pointer to a block of memory and links it into the module, without moving it. Header fields are checked for validity. All duplicate modules are killed. If it's successful, then the module is called at its initialiation entry. The word immediately before the module start (ie at address R1-4) must contain the length of the module in bytes.
DATAMOS_Module 11
=>	R0 =	11 (reason code)
	R1 =	pointer to start of module
	R2 =	length of module in bytes

<=	R0,R2 preserved

This takes a pointer to a block of memory, and checks its header field for validity. It then kills any duplicate module, copies the block into the RMA, initialises it and links it to the modules chain.DATA�OS_Module 14
=>	R0 =	14 (reason code)
	R1 =	pointer to a full name of new instantiation and any parameters for initialisation

<=	R0,R1 preserved

This creates new instantiations of existing modules, using the syntax 'module_title%instantiation'.DATA�OS_Module 15
=>	R0 =	15 (reason code)
	R1 =	pointer to current module%instantiation name
	R2 =	pointer to new postfix string

<=	R0-R2 preserved

This renames an existing instantiations of a module.DATA�OS_Module 16
=>	R0 =	16 (reason code)
	R1 =	pointer to full module%instantiation name

<=	R0,R1 preserved

This enables you to select the preferred instantiations of a particular module.DATA3OS_Module 17
=>	R0 =	17 (reason code)
	R1 =	pointer to environment string
	R2 =	chunk number
	R3 =	<ROM section=>OS_ModuleROMsections>

<=	R0-R3 preserved

This allows expansion card and extension ROM modules to be added to the module list. Note that extension ROMs are not supported in RISC OS 2.0
DATA�OS_Module 19/20
#Parent OS_Module
# N> Intersting display bug with this in place
# Tab Align Left, Align Left, Align Right
# Gerph> Yes, I've mentioned it to Guttorm (since v2.02 I think!) and IIRC
#        he said it was a very tricky thing to track down
=>	R0 =	19/20 (reason code)
	R1 =	module number, or 0 to start
	R2 =	<ROM section=>OS_ModuleROMSections>

<=	R0 preserved
	R1 =	module number of found module +1
	R2 =	<ROM section=>OS_ModuleROMsections> of found module
	R3 =	pointer to module name
	R4 =	-1	unplugged
	 	0	inserted but not in the module chain
	 	1	active
	 	2	running
	R5 =	chunk number of expansion card module
	R6 =	<BCD versions number=>.BCD> for OS_Module 20

This call returns information on one module that is currently in ROM along with its status. The module found is the given number of modules on from start of the given ROM section. If there are insufficient modules in the ROM section then the search continues with the next section; so the fifth module in a four module section would in fact be the first module of the next section. The ROM sections are scanned in <this order=>OS_ModuleROMsections>. The values in R0-R2 are the correct ones to use this call to enumerate the next module; hence repeated calls will give a full enumeration of all ROM modules.
#Subpage BCD
BCD version number
The top 16 bits contain the integer part of the version number, the botton 16 bits the fractional part.

({/}e.g.{/} If version = 2.12 then BCD = &00021200)
DATAROM Sections
#Parent OS_Module19-20
\#	ROM Section
#Line
# I have card 8 on my Risc PC
0-3	Expansion card 0-3
-1	System ROM
-2	System ROM 1
-3	System ROM 2 etc.

The number of system ROMs and expansion cards can be read with <Podule_ReturnNumber>.
DATA�OS_Module 9
=>	R0 =	9 (reason code)
<=	R0 preserved

This kills all modules which aren't ROM modules.

{*}Note:{*} This is not recommended.
DIR$���"H������"�Final`'H���)��"�Init4,H���8��"Service42H���5"m&�Start,5H���J��"�SWIDec�7H���֋�"SWIHandler<H�����]%switable,>H������"�ComTable�@H����"33ComCodeEH������"Q3ComFlagsdGH���=sHelp�IH�����"3ComHelpCode�JH�����w+�formatDATA�Module finalisation code
#Parent OS_Module_format
=>	R10	=	fatality indication; 0=non-fatal, 1=fatal
	R11	=	instantiation number
	R12	=	pointer to private word for this instantiation
	R13	=	supervisor stack pointer

<=	Preserve processor mode, interrupt state, V flag and R7-R11,R13
	Can corrupt R0-R6,R12,R14 and flags (except V)

This entry is called just before killing a module. This can be due to a {fCode}RMTidy{f} (a non-fatal finalisation) or a {fCode}RMKill{f} (fatal).

The default finalise code (called if you have none) frees any workspace pointed to by the private word (and then sets it to 0). If this is all you need, don't waste space with your own finalise entry.

You should set the private word to 0 if you free any workspace it pointed to. For a non-fatal finalisation the system assumes that it can relocate your workspace, hence you *must* signal to it that you have none.

The instantiation number is your current position in the list, hence it may not be the same value passed to your <initialise code=>OS_Module_Init>.

Note that you can corrupt quite a few registers in finalisation code - don't waste time stacking anything that the OS has already taken care of.
DATA�Module initialisation code
#Parent OS_Module_format
=>	R10 =	pointer to environment string (initialisation parameters supplied by caller of <OS_Module>)
	R11 =	0		module loaded from disc or RAM
	 	>&03000000	module loaded from expansion card with this  I/O base
	 	else		new instantiation, this many other instantiations
	R12 =	pointer to private word for this module instantiation
	R13 =	supervisor stack pointer

<=	Preserve processor mode, interrupt state, V flag and R7-R11,R13
	Can corrupt R0-R6,R12,R14 and flags, except V unless error is being returned

This entry is called by RISC OS after the module has been loaded into RMA, before the Start code is called and before the module's SWIs (if it has any) are recognised.  During a module's initialisation code any calls to its own SWIs or *commands will provoke an 'I don't know what you're talking about' reaction from RISC OS.

*Check* your private word is 0 before claiming workspace - if it is non-zero you've already been initialised (and this call is being made after a <non-fatal finalisation=>OS_Module_Final>).

Note that you can corrupt quite a few registers in initialisation code - don't waste time stacking anything that the OS has already taken care of.
DATAModule service handler code
#Parent OS_Module_format
=>	R1 =	service number
	R12 =	pointer to private word for module instantiation
	R13 =	pointer to stack

<=	R1 =	0 if service is being claimed, preserved otherwise
	R0,R2-R8 altered depending on service call if claimed
	R12 may be corrupted
	Other registers should be preserved if they are not being used to return values

This entry is called when a <service call=>service_index> is issued. Service call code *must* be reentrant.

Since service calls are made very often they can cause significant slow-downs if not handled in a speed-conscious manner.  It is recommended that you write service handling code so as to be cache-line aligned for cache optimisation, and that on reception of service calls that are not catered for by your module your code returns as soon as possible. This means that the entry point for the service call code should be at 16n-4 from the base of the module (modules are always loaded at offset 4).

<This example code=>.example> shows the recommended way to *rapidly* handle multiple services.
#Subpage example
Example code to handle services
The following code will handle a few services :
#fCode;Tab fCode,fCode
]:P%=(P%+15) AND NOT 15:O%=(O%+15) AND NOT 15:[ OPT pass%
.ServiceCode
  	TEQ	r1,#Service_One
	TEQNE	r1,#Service_Two
	TEQNE	r1,#Service_Three
	MOVNES	pc,r14
	STMFD	r13!,\{r0-r3,r14\}
	TEQ	r1,#Service_Two
	BEQ	Service_Two_Handler
	TEQ	r1,#Service_Three
	BEQ	Service_Three_Handler
.Service_One_Handler
	...
	LDMFD	r13!,\{r0-r3,pc\}^
DATA�Module start code
#Parent OS_Module_format
=>	R0 =	pointer to command string, including module name
	R12 =	pointer to private word for preferred instance
	R14 =	not a return address
<=	should not return - call <OS_Exit> or start another application

This entry is called when started using <OS_Module 2=>OS_Module2>. If your module is a module task which requires application space ({/}e.g.{/} it is written in C) then you must claim <Service_Memory=>service_11> to prevent the Wimp setting the application memory for your task to 0. This instantiation *is* the preferred instatiation.

If the value for start code doesn't represent a valid non-zero offset, it is taken to be a literal ARM instruction (which hopefully is a branch to the right place).
DATA�Module SWI decoding code
=>	R0 =	any number less than 0 for text->number
	 	0-63 for number->text
	R1 =	pointer to control-terminated string for text->number
	 	pointer to output buffer for number->text
	R2 =	offset within output buffer to place the text at for number->text
	R3 =	size of buffer for number->text
	R12 =	pointer to private word
	R13 =	Supervisor stack
	R14 =	Return address

<=	R0 =	SWI number AND 63 if SWI recognised, \<0 otherwise for text->number
	R2 =	length of text, for number->text (RISC OS will write "\\0" here)
	unused registers should be preserved

This entry is used as a alternative method of finding SWI numbers from names and vice versa. This code does not need to be re-entrant.DATAModule SWI handler code
#Parent !Root
=>	R0-R9 = 	passed from the caller of the SWI
	R11 =	SWI number - base number (ie SWINumber AND 63)
	R12 =	pointer to private word
	R13 =	supervisor stack pointer
	R14 =	return address (including flags and processor mode)

<=	R0-R9 returned to the caller of the SWI
	R10-R12 may be corrupted

This entry is called when a SWI in your module's SWI chunk is called. SWI numbers outside those supported by your module should cause an error to be returned, as in <this example handler=>.example>.
#Subpage example
Example code for SWI handlers
Recommended code to implement multiple SWIs :

#fCode;Tab fCode,fCode
.SWIHandler
  	LDR	r12,[r12]
	CMP	r11,#(JumpTableEnd-JumpTable)/4
	ADDLT	pc,pc,r11,LSL #2
	B	Error_UnknownSWI
.JumpTable
	B	SWICode_Zero
	B	SWICode_One
	...
.JumpTable_End

.Error_UnknownSWI
	ADR	r0,EBlock_UnknownSWI
	MOV	r1,#0
	MOV	r2,#0
	ADR	r4,Module_Title
	SWI	"<XMessageTrans_ErrorLookup=>MessageTrans_ErrorLookup>"
	ORRS	pc,r14,#1<<28

.EBlock_UnknownSWI
	EQUD	1<<6
	EQUS	"BadSWI"+CHR$0
	ALIGN
DATAModule SWI decoding table
#Parent OS_Module_format
This is the normal method used to provide names for SWIs. It allows RISC OS to convert SWI number to names, and vice versa. The following is an assembler description of a typical SWI decoding table:

#indent 2;tab fCode,fCode,fCode
 	EQUS	"Squash"+CHR$0
	EQUS	"Compress"+CHR$0
	EQUS	"Decompress"+CHR$0
	EQUB	0
	ALIGN
#indent

This defines two SWIs, named '<Squash_Compress>' and '<Squash_Decompress>'.  They are assigned values of \<SWI chunk\>+0 and \<SWI chunk\>+1.DATA�Module command table
#Parent OS_Module_format
+0	Command, zero terminated, aligned after
+x	<Code offset=>OS_Module_ComCode>, or 0 for none
+x+4	<Information word=>OS_Module_ComFlags>
+x+8	Syntax message offset, or 0 for default
+x+12	Help offset, or 0 for none. Help text, unless bit 29 of the infomation word is set.

Note that the name of first command in the command table need not be word aligned. The syntax and help messages are printed using <OS_PrettyPrint>. The syntax message is printed if OSCLI detects that the parameters are out of range. The default is 'Invalid number of parameters' - <Service_SyntaxError=>Service_8C> is generated before any message is printed.
DATA3Command code entry
#Parent OS_Module_ComTable
For a conventional command (<Information word=>OS_Module_ComFlags> bit 30 clear)

=>	R0 =	pointer to command tail
	R1 =	number of parameters
	R12 =	pointer to private word for this instance
	R13 =	supervisor stack pointer
	R14 =	return address

<=	R0 =	error pointer, if V set
	R7-R11 preserved

OSCLI counts spaces as delimiting parameters, except when they occur within double quoted strings.

For a configuration command (<Information word=>OS_Module_ComFlags> bit 30 set)

=>	R0 =	0	{fCode}*Configure{f} with no options - print your syntax string
	 	1	{fCode}*Status {/}option{/}{f} - print the status of your option
	 	other	pointer to command tail

If an error occurs, a configuration command may return a <special error code=>.errors> or a pointer to conventional <error block=>swi_errorblock>.
#subpage errors
Configuration command error codes
Code	Meaning
#Line
0	Bad {fCode}*Configure{f} option
1	Numeric parameter needed
2	Parameter too large
3	Too many parameters
\>3	pointer to <error block=>swi_errorblock>
DATAQModule command flags
#Parent OS_Module_ComTable
Bits	Contents
#Line
0-7	Minimum number of parameters
8-15	GSTrans map for first 8 parameters (if bit is 1 parameter will be passed through GSTrans)
16-23	Maximum number of parameters
24-27	reserved, should be zero
28	Help and Syntax text should be looked up as tokens in the Messages file
29	Help offset is <code to call=>OS_Module_ComHelpCode> to return help text
30	Command is a configuration option (will be matched in *Status and *Configure parameters)
31	Command is a filing system command (will be matched after 'normal' commands)
DATAsModule help string
#Parent OS_Module_format
This should be in the format :

#Wrap off;Indent 2
{/}Module name{/}	v.vv (DD MMM YYYY)
#indent
or
#indent 2
{/}Module name{/}	v.vv (DD MMM YYYY) {/}Message{/}
#Wrap;indent

where /Module name/ may contain spaces, and is followed by one or two tabs to align the version number to column 16.

/Message/ is usually of the form :

#indent 2
/subset/
#indent
or
#indent 2
��/Authors name/
#indent
or
#indent 2
/subset/ ��/Authors name/
#indent

where /subset/ is a subset of the available modules describing this particular version, eg 'RO 3.1', '�2', 'English', 'Parallel', etc
DATACommand help code entry
#Parent OS_Module_ComTable
=>	R0 =	ponter to buffer
	R1 =	buffer length
(assumed)
	R12 =	pointer to private word for this instance
	R13 =	supervisor stack pointer
	R14 =	return address

<=	R0 =	if non-zero passed to <OS_PrettyPrint>.
	R7-R11 preserved
DATA�Module format
#Parent OS_Module
Offset	Contains
#Line
&00	<Start code=>OS_Module_Start>		(usr mode)
&04	<Initialise code=>OS_Module_Init>	(svc mode)
&08	<Finalise code=>OS_Module_Final>	(svc mode)
&0C	<Service handler=>OS_Module_Service>	(svc or irq mode)
&10	Title String
&14	<Help String=>OS_Module_Help>
&18	<Help/Command table=>OS_Module_ComTable>
&1C	SWI base number
&20	<SWI handler=>OS_Module_SWIHandler>	(svc mode)
&24	<SWI decode table=>OS_Module_SWITable>
&28	<SWI decode code=>OS_Module_SWIDec>	(svc mode)
&2C	<MessageTrans=>MessageTrans_> file (RISC OS 3.5+)

All entries except &1C are offsets from the start of the module (<*=>.arcane>). Entries of 0 or those outside the module will be ignored. This means that if the module hasn't got any SWIs, the last five words *could* be used for something else, and if there is no MessageTrans filename, the last value could be used for something else.

# Preach on
Don't store data in the body of your module, allocate workspace and store the pointer in the private word. The OS lets module code be re-used (multiply instantiated) to allow several copies of the module to run at once, and several copies would be storing different data in the same locations in the module code. If this causes your module to crash because it's been multiply instantiated, its *your* module's fault, not the OS' or the user's.
# Preach off

If the top bit of the initialisation code offset is set then the module is compressed and will be decopressed by the OS.
If the top bit of the finalisation code offset is set then the module's code area will not be freed after it it quit.
#Subpage arcane
Footnote for pedants
If the value for start code doesn't represent a valid non-zero offset, it is taken to be a literal ARM instruction (which hopefully is a branch to the right place). This can be used to branch to a stub which calls <OS_WriteEnv> before brancing back into the module, which is useful during testing.
DIR$��\WH���f<%!Root�\H����&��StandardDateAndTime^G���:+�DFileSizeL_H������FixedFileSizeaG���Nd�͉DateAndTime�bG���\��(Hex4�cG���g���'Hex2�dG���q`��'Hex1fG���s���%Hex80gG�������(Hex6XhG���oo��UCardinal1�iG���n��WCardinal2kG���fh��ZCardinal3dlG����=��lCardinal4�mG����3��dInteger14oH�����hInteger2�pG����X��lInteger3rG���7W��sInteger4|sH����Έ.Binary1�tH����و/Binary2�uH���E߈/Binary3wH���H�/Binary4<xH����C�jSpacedCardinal1�yH���^G�mSpacedCardinal2{H���R�rSpacedCardinal3�|H���[�uSpacedCardinal4~H���yՉjSpacedInteger1pH�����pSpacedInteger2�H����)�wSpacedInteger3X�H���X9�SpacedInteger4؃H�����wFixedNetStationP�H���1�NetStationX�H������znetstationblockDATA%OS_Convert<name><number>  (&D0-&E8)
#Parent OS_
=>	R0 =	Value to be converted
	R1 =	Buffer for resulting string
	R2 =	size of buffer

<=	R0 =	Buffer (R1 on entry)
	R1 =	pointer to terminating 0 in buffer
	R2 =	free bytes in buffer

This range of SWIs convert a number into some kind of string.

#Tab
\<name>		\<number>
#Line
Hex		<1=>OS_ConvertHex1>,<2=>OS_ConvertHex2>,<4=>OS_ConvertHex4>,<6=>OS_ConvertHex6>,<8=>OS_ConvertHex8>	(nibbles)
Cardinal	<1=>OS_ConvertCardinal1>,<2=>OS_ConvertCardinal2>,<3=>OS_ConvertCardinal3>,<4=>OS_ConvertCardinal4>	(bytes) (unsigned)
Integer		<1=>OS_ConvertInteger1>,<2=>OS_ConvertInteger2>,<3=>OS_ConvertInteger3>,<4=>OS_ConvertInteger4>		(bytes) (signed)
Binary		<1=>OS_ConvertBinary1>,<2=>OS_ConvertBinary2>,<3=>OS_ConvertBinary3>,<4=>OS_ConvertBinary4>		(bytes)
SpacedCardinal	<1=>OS_ConvertSpacedCardinal1>,<2=>OS_ConvertSpacedCardinal2>,<3=>OS_ConvertSpacedCardinal3>,<4=>OS_ConvertSpacedCardinal4>		(bytes) (unsigned)
SpacedInteger	<1=>OS_ConvertSpacedInteger1>,<2=>OS_ConvertSpacedInteger2>,<3=>OS_ConvertSpacedInteger3>,<4=>OS_ConvertSpacedInteger4>			(bytes) (signed)

#Prefix
In addition we have :
  <OS_ConvertFixedNetStation>
  <OS_ConvertNetStation>
  <OS_ConvertFixedFileSize>
  <OS_ConvertFileSize>
  <OS_ConvertDateAndTime>
  <OS_ConvertStandardDateAndTime>
DATA�OS_ConvertStandardDateAndTime  (&C0)
#Parent OS_Convert
=>	R0 =	pointer to 5-byte time block
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a five-byte value representing centiseconds since 1900, into a string. It uses {fCode}Sys$DateFormat{f}.
DATADOS_ConvertFileSize  (&EC)
#Parent OS_Convert
=>	R0 =	file size
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer
<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value to an amount of space in the form x bytes, x Kbytes, or x Mbytes.DATA�OS_ConvertFixedFileSize  (&EB)
#Parent OS_Convert
=>	R0 =	file size
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value to a amount of space available in the form x bytes, x Kbytes, or x Mbytes. This is the fixed string length version of <OS_ConvertFileSize>, with the start padded with spaces.
DATA�OS_ConvertDateAndTime  (&C1)
#Parent OS_Convert
=>	R0 =	pointer to 5-byte time block
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer
	R3 =	pointer to <format string=>swi_dateformat>

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a five-byte value representing centiseconds since 1900, into a string.DATA(OS_ConvertHex4
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into a string of 4 hex characters.
DATA'OS_ConvertHex2
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into a string of 2 hex characters.
DATA'OS_ConvertHex1
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into a string of 1 hex character.
DATA%OS_ConvertHex8
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into a string of 8 hex characters.
DATA(OS_ConvertHex6
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into a string of 6 hex characters.
DATAUOS_ConvertCardinal1
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into an unsigned string of decimal characters. The number can be 0 to 255.
DATAWOS_ConvertCardinal2
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into an unsigned string of decimal characters. The number can be 0 to 65535.
DATAZOS_ConvertCardinal3
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into an unsigned string of decimal characters. The number can be 0 to 16777215.
DATAlOS_ConvertCardinal4
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into an unsigned string of decimal characters. The number can be 0 to 4294967295 (10 characters).
DATAdOS_ConvertInteger1
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into an signed string of decimal characters. The number can be -128 to 127 (4 characters).
DATAhOS_ConvertInteger2
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into an signed string of decimal characters. The number can be -32768 to 32767 (6 characters).
DATAlOS_ConvertInteger3
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into an signed string of decimal characters. The number can be -8388608 to 8388607 (8 characters).
DATAsOS_ConvertInteger4
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into an signed string of decimal characters. The number can be -2147483648 to 2147483647 (11 characters).
DATA.OS_ConvertBinary1
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into a string of 8 binary characters.
DATA/OS_ConvertBinary2
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into a string of 16 binary characters.
DATA/OS_ConvertBinary3
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into a string of 24 binary characters.
DATA/OS_ConvertBinary4
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into a string of 32 binary characters.
DATAjOS_ConvertSpacedCardinal1
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into an unsigned string of decimal characters. The number can be 0 to 255 (3 characters).
DATAmOS_ConvertSpacedCardinal2
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into an unsigned string of decimal characters. The number can be 0 to 65 535 (6 characters).
DATArOS_ConvertSpacedCardinal3
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into an unsigned string of decimal characters. The number can be 0 to 16 777 215 (10 characters).
DATAuOS_ConvertSpacedCardinal4
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into an unsigned string of decimal characters. The number can be 0 to 4 294 967 295 (13 characters).
DATAjOS_ConvertSpacedInteger1
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into an signed string of decimal characters. The number can be -128 to 127 (4 characters).
DATApOS_ConvertSpacedInteger2
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into an signed string of decimal characters. The number can be -32 768 to 32 767 (7 characters).
DATAwOS_ConvertSpacedInteger3
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into an signed string of decimal characters. The number can be -8 388 608 to 8 388 607 (10 characters).
DATAOS_ConvertSpacedInteger4
#Parent OS_Convert
=>	R0 =	value to be converted
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer

<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts a value into an signed string of decimal characters. The number can be -2 147 483 648 to 2 147 483 647 (14 characters).
DATAwOS_ConvertFixedNetStation  (&E9)
#Parent OS_Convert
=>	R0 =	pointer to <net and station number=>OS_Convertnetstationblock>
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer
<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts the network and station number to a string of the form "{/}nnn.sss{/}".

If the network is 0
�	the first four characters are spaces
�	leading zeros in the station number are converted to spaces
otherwise
�	leading zeros in the network number are converted to spaces
�	leading zeros in the station number remain as zeros
DATAOS_ConvertNetStation  (&EA)
#Parent OS_Convert
=>	R0 =	pointer to <net and station number=>OS_Convertnetstationblock>
	R1 =	pointer to buffer for resulting string
	R2 =	size of buffer
<=	R0 =	pointer to buffer (R1 on entry)
	R1 =	pointer to terminator
	R2 =	free bytes in buffer

This SWI converts the network and station number to a string of the form "{/}nnn.sss{/}", but suppresses zeros and spaces to yield the shortest string - hence if the network is 0 no network number or "." is placed in the buffer.
DATAzOS_Convert(Fixed)NetStation block
#Parent OS_ConvertNetStation
Size	Value
#Line
4	network number
4	station number
DIR$����G���ߛ��@1�F���}�~��10��F���-�~��11l�G���$D��`2̐H����K��256X�G������Ϳ257�F���X�~�:4T�H����o/R!Root��G������reasons��H���8�+�3_\�F���\�~�3t�G����W��y1+2�G���䩽��6��G����H��7��F���:�~��8 �F����~��9DATA@Upcall 1 - Media not present
#Parent OS_UpcallReasons
=>	R0 =	1
	R1 =	FS number
	R2 =	pointer to media name
	R3 =	device number
	R4 =	iteration count
	R5 =	timeout delay
	R6 =	pointer to media type

<=	R0 =	changed

This Upcall is called when a media change (eg another disc) is required.

#Include OS_UpCall1+2
DATA�OS_UpCall 10 - Stream Created
=>	R0 =	10 (Stream created)
	R1 =	device driver's handle
	R2 =	0 if created for reception (else created for transmission)
	R3 =	file handle for stream
	R4 =	DeviceFS stream handle, as passed to device driver on initialisation
   
<=	All registers preserved

DeviceFS issues this call when a stream is created. It serves as a broadcast, and all registers should be preserved.

This call is never issued under RISC OS 2.
DATA�OS_UpCall 11 - Stream Closed
=>	R0 =	10 (Stream closed)
	R1 =	device driver's handle
	R2 =	0 if closed for reception (else close for transmission)
	R3 =	file handle for stream
	R4 =	DeviceFS stream handle, as passed to device driver on installation

<=	All registers preserved

DeviceFS issued this call when a stream is closed. It serves as a broadcast, and all registers should be preserved.

This call is issued under RISC OS 2.
DATA`Upcall 2 - Media not known
=>	R0 =	2
	R1 =	<FS number=>fsys_ident>
	R2 =	pointer to media name
	R3 =	device number
	R4 =	iteration count
	R5 =	timeout delay
	R6 =	pointer to media type

<=	R0 =	0 if changed, -1 if no longer required

This Upcall is called when a media has never been seen before, but has been requested.

#Include OS_UpCall1+2
DATA�OS_UpCall 256 - New Application
=>	R0 =	256 (New Application)
	R2 =	<Currently Active Object pointer=>OS_handlers_cao>
   
<=	R0 =	0 to stop application, else R0 is preserved

This upcall warns your program that a new application is going to be started

This call is made just before a new application is going to be started in the current application space - for example due to a *Run or module command. It calls the UpCall vector.

One reason to use this call is so that an application can tidy up itself before a new one is started, eg removing routines from vector.

Another reason to use this UpCall is to prevent an application from starting. If you don't want the application to start, your routine should set R0 to 0, and intercept the call to the vector. This will cause the error 'Unable to start application' to be given. Otherwise, you must pass the call on with all reigsters preserved.
DATA�OS_UpCall 257 - Moving memory
#Parent OS_UpcallReasons
=>	R0 =	257 (Moving memory)
	R1 =	amount that application space is going to change by
              
<=	R0 =	0 to permit memory moved, else preserved
	R1 preserved

This Upcall informs your program that RISC OS would like to move memory

This call is made just before <OS_ChangeDynamicArea> tries to move memory. The call is only made if the currently active object is in the application space. It calls the UpCall vector. By default (if you don't claim the vector) the memory isn't moved.

Your routine must shuffle your application's workspace so that the memory can go ahead. It must then set R0 = 0, and pass on the call to the vector.
DATA:Upcall 4 - Media search end
=>	R0 =	4 (Media search end)
<=	R0 preserved

This Upcall Informs your program that a missing filing medium has been supplied, or that an operation involving one has been cancelled

This call is made by RISC OS to inform your program that a missing filing medium has been supplied, or that an operation involving one has been cancelled. It is always preceded by call(s) of <OS_UpCall 1=>OS_UpCall1> or <OS_UpCall 2=>OS_UpCall2>. This call is typically used to remove error messages displayed when OS_UpCall 1 or 2 was first generated.DATAROS_UpCall (&33)
#Parent OS_
=>	R0 =	<reason code=>OS_UpCallReasons>
	All other registers depend on reason code
   
<=	R0 preserved
	All other registers depend on reason code
   
This SWI calls the <vector UpCallV=>vector_UpCallV>. To use UpCalls, you must either claim the vector and install a routine on it, or install an UpCall handler.

They are called UpCalls because they are calls that RISC OS makes up to an application makes down to RISC OS. They generally occur in the foreground, and are hence different to Events, which occur in the background.

Click <here=>.code> for information on writing UpCall code.
#Subpage code
Writing code to handle UpCalls
Routines that deal with UpCalls should be viewed as system extensions, and so should only call error-returning SWI's ('X'+SWI).
 
If a routine installed on the vector deals with the situation it should intercept the call to the vector, as there is no longer any point informing any other routines or the UpCall handler of the situation. If it can't deal with the situation it must pass the call on, as another one may be able to do so.
DATA�UpCall reasons
R0	Description
#Line
1	<Media not present=>os_upcall1>
2	<Media not known=>os_upcall2>
3	<Misc file changed information=>os_upcall3>
4	<Media search end=>os_upcall4>
6	<Taskwindow Sleep=>os_upcall6>
7	<PipeFS sleep no more=>os_upcall7>
8	<Buffer filling=>os_upcall8>
9	<Buffer emptying=>os_upcall9>
A	<DeviceFS stream created=>os_upcall10>
B	<DeviceFS stream closed=>os_upcall11>
100	<New application=>os_upcall256>
101	<Move memory request=>os_upcall257>
DIR$�� �F����xm�Kreasonsl�F���om��0L�F���җm��1�F���p�m��2��F�����m��34�F����m��4ĦF����m�t68�F���n�m��7�F�����m�8�F���X�m��257ȩF���l�m��258��F�����m��520T�F�����m�I259��F�����m��521DATAKOS_UpCall 3 reason codes
R9	Meaning
#Line
0	<Saving memory to file=>OS_UpCall3_0>
1	<Writing catalogue information=>OS_UpCall3_1>
2	<Writing load address only=>OS_UpCall3_2>
3	<Writing execution address only=>OS_UpCall3_3>
4	<Writing attributes only=>OS_UpCall3_4>
6	<Deleting file=>OS_UpCall3_6>
7	<Creating empty file=>OS_UpCall3_7>
8	<Creating directory=>OS_UpCall3_8>
257	<Creating and opening for update=>OS_UpCall3_257>
258	<Opening for update=>OS_UpCall3_258>
259	<Closing file=>OS_UpCall3_259>
520	<Renaming file=>OS_UpCall3_520>
521	<Setting attributes=>OS_UpCall3_521>
DATA�OS_UpCall 3 subreason code 0
Saving memory to file

R1 =	pointer to filename
R2 =	load address
R3 =	execution address
R4 =	pointer to start of buffer
R5 =	pointer to end of buffer
R6 =	pointer to special field (or 0)DATA�OS_UpCall 3 subreason code 1
Writing catalogue information

R1 =	pointer to filename
R2 =	load address
R3 =	execution address
R5 =	attributes
R6 =	pointer to special field (or 0)DATA�OS_UpCall 3 subreason code 2
Writing load address only

R1 =	pointer to filename
R2 =	load address
R6 =	pointer to special field (or 0)DATA�OS_UpCall 3 subreason code 3
Writing execution address only

R1 =	pointer to filename
R3 =	execution address
R6 =	pointer to special field (or 0)DATA�OS_UpCall 3 subreason code 4
Writing attributes only

R1 =	pointer to object name
R5 =	attributes
R6 =	pointer to special field (or 0)DATAtOS_UpCall 3 subreason code 6
Deleting file

R1 =	pointer to object name
R6 =	pointer to special field (or 0)DATA�OS_UpCall 3 subreason code 7
Creating empty file

R1 =	pointer to object name
R2 =	load address
R3 =	execution address
R4 =	start address
R5 =	end address
R6 =	pointer to special field (or 0)DATAOS_UpCall 3 subreason code 8
Creating directory

R1 =	pointer to directory name
R2 =	load address (to be used as timestamp)
R3 =	execution address (to be used as timestamp)
R4 =	number of entries (0 for default)
R6 =	pointer to special field (or 0)DATA�OS_UpCall 3 subreason code 257
Creating and opening update

R1 =	pointer to file name
R2 =	external handle that file will be given (if successfully opened)
R6 =	pointer to special field (or 0)DATA�OS_UpCall 3 subreason code 258
Opening for update

R1 =	pointer to file name
R2 =	external handle that file will be given (if successfully opened)
R6 =	pointer to special field (or 0)DATA�OS_UpCall 3 subreason code 520
Renaming file

R1 =	pointer to current object name
R2 =	pointer to desired object name
R6 =	pointer to current special field
R7 =	pointer to desired special fieldDATAIOS_UpCall 3 subreason code 259
Closing file

R1 =	external handleDATA�OS_UpCall 3 subreason code 521
Setting attributes

R1 =	pointer to object name
R2 =	pointer to attribute string (control character terminated)
R6 =	pointer to special field (or 0)DATAOS_UpCall 3 - Modifying file
=>	R0 =	3 (Modifying file)
	R1-R7 vary, depending on the value of R9

	R8 =	filing system information word
	R9 =	<Reason code=>OS_UpCall3_reasons>

<=	All registers preserved

Warns your program that a file is being modified. It is made when a program calls one of serveral SWI provided by FileSwitch module:
#Tab;Indent 2
�	reason codes 0-8 are caused by calls to <OS_File>
�	reason codes 257-9 are caused by calls to <OS_Find>
�	reason codes 520/1 are caused by calls to <OS_FSControl>
#Indent

You may find it helpful to examine the documentation of the above FileSwitch SWI calls.

The following general points apply:
#Tab;Indent 2
�	all strings are 0-terminated except where specified
�	all object names will already have been expanded by FileSwitch, checked for basic validity, and had filing system prefixes stripped
�	object names will also be canonicalised, except under RISC OS 2.
#Indent

This UpCall is made before the operation, which may subsequently fail. For example, you may receive a rename UpCall for a locked file, which will sebsequently fail to rename (because it's locked). If a file name is invalid for a given operation (eg you try to create a file with a wildcarded leafname) FileSwitch will generate an error, and no UpCall will be generated.

The call is used by the desktop filer to maintain its directory displays. It's provided for information only; if you wish to use this UpCall, you must not intercept it, nor must you alter the contents of any of these registers used to pass parameters!
DATAyAny routines on this vector should :
# This file works but will have given an 'inaccessible' warning - ignore it
#Tab;Indent 2
�	Prompt you to supply the medium with a string built up using:
	  1	the medium type string (passed in R6)
	  2	the filing system name (obtained by calling <XOS_FSControl 33=>OS_FSControl> acting on the value of R1)
	  3	the medium name (passed in R2)
	for example:
	'Please insert disc ADFS:XYZ and press Space (Escape to abort)'
�	give you a way of indicating that you have either supplied the medium, or wish to cancel the operation
�	intercept the vector with R0 = -1 if you wish to cancel the operation
�	intercept the vector with R0 = 0 if the time limit is reached, or if you say you have supplied the medium
#Indent

When you intercept the call to the vector, control passes back to the filing
system routine that called <OS_UpCall>...
#Indent 2
�	If R0 = -1, then the routine calls <OS_UpCall 4=>OS_UpCall4>; it then returns an error to say that the medium wasn't found.
�	If R0 = 0, then the routine checks for you that the medium has been changed and the correct one supplied. If so, it calls OS_UpCall 4; otherwise it just calls OS_UpCall 1 or 2 again, after incrementing R4
#Indent

The timeout period in R5 is set to a small value for media that can detect when the medium has been changed (such a floppy disc drives) and to a large value (typically &FFFFFFFF) for other media. In the former case, this means that RISC OS will automatically detect that new medium has been supplied, and check that it is the correct one.

The most common use of OS_UpCall 1 and 2 is to request that a floppy disc is inserted.DATA�OS_UpCall 6 - Sleep
#Parent OS_UpCallReasons
=>	R0 =	6 (Sleep)
	R1 =	pointer to poll word (in a global memory area, eg the RMA)

<=	R0 =	0 if UpCall claimed

This Upcall informs the TaskWindow module that a task wants to sleep until some termination condition is met

This call is made by a task that wants to sleep until some termination condition is met, signalled by the contents of the poll word becoming non zero. It is not available in RISC OS 2.

Control may return to the task before the poll word becomes non zero. While the task is sleeping other tasks will continue to be polled by the Wimp.

If the termination condition can be recognised externally (ie in another Wimp task or under interrupt) hence causing the poll word to be set non zero, the calling task should set the poll word to zero on entry. Otherwise the poll word must be non zero on entry, so that the conrol will return to the calling task after each <Wimp Poll=>Wimp:Wimp_Poll>.

Note that a task musn't use this UpCall if it's not re-entrant.

The calling task must be running in a task window. The task window module intercepts this UpCall; you should not do so yourself. These two restrictions may be removed in future versions of RISC OS.DATA�OS_UpCall 7 - Sleep No More
=>	R0 =	7 (Sleep no more)
	R1 =	pointer to poll word (in a global memory area, eg the RMA)

<=	R0 preserved if V flag clear
	R0 =	pointer to error block if V flag set

This Upcall informs the TaskWindow module that an open pipe has been closed or deleted. It is made by PipeFS if an open pipe is closed or deleted. It's not available in RISC OS 2.

The Task Window module then traps this and objects if any of its tasks are currently waiting for the poll word related to that pipe to become non zero, by returning an error.

This prevents a *Shut command from deleting the workspace which is being accessed by the Task Window, which could potentially cause address exceptions.
DATA�OS_UpCall 8 - Buffer filling
=>	R0 =	8 (Buffer filling)
	R1 =	buffer handle
	R2 =	0

<=	All registers preserved

This Upcall informs you that a buffer's free space has become less than its specified threshold. The Buffer Manager issues this call when data is inserted into the specified buffer, and the free space becomes less than its current threshold.

This call is never issued under RISC OS 2.DATA�OS_UpCall 9 - Buffer emptying
=>	R0 =	9 (Buffer�emptying)
	R1 =	buffer handle
	R2 =	-1

<=	All registers preserved

This Upcall informs you that a buffer's free space has become greater than or equal to its specified threshold. The Buffer Manager issues this call when data is removed from the specified buffer, and the free space becomes greater than or equal to its current threshold.

This call is never issued under RISC OS 2.DIR$TT,�G���+i�Ͱ!Root��H���1�3r1P�H���t�3�3��H����k{ A9(�H���
^{ n10��H�����| 11��H�����~ 12��H���Ƥ=\5,�F���,x`�8L�H�����| �10bufferH�H�����| +11bufferDATA�OS_GBPB  (&0C)
#Parent OS_
This SWI Read/Writes a block from/to an open file

R0	Action
#Line
1	<Write bytes to given pointer=>OS_GBPB1>
2	<Write bytes to current pointer=>OS_GBPB1>
3	<Read bytes from given pointer=>OS_GBPB3>
4	<Read bytes from current pointer=>OS_GBPB3>
5	<Read name & boot options=>OS_GBPB5>
6	<Read current dir and privilege byte=>OS_GBPB5>
7	<Read library dir and privilege byte=>OS_GBPB5>
8	<Read entries from current dir=>OS_GBPB8>
9	<Read entries from given dir=>OS_GBPB9>
10	<Read entries and info from given dir=>OS_GBPB10>
11	<Read entries and full info from given dir=>OS_GBPB11>
12	<Read entries and full info with filetype from given dir=>OS_GBPB12>
DATArOS_GBPB 1 and 2
#Parent OS_GBPB
=>	R0 =	1 or 2
	R1 =	file handle
	R2 =	buffer
	R3 =	bytes to write
If R0 = 1 :
	R4 =	file pointer

<=	R2 =	pointer after end of data
	R3 =	number of bytes *not* transferred
	R4 =	new file pointer
	C is clear

The 'EOF-error-on-next-read' flag is cleared.

Error is generated if invalid file handle, directory, or no write access.
DATA�OS_GBPB 3 and 4
#Parent OS_GBPB
=>	R0 =	3 or 4
	R1 =	file handle
	R2 =	pointer to buffer
	R3 =	bytes to read
If R0 = 3 :
	R4 =	file pointer

<=	R2 =	pointer after data
	R3 =	number of bytes *not* transferred
	R4 =	new file pointer
	C is clear if R3 = 0, else it is set.

The 'EOF-error-on-next-read' flag is cleared.

Error is generated if invalid file handle, or directory, or no read access.
DATAAOS_GBPB  9
#Parent OS_GBPB
=>	R0 =	9
	R1 =	pointer to directory name
	R2 =	pointer to buffer
	R3 =	number of objects to read
	R4 =	where to start, 0 for first time
	R5 =	length of buffer
	R6 =	wildcarded name to match (if 0 "*" is used)
<=	R3 =	number of objects read
	R4 =	where to continue, or -1 for no more
	C flag is clear if R3 = 0, else it is set

This SWI reads filename entries from the specified directory, returning a group of 0-terminated strings in the buffer. The correct code structure to call this SWI is:

call OS_GBPB 9
while (R4 \<> -1)
\{
  if (R3 \<> 0)
  \{
    process buffer
  }
  call OS_GBPB 9
}

as it is legal to return R3 = 0 before the end of the directory. Also, do *not* assume anything about the value in R4.

Note: The PRM lies when it says that if R6 points to an empty string "*" is used.
DATAnOS_GBPB  10
#Parent OS_GBPB
=>	R0 =	10
	R1 =	pointer to directory name
	R2 =	pointer to <buffer=>OS_GBPB10buffer>
	R3 =	number of objects to read
	R4 =	where to start, 0 first time
	R5 =	length of buffer
	R6 =	wildcarded name to match (if 0 "*" is used)
<=	R3 =	number of objects read
	R4 =	where to continue, or -1 for no more
	C flag is clear if R3 = 0, else it is set

This SWI reads entries from the specified directory. The correct code structure to call this SWI is:

call OS_GBPB 10
while (R4 \<> -1)
\{
  if (R3 \<> 0)
  \{
    process buffer
  }
  call OS_GBPB 10
}

as it is legal to return R3 = 0 before the end of the directory. Also, do *not* assume anything about the value in R4 - Filer_Action assumes that increases by one for each entry read and comes horribly unstuck.

Note: The PRM lies when it says that if R6 points to an empty string "*" is used.
DATAOS_GBPB  11
#Parent OS_GBPB
=>	R0 =	11
	R1 =	pointer to directory name
	R2 =	pointer to <buffer=>OS_GBPB11buffer>
	R3 =	number of objects to read
	R4 =	where to start, 0 for first time
	R5 =	length of buffer
	R6 =	wildcarded name to match (if 0 "*" is used)
<=	R3 =	number of objects read
	R4 =	where to continue, or -1 for no more
	C flag is clear if R3 = 0, else it is set

This SWI reads entries from the specified directory. The correct code structure to call this SWI is:

call OS_GBPB 11
while (R4 \<> -1)
\{
  if (R3 \<> 0)
  \{
    process buffer
  }
  call OS_GBPB 11
}

as it is legal to return R3 = 0 before the end of the directory. Also, do *not* assume anything about the value in R4.

Note: The PRM lies when it says that if R6 points to an empty string "*" is used.
DATAOS_GBPB 12
#Parent OS_GBPB
=>	R0 =	12
	R1 =	pointer to directory name
	R2 =	pointer to <buffer=>.buffer>
	R3 =	number of objects to read
	R4 =	where to start, 0 for first time
	R5 =	length of buffer
	R6 =	wildcarded name to match (if 0 "*" is used)
<=	R3 =	number of objects read
	R4 =	where to continue, or -1 for no more
	C flag is clear if R3 = 0, else it is set

This SWI reads entries from the specified directory. The correct code structure to call this SWI is:

call OS_GBPB 12
while (R4 \<> -1)
\{
  if (R3 \<> 0)
  \{
    process buffer
  }
  call OS_GBPB 12
}

as it is legal to return R3 = 0 before the end of the directory. Also, do *not* assume anything about the value in R4.

Note: The PRM lies when it says that if R6 points to an empty string "*" is used.
#subpage buffer
OS_GBPB 12 buffer
Offset	Contents
#line
0	<Load address=>fsys_loadexec>
4	<Exec address=>fsys_loadexec>
8	Length
12	<Attributes=>fsys_objattr>
16	<Object type=>fsys_objtype>
20	<File type=>Filetypes:!Root>
24	name (0-terminated)

Entries are word aligned.
DATA\OS_GBPB 5, 6 and 7
#Parent OS_GBPB
=>	R0 =	5, 6 or 7
	R2 =	buffer

<=	R0, R2 preserved
	C flag corrupted

These calls read information on the temporary filing system (normally the current) to the buffer pointed to by R2.
If R0 = 5 :
#Indent 2
\<name length byte>\<disc name>\<boot option byte>
of disc containing the current directory
#Indent

If R0 = 6 :
#Indent 2
\<0>\<name length byte>\<current directory name>\<priviliged byte>
of the currently selected directory. The priviliged byte is either &00 ie allowance to create or delete objects in the directory &FF ie prohibition of creating or deleting objects; in ADFS or other FileCore based systems, you always got &00
#Indent
If R0 = 7 :
#Indent 2
\<0>\<name length byte>\<library directory name>\<priviliged byte>
of the library directory
#Indent

The names are stored without termination byte.
DATAOS_GBPB 8
#Parent OS_GBPB
=>	R0 =	8
	R2 =	buffer address
	R3 =	number of object names to read from directory
	R4 =	offset of first item to be read in directory, or 0 to start

<=	R0, R2 preserved
	R3 =	number of objects asked for but not read
	R4 =	next offset into directory
	C Flag clear if R3 = 0, else set

This call reads entries from the current directory on the temporary filing system. You can also do it using <OS_GBPB 9=>OS_GBPB9>. File names are returned in the area of memory specified in R2. The format of the returned data is:
#Indent 2;Tab
length of first object name	(one byte)
first object name in ASCII	(as specified)
... repeated as specified in R3
#Indent

On exit R4 contains the value which should be used on the next call. There is no guarantee that the number of objects you asked for will be read. This is because of the external constraints some filing systems may impose. To ensure reading all the entries you want to, this call should be repeated until R4 = -1.

This call is only provided for backward compatibility.
DATA�OS_GBPB 10 buffer
#Parent OS_GBPB10
Offset	Contents
#line
0	<Load address=>fsys_loadexec>
4	<Exec address=>fsys_loadexec>
8	Length
12	<Attributes=>fsys_objattr>
16	<Object type=>fsys_objtype>
20	name (0-terminated)

Entries are word aligned.
DATA+OS_GBPB 11 buffer
#Parent OS_GBPB11
Offset	Contents
#line
0	<Load address=>fsys_loadexec>
4	<Exec address=>fsys_loadexec>
8	Length
12	<Attributes=>fsys_objattr>
16	<Object type=>fsys_objtype>
20	Internal name
24	Time/Date (0 if not stamped)
29	name (0-terminated)

Entries are word aligned.
DIR$���G�����ͥ!Root��H���wiI"�Index��H���޽ZPModifiers��H�����Z\BlockModifiersDATA�OS_Plot  (&45)
#Parent OS_
=>	R0 =	<plot command code=>OS_PlotIndex>
	R1 =	x coord
	R2 =	y coord

<=	R0,R1,R2 are corrupted

This SWI does a direct VDU call.DATA�Plot commands
#Parent OS_Plot
#Align Centre
#f1:Plot Commands :

#Align
#TAB Align Right, Align Left, Align Right, Align Left
0	Solid <line=>.line> incl end pts	8	excl end pt
16	Dotted <line=>.line> incl end pts	24	excl end pt
32	Solid <line=>.line> excl first pt	40	excl both end pts
48	Dotted <line=>.line> excl first pt,	56	excl both end pts
	pattern continued
	 					 	Horizontal linefill:
64	Point plot				72	  (left&right) to non backgr
80	<Triangle=>.triangle> fill		88	  (to right) to backgr
96	<Rectangle=>.rectangle> fill		104	  (left&right) to foregr
112	<Parallelogram=>.parallelogram> fill	120	  (to right) to non foregr
128	Flood to non-background			136	Flood to foreground
144	<Circle=>.circle> outline		152	<Circle=>.Circle> fill
160	Circular <arc=>.arc/segment/sector>	168	<Segment=>.arc/segment/sector>
176	<Sector=>.arc/segment/sector>		184	<Block copy/move=>.copy/move>
192	<Ellipse=>.ellipse> outline		200	<Ellipse=>.ellipse> fill
208	Font printing (don't use)		232	Sprite Plot

The base commands are specified in the top 5 bits, modified by the <value in the bottom 3 bits =>OS_PlotModifiers>. Block copy/move uses a <special set of modifiers =>OS_PlotBlockModifiers>.

Some shapes need to be defined by a sequence of points. The VDU drivers use the previous positions of the graphics cursor to define these. These can be specified by a sequence of absolute or relative moves (commands 64 or 68) - the points to visit to define a particular shape is given as a link in the table above.

Unknown plot codes (216-231,240-255) are sent to the <unknown plot vector=>vector_ukplotv>, which by default does nothing.

The dash pattern is set with <VDU 23,6=>VDU:23,6> and can be read with <OS_Word 10,6=>OS_Word10>. Its length is set and read with <OS_Byte 163=>OS_Byte163>.
#SubPage line
Line Moves
To plot a line, move to one endpoint, then plot line to other endpoint
#SubPage triangle
Triangle Moves
To plot a triangle, move to vertex, move to next vertex, then plot triangle to third vertex.
#SubPage rectangle
Rectangle Moves
To plot a rectangle, move to one corner, then plot rectangle to diagonally opposite corner.
#SubPage parallelogram
Parallelogram Moves
To plot a parallelogram, move to vertex, move to next vertex, then plot parallelogram to third vertex. Fourth vertex will be opposite second.
#SubPage circle
Circle Moves
To plot a circle, move to centre, then plot circle to a point on the circumference.
#SubPage arc/segment/sector
Arc/Segment/Sector Moves
To plot an arc/segment/sector, move to centre, move to start, then plot arc/segment/sector to a point on the line joining centre to end. Arc/segment/sector will be plotted anticlockwise.
#SubPage copy/move
Block Copy/Move Moves
First define the source rectangle: move to one corner, then move to diagonally opposite corner. Then plot bottom left corner of destination.
#SubPage ellipse
Ellipse Moves
To plot a ellipse, move to centre, move to point on circumference with same Y coord as centre, then plot ellipse to the lowest or highest point on the circumference.
DATAPModifiers
#Parent OS_PlotIndex
#Align Centre;Wrap Off
#f1:Modifiers :
#Align
#TAB Align Right, Align Left, Align Right, Align Left
0	Move relative			4	Move absolute
1	Plot relative, foreground	5	Plot absolute, foreground
2	Plot relative, inverse		6	Plot absolute, inverse
3	Plot relative, background	7	Plot absolute, background
DATA\Block copy/move modifiers
#Parent OS_PlotIndex
#Align Centre;Wrap Off
#f1:Modifiers :
#Align
#TAB Align Right, Align Left, Align Right, Align Left
0	Move relative			4	Move absolute
1	Relative rectangle move		5	Absolute rectangle move
2	Relative rectangle copy		6	Absolute rectangle copy
3	Relative rectangle copy		7	Absolute rectangle copy
DIR$����C���?�Ő0��G���l@��-1��G�������Init��G������Read��G����̓TransDATA�GS flags
bit	 Meaning when set
#Line
29	Space is string terminator
30	Ctrl codes ('|') not converted
31	" is not stripped around stringsDATA-Translations
Token	Replaced by
#Line
|"	"
|\<	\<
|!	forces top bit of next char to be set.
|char	CTRL( ASCII(uppercase(char) - 64 )
"str"	str
\<num>	CTRL(num)
\<str>	system variable str

Example: <\<7\>Date: \<Sys$Date\>|M|JTime: \<Sys$Time\>=>*ECHO <7\>Date: <Sys$Date\>|M|JTime: <Sys$Time\>>DATA�OS_GSInit  (&25)
#Parent OS_
=>	R0 =	string to translate
	R2 =	<flags=>os_gs0>

<=	R0 =	value for OS_GSRead
	R1 =	1st nonblank char
	R2 =	value for OS_GSRead

This SWI is followed by repeated calls to <OS_GSRead>DATAOS_GSRead  (&26)
#Parent OS_
=>	R0,R2 from last call, or from OS_GSInit

<=	R1 =	translated char
	C set if end-of-string

This SWI reads & <translates=>os_gs1> a string, one char at a time. Before first call, <OS_GSInit> must be called. To do whole string, use <OS_GSTrans>DATA�OS_GSTrans  (&27)
#Parent OS_
=>	R0 =	pointer to string, terminated by 10,13,0
	R1 =	pointer to destination buffer
	R2 =	buffer size + <flags=>os_gs0>

<=	R0 =	pointer to terminator+1
	R2 =	characters converted
	C set if buffer overflow

This SWI is equivalent to a call to <OS_GSInit>, followed by repeated calls to <OS_GSRead>. It reads and <translates=>os_gs1> a whole string.DIR$pp��F���y���!Rootl�G������|Sort�E������sort0t�G���7l��%sort1��G���rn���sort2��G���?��ͬ00	G����ͱ1�	G�����ͧ2�	G���ɽ�͟3,	G����#���4	G���r���$58	G���h&�ͺ6DATA�OS_Heap  (&1D)
#Parent OS_
=>	R0 =	Reason :
	 	  0	<Initialise heap=>OS_Heap0>
	 	  1	<Describe heap=>OS_Heap1>
	 	  2	<Claim block=>OS_Heap2>
	 	  3	<Release block=>OS_Heap3>
	 	  4	<Change size of block=>OS_Heap4>
	 	  5	<Change size of heap=>OS_Heap5>
	 	  6	<Read block size=>OS_Heap6>
	R1 =	Pointer to heap

These calls control a user heap block and the allocation of space with in it. Note that no code is provided to compact the heap.DATA|OS_HeapSort  (&4F)
#Parent OS_
=>	R0 =	number of elements
	R1 =	pointer to word-array + <flags=>os_heapsort0>
	R2 =	<type=>os_heapsort1> or <comparison routine=>os_heapsort2>
optional :
	R3 =	workspace pointer
	R4 =	array of actual objects
	R5 =	size of object in R4
	R6 =	workspace of R5 bytes (if R5>16K)

This SWI sorts a list of objects, using the Heap Sort algorithm.DATA�Flags
Bit	Meaning when set
#Line
29	Use R6 as workspace
30	Build word array in R1 from R4+R5
31	Sort R4 array after sorting pointersDATA%Standard sort routines
R1 is array of :
 0 cardinal
 1 integer
 2 pointer to cardinal
 3 pointer to integer
 4 pointer to chars (case insensitive)
 5 pointer to chars (case sensitive)

If R2 > 5, then R1 points to custom objects, and R2 is address of <comparison routine=>os_heapsort2>DATA�Comparison routine
#Parent OS_HeapSort
=>	R0,R1	=	objects from R1 array
	R12	=	workspace pointer given in R3

<=	R0-R3 may be corrupted
	flags: LT if R0\<R1, else GE

This routine compares the two objects given by R0 and R1.DATA�OS_Heap 0
#Parent OS_Heap
#Wrap off
=>	R0 =	0
	R1 =	pointer to heap (word aligned)
	R3 =	size of heap (multiple of 4)

This SWI sets up a heap of a particular size.DATA�OS_Heap 1
#Parent OS_Heap
#Wrap off
=>	R0 =	1
	R1 =	pointer to heap
<=	R2 =	largest free space
	R3 =	total free space

This SWI reads the current status of a heap block.DATA�OS_Heap 2
#Parent OS_Heap
=>	R0 =	2
	R1 =	pointer to heap
	R3 =	size to claim

<=	R2 =	pointer to block, or 0 if failed

This SWI claims a section of the heap.DATA�OS_Heap 3
#Parent OS_Heap
#Wrap off
=>	R0 =	3
	R1 =	pointer to heap
	R2 =	pointer to block

This SWI releases a previously claimed section of the heap.DATA�OS_Heap 4
#Parent OS_Heap
#Wrap off
=>	R0 =	4
	R1 =	pointer to heap
	R2 =	pointer to block
	R3 =	size increase, or -ve for decrease
<=	R2 =	pointer to new block

This SWI changes the size of a claimed section of the heap.DATA$OS_Heap 5
#Parent OS_Heap
#Wrap off
=>	R0 =	5
	R1 =	pointer to heap
	R3 =	size increase, or -ve for decrease
<=	R3 =	actual change in size

#Wrap
This SWI notifies the OS of a change in the size of the heap. If the heap cannot be shrunk by the required amount an error will be caused.DATA�OS_Heap 6
#Parent OS_Heap
#Wrap off
=>	R0 =	6
	R1 =	pointer to heap
	R2 =	pointer to block
<=	R3 =	size of block (including header)

This SWI returns the size of a claimed block.DIR$���	G���Z*��DynamicArea�	G�����h%SLine�
	G���,���MemMapInfo�	H���E>�&TModeVariable 
	G���X4��gMonotonicTime�
	G���
>��PointH	G����V˼JUnsigned�	G����I���VarVal\	G����X��dSysInfo�	G���ib��|Args<	H����@�&(VduVariablesd.	G����Ž�MemMapEntriest/	F����+�RAMFsLimitsx0	H�����
�Cd2	F���+�d�DefaultHandlerp3	H���u-EscapeState�6	G���kͽ�]Palette�9	H����;�&MModeVariablesDATAOS_ReadDynamicArea  (&5C)
#Parent OS_
=>	R0 =	<area=>OS_Areas> to read, bit 7 set to read maximum size to R2

<=	R0 =	pointer to start address of area
	R1 =	current number of bytes in area
	R2 =	maximum size of area
	
This SWI reads the size of an area.DATASOS_ReadLine  (&0E)
#Parent OS_
=>	R0 =	buffer + <flags=>.flags>
	R1 =	size of buffer
	R2 =	lowest char allowed
	R3 =	highest char allowed
	R4 =	character to output (if bit 30 set)

<=	R0 corrupted
	R1 =	chars read, excl Return
	R2 corrupted
	R3 corrupted
	C set if Escape

This SWI reads a line from the current input stream. Input is terminated with Return, Ctrl-J or Escape. Delete and Backspace deletes last char entered. Ctrl-U empties buffer.
#Subpage flags
OS_ReadLine flags
Bit	Meaning if set
#Line
30	Echo character in R4 (password style)
31	Echo only characters entering buffer
DATA�OS_ReadMemMapInfo  (&51)
#Parent OS_
<=	R0 =	page size in bytes
	R1 =	number of pages

This call reads the page size used by MEMC and the number of pages in use. Valid page numbers are 0 to R1-1, and the total memory size is R0*R1.DATATOS_ReadModeVariable  (&35)
#Parent OS_
=>	R0 =	screen mode, or -1 for current
	R1 =	<variable number=>OS_ReadModeVariables>

<=	R2 =	value of variable
	C is set if variable or mode were invalid

This SWI allows you to read information about a particular mode without having to change into that mode. See also <OS_ReadVduVariables>.
DATAgOS_ReadMonotonicTime  (&42)
#Parent OS_
<=	R0 =	Number of centi-ceconds since last hard reset.
DATA�OS_ReadPoint  (&32)
#Parent OS_
=>	R0 =	X coord
	R1 =	Y coord

<=	R2 =	Colour
	R3 =	Tint
	R4 =	-1 if point was off screen, 0 otherwise

This SWI returns the colour and tint of a point.DATAJOS_ReadUnsigned  (&21)
#Parent OS_
=>	R0 =	base (2-36 Default 10) + <flags=>.flags>
	R1 =	pointer to string to convert
	R2 =	maximum value, if bit 29 set

<=	R1 =	pointer to terminator char
	R2 =	value converted

This SWI converts a string into an integer. If string starts with &, base 16 is assumed. If string starts with base_, this base is used. If no base is given in string, the base in R0 is used, or 10 if that base is invalid.
#
#Subpage flags
Flag bits in R0
#wrap off
 31	Must terminate with ctrl,space
 30	Must be in the range [0,255]
 29	Must be in the range [0,R2]DATA�OS_ReadVarVal  (&23)
#Parent OS_
=>	R0 =	pointer to wildcarded name
	R1 =	pointer to buffer
	R2 =	length of buffer
	R3 =	name pointer, or 0 for 1st call
	R4 =	<Variable type=>OS_vartypes>
	
<=	R2 =	bytes read
	R3 =	new name pointer
	R4 =	variable type

This SWI returns type and value of a variable. To just check if it exists, call with R2\<0. If it's still \<0 on exit, variable exists. An error will be returned if the variable does not exist.DATAdOS_ReadSysInfo  (&58)
#Parent OS_
=> R0 =	variable :
	  0	<Screen size=>.0>
	  1	<Mode=>.1>
	  2	<Machine Id=>.2>
	  3	<82C71x features=>.3>

These calls read information about the current system.
#
#Subpage 0
OS_ReadSysInfo 0
=>	R0 =	0
<=	R0 =	screen size

This call reads the size of screen memory.
#
#Subpage 1
OS_ReadSysInfo 1
=>	R0 =	1
<=	R0 =	mode
	R1 =	monitor type
	R2 =	sync

This call reads information about the current screen.
#
#Subpage 2
OS_ReadSysInfo 2
=>	R0 =	2
<=	R0 =	IOEB ASIC presence flag
	R1 =	82C710 presence flag
	R2 =	LCD ASIC presence flag
	R3 =	low half of Id
	R4 =	high half of Id

This call checks for the presence of various chips, returning flags. It also reads the unique machine ID if a suitable chip is fitted to the computer; if none is, a ID of zero is returned.
#
#Subpage 3
OS_ReadSysInfo 3
=>	R0 =	3
<=	R0 =	<82C710/82C711 basic features=>.main>
	R1 =	82C710/82C711 extra features mask (reserved for upwards compatible additional functionality)
	R2 =	extended features 1
	R3 =	extended features 2
	R4 =	extended features 3

This call reads features available in the 82C71x chip.
#Subpage main
82C710/82C711 basic features mask
The 82C710 chip family are composed of several sub units. Future chips in the family may have some sub units which are incompatible with earlier versions, while leaving the functionality of other sub units unchanged. This call returns a feature mask, sub fields within which show the 'compatibility level' of each sub unit. Differing values of a sub field indicate incompatible versions of the corresponding sub unit. A sub field of zero indicates that the sub unit is not present.

The values are:
Bits	Sub unit		710	711
#Line
0-3	IDE hard disc interface	1	1
4-7	floppy disc interface	1	1
8-11	parallel port		1	1
12-15	1st serial port		1	1
16-19	2nd serial port		0	1
20-23	chip configuration	1	2
24-31	reserved		0	0
DATA|OS_ReadArgs  (&49)
#Parent OS_
=>	R0 =	pointer to <syntax string=>.syntax>
	R1 =	pointer to <input string=>.input>
	R2 =	pointer to <output buffer=>.output>
	R3 =	size of output buffer

<=	R3 =	bytes left in output buffer

This command scans the input string, and places values in output buffer according to the syntax string.
#
#Subpage syntax
Syntax string
string		= element\{, element\}
element		= [identifier [=alias] ] \{/qualifier}
qualifier	=
  A	:	Keyword must always be given value
  K	:	Identifier must be used
  S	:	Switch
  E	:	Do <OS_EvaluateExpression> on value
  G	:	Do <OS_GSTrans> on value

Note: An element doesn't have to have a name. "," is a perfectly legal syntax string.
#
#Subpage input
Input-string
example:
  Syntax
    "number=times/e,file/k/a,expand/s"

  These input-strings will match:
    "-n 10 -file myfile"
    "-times 1+7 -file myfile -expand"
    "-file myfile -e"

  These will not:
    "myfile -number 4"
    "-number 20 -times 4 -file myfile"
#
#Subpage output
Output buffer
For identifier x (named or not), word x in output buffer contains :

   switch	(/S)	:	non zero value if switch used
   GSTransed	(/G)	:	pointer to block (0 if unused) with two-byte length and then string itself (not terminated)
   Evaluated	(/E)	:	pointer to block (0 if unused) with one byte of type four bytes of value (int if type=0)
   else		 	:	pointer to 0-terminated string.
DATA(OS_ReadVduVariables  (&31)
#Parent OS_
=>	R0 =	pointer to input block
	R1 =	pointer to output block (can be same as R0)

The input block is a list of <variable numbers=>.variables> (words) terminated by -1. Each variable is read, and its value is written as a word into the output block.

Note: You can also read the <mode variables=>OS_ReadModeVariables> with this call.
#
#Subpage variables
VDU Variables
#wrap off
&	#	Name		Meaning
#Line
80	128	GWLCol		Graphics Window	Lefthand Column		(ic)
81	129	GWBRow		 		Bottom Row		(ic)
82	130	GWRCol		 		Righthand Column	(ic)
83	131	GWTRow		 		Top Row			(ic)

84	132	TWLCol		Text Window	Lefthand Column
85	133	TWBRow		 		Bottom Row
86	134	TWRCol		 		Righthand Column
87	135	TWTRow		 		Top Row

88	136	OrgX		x coord of graphics Origin	 	(ec)
89	137	OrgY		y coord of graphics Origin	 	(ec)

8A	138	GCsX		Graphics Cursor X coord		 	(ec)
8B	139	GCsY		Graphics Cursor Y coord		 	(ec)
8C	140	OlderCsX	Oldest gr. Cursor X coord	 	(ic)
8D	141	OlderCsY	Oldest gr. Cursor Y coord	 	(ic)
8E	142	OldCsX		Previous gr. Cursor X coord	 	(ic)
8F	143	OldCsY		Previous gr. Cursor Y coord	 	(ic)
90	144	GCsIX		Graphics Cursor X coord		 	(ic)
91	145	GCsIY		Graphics Cursor Y coord		 	(ic)
92	146	NewPtX		New point X coord		 	(ic)
93	147	NewPtY		New point Y coord		 	(ic)

94	148	ScreenStart	As used by VDU drivers
95	149	DisplayStart	As used by display hardware
96	150	TotalScreenSize	Memory allocated to screen

97	151	GPLFMD		GCOL action for foreground col
98	152	GPLBMD		GCOL action for background col
99	153	GFCOL		Graphics foreground col
9A	154	GBCOL		Graphics background col
9B	155	TForeCol	Text foreground col
9C	156	TBackCol	Text background col
9D	157	GFTint		Graphics foreground tint
9E	158	GBTint		Graphics background tint
9F	159	TFTint		Text foreground tint
A0	160	TBTint		Text background tint

A1	161	MaxMode		Highest (standard) mode available

A2	162	GCharSizeX	X size of VDU5 chars (pixels)
A3	163	GCharSizeY	Y size of VDU5 chars (pixels)
A4	164	GCharSpaceX	X spacing of VDU5 chars (pixels)
A5	165	GCharSpaceY	Y spacing of VDU5 chars (pixels)

A6	166	HLineAddr	Address of <horizontal line-draw routine=>.hlineaddr>

A7	167	TCharSizeX	X size of VDU4 chars (pixels)
A8	168	TCharSizeY	Y size of VDU4 chars (pixels)
A9	169	TCharSpaceX	X spacing of VDU4 chars (pixels)
AA	170	TCharSpaceY	Y spacing of VDU4 chars (pixels)

AB	171	GcolOraEorAddr	Addr of <colour blocks=>.gcoloraeoraddr> for current GCOLs

100	256	WindowWidth	Width of text window in chars
101	257	WindowHeight	Height of text window in chars
#Subpage hlineaddr
Fast horizontal line draw routine
=>	R0 =	left x coordinate of end of line
	R1 =	y coodinade of line
	R2 =	right x coordinate of end of line
	R3 =	0	plot with no action (do nothing!)
	 	1	plot with foreground colour and action
	 	2	invert current screen colour
	 	3	plot with background colour and action
	 	>3	pointer to <aligned ECF block=>.ecfblock>
	R14 =	return address
<=	all registers preserved

This must be called in SVC mode. The caller should <OS_RemoveCursors> before calling, and <OS_RestoreCursors> afterwards. All coordinates are internal coordinates, and the line is plotted as specified by R3, clipped to the current graphics window.
#subpage gcoloraeoraddr
GCol OR and EOR address
The returned value is a pointer to 3 <colour blocks=>.ecfblock>, which are updated whenever GCOL or TINT are issued, or the ECF origin is changed.

Offset	Contents
#Line
0	Colour block for current foreground colour and action
64	Colour block for current background colour and action
128	Colour block for current background colour with store action
#subpage ecfblock
ECF block
This block should be on a 64 byte boundary

Offset	Value
#Line
0	OR mask for top ECF line
4	EOR mask for top ECF line
8	OR mask for next ECF line
12	EOR mask for next ECF line

56	OR mask for bottom ECF line
60	EOR mask for bottom ECF line
DATAOS_ReadMemMapEntries  (&52)
#Parent OS_
=>	R0 =	pointer to <request block=>OS_memmaprequest>
<=	block at R0 updated

This SWI returns the logical page number in which the memory pages specified reside, ie page -> address.

The converse is <OS_FindMemMapEntries>.DATAOS_ReadRAMFsLimits  (&4A)
#Parent OS_
=>	R0 =	start of RAM disc
	R1 =	end of RAM disc

Reads where in memory the RAM disc resides. This is not really all that useful as for the majority of the time the RAM disc is set as inaccessable to user programs.DATA�OS_ReadC  (&04)
#Parent OS_
<=	if C flag is 0
	 	R0 =	ASCII code
	if C flag is 1
	 	R0 =	error number, &1B means escape

This call reads a character from the input stream. It waits to get the next character, {/}i.e.{/} you will only get the control back when, for example, a key is pressed. The source for the input stream can be read with <OS_Byte 177=>OS_Byte177>.

If cursor editing is enabled (see <OS_Byte 4=>OS_Byte004>), then pressing a cursor keys will start cursor editing.
DATAOS_ReadDefaultHandler  (&55)
#Parent OS_
=>	R0 =	<handler number=>os_handlers>

<=	R0 preserved
	R1 =	address of default handler
	R2 =	workspace address
	R3 =	buffer address

This enables you to re-install the handler which is set up after a reset or power on.DATAOS_ReadEscapeState  (&2C)
#Parent OS_
This sets or clears the carry flag depending on whether the escape key is pressed or not.

Once an escape condition has been detected, (either through this or for example, with <OS_ReadC>), it should be acknowledged with <OS_Byte 126=>OS_Byte126> or cleared using <OS_Byte 124=>OS_Byte124>.

This call is useful if a program is executing in a loop which the user may want to escape from, but isn't performing any input operations which would let it know about the escape.

Note that this may be called from an interrupt routine. However, <OS_Byte 126=>OS_Byte126> may not be, so if an escape is detected under interrupts, the interrupt routine must set a flag which is checked by the foreground task rather than try to acknowledge the escape itself.
DATA]OS_ReadPalette  (&2F)
#Parent OS_
=>	R0 =	logical colour
	R1 =	type of colour

<=	R2 =	setting of first flashing colour
	R3 =	setting of second flashing colour

This reads the setting of a particular colour that is sent to the hardware. R1 selects whether the normal colour (16), border colour (24) or pointer colour (25) is read. If R2 = R3 on exit the colour requested is a non flashing colour. The values are to interpret as follows:

#Tab
Bits	Meaning
#Line
0-6	Value showing how colour was programmed
7	Supremacy bit
8-15	Amount of red
16-23	Amount of green
24-31	Amount of blue  

The bottom byte returns the second parameter to the <VDU 19=>VDU:19> command. For example:

#Tab
Value	Meaning
#Line
0-15	Actual colour (BBC compatible)
16	Defined by giving amounts of R G and B
17-18	Flashing colour defined by giving amounts of red, green and blue
DATAMMode variable numbers
#Parent OS_ReadModeVariable
Var	Name		Meaning
#Line
0	ModeFlags	Bits of result:
	 		  0  1 ->	non graphics mode
	 		  1  1 ->	teletext mode
	 		  2  1 ->	gap mode (gap betw. vdu4 lines)
	 		  3  1 ->	'BBC' gap mode (3 & 6), 0 -> non gap
	 		  4  1 ->	hi-res mono mode
	 		  5  1 ->	double height VDU chars, 0 -> normal
	 		  6  1 ->	hardware scroll never used
	 		  8  1 ->	fully definable 8 bit palette
1	ScrRCol		Number of textcolumns -1
2	ScrBRow		Number of textrows -1
3	NColour		<Maximum logical colour=>.colours>
4	XEigFactor	Screenx = osx >> XEigFactor
5	YEigFactor	Screeny = osy >> YEigFactor
6	LineLength	Bytelength of one pixel-line
7	ScreenSize	Bytesize of entire screen
8	YShftFactor	Kept for compability. Don't use.
9	Log2BPP		Bits per pixel = 1 \<\< Log2BPP
10	Log2BPC		Bytes per char = 1 \<\< Log2BPC
11	XWindLimit	Number of x pixels on screen -1
12	YWindLimit	Number of y pixels on screen -1
#
#Subpage colours
Maximum logical colour
Value	Number of colours
#Line
1	2
3	4
15	16
63	256 (but in blocks of 4)
255	256 (fully definable)
65535	16 bit
-1	24 bit
DIR$���A	G����x�	�!RootXB	G����ӽ�0C	G���5ؽ�1D	G���p��F10`E	H����a,@14�F	H����m&w14,1H	G���^��2�H	G�����w22\J	G�������j9�K	H����~n&rindex<N	H�����-
11HO	H����I.12`P	H����).�13�Q	H�����m&14,0S	H�����,�14,2�T	H�����,�14,3|V	H�����m&.15�X	H����-g15,15Z	H���o�-�15,24�[	H����`-215,8�\	H����c1�21|^	H����I/�21,0<a	H����W1�21,1�c	H���021,2�d	H���yo0r21,3Pf	H����\021,4hg	H����Hn&21,5�i	H���G�0L21,6�j	H������3�l	H�����4DATA�OS_Word  (&07)
#Parent OS_
=>	R0 =	<reason code=>os_wordindex>
	R1 =	parameter block

Action taken depends on reason code in R0.DATA�OS_Word 0
#Parent OS_Word
=>	R0 =	0
	R1 =	buffer:
	  0 Two byte buffer address
	  2 Size of buffer
	  3 Lowest ASCII code
	  4 Highest ASCII code

Don't use this SWI, use <OS_ReadLine>.DATA�OS_Word 1
#Parent OS_Word
=>	R0 =	1
	R1 =	pointer to five byte block

This SWI reads the system clock. On exit, the buffer contains five byte system clock, with LSB first.

The clock is incremented 100 times a second, and reset on a hard break.DATAFOS_Word 10
#Parent OS_Word
=>	R0 =	10
	R1 =	9 byte block :
	 	  0 character code
<=	R1 =	buffer containing :
	 	  1 top row of def.
	 	  .
	 	  .
	 	  8 bottom row of def.

This SWI reads a character definition. Valid values are 32-126 and 128-256. Values 2-5 returns ECF pattern 1-4. Value 6 returns dot-dash pattern.DATA@OS_Word 14
#Parent OS_Word
=>	R0 =	14
	R1 =	pointer to parameter block
	R1+0 = reason code :
	  0 :	<Read soft-copy of CMOS clock as string=>OS_Word14,0>
	  1 :	<Read CMOS clock as BCD=>OS_Word14,1>
	  2 :	<Convert BCD to string=>OS_Word14,2>
	  3 :	<Read soft-copy of CMOS clock as 5-byte integer=>OS_Word14,3>
DATAwOS_Word 14,1
#Parent OS_Word
=>	R0 =	14
	R1 =	pointer to 7-byte block containing :
	 	 	0 = 1

<=	R1 =	pointer to block containing :
		 	0 = year		(0-99)
		 	1 = month		(1-12)
		 	2 = day of month	(1-31)
		 	3 = day of week		(1-7, 1=Sunday)
		 	4 = hour		(0-23)
		 	5 = minute		(0-59)
		 	6 = second		(0-59)

This OS_Word reads the time directly from the CMOS clock.
DATA�OS_Word 2
=>	R0 =	2
	R1 =	five byte block containing new system clock value, LSB first

This SWI writes the system clock. 

The clock is incremented 100 times a second, and reset on a hard break.DATAwOS_Word 22
#Parent OS_Word
=>	R0 =	22
	R1 =	pointer to five-byte buffer:
	  0 Type
	  1 Un-Aligned word containing new screen offset.

This SWI sets up a new screen base address. It is given as the offset from the base of the screen. Offset must be divisible by 16.
Type :
  Bit 0  if set: Set screen base used by VDU
  Bit 1  if set: Set screen base used by hardwareDATAjOS_Word 9
=>	R0 =	9
	R1 =	pointer to five byte block:
		  0 Two byte x coord.
		  2 Two byte y coord.
<=	R1+4 contains logical colour of specified pixel.

This SWI returns the logical colour at the specified pixel. &FF is returned if :
  Screen is in a 256-colour mode.
  Pixel is off screen
  Mode is non-grapical

Don't use this SWI, use <OS_ReadPoint>DATArOS_Word index
#Parent OS_Word
0	&00	<Read line from input stream=>os_word0>
1	&01	<Read system clock=>os_word1>
2	&02	<Write system clock=>os_word2>
3	&03	<Read interval timer=>os_word3>
4	&04	<Write interval timer=>os_word4>
9	&09	<Read pixel logical colour=>os_word9>
10	&0A	<Read a character definition=>os_word10>
11	&0B	<Read palette=>os_word11>
12	&0C	<Write palette=>os_word12>
13	&0D	<Read current and last graphics cursors=>os_word13>
14	&0E	<Read CMOS clock=>os_word14>
15	&0F	<Write CMOS clock=>os_word15>
21	&15	<Define pointer and mouse parameters=>os_word21>
22	&16	<Write screen base address=>os_word22>DATA
OS_Word 11
#Parent OS_Word
=>	R0 =	11
	R1 =	buffer:
	 	 0 logical colour to read

<=	R0 preserved
	R1 preserved:
	 1	physical colour associated with the logical colour
	 2	red component
	 3	green component
	 4	blue component

Preferable is <OS_ReadPalette>.
DATAOS_Word 12
#Parent OS_WordIndex
=>	R0 =	12
	R1 =	buffer:
	 	 0 logical colour to change
	 	 1 new physical colour
	 	 2 red component
	 	 3 green component
	 	 4 blue component

This is equivalent to <VDU 19=>VDU:19>, but is faster and may be used in interrupt routines.
DATA�OS_Word 13
#Parent OS_Word
=>	R0 =	13
	R1 =	pointer to 8 byte buffer

This OS_Word fills the <buffer=>.buffer> with the current and previous graphics cursor coordinates. You should use <OS_ReadVDUVariables> instead.
#subpage buffer
OS_Word 13 buffer
Offset	Contents
#Line
0	previous	x coord	LSB
1	 		 	MSB
2	 		y coord	LSB
3	 		 	MSB
4	current		x coord	LSB
5	 		 	MSB
6	 		y coord	LSB
7	 		 	MSB
DATAOS_Word 14,0
#Parent OS_Word
=>	R0 =	14
#Wrap off
	R1 =	pointer buffer for string, containing :
#Wrap
	 	 	0 = 1

This OS_Word reads the time from the soft copy of the CMOS clock. The format of the CR terminated string written to R1 is determined by the current territory.
DATA�OS_Word 14,2
#Parent OS_Word
=>	R0 =	14
	R1 =	pointer to buffer, starting with 8-byte block  :
		 	0 = 2
		 	1 = year		(0-99)
		 	2 = month		(1-12)
		 	3 = day of month	(1-31)
		 	4 = day of week		(1-7, 1=Sunday)
		 	5 = hour		(0-23)
		 	6 = minute		(0-59)
		 	7 = second		(0-59)
<=	R1 =	pointer to buffer which now contains string

This OS_Word converts the block to a CR terminated string, the format of which is determined by the current territory.
DATA�OS_Word 14,3
#Parent OS_Word
=>	R0 =	14
	R1 =	pointer to 5-byte block containing :
	 	 	0 = 3

<=	R1 =	pointer to block containing :
		 	0 = LSB of time
		 	1
		 	2
		 	3
		 	4 = MSB of time

This OS_Word reads the time from the CMOS clock as a standard RISC OS 5 byte time block (centiseconds from 1900/01/01 00:00:00). On RISC OS 2 the clock is assumed to be set to local time, later RISC OS assumes UTC.
DATA.OS_Word 15
#Parent OS_Word
=>	R0 =	15
	R1 =	pointer to parameter block
	R1+0 = reason code :
	  8 :	<Write CMOS clock and soft-copy time from string=>OS_Word15,8>
	  15 :	<Write CMOS clock and soft-copy date from string=>OS_Word15,15>
	  24 :	<Write CMOS clock and soft-copy time and date from string=>OS_Word15,24>

Nowhere does the PRM say how to determine the correct format of string to pass for the current territory. Presumably it is to be done by inspection from a time read with <OS_Word 14=>OS_Word14>.
# Well, that's easy to do generically
DATAgOS_Word 15,15
#Parent OS_Word
=>	R0 =	15
	R1 =	pointer to block containing :
	 	 	0 = 15
	 	 	1 = date string in local language

This OS_Word sets the date in the CMOS clock and its soft copy. The string format is territory dependant - for the UK (and RISC OS 2) it is of the form
#tab

#wrap off
  Day,DD MMM YYYY    {/}e.g.{/} Thu,21 Sep 1972
#wrap
DATA�OS_Word 15,24
#Parent OS_Word
=>	R0 =	24
	R1 =	pointer to block containing :
	 	 	0 = 15
	 	 	1 = date and time string in local language

This OS_Word sets the date in the CMOS clock and its soft copy. The string format is territory dependant - for the UK (and RISC OS 2) it is of the form
#tab

#wrap off
  Day,DD MMM YYYY.HH::MM::SS    {/}e.g.{/} Mon,17 Feb 1992.17:35:04
#wrap
DATA2OS_Word 15,8
#Parent OS_Word
=>	R0 =	15
	R1 =	pointer to block containing :
	 	 	0 = 8
	 	 	1 = time string in local language

This OS_Word sets the time of day in the CMOS clock and its soft copy. The string format is territory dependant - for the UK (and RISC OS 2) it is of the form

  HH:MM:SS
DATA�OS_Word 21
#Parent OS_Word
=>	R0 =	21
	R1 =	pointer to parameter block
	R1+0 = reason code :
	  0 :	<define pointer shape=>OS_Word21,0>
	  1 :	<define the mouse coordinate bounding box=>OS_Word21,1>
	  2 :	<set mouse multipliers=>OS_Word21,2>
	  3 :	<set mouse position=>OS_Word21,3>
	  4 :	<read unbuffered mouse position=>OS_Word21,4>
	  5 :	<set pointer position=>OS_Word21,5>
	  6 :	<read pointer position=>OS_Word21,6>
DATA�OS_Word 21,0
#Parent OS_Word
=>	R0 =	21
	R1 =	pointer to block containing :
		 	0 = 0
		 	1 = 1-4			shape number 
		 	2 = 0-8			/w/ - width in bytes
		 	3 = 0-32		/h/ - height in pixels
		 	4 = 0-({/}w{/}*4-1)	x active point (in pixels from left)
		 	5 = 0-({/}h{/}-1)	y active point (in pixels from top)
		 	6 = LSB of *pointer* to shape data
		 	7
		 	8
		 	9 = MSB of pointer

This OS_Word defines a pointer shape, which may be selected with <OS_Byte 106=>OS_Byte106>. Pointers are always defined in 2 bits per pixels, colour 0 is transparent. The shape data is given from top to bottom, with bits 0,1 in each byte giving the left most pixel. Mouse colours can be set with <VDU 19=>VDU:19>.
DATA�OS_Word 21,1
#Parent OS_Word
=>	R0 =	21
	R1 =	pointer to block containing :
		 	0 = 1
		 	1 = left	LSB
		 	2 =		MSB
		 	3 = bottom	LSB
		 	4 =		MSB
		 	5 = right	LSB
		 	6 =		MSB
		 	7 = top		LSB
		 	8 =		MSB

This OS_Word defines the mouse coordinate bounding box, relative to the graphics origin. It is ignored if (left > right) or (top > bottom).

left = bottom = &8000, right = top = &7FFF gives an infinite box.

If outside the box, the current mouse position is homed to the nearest point inside. When read all buffered coordinates are similarly moved within the box. The box is set to the size of the screen on mode changes.
DATAOS_Word 21,2
#Parent OS_Word
=>	R0 =	21
	R1 =	pointer to block containing :
		 	0 = 2
		 	1 = x multiplier
		 	2 = y multiplier

This OS_Word sets the mouse multipliers. The values given are *signed* 8 bit, and default to the configured MouseStep (<CMOS=>OS_Bytecmos> byte 194).
DATArOS_Word 21,3
#Parent OS_Word
=>	R0 =	21
	R1 =	pointer to block containing :
		 	0 = 3
		 	1 = x	LSB
		 	2 =	MSB
		 	3 = y	LSB
		 	4 =	MSB

This OS_Word sets the mouse position from the two *signed* 16 bit values. It is ignored if the position is outside the mouse bounding box. If the mouse and pointer are unlinked then the screen position will not be altered.
DATAOS_Word 21,4
#Parent OS_Word
=>	R0 =	21
	R1 =	pointer to block containing :
		 	0 = 4

<=	block updated :
		 	1 = x	LSB
		 	2 =	MSB
		 	3 = y	LSB
		 	4 =	MSB

This OS_Word reads the *unbuffered* mouse position, which may be significantly out of step with buffered values.
DATAOS_Word 21,5
#Parent OS_Word
=>	R0 =	21
	R1 =	pointer to block containing :
		 	0 = 5
		 	1 = x	LSB
		 	2 =	MSB
		 	3 = y	LSB
		 	4 =	MSB

This OS_Word sets the pointer (not mouse) position from the two *signed* 16 bit values. If the mouse and pointer are linked then the pointer position will be updated with the mouse position at next VSync interrupt.
# As a corrolary, if you find that the pointer no longer moves with the mouse, you know that you're shafted with interupts off, and are probably going to have to reset the machine
DATALOS_Word 21,6
#Parent OS_Word
=>	R0 =	21
	R1 =	pointer to block containing :
		 	0 = 6

<=	block updated :
		 	1 = x	LSB
		 	2 =	MSB
		 	3 = y	LSB
		 	4 =	MSB

This OS_Word reads the pointer position. If the mouse and pointer are linked then the pointer position will be updated with the mouse position each VSync interrupt.
DATA�OS_Word 3
#Parent OS_Word
=>	R0 =	3
	R1 =	pointer to five byte block

This SWI reads the interval timer. On exit, the buffer contains five byte interval timer, with LSB first.

The timer is incremented 100 times a second, and generates <event 5=>event_5> when it reaches 0. (You must enable the event with <OS_Byte 14=>OS_Byte014>). To generate repeating events you would have to reload the timer on each event. The timer is obsolecent - use <OS_CallAfter> or <OS_CallEvery> instead.
DATA�OS_Word 4
#Parent OS_Word
=>	R0 =	4
	R1 =	pointer to five byte block

This SWI sets the interval timer.

The timer is incremented 100 times a second, and generates <event 5=>event_5> when it reaches 0. (You must enable the event with <OS_Byte 14=>OS_Byte014>). To generate repeating events you would have to reload the timer on each event. The timer is obsolecent - use <OS_CallAfter> or <OS_CallEvery> instead.
DIR$��o	H���T�0p	H���Ai�I�p	H����Q�C�u	H�����Ndv	H���I$r*Shx	G���[����3EnvDATAOS_Write0  (&02)
#Parent OS_
=>	R0 =	pointer to null-terminated string
<=	R0 =	pointer to terminating zero

This SWI sends the string pointed to by R0 to all <active output streams=>OS_Byte003>. It nominally uses <OS_WriteC> to write each character.
DATA�OS_WriteI  (&100-&1FF)
#Parent OS_
This SWI writes the char contained in the bottom byte of the SWI, using <OS_WriteC>.
DATA�OS_WriteC  (&00)
#Parent OS_
=>	R0 =	character to write

This SWI sends the byte in R0 to all <active output streams=>OS_Byte003>. Do *not* assume that this SWI will never generate an error - it can and occasionally does.
# N> never say never :-)
# Gerph> ... again ?

Consider the case where output is redirected to a file on a filing system which has no space. This is the most common example.

A less common, but possible case is where an application displays a string in its exit handler. Under a <TaskWindow=>Wimp:TaskWindow_>, if you close the window before the task has exited, its exit handler is called. This should tidy up and exit. If it prints strings using non-X versions of the SWIs an error will be generated. This will call the Error handler. Which will either, a) display a message, or b) call the exit handler. In the former case, if X SWIs are used the exit h is usually called.

The outcome of this is that a TaskWindow can hog 99% of the processor time as it switches in and out of SVC mode incredibly quickly in an infinite sequence of errors. Avoid this by using X SWIs.
# Gerph> Fancy tarting that up and putting it sensibly in ChangeEnvironment
#        and the TaskWindow things ? Or a seperate page for all to refer to.
DATA�OS_WriteN  (&46)
#Parent OS_
=>	R0 =	pointer to string
	R1 =	number of bytes to write

This SWI sends the R1 bytes in R0 to all <active output streams=>OS_Byte003>. It nominally uses <OS_WriteC> to write each char.
DATAOS_WriteS  (&01)
#Parent OS_
This SWI writes the null terminated string following this SWI in memory using <OS_WriteC>. It uses the value in R14 to find the string, and updates R14 to point after string.
This SWI can not be conditionally executed [unless the string you wish to write out also happens to be valid ARM code for the condition failed case :-) ].
# Gerph> Ok, I'd like to see someone write a piece of code that actually did
#        something useful using a conditional OS_WriteS. Any takers ?
DATA�OS_WriteEnv (&48)
#Parent OS_
=>	R0 =	pointer to environment string
	R1 =	pointer to real time the program was started (5 bytes)

<=	R0, R1 preserved

This SWI is used to set the environment string as read by <OS_GetEnv>.
DATAQOS_FindMemMapEntries  (&60)
#Parent OS_
=>	R0 =	pointer to <request block=>OS_memmaprequest>, terminated with -1
<=	block at R0 updated

This SWI returns the logical address to which the requested page numbers are mapped, ie address -> page.

On entry, the logical address field must be set. You may supply probable page numbers, which, if correct will make this call return more quickly than it might otherwise. If you have no idea what the page number might be, you should set the page number to zero on entry. The protection value is ignored on entry. If the page number is -1 on exit, then the memory map entry was not found; in this case, the protection level willl always be 3. Otherwise the request list has been updated with the page number and protection level for the given logical address.

The converse is <OS_ReadMemMapEntries>.DATAtMemory map requester block
offset	contents
#Line
0	page number
4	base address of mapping
8	<access to page=>.access>
...	repeated ?
#Subpage access
Page access
Value	Meaning
#Line
0	Read/Write
1	Read only
2	Inaccessible in user mode
3	Mapped out
10	Not bufferable ?
20	Not cacheable ?
40	Doubly mapped ?
80	No user drag (for dynamic areas)
100	Needs given pages ?
DATAcOS_SetMemMapEntries  (&53)
#Parent OS_
=>	R0 =	pointer to <request block=>OS_memmaprequest>
<=	block at R0 updated

This SWI sets the logical to physical mapping of the memory pages.

If you are using this call, then you can only use <OS_ChangeDynamicArea> if the kernel's limits are maintained, and all appropriate areas contain continous memory.DATA7OS_CallAfter  (&3B)
#Parent OS_
=>	R0 =	delay in cs
	R1 =	pointer to address to call
	R2 =	value of R12 to be called with

<=	R0-R2 preserved
                 
Sets a CallBack routine to be triggered after a specified delay. See <OS_AddCallBack> for more details. To remove, use <OS_RemoveTickerEvent>.
DATA�OS_RemoveCallBack  (&5F)
#Parent OS_
=>	R0 =	pointer to code called
	R1 =	value of R12 called with

Removes a call back event, such as <OS_CallBack>.
DATA�OS_RemoveTickerEvent  (&3D)
#Parent OS_
=>	R0 =	code called
	R1 =	value of R12 called with

Removes a ticker timer event, such as <OS_CallEvery> or <OS_CallAfter>.
DATANOS_CallEvery  (&3C)
#Parent OS_
=>	R0 =	time to call in cs
	R1 =	pointer to address to call
	R2 =	value of R12 to be called with

<=	R0,R1 preserved
                 
Sets a CallBack routine to be triggered every time a specified delay has elapsed. See <OS_AddCallBack> for more details. To remove use <OS_RemoveTickerEvent>.
DIR$��؄	G���Lحͦ!Root��	H���l��)�0�	G���Z��
Handler(�	G�������[Handler0��	G��� �ͦhandler1,�	G����/�͉Handler2��	G����)��Handler3̗	G����ҭ��1��	H������2X�	G���ŭ̀3؞	G����8���4��	H�����d3FlagsDATA�OS_DynamicArea  (&66)
#Parent OS_
=>	R0 =	reason code
<=	R0 preserved

Performs operations on user dynamic areas (RISC OS 3.5+).

#Tab
Code	Action
#Line
0	<Creates a new dynamic area=>OS_DynamicArea0>
1	<Removes a previously created dynamic area=>OS_DynamicArea1>
2	<Returns information on a dynamic area=>OS_DynamicArea2>
3	<Enumerates dynamic areas=>OS_DynamicArea3>
4	<Renumbers dynamic areas=>OS_DynamicArea4>
DATA�OS_DynamicArea 0  (&66)
#Parent OS_DynamicArea
=>	R0 =	0
	R1 =	-1 (or new area number 128-255; reserved for Acorn)
	R2 =	initial size of area, in bytes
	R3 =	-1 (or base of area; reserved for Acorn)
	R4 =	<area flags=>OS_DynamicAreaFlags>
	R5 =	maximum size of area, in bytes (-1 for unlimited)
	R6 =	<handler routine=>OS_DynamicAreaHandler>, or 0 for none
	R7 =	pointer to workspace for handler, or -1 for base of area
	R8 =	pointer to name of area
	
<=	R0, R2, R4, R6-R8 = preserved
	R1 =	allocated area number
	R3 =	base of area
	R5 =	maximum size of area

This call creates a new dynamic area. Area numbers allocated are greater than or equal to 256.
DATA
Dynamic area handler code
#Parent OS_DynamicArea
=>	R0 =	reason
	R12 =	workspace pointer passed to <OS_DynamicArea 0=>OS_DynamicArea0>

Dynamic handler code controls what happens to a dynamic area as it is modified by the system.

#Tab
Reason	Meaning
#Line
0	<PreGrow - the area is about to grow=>OS_DynamicAreaHandler0>
1	<PostGrow - the area has just grown=>OS_DynamicAreaHandler1>
2	<PreShrink - the area is about to shrink=>OS_DynamicAreaHandler2>
3	<PostShrink - the area has just shrunk=>OS_DynamicAreaHandler3>DATA[Dynamic area PreGrow
#Parent OS_DynamicAreaHandler
=>	R0 =	0
	R1 =	pointer to page block
	R2 =	number of entries in the block
	R3 =	amount the area is growing by
	R4 =	current size of area, in bytes
	R5 =	page size, in bytes
	R12 =	workspace pointer passed to <OS_DynamicArea 0=>OS_DynamicArea0> or base of area.

<=	all preserved, unless grow is disallowed

This handler is called when a call to <OS_ChangeDynamicArea> results in an area growing, before any pages are actually moved. It is issued just before the pages themselves are allocated to the block.

You can request that specific pages be used for growing the area by filling in their page numbers in the page block. If you do so, you must specify all the pages. The first entry in the page block corresponds to the lowest memory address of the extension, and the last entry in the page block the highest memory address.

You can prevent the area changing size by returning an error. R0 should point to a standard <error block=>swi_errorblock>, or be set to zero for a generic error message to be used. You should then return with the V flag set.
DATA�Dynamic area PostGrow
#Parent OS_DynamicAreaHandler
=>	R0	=	1
	R1	=	pointer to page block
	R2	=	number of entries in the block
	R3	=	amount the area grew by
	R4	=	new size of area, in bytes
	R5	=	page size, in bytes
	R12	=	workspace pointer passed to <OS_DynamicArea 0=>OS_DynamicArea0> or base of area.

<=	all preserved, unless grow is disallowed

This reason code is issued when a call to <OS_ChangeDynamicArea> results in an area growing, it is called after the <PreGrow=>OS_DynamicAreaHandler1> reason code has been used successfully and the memory pages have been moved.  It provides the handler with a list of which physical pages have been moved into the area. 
DATA�Dynamic area PreShrink
#Parent OS_DynamicAreaHandler
=>	R0 =	2
	R3 =	amount the area is shrinking by
	R4 =	new size of area, in bytes
	R5 =	page size, in bytes
	R12 =	workspace pointer passed to <OS_DynamicArea 0=>OS_DynamicArea0> or base of area.

<=	R3 =	amount area can shrink by
	all others preserved, unless grow is disallowed

This reason code is issued when a call to <OS_ChangeDynamicArea> results in an area shrinking, before any pages are moved. You can limit the amount of memory moved out of the area. If the permitted skrinkage you return is a non-page multiple, it will be rounded down to a page multiple.
	
You can prevent the area changing size by returning and error. R0 should point to a null terminated error message, or be set to zero for a generic error message to be used. R3 should be zero, to show that no shrinkage is possible. You should then return with the V flag set.
DATADynamic area PreShrink
#Parent OS_DynamicAreaHandler
=>	R0 =	3
	R3 =	amount the area shrunk by
	R4 =	new size of area, in bytes
	R5 =	page size, in bytes
	R12 =	workspace pointer passed to <OS_DynamicArea 0=>OS_DynamicArea0> or base of area.

<=	all preserved, unless grow is disallowed

This reason code is issued when a call to OS_ChangeDynamicArea results in an area shrinking.  It is called after the <PreShrink=>OS_DynamicAreaHandler2> reason code has been issued successfully even if the memory pages cannot be moved.
DATA�OS_DynamicArea 1  (&66)
#Parent OS_DynamicArea
=>	R0 =	1
	R1 =	area number
<=	all preserved

This call removes a previously created dynamic area. Before the area is removed, RISC OS attempts to shrink it to zero size.  This is done using <OS_ChangeDynamicArea>. 

If OS_ChangeDynamicArea returns an error, then the area will be grown back to its original size using OS_ChangeDynamicArea, and this call will return with an error.
If <OS_ChangeDynamicArea> successfully reduced the area to zero size, then it will be removed.

Once the area has been removed Service_DynamicAreaRemove is issued to inform the rest of the system about this change.

An error is returned if the area was not removed for any reason.
DATA�OS_DynamicArea 2  (&66)
#Parent OS_DynamicArea
=>	R0 =	2
	R1 =	area number
	
<=	R0, R1 preserved
	R2 =	current size of area, in bytes
	R3 =	base logical address of area
	R4 =	<area flags=>OS_DynamicAreaFlags>
	R5 =	maximum size of area, in bytes
	R6 =	pointer to <dynamic area handler=>OS_DynamicAreaHandler>, or 0 if no routine
	R7 =	pointer to workspace for handler
	R8 =	pointer to name of area

This call returns information on a dynamic area.

For doubly-mapped areas, R3 on exit from this call returns the address of the boundary between the first and second copies of the area, whereas <OS_ReadDynamicArea> returns the start address of the first copy (for backwards compatibility).
DATA�OS_DynamicArea 3  (&66)
#Parent OS_DynamicArea
=>	R0 =	3
	R1 =	area number, -1 to start
	
<=	R1 =	next area number

This call enumerates dynamic areas.  This allows an application to find out what dynamic areas are defined. -1 is passed on entry to start the enumeration; the call is then repear until -1 is returned on exit, which indicates the the enumeration has finished.
DATA�OS_DynamicArea 4  (&66)
#Parent OS_DynamicArea
=>	R0 =	4
	R1 =	old area number
	R2 =	new area number
	
<=	all preserved

This call renumbers dynamic areas. and is intended for system use only.

Once the area has been renumbered Service_DynamicAreaRenumber is issued to inform the rest of the system about this change.

An error is returned if the area specified by the old area number does not exist, or if the new number clashes with an existing area.
DATAdDynamic area flags
Bit(s)	Meaning
#Line
0 - 3	access privileges to be given to each page in the area (same format as for <OS_ReadMemMapEntries>/<OS_SetMemMapEntries>)
4	Set if area is not bufferable by chips
5	Set if area is not cacheable by chips
6	If set, area is doubly mapped (reserved), otherwise area is singly mapped
7	0 => area may be dragged by the user in Task Manager window (has red bar)
	1 => area may not be dragged by the user in Task Manager window (has green bar)
8	0 => area does not require specific physical pages (ie R1 is undefined on entry to the <PreGrow=>OS_DynamicAreaHandler0> and <PostGrow=>OS_DynamicAreaHandler1> handlers)
	1 => area may require specific physical pages (ie R1 points at a page block on entry to the <PreGrow=>OS_DynamicAreaHandler0> and <PostGrow=>OS_DynamicAreaHandler1> handlers)
9 - 31	reserved (must be zero)
DATAuOS_AddToVector  (&47)
#Parent OS_
Does the same as <OS_Claim> does, but doesn't remove the earlier instances.DATA*OS_BreakCtrl  (&18)
#Parent OS_
=>	R0 =	address of the register save block, 0 to read
	R1 =	address of the control routine, 0 to read

<=	R0 =	address of previous register save block
	R1 =	address of previous control routine
	V is always clear

This sets up the address of the BreakPoint handler and the register save block, zero for either value meaning no change - hence you can read the current value. This call is obsolete, <OS_ChangeEnvironment> provides the same, in fact OS_BreakCtrl calls this and should therefore be used in preference.
DATA�OS_BreakPt (&17)
#Parent OS_
When this is executed, all user mode registers are saved into a block and the <BreakPoint handler=>OS_handlers_breakpoint> is called. The saved registers are only guaranteed to be correct for user mode. The default handler displays the message 'Break point at &xxxxx' and calls <OS_Exit>. This SWI would be placed in code by the debugger at required breakpoints.

The handler can be changed with <OS_ChangeEnvironment>.
DATA�OS_CallAVector  (&34)
#Parent OS_
=>	R0-R8 =	vector routine parameters
	R9 =	<vector number=>vector_index>
	V and C flag are passed on to the vector

<=	dependent on vector called

This calls the vector given in R9. This is used for calling vectored routines which don't have any other entry point such as some calls to <RemV=>vector_remv> or <CnpV=>vector_CnpV>. Don't use this to call ByteV or some others, as the vector handler expects entry conditions you may not provide.
DATANOS_CallBack  (&15)
#Parent OS_
=>	R0 =	address of the register save block, 0 to read
	R1 =	address of the callback handler, 0 to read

<=	R0 =	address of previous register save block
	R1 =	address of previous callback handler

This sets up the address of the CallBack handler and the register save block, zero for either value meaning no change - hence you can read the current value. This call is obsolete, <OS_ChangeEnvironment> provides the same, in fact OS_CallBack calls this and should therefore be used in preference. For informations on callbacks refer to <OS_AddCallBack>.
DATA�OS_ChangedBox  (&5A)
#Parent OS_
=>	R0 =	0	disable changed box calculations
	 	1	enable changed box calculations
	 	2	reset changed box to null rectangle
	 	-1	read changed box information

<=	R0 =	previous enable state in bit 0
	R1 =	pointer to a fixed block of 5 words:
	 	0 new disable/enable flag
	 	4 x-coordinate of left edge of box
	 	8 y-coordinate of bottom edge of box
	 	12 x-coordinate of right edge of box
	 	16 y-coordinate of top edge of box

4-16 are only valid if the change box calculations were in an enabled state immediately after the call; otherwise they are undefined.

This call checks, which areas of the screen were changed by VDU commands and returns the smallest rectangle which covers all changed pixels.DATAEOS_ChangeRedirection  (&5E)
#Parent OS_
=>	R0 =	new file handle for input
	 	0 = not redirected
	 	-1 = read
	R1 =	new file handle for output
	 	0 = not redirected
	 	-1 = read

<=	R0 =	old file handle for input (or 0 for standard input)
	R1 =	old file handle for output (or 0 for standard output)

This reads or writes the file handles used by <OS_CLI> to redirect in/output. It is mainly provided for the use of the TaskManager, but you may also find the call useful. Calling <OS_Exit> automaticly removes any redirection (and closes the associated file handles) before control passes to the <exit handler=>OS_handlers_exit>.
# N> Bah.
# Gerph> Yes, I noticed that whilst writing squiggly pipes.
#        It means that you can't usefully have two programs called with
#        redirection and makes the feature almost useless.
DATA�OS_CheckModeValid  (&3F)
#Parent !Root
=>	R0 =	<mode number=>VDU:22a> to check

<=	if C flag unset mode is valid and R0 preserved
	if C flag set the mode is invalid
	R0 =	-1 if mode is non-existent
	 	-2 if not enough memory
	R1 =	mode that would be used
	 	-2 if unable to select alternative mode

This finds out, whether you may change to a given mode or its invalid, either because the monitor type forbids it, R1 then is the alternative mode, or there's not enough memory in this case R1 = -2.DATA�OS_ClaimDeviceVector  (&4B)
#Parent OS_
=>	R0 =	<device number=>OS_systemdevices>
	R1 =	address of device driver routine
	R2 =	value to be passed in R12 when driver is called
	R3 =	address of interrupt status if R0 = 8 or 13 on entry
	R4 =	interrupt mask to use, if R0 = 8 or 13 on entry

<=	R0-R4 preserved

This installs the device driver. If the same driver has already been installed on the vector then the old copy is removed from the vector. This does *not* enable interrupts from the device. The previous driver is added to the list of earlier claimants. Your driver is called if the IOC chip receives an interrupt from the appropriate device, the corresponding IOC interrupt mask bit is set, and your driver was the last to claim the vector.

When your code is being called, you'll find the following entry conditions:
#Indent 2
#Tab
�	the ARM is in IRQ mode and interrupts are disabled
�	R3 points to the base of the IOC chip memory space
�	R12 has R2's value when claiming the vector
#Indent

Your routine should:
#Indent 2
�	service the interrupt
�	stop the device from generating interrupts, when necessary
�	return to kernel using '{fCode}MOV PC, R14{f}'
#Indent

You should ensure: 
#Indent 2
�	a very high execution speed
�	if your routine takes more than 100�s, you should re-enable interrupts, if previously disabled, to ensure other devices' interrupts can be serviced - {/}e.g.{/} disc ops. With interrupts enabled your routine must cope with being re-entered.
�	saving R14_svc to a stack before calling SWIs and reloading it after it returns to prevent double use of R14_svc
�	strictly avoiding the use of non re-entrant SWIs, because the supervisor stack would become corrupted if used
�	clearing the interrupt flags when finishing
�	you cope with SWI-error handling. You *must* use XSWIs. As there is no-one to pass the error on to, you must either handle it yourself or store an error indicator, so that the next SWI call (or the current, if already threaded) to this module will generate an error.
DATA7System Devices
#Parent OS_ClaimDeviceVector
All machines after the A3000 have these system device numbers:
Number	Device
#Line
0	Printer interrupt from 82C710/1
1	Low battery warning
2	Floppy disc indexer
3	VSync Pulse
4	Power on reset
5	IOC Timer 0
6	IOC Timer 1
7	FIQ downgrade - reserved for the current owner of FIQ
8	Expansion card FIQ downgrade; this should normally be masked off
9	Sound system buffer change
10	Serial port interrupt from 82C710/1 also mapped to FIQ device 4
11	IDE hard disc interrupt
12	Floppy disc interrupt from 82C710/1
13	Expansion card interrupt
14	Keyboard serial transmit register empty
15	Keyboard serial receive register full

For A3000 and earlier the functionality of each number is equivalent, but with ST506 in place of IDE and separate hardware instead of the 82C710/1 chip.
DATA~OS_CLI  (&05)
#Parent OS_
=>	R0 =	pointer to string terminated by Null, Linefeed or Return
<=	R0 preserved

This executes a string passed to it as if it has been typed in the CLI. When it is called, it performs the following actions:
#Tab;Indent 2
�	it checks the stack space, if there's not enough free memory to establish the stack the error 'No room for supervisor stack' is returned.
�	it checks the command line length. A CLI-command has to be less than 257 bytes long, including the terminator. If it's longer, the call is ignored without returning an error.
�	it then executes the command as any other *Command typed in CLIDATABOS_Control  (&0F)
#Parent OS_
=>	R0 =	address of error handler, or 0 to read
	R1 =	pointer to buffer for the error handler, or 0 to read
	R2 =	address of escape state change handler, or 0 to read
	R3 =	address of event handler, or 0 to read       
   
<=	R0 =	previous error handler address
	R1 =	previous buffer address
	R2 =	previous escape routine address
	R3 =	previous event handler address

This sets some of the exception handlers, but is obsolete and shouldn't be used in newer programs, because <OS_ChangeEnvironment> does the same, in fact OS_Control uses it.
DATA�OS_DelinkApplication  (&4D)
#Parent OS_
=>	R0 =	pointer to buffer
	R1 =	buffer size in bytes

<=	R0 preserved
	R1 =	number of bytes left in buffer

When an application running at &8000 is going to be swapped out, it must remove all vectors that it uses. Otherwise, if kernel tried to call the vector it would jump into whatever happened to be at this memory address in whatever application was running at the time, probably with disastrous results.

The buffer is used to store details of the vectors used, so they can be restored afterwards with <OS_RelinkApplication>. Each vector requires 12 bytes of storage and the list is terminated by a single byte. If the space left is 0, you are to allocate another buffer and repeat the call; the first buffer is still valid, only the vectors which didn't fit into it are placed into the second buffer. When relinking you must pass all buffers used by this call.
DATA�OS_GenerateError  (&2B)
#Parent OS_
=>	R0 =	pointer to <error block=>swi_errorblock>
<=	only returns (with V flag on) if X was set

This generates an error and invokes the error handler. The X form may appear to be completely useless as it is effectively

=>	no parameters passed in registers
<=	all registers preserved
	V flag set

however, it has at least 2 uses

1	0 terminated string conversion in BASIC
2	detecting whether <OS_CallASWI> is available
DATAKOS_InstallKeyHandler  (&3E)
#Parent OS_
=>	R0 =	0	read address of current keyboard handler
	 	1	read keyboard ID from keyboard (1 for UK)
	 	>1	set address of new keyboard handler

<=	R0 =	address of new/old keyboard handler, or <keyboard ID=>OS_keyboardid>

This installs the keyboard handler to replace the default code.
DATA�OS_IntOff  (&14)
#Parent OS_
This call disables interrupts and returns to caller with processor mode and registers unchanged. It does this be switching the corresponding bits in the <PSR=>Assembly:PC> off.
DATA�OS_IntOn  (&13)
#Parent OS_
This call enables interrupts and returns to caller with processor mode and registers unchanged. It does this be switching the corresponding bits in the <PSR=>Assembly:PC> on.DATA�Mouse Buttons
Bit	Meaning
#Line;Wrap Off
0	Right button down (Adjust)
1	Middle button down (Menu)
2	Left button down (Select)
DATA�OS_NewLine  (&03)
#Parent OS_
This sends a line feed followed by a carriage return to all <active output streams=>OS_Byte003>.
DATA1OS_PrintChar  (&5D)
#Parent OS_
=>	R0 =	character to print
<=	R0 preserved

This call sends a character to the printer. <OS_Byte 3=>OS_Byte003> and <5=>OS_Byte005> control whether there is a printer selected and which device it is. Note that the printer ignore character is not used by this call.
DATA�OS_ReleaseDeviceVector  (&4C)
#Parent OS_
=>	R0 =	<device number=>OS_systemdevices>
	R1 =	address of device driver routine
	R2 =	value to be passed in R12 when driver is called
	R3 =	address of interrupt status if R0 = 8 or 13 on entry
	R4 =	interrupt mask to use, if R0 = 8 or 13 on entry

<=	R0-R4 preserved

This removes a driver from the list of claimants of a device vector. The device vector is identified by the contents of the register on entry; R0-R2 (R0-R4 if R0 = 8 or 13 on entry) must be the same as when the vector was claimed.

The previous vector owner is re-installed at the head of the chain. If there is no previous owner, then the IRQs from the corresponding device are disabled.

You must not attempt to disable a device's IRQs within IOC when you release its vector. For expansion card IRQs, you should prevent your device from interrupting again by programming the hardware on your expansion card.
DATAOS_RelinkApplication  (&4E)
#Parent OS_
=>	R0 =	pointer to buffer
<=	R0 preserved

When an application is going to be swapped in, all vectors that it uses must be restored. R0 points to a buffer, which has previously been created using <OS_DelinkApplication>.DATA7OS_RemoveCursors  (&36)
#Parent OS_
This call removes the cursors (output and copy, if active) from the screen, saving the old state on an internal stack for further recovering. This call must be balanced by calling <OS_RestoreCursors> later however, the <exit handler=>OS_handlers_exit> provides this.
DATA�OS_RestoreCursors  (&37)
#Parent OS_
This restores the cursor state previously saved on the internal stack using <OS_RemoveCursors>.DATA�OS_SetCallBack  (&1B)
#Parent OS_
This sets the callback flag and so causes entry to the <callback handler=>OS_handlers_callback> when the system next exits to user mode code with interrupts enabled (apart, of course, from the exit from this SWI). This SWI may be used if the code linked into the the system (via vector or as a SWI handler, etc) is required to do things on exit from the system. The callback handler is set with <OS_ChangeEnvironment>, and is distinct from transient callbacks set with <OS_AddCallBack>.
# are you sure that the callback wont happen when this SWI exits if the supervisor stack is empty and the processor is returning to USR mode?
# <FX> - checks PRM
# Hmm. it's what the PRM says.
# I don't believe the PRM
DATAOS_SetEnv  (&12)
#Parent OS_
=>	R0 =	address of the handler for <OS_Exit>, 0 to read
	R1 =	address of the memory limit for <OS_GetEnv>, 0 to read
	R4 =	address for undefined instructions, 0 to read
	R5 =	address for prefetch abort, 0 to read
	R6 =	address for handler for data abort, 0 to read
	R7 =	address for handler for address exceptions, 0 to read

<=	The used registers contain the previous handlers.

This sets several handlers, better use <OS_ChangeEnvironment>, because this call is obsolete and uses this newer version.DATA�OS_SetColour  (&61)
#Parent OS_
=>	R0 =	<flag word=>.flags>
	R1 =	pointer to ECF pattern if R0's bit 5 = 1
	 	colour number if R0's bit 5 = 0

This call sets the fore and backgound text colour. Depending on R0's bits 0-3, this colour on the screen is changed.
#Subpage flags
Bit(s)	Meaning
0-3	<Graphic plot action=>os_setcolouractions>
4	Set:	alter background colour
	Clear:	alter foreground colour
5	Set:	R1 is pointer to ECF pattern
	Clr:	R1 is colour number
6-31	reserved, must be zero
DATA�Graphic plotting actions
Bits 0-3	Action
#Line
0		Replace colour on screen
1		OR the colour on screen
2		AND the colour on screen
3		EOR the colour on screen
4		NOT the colour on screen
5		Leave colour on screen
6		BIC the colour on screen
7		OR NOT colour on screen

If bit 3 is set, ie the range from 8 to 15, the lower bits mean the same, but background colour is transparent.DATA�OS_SubstituteArgs  (&43)
#Parent OS_
=>	R0 =	pointer to argument list, and flag in top bit
	R1 =	pointer to buffer for resulting string
	R2 =	length of buffer
	R3 =	pointer to template string
	R4 =	length of template string

<=	R0,R1 preserved
	R2 =	length of result string (incl. terminator)
	R3,R4 preserved

This call performs the hard work involved in substituting a list of arguments into a 'template' string. Its main use is in the processing of command Alias$... variables by the system. It's also useful in other situations, it has been made available to users. For example, FileSwitch uses it in the processing of Alias$LoadType_TTT variables.

The argument list is a string consisting of space seperated items which will be substituted into the template string. Spaces within double quotation marks are not counted as argument seperators. Typically, the argument string will just be the tail of a *Command. It's control character terminated. The result of substituting the arguments into the template string is placed in the buffer. The length of the buffer is given so that the call can check for buffer overflow. The template string is copied into the result buffer char for char. However, when a '%' appears in the template string (even within quotation marks), it marks where an argument should be placed into the output buffer. The '%' is followed by a single digit from 0 - 9. %0 stands for the first argument in the argument list and so on. %% means a single %. Anything else following the '%' is not treated specially, ie both the % and the character are copied over. The template string doesn't have a terminator, instead its length is given. At the end of substitution, any arguments after the highest one mentioned in the template string are appended to the result string. To prevent this set the top bit of R0 on entry. If a non-existing argument is specified in the template string, then a null string is substituted, no error is given.DATA(OS_UnusedSWI  (&19)
#Parent OS_
=>	R0 =	address of the unused SWI handler; or 0 to read
<=	R0 =	address of the previous UnusedSWI handler

This sets up the address of the UnusedSWI handler, but it's obsolete and only kept for backwards compatibility so use <OS_ChangeEnvironment> instead.DATA�Scale factors
#Wrap off
Offset	Contents
#Line
0	x multiplication factor
4	y multiplication factor
8	x division factor
12	y division factorDATASOS_ClaimProcessorVector  (&69) (3.5)
#Parent OS_
{*}On claim :{*}
=>	R0 =	<Vector number=>.vectors> + 256
	R1 =	Address of replacement routine
<=	R1 =	Address of original routine

{*}On release :{*}
=>	R0 =	<Vector number=>.vectors>
	R1 =	Address of original routine
	R2 =	Address of our routine (??)

This call is used to allow low-level code to claim the ARM's hardware vectors which are called when interrupts and aborts occur.
#
#Subpage vectors
RO3.5 processor vectors
\#	Vector
#line
0	Branch through zero
1	Undefined instruction
2	SWI executed
3	Prefetch abort
4	Data abort
6	IRQ
DATA�OS_Reset  (&6A) (3.5)
#Parent OS_
This SWI does the equivalent of pressing the Reset button. Use with {*}extreme{*} caution.
DIR$PP��	H�������!Root��	F����i�@0��	F���A��L
Status�	F�����i��1��	F���2g]��Format�	F���,j��2��	G���}��|�3
F����z��4
F����&j��5�
F���r/j��6D
F��� �]�SpeedsDATA�OS_SerialOp  (&57)
#Parent OS_
=>	R0 =	<reason code=>.reasons>
	other entry conditions depend on reason code

<=	R0 preserved
	other exit conditions depend on reason code

This call is like <OS_Byte> in that it is a single call with many operations within it. The operation required, or reason code, is passed in R0.
#Subpage reasons
OS_SerialOp reason codes
#Parent OS_
R0 =	<0 Read/write serial states=>OS_SerialOp0>
	<1 Read/write data format=>OS_SerialOp1>
	<2 Send break=>OS_SerialOp2>
	<3 Send byte=>OS_SerialOp3>
	<4 Get byte=>OS_SerialOp4>
	<5 Read/write receive baud rate=>OS_SerialOp5>
	<6 Read/write transmit baud rate=>OS_SerialOp6>
DATA@OS_SerialOp 0
=>	R0 =	0 (reason code)
	R1 =	EOR mask
	R2 =	AND mask

<=	R0 preserved
	R1 =	old value of state
	R2 =	new value of state

The structure of this call is very similar to that of OS_Byte's between &A6 and &FF the new state is determined by:
  <New State=>OS_SerialOpStatus> = (Old state AND R2) EOR R1DATAL
Serial status word
Bit	Type	Value	Meaning
#Line
0	R/W	0	No software control. Use RTS handshaking if bit 5 is clear
	 	1	Use XON/XOFF protocol. Bit 5 is ignored. The hardware will still do CTS handshaking (ie if CTS goes low, then transmission will stop), but RTS is forced to go low.
	 	
1	R/W	0	Use the ~DCD bit. If the ~DCD bit in the status register goes high, then cause a serial event, and do not enter the char into the buffer.
	 	1	Ignore the ~DCD bit. Note that some serial chips (GTE and CMD) have reception and transmission problems when this bit is 1
                 
2	R/W	0	Use the ~DSR bit. If the ~DSR bit in the status register is high, then do not transmit characters.
	 	1	Ignore the state of the ~DSR bit
                 
3	R/W	0	DTR on (normal operation)
	 	1	DTR off (on 6551 serial chips, cannot use serial port in this state)
                 
4	R/W	0	Use the ~CTS bit. If the ~CTS bit in the status register is high, then do not transmit characters.
	 	1	Ignore the ~CTS bit (not supported by the 6551 serial chips)

5	R/W	 	This bit is ignored, if bit 0 set:
	 	0	Use RTS handshaking.
	 	1	Do not use RTS handshaking.
                 
6	R/W	0	Input is suppressed.
	 	1	Input is not suppressed.
                 
7	R/W	 	Users should only modify this bit if RTS handshaking is not in use:
	 	0	RTS controlled by handshaking system (low if no RTS handshaking)
	 	1	RTS high
                 
8-15	RO	 	These bits are reserved for future expansions; do not modify them.

16	RO	0	XOFF not received.
	 	1	XOFF has been received. Transmission is stopped by this occurence.
                 
17	RO	0	The other end is intended to be in XON state.
	 	1	The other end is intended to be in XOFF state. When this bit is set, then it means that an XOFF character has been sent and it will be cleared when an XON is sent by the buffering software. Note that the fact that this bit is set doesn't imply that the other end has received an XOFF yet.
                 
18	RO	0	The ~DCD bit is low, ie carrier present.
	 	1	The ~DCD bit is high, ie no carrier.
                 
19	RO	0	The ~DSR bit is low, ie 'ready' state.
	 	1	The ~DSR bit is high, ie 'not ready' state.
                 
20	RO	0	The ring indicator bit is low.
	 	1	The ring indicator bit is high.
                 
21	RO	0	Do not send break.
	 	1	Send break.
                 
22	RO	0	User has not manually sent an XOFF.
	 	1	User has manually sent an XOFF.
                 
23	RO	0	Space in receive buffer above treshold.
	 	1	Space in receive buffer below treshold.

24-31	RO	 	These bits are reserved for future expansions; do not modify them.DATA�OS_SerialOp 1
=>	R0 =	1 (reason code)
	R1 =	-1 to read, or new <format=>OS_SerialOpFormat> value

<=	R0 preserved
	R1 =	old format value

This call sets the encoding of characters when sent and received on the serial line.DATA�Serial data transfer word
Bit	Access	Value	Meaning
#line
0,1	R/W	0	8 bit word
	 	1	7 bit word
	 	2	6 bit word
	 	3	5 bit word

2	R/W	0	1 stop bit
	 	1	2 stop bits in most cases.
	 	 	1 stop bit if 8 bit word with parity.
	 	 	1.5 stop bits if 5 bit word without parity

3	R/W	0	parity disabled.
	 	1	parity enabled.

4,5	R/W	0	odd  parity
	 	1	even parity
	 	2	parity always 1 on TX and ignored on RX
	 	3	parity always 0 on TX and ignored on RX

6-31	 	 	reserved must be set to zeroDATA�OS_SerialOp 2
=>	R0 =	2 (reason code)
	R1 =	length of break in centiseconds

<=	R0,R1 preserved

This call sets the ACIA to transmit a break, then waits R1 centiseconds before resetting it to normal. Any character being transmitted at the time the call is made may be garbled. After sending the break the transmit process is either awakened if the buffer is not empty, or made dormant if the buffer is empty.DATA�OS_SerialOp 3
=>	R0 =	3 (reason code)
	R1 =	character to be sent

<=	R0,R1 preserved
	C clear if character was sent, or set if character was not sent (ie the buffer was full)

This call puts a character in the serial output buffer, and re-enables the transmit interrupt if it had been disabled by RISC OS. If the serial output buffer is full, the call returns immediately with the C flag set.DATA�OS_SerialOp 4
=>	R0 =	4 (reason code)

<=	R0 preseved
	R1 =	character received (if C flag cleared), or preserved (if C flag set - ie no character available in buffer to read)

This call removes a character from the serial input buffer if one is present. If removing a character leaves the input buffer with more free space than are specified by OS_Byte 203, then the transmitting device is re-enabled in the way specified by the serial port state (as set by <OS_SerialOp 0=>OS_SerialOp0>).DATA�OS_SerialOp 5
=>	R0 =	5 (reason code)
	R1 =	-1 to read, or 0-15 to set to a <value=>OS_SerialOpSpeeds>

<=	R0 preserved
	R1 =	old receive baud rateDATA�OS_SerialOp 6
=>	R0 =	6 (reason code)
	R1 =	-1 to read, or 0-15 to set a <value=>OS_SerialOpSpeeds>

<=	R0 preserved
	R1 =	old transmit baud rateDATA�Baud rate codes
R1	Baud rate
#Line
0	9600 
1	75 
2	150 
3	300 
4	1200 
5	2400 
6	4800 
7	9600
8	19200
9	50
10	110
11	134.5
12	600
13	1800
14	3600
15	7200DIR$LL4
G���p��$Evectors|
H���$i�swivDATAEHardware vectors
Address	Contents
#Line
&00	Reset (produces 'Branch through zero')
&04	Undefined instruction
&08	<SWI=>os_hardware_swiv>
&0C	Prefetch abort
&10	Data abort
&14	Address exception
&18	Interrupt (IRQ)
&1C	Fast interrupt (FIQ)*

* {/}Note:{/} This consists of the actual code and not a branch instruction.
DATA�Hardware SWI vector
When a SWI instruction is decoded the processor will jump to this vector to find the code to process it. The processor mode is switched to SVC, and the address of the instruction causing the exception is in R14_svc.

When the SWI is processed it is entirely possible to drop back into user mode and execute code as if you are running the users program. Returning from such calls should be transparent to the system and you should NOT modify registers without good reason.

The default handler will check if the call belongs to the kernel and if so will branch through a table at &1F033FC. This table is not guaranteed to remain in this location, but due to the number of applications attaching themselves, it is unlikely to change.DIR$���
H����T��!root�

G����F��0x
G����F��18
G���7v^i2DATA�OS_ScreenMode (&65) (3.5)
#Parent OS_
=>	R0 =	<reason code=>.reasons>
	other registers dependant on call
	
This call is used to change or read the screen mode. See also <Wimp_SetMode=>Wimp:Wimp_SetMode>.
#
#Subpage reasons
ScreenMode reasons
Reason	Meaning
#Line;Wrap off
0	<Select screen mode=>OS_screenmode0>
1	<Return current screen mode=>OS_screenmode1>
2	<Enumerate screen modes=>OS_screenmode2>
3	(for internal use)
DATA�OS_ScreenMode 0 (&65) (3.5)
=>	R0 =	0
	R1 =	Old style mode number or a <mode specifier block=>Wimp:Wimp_ModeSelect>
	
This SWI will select a given screen mode, returning an error if the mode is invalid.DATA�OS_ScreenMode 1 (&65) (3.5)
=>	R0 =	1
<=	R1 =	Mode number or pointer to a <mode specifier block=>Wimp:Wimp_ModeSelect>
	
This SWI will return information about the current screen mode.DATAiOS_ScreenMode 2 (&65) (3.5)
=>	R0 =	2
	R2 =	value of R2 to pass to Service_EnumerateScreenModes
	R6 =	value of R6
	R7 =	value of R7


<=	R1 =	value of R1 returned by Service_EnumerateScreenModes
	R2 =	value of R2 returned
	R6 =	value of R6 returned
	R7 =	value of R7 returned

This SWI provides a front end to <Service_EnumerateScreenModes=>service_8D>.DATA�OS_ServiceCall  (&30)
#Parent OS_
=>	R1 =	<service number=>service_index>
	others dependant on service call number
<=	R1 =	0 if service was claimed

This SWI is used to call a module service.
DIR$HH�
H����{�#�!Root\
G����n�e�1DATA�OS_MMUControl  (&6B)
#Parent OS_
=>	R0 =	reason code and flags
		0	?
		1	<Cache flush request=>OS_MMUControl1>

This SWI controls the Memory Management Unit.
DATA�OS_MMUControl 1
#Parent OS_MMUControl
=>	R0 =	1 (cache flush request) + <flags=>.flags>
	R1 =	logical address (if bit 29 set)

This call is used to implement cache and TLB flushing.

Note: Only use this where it is unavoidable.
#
#Subpage flags
MMU Control 1 flags
Bit	Meaning if set
#Line
8-28	reserved (must be 0)
29	flush one entry (otherwise complete flush)
30	flush processor TLBs
31	flush processor caches

Note: bit 29 is currently ignored.DIR$HHl
H���R��!RootL
H����,��30DATA�OS_PlatformFeatures (&6D)
#Parent OS_
=>	R0 =	reason code, and reason dependant flags
	 	0	<Read code features=>OS_PlatformFeatures0>

This SWI is used to find out what features the executing platform has, if any.
DATA�OS_PlatformFeatures 0 (&6D)
#Parent OS_
=>	R0 =	0 (Read code features) + flags (reserved)
<=	R0 =	<flags=>.flags>
	R1 =	pointer to IRQ routine (if b1 set)

This reason is used to determine what is required to run code on the current platform.

StrongARM will return bits 0-4 set.
ARM 6 and 7 with return bits 0-4 clear.
Earlier machines will raise an error.
#
#Subpage flags
PlatformFeatures 0 flags
Bit	Meaning if set
#Line
0	You must tell the OS when a code area changes (<OS_SynchroniseCodeAreas>)
1	Enabling then disabling interrupts does not allow them a chance to occur
2	Hardware vectors are only readable in 32 bit mode
3	When storing PC, PC+8 is stored (not PC+12)
4	Data aborts occur with 'full early' timing
DATA�OS_SynchroniseCodeAreas (&6E)
#Parent OS_
=>	R0 =	<flags=>.flags>
	if b0 set :
	 R1 =	low address (word aligned)
	 R2 =	high address (word aligned, inclusive)

This SWI is used to ensure that the code cache is up to date with memory - this may not be the case with self-modifying code.

Note: Only use this where absolutely necessary.
#
#Subpage flags
SynchroniseCodeAreas flags
Bit	Meaning if set
#line
0	Synchronise only addresses in range (otherwise entire memory)
others	reserved
DATA�Depreciated calls
The following calls are depreciated in RISC OS 3.1 and higher :

#Prefix OS_
#Table Columns 5
<BreakCtrl>
<CallBack>
<Control>
<SetEnv>
<UnusedSWI>
#EndTable
DIR$,,�
H������Args3DATA�FSEntry_Args 3
#Parent FSEntry_Args
=>	R0 =	3 (Write file extent)
	R1 =	internal file handle returned by <FSEntry_Open>
	R2 =	new file extent

This call is made when FileSwitch needs to extend a file beyond its current length. For buffered files this is only called when the file is closed. On unbuffered files this is called whenever the user requests it.

On systems with no concept of extents (eg streams) this should *not* return an error.
DATA�Keyboard IDs
#Parent OS_InstallKeyHandler
ID	Keyboard Type
#Line
1	standard Archimedes keyboard
2	A4 internal keyboard, PC keyboard
DATA�Monitor types
#Parent Service_46
Value	Meaning
#Line
0	Standard
1	Multi-frequency
2	Hi-res mono
3	VGA
4	Super VGA
5	LCD
DATA�OS_CallASWI  (&6F)
#Parent OS_
=>	R0-R9 =	parameters for SWI
	R10 =	SWI to call
<=	R0-R9 as defined by SWI called
	R10 preserved

This calls the SWI given in R10. To call an X SWI set the X bit in R10 - there is no difference between OS_CallASWI and XOS_CallASWI.

As OS_CallASWI "corrupts" the processor flags you cannot usefully call <OS_BreakPt> or <OS_CallAVector>.

In an APCS-R program <OS_CallASWIR12> should be used instead.
DATA�OS_CallASWIR12  (&71)
#Parent OS_
=>	R0-R9 =	parameters for SWI
	R12 =	SWI to call
<=	R0-R9 as defined by SWI called
	R12 preserved

This calls the SWI given in R12. To call an X SWI set the X bit in R12 - there is no difference between OS_CallASWIR12 and XOS_CallASWIR12.

As OS_CallASWIR12 "corrupts" the processor flags you cannot usefully call <OS_BreakPt> or <OS_CallAVector>.
DATAOS_SpriteOp  (&2E)
#Parent OS_
=>	R0 =	<reason code=>os_spriteop_Reason>

This SWI controls the sprite system. R1 and R2 is often used to select a sprite. When they are, the following applies :

{f*}R0 bits{f;Tab}
8 & 9		R1				R2
#Line
00 (+  0)	 				sprite name
01 (+256)	<sprite area=>os_spriteop_Area>	sprite name
10 (+512)	<sprite area=>os_spriteop_Area>	<sprite ptr=>os_spriteop_ptr>

In the first case, the system sprite area is used. Do not use this.

This SWI is indirected via <SpriteV=>vector_index>.
DIR$���!
H�������!Root�$
H�����__breakpoint %
H������_appspace�%
H���|���_callback�'
H������&_cao�(
H���tS�O_error<*
H�����,�_escape<,
H�����_eventP-
H���ۼ�u_exit�-
H���خ��_hardware�.
H������j_limit/
H�������_registers�/
H���F���_ukswi�0
H���<��m_upcallDATA�System control handlers
#Parent OS_ChangeEnvironment
Number	Meaning
#Line
0	<Memory limit=>OS_handlers_limit>
1	<Undefined instruction=>OS_handlers_hardware>
2	<Prefetch abort=>OS_handlers_hardware>
3	<Data abort=>OS_handlers_hardware>
4	<Address exception=>OS_handlers_hardware>
5	Other exceptions (reserved)
6	<Error=>OS_handlers_error>
7	<Call back=>OS_handlers_callback>
8	<Break point=>OS_handlers_breakpoint>
9	<Escape=>OS_handlers_escape>
10	<Event=>OS_handlers_event>
11	<Exit=>OS_handlers_exit>
12	<Unused SWI=>OS_handlers_ukswi>
13	<Exception registers=>OS_handlers_registers>
14	<Application space=>OS_handlers_appspace>
15	<Currently active object=>OS_handlers_cao>
16	<Up Call=>OS_handlers_upcall>
DATA_BreakPoint handler
#Parent OS_handlers
This is called whenever <OS_BreakPt> is called.
DATA�Application space
#Parent OS_handlers
This is the amount of read/write memory in application space. Consequently it should always be the case that Application space >= Memory Limit.
DATA�Callback handler
#Parent OS_handlers
This is called whenever the CallBack flag is set, and the system exits to User mode with interupts enabled (not when the system is idling). The CallBack flag is set either explictly by <OS_SetCallBack>, or implicity by returning with R12=1 from the <escape=>.escape> or <event=>.event> handlers. The callback handler is entered in IRQ or SVC with interupts disabled, and *must not* allow a second CallBack before the first has completed.
DATA&Currently active object pointer
#Parent OS_handlers
# Service 11 links here
# OS_FSControl 2 links here
This is a pointer to the address of the last
�	application started
�	error handler called
�	exit handler called
which allows <OS_Module> to determine whether a module can be killed.
DATAOError handler
#Parent OS_handlers
This is called after an error is generated (by a non-X SWI, fatal hardware error, {/}etc.{/}), entered in user mode with the workspace in {*}R0{*} (not R12). The buffer contains:

Offset	Contents
#Line
0	PC when error occurred
4	<error number=>swi_errorblock>
8	error string (up to 252 bytes)
DATA�Escape handler
#Parent OS_handlers
This is called whenever an escape condition is detected and the <escape event=>event_6> is disabled (execept for calls to <OS_Byte 125=>OS_Byte125> which always call the handler). <OS_Byte 124=>OS_Byte124> and <126=>OS_Byte126> suggest that it is also called with R11 bit 6 clear to clear/acknowledge an escape condition.

=>	R11 =	bit 6 set (implies escape condition)
	R12 =	"workspace" - don't use the value 1
	R13 =	FD stack
<=	R12 =	1 sets <callback=>.callback>
DATAEvent handler
#Parent OS_handlers
This is called by the default owner of <EventV=>Vector_eventv>.

=>	R0 =	<Event number=>event_index>
	Other registers dependant on call
	R12 =	"workspace" - don't use the value 1
	R13 =	FD stack
<=	R12 =	1 sets <callback=>.callback>
DATAuExit handler
#Parent OS_handlers
This is called in USR mode whenever <OS_Exit> or <OS_ExitAndDie> is called.
DATA�Hardware vector handlers
#Parent OS_handlers
The Undefined instruction, Prefetch abort, Data abort and Address exception handlers are called whenever the ARM processor generates the respective hardware exceptions.
DATAjMemory limit
#Parent OS_handlers
This is the maximum permitted RAM limit, as used by <OS_GetEnv>.
DATA�Exception registers
#Parent OS_handlers
This is the address of the area in memory where the registers are dumped, when one of the exceptions occurs, if the default handlers are used.
DATA�Unused SWI handler
#Parent OS_handlers
This is called by the default owner of <UKSWIV=>Vector_ukswiv>.

=>	R11 =	SWI number (bit 17 clear)
<=	R10-R12 may be corrupted
DATAmUpcall handler
#Parent OS_handlers
This is called by the default owner of <UpCallV=>Vector_upcallv>.
DATA�	OS_PrettyPrint  (&44)
#Parent OS_
Write an indirected string with some formatting to all of the <active output streams=>OS_Byte003>.

=>	R0 =	pointer to null terminated string to write
	R1 =	pointer to dictionary (0 = <RISC OS dictionary=>.ROD>)
	R2 =	pointer to null terminated special string
<=	R0-R2 preserved

This call acts like <OS_Write0> with several differences:
#Indent 2
� several characters have special meanings to OS_PrettyPrint
� It will break a line at a space if the next word will not fit on the line, it will not do this at hard space
� Compacted text is handled
� CR causes a newline to be generated
� TAB causes a tabulation to the next multiple of eight chars
� ASCII 31 is a hard space
� ESC (ASCII 27) indicates that a dictionary entry should be substituted
#Indent

Compacted text uses an escape character in the print string to indicate a dictionary entry. It is followed immediately by a byte which is the dictionary entry number. If this byte is in the range 1-255, then the appropriate string in the dictionary is subsituted. If its 0, then the special string pointed to by R2 is subsituted. (This is used in particular by the *Help command.)

The format of an dictionary is a linear list of entries, which can recursively refer to other dictionary entries; each entry is a length byte followed by a 0 terminated string. This means, that a dictionary doesn't have to have 255 entries - it can be ended at a point with a zero length entry.
#Subpage ROD
RISC OS default dictionary
#Parent OS_PrettyPrint
Token	String
#Line
0	R2
1	"Syntax: *" + R2
2	" the "
3	"director"
4	"filing system"
5	"current"
6	" to a variable. Other types of values can be assigned with *"
7	"file"
8	"default"
9	"tion"
10	"*Configure"
11	"name"
12	" server"
13	"number"
14	"Syntax *" + R2 + " \<"
15	" one or more files that match the given wildcard"
16	" and "
17	"relocatable module"
18	CR + "C(onfirm)" + TAB + "prompt for conformation of each"
19	"sets the"
20	"Syntax: *" + R2 + " [\<disc spec.>]
21	")" + CR + "V(erbose)" + TAB + "print information on each file "
23	"spriteLandscape [\<XScale> [\<YScale> [\<Margin> [\<Treshold>]]]]"
24	" is used to print a hard copy of the screen on EPSON-"
25	"." + CR + "Options: (use ~ to force off, eg. ~"
26	"printe"
27	"Syntax: *" + R2 + " \<filename>"
28	"select"
29	"xpression"
30	"Syntax: *" + R2 + " ["
31	"sprite"
32	" displays"
33	"free space"
34	" (off)"
35	"library"
36	"parameter"
37	"object"
38	" all "
39	"disc"
40	" to "
41	" is "
DIR$���;
G�����uG!Root�;
F����c�Op�<
G�������Op1�=
G���<�͸Op0h?
G���h	�͞Op2A
G����v�HardwareAddressDATAGParallel
#Parent !Root
#Prefix Parallel_
<HardwareAddress>
<Op>DATAParallel_Op
#Parent Parallel_
=>	R0 = reason code

Performs direct operations to the parallel hardware.

#Tab
Reason	Meaning
#Line
0	<Read data and status registers=>Parallel_Op0>
1	<Write data registers=>Parallel_Op1>
2	<Read/write control register=>Parallel_Op2>
DATA�Parallel_Op 1
#Parent Parallel_
=>	R0 =	1
	R1 =	data to write
	
This SWI writes to the data register for output on the printer port. A copy of this data will be returned on the next <read=>Parallel_Op0>.DATA�Parallel_Op 0
#Parent Parallel
=>	R0 =	0
<=	R1 =	data register contents
	R2 =	<status register contents=>.bits>
	
This SWI reads the data and status registers taken from the printer port. The data register is eiter the current value on the port, or the last value written if output is enabled.
#Subpage bits
Status register bits
Bit	Meaning
#Line
0	reserved
1	reserved
2	reserved
3	Error
4	Select
5	Paper error
6	Acknowledge
7	Busy
DATA�Parallel_Op 2
#Parent Parallel
=>	R0 =	2
	R1 =	EOR mask
	R2 =	AND mask

<=	R1 =	old contents of register
	R2 =	new contents of register
	
This SWI writes or reads the the <control register=>.bits> sent to the printer port.

To read, use R1=0, R2=&FFFFFFFF.
#Subpage bits
Control register bits
Bit	Meaning
#Line
0	Strobe
1	Auto Feed
2	Init (Reset)
3	Select in
4	IRQ enable
5	Direction
6	reserved
7	reserved
DATA�Parallel_HardwareAddress  (&42EC0)
#Parent Parallel_
<=	R0 =	Address of parallel controller in memory map, or 0 if no hardware present (&30109E0 in most machines)
	R1 =	Address of routine to be called in SVC mode to do: Parallel control register = (Old value AND R1) EOR R0 or preserved if R0 was returned as 0.

This SWI reads the address which is used to control the parallel port in memory. This must be accessed in SVC mode.
DIR$���H
H�����c&/!Root�J
H���`��:printernumbersL
H����D�zPageSize�M
H��� ��=AbortJob�O
H���?��CancelJob�P
H���z4�CancelJobWithErrortQ
H�����CheckFeatures�S
H���e���CurrentJob0T
H����װ&�declaredriver�W
H����c&CDeclareFont8\
H����PDrawPageX`
H����\��EndJobb
H���s�&enumeratedrivers$d
H���>��EnumerateJobse
H�����c&�features�j
H���P
��FontSWI�k
H�����c&�GetRectangledm
H�����c&�GiveRectangle�q
H����)��Info�t
H���#1InsertIllustrationw
H�������MiscOp�y
H�����MiscOp0�|
H���l��MiscOp0flags8}
H����d&MiscOp1P�
H���":d&�MiscOp2�
H�����7MiscOp80000000@�
H���$�fMiscOp80000001��
H����X�qMiscOpForDriver�
H���QTd&�rectangleԌ
H���{��RemoveDriver��
H�������Resetd�
H����kd&7ScreenDump��
H������SelectDriverx�
H�����SelectIllustration��
H���́d&6SetDriverȗ
H�����GSetDriverblock�
H�����OSetInfo`�
H��� 2��SetPageSize�
H���M�SetPrinterܟ
H������SelectJobDATA/PDriver
#Parent !Root
#Prefix PDriver_
#Table Columns 2
 <AbortJob>
 <CancelJob>
 <CancelJobWithError>
 <CheckFeatures>
 <CurrentJob>
+<DeclareDriver>
+<DeclareFont>
 <DrawPage>
 <EndJob>
+<EnumerateDrivers>
 <EnumerateJobs>
 <FontSWI>
 <GetRectangle>
 <GiveRectangle>
 <Info>
 <InsertIllustration>
+JPEGSWI
+<MiscOp>
+<MiscOpForDriver>
 <PageSize>
+<RemoveDriver>
 <Reset>
 <ScreenDump>
+<SelectDriver>
 <SelectIllustration>
 <SelectJob>
+<SetDriver>
 <SetInfo>
 <SetPageSize>
 <SetPrinter>
#EndTable

<Printer driver numbers=>PDriver_printernumbers>DATA:Printer driver numbers
#Parent PDriver_
Number	Printer
#Line
0	PostScript
1	Epson FX80 (or compatible)
2	HP LaserJet  (or compatible)
3	Integrex ColourJet
4	FAX modem
5	Direct driver laser
6	Caspel graphics language
# What?
7	PDumper interface
99	Ace Computing Epson JX/Star LC10 driver or PaintJet driver
DATAzPDriver_PageSize  (&80143)
#Parent PDriver_
<=	R1 =	width of paper
	R2 =	height of paper
	R3 =	left edge of printable area
	R4 =	bottom edge of printable area
	R5 =	right edge of printable area
	R6 =	top edge of printable area

This SWI returns the paper size, and the printable area on the paper (measured from bottom left of the paper). All values are in millipoints.
DATA=PDriver_AbortJob  (&80149)
#Parent PDriver_
=>	R0 =	file handle of job

This SWI ends a print job abnormally, and will result in *no* further output ({/}e.g.{/} no PostScript trailer comments). It should be called immediately you recieve an error while printing, before you attempt to display the error message.

If the job in R0 is the currently active job then there will be no current print job after this call - hence plotting calls will no longer be intercepted. Otherwise there is no effect on the current job (if any) and the state of plotting interception.
DATA�PDriver_CancelJob  (&8014E)
#Parent PDriver_
=>	R0 =	file handle of job

This SWI will make any further attempt to output to the specified print job return the error "Print cancelled".
DATA�PDriver_CancelJobWithError  (&80152)
#Parent PDriver_
=>	R0 =	file handle of job
	R1 =	poiner to <error block=>swi_errorblock>

This SWI will make any further attempt to output to the specified print job return the specifed error.
DATAPDriver_CheckFeatures  (&80142)
#Parent PDriver_
=>	R0 =	mask for <features word=>PDriver_features>
	R1 =	value for <features word=>PDriver_features>
<=	R0, R1 preserved

This SWI checks the capabilities of the printer. If (R0 AND features word) = (R0 AND R1) then the SWI returns immediately. Otherwise an error is generated *if* the printer does not support the requested features (so *no* error is generated if you request only axis preserving rotations, and the driver can actually perform arbitary rotations).
DATA�PDriver_CurrentJob  (&80146)
#Parent PDriver_
<=	R0 =	file handle of current job (or 0 if no current job)

This SWI returns the file handle of the current print job.
DATA�PDriver_DeclareDriver  (&80156)
#Parent PDriver_
=>	R0 =	pointer to driver's <reason code handler=>.handler>
	R1 =	pointer to driver's private word
	R2 =	<printer driver number=>PDriver_printernumbers>

This SWI registers a printer driver with the PDriver sharer module, and should be made by the driver when it starts, or when it receives <Service_PDriverStarting=>Service_65>. Drivers can be selected with <PDriver_SelectDriver>.
# N> Odd, that.
#Subpage handler
PDriver sharer
The sharer itself handles:

�	<PDriver_DeclareDriver>
�	<PDriver_RemoveDriver>
�	<PDriver_SelectDriver>
�	<PDriver_EnumerateDrivers>

For all other SWIs it sets register as follows and then branches to the driver's reason code handler:

R11	reason code (SWI number - &80140)
R12	pointer to private word (passed to PDriver_DeclareDriver in R1)
R14	return address

The handler code should implement SWIs as documented, returning errors by the conventional means (in R0, V set).
DATACPDriver_DeclareFont  (&80155)
#Parent PDriver_
=>	R0 =	font handle (or 0)
	R1 =	0 (or font name)
	R2 =	<flags=>.flags>

This SWI declares the fonts used in a document, and should be called for each <distinct=>.distinct> font, either by handle or by name, after you have called <PDriver_SelectJob> or <PDriver_SelectIllustration>, but before <PDriver_DrawPage>.
# Could that sentance BE any longer
Not using this SWI may cause the printer driver to default to downloading a lot of unnecessary font information, or finding that the font you later select is not available on the printer.

Check the <features word=>PDriver_features> to verify that the driver does support this SWI. 
#Subpage flags
PDriver_DeclareFont flags
Bit	Meaning if set
#Line
0	don't download fonts absent from device (will substitute instead)
1	download kerning info with font
#Subpage distinct
Distinct fonts
Fonts are "distinct" if they differ in name, encoding or matrix - in otherwords if their <Font identifiers=>Font_identifier> differ in any way. Size and colour differences do *not* make fonts distinct.
DATAPDriver_DrawPage  (&8014C)
#Parent PDriver_
=>	R0	number of copies to print
	R1	pointer to 4 word block to receive <rectangle to print=>PDriver_rectangle>
	R2	page number within the document (for user information) or 0
	R3	pointer to <page number string=>.number> (or 0 for none)

<=	R0	0 if finished
	R1	preserved
	R2	ID word for this rectangle
	R3	preserved 

This SWI is called after all rectangles have been specified with <PDriver_GiveRectangle>, and returns the first rectange to print. Subsequent rectangles are retrieved with <PDriver_GetRectangle>.

If R0 is 0 on return then R2 and the buffer pointed to by R1 are undefined. Otherwise R0 gives the number of copies still to print - this is intended for display to users only, as it may not decrease smoothly.
#subpage number
Printer page number strings
The page number string should only contain characters in the range {*}33{*}-126 ({/}i.e.{/} no spaces), and is used by some printer drivers for commenting the output. It is acceptable to have no page number string - use a 0 pointer.
DATA�PDriver_EndJob  (&80148)
#Parent PDriver_
=>	R0 =	file handle of job

This SWI ends a print job normally, which may still result in further output ({/}e.g.{/} PostScript trailer comments). If the job in R0 is the currently active job then there will be no current print job after this call - hence plotting calls will no longer be intercepted. Otherwise there is no effect on the current job (if any) and the state of plotting interception.
DATAPDriver_EnumerateDrivers  (&80159)
#Parent PDriver_
=>	R0 =	previous  handle, 0 to start

<=	R0 =	next handle, 0 marks end
	R1 =	<printer driver number=>PDriver_printernumbers>

This SWI will return the numbers of all printer drivers present. Experimentation reveals that the last valid R1 occurs with R0 \<> 0; when R0 = 0 on exit R1 is garbage.
# N> PRMs, they're /so/ helpful
#    /so/ to be pronounced as in G.B.H. "He's /so/ easy"
# Gerph> Hmm... Maybe I should watch that again just to find the reference
DATA�PDriver_EnumerateJobs  (&80150)
#Parent PDriver_
=>	R0 =	previous file handle, 0 to start

<=	R0 =	next file handle, 0 marks end

This SWI will return the file handles of all print jobs, in no particular order.
DATA�Printer driver features word
#Parent PDriver_Info
Bits	Meaining when clear					Meaning when set
#Line
0-2	<colours available=>.colours>				
8	can handle filled shapes				can only outline filled shapes ({/}e.g.{/} XY plotter)
9	can handle thick lines					can only plot thin lines (but might have thicker pens)
10	overwrites colours properly				can only overwrite colours onto background ({/}e.g.{/} a plotter with wet ink!)
11	can't plot transfromed sprites				can plot transformed sprites
12	does not support new FontManager features		does support these features ({/}e.g.{/} transforms and encodings)
24	supports screen dumps					does not support screen dumps
25	can only scale, translate and rotate by 90� or 180�	supports arbitary transformations
26	does not support <PDriver_InsertIllustration>		does suport <PDriver_InsertIllustration>
27	does not support <PDriver_MiscOp>			does suport <PDriver_MiscOp>
28	does not support <PDriver_SetDriver>			does suport <PDriver_SetDriver>
29	does not support <PDriver_DeclareFont>			does suport <PDriver_DeclareFont>
#Subpage colours
Printer driver colour bits
#TAB align centre, align centre, align centre, align left
Bit 0	Bit 1	Bit 2	Colours available
#Line
0	x	0	Arbitary greys
0	x	1	Limited greys (maybe only black and white)
1	0	0	Arbitary colours
1	0	1	Limited discrete colours, including all 8 primaries
1	1	0	Limited arbitary colours, but *not* all 8 primaries ({/}e.g.{/} a printer with only red and black ink)
1	1	1	Limited discrete colours ({/}e.g.{/} a pen plotter)
DATA�PDriver_FontSWI  (&80147)
#Parent PDriver_

This SWI is for internal communication between printer driver and font system only.
DATA�PDriver_GetRectangle  (&8014D)
#Parent PDriver_
=>	R1 =	pointer to 4 word block to receive <rectangle to print=>PDriver_rectangle>

<=	R0 =	0 if finished
	R1 =	preserved
	R2 =	ID word for this rectangle

This SWI is called to get further rectangles to print.

If R0 is 0 on return then R2 and the buffer pointed to by R1 are undefined. Otherwise R0 gives the number of copies still to print - this is intended for display to users only, as it may not decrease smoothly.
DATA�PDriver_GiveRectangle  (&8014B)
#Parent PDriver_
=>	R0 =	ID word (chosen by application)
	R1 =	pointer to <rectangle to print=>PDriver_rectangle>
	R2 =	pointer to <transformation table=>.table>
	R3 =	pointer to <plot position=>.position>
	R4 =	background colour (&BBGGRR00)

This SWI is used to specify a rectangle to be printed. The value in R0 is passed back whenever the application is requested to plot any part of this rectangle. If it is called with overlapping rectangles then <PDriver_GetRectangle> will return these rectangles in the same order. The values in R2 and R3 give the transformation from the application's coordinates to the coordinates of the printed page. (It appears that PDriver implicitly converts from OS units to millipoints as needed.)
#subpage table
Printer transformation tables
This 4 word block is just the first 4 words of a standard 'Draw' <transformation matrix=>Draw_transform>.
#subpage position
Printer plot position
This block gives the position on the page of the bottom left corner of the specified rectange.

Offset	Contents
#Line
0	x coord of bottom left
4	y coord of bottom left

Both values are in millipoints.
DATA�PDriver_Info  (&80140)
#Parent PDriver_
<=	R0 =	bits 0-15	driver's version number * 100
	 	bits 16-31	<printer number=>PDriver_printernumbers>
	R1 =	x resolution of driven printer (DPI)
	R2 =	y resolution of driven printer (DPI)
	R3 =	<features word=>PDriver_features>
	R4 =	pointer to printer name (max 20 chars, null terminated)
	R5 =	x halftone resolution in repeats/inch
	R6 =	y halftone resolution in repeats/inch
	R7 =	printer driver specific number (as set by <PDriver_SetInfo>, defult is 0)

This SWI describes the capabilities of the printer. If a job is selected they ae the values in force from when it was first selected, else they are the values that would be used on a new job. If halftoning is not used then R5=R2,R6=R3.
DATA1PDriver_InsertIllustration  (&80154)
#Parent PDriver_
=>	R0 =	file handle of illustration
	R1 =	pointer to <clipping path=>Draw_pathblock>, or 0 for no clipping
	R2 =	bottom left x coord
	R3 =	bottom left y coord
	R4 =	bottom right x coord
	R5 =	bottom right y coord
	R6 =	top left x coord
	R7 =	top left y coord

This SWI inserts the illustration from the file handle into the current print job. Check the <features word=>PDriver_features> to verify that the driver does support it. All co-ordinates are in 1/256 of an OS unit ({/}i.e.{/} Draw units).
DATA�PDriver_MiscOp  (&8015A)
#Parent PDriver_
=>	R0 =	<Reason code=>.ops>
	other registers depend on reason code

<=	depends on reason code

This SWI performs miscellaneous operations, dependant on the reason code in R0.
#subpage ops
PDriver_MiscOp reasons
R0			Action
#Line
<0=>PDriver_MiscOp0>			Add a font name to the list of known fonts
<1=>PDriver_MiscOp1>			Remove font(s) from the list of known fonts
<2=>PDriver_MiscOp2>			Enumerate the list of known fonts
<&80000000=>PDriver_MiscOp80000000>	Register a dumper with PDriverDP
<&80000001=>PDriver_MiscOp80000001>	Deregister a dumper with PDriverDP
&80000100 - &80000FFF			direct control extension.
DATA�PDriver_MiscOp 0
#Parent PDriver_MiscOp
=>	R0 =	0 (reason code)
	R1 =	pointer to control terminated RISC OS <font name=>Font_identifier>
	R2 =	pointer to printer's native font name (control terminated) or 0
	R3 =	<printer code flags=>PDriver_MiscOp0flags>
	R4 =	overwrite existing entries if bit 0 set, else error
<=	depends on reason code

This SWI is used by the Printers application to add a font name to the list known for the current printer. If there is no current job it is added to a global list, else it is added to a local list for the current job. Each job's list is initialised as a copy of the global list when it is started.

Native font names are case sensitive, and may be null (for example, a direct driver printer).
DATA�Printer dependant font flags
#Parent PDriver_MiscOp0
Bit	Meaning when set
#Line
0	font is resident
1	font is to be downloaded at job start
2	font has been downloaded
DATAPDriver_MiscOp 1
#Parent PDriver_MiscOp
=>	R0 =	1 (reason code)
	R1 =	pointer to control terminated RISC OS <font name=>Font_identifier>, or 0 to delete all fonts

This SWI is used by the Printers application to remove a font name or all fonts  from the list known for the current printer. If there is no current job it is added to a global list, else it is added to a local list for the current job. Each job's list is initialised as a copy of the global list when it is started.

No error is generated if an attempt is made to remove all fonts when there are none, but attempting to remove a specific font that does not exist *is* an error. Not that this matters, as the current implementation ignores R1 and always removes all fonts!
# Gerph> Not an API that isn't used, surely ?
DATA�PDriver_MiscOp 2
#Parent PDriver_MiscOp
To find size of buffer
=>	R0 =	2 (reason code)
	R1 =	0 to return required size of buffer
	R2 =	0
	R3 =	header size to add to buffer size
	R4 =	0 (flags, all reserved)

<=	R1,R3,R4 preserved
	R2 =	size of buffer + size in R3

To enumerate
=>	R0 =	2 (reason code)
	R1 =	pointer to <buffer=>.buffer>
	R2 =	size of buffer
	R3 =	previous handle, 0 to start
	R4 =	0 (flags, all reserved)

<=	R1 =	pointer to first free byte in buffer
	R2 =	free bytes in buffer
	R3 =	updated handle (0 means end)
	R4 preserved

This SWI is used by the Printers application to list the fonts known by the current printer. If there is no current job it is added to a global list, else it is added to a local list for the current job. Each job's list is initialised as a copy of the global list when it is started.
#Subpage buffer
PDriver_MiscOp list fonts block
Offset	Contents
#Line
0	pointer to control terminated RISC OS <font name=>Font_identifier>
4	pointer to printer's native font name (control terminated)
8	<printer code flags=>PDriver_MiscOp0flags>

The pointed-to strings will become invalid if the relevent font is deleted by a call to <PDriver_MiscOp 1=>PDriver_MiscOp1>.
DATA7PDriver_MiscOp &80000000
#Parent PDriver_MiscOpForDriver
=>	R0 =	&80000000 (reason code)
	R1 =	<number of driver=>PDumper_numbers>
	R2 =	required version of PDriverDP (* 100)
	R3 =	pointer to dumper's private word (passed in as R12)
	R4 =	pointer to <dumper reason code handler=>PDumper_code>
	R5 =	<bit mask=>.codes> of supported calls
	R6 =	<bit mask=>.strips> of supported strip types

A printer dumper should call the <PDriver_MiscOpForDriver> form of this SWI to register itself with PDriverDP when it starts, or when it receives <Service_PDumperStarting=>Service_66>.

Dumpers must support strip types 0-2 and reason codes 0-7 ({/}i.e.{/} all that are currently defined).
#Subpage strips
Bitmask for strip types
Bit	When set supports
#Line
0	monochrome
1	grey scale
2	256 colour
#Subpage codes
Bitmask for reason codes
Bit	When set supports
#Line
0	<PDumperReason_SetDriver>
1	<PDumperReason_OutputDump>
2	<PDumperReason_ColourSet>
3	<PDumperReason_StartPage>
4	<PDumperReason_EndPage>
5	<PDumperReason_StartJob>
6	<PDumperReason_AbortJob>
7	<PDumperReason_MiscOp>
DATAfPDriver_MiscOp &80000000
#Parent PDriver_MiscOpForDriver
=>	R0 =	&80000001 (reason code)
	R1 =	<number of driver=>PDumper_numbers>

A printer dumper should call the <PDriver_MiscOpForDriver> form of this SWI when it dies. If the dumper is in use then this call will return and error, and the dumper in turn should report the error and refuse to die.
DATAqPDriver_MiscOpForDriver  (&8015B)
#Parent PDriver_
=>	R0 =	<Reason code=>PDriver_MiscOp.ops>
	R8 =	<printer driver number=>PDriver_printernumbers>
	other registers depend on reason code

<=	depends on reason code

This SWI is identical to <PDriver_MiscOp>, except that it passes the operation to the driver specifed in R8, which need not be the current driver.
DATA�Printer driver rectangle block
#Parent PDriver_
Offset	Contents
#Line
0	x min, inclusive
4	y min, inclusive
8	x max, exclusive
12	y max, exclusive

All values are in OS units.
DATA�PDriver_RemoveDriver  (&80157)
#Parent PDriver_
=>	R0 =	<printer driver number=>PDriver_printernumbers>

This SWI deregisters a printer driver from the PDriver sharer module, cancelling all jobs associated with it. This can confuse (and crash) some applications - it is wise for the driver to check that it has no pending jobs before calling this SWI.
# Quite how the *driver* should do this is not mentioned by the PRM!
DATA�PDriver_Reset  (&8014A)
#Parent PDriver_

This SWI ends all print jobs abnormally. It should only be called as an emergency measure during application development. It is issued if the printer driver mdule is killed.
DATA7PDriver_ScreenDump  (&8014F)
#Parent PDriver_
=>	R0 =	file handle to recieve dump

This SWI makes the printer generate a screen dump to the specified file handle. Check the <features word=>PDriver_features> first - no current Acorn printer driver supports it!
# Gerph> Another useful feature there then
DATA�PDriver_SelectDriver  (&80158)
#Parent PDriver_
=>	R0 =	<printer driver number=>PDriver_printernumbers>
	 	or -1 to set no current driver
	 	or -2 to read
<=	R0 =	previous <printer driver number=>PDriver_printernumbers>
	 	or -1 if there was no current driver

This SWI specifes the current printer driver, and should only be used by the Printer application. If really feel the urge to use this call, read the current setting and try to restore it when you finish.
DATAPDriver_SelectIllustration  (&80153)
#Parent PDriver_
=>	R0 =	file handle, or 0 to deselect all jobs
	R1 =	pointer to title string for job, or 0 if none

<=	R0 =	file handle of previously active job
	R1 preserved

This SWI is identical to <PDriver_SelectJob>, except when it starts a new print job. It is intended to allow printing of a single page so that it can be used as an illustration in another document. The PostScript driver will generate EPS with this SWI. This SWI will error if the job contains more than one page.
DATA6PDriver_SetDriver  (&8015C)
#Parent PDriver_
=>	R1 =	<printer dumper number=>PDumper_numbers>
	R2 =	pointer to command to ensure dumper present
	R3 =	pointer to 256 bytes of dumper configuration data
	R4 =	pointer to 256 bytes of <PDriverDP and dumper configuration data=>PDriver_SetDriverblock>
	R5 =	<configuration word=>PDumper_configword> for dumper

This SWI sets the current printer dumper by calling <PDumperReason_SetDriver>. The *Command in R2 is issued if the requested dumper is not currently loaded. The blocks in R3 and R4 are both copied by PDriverDP - hence the originals may be discarded. The R3 block contains the name of the palette file to use - this gets passed to the dumper module now, but is not really needed until <PDumper_StartJob>, which is usually called from <PDumperReason_StartJob>.
DATAGPDriver_SetDriver R4 block
#Parent PDriver_SetDriver
PDriverDP copies the 256 byte <config block=>PDumper_configblock> into a 272 byte buffer, and overwrites certain locations as follows:

Offset	Size	Meaning
#Line
0	byte	height in dots of a strip	(PrintEdit's DumpDepth)
1	byte	vertical interlace passes	(PrintEdit's x interlace)
2	byte	horizontal interlace passes	(PrintEdit's y interlace)
3	byte	passes over line - 1
4	byte	<strip type=>PDumper_striptypes>
5	byte	output depth:		1 => monchrome
	 	 			8 => greyscale or colour
6	byte	passes per strip	0 => 1 pass
7	byte	number of current pass
8	word	PDriverDP's copy of dumper's private word

256	word	dumper <configuration word=>PDumper_configword> (passed in R5)
260	word	pointer to active dumper
264	word	<printer dumper number=>PDumper_numbers>
268	word	left margin (pixels)
DATAOPDriver_SetInfo  (&80141)
#Parent PDriver_
<=	R1 =	x resolution of driven printer (DPI)
	R2 =	y resolution of driven printer (DPI)
	R3 =	features word:	bit 0 set for colour, else black and white
	 	 		bits 1-31 0 (reserved)
	R4 =	pointer to new printer name (max 20 chars, null terminated)
	R5 =	x halftone resolution in repeats/inch
	R6 =	y halftone resolution in repeats/inch
	R7 =	printer driver specific number

This SWI is used by the Printer application to configure a printer driver. The new values are only used on new jobs. If halftoning is not to be used then R5=R2,R6=R3.
DATA�PDriver_SetPageSize  (&80144)
#Parent PDriver_
=>	R1 =	width of paper
	R2 =	height of paper
	R3 =	left edge of printable area
	R4 =	bottom edge of printable area
	R5 =	right edge of printable area
	R6 =	top edge of printable area

This SWI sets the paper size, and the printable area on the paper (measured from bottom left of the paper). All values are in millipoints.

The SWI should only be called by the Printer application.
DATA�PDriver_SetPrinter  (&80151)
#Parent PDriver_

This SWI is for internal communication the RISC OS 2 printer application and printer drivers. It is now superceeded by <PDriver_SetDriver>.
DATA�PDriver_SelectJob  (&80145)
#Parent PDriver_
=>	R0 =	file handle, or 0 to cancel current job
	R1 =	pointer to title string for job, or 0 if none

<=	R0 =	file handle of previously active job

This SWI starts a new print job, resumes a suspended one, or suspends the current one. The title must only contain characters in the range 32-126, and is terminated by the first out of range character.

If an error occurs the previously selected job will automatically be restored as current job.
DIR$ؤ
H������!Root�
H������CallLoader��
H���>b&_chunkdir�
H����Jb&ccombinedhardwareaddressp�
H�������ECId��
H���J=��eECId��
H�����JEnumerateChunks�
H����!��EnumerateChunksWithInfo��
H�������HardwareAddress��
H���i���HardwareAddressesD�
H������Risp��
H����{b&`loader��
H���C��Eosid@�
H������RawRead��
H������RawWrite��
H���F�iReadBytes4�
H������ReadChunkP�
H����*�wReadHeader��
H������ ReadID��
H����m��ReturnNumber��
H�����hWriteBytesDATAPodule
#Parent !Root
#Prefix Podule_
#Table Columns 2
<CallLoader>
<EnumerateChunks>
<EnumerateChunksWithInfo>
<HardwareAddress>
<HardwareAddresses>
<RawRead>
<RawWrite>
<ReadBytes>
<ReadChunk>
<ReadHeader>
<ReadID>
<ReturnNumber>
<WriteBytes>
#EndTable
DATA�Podule_CallLoader  (&40286)
#Parent Podule_
=>	R0 =	user data
	R1 =	user data
	R2 =	user data
	R3 =	expansion card number

This SWI calls an expansion card's <loader at offset 12=>Podule_loader>.
DATA_Expansion Card chunk directory
#Parent Podule_
The chunk directory consists of a series of 8 byte entries, terminated by four zero bytes.

Format of a chunk directory entry:

Size	Meaning
#Line
1	<Operating system identity byte=>Podule_osid>
3	size of chunk (bytes)
4	start (offset from base of card's identity space)

If a chunk directory is present, then it *must* be preceded by 16 bytes of <interrupt status pointers=>Podule_isp>, even if these are not used. The chunk directory is the start of the area of expansion card space where the bit width is set from the <extended ECId=>Podule_eECId>.
DATAcExpansion Card Combined Hardware Address
#Parent Podule_
Bits	Meaning
#Line
0-11	base address of CMOS RAM (4 bytes)
12-25	bits 12-25 of base address of expansion card (or extension ROM)

Extension ROMs do not have CMOS RAM allocated. For an expansion card the masked value can be passed to <OS_Byte 161=>OS_Byte161> and <OS_Byte 162=>OS_Byte162>.
DATA�Expansion Card identity byte
#Parent Podule_
A simple ECId is one byte long:

Bit	Meaning (when {*}clear{*})
#Line
7	Acorn conformant expansion card
6-3	ID number - zero means <extended ECId=>Podule_eECId>
2	not requesting FIQ (or FIQ relocated)
1	Expansion card present (must allways be zero, to allow hardware to detect the presence of a card)
0	not requesting IRQ (or IRQ relocated)
DATA�Extended Expansion Card identity byte
#Parent Podule_
A extended ECId is eight bytes long:

Byte	Bit	Value	Meaning
#Line
7	7-0	 	<country=>Territory_numbers> (or 0 for UK)
6,5	15-0	 	manufacturer
4,3	15-0	 	product type
2	7-0	0	reserved
1	7-4	0	reserved
1	3-2	0	8 bit width
	 	1	16 bit width
	 	2	32 bit width
	1	1	<Interupt Status Pointers=>Podule_isp> follow ECId (else not present)
	0	1	<Chunk Directory=>Podule_chunkdir> follows Interupt Status Pointers (else not present)
0	7	0	Acorn conformant expansion card
 	6-3	0	extended ECId
	2	0	not requesting FIQ (or FIQ relocated)
	 	1	requesting FIQ
	1	0	Expansion card present
	0	0	not requesting IRQ (or IRQ relocated)
 	 	1	requesting IRQ
DATAJPodule_EnumerateChunks  (&40282)
#Parent Podule_
=>	R0 =	chunk number
	R3 =	<ROM section=>OS_ModuleROMSections>
<=	R0 =	0 (no more chunks)
or
<=	R0 =	next chunk number (non-zero even for last chunk)
	R1 =	size (bytes)
	R2 =	<operating system identity byte=>Podule_osid>
	R4 =	if a module	pointer to copy of module's name
	 	else		preserved

This SWI reads information about a chunk from the chunk directory. If the chunk is a loader, RISC OS also loads it. The copy of a module's name string is held in the Expansion Card Manager's workspace, and will become invalid after the next call to the Expansion Card Manager.

Note that the last valid chunk entry will *still* return a non-zero number for the next chunk - when this SWI is called again with R0 >= this number it will return R0 = 0, signifying the end of the chunk directory.
DATA�Podule_EnumerateChunksWithInfo  (&4028A)
#Parent Podule_
=>	R0 =	chunk number
	R3 =	<ROM section=>OS_ModuleROMSections>
<=	R0 =	0 (no more chunks)
or
<=	R0 =	next chunk number (non-zero even for last chunk)
	R1 =	size (bytes)
	R2 =	<operating system identity byte=>Podule_osid>
	R4 =	if a module	pointer to copy of module's name
	 	else		preserved
	R5 =	if a module	pointer to copy of module's <help string=>OS_Module_Help>
	 	else		preserved
	R6 =	if a module	address of module if directly executable, else 0
	 	else		preserved

This SWI reads information about a chunk from the chunk directory. If the chunk is a loader, RISC OS also loads it. Copies of a module's name and help strings are held in the Expansion Card Manager's workspace, and will become invalid after the next call to it.

Note that the last valid chunk entry will *still* return a non-zero number for the next chunk - when this SWI is called again with R0 >= this number it will return R0 = 0, signifying the end of the chunk directory.
DATA�Podule_HardwareAddress  (&40289)
#Parent Podule_
=>	R3 =	<ROM section=>OS_ModuleROMSections>
<=	R3 =	<combined hardware address=>Podule_combinedhardwareaddress>

This SWI reads the expansion cards or extension ROM's <combined hardware address=>Podule_combinedhardwareaddress>. Not that this information is very useful for an extension ROM. Use <Podule_HardwareAddresses> if you also require the base address.
DATA�Podule_HardwareAddresses  (&4028B)
#Parent Podule_
=>	R3 =	<ROM section=>OS_ModuleROMSections>
<=	R0 =	base address of expansion card/extension ROM
	R1 =	<combined hardware address=>Podule_combinedhardwareaddress>

This SWI reads the expansion cards or extension ROM's base address and <combined hardware address=>Podule_combinedhardwareaddress>. Not that this information is very useful for an extension ROM.
DATARExpansion Card interrupt status pointers
#Parent Podule_
Offset	Size	Meaning
32	1 byte	FIQ status bit mask
36	3 bytes	FIQ status bit offset
48	1 byte	IRQ status bit mask
52	3 bytes	IRQ status bit offset

The offsets are in the cards identity space, which is only 8 bits wide for the first 16 bytes ({/}i.e.{/} only low byte is used for the first 16 words).

Status offsets are signed 24 bit numbers, offset from &3240000 (base of podules in the <memory map=>Machine:!Root>) - hence access cycle speed is encoded in <bits 19-20=>Machine:IOC>. Bits 14-15 (slot number) should be zero. A negative offset means that the status register is in module space.

The bit mask should have only a single bit set.

If you have to have interrupt status pointers because of a <chunk directory=>Podule_chunkdir> but do not wish to relocate the status bits from the default location (low byte of the <ECId=>Podule_eECId>) you would set both offset fields to point to the low byte, with masks of 4 and 1 for FIQ and IRQ respectively.
# I think that this would mean both offsets would be 0, but PRM doesn't say this.
DATA`Expansion Card loader
#Parent Podule_
The loader provides a simple interface that lets the Expansion Card manager access the card's code space. The regiser usage is common to the 4 entry points.

=>	R0	user data, or byte to read/write
	R1	user data, or address
	R2	user data
	R11	<combined hardware address=>Podule_combinedhardwareaddress>
	R13	FD stack
<=	R2,R3,R10 may be corrupted

Entry points:

Offset	Code 
#Line
0	Read a byte
4	Write a byte
8	Reset card
12	<Podule_CallLoader>

Return with BICS pc, lr, #V_bit, or V set and an error in R0. An error pointer of 0 will generate a default error.
DATAEExpansion Card operating system identity byte
#Parent Podule_
The operating system identity byte is the first byte in the Chunk Directory entry. It is formed of two nybbles:
High Nibble	Low Nibble	Meaning
(bits 7-4)	(bits 3-0)
#Line
 8		 		Acorn OS 0: Arthur/RISC OS
 		0		Loader
 		1		<Relocatable Module=>OS_Module>
 		2		BBC ROM
 		3		<Sprite=>OS_SpriteOP>
 10		 		Acorn OS 2: Unix
 		0		Loader
 14		 		manufacturer defined
 		0-15		manufacturer specific
 15		 		Device data
 		0		link (points to another directory)
 		1		serial number		(string)
 		2		date of manufacture	(string)
 		3		modification status	(string)
 		4		place of manufacture	(string)
 		5		description		(string)
 		6		part number		(string)
 		15		empty chunk

It is intended that the string values are for human inspection (rather than for programs to read)
DATA�Podule_RawRead  (&40287)
#Parent Podule_
=>	R0 =	offset (0 - &FFF) from podule's address space base.
	R1 =	number of bytes
	R2 =	pointer to buffer
	R3 =	<ROM section=>OS_ModuleROMSections>

This SWI reads bytes directly from an expansion card or extension ROM's address space, typically to read hardware registers. Use <Podule_ReadBytes> to read from an expansion card's code space.
DATA�Podule_RawWrite  (&40288)
#Parent Podule_
=>	R0 =	offset (0 - &FFF) from podule's address space base.
	R1 =	number of bytes
	R2 =	pointer to buffer
	R3 =	expansion card number

This SWI writes bytes directly to an expansion card's address space, typically to write hardware registers. Use <Podule_WriteBytes> to write to an expansion card's code space.

Do *not* try to write to an <extension ROM=>OS_ModuleROMSections> - this will probably result in the memory or video controllers being reprogrammed.
DATAiPodule_ReadBytes  (&40284)
#Parent Podule_
=>	R0 =	offset from start of code space
	R1 =	number of bytes
	R2 =	pointer to buffer
	R3 =	expansion card number

This SWI reads bytes from an expansion card's code space, by repeated calls to its <loader=>Podule_loader>. Attempting to read from an <extension ROM=>OS_ModuleROMSections> will return an error.
DATAPodule_ReadChunk  (&40283)
#Parent Podule_
=>	R0 =	chunk number
	R2 =	pointer to buffer (assumed large enough)
	R3 =	<ROM section=>OS_ModuleROMSections>

This SWI reads the specified chunk from an expansion card. Use <Podule_EnumerateChunks> to find the size of the chunk.
DATAwPodule_ReadHeader  (&40281)
#Parent Podule_
=>	R2 =	pointer to buffer (8 or 16 bytes)
	R3 =	<ROM section=>OS_ModuleROMSections>

This SWI reads the <extended Expansion Card Identity=>Podule_eECId> (8 bytes) into the buffer. If the card also has <interupt status pointers=>Podule_isp> (further 8 bytes) then these are also read - hence if unsure use a 16 byte buffer.
DATA Podule_ReadID  (&40280)
#Parent Podule_
=>	R3 =	<ROM section=>OS_ModuleROMSections>
<=	R0 =	<expansion card identity byte (ECId)=>Podule_ECId>

This SWI reads the <Expansion Card identity byte=>Podule_ECId>, or the low byte of an <extended Expansion Card Identity=>Podule_eECId>.
DATA�Podule_ReturnNumber  (&4028C)
#Parent Podule_
<=	R0 =	number of expansion cards
	R1 =	number of extension ROMs

This SWI reads the number of expansion cards and extension ROMs. Be prepared for any values ({/}e.g.{/} 0 expansion cards).
DATAhPodule_WriteBytes  (&40285)
#Parent Podule_
=>	R0 =	offset from start of code space
	R1 =	number of bytes
	R2 =	pointer to buffer
	R3 =	expansion card number

This SWI writes bytes to an expansion card's code space, by repeated calls to its <loader=>Podule_loader>. Attempting to write to an <extension ROM=>OS_ModuleROMSections> will return an error.
DATA_OS SWIs
#Parent StrongHelp:!Menu
#Postfix _
#Table Columns 3
<ADFS>
<ATAPI>
<BasicTrans>
<Buffer>
<Cache>
<CD>
<CDFS>
<ColourTrans>
<ColourPicker=>Wimp:ColourPicker_>
<Debugger>
<DeviceFS>
<DMA>
<DOSFS>
<DragASprite=>Wimp:DragASprite_>
<Draw>
<DrawFile>
<Econet>
<FileCore>
<FilerAction=>Wimp:FilerAction_>
<Filter=>Wimp:Filter_>
<Font>
<FPEmulator>
<Free=>Wimp:Free_>
<FSLock>
<Hourglass>
<IIC>
<Joystick>
<JPEG>
<MakePSFont>
<MessageTrans>
<NetFS>
<NetPrint>
<OS>
<Parallel>
<PDriver>
<PDumper>
<Podule>
<Portable>
<RamFS>
<ResourceFS>
<RemotePrinterSupport>
<SCSI>
<ScreenBlanker>
<ScreenModes>
<SharedCLibrary>
<Shell>
<Sound>
<Squash>
<Super>
<TaskManager=>Wimp:TaskManager_>
<TaskWindow=>Wimp:TaskWindow_>
<Territory>
<Wimp=>Wimp:Wimp_>
    <Error block=>swi_errorblock>
#EndTable
#Line
<Contributions=>Contributions>   	{/}<Version 3.04=>about>{/}
DIR$LL��
F����	�;u!Rooth�
G���d���ReadDATAuJoystick
#Parent !Root
#Prefix Joystick_
<Read>

This is only available on machines with the proper hardware.DATA�Joystick_Read  (&43F40)
#Parent Joystick_
=>	R0 =	joystick number
<=	R0 =	joystick state

This SWI reads the current state of the joystick. The returned state is in the form &SSHHVV.

{*}Analogue joysticks{*}
#Tab
Byte	Value
#Line
0	Signed Y value in the range -127 to 127
1	Signed X value in the range -127 to 127
2	Switches (eg fire buttons), unimplemented switches return 0
3	reserved

{*}Digital joysticks{*}
#Tab
Value	Meaning
#Line
&40	up
&C0	down
&4000	right
&C000	left
&10000	fireDIR$��,�
F����MV��!Root �
G����L��lInfo��
G���TR���FileInfoX�
G���Hn�PlotScaled`�
G�������PlotFileScaled,�
H�����&plottransformedD�
H������3PlotFileTransformedx�
F�����pdriverintercept��
F������iinfo_opflags��
F���u���plotflags��
G���4��transflags��
F����& ��info_infoflagsDATA�JPEG
#Parent !Root
#Prefix JPEG_
#Table Columns 2
<Info>
<FileInfo>
<PlotScaled>
<PlotFileScaled>
<PlotTransformed>
<PlotFileTransformed>
<PDriverIntercept>
#EndTable

These calls are only available when SpriteExtend 0.99 is installed.
DATAlJPEG_Info  (&49980)
#Parent JPEG_
=>	R0 =	<operation flags=>JPEG_info_opflags>
	R1 =	pointer to JPEG
	R2 =	length of image
	
<=	R0 =	<info flags=>JPEG_info_infoflags>
	R2 =	width (in pixels)
	R3 =	height (in pixels)
	R4 =	x pixel density
	R5 =	y pixel density
	R6 =	workspace that would be required to plot (0=none)

This SWI returns information about a JPEG held in a buffer in memory. It checks the header enough to return the width and height, and does a partial validation of the data.  It returns an error if the image appears to be invalid; if no error is returned you may assume the data is a JPEG image.
DATA�JPEG_FileInfo  (&49981)
#Parent JPEG_
=>	R0 =	<operation flags=>JPEG_info_opflags>
	R1 =	pointer to JPEG file name
	
<=	R0 =	<info flags=>JPEG_info_infoflags>
	R2 =	width (in pixels)
	R3 =	height (in pixels)
	R4 =	x pixel density
	R5 =	y pixel density
	R6 =	workspace that would be required to plot (0=none)

This SWI returns information about a JPEG held in a file. It checks the header enough to return the width and height, and does a partial validation of the data.  It returns an error if the image appears to be invalid; if no error is returned you may assume the data is a JPEG image.

It is preferable to load the file into memory and call <JPEG_Info>, if you intend to display the image as well.
DATAJPEG_PlotScaled  (&49982)
#Parent JPEG_
=>	R0 =	pointer to JPEG
	R1 =	x coordinate at which to plot
	R2 =	y coordinate at which to plot
	R3 =	<scale factors=>os_scalefactors>, or 0 for 1:1 scaling
	R4 =	length of image
	R5 =	<plotting flags=>JPEG_plotflags>

This SWI decompresses, scales and plots on the screen a JPEG image held in a buffer.

This is similar to <OS_SpriteOp 52=>OS_SpriteOp_52> for sprites in that the scale factors and the coordinates have exactly the same meaning. However, this call only supports a direct plot.

In plotting the JPEG, the SpriteExtend module may claim extra workspace in a dynamic area to store tables etc.  It keeps these cached until either it is asked to plot a different JPEG, or the user decreases the dynamic area's size. This speeds up successive replots of the same JPEG. You can find out how much extra workspace SpriteExtend will require - if any - by first calling <JPEG_Info> or <JPEG_FileInfo>, and hence ensure there is sufficient free memory before making this call.
DATA�JPEG_PlotFileScaled  (&49983)
#Parent JPEG_
=>	R0 =	pointer to filename of JPEG file
	R1 =	x coordinate at which to plot
	R2 =	y coordinate at which to plot
	R3 =	<scale factors=>os_scalefactors>, or 0 for 1:1 scaling
	R4 =	<plotting flags=>JPEG_plotflags>

This SWI decompresses, scales and plots on the screen a JPEG image held in a file. This is identical to the <JPEG_PlotScaled> call, except that memory is claimed in a Dynamic Area for the file.DATAJPEG_PlotTransformed  (&49984)
#Parent JPEG_
=>	R0 =	pointer to JPEG
	R1 =	<transformation flags=>JPEG_transflags>
	R2 =	pointer to destination coordinate block, or <transformation matrix=>draw_transform>
	R3 =	length of image

This SWI decompresses, transforms, and plots on the screen a JPEG image held in memory.

This call is similar to <OS_SpriteOp 56=>OS_SpriteOp_56>, in that the destination coordinate block and the transformation matrix have exactly the same meaning.  However, this call only supports a direct plot.
DATA3JPEG_PlotFileTransformed  (&49985)
#Parent JPEG_
=>	R0 =	pointer to filename of JPEG file
	R1 =	<transformation flags=>JPEG_transflags>
	R2 =	pointer to destination coordinate block, or <transformation matrix=>draw_transform>
	R3 =	length of image

This SWI decompresses, transforms, and plots on the screen a JPEG image held in a file. This call is the same as <JPEG_PlotTransformed>, except that memory is claimed in a Dynamic Area to hold the JPEG before plotting.

You are strongly recommended to use <JPEG_PlotTransformed> in preference to this call.DATAJPEG_PDriverIntercept  (&49986)
#Parent JPEG_
=>	R0 =	<flags=>.flags>
<=	R0 =	previous intercept state

This SWI is used by the printer drivers to request that SpriteExtend passes on all calls to JPEG plotting SWIs by itself calling PDriver_JPEGSWI.  When SpriteExtend passes on these calls, it ignores them itself.

You must not make this call from your own applications.
#subpage flags
JPEG_PDriverIntercept flags
bit	meaning if set
#Line
0	pass on plotting calls
1	use translation tables
others  reserved (must be 0)DATAiJPEG info operation flags
bit	meaning if set
#Line
0	return dimensions
other	reserved (must be 0)DATA�JPEG plotting flags
bit	meaning if set
#Line
0	dither output when plotting 24 bit JPEG at 16bpp or below
1	dithering (if any) is full error diffused when plotting at 8bpp
other	reserved (must be 0)
DATAJPEG transformation flags
bit	meaning if set
#Line
0	R2 =	pointer to destination coordinate block, else to matrix
1	dither output when plotting 24 bit JPEG at 16bpp or below
2	dithering (if any) is full error diffused when plotting at 8bpp
other	reserved (must be 0)
DATA�JPEG information flags
bit	meaning if set
#Line
0	greyscale image (otherwise colour)
1	transformed plots not supported
2	pixel density is ratio (otherwise is in DPI)
other	reserved (must be 0)DIR$��@�
H����/�V!Root��
H����S�eDeregisterFiles�
H���|�;fileblock<�
H���ё�zRegisterFilesDATAVResourceFS
#Parent !Root
#Prefix ResourceFS_
<DeregisterFiles>
<RegisterFiles>DATAeResourceFS_DeregisterFiles  (&41B41)
#Parent ResourceFS_
=>	R0 =	pointer to <resource file block=>ResourceFS_fileblock>
<=	R0 corrupted

This SWI should be called by a module to remove files from the ResourceFS structure before the memory containing the files is deallocated ({/}e.g.{/} it should be called before a module is killed). ResourceFS delinks the files and then issues <Service_ResourceFSStarting=>service_59> to announce to programs that the ResourceFS structure has changed. You do *not* need to deregister files explictly with this SWI upon receipt of <Service_ResourceFSDying=>service_5A>.
DATA;ResourceFS file block
#Parent ResourceFS_
Size	Contents
#line
4	Offset to next file, or 0 for end list
4	<load address=>fsys_loadexec>
4	<exec address=>fsys_loadexec>
4	size
4	<attributes=>fsys_objattr>
x	null terminated pathname from '$.' (do not include the '$.')
1-3	0s to word align
4	size of file + 4
y	file data
1-3	0s to word align

File blocks must be contiguous. If necessary make more than one set of contiguous file blocks, and <ResourceFS_RegisterFiles> each set in turn. Directories are not specified - directory structure is deduced from filenames.
DATAzResourceFS_RegisterFiles  (&41B40)
#Parent ResourceFS_
=>	R0 =	pointer to <resource file block=>ResourceFS_fileblock>
<=	R0 corrupted

This SWI allows a module to add files to the ResourceFS structure. ResourceFS links the files into Resources:, and then issues <Service_ResourceFSStarting=>service_59> to announce to programs that the ResourceFS structure has changed.
DIR$,,��
F�����y!RootDATAySCSI
#Parent !Root
Command
DescribeDisc
DiscOp
Drives
EEProm
FreeSpace
Hardware
Reset
Status
TestMounted
UserCodeDIR$����
G�����"!root�
G������SConvertDriveToDevice�
G������3controlblockDATA"CDFS_
#Parent !Root
#Prefix CDFS_
#spriteFile cddisc
#SPRITE 0,f CDDISC
#indent 7
<ConvertDriveToDevice> 
SetBufferSize        
GetBufferSize        
SetNumberOfDrives    
GetNumberOfDrives    
GiveFileType         
DescribeDisc         
WhereIsFile          
Truncation           
DATACDFS_ConvertDriveToDevice (&41E80)
#Parent CDFS_
=>	R0 =	logical drive number
<=	R0 preserved
	R1 =	physical drive number

The call converts a logical drive number to a physical drive number. You can then use the physical drive number to produce a CDFS control block, which you have to pass when calling CDFSDriver SWIs. The call returns an error if the logical drive is not known.

To construct the control block, allocate a 5-word space for it. Then decode the drive_number given in the above call as follows :

#fCode;Indent 2
block!0 = (drive_number AND &00000007)
block!4 = ((drive_number >> 3)  AND &00000003) 
block!8 = ((drive_number >> 5)  AND &00000007)
block!12 = ((drive_number >> 8)  AND &000000FF)
block!16 = ((drive_number >> 16) AND &0000FFFF) 
DATA�CDFS Control block
#Parent CDFS_
0	device (0-7)
4	card (0-3)
8	LUN (0-7)
12	driver handle (see <CD_Identify>)
16	currently zero
DIR$��x�
H������/!root��
G���	���OpenDrawerPG���]���EnquireAddressLG���l��PlayAudiodG����GPlayTrack�G�������AudioPauseXG������EnquireTrack�G���3���StopDisc�G������zDiscUsed
G�������AudioStatus�G���9���ByteCopyT
G���,���Identify$H�����ConvertToMSF�G���`��DriveReady�G������DriveStatus�G���TӪR�Version�G���G���EjectButtonXG���D���DiscChangedLG���Ŧ��DiscHasChanged�G���+���CloseDrawer�G�������SupportedHG���š�HReadAudio�G������5Register�G����W�fUnregister0G����[��infoblock�G������sInquiryD G�������GetParameters!G������dataparams�!G�������SetParameters�"H���n��N3EnquireDataMode$G������3Control�$G�����<3ReadData�%H�������CheckDrive�&H���2���IsDrawerLockedDATA/CD_
#Parent !Root
#Prefix CD_
#table Columns 3
AudioControl
AudioLevel
<AudioPause>
<AudioStatus>
<ByteCopy>
<CheckDrive>
<CloseDrawer>
<Control>
ConvertToLBA
<ConvertToMSF>
<DiscChanged>
<DiscHasChanged>
<DiscUsed>
<DriveReady>
<DriveStatus>
<EjectButton>
<EnquireAddress>
<EnquireDataMode>
<EnquireTrack>
<GetParameters>
<Identify>
<Inquiry>
<IsDrawerLocked>
LastError
<OpenDrawer>
<PlayAudio>
<PlayTrack>
Prefetch
<ReadAudio>
<ReadData>
ReadSubChannel
<Register>
Reset
SeekTo
<SetParameters>
<StopDisc>
<Supported>
<Unregister>
<Version>
#EndTable
DATA�CD_OpenDrawer (&41247)
#Parent CD_
=>	R7 =	pointer to <CDFS control block=>CDFS_controlblock>

This SWI stops the CD spinning, opens drawer and ejects caddy.
DATA�CD_EnquireAddress (&41249)
#Parent CD_
=>	R0 =	addressing mode, for returned head location
	R7 =	pointer to <CDFS control block=>CDFS_controlblock>
<=	R0 =	head address
	R7 preserved

Gives current address of head. Can be used while playing.
DATACD_PlayAudio (&4124B)
#Parent CD_
=>	R0 =	address mode of parameters
	R1 =	start address of section
	R2 =	end address of section
	R7 =	pointer to <CDFS control block=>CDFS_controlblock>

<=	R0-R2,R7 preserved

Attempt to play CD section of audio, specified by address.
DATAGCD_PlayTrack (&4124C)
#Parent CD_
=>	R0 =	track number at which to start play
	R1 =	255 to play to end of CD, or 254 to play to end of track
	R7 =	pointer to <CDFS control block=>CDFS_controlblock>

<=	R0,R1,R7 preserved

Attempts to play a CD section of audio, specified by track. Returns error if track is non-audio.
DATA�CD_AudioPause (&4124D)
#Parent CD_
=>	R0 =	0 to turn off, 1 to turn on
	R7 =	pointer to <CDFS control block=>CDFS_controlblock>

Controls pausing of audio playing.
DATA�CD_EnquireTrack (&4124E)
#Parent CD_
=>	R0 =	0 to return track range, or a valid track number
	R1 =	pointer to <5-byte buffer=>.buffer>
	R7 =	pointer to <CDFS control block=>CDFS_controlblock>

<=	R0,R1,R7 preserved

Returns track range, or info on a specified track.
#Subpage buffer
CDFS Track block
Track range (R0 = 0):
#Indent 2
Offset	Contents
#Line
0	number of first track on CD
1	number of last track on CD
2-4	corrupt
#indent

Specfic track (R0 = track):
#Indent 2
Offset	Contents
#Line
0	logical block address of track start (ie mode 0 addr)
4	bits as follows :
	 b0	=0 audio	=1 data
	 b1	=0 4-channel	=1 2-channel
	 b2-7	reserved 
#indent
DATA�CD_StopDisc (&41252)
#Parent CD_
=>	R7 =	pointer to <CDFS control block=>CDFS_controlblock>

This SWI stops a CD playing, and waits until the CD stops spinning.
DATAzCD_DiscUsed (&41253)
#Parent CD_
=>	R0 =	addressing mode for returned size in
	R1 =	pointer to <8-byte block=>.block>
	R7 =	pointer to <CDFS control block=>CDFS_controlblock>

<=	R0 preserved
	R1 corrupted
	R7 preserved

Returns size of CD currently in drive in block pointed to by R1.
#Subpage block
CD_DiscUsed block
For mode 0:
#Indent 2
Offset	Contents
#line
0	Size of CD
4	Size of blocks on CD
#indent

For mode 1:
#indent 2
Offset	Contents
#Line
0	Number of frames
1	Number of seconds
2	Number of minutes
3	0
4	sector size (always 2048, even for audio discs)

{*}Note{*}: (min*60+sec)*75+frames = readable + 151
#indent
DATA�CD_AudioStatus (&41254)
#Parent CD_
=>	R7 =	pointer to <CDFS control block=>CDFS_controlblock>
<=	R0 =	<audio status=>.status>
	R7 preserved

Returns current audio status of drive.
#Subpage status
Audio status
R0	Meaning
#Line
0	Currently playing audio
1	Currently paused
2	Reserved (at present)
3	Audio play successfully completed
4	Error occurred during last audio play
5	Audio play has not been requested
DATA�CD_ByteCopy (&41262)
#Parent CD_
=>	R1 =	pointer to source
	R2 =	pointer to destination
	R3 =	number of bytes to copy
<=	All registers preserved

Fast memory copy routine, providing efficient way of copying any number of bytes, word-aligned or not.

{*}Note{*}: It is recommended that you do not use this as the overhead for calling the SWI is probably greater than any gain you could ever possibly gain.
DATA�CD_Identify (&41263)
#Parent CD_
=>	R7 =	pointer to <CDFS control block=>CDFS_controlblock>
<=	R0,R1 preserved
	R2 =	drive type, or -1 if not recognised

Identifies the drive type of a CD-ROM drive.
DATACD_ConvertToMSF (&41265)
#Parent CD_
=>	R0 =	0
	R1 =	pointer to user's data block
	R7 =	pointer to <CDFS control block=>CDFS_controlblock>

<=	R1 =	returned 32-bit value of MSF address

This SWI converts a block address to MSF, in the form &00MMSSFF.
 
Note: Before use with PlayAudio should have a value added to it to allow for lead-in time of audio CDs. (e.g. 512=2 sec).
DATACD_DriveReady (&41244)
#Parent CD_
=>	R7 =	pointer to <CDFS control block=>CDFS_controlblock>
<=	R0 =	drive state (0 if ready, otherwise not ready)

This SWI returns the current state of drive, saying whether the drive is ready to accept commands or not.
DATACD_DriveStatus (&41243)
#Parent CD_
=>	R7 =	pointer to <CDFS control block=>CDFS_controlblock>
<=	R0 =	<status=>.status>

Returns drive status
#Subpage status
Drive status'
R0	Meaning
#line
1	'OK'
2	'Busy'
4	'Not Ready' e.g. Drive empty
8	'Unavailable'
DATA�CD_Version  (&41240)
#Parent CD_
<=	R0	pointer to <version block=>.block>

Read the version of the CD module installed
#Subpage block
CD_Version block
Offset	Contents
#Line
0	Version number
4...	Version string
DATA�CD_EjectButton  (&41248)
#Parent CD_
=>	R0 =	flag (0 to enable eject, 1 to disable)
	R7 =	pointer to <CDFS control block=>CDFS_controlblock>

This SWI is used to lock or unlock the CD drawer.
DATA�CD_DiscChanged  (&41251)
#Parent CD_
=>	R7 =	pointer to <CDFS control block=>CDFS_controlblock>
<=	R0 =	changed flag (0 if unchanged, 1 if changed)

This SWI checks if the CD drive has changed or not since the last call to this SWI.
DATA�CD_DiscHasChanged  (&41256)
#Parent CD_
=>	R7 =	pointer to <CDFS control block=>CDFS_controlblock>

This SWI marks the CD disc as having changed.
DATA�CD_CloseDrawer (&4125B)
#Parent CD_
=>	R7 =	pointer to <CDFS control block=>CDFS_controlblock>

This SWI closes the CD drawer if supported by the drive.
DATA�CD_Supported  (&41256)
#Parent CD_
=>	R7 =	pointer to <CDFS control block=>CDFS_controlblock>
<=	R0 =	<flags=>.flags>

This SWI checks what the CD drive supports.
#Subpage flags
CD_Supported flags
Value	Meaning
#line
&7	(supports Audio Control ?)
&8	Supports CD_Prefetch
&10	Supports <CD_CloseDrawer>
&20	Supports CD_AudioLevel
&40	CD ROM speed - in multiples up to 255 x speed
&4000	Supports CD_ReadAudio
&8000	(supports Audio params)
DATAHCD_ReadAudio  (&41266)
#Parent CD_
=>	R0 =	addressing mode
	R1 =	start address of section to grab
	R2 =	length of section to grab
	R3 =	pointer to destination buffer (multiple of 256)
	R7 =	pointer to <CDFS control block=>CDFS_controlblock>

This SWI reads audio data from disc, if the sector is lies in an audio track.
DATA5CD_Register (&41260)
#Parent CD_
=>	R0 =	pointer to a <block=>CD_infoblock>
	R1 =	pointer to a 1-word special tag (&EE50EE50), followed by handler code
	R2 =	pointer to workspace for the soft-loadable module (passed in R12 to the handler)

<=	block at R0 updated

This call registers the soft-loadable driver with the CDFSDriver module. The block pointed to by R0 on entry must be in RAM, whereas anything else, i.e. the code for each CD _SWI, can be in ROM. The block must stay put in the memory so that CDFSDriver can check it when detecting drive types.
DATAfCD_Unregister (&41261)
#Parent CD_
=>	R0 =	pointer to a <block=>CD_infoblock>
	R1 =	pointer to a special tag (&EE50EE50 = 1 word) followed by the handler code.

Removes the soft-loadable driver from the CDFSDriver module.  The block pointed to by R0 on entry must be in RAM, whereas anything else, i.e. the code for each CD _ SWI, can be in the ROM.
DATA�CDFS driver information block
Offset	Contents
#Line
0	Information word for CDFSDriver module :
 	Bits	Meaning
 	0-5	The number of CD commands recognised, currently 31, maximum 63
 	6	If set then use the SCSI 1 read data command
 	7	If set then use the SCSI 1 seek command
 	9-31	Reserved (must be zero)
4	Number of times registered (should be set to zero and will be updated by CDFSDriver)
8	Number of drive types recognised by this driver
12	Unused (must be zero)
16	Unused (must be zero)

on output:
12	A pointer to a routine to convert logical blocks to minutes, seconds, frames
16	A pointer to a routine to convert minutes, seconds, frames to logical blocks
DATAsCD_Inquiry
#Parent CD_
=>	R0 =	pointer to <36 byte buffer=>.buffer>
	R7 =	pointer to <CDFS control block=>CDFS_controlblock>

This SWI returns the CD Rom device information.
#subpage buffer
CD_Inquiry buffer
#Parent CD_Inquiry
Offset	Contents
#Line
+0	?
+4	?
+8	device name, space padded to 24 characters
+32	device fireware version, space padded to 4 characters
DATA�CD_GetParameters
#Parent CD_
=>	R0 =	pointer to <16 byte buffer=>cd_dataparams>
	R7 =	pointer to <CDFS control block=>CDFS_controlblock>

This SWI returns the current data read parameters.
DATA�CD data parameters block
#Parent CD_GetParameters
Offset	Contents
#line
0	Log spin-down delay 0-15 (0 equivilent to 16, 1 = shortest)
4	?
8	Read mode (0, 1 and 3 for data, 2 for audio)
12	Speed in multiples of 'standard' speed
DATA�CD_SetParameters
#Parent CD_
=>	R0 =	pointer to <16 byte buffer=>cd_dataparams>
	R7 =	pointer to <CDFS control block=>CDFS_controlblock>

This SWI sets the current data read parameters.
DATANCD_EnquireDataMode
#Parent CD_
=>	R0 =	address mode
	R1 =	cd address
	R7 =	pointer to <CDFS control block=>CDFS_controlblock>
<=	R0 =	<Data mode=>.datamode>

This SWI finds out what kind of data is on the disc.
#Subpage datamode
Data mode
Mode	Meaning
#Line
0	Audio
1	Data Mode 1
2	Data Mode 2 format 1
3	Data Mode 2 format 2
DATA�CD_Control
#Parent CD_
=>	R0 =	1
	R7 =	pointer to <CDFS control block=>CDFS_controlblock>

This SWI initialises the drive.
DATA<CD_ReadData
#Parent CD_
=>	R0 =	0
	R1 =	start sector
	R2 =	number of sectors to read
	R3 =	pointer to destination buffer
	R4 =	length of buffer
	R7 =	pointer to <CDFS control block=>CDFS_controlblock>

This SWI reads data from the CD, using the current mode (see <CD_SetParameters> and <CD_EnquireDataMode>)
DATA�CD_CheckDrive (&41250)
#Parent CD_
=>	R7 =	pointer to <CDFS control block=>CDFS_controlblock>
<=	R0 =	0 if CD in drive, error otherwise

This SWI checks the drive for a disc.
DATA�CD_IsDrawerLocked (&4125C)
#Parent CD_
=>	R7 =	pointer to <CDFS control block=>CDFS_controlblock>
<=	R0 =	0 if not locked, 1 if locked, or an error if not supported

This SWI checks whether the draw is locked.
DIR$,,�'G���=��P!RootDATAPATAPI
#Parent !Root
#Prefix ATAPI_
#Table Columns 2
GetDrives
#EndTable
DIR$,,(F������U�!RootDATA�RemotePrinterSupport
#Parent !Root
#Prefix RemotePrinterSupport_
#Table Columns 2
ReadPollwordLocation
GetNextEvent
ReadUniqueAddress
Enable
Disable
EnableUpcalls
DisableUpcalls
#EndTable
DIR$PP)H����[!Rootx)H���,�OMakeFontDATA[MakePSFont
#Parent !Root
#Prefix MakePSFont_
#Table Columns 2
<MakeFont>
#EndTable
DATAOMakePSFont_MakeFont  (&43440)
#Parent MakePSFont
For internal use only.DIR$((�*H����}@�3!Root�+H������3BMUvars-H���:�A8CommandBMUL.H����t@�ControlL2H���HA�ReadBMUVariable3H���
�?7Speed@4H����`AWriteBMUVariableT5H���n��3BMUflagsDATA�Portable
#Parent !Root
#Prefix Portable_
#Table Columns 2
<Speed>
<Control>
<ReadBMUVariable>
<WriteBMUVariable>
<CommandBMU>
#EndTable
DATA�Battery Management Unit Variables
#Parent Portable_
Number	Description
#line
0	version number and memory map of BMU microcode
1	battery capacity	(nominal)
2	 			(measured)
3	 			(used)
4	 			(useable)
5	(reserved)
6	charge estimate ({*}may{*} be written to)
7	instantaneous voltage
8	instantaneous current
9	instantaneous temperature
10	<flags=>Portable_BMUflags>
11	charge rate (in bits 4-7)
DATA8Portable_CommandBMU  (&42FC4)
#Parent Portable_
=>	R0 =	Reason code
	 	1	remove power
	 	4	set autostart
	R1 =	autostart delay in minutes
<=	all registers preserved


This call issues a command to the Battery Management Unit. The value of <BMU variables=>Portable_BMUvars> may not immediately be updated.DATA�Portable_Control  (&42FC1)
#Parent Portable_
=>	R0 =	EOR mask
	R1 =	AND mask
<=	R0 =	old control value
	R1 =	new control value

This call controls power and miscallaneous features:

   New value = (Old value AND R2) EOR R1

Value is a bitfield specifying:

#tab
bit	meaning when set
#line
0	Econet power enabled
1	LCD display power enabled
2	external video display power enabled
3	serial buffer and oscillator power enabled
4	dual panel mode
5,6	video clock control:
 	0	external clock
 	1	crystal � 2
 	2	crystal
 	3	reserved
7	invert video clock
8	enable back light
9	display has 2 extra lines (else 1 extra)
10	2 DRAMs used for dual panel (else 1)
14	FDC oscillator power enabled
16	LCD palette set for inverse video
11-13,15,17-31	0 (reserved)

Changing bits 0, 3, 14 will generate <Service_Portable=>service_8a>.

The 82C711 shares one oscillator - this will only be powered down if bits 3 & 14 are both clear. On some machines the oscillator is used by other parts of the system and can never be powered down.DATA�Portable_ReadBMUVariable  (&42FC2)
#Parent Portable_
=>	R0 =	<BMU variable number=>Portable_BMUvars>
<=	R0 preserved
	R1 =	value

This call reads Battery Management Unit VariablesDATA7Portable_Speed  (&42FC0)
#Parent Portable_
=>	R0 =	EOR mask
	R1 =	AND mask
<=	R0 =	old speed
	R1 =	new speed

This call sets the processor speed. The new speed is set as:

   New speed = (Old speed AND R2) EOR R1

Currently supported speed settings are:
# what a bewildering range
#tab
 	0	fast
 	1	slowDATAPortable_WriteBMUVariable  (&42FC3)
#Parent Portable_
=>	R0 =	<BMU variable number=>Portable_BMUvars>
	R1 =	new value
<=	R0,R1 preserved

This call writes Battery Management Unit Variables. Variables other than the charge estimate (variable 6) should not be written.DATA�Battery Management Unit Flags
#Parent Portable_BMUvars
Bit	Meaning when set
#line
1	lid open
2	threshold 2 reached
3	threshold 1 reached
4	fault in charging system
5	charge state known
6	battery present
7	charger connectedDATA�OS SWIs manual
#Align Centre
{fh3}OS SWIs manual{f}
{align centre;/}With additional notes from the wise and learned{/;align}
# Gerph> You've got to have a giggle sometimes :-)
#Line
#Align Left
This manual is part of a collection comprising the main public domain programming reference. The other manuals in the series are :
#Indent 2
#Postfix :!Root
<OS>		The base operating system stuff
<Wimp>		The desktop part of the operating system
<InetSWIs>	Internet based SWIs
<InetSocket>	Internet socket calls
<MiscSWIs>	Miscellaneous SWIs
<VDU>		VDU commands
<Toolbox>	Toolbox (by Niel Bingham)
#Indent

For comments, suggestions and submissions for these, please mail Justin Fletcher <\<gerph@innocent.com\>=>#URL mailto:gerph@innocent.com> who is currently moderating the collection. A collection of <notes=>.notes> about this manual is available. The primary location for these manuals will be <http://freenet.barnet.ac.uk/manuals/=>#URL http://freenet.barnet.ac.uk/manuals/>.

Click <here=>.hist304> for some history.
#Subpage notes
Notes on how the manual is structured
These are some very incomplete notes on how the manual should be structured. If any part of it isn't then it will eventually be updated, or I'll change this specification. It's mostly here to remind me anyhow.

Each SWI should be documented in the form :

#Indent 2
\<title\> (\<hex swi number\>)
\#Parent \<something\>
=>\<tab\>	R# =\<tab\>	\<contents\>
\<tab\>		R# =\<tab\>	\<contents\>
[etc]
<=		R#-R# preserved
		R# corrupted
\<tab\>		R# =\<tab\>	\<contents\>
[etc]

This SWI does x, y and z. Short examples may be given here.

Note: something important.
#Indent

The input or output parameters may be omitted if none are required. It is assumed that the registers are preserved, but this may be explicitly be stated. Registers should be listed it ascending order, unless a discontinuous range is being given in which case it should appear at the top of the return parameters list.

If a register or other entry may consist of multiple entries it should be listed in a subpage, with a descriptive reference to it as the link. If more than one SWI may use that set of values then the subpage should be a data file in a sensible location (usually the same directory).

The \<contents\> entry should be a single sentance, with clarification or alternatives in a comma seperated list, and only using brackets to indicate ranges. Where long blocks of alternatives are listed, consider using a table or split lines and use tabbing to align; the former is preferable.

Tables should consist of :

#Indent 2
Offset\<tab\>	Meaning
\#Line
x\<tab\>	y
[etc]
others\<tab\>	reserved, must be zero
#Indent

Others may be omitted if not relevant, offsets should be given in decimal, unless otherwise stated on the page. Bit masks are described as 'Meaning if set', and should be inversely true if unset. If this is not the case then a seperate description may be required.

For services, upcalls, events, etc the reason code need not be given in the input parameters, but is it is it should be given as a number and followed by "(reason code)" or similar.

Current 'normal' cross-referencable objects are :

#Tab
Page		Contents
#Line
swi_dateformat		Date format string tokens
swi_errorblock		Error block format
swi_bbox		Generic bounding box
fsys_ident		List of Filing System numbers
fsys_objattr		File attribute bits
fsys_loadexec		File Load/Exec word meaning
os_mousebuttons		Mouse button bit mapping
os_scalefactors		Standard scaler block
os_setcolouractions	GCOL actions
os_spriteop_area	Sprite area block
os_spriteop_ptr		Sprite block
buffer_buffers		List of buffer numbers
colourtrans_pixtrans	Pixel Translation Table format
territory_anumbers	List of alphabet numbers
territory_numbers	List of territory numbers
drawfile_format		Drawfile format
drawfile_header		Drawfile header
draw_transform		Draw transformation matrix block
draw_transformunits	Draw transform units (&XXXX.XXXX)
#Subpage hist235
SWIs History v2.35
�	Masses of extra entries
�	Most of the RISC OS 3.6 SWIs added
�	A few new wimp messages added
�	Some RISC OS 3.7 SWIs added, a notable exception is CallASWI
�	Window Manager 3.8 Wimp documentation added (Well, Wimp_OpenWindow, Wimp_CloseWindow, Wimp_GetWindowState - as I decrypt any others I'll add them...)
�	Some ProFiler SWIs added
�	NewsBase messages updated from 0.56 documentation
�	ImageEntry added

<Next history=>.hist300>
#Subpage hist300
OS History v3.00
�	The name ! This is now the OS manual, most of this section should remain pretty static, the other sections, Wimp, Misc and Inet should be updated more regularly than the main operating system (hopefully)
�	A large number of new services and other little things added
�	Reformatting of some pages more in line with the rest of the manual
�	SpriteOps updated to include hex number, and new calls
�	Added a few more services
�	FileEntry added, incomplete at present; needs FileEntry_Func updating, and FileEntry_GBPB adding
�	Removed obsolete '\\\<=' usage, expanded 'ptr', 'no' and added more descriptions
�	Moved some blocks from OS to Wimp as it seems more appropriate.

#Tab
<Previous history=>.hist235>	<Next history=>.hist302>
#Subpage hist302
OS History v3.02
#Align Right
{/}15 Nov 1997-10 Jan 1998{/}
#Align Left
�	KeyV updated with reference to the keyboard ID
�	Updates to CD section (Dave Thomas)
�	More updates to CD section (Eddie Edwards)
�	Moved Service_A7 to InetSWIs as it's more logical; more similar changes may follow.
�	Territory module completely documented (J.B.Blaukopf)
�	Removed spurious ScreenModes documentation

<Previous history=>.hist300>	<Next history=>.hist303>
#Subpage hist303
OS History v3.03
#Align Right
{/}22 Jan 1998{/}
#Align Left
�	Font routines now completely documented (Nicholas Clark)
�	Modifications to various swis (Nicholas Clark)
�	FPEmulator, Hourglass_Colours, IIC, MakePSFont, Super documented (Nicholas Clark)
�	OS_FSControl 37 fixed, miscellaneous Territory calls modified.
�	DrawFile format moved into DrawFile from Draw
�	ColourTrans now completely documented, additional vectors added (various)
�	Sound SWIs documented (Nicholas Clark)
�	Started making some notes on the structure
�	Transformation matrix added, along with font 24 for the Sidney font so that we can use the matrix blocks
�	Reorganisation of certain parts of the manual, updates to services
�	Released on ftp://freenet.barnet.ac.uk/manuals/j.fletcher/
	Note: This /should/ have been a beta release, but I needed to release something on the manuals site.

<Previous history=>.hist302>	<Next history=>.hist304>
#Subpage hist304
OS History v3.04
#Align Right
{/}09 Feb 1998-24 Mar 1998{/}
#Align Left
�	Many changes (Econet, Service, Event, Vector, Portable, etc) by Nicholas Clark
�	More changes (NetFS, ResourceFS, Squash) by Nicholas Clark
�	Finally plucked up courage to run StrongTst across it again. Most of the links should now be valid.
�	OS_ConvertBinary/SpacedCardinal/SpacedInteger added.
�	Many service calls added, a few other changes.
�	Far, far too many changes made to even think about - it's all Nicks doing.
�	Updated FileCore entries to be a little more helpful.
�	Generic bounding box added, and linked from other entries
�	More Byte, Vector, Service, etc calls by Nick.
�	DrawFile services added
�	Serious note in OS_File about non-return of 'load', and expansion of variable.
�	NetPrint documented, updates to various OS SWIs and RPC keyboard diagram added (Nick Clark)
�	Reformatted, links checked and clean copied for release (phew!)

<Previous history=>.hist303>
DIR$�UH����1g&`!Root0WG�����3��CloseXG����3͉GetBytes�YH���L ��GetBytesBt[H����4qGetBytesU�]G����3�OpenbG����3͊PutBytes�cH����OPutBytesB�dH����4~PutBytesUdfH�����4GBPB�iH���C�f&�GBPB1HlH���5�f&VGBPB3�oH����1�+`Args�H���T2�+|Filet�H���3�+�FuncDATA`FSEntry - Filing system entry points
# This page is included from other pages I think.
#Parent !Root
Filing system entry points are defined by the filing system information block :

#fH4
#Include fsys_infoblock

To create a filing system, use <OS_FSControl 12=>OS_FSControl12>.
To remove a filing system, use <OS_FSControl 14=>OS_FSControl16>.
DATA�FSEntry_Close
#Parent FSEntry_
=>	R1 =	internal file handle returned by <FSEntry_Open>
	R2 =	new load address of file
	R3 =	new exec address of file

This entry point is called when files are being closed.
DATA�FSEntry_GetBytes
#Parent FSEntry_
=>	R1 =	internal handle returned by <FSEntry_Open>
	others dependant on buffering

This is called to read data from a file. There are two forms of the call used, depending on whether the filing system uses system buffered files or not :
#Indent 2
�	<FSEntry_GetBytes=>FSEntry_GetBytesB> (buffered)
�	<FSEntry_GetBytes=>FSEntry_GetBytesU> (unbuffered)
DATA�FSEntry_GetBytes (buffered)
#Parent FSEntry_
=>	R1 =	internal file handle returned by <FSEntry_Open>
	R2 =	pointer to buffer to read into
	R3 =	length to read
	R4 =	offset from which to read
<=	all preserved

This entry point is called when data is needed to be read from a file for which FileSwitch has no buffered data. This will not be performed on the initial open, but only on subsequent access to the file.

Memory addresses are *not* guaranteed to be word aligned.
DATAqFSEntry_GetBytes (unbuffered)
#Parent FSEntry_
=>	R1 =	internal file handle returned by <FSEntry_Open>
#Tab
<=	If C clear, R0 =	byte read
	If C set, R0 =		undefined (at end of file)

This entry point is called when data is needed to be read from a file for which FileSwitch has no buffered data. This will not be performed on the initial open, but only on subsequent access to the file. You should update your sequential pointer unless the end of the file has been reached. This will be called in place of a <GBPB=>FSEntry_GBPB> call if it is not available.

Memory addresses are *not* guaranteed to be word aligned.
DATAFSEntry_Open
#Parent FSEntry_
=>	R0 =	<reason code=>.reason>
	R1 =	pointer to filename
	R3 =	FileSwitch file handle which will be allocated
	R6 =	pointer to special field, or 0 if not present

<=	R0 =	<file information word=>.fileinfo>
	R1 =	internal file handle, or 0 if unable to open
	R2 =	buffer for FileSwitch to use, or 0 if unbuffered (powers of 2 from 64 to 1024)
	R3 =	file extent if buffered
	R4 =	space allocated to file if buffered (must be a multiple of R2)
	
This entry point is called when an attempt is made to access a file inside an image. The internal file handle will be referred to by FileSwitch in subsequent file accesses if the file was successfully opened.
#
#Subpage fileinfo
File information word
Bit	Meaning
#Line
31	Writes are allowed
30	Reads are allowed
29	File is a directory
28	Unbuffered OS_GBPB supported (only if stream-type)
27	Stream is interactive
#Subpage reason
FSEntry_Open reasons
Reason	Meaning
#Line
0	File is opening for read
1	File is being created and opened for update
2	File is opening for update
DATA�FSEntry_PutBytes
#Parent FSEntry_
=>	R1 =	internal handle returned by <FSEntry_Open>
	others dependant on buffering

This is called to wrote data from a file. There are two forms of the call used, depending on whether the filing system uses system buffered files or not :
#Indent 2
�	<FSEntry_PutBytes=>FSEntry_PutBytesB> (buffered)
�	<FSEntry_PutBytes=>FSEntry_PutBytesU> (unbuffered)
DATAOFSEntry_PutBytes (buffered)
#Parent FSEntry_
=>	R1 =	internal file handle returned by <FSEntry_Open>
	R2 =	pointer to buffer to write from
	R3 =	length to write
	R4 =	offset at which to write
<=	all preserved

This entry point is called when data is written to a file. Memory addresses are *not* guaranteed to be word aligned.
DATA~FSEntry_PutBytes (unbuffered)
#Parent FSEntry_
=>	R0 =	byte to put to file (will have top bits clear)
	R1 =	internal file handle returned by <FSEntry_Open>
<=	all preserved

This entry point is called when data is written to a file. It will be used in place of a <GBPB=>FSEntry_GBPB> call if this is not available.

Memory addresses are *not* guaranteed to be word aligned.
DATAFSEntry_GBPB
#Parent FSEntry_
#Wrap off
=>	R0 =	<reason code=>.reason>
	R1 =	internal file handle returned by <FSEntry_Open>
	R2 =	pointer to buffer
	R3 =	bytes to transfer
if R0 = 1 or 3
	R4 =	file pointer
#Wrap

This entry point is called to perform multiple byte operations on unbuffered files. It is only called if bit 28 of the information word returned by FSEntry_Open is set. (Otherwise fileswitch uses multiple <FSEntry_GetBytes=>FSEntry_GetBytesU> or <FSEntry_PutBytes=>FSEntry_PutBytesU> calls).
#
#Subpage reason
FSEntry_GBPB reason codes
Reason	Meaning
#Line
#Wrap off
1	<Put bytes to specified pointer=>FSEntry_GBPB1>
2	<Put bytes to current pointer=>FSEntry_GBPB1>
3	<Get bytes from specified pointer=>FSEntry_GBPB3>
4	<Get bytes from current pointer=>FSEntry_GBPB3>
#Wrap
DATA�FSEntry_GBPB 1 and 2
#Parent FSEntry_GBPB
#Wrap off
=>	R0 =	1 (put bytes to specified pointer)
	 	2 (put bytes to current pointer)
	R1 =	internal file handle returned by <FSEntry_Open>
	R2 =	pointer to buffer
	R3 =	bytes to transfer
if R0 = 1
	R4 =	file pointer
#Wrap

<=	R2 =	pointer after end of data
	R3 =	number of bytes *not* transferred
	R4 =	new file pointer

This entry point is called to perform multiple byte writes on unbuffered files. If the specified pointer is beyond the current end of the file, then the area between the two must be filled with 0 bytes before the data is transferred. The file handle is guaranteed not to be a directory, and to have had write access at time of opening.
DATAVFSEntry_GBPB 3 and 4
#Parent FSEntry_GBPB
#Wrap off
=>	R0 =	3 (get bytes from specified pointer)
	 	4 (get bytes from current pointer)
	R1 =	internal file handle returned by <FSEntry_Open>
	R2 =	pointer to buffer
	R3 =	bytes to transfer
if R0 = 1
	R4 =	file pointer
#Wrap

<=	R2 =	pointer after end of data
	R3 =	number of bytes *not* transferred
	R4 =	new file pointer

This entry point is called to perform multiple byte reads on unbuffered files. If the specified pointer is beyond the current end of the file, then you must not update the pointer, and must not return an error. The file handle is guaranteed not to be a directory, and to have had read access at time of opening. You must not try to keep your own 'EOF-error-on-next-read' flag - this is FileSwitch's job. FileSwitch will set the C flag if R3=0 on return - you do not need to.
DIR$``qG����3��!Root�sG����3͜0|uG���,�3̓1wG���b�3�O10PxG���>�3�w2�yG���5�3��3�{G���D�3�4�|G���T�3�%5�}G���X�3��6�G���n�3�V7�G���}�3�8�G�����3� 9DATA�FSEntry_Args
#Parent FSEntry_
#Wrap off
=>	R0 =	<reason code=>.reason>
	R1 =	internal file handle returned by <FSEntry_Open>
	others dependant on call
#Wrap

This entry point is called when control operations are performed on open files.
#
#Subpage reason
FSEntry_Args reason codes
Reason	Meaning
#Line
0	<Read sequential pointer=>FSEntry_Args0>
1	<Write sequential pointer=>FSEntry_Args1>
2	<Read file extent=>FSEntry_Args2>
3	<Write file extent=>FSEntry_Args3>
4	<Read size allocated to file=>FSEntry_Args4>
5	<Check for EOF=>FSEntry_Args5>
6	<Flush modified data=>FSEntry_Args6>
7	<Ensure file size=>FSEntry_Args7>
8	<Zero pad file=>FSEntry_Args8>
9	<Read datastamp=>FSEntry_Args9>
10	<Update image stamp=>FSEntry_Args10>
DATA�FSEntry_Args 0
#Parent FSEntry_Args
=>	R0 =	0 (Read sequential pointer)
	R1 =	internal file handle returned by <FSEntry_Open>
<=	R2 =	sequential pointer, or 0 if not applicable

This call is made when FileSwitch needs to know how far into a file the current pointer is. This will only be called for unbuffered files.

On systems with no concept of extents (eg streams) this should *not* return an error.
DATA�FSEntry_Args 1
#Parent FSEntry_Args
=>	R0 =	1 (Write sequential pointer)
	R1 =	internal file handle returned by <FSEntry_Open>
	R2 =	sequential pointer

This call is made when FileSwitch needs to know how far into a file the current pointer is. This will only be called for unbuffered files.

On systems with no concept of extents (eg streams) this should *not* return an error.
DATAOFSEntry_Args 10
#Parent FSEntry_Args
=>	R0 =	10 (Update image stamp)
	R1 =	internal file handle returned by <FSEntry_Open>
	R2 =	new image stamp

This call is made to notify the filing system of a new image stamp associated
with this image. This is only applicable if the object within which the filehandle exists is an image.
DATAwFSEntry_Args 2
#Parent FSEntry_Args
=>	R0 =	2 (Read file extent)
	R1 =	internal file handle returned by <FSEntry_Open>
<=	R2 =	file extent, or 0 if not applicable

This call is made when FileSwitch needs to know how long a file is. This will only be called for unbuffered files.


On systems with no concept of extents (eg streams) this should *not* return an error.
DATA�FSEntry_Args 3
#Parent FSEntry_Args
=>	R0 =	3 (Write file extent)
	R1 =	internal file handle returned by <FSEntry_Open>
	R2 =	new file extent

This call is made when FileSwitch needs to extend a file beyond it's current length. For buffered files this is only called when the file is closed. On unbuffered files this is called whenever the user requests it.

On systems with no concept of extents (eg streams) this should *not* return an error.
DATA�FSEntry_Args 4
#Parent FSEntry_Args
=>	R0 =	4 (Read space allocated)
	R1 =	internal file handle returned by <FSEntry_Open>
<=	R2 =	size allocated to the file

This call is made when FileSwitch wishes to find the actual length of a file.
DATA%FSEntry_Args 5
#Parent FSEntry_Args
=>	R0 =	5 (Check for EOF)
	R1 =	internal file handle returned by <FSEntry_Open>
<=	R2 =	-1 if at EOF, 0 otherwise 

This call is made when FileSwitch wishes check whether we are at the end of the file. This will only be called for unbuffered files.
DATA�FSEntry_Args 6
#Parent FSEntry_Args
=>	R0 =	6 (Flush modified data)
	R1 =	internal file handle returned by <FSEntry_Open>
<=	R2 =	load address of file, or 0 if not possible
	R3 =	exec address of file, or 0 if not possible

This call is made when FileSwitch wants you to store all cached data. This will only be called if bit 27 of the <information word=>fsys_infoword> is set and files are buffered.

The load and exec addresses are used for purposes of date stamping.
DATAVFSEntry_Args 7
#Parent FSEntry_Args
=>	R0 =	7 (Ensure file size)
	R1 =	internal file handle returned by <FSEntry_Open>
	R2 =	size of file
<=	R2 =	size actually ensured

This call is made to ensure that a file is of a particular size. Space should be reserved, but it is not required to be initialised. This is meaningless on streams.
DATA�FSEntry_Args 8
#Parent FSEntry_Args
=>	R0 =	8 (Zero pad file)
	R1 =	internal file handle returned by <FSEntry_Open>
	R2 =	offset at which to write
	R3 =	number of bytes to write

This call is made to pad a file with zeroes to initialise it.
DATA FSEntry_Args 9
#Parent FSEntry_Args
=>	R0 =	9 (Read file datestamp)
	R1 =	internal file handle returned by <FSEntry_Open>
<=	R2 =	load address of file, or 0 if not possible
	R3 =	exec address of file, or 0 if not possible

This call is made to read the datestamp of an open file.
DIR$||��G���ʄ3��!RootH�G����3��0 �G�����3�z1��G���[�3�10��G���s�3�
2��G�����3͵255p�G�����3�
3��G�����3�	4��G����3��5p�G���$�3�t6�G���;�3��7��G���I�3͑8H�G�����3�,9DATA�FSEntry_File
#Parent FSEntry_
=>	R0 =	<reason code=>.reason>
	R1 =	pointer to filename
	others dependant on call

This entry point is called for operations on whole files.
#
#Subpage reason
FSEntry_File reason codes
Reason	Meaning
#Line
0	<Save file=>FSEntry_File0>
1	<Write catalogue information=>FSEntry_File1>
2	<Write load address=>FSEntry_File2>
3	<Write exec address=>FSEntry_File3>
4	<Write attributes=>FSEntry_File4>
5	<Read catalogue information=>FSEntry_File5>
6	<Delete object=>FSEntry_File6>
7	<Create file=>FSEntry_File7>
8	<Create directory=>FSEntry_File8>
9	<Read catalogue information without length=>FSEntry_File9>
10	<Read block size=>FSEntry_File10>
255	<Load file=>FSEntry_File255>DATA�FSEntry_File 0
#Parent FSEntry_File
=>	R0 =	0 (Save file)
	R1 =	pointer to filename
	R2 =	<load address=>fsys_loadexec> of file
	R3 =	<exec address=>fsys_loadexec> of file
	R4 =	pointer to start of buffer
	R5 =	pointer to byte after end of buffer
	R6 =	pointer to special field, or 0 if not present
<=	R6 =	pointer to leafname for printing *OPT 1 info

This call is made to save a block of memory as a file. The buffer in which R6 exists need not exist for long.
DATAzFSEntry_File 1
#Parent FSEntry_File
=>	R0 =	1 (Write catalogue information)
	R1 =	pointer to wildcarded filename
	R2 =	<load address=>fsys_loadexec> of file
	R3 =	<exec address=>fsys_loadexec> of file
	R4 =	new <attributes=>fsys_objattr> of file
	R6 =	pointer to special field, or 0 if not present

This call is made to set the catalogue information about a given file.
DATAFSEntry_File 10
#Parent FSEntry_File
=>	R0 =	10 (Read block size)
	R1 =	pointer to filename
	R6 =	pointer to special field, or 0 if not present
<=	R2 =	natural block size of file

This call is made to read the natural block size of a file, see <FSEntry_Open>.
DATA
FSEntry_File 2
#Parent FSEntry_File
=>	R0 =	2 (Write load address)
	R1 =	pointer to wildcarded filename
	R2 =	<load address=>fsys_loadexec> of file
	R6 =	pointer to special field, or 0 if not present

This call is made to set the load address for a given file.
DATA�FSEntry_File 255
#Parent FSEntry_File
=>	R0 =	255 (Load file)
	R1 =	pointer to wildcarded filename
	R2 =	address to load at
	R6 =	pointer to special field, or 0 if not present

<=	R0 corrupted
	R2 =	<load address=>fsys_loadexec> of file
	R3 =	<exec address=>fsys_loadexec> of file
	R4 =	file length
	R5 =	<attributes=>fsys_objattr> of file
	R6 =	pointer to filename for *OPT 1 info

This call is made to load a file into memory.
DATA
FSEntry_File 3
#Parent FSEntry_File
=>	R0 =	3 (Write exec address)
	R1 =	pointer to wildcarded filename
	R3 =	<exec address=>fsys_loadexec> of file
	R6 =	pointer to special field, or 0 if not present

This call is made to set the exec address for a given file.
DATA	FSEntry_File 4
#Parent FSEntry_File
=>	R0 =	4 (Write attributes)
	R1 =	pointer to wildcarded filename
	R5 =	new <attributes=>fsys_objattr> of file
	R6 =	pointer to special field, or 0 if not present

This call is made to set the attributes of a given file.
DATA�FSEntry_File 5
#Parent FSEntry_File
=>	R0 =	5 (Read catalogue information)
	R1 =	pointer to filename
	R6 =	pointer to special field, or 0 if not present

<=	R0 =	<object type=>fsys_objtype>
	R2 =	<load address=>fsys_loadexec> of file
	R3 =	<exec address=>fsys_loadexec> of file
	R4 =	length of file
	R5 =	<attributes=>fsys_objattr> of file
	R6 preserved

This call is made to read the catalogue information about a given file.

The object type 'Image' must not be returned.
DATAtFSEntry_File 6
#Parent FSEntry_File
=>	R0 =	6 (Delete object)
	R1 =	pointer to filename
	R6 =	pointer to special field, or 0 if not present

<=	R0 =	<object type=>fsys_objtype>
	R2 =	<load address=>fsys_loadexec> of file
	R3 =	<exec address=>fsys_loadexec> of file
	R4 =	length of file
	R5 =	<attributes=>fsys_objattr> of file

This call is made to delete a file.
DATA�FSEntry_File 7
#Parent FSEntry_File
=>	R0 =	7 (Create file)
	R1 =	pointer to filename
	R2 =	<load address=>fsys_loadexec> of file
	R3 =	<exec address=>fsys_loadexec> of file
	R4 =	start address in memory
	R5 =	byte after end address in memory
	R6 =	pointer to special field, or 0 if not present
<=	R6 =	pointer to filename for *OPT 1 info

This call is made to create a file. R4 and R5 are used to calculate the length of the file and no data is stored.
DATA�FSEntry_File 8
#Parent FSEntry_File
=>	R0 =	8 (Create directory)
	R1 =	pointer to filename
	R2 =	<load address=>fsys_loadexec> of file
	R3 =	<exec address=>fsys_loadexec> of file
	R4 =	number of entries, or 0 for default
	R6 =	pointer to special field, or 0 if not present

This call is made to create a directory. R4 and R5 are used to calculate the length of the file and no data is stored.
DATA,FSEntry_File 9
#Parent FSEntry_File
=>	R0 =	9 (Read catalogue information without length)
	R1 =	pointer to filename
	R4 =	number of entries, or 0 for default
	R6 =	pointer to special field, or 0 if not present
<=	R0 =	<object type=>fsys_objtype>
	R2 =	<load address=>fsys_loadexec> of file
	R3 =	<exec address=>fsys_loadexec> of file
	R5 =	<attributes=>fsys_objattr> of file

This call is made to read the catalogue information excluding the length. This will only be called if bit 26 if the filing system <information word=>fsys_infoword> is set.
DIR$�� �H���"9� �!Root�H�����e&T88�H�����f&0P�H���{��1�H����޶�10��H���F���11H�H�����f&z12ıH����&
14ԵH�����&15�H����| �16��H���^_| p17$�H����tf&a18��H�����&19��H���gf&�2(�H���HS~ 204�H���z`~ 
23@�H����g*�244�H����� 258�H����� e26��H����;� �278�H����@� �28��H������'�29��H���~_��30�H���[�� �30�H���f&�31��H���h4� �32d�H���|�g*�33��H����f&�34��H���Qf&�4��H���E�e&�5<�H���+.} �6��H�����e&�7l�H���}�&�9DATA�FSEntry_Func
#Parent FSEntry_
=>	R0 =	<reason code=>.reason>
	R1 =	pointer to filename
	others dependant on call

This entry point is called for operations on the filing system in general.
#
#Subpage reason
FSEntry_Func reason codes
Reason	Meaning
#Line
0	<Set current directory (RO2)=>FSEntry_Func0>
1	<Set library directory (RO2)=>FSEntry_Func1>
2	<Catalogue directory (*Cat)=>FSEntry_Func2>
3	<Examine directory (*Ex)=>FSEntry_Func3>
4	<Catalogue library (*LCat)=>FSEntry_Func4>
5	<Examine library (*LEx)=>FSEntry_Func5>
6	<Examine objects (*Info)=>FSEntry_Func6>
7	<Set FS Options (*Opt)=>FSEntry_Func7>
8	<Rename object=>FSEntry_Func8>
9	<Access objects=>FSEntry_Func9>
10	<Boot from filing system=>FSEntry_func10>
11	<Read name and boot option=>FSEntry_func11>
12	<Read CSD and priviledge byte=>FSEntry_func12>
13	<Read library and priviledge byte=>FSEntry_func12>
14	<Read directory entries=>FSEntry_func14>
15	<Read directory entries and info=>FSEntry_func15>
16	<Shutdown filing system=>FSEntry_func16>
17	<Print startup banner=>FSEntry_func17>
18	<Set directory contexts (never called)=>FSEntry_func18>
19	<Read directory entries and information=>FSEntry_func19>
20	<Output full information on objects=>FSEntry_func20>
23	<Canonicalise special field and disc name=>FSEntry_func23>
24	<Resolve wildcard=>FSEntry_func24>
25	<Read defect list=>FSEntry_func25>
26	<Add a defect=>FSEntry_func26>
27	<Read boot option=>FSEntry_func27>
28	<Write boot option=>FSEntry_func28>
29	<Read used space map=>FSEntry_func29>
30	<Read free space map=>FSEntry_func30>
31	<Name image=>FSEntry_func31>
32	<Stamp image=>FSEntry_func32>
33	<Get usage of offset=>FSEntry_func33>
34	<Notification of changed directory=>FSEntry_func34>
DATATFSEntry_Func 8
#Parent FSEntry_Func
=>	R0 =	8 (Rename object)
	R1 =	pointer to original filename
	R2 =	pointer to new filename
	R6 =	pointer to first special field, or 0 if not present
	R7 =	pointer to second special field, or 0 if not present
<=	R1 =	0 if renamed, any other value otherwise

This call is made to rename an object.
DATAFSEntry_Func 0
#Parent FSEntry_Func
=>	R0 =	0 (Set current directory)
	R1 =	pointer to (wilcarded) directory name
	R6 =	pointer to special field, or 0 if not present

This call is only made by RISC OS 2 (or to perform {fCode}*Opt 1{f} when bit 23 of the filing system <information word=>fsys_infoword> is clear. Not that the PRM says how). If the directory name is null you should set the current directory to the user root directory. This call should not make the FS current - you should provide a separate command to do this.
DATA�FSEntry_Func 1
#Parent FSEntry_Func
=>	R0 =	1 (Set library directory)
	R1 =	pointer to (wilcarded) directory name
	R6 =	pointer to special field, or 0 if not present

This call is only made by RISC OS 2. If the directory name is null you should set the library directory to a filing system default. This call should not make the FS current - you should provide a separate command to do this.
DATA�FSEntry_Func 10
#Parent FSEntry_Func
=>	R0 =	10 (Boot from filing system)

<=	may not return if it runs an application

This call should boot your filing system.
DATA�FSEntry_Func 11
#Parent FSEntry_Func
=>	R0 =	11 (Read name and boot option)
	R2 =	buffer to write data to
	R6 =	0, as special field not allowed here

This call should return the disc name for the disc containing the filing systems CSD, and its boot option. The data is to be written <in this format=>.format>.

Beware - the buffer pointed to will not have been validated with <OS_ValidateAddress> (as FileSwitch does not know how big it should be) - you should be preparaed to cope with faulting if writing to invalid memory. If the memory is invalid you should look up the error token 'BadWrt'.

It is unclear how the calling program is to find out how long the buffer should be, short of ensuring that it is at the top of memory so that overruns will cause memory errors.
#subpage format
FSEntry_Func 11 buffer format
#Wrap off
Size	Value			Value if CSD unset
#Wrap
#Line
1	name length byte	5
/n/	name (not terminated)	"Unset"
1	boot option		0
DATAzFSEntry_Func 12 / 13
#Parent FSEntry_Func
=>	R0 =	12 (Read CSD and priviledge byte)
	 	13 (Read library and priviledge byte)
	R2 =	buffer to write data to
	R6 =	0, as special field not allowed here

This call should return the current directory name and privilege byte <in this format=>.format> - it is only called by RISC OS 2

Beware - the buffer pointed to will not have been validated with <OS_ValidateAddress> (as FileSwitch does not know how big it should be) - you should be preparaed to cope with faulting if writing to invalid memory. If the memory is invalid you should look up the error token 'BadWrt'.

It is unclear how the calling program is to find out how long the buffer should be, short of ensuring that it is at the top of memory so that overruns will cause memory errors.
#subpage format
FSEntry_Func 12 / 13 buffer format
#Wrap off
Size	Value			Value if CSD / Library unset
#Wrap
#Line
1	0			0
1	name length byte	5
/n/	name (not terminated)	"Unset"
1	privilege byte		0

#tab
The privilege byte is:
0	if you own the directory (and hence may create objects in it)
255	you do not own the directory (to you it is public)
DATA
FSEntry_Func 14
#Parent FSEntry_Func
=>	R0 =	14 (Read directory entries)
	R1 =	pointer to (wilcarded) directory name
	R2 =	pointer to buffer
	R3 =	number of objects to read
	R4 =	where to start, 0 for first time
	R5 =	length of buffer
	R6 =	pointer to special field, or 0 if not present

<=	R3 =	number of objects read
	R4 =	where to continue, or -1 for no more

This call should fill the buffer in R2 with null terminated leaf names of entries in the specified directory, or the current directory if the name is null. The length of the buffer validated depends on which OS_GBPB SWI causes this call:

#Tab
<OS_GBPB 8=>OS_GBPB8>	11 * R3 bytes
<OS_GBPB 9=>OS_GBPB9>	R5 bytes

and there is no way to tell which is the case. :-(

Only count leaf names that fit completely into the buffer. Return an error if the cataloged object is not found or a file, but return valid with R3=0, R4\<>1 for buffer overflow or more names to read, R3=0,R4=-1 if the previous call didn't detect the end but you now find that there are no more names.
DATAFSEntry_Func 15
#Parent FSEntry_Func
=>	R0 =	15 (Read directory entries and information)
	R1 =	pointer to (wilcarded) directory name
	R2 =	pointer to buffer
	R3 =	number of objects to read
	R4 =	where to start, 0 for first time
	R5 =	length of buffer
	R6 =	pointer to special field, or 0 if not present

<=	R3 =	number of objects read
	R4 =	where to continue, or -1 for no more

This call should fill the buffer in R2 with entries in <OS_GBPB 10 format=>OS_GBPB10buffer>.

Only count leaf names that will fit completely into the buffer. Return an error if the cataloged object is not found or a file, but return valid with R3=0, R4\<>1 for buffer overflow or more names to read, R3=0,R4=-1 if the previous call didn't detect the end but you now find that there are no more names.
DATA�FSEntry_Func 16
#Parent FSEntry_Func
=>	R0 =	16 (Shutdown)

This call requests the filesystem to shut down ({/}e.g.{/} park disc heads). All files will have been closed before this call is made.
DATApFSEntry_Func 17
#Parent FSEntry_Func
=>	R0 =	17 (Print startup banner)
	R6 =	0, as special field not allowed here

This call is made to request a filesystem to print a banner to show that it is selected if the startup text offset in the filing system <information block=>FSEntry_> is -1. If an error during printing occurs it should be returned to the caller.
DATAaFSEntry_Func 18
#Parent FSEntry_Func
=>	R0 =	18 (Set directory contexts)
#Wrap off
	R1 =	new current directory	-1 to unset, 0 for no change
	R2 =	new library		-1 to unset, 0 for no change
	R3 =	new user root directory	-1 to unset, 0 for no change
#Wrap
	R6 =	0, as special field not allowed here

<=	R1 =	old CSD			-1 for unset
	R2 =	old library		-1 for unset
	R3 =	old URD			-1 for unset

This FSEntry_Func 18 is now never called.

This call should set (or read) the CSD, library and URD. It was only called for filesystems that had bit 24 of the filing system <information word=>fsys_infoword> set.
DATAFSEntry_Func 19
#Parent FSEntry_Func
=>	R0 =	19 (Read directory entries and information)
	R1 =	pointer to (wilcarded) directory name
	R2 =	pointer to buffer
	R3 =	number of objects to read
	R4 =	where to start, 0 for first time
	R5 =	length of buffer
	R6 =	pointer to special field, or 0 if not present

<=	R3 =	number of objects read
	R4 =	where to continue, or -1 for no more

This call should fill the buffer in R2 with entries in <OS_GBPB 11 format=>OS_GBPB11buffer>.

Only count leaf names that will fit completely into the buffer. Return an error if the cataloged object is not found or a file, but return valid with R3=0, R4\<>1 for buffer overflow or more names to read, R3=0,R4=-1 if the previous call didn't detect the end but you now find that there are no more names.
DATA�FSEntry_Func 2
#Parent FSEntry_Func
=>	R0 =	2 (Catalogue directory)
	R1 =	pointer to (wilcarded) directory name
	R6 =	pointer to special field, or 0 if not present

This call should catalogue a directory - it implements {fCode}*Cat{f}. It is always called by RISC OS 2, or only by later versions of RISC OS when bit 1 of the <extra filing system info word=>fsys_extra_infoword> is set.
DATAFSEntry_Func 20
#Parent FSEntry_Func
=>	R0 =	20 (Output full information on objects)
	R1 =	pointer to pathname
	R6 =	pointer to special field, or 0 if not present

If bit 25 of the filing system <information word=>fsys_infoword> is clear this call is not made - repeated calls to <FS_EntryFunc 6=>FSEntry_Func6> are used.

This call should print information on the object matching the pathname - it implements {fCode}*FileInfo{f}. On RISC OS 2 this may be wildcarded, and all objects which match should be printed.
DATA
FSEntry_Func 23
#Parent FSEntry_Func
=>	R0 =	23 (Canonicalise special field and disc name)
	R1 =	pointer to special field, or 0 if not present
	R2 =	pointer to disc name, or 0 if not present
	R3 =	pointer buffer for canonical special field, or 0 to find length
	R4 =	pointer buffer for canonical disc name, or 0 to find length
	R5 =	length of R3 buffer
	R6 =	length of R4 buffer

<=	R1 =	0, or pointer to canonical special field
	R2 =	0, or pointer to canoncial disc name
	R3 =	bytes overflow from special field buffer
	R4 =	bytes overflow from disc name buffer
	R5,R6 preserved
# Leave that one - it makes the calls below clearer

This call is used to convert special field and disc name to canonical forms. It is called twice:

#tab
=>	R1,R2,R3,R4	= 0
	R5,R6 don't matter

<=	R1,R2 non zero
	R3 =	length of buffer for special field (excluding null terminator)
	R4 =	length of buffer for disc name (excluding null terminator)

alocate buffers
#tab

=>	R1 =	pointer to special field
	R2 =	pointer to disc name
	R3 =	pointer buffer
	R4 =	pointer buffer
	R5 =	length of R3 buffer
	R6 =	length of R4 buffer

<=	R1 =	entry R3
	R2 =	entry R4
	R3,R4 =	0 (neither buffer overflowed)

This entry point is only called if bit 23 of the filing system <information word=>fsys_infoword> is set.
DATA�FSEntry_Func 24
#Parent FSEntry_Func
=>	R0 =	24 (Resolve wildcard)
	R1 =	pointer to directory pathname
	R2 =	pointer to wildcarded object name
	R3 =	pointer buffer for name
	R5 =	length of buffer
	R6 =	pointer to special field, or 0 if not present

<=	R2 =	-1 if not found, else preserved
	R4 =	-1 if FileSwitch should resolve, else bytes overflow from disc name buffer

This call is made to resolve a wildcarded object name. If the filing system can do no better job that FileSwitch could by calling <FSEntry_Func 14=>FSEntry_Func14> and finding the first match, return R4=-1, and let FileSwitch do the job.

This entry point is only called if bit 23 of the filing system <information word=>fsys_infoword> is set.
# Gerph> This is commented on all other entries. Is this one right then ?
# N> PRM 2-571 says that this does honour bit 23. Seems logical that all that
#    follow will also, but PRM does not say so. Silly PRM.
# Gerph> Hmmm.... I'll try to get around to testing this at some point then
DATAFSEntry_Func 25
#Parent FSEntry_Func
=>	R0 =	25 (Read defect list)
	R1 =	pointer to name of image
	R2 =	pointer to buffer
	R5 =	length of buffer
	R6 =	pointer to special field, or 0 if not present

This call fills the buffer with the defect list of an image. The buffer is filled with words giving byte offsets of defects, terminated by &20000000. It implements <OS_FSControl 41=>OS_FSControl41>.
# 
# This entry point is only called if bit 23 of the filing system <information word=>fsys_infoword> is set.
DATAeFSEntry_Func 26
#Parent FSEntry_Func
=>	R0 =	26 (Add a defect)
	R1 =	pointer to name of image
	R2 =	byte offset to start of defect
	R6 =	pointer to special field, or 0 if not present

This call implements <OS_FSControl 42=>OS_FSControl42>.
#
# This entry point is only called if bit 23 of the filing system <information word=>fsys_infoword> is set.
DATA�FSEntry_Func 27
#Parent FSEntry_Func
=>	R0 =	27 (Read boot option)
	R1 =	pointer to name of any object on image
	R6 =	pointer to special field, or 0 if not present

<=	R2 =	<boot option=>fsys_opt4>

This call reads the boot option of a disc, implementing <OS_FSControl 47=>OS_FSControl47>.
#
# This entry point is only called if bit 23 of the filing system <information word=>fsys_infoword> is set.
DATA�FSEntry_Func 28
#Parent FSEntry_Func
=>	R0 =	28 (Write boot option)
	R1 =	pointer to name of any object on image
	R2 =	new <boot option=>fsys_opt4>
	R6 =	pointer to special field, or 0 if not present

This call sets the boot option of a disc, implementing <OS_FSControl 48=>OS_FSControl47>.
#
# This entry point is only called if bit 23 of the filing system <information word=>fsys_infoword> is set.
DATA�FSEntry_Func 29
#Parent FSEntry_Func
=>	R0 =	29 (Read used space map)
	R1 =	pointer to name of any object on image
	R2 =	pointer to buffer
	R5 =	size of buffer
	R6 =	pointer to special field, or 0 if not present

This call reads the used space map of an image, implementing <OS_FSControl 46=>OS_FSControl46>. The buffer is pre-filled with 0s - you must fill it with 1s for used blocks, to the limit of the image/the buffer.
# Gerph> This implies that you never return an error if the buffer is too
#        short. Would that be right ?
# N> PRM 2-574 implies this. Seems daft if you ask me.
# This entry point is only called if bit 23 of the filing system <information word=>fsys_infoword> is set.
DATA�FSEntry_Func 3
#Parent FSEntry_Func
=>	R0 =	3 (Examine directory)
	R1 =	pointer to (wilcarded) directory name
	R6 =	pointer to special field, or 0 if not present

This call should print information on objects in a directory - it implements {fCode}*Ex{f}. It is always called by RISC OS 2, or only bylater versions of RISC OS when bit 2 of the <extra filing system info word=>fsys_extra_infoword> is set.
DATA�FSEntry_Func 30
#Parent FSEntry_Func
=>	R0 =	30 (Read free space)
	R1 =	pointer to name of any object on image
	R6 =	pointer to special field, or 0 if not present

<=	R0 =	free space
	R1 =	size of largest object that can be created.
	R2 =	size of disc

This call reads the free space of an image, implementing <OS_FSControl 49=>OS_FSControl49>.
#
# This entry point is only called if bit 23 of the filing system <information word=>fsys_infoword> is set.
DATA�FSEntry_Func 31
#Parent FSEntry_Func
=>	R0 =	31 (Name image)
	R1 =	pointer to name of any object on image
	R2 =	pointer to new *disc name* for image
	R6 =	pointer to special field, or 0 if not present

This call sets the disc name for an image, implementing <OS_FSControl 50=>OS_FSControl50>.
#
# This entry point is only called if bit 23 of the filing system <information word=>fsys_infoword> is set.
DATA�FSEntry_Func 32
#Parent FSEntry_Func
=>	R0 =	32 (Stamp image)
	R1 =	pointer to name of any object on image
	R2 =	0 (stamp when updated)
	 	1 (stamp now)
	R6 =	pointer to special field, or 0 if not present

This call requests that the <cycle ID=>FileCore_cycleid> of the image be updated, implementing <OS_FSControl 51=>OS_FSControl51>.
#
# This entry point is only called if bit 23 of the filing system <information word=>fsys_infoword> is set.
DATA�FSEntry_Func 33
#Parent FSEntry_Func
=>	R0 =	33 (Get usage of offset)
	R1 =	pointer to name of any object on image
	R2 =	offset into image file or disc
	R3 =	pointer to buffer to receive object name
	R4 =	buffer length
	R6 =	pointer to special field, or 0 if not present

<=	Buffer contains object name (may be corrupted if not found)
	R2 =	<Object type=>OS_FSControl52object>
	Other registers preserved

This call scans a disc or image file to find which object occupies a particular disc address, implementing <OS_FSControl 52=>OS_FSControl52>.
#
# N> This entry point is only called if bit 23 of the filing system <information word=>fsys_infoword> is set.
# Gerph> Hmm? Is that not true ?
# N> Well, I'd've thought it to be true (which is why I left the text in) but
#    that font of all (accurate) knowledge PRM 2-578 doesn't say so (but does
#    say so explicitly for FSEntry_Func24). D'oh
DATA�FSEntry_Func 34
#Parent FSEntry_Func
=>	R0 =	34 (Notification of changed directory)
	R1 =	pointer to name
	R2 =	<changed directory=>.what>
	R6 =	pointer to special field, or 0 if not present

This call informs a filing system when a directory has changed, which may help a filing system to choose which directories to cache.
#Subpage what
FSEntry_Func 34 directory codes
\#	Meaning
#Line
0	CSD	Current directory
1	PSD	Previously selected directory
2	URD	User root directory
3	Lib	Library
DATA�FSEntry_Func 4
#Parent FSEntry_Func
=>	R0 =	4 (Catalogue library)
	R1 =	pointer to (wilcarded) directory name
	R6 =	pointer to special field, or 0 if not present

This call should catalogue a directory relative to the library - it implements {fCode}*LCat{f}. It is always called by RISC OS 2, or only by later versions of RISC OS when bit 1 of the <extra filing system info word=>fsys_extra_infoword> is set.
DATA�FSEntry_Func 5
#Parent FSEntry_Func
=>	R0 =	5 (Examine library)
	R1 =	pointer to (wilcarded) directory name
	R6 =	pointer to special field, or 0 if not present

This call should print information on objects in a directory  relative to the library - it implements {fCode}*LEx{f}. It is always called by RISC OS 2, or only by later versions of RISC OS when bit 2 of the <extra filing system info word=>fsys_extra_infoword> is set.
DATA�FSEntry_Func 6
#Parent FSEntry_Func
=>	R0 =	6 (Examine objects)
	R1 =	pointer to wilcarded pathname
	R6 =	pointer to special field, or 0 if not present

This call should print information on all objects matching the wildcarded pathname - it implements {fCode}*Info{f}. It is always called by RISC OS 2, or only by later versions of RISC OS when bit 2 of the <extra filing system info word=>fsys_extra_infoword> is set.
DATA�FSEntry_Func 7
#Parent FSEntry_Func
=>	R0 =	7 (Set FS Options)
	R1 =	<option number=>fsys_opts>
	R2 =	parameter
	R6 =	0, as special field not allowed here

entry R1	Action
#Line
0		this call should reset all filing system options.
1		never called - FileSwitch maintains settings
4		set <boot file action=>fsys_opt4>

Other options may be used, but should be allocated by Acorn.
DATA�FSEntry_Func 9
#Parent FSEntry_Func
=>	R0 =	9 (Access objects)
	R1 =	pointer to (wilcarded) pathname
	R2 =	<attribute string=>fsys_access_string>
	R6 =	pointer to special field, or 0 if not present

This call should set the access attributes for all matching files. It implements  {fCode}*Access{f}. It is only made if bit 18 of the filing system <information word=>fsys_infoword> set.
DIR$TTL�H���k��
colourv\�G������eventvt�H���k6InsVx�H���\�h�indexpG����\�͘chainH����nJerulespG����&�Ͱ3UpCallV 
H������CnpV�H���bE!ukplotv�H���|� ukswiv�H���|�D!�ukvdu23v�H���9�RemV�H����g�`irqV�H��� ���TickerV�H���C�h9	econetv #H���z��)�palettev�(H����d&5vduxv,H�������wrchvDATA
Colour vector
#Parent Vector_index
=>	R8 =	<ColourTrans SWI number=>.swis>
	Other registers dependant on call

This vector passes /all/ <ColourTrans=>ColourTrans_> calls.
#
#SubPage swis
ColourV SWI numbers
R8	SWI called
#Line
0	<SelectTable=>ColourTrans_SelectTable>
1	<SelectGCOLTable=>ColourTrans_SelectGCOLTable>
2	<ReturnGCOL=>ColourTrans_ReturnGCOL>
3	<SetGCOL=>ColourTrans_SetGCOL>
4	<ReturnColourNumber=>ColourTrans_ReturnColourNumber>
5	<ReturnGCOLForMode=>ColourTrans_ReturnGCOLForMode>
6	<ReturnColourNumberForMode=>ColourTrans_ReturnColourNumberForMode>
7	<ReturnOppGCOL=>ColourTrans_ReturnOppGCOL>
8	<SetOppGCOL=>ColourTrans_SetOppGCOL>
9	<ReturnOppColourNumber=>ColourTrans_ReturnOppColourNumber>
10	<ReturnOppGCOLForMode=>ColourTrans_ReturnOppGCOLForMode>
11	<ReturnOppColourNumberForMode=>ColourTrans_ReturnOppColourNumberForMode>
12	<GCOLToColourNumber=>ColourTrans_GCOLToColourNumber>
13	<ColourNumberToGCOL=>ColourTrans_ColourNumberToGCOL>
14	<ReturnFontColours=>ColourTrans_ReturnFontColours>
15	<SetFontColours=>ColourTrans_SetFontColours>
16	<InvalidateCache=>ColourTrans_InvalidateCache>
17	<SetCalibration=>ColourTrans_SetCalibration>
18	<ReadCalibration=>ColourTrans_ReadCalibration>
19	<ConvertDeviceColour=>ColourTrans_ConvertDeviceColour>
20	<ConvertDevicePalette=>ColourTrans_ConvertDevicePalette>
21	<ConvertRGBToCIE=>ColourTrans_ConvertRGBToCIE>
22	<ConvertCIEToRGB=>ColourTrans_ConvertCIEToRGB>
23	<WriteCalibrationToFile=>ColourTrans_WriteCalibrationToFile>
24	<ConvertRGBToHSV=>ColourTrans_ConvertRGBToHSV>
25	<ConvertHSVToRGB=>ColourTrans_ConvertHSVToRGB>
26	<ConvertRGBToCMYK=>ColourTrans_ConvertRGBToCMYK>
27	<ConvertCMYKToRGB=>ColourTrans_ConvertCMYKToRGB>
28	<ReadPalette=>ColourTrans_ReadPalette>
29	<WritePalette=>ColourTrans_WritePalette>
30	<SetColour=>ColourTrans_SetColour>
31	<MiscOp=>ColourTrans_MiscOp>
32	<WriteLoadingsToFile=>ColourTrans_WriteLoadingsToFile>
33	<SetTextColour=>ColourTrans_SetTextColour>
34	<SetOppTextColour=>ColourTrans_SetOppTextColour>
35	<GenerateTable=>ColourTrans_GenerateTable>
DATAEvent vector
#parent vector_index
=>	R0 =	<Event number=>event_index>
	Other registers dependant on call

When called, ALL event numbers are passed to the routine specified if they are enabled. Therefore it is vital that you check whether the event number is the same as that which you wish to receive (an example of not doing this are the Coconizer tune modules which speed up on key presses because Key Transition is enabled)

Events should be enabled with <OS_Byte 14=>os_byte014> and disabled with <OS_Byte 13=>os_byte013>.DATAInsert vector (&14)
#Parent vector_index
=>	R1 =	<buffer number=>Buffer_buffers>, bit 31 set for block insert
	R9 =	&14

	If single byte :
	R0 =	byte
<=	R2 corrupt
	C flag	set if insertion failed

	If block insert :
	R2 =	pointer to data
	R3 =	length of data
<=	R2 =	pointer to data still to insert
	R3 =	number of bytes left to insert
	C flag	set if insertion failed

All characters inserted into buffers are sent through this vector.
If called via <OS_CallAVector> then interupts must be disabled first.DATA�List of Software Vectors
#Parent OS_Claim
Vector				No	Description of vector
#Line
UserV				00	User (reserved)
ErrorV				01	Error (<OS_GenerateError>)
<IrqV=>vector_irqv>		02	Unknown interrupt
<WrchV=>vector_wrchv>		03	Write character (<OS_WriteC>)
ReadCV				04	Read character (<OS_ReadC>)
CLIV				05	Command line interpreter (<OS_CLI>)
ByteV				06	OS_Byte indirection (<OS_Byte>)
WordV				07	OS_Word indirection (<OS_Word>)
FileV				08	File read/write (<OS_File>)
ArgsV				09	File arguments read/write (<OS_Args>)
BGetV				0A	File byte read (<OS_BGet>)
BPutV				0B	File byte put (<OS_BPut>)
GBPBV				0C	File byte block get/put (<OS_GBPB>)
FindV				0D	File open (<OS_Find>)
ReadLineV			0E	Read a line of text (<OS_ReadLine>)
FSControlV			0F	Filing system control (<OS_FSControl>)
<EventV=>vector_eventv>		10	Event vector (<OS_GenerateEvent>)
<InsV=>vector_insv>		14	Buffer insert (<OS_Byte>)
<RemV=>vector_remv>		15	Buffer remove (<OS_Byte>)
<CnpV=>vector_cnpv>		16	Count/Purge Buffer (<OS_Byte>)
<UKVDU23V=>vector_ukvdu23v>	17	Unknown VDU23 (<OS_WriteC etc.=>vector_wrchv>)
<UKSWIV=>vector_ukswiv>		18	Unknown SWI (SWI)
<UKPLOTV=>vector_ukplotv>	19	Unknown VDU25 (<OS_Plot>)
MouseV				1A	Mouse (<OS_Mouse>)
<VDUXV=>vector_vduxv>		1B	VDU extension vector (<OS_WriteC etc.=>vector_wrchv>)
<TickerV=>vector_tickerv>	1C	100Hz pacemaker
<UpCallV=>vector_upcallv>	1D	Warning vector
ChangeEnvironmentV		1E	Environment change (<OS_ChangeEnvironment>)
SpriteV				1F	<OS_SpriteOp> indirection
DrawV				20	Draw SWI (<Draw_xx=>Draw_>)
<EconetV=>vector_econetv>	21	Econet activity (<Econet_xx=>Econet_>)
<ColourV=>vector_colourv>	22	ColourTrans SWI (<ColourTrans_xx=>ColourTrans_>)
<PaletteV=>vector_palettev>	23	Read/Write palette vector
Serial				24	Serial operation (<OS_SerialOp>)
DATA�Software Vectors Chain
#Parent vector_index
When OS_Claim adds a routine to a vector, it automatically removes any earlier instances of the same routine from the chain. If you don't want this to happen, use <OS_AddToVector> instead. The routines are called in reverse order to the order in which they called <OS_Claim>.

Let's give a small example for you to imagine how this works roughly (don't count on correct presentation, my (Epic's) own knowledge of the OS is not 100%, yet... ;-)

A program does an SWI "XYZ" (which has been claimed)

RISC OS has a list for this vector, which could be explained like this:
SWI "XYZ" goes here:	STMFD R13!,\{R14}
			BL Last_Client
			BL ...
			BL Client_#1
			BL ROM-Routine
			LDMFD R13!,\{PC}

Your own routine can do one of the following:
#Tab
�	Replace the original routine, passing control directly back to the caller: By <intercepting=>vector_rules>.
�	Do some processing before calling the standard routine, which then passes control back to the caller: By <passing=>vector_rules> on the call.
�	Call the standard routine, process some of the results it returns, and then pass control back to the caller; by a bit more sophisticated stack pushing. For example, push the address of the part of your routine which will do the post-processing on the stack, then pass on the call. When the next (or the RISC OS) routine on the chain has finished, this post-routine will be called.DATAeSoftware Vectors Rules
#Parent Vector_index
If you write a routine that uses a vector, it must obey the same entry and exit conditions as the corresponding RISC OS routine. For example, a routine on WrchV must preserve all registers, just as the SWI <OS_WriteC> does!

The processor mode in which your routine is entered depends on:
�	Routines vectored through <IrqV=>Vector_IrqV> (Vector &02) are always executed in IRQ mode.
�	Routines vectored through <EventV=>Vector_EventV>, <InsV=>Vector_InsV>, <RemV=>Vector_RemV>, <CnpV=>Vector_CnpV> (Vectors &10 to &16) and <Ticker=>Vector_TickerV> (&1C) are generally exectued in IRQ mode, but may be executed in SVC mode if called using <OS_CallAVector>, and in certain unspecified circumstances.
�	all other routines are executed in SVC mode.

For the SVC mode you've to be carefully with calling a SWI, because of corrupting the return address held in svc_R14. For the vectors exectued in IRQ mode it's vital to know all details about "Interrupts and handling them".

Errors are reported with returning the V flag set, and storing an error pointer in R0. The routine must therefore not pass on the call, as R0 has been changed! Please note that this can't be done with all vectors, some of them (those involving IRQ calls in particular) have nowhere to send the error to...


For returning from a vectored routine, there are two methods:
�	Passing on the call	:	Return by MOVS PC,R14 to the previous owner, because you must preserve the V and the C flags.
�	Interceping the call	:	You should pull an exit address (which has been set by RISC OS) from the stack with LDMFD R13!,\{PC}.DATA�UpcallV
#Parent Vector_index
=>	R0 =	<upcall reason=>OS_UpcallReasons>
	Other registers dependant on call

This vector is called when an Upcall is generated by the OS.
DATA�Count/Purge vector (&16)
#Parent vector_index
=>	R1 =	<buffer number=>Buffer_buffers>
	R9 =	&16
	flags	V set	 	to flush buffer
	 	V clear	C set	to return free space
	 	V clear	C clear	to return entries


<=	R0 corrupt

	If purge:
	R1 preserved
	R2 preserved

	If count:
	R1 =	count AND &FF
	R2 =	count >> 8

If called via <OS_CallAVector> then interupts must be disabled first.DATAUnknown plot vector
#parent vector_index
=>	R0 =	plot command code
<=	R0 preserved

Whenever an unrecognised byte is found following 25 in the VDU stream, or <OS_Plot> is called with an urecognised R0, then this vector is called. R0 contains this unknown plot command code - the current and 3 previous positions of the graphics cursor can be read with <OS_ReadVDUVariables> from variables &8C - &93, allowing custom plot routines to be implemented.

The default owner of this vector does nothing - unknown plot options are ignored.
DATA Unknown SWI vector
#parent vector_index
=>	R0 - R8 =	register parameters for SWI
# Why not R0 - R8 - is this the OS bug rearing its ugly head?
	R11 =	SWI number
#tab

When an SWI is called RISC OS
1	Checks if the SWI number is \< 512 - if so it calls the appropriate kernel SWI
2	Checks whether any relocatable module defines that SWI via its SWI table
3	If no module claims the SWI it is passed to this vector, where it may be claimed
4	Any SWIs still unrecognised is passed to the unknown SWI handler, set up by <OS_ChangeEnvironment>DATA�Unknown VDU 23 vector
#parent vector_index
=>	R0 =	VDU 23 option
	R1 =	pointer to VDU 23 queue
<=	R0, R1 preserved

Whenever an unrecognised byte (18-25,28-31) is found following 23 in the VDU stream this vector is called. R0 contains this unknown byte - it is also the first of the 9 bytes in the VDU queue, pointed at by R1.

The default owner of this vector does nothing - unknown VDU 23 options are ignored.
DATARemove vector (&15)
#Parent vector_index
=>	R1 =	<buffer number=>Buffer_buffers>, bit 31 set for block remove
	R9 =	&15
	V flag	set if examine only
	 	clear to remove data from buffer

	If single byte examine:
<=	R0 =	next byte that will be removed
	R1 preserved
	R2 corrupt
	C flag	set if buffer is empty

	If single byte remove:
<=	R0 corrupt
	R1 preserved
	R2 =	byte removed
	C flag	set if buffer was empty on entry

	If block remove/examine :
	R2 =	pointer to buffer
	R3 =	length of buffer
<=	R0 preserved
	R1 preserved
	R2 =	pointer updated
	R3 =	number of bytes still to remove
	C flag	set if buffer was empty on entry

All characters removed from buffers are sent through this vector.
If called via <OS_CallAVector> then interupts must be disabled first.DATA`Unknown IRQ vector (&02)
#Parent vector_index
No parameters in registers

This vector is called when an unknown IRQ is detected. It must not be called with <OS_CallAVector>.

It was provided in the Arthur OS to allow hardware expansion to generate IRQs. RISC OS provides a new, more efficient method, and this vector is kept for compatibility.
DATA�Ticker vector (&1C)
#Parent vector_index
No parameters in registers

This vector is called every centisecond, and must never be intercepted. If your routine takes > 100�s you may re-enable IRQ, as long as you can cope with/prevent re-entrancy.
DATA9	Econet vector
#Parent Vector_index
=>	R0 =	<reason code=>.reasons>
	R1 =	size of data/data transferred/not used
<=	R0, R1 preserved

This vector is called when there is Econet activity. The meaning (if any) of R1 depends on the <reason code=>.reasons>. This vector is usually claimed by the NetStatus module to alter the Hourglass to reflect the Econet status.
#SubPage reasons
EconetV reason codes
R0	Name				Meaning of R1					NetStatus calls
#Line
&10	NetFS_StartLoad			total size of data				<Hourglass_On>
&11	NetFS_PartLoad			amount of data transferred			<Hourglass_Percentage>
&12	NetFS_FinishLoad		 						<Hourglass_Off>
&20	NetFS_StartSave			total size of data				<Hourglass_On>
&21	NetFS_PartSave			amount of data transferred			<Hourglass_Percentage>
&22	NetFS_FinishSave		 						<Hourglass_Off>
&30	NetFS_StartCreate		total size of data				<Hourglass_On>
&31	NetFS_PartCreate		amount of data transferred			<Hourglass_Percentage>
&32	NetFS_FinishCreate		 						<Hourglass_Off>
&40	NetFS_StartGetBytes		total size of data				<Hourglass_On>
&41	NetFS_PartGetBytes		amount of data transferred			<Hourglass_Percentage>
&42	NetFS_FinishGetBytes		 						<Hourglass_Off>
&50	NetFS_StartPutBytes		total size of data				<Hourglass_On>
&51	NetFS_PartPutBytes		amount of data transferred			<Hourglass_Percentage>
&52	NetFS_FinishPutBytes		 						<Hourglass_Off>
&60	NetFS_StartWait			total size of data				<Hourglass_LEDs> (both on)
&62	NetFS_FinishWait		 						<Hourglass_LEDs> (both off)
&70	NetFS_StartBroadcastLoad	total size of data				<Hourglass_On> & <Hourglass_Colours> (green/blue)
&71	NetFS_PartBroadcastLoad		amount of data transferred			<Hourglass_Percentage>
&72	NetFS_FinishBroadcastLoad	 						<Hourglass_Off>
&80	NetFS_StartBroadcastSave	total size of data				<Hourglass_On> & <Hourglass_Colours> (red/blue)
&81	NetFS_PartBroadcastSave		amount of data transferred			<Hourglass_Percentage>
&82	NetFS_FinishBroadcastSave	 						<Hourglass_Off>

R0	Name				Meaning
#Line
&C0	NetFS_StartTransmission		commence waiting for end of transmission	<Hourglass_LEDs> (only top on)
&C2	NetFS_FinishTransmission	<Econet_DoTransmit> ends			<Hourglass_LEDs> (both off)
&D0	NetFS_StartReception		commence waiting for end of reception		<Hourglass_LEDs> (only bottom on)
&D2	NetFS_FinishReception		<Econet_WaitForReception> ends			<Hourglass_LEDs> (both off)
DATA�Palette vector
#Parent Vector_index
=>	R4 =	reason code:
	 	1	<read palette=>.1>
	 	2	<set palette=>.2>
	 	3	<set first flash state=>.3>
	 	4	<set second flash state=>.3>
	 	5	<set default palette=>.5>
	Other registers dependent on call

This vector is called whenever the palette is read or written. Set R4 = 0 to claim the call, and prevent RISC OS from performing the default action. It is used to indirect <VDU 19=>VDU:19>, <OS_Word 12=>OS_Word12>, <OS_ReadPalette>, <ColourTrans_ReadPalette> and <ColourTrans_WritePalette>. PRM 1-105 suggests that there may be other calls it indirects.
#SubPage 1
Read Palette
#Wrap Off
=>	R0 =	logical colour
	R1 =	<type of colour=>VDU:19a> (16,17,18,24,25)
	R4 =	1 (reason code)
<=	R2 =	1st flash colour (&BBGGRRxx) - <device colour=>ColourTrans_ConvertDeviceColour>
	R3 =	2nd flash colour (&BBGGRRxx) - <device colour=>ColourTrans_ConvertDeviceColour>
	R4 =	0 if operation complete
#SubPage 2
Set Palette
#wrap off
=>	R0 =	logical colour
	R1 =	<type of colour=>VDU:19a> (16,17,18,24,25)
	R2 =	1st flash colour (&BBGGRRxx) - <device colour=>ColourTrans_ConvertDeviceColour>
	R3 =	2nd flash colour (&BBGGRRxx) - <device colour=>ColourTrans_ConvertDeviceColour>
	R4 =	2 (reason code)
<=	R4 =	0 if operation complete
#SubPage 3
Set Flash state
=>	R4 =	3 (set first flash state)
	 	4 (set second flash state)
<=	R4 =	0 if operation complete
#SubPage 5
Set default palette
=>	R4 =	5 (reason code)
<=	R4 =	0 if operation complete
DATA5VDU extension vector
#parent vector_index
=>	R0 =	byte send to the VDU
<=	R0 preserved
	C set if byte is to be sent to printer

If bit 5 of the <output stream flag=>OS_Byte003> has been set then characters which would have been sent to the display are routed to this vector instead. Characters sent to other output streams ({/}e.g.{/} *Spool file, printer) are unaffected.

If the C flag is set on return, then the character (unless it is the printer ignore character (see <OS_Byte 6=>OS_Byte006>)) is sent to the VDU printer stream (if bits 2 and 6 are clear in the <output stream flag=>OS_Byte003>). This is indepentent of the setting of bit 3 in the output stream flag. The PRM is not clear as to whether this can send the byte twice if bit 3 is set (printer enabled). Confused? :-)
# You will be, after Soap.
DATA�Write character vector
#parent vector_index
=>	R0 =	character to write to <active output streams=>OS_Byte003>
<=	R0 preserved

This vector is used to indirect all calls to <OS_WriteC>, and in turn <OS_NewLine>, <OS_PrettyPrint>, <OS_Write0>, <OS_WriteI>, <OS_WriteN> and <OS_WriteS> which call it. In practice these SWIs may not actually call <OS_WriteC> or this vector if there is no reason to do so ({/}i.e.{/} the vector is not claimed, spooling and printer are inactive).
DATA�@-� ��XR���� ��!R� �xR �2R �6R��0��@������!��a��h������@ ��8��a�q���!x26DATA�Contributions
#Parent OS_
{fH4}Moderators comment{f}
If you want to contribute something yourself, then send submissions to {*}<gerph@innocent.com=>#URL mailto:gerph@innocent.com>{*}. Try to write them more or less in the same style as the rest. {*}Don't copy the PRM{*}. I will edit and reject as I see fit, although almost everything that gets sent in will be included in some form or other.

Large modifications may be submited as complete manuals, but for simple amendments I would prefer small manuals or text files. Comments about broken links are welcome, as are suggestions for new styles.

#Align Right
{/}Justin Fletcher
Gerph@innocent.com{/}
#Line;Align Centre
<Credits for contributors=>.credits>
#Subpage credits
Credits for OS, Wimp, InetSWIs and Inet
I've tried to list the majority of people who I'm aware of that have contributed. If you have contributed but are not in the list I'll try to add you. However, if this list gets too long (and at the moment there's not much chance of that), I'll have to state simply the major contributors or just say that it's 'Thanks to the Acorn programming community'...

#fH4:Thanks to :
#Table columns 4
Guttorm Vik
Justin Fletcher
Nicholas Clark
Dave Thomas
Matthew Godbolt
Eduard Pfarr
Dick Alstein
Iain Truskett
Tim Howarth
Gavan Fantom
Andy Holdsworth
Stuart Halliday
Stewart Brodie
Matthew Webster
Chris Johns
David McCormack
Johnathan Duddington
Eddie Edwards
Carl Elkins
J.B.Blaukopf
#endtable
DATAA#Commands
f24 = Sidney 12 Bold 24 Italic 24 Both 24
#End
DIR$HH�4H���?6�+DReason_@GH����6�+|_DIR$DD6H����:�!Root,7H���vz��AbortJob�8H����l��ColourSet�:H����ʞ.EndPage<H�����'MiscOp(=H���i͜�OutputDump�?H���&���SetDriver�AH����}��StartJob$CH������StartPageDATAPDumper reason codes
#Parent PDumper_Code
Number	Name
#Line
0	<PDumperReason_SetDriver>
1	<PDumperReason_OutputDump>
2	<PDumperReason_ColourSet>
3	<PDumperReason_StartPage>
4	<PDumperReason_EndPage>
5	<PDumperReason_StartJob>
6	<PDumperReason_AbortJob>
7	<PDumperReason_MiscOp>
DATA�PDumperReason_AbortJob (6)
#Parent PDumperReason_
=>	R0 =	pointer to job private word
	R1 =	output file handle
	R2 =	<strip type=>PDumper_striptypes>
	R3 =	0 for end of page, else end of document
	R11 =	6 (reason code)
	R12 =	private word

This is called at the end of each page, and at the end of the job. If an error occurs during printing this will be called as "end of job".

<PDumper_TidyJob> may be useful here.
DATA�PDumperReason_ColourSet (2)
#Parent PDumperReason_
=>	R0 =	physical colour (&BBGGRR00)
	R2 =	<strip type=>PDumper_striptypes>
	R3 =	job private word (see <PDumperReason_StartJob>)
	R4 =	<halftoning information=>PDumper_halftoning>
	R5 =	<config data=>PDumper_configblock>
	R11 =	2 (reason code)
	R12 =	private word

<=	R3 =	colour number (strip type dependent)

This is called when PDriverDP wants to convert a physical colour to colour number - <PDumper_SetColour> may help in impementing this.
DATA.PDumperReason_EndPage (4)
#Parent PDumperReason_
=>	R1 =	output file handle
	R2 =	<strip type=>PDumper_striptypes>
	R3 =	job private word (see <PDumperReason_StartJob>)
	R4 =	<config data=>PDumper_configblock>
	R11 =	4 (reason code)
	R12 =	private word

This is called at the end of each page.
DATA'PDumperReason_MiscOp (7)
#Parent PDumperReason_
=>	R0 =	PDriver_MiscOp <reason code=>PDriver_MiscOp.ops>
	R11 =	7 (reason code)
	R12 =	private word
	other registers as for <PDriver_MiscOp> reason
<=	depends on PDriver_MiscOp reason

This is allows calls to be made direct to the dumper.
DATA�PDumperReason_OutputDump (1)
#Parent PDumperReason_
=>	R0 =	pointer to strip data giving bitmap for strip
	R1 =	output file handle
	R2 =	<strip type=>PDumper_striptypes>
	R3 =	dump width (pixels)
	R4 =	strip height (pixels)
	R5 =	strip width (bytes - add to R1 to descend 1 line)
	R6 =	<halftoning information=>PDumper_halftoning>
	R7 =	<config data=>PDumper_configblock>
	R8 =	job private word (see <PDumperReason_StartJob>)
	R11 =	1 (reason code)
	R12 =	private word

This is called when PDriverDP has generated a strip (taking interlacing into account). R0 points at the sprite format data, *not* the header, which will be either 1 or 8 bits-per-pixel.
DATA�PDumperReason_SetDriver (0)
#Parent PDumperReason_
=>	R1 =	<printer dumper number=>PDumper_numbers>
	R2 =	pointer to command to ensure dumper present
	R3 =	pointer to 256 bytes of dumper configuration data
	R4 =	pointer to 256 bytes of <PDriverDP and dumper configuration data=>PDumper_configblock>
	R5 =	<configuration word=>PDumper_configword> for dumper
	R11 =	0 (reason code)
	R12 =	private word

This is called by <PDriver_SetDriver>
DATA�PDumperReason_StartJob (5)
#Parent PDumperReason_
=>	R0 =	pointer to job private word
	R1 =	output file handle
	R2 =	<strip type=>PDumper_striptypes>
	R5 =	<config data=>PDumper_configblock>
	R11 =	5 (reason code)
	R12 =	private word

This is called at the start of each job. The private word is for the dumper's own use - usually it is used to store a workspace pointer. <PDumper_StartJob> may be useful here.
DATAPDumperReason_StartPage (3)
#Parent PDumperReason_
=>	R0 =	copies
	R1 =	output file handle
	R2 =	<strip type=>PDumper_striptypes>
	R3 =	blank pixel rows to skip before the data
	R4 =	job private word (see <PDumperReason_StartJob>)
	R5 =	<config data=>PDumper_configblock>
	R6 =	left margin (pixels)
	R7 =	<resolution=>PDumper_resolution>
	R11 =	3 (reason code)
	R12 =	private word

<=	R0 =	number of copies to be performed
	R3 =	blank pixel rows still to skip

This is called at the start of each page. R0 should return the number of copies that will actually be printed, and etnry R3 should be reduced by the number of blank rows actually skipped - PDriverDP will skip the rest.

# Does a Sinclar ZX printer count for this one? :-)
Generic dot matrix with roll paper (<config block=>PDriver_SetDriverblock> <offset 256, bit 1 set=>PDumper_ConfigWord>) should ignore R3, and skip [<config block=>PDumper_configblock> offset 44 ({*}not{*} 32, as PRMs say)] pixels (returning number of unskippable pixels in R3 as above)
# Confused - you will be!DIR$||�IH�����w+�!RootpJH�����Claim|LH���8��Zcode�MH���L���configword�OH�����Pconfigblock�TH����a&MCopyFilename4VH������zFind�WH���p��Free�XH���I��halftoning0YH���)H�RInfo�ZH���5a&�LookupError<\H���ޥ��numbers4]H���o��2PrepareStriph_H���c֝zresolution�_H����M�SetColour�aH����,�]StartJobLcH���t��h3striptypes�cH����d�zTidyJobDATA�PDumper
#Parent !Root
#Prefix PDumper_
#table columns 2
<Claim>
<CopyFilename>
<Find>
<Free>
<Info>
<LookupError>
<PrepareStrip>
<SetColour>
<StartJob>
<TidyJob>
#endtable
DATAPDumper_Claim  (&41B01)
#Parent PDumper_
=>	R0 =	pointer to anchor word
	R3 =	size to claim
	R4 =	tag for block
<=	R2 =	pointer to word aligned block allocated

This SWI allocates a block of memory (size need not be a multiple of four) and links into the dumper's chain specified by the anchor word passed in R0 (usually the module's private word). The tag is stored after the link point - it is not advised to claim more than one block with the same tag (see <PDumper_Find>). Use <PDumper_Free> to free the block.
DATAZPDumper reason code handler
#Parent PDriver_MiscOp80000000
=>	R11	<reason code=>PDumperReason_>
	R12	private word pointer (from R3 in <PDriver_MiscOp 80000000=>PDriver_MiscOp80000000>)
	Other registers depend on reason code
<=	if error V set, error in R0

Note: the register used to pass the job private word varies between reason codes.
DATA�PDumper configuration word
#Parent PDriver_SetDriver
Bits	Meaning
#Line
0-3	<Driver specific features=>.specific>
24-31	PDriverDP version (currently 3)
# Sorry that this is a mire of subpages
#SubPage specific
PDumper driver specific bits
#Wrap off
Bit	Meaning for LJ			Meaning for DM
#Line
0	Supports multiple copies	Horizontal output
1	Supports compression		Roll paper feed
2	Don't send form feeds
3	Use PaintJet movement commands
DATAPPDumper config block
#Parent PDumperReason_0
All byte valus are unsigned, all words are signed. String are stored as *byte* offsets to a <string structure=>.string>. An offset of 0 means there is no string. When <PDriver_SetDriver> copies this block it makes <these additions=>PDriver_SetDriverblock>.

Offset	Type	PrintEdit name		Note
#Line
12	byte	data length multiplier	 
13	byte	data length added
14	byte	dump height
15	string	page start
16	string	page end
17	string	line return
18	string	line skip
19	string	line end 1
20	string	line end 2
21	string	line end 3
22	string	zero skip
23	string	line start 1
24	string	line start 2
25	string	line pass 1
26	string	line pass 1b
27	string	line pass 2
28	string	line pass 2b
29	string	line pass 3
30	string	line pass 3b
31	string	line pass 4
32	string	line pass 4b
33	string	set lines
34	byte	(from page height)	line per page
35	byte	(always 1/6")		leading zeros to leave
36	word	(from skip resolution)	multiplier from output DPI to skip
40	word	(from skip resolution)	divider from output DPI to skip
44	word	(always 1")		short advance for roll paper (pixels)
48	string	form feed
49	byte	 			0 (reserved)
50	byte	 			0 (reserved)
51	byte	 			0 (reserved)
52	word	paper x offset
56	word	paper y offset
#Subpage string
String structure
Offset	Contents
#Line
0	length of string
1	string ({*}un{*}terminated)
DATAMPDumper_CopyFilename  (&41B09)
#Parent PDumper_
=>	R0 =	pointer to buffer for resulting string
	R1 =	size of buffer
	R2 =	string to be copied (control or space terminated)
<=	R0 =	pointer to byte *after* terminating zero in buffer
	R2 =	pointer to last character copied from string

This SWI copies a filename into a buffer.
DATAzPDumper_Find  (&41B03)
#Parent PDumper_
=>	R0 =	pointer to anchor word
	R2 =	tag of block to find
<=	R2 =	pointer to found block

This SWI scans the dumper's chain specified by the anchor word passed in R0 (usually the module's private word) for a block that matches the specified tag. The first matching tag found is returned - if none are found an error is generated.
DATA�PDumper_Free  (&41B02)
#Parent PDumper_
=>	R0 =	pointer to anchor word
	R2 =	pointer to block to release

This SWI releases a block of memory from the dumper's chain specified by the anchor word passed in R0 (usually the module's private word).
DATA�PDumper halftoning information 
Bits	Meaning
#Line
0-7	horizontal resolution (pixels)
8-15	vertical resolution (pixels)
DATARPDumper_Info  (&41B00)
#Parent PDumper_
#Wrap off
<=	R0 =	version number * 100
	R1 =	<options supported=>.options>
#Wrap on

This SWI returns information about the PDumper support module.
#Subpage options
PDumper options
Bit set	Option supported
#Line
0	halftone grey
1	error diffuse grey
2	halftone colour
3	error diffuse colour
DATA�PDumper_LookupError  (&41B08)
#Parent PDumper_
=>	R0 =	pointer to <error block=>MessageTrans_errorblock> with message token
	R1 =	0, or string to substitute for "%0"
<=	R0 =	resolved error block
	V set

This SWI looks up the token passed in via R0 in Resources:$.Resources.PDrivers.Messages, and performs <MessageTrans=>MessageTrans_> style substitution. This saves the overhead of MessageTrans routines within the printer dumper.
DATA�PDumper numbers
#Parent PDriver_MiscOp80000000
#Wrap off
Number	Module		Printer
#Line
0	PDumperSP	Sprite Device
1	PDumberDM	Dot matrix
2	PDumberLJ	LaserJet
3	PDumberIW	ImageWriter
4	PDumber24	Dot reducing 24 pin
5	PDumberDJ	Colour Deskjet
DATA2PDumper_PrepareStrip  (&41B07)
#Parent PDumper_
=>	R0 =	pointer to anchor word
	R1 =	pointer to bit image data
	R2 =	<strip format=>.strip>
	R3 =	output dump width (pixels)
	R4 =	strip height (pixels)
	R5 =	strip width (bytes - add to R1 to descend 1 line)
	R6 =	<halftoning information=>PDumper_halftoning>

This SWI processes the 8 bit-per-pixel bitmap generated by PDriverDP into a format for the output routine.
#Subpage strip
PDumper strip format
Value	Meaning
#Line
0	halftoned grey level
1	diffused grey level
2	halftoned colour
3	diffused colour
DATAzPDumper resolution information 
Bits	Meaning
#Line
0-7	horizontal resolution (DPI)
8-15	vertical resolution (DPI)
DATAPDumper_SetColour  (&41B06)
#Parent PDumper_
=>	R0 =	pointer to anchor word
	R1 =	physical colour (&BBGGRR00)
	R2 =	<strip information=>.strip>
	R4 =	<halftoning information=>PDumper_halftoning>
<=	R3 =	strip type dependant colour number

This SWI processes the colour setting, scans the chain for any palette block, returning a suitable colour number.

Note: R3 may become corrupted on error.
#Subpage strip
PDumper strip information 
Bits	Meaning
#Line
0-7	<strip type=>PDumper_striptypes>
24-31	pass number
DATA]PDumper_StartJob  (&41B04)
#Parent PDumper_
=>	R0 =	pointer to anchor word
	R1 =	0 (flags all reserved)
	R2 =	filename of palette to load, or 0 for none

This SWI sets up any workspace needed for a job, the support module linking this into the specified chain. If a palette file is specified in R2 it is loaded into a block with a tag of 1.
DATAhPDumper strip types
#Parent PDumper_
Value	Meaning
#Line
0	monochrome
1	grey scale
2	256 colour
DATAzPDumper_TidyJob  (&41B05)
#Parent PDumper_
=>	R0 =	pointer to anchor word
	R1 =	0, or pointer to list of tags terminated by 0 word.
	R2 =	0 for end of page, else end of document

This SWI releases any workspace used for a job, the support module unlinking this from the specified chain. Any tags specifed via R1, and any per page or per document resources are released.
00000000  48 45 4c 50 28 00 00 00  fd 00 00 00 ff ff ff ff  |HELP(...........|
00000010  2c 00 00 00 00 fd ff ff  00 00 00 00 a8 07 00 00  |,...............|
00000020  00 01 00 00 00 00 00 00  24 00 00 00 44 49 52 24  |........$...DIR$|
00000030  b0 07 00 00 b0 07 00 00  dc 07 00 00 48 fd ff ff  |............H...|
00000040  a9 ae 80 2b 90 02 00 00  13 01 00 00 00 00 00 00  |...+............|
00000050  41 44 46 53 5f 00 00 00  84 23 00 00 48 fd ff ff  |ADFS_....#..H...|
00000060  b3 b4 80 2b 8c 00 00 00  13 01 00 00 00 00 00 00  |...+............|
00000070  42 61 73 69 63 54 72 61  6e 73 5f 00 b4 27 00 00  |BasicTrans_..'..|
00000080  48 fd ff ff 63 b6 80 2b  ec 01 00 00 13 01 00 00  |H...c..+........|
00000090  00 00 00 00 42 75 66 66  65 72 5f 00 88 3c 00 00  |....Buffer_..<..|
000000a0  48 fd ff ff d8 ba 80 2b  2c 00 00 00 13 01 00 00  |H......+,.......|
000000b0  00 00 00 00 43 61 63 68  65 5f 00 00 50 3d 00 00  |....Cache_..P=..|
000000c0  48 fd ff ff 56 bb 80 2b  a4 06 00 00 13 01 00 00  |H...V..+........|
000000d0  00 00 00 00 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |....ColourTrans_|
000000e0  00 00 00 00 08 8d 00 00  48 fd ff ff a8 c8 80 2b  |........H......+|
000000f0  50 00 00 00 13 01 00 00  00 00 00 00 44 65 62 75  |P...........Debu|
00000100  67 67 65 72 5f 00 00 00  cc 8e 00 00 48 fd ff ff  |gger_.......H...|
00000110  04 c9 80 2b 28 03 00 00  13 01 00 00 00 00 00 00  |...+(...........|
00000120  44 65 76 69 63 65 46 53  5f 00 00 00 e0 c1 00 00  |DeviceFS_.......|
00000130  48 fd ff ff 64 ce 80 2b  2c 00 00 00 13 01 00 00  |H...d..+,.......|
00000140  00 00 00 00 44 4d 41 5f  00 00 00 00 c0 c2 00 00  |....DMA_........|
00000150  48 fd ff ff b1 ce 80 2b  9c 00 00 00 13 01 00 00  |H......+........|
00000160  00 00 00 00 44 4f 53 46  53 5f 00 00 6c ce 00 00  |....DOSFS_..l...|
00000170  48 fd ff ff 9f cf 80 2b  1c 03 00 00 13 01 00 00  |H......+........|
00000180  00 00 00 00 44 72 61 77  46 69 6c 65 5f 00 00 00  |....DrawFile_...|
00000190  a4 f6 00 00 48 fd ff ff  1e d4 80 2b 08 02 00 00  |....H......+....|
000001a0  13 01 00 00 00 00 00 00  44 72 61 77 5f 00 00 00  |........Draw_...|
000001b0  a8 1e 01 00 48 fd ff ff  73 d6 80 2b 84 05 00 00  |....H...s..+....|
000001c0  13 01 00 00 00 00 00 00  45 63 6f 6e 65 74 5f 00  |........Econet_.|
000001d0  e0 56 01 00 48 fd ff ff  d0 db 80 2b 48 02 00 00  |.V..H......+H...|
000001e0  13 01 00 00 00 00 00 00  65 76 65 6e 74 5f 00 00  |........event_..|
000001f0  dc 79 01 00 48 fd ff ff  a0 de 80 2b 1c 03 00 00  |.y..H......+....|
00000200  13 01 00 00 00 00 00 00  46 69 6c 65 43 6f 72 65  |........FileCore|
00000210  5f 00 00 00 54 e3 01 00  48 fd ff ff 69 e6 80 2b  |_...T...H...i..+|
00000220  f0 06 00 00 13 01 00 00  00 00 00 00 46 6f 6e 74  |............Font|
00000230  5f 00 00 00 94 51 02 00  48 fd ff ff 62 f1 80 2b  |_....Q..H...b..+|
00000240  08 01 00 00 13 01 00 00  00 00 00 00 48 6f 75 72  |............Hour|
00000250  67 6c 61 73 73 5f 00 00  b0 59 02 00 48 fd ff ff  |glass_...Y..H...|
00000260  dc f2 80 2b 4c 00 00 00  13 01 00 00 00 00 00 00  |...+L...........|
00000270  49 49 43 5f 00 00 00 00  14 5b 02 00 48 fd ff ff  |IIC_.....[..H...|
00000280  4f f3 80 2b 2c 00 00 00  13 01 00 00 00 00 00 00  |O..+,...........|
00000290  46 53 4c 6f 63 6b 5f 00  90 5b 02 00 48 fd ff ff  |FSLock_..[..H...|
000002a0  99 f3 80 2b d8 01 00 00  13 01 00 00 00 00 00 00  |...+............|
000002b0  66 73 79 73 5f 00 00 00  b4 74 02 00 48 fd ff ff  |fsys_....t..H...|
000002c0  c3 f5 80 2b d4 01 00 00  13 01 00 00 00 00 00 00  |...+............|
000002d0  4d 65 73 73 61 67 65 54  72 61 6e 73 5f 00 00 00  |MessageTrans_...|
000002e0  c4 92 02 00 48 fd ff ff  32 f7 80 2b 4c 00 00 00  |....H...2..+L...|
000002f0  13 01 00 00 00 00 00 00  46 50 45 6d 75 6c 61 74  |........FPEmulat|
00000300  6f 72 5f 00 2c 94 02 00  48 fd ff ff 7f f7 80 2b  |or_.,...H......+|
00000310  b4 02 00 00 13 01 00 00  00 00 00 00 49 6d 61 67  |............Imag|
00000320  65 45 6e 74 72 79 5f 00  94 d0 02 00 48 fd ff ff  |eEntry_.....H...|
00000330  40 fb 80 2b b8 00 00 00  13 01 00 00 00 00 00 00  |@..+............|
00000340  52 61 6d 46 53 5f 00 00  44 d4 02 00 48 fd ff ff  |RamFS_..D...H...|
00000350  c3 fb 80 2b 70 0a 00 00  13 01 00 00 00 00 00 00  |...+p...........|
00000360  73 65 72 76 69 63 65 5f  00 00 00 00 88 b8 03 00  |service_........|
00000370  48 fd ff ff 75 01 81 2b  4c 00 00 00 13 01 00 00  |H...u..+L.......|
00000380  00 00 00 00 53 63 72 65  65 6e 42 6c 61 6e 6b 65  |....ScreenBlanke|
00000390  72 5f 00 00 50 bc 03 00  48 fd ff ff 95 01 81 2b  |r_..P...H......+|
000003a0  2c 00 00 00 13 01 00 00  00 00 00 00 53 63 72 65  |,...........Scre|
000003b0  65 6e 4d 6f 64 65 73 5f  00 00 00 00 cc bc 03 00  |enModes_........|
000003c0  48 fd ff ff a7 01 81 2b  2c 00 00 00 13 01 00 00  |H......+,.......|
000003d0  00 00 00 00 53 68 61 72  65 64 43 4c 69 62 72 61  |....SharedCLibra|
000003e0  72 79 5f 00 48 bd 03 00  48 fd ff ff b4 01 81 2b  |ry_.H...H......+|
000003f0  6c 00 00 00 13 01 00 00  00 00 00 00 53 68 65 6c  |l...........Shel|
00000400  6c 5f 00 00 a4 be 03 00  48 fd ff ff dc 01 81 2b  |l_......H......+|
00000410  48 04 00 00 13 01 00 00  00 00 00 00 53 6f 75 6e  |H...........Soun|
00000420  64 5f 00 00 c4 f5 03 00  48 fd ff ff 64 03 81 2b  |d_......H...d..+|
00000430  74 00 00 00 13 01 00 00  00 00 00 00 53 75 70 65  |t...........Supe|
00000440  72 5f 00 00 08 f7 03 00  48 fd ff ff 8d 03 81 2b  |r_......H......+|
00000450  74 00 00 00 13 01 00 00  00 00 00 00 73 77 69 5f  |t...........swi_|
00000460  00 00 00 00 68 01 04 00  48 fd ff ff b1 03 81 2b  |....h...H......+|
00000470  98 00 00 00 13 01 00 00  00 00 00 00 53 71 75 61  |............Squa|
00000480  73 68 5f 00 08 11 04 00  48 fd ff ff f6 03 81 2b  |sh_.....H......+|
00000490  94 04 00 00 13 01 00 00  00 00 00 00 54 65 72 72  |............Terr|
000004a0  69 74 6f 72 79 5f 00 00  a0 51 04 00 48 fd ff ff  |itory_...Q..H...|
000004b0  37 06 81 2b 28 03 00 00  13 01 00 00 00 00 00 00  |7..+(...........|
000004c0  4e 65 74 46 53 5f 00 00  64 73 04 00 48 fd ff ff  |NetFS_..ds..H...|
000004d0  72 07 81 2b ac 01 00 00  13 01 00 00 00 00 00 00  |r..+............|
000004e0  4e 65 74 50 72 69 6e 74  5f 00 00 00 54 84 04 00  |NetPrint_...T...|
000004f0  48 fd ff ff 31 08 81 2b  64 0e 00 00 13 01 00 00  |H...1..+d.......|
00000500  00 00 00 00 4f 53 5f 00  bc 3a 0a 00 48 fd ff ff  |....OS_..:..H...|
00000510  df 28 81 2b c4 00 00 00  13 01 00 00 00 00 00 00  |.(.+............|
00000520  50 61 72 61 6c 6c 65 6c  5f 00 00 00 c0 42 0a 00  |Parallel_....B..|
00000530  48 fd ff ff 36 29 81 2b  d8 05 00 00 13 01 00 00  |H...6).+........|
00000540  00 00 00 00 50 44 72 69  76 65 72 5f 00 00 00 00  |....PDriver_....|
00000550  d0 a1 0a 00 48 fd ff ff  82 2b 81 2b 08 03 00 00  |....H....+.+....|
00000560  13 01 00 00 00 00 00 00  50 6f 64 75 6c 65 5f 00  |........Podule_.|
00000570  44 ce 0a 00 48 fd ff ff  90 c6 96 2a 5f 03 00 00  |D...H......*_...|
00000580  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00000590  a4 d1 0a 00 48 fd ff ff  d9 2c 81 2b 4c 00 00 00  |....H....,.+L...|
000005a0  13 01 00 00 00 00 00 00  4a 6f 79 73 74 69 63 6b  |........Joystick|
000005b0  5f 00 00 00 58 d4 0a 00  48 fd ff ff 03 2d 81 2b  |_...X...H....-.+|
000005c0  d4 01 00 00 13 01 00 00  00 00 00 00 4a 50 45 47  |............JPEG|
000005d0  5f 00 00 00 a0 eb 0a 00  48 fd ff ff a4 2d 81 2b  |_.......H....-.+|
000005e0  a0 00 00 00 13 01 00 00  00 00 00 00 52 65 73 6f  |............Reso|
000005f0  75 72 63 65 46 53 5f 00  b8 f2 0a 00 48 fd ff ff  |urceFS_.....H...|
00000600  e9 2d 81 2b 2c 00 00 00  13 01 00 00 00 00 00 00  |.-.+,...........|
00000610  53 43 53 49 5f 00 00 00  60 f3 0a 00 48 fd ff ff  |SCSI_...`...H...|
00000620  ff 2d 81 2b 84 00 00 00  13 01 00 00 00 00 00 00  |.-.+............|
00000630  43 44 46 53 5f 00 00 00  94 f8 0a 00 48 fd ff ff  |CDFS_.......H...|
00000640  31 2e 81 2b e4 04 00 00  13 01 00 00 00 00 00 00  |1..+............|
00000650  43 44 5f 00 60 27 0b 00  48 fd ff ff ed 2f 81 2b  |CD_.`'..H..../.+|
00000660  2c 00 00 00 13 01 00 00  00 00 00 00 41 54 41 50  |,...........ATAP|
00000670  49 5f 00 00 dc 27 0b 00  48 fd ff ff 02 30 81 2b  |I_...'..H....0.+|
00000680  2c 00 00 00 13 01 00 00  00 00 00 00 52 65 6d 6f  |,...........Remo|
00000690  74 65 50 72 69 6e 74 65  72 53 75 70 70 6f 72 74  |tePrinterSupport|
000006a0  5f 00 00 00 cc 28 0b 00  48 fd ff ff 1e 30 81 2b  |_....(..H....0.+|
000006b0  50 00 00 00 13 01 00 00  00 00 00 00 4d 61 6b 65  |P...........Make|
000006c0  50 53 46 6f 6e 74 5f 00  c8 29 0b 00 48 fd ff ff  |PSFont_..)..H...|
000006d0  39 30 81 2b 28 01 00 00  13 01 00 00 00 00 00 00  |90.+(...........|
000006e0  50 6f 72 74 61 62 6c 65  5f 00 00 00 3c 36 0b 00  |Portable_...<6..|
000006f0  48 fd ff ff 2f 34 80 2b  8f 1d 00 00 03 00 00 00  |H.../4.+........|
00000700  00 00 00 00 61 62 6f 75  74 00 00 00 cc 53 0b 00  |....about....S..|
00000710  48 fd ff ff da 30 81 2b  04 02 00 00 13 01 00 00  |H....0.+........|
00000720  00 00 00 00 46 53 45 6e  74 72 79 5f 00 00 00 00  |....FSEntry_....|
00000730  f8 ea 0b 00 48 fd ff ff  04 35 81 2b 54 02 00 00  |....H....5.+T...|
00000740  13 01 00 00 00 00 00 00  76 65 63 74 6f 72 5f 00  |........vector_.|
00000750  00 2e 0c 00 47 fc ff ff  c9 28 47 d4 84 00 00 00  |....G....(G.....|
00000760  33 00 00 00 00 00 00 00  21 50 72 65 00 00 00 00  |3.......!Pre....|
00000770  84 2e 0c 00 48 fd ff ff  00 c7 77 2b b8 05 00 00  |....H.....w+....|
00000780  13 00 00 00 00 00 00 00  43 6f 6e 74 72 69 62 75  |........Contribu|
00000790  74 69 6f 6e 73 00 00 00  3c 34 0c 00 48 fd ff ff  |tions...<4..H...|
000007a0  6c a3 ca 10 41 00 00 00  33 00 00 00 00 00 00 00  |l...A...3.......|
000007b0  21 43 6f 6e 66 69 67 75  72 65 00 00 80 34 0c 00  |!Configure...4..|
000007c0  48 fd ff ff 35 36 81 2b  48 00 00 00 13 01 00 00  |H...56.+H.......|
000007d0  00 00 00 00 50 44 75 6d  70 65 72 00 44 49 52 24  |....PDumper.DIR$|
000007e0  90 02 00 00 90 02 00 00  6c 0a 00 00 47 fd ff ff  |........l...G...|
000007f0  12 5e a4 ce 19 01 00 00  13 00 00 00 00 00 00 00  |.^..............|
00000800  21 52 6f 6f 74 00 00 00  88 0b 00 00 48 ff ff ff  |!Root.......H...|
00000810  9a d7 77 17 0a 01 00 00  13 00 00 00 00 00 00 00  |..w.............|
00000820  43 6f 6e 74 72 6f 6c 6c  65 72 54 79 70 65 00 00  |ControllerType..|
00000830  94 0c 00 00 46 ff ff ff  2c 98 ab d7 9d 00 00 00  |....F...,.......|
00000840  13 00 00 00 00 00 00 00  44 72 69 76 65 73 00 00  |........Drives..|
00000850  34 0d 00 00 48 ff ff ff  b1 71 d3 15 aa 00 00 00  |4...H....q......|
00000860  13 00 00 00 00 00 00 00  44 65 73 63 72 69 62 65  |........Describe|
00000870  44 69 73 63 00 00 00 00  e0 0d 00 00 48 ff ff ff  |Disc........H...|
00000880  4c 77 d3 15 9e 00 00 00  13 00 00 00 00 00 00 00  |Lw..............|
00000890  44 69 73 63 4f 70 00 00  80 0e 00 00 46 ff ff ff  |DiscOp......F...|
000008a0  5c c0 ab d7 7a 00 00 00  13 00 00 00 00 00 00 00  |\...z...........|
000008b0  45 43 43 53 41 6e 64 52  65 74 72 69 65 73 00 00  |ECCSAndRetries..|
000008c0  fc 0e 00 00 46 ff ff ff  aa c4 ab d7 a3 00 00 00  |....F...........|
000008d0  13 00 00 00 00 00 00 00  46 72 65 65 53 70 61 63  |........FreeSpac|
000008e0  65 00 00 00 a0 0f 00 00  46 ff ff ff 1c ff ac d7  |e.......F.......|
000008f0  72 02 00 00 13 00 00 00  00 00 00 00 48 44 43 00  |r...........HDC.|
00000900  14 12 00 00 48 ff ff ff  63 e8 77 17 aa 02 00 00  |....H...c.w.....|
00000910  13 00 00 00 00 00 00 00  49 44 45 55 73 65 72 4f  |........IDEUserO|
00000920  70 00 00 00 c0 14 00 00  48 ff ff ff 9e e9 77 17  |p.......H.....w.|
00000930  9d 00 00 00 13 00 00 00  00 00 00 00 4d 69 73 63  |............Misc|
00000940  4f 70 00 00 60 15 00 00  48 ff ff ff d4 eb 77 17  |Op..`...H.....w.|
00000950  3d 03 00 00 13 00 00 00  00 00 00 00 50 6f 77 65  |=...........Powe|
00000960  72 43 6f 6e 74 72 6f 6c  00 00 00 00 a0 18 00 00  |rControl........|
00000970  46 ff ff ff 66 c4 ac d7  64 02 00 00 13 00 00 00  |F...f...d.......|
00000980  00 00 00 00 52 65 74 72  69 65 73 00 04 1b 00 00  |....Retries.....|
00000990  46 ff ff ff 6e d8 ac d7  d8 01 00 00 13 00 00 00  |F...n...........|
000009a0  00 00 00 00 53 65 74 49  44 45 43 6f 6e 74 72 6f  |....SetIDEContro|
000009b0  6c 6c 65 72 00 00 00 00  dc 1c 00 00 46 ff ff ff  |ller........F...|
000009c0  85 ef ac d7 70 04 00 00  13 00 00 00 00 00 00 00  |....p...........|
000009d0  56 65 74 46 6f 72 6d 61  74 00 00 00 4c 21 00 00  |VetFormat...L!..|
000009e0  48 ff ff ff 6b f0 77 17  6b 00 00 00 13 00 00 00  |H...k.w.k.......|
000009f0  00 00 00 00 46 6c 70 50  72 6f 63 65 73 73 44 43  |....FlpProcessDC|
00000a00  42 00 00 00 b8 21 00 00  47 ff ff ff 46 42 a4 ce  |B....!..G...FB..|
00000a10  7e 00 00 00 13 00 00 00  00 00 00 00 4c 6f 63 6b  |~...........Lock|
00000a20  49 44 45 00 38 22 00 00  48 ff ff ff ef 6b ba 1f  |IDE.8"..H....k..|
00000a30  a1 00 00 00 13 00 00 00  00 00 00 00 53 65 63 74  |............Sect|
00000a40  6f 72 4f 70 00 00 00 00  dc 22 00 00 48 ff ff ff  |orOp....."..H...|
00000a50  b3 f3 77 17 a7 00 00 00  13 00 00 00 00 00 00 00  |..w.............|
00000a60  46 72 65 65 53 70 61 63  65 36 34 00 44 41 54 41  |FreeSpace64.DATA|
00000a70  19 01 00 00 41 44 46 53  0a 23 50 72 65 66 69 78  |....ADFS.#Prefix|
00000a80  20 41 44 46 53 5f 0a 23  50 61 72 65 6e 74 20 21  | ADFS_.#Parent !|
00000a90  52 6f 6f 74 0a 23 54 61  62 6c 65 20 43 6f 6c 75  |Root.#Table Colu|
00000aa0  6d 6e 73 20 32 0a 3c 43  6f 6e 74 72 6f 6c 6c 65  |mns 2.<Controlle|
00000ab0  72 54 79 70 65 3e 0a 3c  44 65 73 63 72 69 62 65  |rType>.<Describe|
00000ac0  44 69 73 63 3e 0a 3c 44  69 73 63 4f 70 3e 0a 3c  |Disc>.<DiscOp>.<|
00000ad0  44 72 69 76 65 73 3e 0a  3c 45 43 43 53 41 6e 64  |Drives>.<ECCSAnd|
00000ae0  52 65 74 72 69 65 73 3e  0a 3c 46 6c 70 50 72 6f  |Retries>.<FlpPro|
00000af0  63 65 73 73 44 43 42 3e  0a 3c 46 72 65 65 53 70  |cessDCB>.<FreeSp|
00000b00  61 63 65 3e 0a 3c 46 72  65 65 53 70 61 63 65 36  |ace>.<FreeSpace6|
00000b10  34 3e 0a 3c 48 44 43 3e  0a 3c 49 44 45 55 73 65  |4>.<HDC>.<IDEUse|
00000b20  72 4f 70 3e 0a 3c 4c 6f  63 6b 49 44 45 3e 0a 3c  |rOp>.<LockIDE>.<|
00000b30  4d 69 73 63 4f 70 3e 0a  3c 50 6f 77 65 72 43 6f  |MiscOp>.<PowerCo|
00000b40  6e 74 72 6f 6c 3e 0a 3c  52 65 74 72 69 65 73 3e  |ntrol>.<Retries>|
00000b50  0a 3c 53 65 63 74 6f 72  4f 70 3e 0a 3c 53 65 74  |.<SectorOp>.<Set|
00000b60  49 44 45 43 6f 6e 74 72  6f 6c 6c 65 72 3e 0a 3c  |IDEController>.<|
00000b70  56 65 74 46 6f 72 6d 61  74 3e 0a 23 45 6e 64 54  |VetFormat>.#EndT|
00000b80  61 62 6c 65 0a 00 00 00  44 41 54 41 0a 01 00 00  |able....DATA....|
00000b90  41 44 46 53 5f 43 6f 6e  74 72 6f 6c 6c 65 72 54  |ADFS_ControllerT|
00000ba0  79 70 65 20 20 28 26 34  30 32 34 38 29 0a 3d 3e  |ype  (&40248).=>|
00000bb0  09 52 30 20 3d 09 64 72  69 76 65 20 6e 75 6d 62  |.R0 =.drive numb|
00000bc0  65 72 20 28 30 2d 37 29  0a 3c 3d 09 52 30 20 3d  |er (0-7).<=.R0 =|
00000bd0  09 63 6f 6e 74 72 6f 6c  6c 65 72 20 74 79 70 65  |.controller type|
00000be0  3a 0a 09 20 09 30 20 3d  3e 20 64 69 73 63 20 6e  |:.. .0 => disc n|
00000bf0  6f 74 20 70 72 65 73 65  6e 74 0a 09 20 09 31 20  |ot present.. .1 |
00000c00  3d 3e 20 31 37 37 32 0a  09 20 09 32 20 3d 3e 20  |=> 1772.. .2 => |
00000c10  37 31 30 2f 37 31 31 0a  09 20 09 33 20 3d 3e 20  |710/711.. .3 => |
00000c20  53 54 35 30 36 0a 09 20  09 34 20 3d 3e 20 49 44  |ST506.. .4 => ID|
00000c30  45 0a 0a 54 68 69 73 20  63 61 6c 6c 20 72 65 74  |E..This call ret|
00000c40  75 72 6e 73 20 74 68 65  20 63 6f 6e 74 72 6f 6c  |urns the control|
00000c50  6c 65 72 20 74 79 70 65  20 6f 66 20 74 68 65 20  |ler type of the |
00000c60  67 69 76 65 6e 20 64 72  69 76 65 2c 20 61 6e 64  |given drive, and|
00000c70  20 69 73 20 6e 6f 74 20  61 76 61 69 6c 61 62 6c  | is not availabl|
00000c80  65 20 75 6e 64 65 72 20  52 49 53 43 20 4f 53 20  |e under RISC OS |
00000c90  32 2e 00 00 44 41 54 41  9d 00 00 00 41 44 46 53  |2...DATA....ADFS|
00000ca0  5f 44 72 69 76 65 73 20  20 28 26 34 30 32 34 32  |_Drives  (&40242|
00000cb0  29 0a 23 50 61 72 65 6e  74 20 41 44 46 53 5f 0a  |).#Parent ADFS_.|
00000cc0  54 68 69 73 20 53 57 49  20 63 61 6c 6c 73 20 3c  |This SWI calls <|
00000cd0  46 69 6c 65 43 6f 72 65  5f 44 72 69 76 65 73 3e  |FileCore_Drives>|
00000ce0  2c 20 61 66 74 65 72 20  66 69 72 73 74 20 73 65  |, after first se|
00000cf0  74 74 69 6e 67 20 52 38  20 74 6f 20 70 6f 69 6e  |tting R8 to poin|
00000d00  74 20 74 6f 20 74 68 65  20 46 69 6c 65 43 6f 72  |t to the FileCor|
00000d10  65 20 69 6e 73 74 61 6e  63 65 20 70 72 69 76 61  |e instance priva|
00000d20  74 65 20 77 6f 72 64 20  66 6f 72 20 41 44 46 53  |te word for ADFS|
00000d30  2e 00 00 00 44 41 54 41  aa 00 00 00 41 44 46 53  |....DATA....ADFS|
00000d40  5f 44 65 73 63 72 69 62  65 44 69 73 63 20 20 28  |_DescribeDisc  (|
00000d50  26 34 30 32 34 35 29 0a  23 50 61 72 65 6e 74 20  |&40245).#Parent |
00000d60  41 44 46 53 5f 0a 54 68  69 73 20 53 57 49 20 63  |ADFS_.This SWI c|
00000d70  61 6c 6c 73 20 3c 46 69  6c 65 43 6f 72 65 5f 44  |alls <FileCore_D|
00000d80  65 73 63 72 69 62 65 44  69 73 63 3e 2c 20 61 66  |escribeDisc>, af|
00000d90  74 65 72 20 66 69 72 73  74 20 73 65 74 74 69 6e  |ter first settin|
00000da0  67 20 52 38 20 74 6f 20  70 6f 69 6e 74 20 74 6f  |g R8 to point to|
00000db0  20 74 68 65 20 46 69 6c  65 43 6f 72 65 20 69 6e  | the FileCore in|
00000dc0  73 74 61 6e 63 65 20 70  72 69 76 61 74 65 20 77  |stance private w|
00000dd0  6f 72 64 20 66 6f 72 20  41 44 46 53 2e 0a 00 00  |ord for ADFS....|
00000de0  44 41 54 41 9e 00 00 00  41 44 46 53 5f 44 69 73  |DATA....ADFS_Dis|
00000df0  63 4f 70 20 20 28 26 34  30 32 34 30 29 0a 23 50  |cOp  (&40240).#P|
00000e00  61 72 65 6e 74 20 41 44  46 53 5f 0a 54 68 69 73  |arent ADFS_.This|
00000e10  20 53 57 49 20 63 61 6c  6c 73 20 3c 46 69 6c 65  | SWI calls <File|
00000e20  43 6f 72 65 5f 44 69 73  63 4f 70 3e 2c 20 61 66  |Core_DiscOp>, af|
00000e30  74 65 72 20 66 69 72 73  74 20 73 65 74 74 69 6e  |ter first settin|
00000e40  67 20 52 38 20 74 6f 20  70 6f 69 6e 74 20 74 6f  |g R8 to point to|
00000e50  20 74 68 65 20 46 69 6c  65 43 6f 72 65 20 69 6e  | the FileCore in|
00000e60  73 74 61 6e 63 65 20 70  72 69 76 61 74 65 20 77  |stance private w|
00000e70  6f 72 64 20 66 6f 72 20  41 44 46 53 2e 0a 00 00  |ord for ADFS....|
00000e80  44 41 54 41 7a 00 00 00  41 44 46 53 5f 45 43 43  |DATAz...ADFS_ECC|
00000e90  53 41 6e 64 52 65 74 72  69 65 73 20 20 28 26 34  |SAndRetries  (&4|
00000ea0  30 32 35 30 29 0a 23 50  61 72 65 6e 74 20 41 44  |0250).#Parent AD|
00000eb0  46 53 5f 0a 54 68 69 73  20 63 61 6c 6c 20 69 73  |FS_.This call is|
00000ec0  20 66 6f 72 20 69 6e 74  65 72 6e 61 6c 20 75 73  | for internal us|
00000ed0  65 20 6f 6e 6c 79 2c 20  61 6e 64 20 6e 6f 74 20  |e only, and not |
00000ee0  61 76 61 69 6c 61 62 6c  65 20 75 6e 64 65 72 20  |available under |
00000ef0  52 49 53 43 20 4f 53 20  32 2e 00 00 44 41 54 41  |RISC OS 2...DATA|
00000f00  a3 00 00 00 41 44 46 53  5f 46 72 65 65 53 70 61  |....ADFS_FreeSpa|
00000f10  63 65 20 20 28 26 34 30  32 34 33 29 0a 23 50 61  |ce  (&40243).#Pa|
00000f20  72 65 6e 74 20 41 44 46  53 5f 0a 54 68 69 73 20  |rent ADFS_.This |
00000f30  53 57 49 20 63 61 6c 6c  73 20 3c 46 69 6c 65 43  |SWI calls <FileC|
00000f40  6f 72 65 5f 46 72 65 65  53 70 61 63 65 3e 2c 20  |ore_FreeSpace>, |
00000f50  61 66 74 65 72 20 66 69  72 73 74 20 73 65 74 74  |after first sett|
00000f60  69 6e 67 20 52 38 20 74  6f 20 70 6f 69 6e 74 20  |ing R8 to point |
00000f70  74 6f 20 74 68 65 20 46  69 6c 65 43 6f 72 65 20  |to the FileCore |
00000f80  69 6e 73 74 61 6e 63 65  20 70 72 69 76 61 74 65  |instance private|
00000f90  20 77 6f 72 64 20 66 6f  72 20 41 44 46 53 2e 00  | word for ADFS..|
00000fa0  44 41 54 41 72 02 00 00  41 44 46 53 5f 48 44 43  |DATAr...ADFS_HDC|
00000fb0  20 20 28 26 34 30 32 34  31 29 0a 23 50 61 72 65  |  (&40241).#Pare|
00000fc0  6e 74 20 41 44 46 53 5f  0a 3d 3e 09 52 32 20 3d  |nt ADFS_.=>.R2 =|
00000fd0  09 61 64 64 72 65 73 73  20 6f 66 20 61 6c 74 65  |.address of alte|
00000fe0  72 6e 61 74 69 76 65 20  68 61 72 64 20 64 69 73  |rnative hard dis|
00000ff0  63 20 63 6f 6e 74 72 6f  6c 6c 65 72 0a 09 52 33  |c controller..R3|
00001000  20 3d 09 61 64 64 72 65  73 73 20 6f 66 20 70 6f  | =.address of po|
00001010  6c 6c 20 6c 6f 63 61 74  69 6f 6e 20 66 6f 72 20  |ll location for |
00001020  49 52 51 2f 44 52 51 0a  09 52 34 20 3d 09 62 69  |IRQ/DRQ..R4 =.bi|
00001030  74 73 20 66 6f 72 20 49  52 51 2f 44 52 51 0a 09  |ts for IRQ/DRQ..|
00001040  52 35 20 3d 09 61 64 64  72 65 73 73 20 74 6f 20  |R5 =.address to |
00001050  65 6e 61 62 6c 65 20 49  52 51 2f 44 52 51 0a 09  |enable IRQ/DRQ..|
00001060  52 36 20 3d 09 62 69 74  73 20 74 6f 20 65 6e 61  |R6 =.bits to ena|
00001070  62 6c 65 20 49 52 51 2f  44 52 51 0a 0a 54 68 69  |ble IRQ/DRQ..Thi|
00001080  73 20 63 61 6c 6c 20 73  65 74 73 20 75 70 20 74  |s call sets up t|
00001090  68 65 20 61 64 64 72 65  73 73 20 6f 66 20 74 68  |he address of th|
000010a0  65 20 53 54 35 30 35 36  20 68 61 72 64 20 64 69  |e ST5056 hard di|
000010b0  73 63 20 63 6f 6e 74 72  6f 6c 6c 65 72 20 74 6f  |sc controller to|
000010c0  20 62 65 20 75 73 65 64  20 62 79 20 74 68 65 20  | be used by the |
000010d0  41 44 46 53 2e 20 46 6f  72 20 69 6e 73 74 61 6e  |ADFS. For instan|
000010e0  63 65 2c 20 61 6e 20 65  78 70 61 6e 73 69 6f 6e  |ce, an expansion|
000010f0  20 63 61 72 64 20 63 61  6e 20 73 75 70 6c 6c 79  | card can suplly|
00001100  20 61 6e 20 61 6c 74 65  72 6e 61 74 69 76 65 20  | an alternative |
00001110  63 6f 6e 74 72 6f 6c 6c  65 72 20 74 6f 20 74 68  |controller to th|
00001120  65 20 6f 6e 65 20 6e 6f  72 6d 61 6c 6c 79 20 75  |e one normally u|
00001130  73 65 64 2e 20 54 68 65  20 63 6f 6e 74 72 6f 6c  |sed. The control|
00001140  6c 65 72 20 6d 75 73 74  20 62 65 20 61 6e 20 48  |ler must be an H|
00001150  44 36 33 34 36 33 20 28  6f 72 20 63 6f 6d 70 61  |D63463 (or compa|
00001160  74 69 62 6c 65 29 2e 0a  0a 54 68 65 20 70 6f 6c  |tible)...The pol|
00001170  6c 69 6e 67 20 61 6e 64  20 69 6e 74 65 72 75 70  |ling and interup|
00001180  74 20 73 65 6e 73 65 20  69 73 20 64 6f 6e 65 20  |t sense is done |
00001190  75 73 69 6e 67 3a 0a 23  49 6e 64 65 6e 74 20 32  |using:.#Indent 2|
000011a0  3b 66 63 6f 64 65 0a 4c  44 52 42 20 20 3c 52 6e  |;fcode.LDRB  <Rn|
000011b0  3d 3e 41 73 73 65 6d 62  6c 79 3a 52 6e 3e 2c 5b  |=>Assembly:Rn>,[|
000011c0  70 6f 6c 6c 20 6c 6f 63  61 74 69 6f 6e 5d 0a 54  |poll location].T|
000011d0  53 54 20 20 20 52 6e 2c  5b 70 6f 6c 6c 20 62 69  |ST   Rn,[poll bi|
000011e0  74 73 5d 0a 23 49 6e 64  65 6e 74 3b 66 0a 0a 54  |ts].#Indent;f..T|
000011f0  68 65 20 49 52 51 2f 44  52 51 20 6d 75 73 74 20  |he IRQ/DRQ must |
00001200  62 65 20 31 20 77 68 65  6e 20 61 63 74 69 76 65  |be 1 when active|
00001210  2e 0a 00 00 44 41 54 41  aa 02 00 00 41 44 46 53  |....DATA....ADFS|
00001220  5f 49 44 45 55 73 65 72  4f 70 20 20 28 26 34 30  |_IDEUserOp  (&40|
00001230  32 34 42 29 0a 23 50 61  72 65 6e 74 20 41 44 46  |24B).#Parent ADF|
00001240  53 5f 0a 3d 3e 09 52 30  20 3d 09 3c 66 6c 61 67  |S_.=>.R0 =.<flag|
00001250  73 3d 3e 2e 66 6c 61 67  73 3e 0a 09 52 32 20 3d  |s=>.flags>..R2 =|
00001260  09 70 6f 69 6e 74 65 72  20 74 6f 20 70 61 72 61  |.pointer to para|
00001270  6d 65 74 65 72 20 62 6c  6f 63 6b 20 66 6f 72 20  |meter block for |
00001280  63 6f 6d 6d 61 6e 64 20  61 6e 64 20 72 65 73 75  |command and resu|
00001290  6c 74 73 0a 09 52 33 20  3d 09 70 6f 69 6e 74 65  |lts..R3 =.pointe|
000012a0  72 20 74 6f 20 62 75 66  66 65 72 0a 09 52 34 20  |r to buffer..R4 |
000012b0  3d 09 6c 65 6e 67 74 68  20 74 6f 20 74 72 61 6e  |=.length to tran|
000012c0  73 66 65 72 0a 09 52 35  20 3d 09 74 69 6d 65 6f  |sfer..R5 =.timeo|
000012d0  75 74 20 69 6e 20 63 65  6e 74 69 73 65 63 6f 6e  |ut in centisecon|
000012e0  64 73 20 28 30 20 3d 3e  20 75 73 65 20 64 65 66  |ds (0 => use def|
000012f0  61 75 6c 74 29 0a 09 52  31 32 20 3d 09 70 6f 69  |ault)..R12 =.poi|
00001300  6e 74 65 72 20 74 6f 20  73 74 61 74 69 63 20 77  |nter to static w|
00001310  6f 72 6b 20 73 70 61 63  65 0a 0a 3c 3d 09 52 30  |ork space..<=.R0|
00001320  20 3d 09 63 6f 6d 6d 61  6e 64 20 73 74 61 74 75  | =.command statu|
00001330  73 20 28 30 20 6f 72 20  61 20 64 69 73 63 20 65  |s (0 or a disc e|
00001340  72 72 6f 72 20 6e 75 6d  62 65 72 29 0a 09 52 32  |rror number)..R2|
00001350  20 70 72 65 73 65 72 76  65 64 0a 09 52 33 2c 52  | preserved..R3,R|
00001360  34 20 75 70 64 61 74 65  64 0a 09 52 35 20 63 6f  |4 updated..R5 co|
00001370  72 72 75 70 74 65 64 0a  0a 54 68 69 73 20 63 61  |rrupted..This ca|
00001380  6c 6c 20 70 72 6f 76 69  64 65 73 20 74 68 65 20  |ll provides the |
00001390  64 69 72 65 63 74 20 75  73 65 20 69 6e 74 65 72  |direct use inter|
000013a0  66 61 63 65 20 66 6f 72  20 6c 6f 77 2d 6c 65 76  |face for low-lev|
000013b0  65 6c 20 49 44 45 20 63  6f 6d 6d 61 6e 64 73 2e  |el IDE commands.|
000013c0  20 49 74 20 6d 75 73 74  20 6e 6f 74 20 62 65 20  | It must not be |
000013d0  63 61 6c 6c 65 64 20 69  6e 20 62 61 63 6b 67 72  |called in backgr|
000013e0  6f 75 6e 64 2e 0a 23 53  75 62 70 61 67 65 20 66  |ound..#Subpage f|
000013f0  6c 61 67 73 0a 49 44 45  20 43 6f 6e 74 72 6f 6c  |lags.IDE Control|
00001400  6c 65 72 20 66 6c 61 67  73 0a 42 69 74 09 4d 65  |ler flags.Bit.Me|
00001410  61 6e 69 6e 67 0a 23 6c  69 6e 65 0a 30 09 73 65  |aning.#line.0.se|
00001420  74 20 3a 20 72 65 73 65  74 20 63 6f 6e 74 72 6f  |t : reset contro|
00001430  6c 6c 65 72 0a 09 63 6c  72 20 3a 20 70 72 6f 63  |ller..clr : proc|
00001440  65 73 73 20 63 6f 6d 6d  61 6e 64 0a 32 34 2d 32  |ess command.24-2|
00001450  35 09 74 72 61 6e 73 66  65 72 20 64 69 72 65 63  |5.transfer direc|
00001460  74 69 6f 6e 3a 0a 09 30  30 20 3a 20 6e 6f 20 74  |tion:..00 : no t|
00001470  72 61 6e 73 66 65 72 0a  09 30 31 20 3a 20 72 65  |ransfer..01 : re|
00001480  61 64 20 28 69 65 20 62  69 74 20 32 34 20 73 65  |ad (ie bit 24 se|
00001490  74 29 0a 09 31 30 20 3a  20 77 72 69 74 65 20 28  |t)..10 : write (|
000014a0  69 65 20 62 69 74 20 32  35 20 73 65 74 29 0a 09  |ie bit 25 set)..|
000014b0  31 31 20 3a 20 72 65 73  65 72 76 65 64 0a 00 00  |11 : reserved...|
000014c0  44 41 54 41 9d 00 00 00  41 44 46 53 5f 4d 69 73  |DATA....ADFS_Mis|
000014d0  63 4f 70 20 20 28 26 34  30 32 34 43 29 0a 23 50  |cOp  (&4024C).#P|
000014e0  61 72 65 6e 74 20 41 44  46 53 5f 0a 54 68 69 73  |arent ADFS_.This|
000014f0  20 53 57 49 20 63 61 6c  6c 73 20 3c 46 69 6c 65  | SWI calls <File|
00001500  43 6f 72 65 5f 4d 69 73  63 4f 70 3e 2c 20 61 66  |Core_MiscOp>, af|
00001510  74 65 72 20 66 69 72 73  74 20 73 65 74 74 69 6e  |ter first settin|
00001520  67 20 52 38 20 74 6f 20  70 6f 69 6e 74 20 74 6f  |g R8 to point to|
00001530  20 74 68 65 20 46 69 6c  65 43 6f 72 65 20 69 6e  | the FileCore in|
00001540  73 74 61 6e 63 65 20 70  72 69 76 61 74 65 20 77  |stance private w|
00001550  6f 72 64 20 66 6f 72 20  41 44 46 53 2e 00 00 00  |ord for ADFS....|
00001560  44 41 54 41 3d 03 00 00  41 44 46 53 5f 50 6f 77  |DATA=...ADFS_Pow|
00001570  65 72 43 6f 6e 74 72 6f  6c 20 20 28 26 34 30 32  |erControl  (&402|
00001580  34 39 29 0a 3d 3e 09 52  30 20 3d 09 72 65 61 73  |49).=>.R0 =.reas|
00001590  6f 6e 20 63 6f 64 65 0a  09 20 09 30 20 3d 3e 20  |on code.. .0 => |
000015a0  72 65 61 64 20 64 72 69  76 65 20 73 70 69 6e 20  |read drive spin |
000015b0  73 74 61 74 75 73 0a 09  20 09 31 20 3d 3e 20 73  |status.. .1 => s|
000015c0  65 74 20 64 72 69 76 65  20 61 75 74 6f 73 70 69  |et drive autospi|
000015d0  6e 64 6f 77 6e 0a 09 20  09 32 20 3d 3e 20 63 6f  |ndown.. .2 => co|
000015e0  6e 74 72 6f 6c 20 64 72  69 76 65 20 73 70 69 6e  |ntrol drive spin|
000015f0  20 64 69 72 65 63 74 6c  79 20 77 69 74 68 6f 75  | directly withou|
00001600  74 20 61 66 66 65 63 74  69 6e 67 20 61 75 74 6f  |t affecting auto|
00001610  73 70 69 6e 64 6f 77 6e  0a 09 52 31 20 3d 09 64  |spindown..R1 =.d|
00001620  72 69 76 65 0a 09 52 32  20 3d 09 64 72 69 76 65  |rive..R2 =.drive|
00001630  20 61 75 74 6f 73 70 69  6e 64 6f 77 6e 2c 20 69  | autospindown, i|
00001640  66 20 52 30 20 3d 20 31  3b 0a 09 20 09 20 20 35  |f R0 = 1;.. .  5|
00001650  20 d7 a0 6e 75 6d 62 65  72 20 6f 66 20 73 65 63  | ..number of sec|
00001660  6f 6e 64 73 0a 09 20 09  6f 72 20 61 63 74 69 6f  |onds.. .or actio|
00001670  6e 20 74 6f 20 74 61 6b  65 2c 20 69 66 20 52 30  |n to take, if R0|
00001680  20 3d 20 32 3b 0a 09 20  09 20 20 30 20 74 6f 20  | = 2;.. .  0 to |
00001690  73 70 69 6e 20 64 6f 77  6e 20 69 6d 6d 65 64 69  |spin down immedi|
000016a0  61 74 65 6c 79 0a 09 20  09 20 20 6f 74 68 65 72  |ately.. .  other|
000016b0  77 69 73 65 2c 20 73 70  69 6e 20 75 70 20 69 6d  |wise, spin up im|
000016c0  6d 65 64 69 61 74 65 6c  79 0a 0a 3c 3d 09 52 32  |mediately..<=.R2|
000016d0  20 3d 09 64 72 69 76 65  20 73 70 69 6e 20 73 74  | =.drive spin st|
000016e0  61 74 75 73 2c 20 69 66  20 52 30 20 3d 20 30 3b  |atus, if R0 = 0;|
000016f0  0a 09 20 09 20 20 30 20  69 66 20 64 72 69 76 65  |.. .  0 if drive|
00001700  20 69 73 6e 27 74 20 73  70 69 6e 6e 69 6e 67 0a  | isn't spinning.|
00001710  09 20 09 20 20 30 20 69  66 20 64 72 69 76 65 20  |. .  0 if drive |
00001720  69 73 20 73 70 69 6e 6e  69 6e 67 0a 09 52 33 20  |is spinning..R3 |
00001730  3d 09 70 72 65 76 69 6f  75 73 6c 79 20 76 61 6c  |=.previously val|
00001740  75 65 20 66 6f 72 20 64  72 69 76 65 20 61 75 74  |ue for drive aut|
00001750  6f 73 70 69 6e 64 6f 77  6e 2c 20 69 66 20 52 30  |ospindown, if R0|
00001760  20 3d 20 31 0a 0a 54 68  69 73 20 63 61 6c 6c 20  | = 1..This call |
00001770  63 6f 6e 74 72 6f 6c 73  20 74 68 65 20 70 6f 77  |controls the pow|
00001780  65 72 20 73 61 76 69 6e  67 20 66 65 61 74 75 72  |er saving featur|
00001790  65 73 20 6f 66 20 74 68  65 20 41 44 46 53 20 73  |es of the ADFS s|
000017a0  79 73 74 65 6d 2e 20 49  74 20 63 61 6e 20 62 65  |ystem. It can be|
000017b0  20 64 61 6e 67 65 72 6f  75 73 20 74 6f 20 75 73  | dangerous to us|
000017c0  65 20 74 68 69 73 20 63  61 6c 6c 20 6f 6e 20 64  |e this call on d|
000017d0  72 69 76 65 73 20 74 68  61 74 20 6e 6f 74 20 66  |rives that not f|
000017e0  75 6c 6c 79 20 73 75 70  70 6f 72 74 20 64 72 69  |ully support dri|
000017f0  76 65 20 73 70 69 6e 20  63 6f 6e 74 72 6f 6c 2e  |ve spin control.|
00001800  20 54 68 65 20 63 6f 6e  74 72 6f 6c 6c 65 72 20  | The controller |
00001810  6f 6e 20 61 74 20 6c 65  61 73 74 20 74 77 6f 20  |on at least two |
00001820  64 72 69 76 65 73 20 74  65 73 74 65 64 20 68 61  |drives tested ha|
00001830  6e 67 20 75 70 20 77 68  65 6e 20 61 75 74 6f 73  |ng up when autos|
00001840  70 69 6e 64 6f 77 6e 20  69 73 20 65 6e 61 62 6c  |pindown is enabl|
00001850  65 64 3b 20 61 20 72 65  73 65 74 20 64 6f 65 73  |ed; a reset does|
00001860  6e 27 74 20 72 65 63 6f  76 65 72 20 74 68 65 20  |n't recover the |
00001870  73 69 74 75 61 74 69 6f  6e 2c 20 61 6c 74 68 6f  |situation, altho|
00001880  75 67 68 74 20 61 20 70  6f 77 65 72 2d 64 6f 77  |ught a power-dow|
00001890  6e 20 72 65 73 65 74 20  64 6f 65 73 2e 00 00 00  |n reset does....|
000018a0  44 41 54 41 64 02 00 00  41 44 46 53 5f 52 65 74  |DATAd...ADFS_Ret|
000018b0  72 69 65 73 20 20 28 26  34 30 32 34 34 29 0a 23  |ries  (&40244).#|
000018c0  50 61 72 65 6e 74 20 41  44 46 53 5f 0a 3d 3e 09  |Parent ADFS_.=>.|
000018d0  52 30 20 3d 09 6d 61 73  6b 20 6f 66 20 62 69 74  |R0 =.mask of bit|
000018e0  73 20 74 6f 20 63 68 61  6e 67 65 0a 09 52 31 20  |s to change..R1 |
000018f0  3d 09 6e 65 77 20 76 61  6c 75 65 73 20 6f 66 20  |=.new values of |
00001900  62 69 74 73 20 74 6f 20  63 68 61 6e 67 65 0a 0a  |bits to change..|
00001910  3c 3d 09 52 30 20 70 72  65 73 65 72 76 65 64 0a  |<=.R0 preserved.|
00001920  09 52 31 20 3d 09 52 30  20 41 4e 44 20 65 6e 74  |.R1 =.R0 AND ent|
00001930  72 79 20 76 61 6c 75 65  20 6f 66 20 52 31 0a 09  |ry value of R1..|
00001940  52 32 20 3d 09 6f 6c 64  20 76 61 6c 75 65 20 6f  |R2 =.old value o|
00001950  66 20 72 65 74 72 79 20  77 6f 72 64 0a 09 52 33  |f retry word..R3|
00001960  20 3d 09 6e 65 77 20 76  61 6c 75 65 20 6f 66 20  | =.new value of |
00001970  72 65 74 72 79 20 77 6f  72 64 0a 0a 54 68 69 73  |retry word..This|
00001980  20 63 61 6c 6c 20 73 65  74 73 20 75 70 20 74 68  | call sets up th|
00001990  65 20 6e 75 6d 62 65 72  20 6f 66 20 72 65 74 72  |e number of retr|
000019a0  69 65 73 20 75 73 65 64  20 62 79 20 77 72 69 74  |ies used by writ|
000019b0  69 6e 67 20 74 6f 20 74  68 65 20 72 65 74 72 79  |ing to the retry|
000019c0  20 77 6f 72 64 2e 20 54  68 65 20 66 6f 72 6d 61  | word. The forma|
000019d0  74 20 6f 66 20 74 68 65  20 77 6f 72 64 20 69 73  |t of the word is|
000019e0  3a 0a 0a 23 54 61 62 0a  42 79 74 65 09 4e 75 6d  |:..#Tab.Byte.Num|
000019f0  62 65 72 20 6f 66 20 72  65 74 72 69 65 73 20 66  |ber of retries f|
00001a00  6f 72 0a 23 4c 69 6e 65  0a 30 09 68 61 72 64 20  |or.#Line.0.hard |
00001a10  64 69 73 63 20 72 65 61  64 2f 77 72 69 74 65 20  |disc read/write |
00001a20  73 65 63 74 6f 72 0a 31  09 66 6c 6f 70 70 79 20  |sector.1.floppy |
00001a30  64 69 73 63 20 72 65 61  64 2f 77 72 69 74 65 20  |disc read/write |
00001a40  73 65 63 74 6f 72 0a 32  09 66 6c 6f 70 70 79 20  |sector.2.floppy |
00001a50  64 69 73 63 20 6d 6f 75  6e 74 20 28 70 65 72 20  |disc mount (per |
00001a60  63 6f 70 79 20 6f 66 20  74 68 65 20 64 69 73 63  |copy of the disc|
00001a70  20 6d 61 70 29 0a 33 09  76 65 72 69 66 79 20 61  | map).3.verify a|
00001a80  66 74 65 72 20 2a 46 6f  72 6d 61 74 2c 20 62 65  |fter *Format, be|
00001a90  66 6f 72 65 20 73 65 63  74 6f 72 20 69 73 20 63  |fore sector is c|
00001aa0  6f 6e 73 69 64 65 72 65  64 20 61 20 64 65 66 65  |onsidered a defe|
00001ab0  63 74 0a 0a 54 68 65 20  6e 65 77 20 76 61 6c 75  |ct..The new valu|
00001ac0  65 20 69 73 20 63 61 6c  63 75 6c 61 74 65 64 20  |e is calculated |
00001ad0  61 73 20 66 6f 6c 6c 6f  77 73 3a 0a 20 20 28 6f  |as follows:.  (o|
00001ae0  6c 64 20 76 61 6c 75 65  20 41 4e 44 20 4e 4f 54  |ld value AND NOT|
00001af0  20 52 30 29 20 45 4f 52  20 28 52 31 20 41 4e 44  | R0) EOR (R1 AND|
00001b00  20 52 30 29 44 41 54 41  d8 01 00 00 41 44 46 53  | R0)DATA....ADFS|
00001b10  5f 53 65 74 49 44 45 43  6f 6e 74 72 6f 6c 6c 65  |_SetIDEControlle|
00001b20  72 20 20 28 26 34 30 32  34 41 29 0a 23 50 61 72  |r  (&4024A).#Par|
00001b30  65 6e 74 20 41 44 46 53  5f 0a 3d 3e 09 52 32 20  |ent ADFS_.=>.R2 |
00001b40  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 49 44 45  |=.pointer to IDE|
00001b50  20 63 6f 6e 74 72 6f 6c  6c 65 72 0a 09 52 33 20  | controller..R3 |
00001b60  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 69 6e 74  |=.pointer to int|
00001b70  65 72 72 75 70 74 20 73  74 61 74 75 73 20 6f 66  |errupt status of|
00001b80  20 63 6f 6e 74 72 6f 6c  6c 65 72 0a 09 52 34 20  | controller..R4 |
00001b90  3d 09 41 4e 44 20 77 69  74 68 20 73 74 61 74 75  |=.AND with statu|
00001ba0  73 2c 20 4e 45 20 3d 3e  20 49 52 51 0a 09 52 35  |s, NE => IRQ..R5|
00001bb0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 69 6e  | =.pointer to in|
00001bc0  74 65 72 72 75 70 74 20  6d 61 73 6b 0a 09 52 36  |terrupt mask..R6|
00001bd0  20 3d 09 4f 52 20 69 6e  74 6f 20 6d 61 73 6b 20  | =.OR into mask |
00001be0  65 6e 61 62 6c 65 73 20  49 52 51 0a 09 52 37 20  |enables IRQ..R7 |
00001bf0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 64 61 74  |=.pointer to dat|
00001c00  61 20 72 65 61 64 20 72  6f 75 74 69 6e 65 20 28  |a read routine (|
00001c10  30 20 66 6f 72 20 64 65  66 61 75 6c 74 29 0a 09  |0 for default)..|
00001c20  52 38 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R8 =.pointer to |
00001c30  64 61 74 61 20 77 72 69  74 65 20 72 6f 75 74 69  |data write routi|
00001c40  6e 65 20 28 30 20 66 6f  72 20 64 65 66 61 75 6c  |ne (0 for defaul|
00001c50  74 29 0a 09 52 31 32 20  3d 09 70 6f 69 6e 74 65  |t)..R12 =.pointe|
00001c60  72 20 74 6f 20 73 74 61  74 69 63 20 77 6f 72 6b  |r to static work|
00001c70  20 73 70 61 63 65 0a 0a  3c 3d 09 41 6c 6c 20 72  | space..<=.All r|
00001c80  65 67 69 73 74 65 72 73  20 70 72 65 73 65 72 76  |egisters preserv|
00001c90  65 64 0a 0a 54 68 69 73  20 63 61 6c 6c 20 67 69  |ed..This call gi|
00001ca0  76 65 73 20 74 68 65 20  49 44 45 20 64 72 69 76  |ves the IDE driv|
00001cb0  65 72 20 74 68 65 20 64  65 74 61 69 6c 73 20 6f  |er the details o|
00001cc0  66 20 61 6e 20 61 6c 74  65 72 6e 61 74 69 76 65  |f an alternative|
00001cd0  20 63 6f 6e 74 72 6f 6c  6c 65 72 2e 44 41 54 41  | controller.DATA|
00001ce0  70 04 00 00 41 44 46 53  5f 56 65 74 46 6f 72 6d  |p...ADFS_VetForm|
00001cf0  61 74 20 20 28 26 34 30  32 34 36 29 0a 23 50 61  |at  (&40246).#Pa|
00001d00  72 65 6e 74 20 41 44 46  53 5f 0a 3d 3e 09 52 30  |rent ADFS_.=>.R0|
00001d10  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 64 69  | =.pointer to di|
00001d20  73 63 20 66 6f 72 6d 61  74 20 73 74 72 75 63 74  |sc format struct|
00001d30  75 72 65 20 74 6f 20 62  65 20 76 65 74 74 65 64  |ure to be vetted|
00001d40  0a 09 52 31 20 3d 09 70  61 72 61 6d 65 74 65 72  |..R1 =.parameter|
00001d50  73 20 70 72 65 76 69 6f  75 73 6c 79 20 70 61 73  |s previously pas|
00001d60  73 65 64 20 62 79 20 41  44 46 53 20 69 6e 20 52  |sed by ADFS in R|
00001d70  32 20 74 6f 20 27 49 6d  61 67 65 27 46 53 5f 44  |2 to 'Image'FS_D|
00001d80  69 73 63 46 6f 72 6d 61  74 20 28 69 65 20 64 72  |iscFormat (ie dr|
00001d90  69 76 65 20 6e 75 6d 62  65 72 29 0a 0a 3c 3d 09  |ive number)..<=.|
00001da0  52 30 2c 52 31 20 70 72  65 73 65 72 76 65 64 0a  |R0,R1 preserved.|
00001db0  0a 54 68 69 73 20 63 61  6c 6c 20 76 65 74 73 20  |.This call vets |
00001dc0  74 68 65 20 67 69 76 65  6e 20 64 69 73 63 20 66  |the given disc f|
00001dd0  6f 72 6d 61 74 20 73 74  72 75 63 74 75 72 65 20  |ormat structure |
00001de0  66 6f 72 20 61 63 68 69  65 76 61 62 69 6c 69 74  |for achievabilit|
00001df0  79 20 77 69 74 68 20 74  68 65 20 61 76 61 69 6c  |y with the avail|
00001e00  61 62 6c 65 20 68 61 72  64 77 61 72 65 2e 20 41  |able hardware. A|
00001e10  44 46 53 20 75 70 64 61  74 65 73 20 74 68 65 20  |DFS updates the |
00001e20  64 69 73 63 20 66 6f 72  6d 61 74 20 73 74 72 75  |disc format stru|
00001e30  63 74 75 72 65 73 20 77  69 74 68 20 76 61 6c 75  |ctures with valu|
00001e40  65 73 20 74 68 61 74 20  69 74 20 63 61 6e 20 61  |es that it can a|
00001e50  63 74 75 61 6c 6c 79 20  61 63 68 69 65 76 65 20  |ctually achieve |
00001e60  77 69 74 68 20 74 68 65  20 68 61 72 64 77 61 72  |with the hardwar|
00001e70  65 20 61 76 61 69 6c 61  62 6c 65 2e 20 46 6f 72  |e available. For|
00001e80  20 65 78 61 6d 70 6c 65  20 74 68 65 20 6f 6e 6c  | example the onl|
00001e90  79 20 66 69 6c 6c 20 62  79 74 65 20 76 61 6c 75  |y fill byte valu|
00001ea0  65 20 61 76 61 69 6c 61  62 6c 65 20 77 68 65 6e  |e available when|
00001eb0  20 66 6f 72 6d 61 74 74  69 6e 67 20 6d 69 67 68  | formatting migh|
00001ec0  74 20 62 65 20 30 2c 20  62 75 74 20 74 68 65 20  |t be 0, but the |
00001ed0  72 65 71 75 65 73 74 65  64 20 76 61 6c 75 65 20  |requested value |
00001ee0  6d 61 79 20 62 65 20 26  34 45 2c 20 68 65 6e 63  |may be &4E, henc|
00001ef0  65 20 30 20 77 6f 75 6c  64 20 62 65 20 66 69 6c  |e 0 would be fil|
00001f00  6c 65 64 20 69 6e 20 61  73 20 74 68 65 20 66 69  |led in as the fi|
00001f10  6c 6c 20 62 79 74 65 20  76 61 6c 75 65 2e 0a 0a  |ll byte value...|
00001f20  49 66 20 41 44 46 53 20  63 61 6e 27 74 20 73 65  |If ADFS can't se|
00001f30  6e 73 69 62 6c 79 20 64  6f 77 6e 67 72 61 64 65  |nsibly downgrade|
00001f40  20 74 68 65 20 70 61 72  61 6d 65 74 65 72 73 20  | the parameters |
00001f50  73 74 72 75 63 74 75 72  65 2c 20 69 74 20 77 69  |structure, it wi|
00001f60  6c 6c 20 67 65 6e 65 72  61 74 65 20 61 6e 20 65  |ll generate an e|
00001f70  72 72 6f 72 2e 0a 0a 54  68 69 73 20 63 61 6c 6c  |rror...This call|
00001f80  20 69 73 20 74 79 70 69  63 61 6c 6c 79 20 6d 61  | is typically ma|
00001f90  64 65 20 62 79 20 46 69  6c 65 43 6f 72 65 20 6f  |de by FileCore o|
00001fa0  72 20 62 79 20 74 68 65  20 69 6d 61 67 65 20 66  |r by the image f|
00001fb0  69 6c 69 6e 67 20 73 79  73 74 65 6d 20 27 49 6d  |iling system 'Im|
00001fc0  61 67 65 46 53 27 2c 20  69 6e 20 72 65 73 70 6f  |ageFS', in respo|
00001fd0  6e 73 65 20 74 6f 20 41  44 46 53 20 63 61 6c 6c  |nse to ADFS call|
00001fe0  69 6e 67 20 3c 46 69 6c  65 43 6f 72 65 5f 44 69  |ing <FileCore_Di|
00001ff0  73 63 46 6f 72 6d 61 74  3e 20 6f 72 20 27 49 6d  |scFormat> or 'Im|
00002000  61 67 65 46 53 27 5f 44  69 73 63 46 6f 72 6d 61  |ageFS'_DiscForma|
00002010  74 20 28 65 67 20 3c 44  4f 53 46 53 5f 44 69 73  |t (eg <DOSFS_Dis|
00002020  63 46 6f 72 6d 61 74 3e  29 20 72 65 73 70 65 63  |cFormat>) respec|
00002030  74 69 76 65 6c 79 2e 0a  0a 54 68 65 20 76 61 6c  |tively...The val|
00002040  75 65 20 69 6e 20 52 31  20 69 73 20 75 73 65 64  |ue in R1 is used|
00002050  20 74 6f 20 70 61 73 73  20 65 6e 6f 75 67 68 20  | to pass enough |
00002060  69 6e 66 6f 72 6d 61 74  69 6f 6e 20 6f 6e 20 74  |information on t|
00002070  68 65 20 68 61 72 64 77  61 72 65 20 6f 6e 20 77  |he hardware on w|
00002080  68 69 63 68 20 74 68 65  20 66 6f 72 6d 61 74 20  |hich the format |
00002090  69 73 20 74 6f 20 74 61  6b 65 20 70 6c 61 63 65  |is to take place|
000020a0  20 66 6f 72 20 74 68 65  20 64 69 73 63 20 66 6f  | for the disc fo|
000020b0  72 6d 61 74 20 73 74 72  75 63 74 75 72 65 20 74  |rmat structure t|
000020c0  6f 20 62 65 20 76 65 74  74 65 64 2e 20 41 44 46  |o be vetted. ADF|
000020d0  53 20 75 73 65 73 20 74  68 65 20 64 72 69 76 65  |S uses the drive|
000020e0  20 6e 75 6d 62 65 72 20  66 6f 72 20 74 68 69 73  | number for this|
000020f0  3b 20 6f 74 68 65 72 20  68 61 6e 64 6c 65 72 73  |; other handlers|
00002100  20 6f 66 20 64 69 73 63  73 20 6d 61 79 20 70 61  | of discs may pa|
00002110  73 73 20 64 69 66 66 65  72 65 6e 74 20 69 6e 66  |ss different inf|
00002120  6f 72 6d 61 74 69 6f 6e  20 69 66 20 74 68 65 79  |ormation if they|
00002130  20 69 6d 70 6c 65 6d 65  6e 74 20 61 20 56 65 74  | implement a Vet|
00002140  46 6f 72 6d 61 74 20 53  57 49 2e 0a 44 41 54 41  |Format SWI..DATA|
00002150  6b 00 00 00 41 44 46 53  5f 46 6c 70 50 72 6f 63  |k...ADFS_FlpProc|
00002160  65 73 73 44 43 42 20 20  28 26 34 30 32 34 37 29  |essDCB  (&40247)|
00002170  0a 54 68 69 73 20 63 61  6c 6c 20 69 73 20 66 6f  |.This call is fo|
00002180  72 20 69 6e 74 65 72 6e  61 6c 20 75 73 65 20 6f  |r internal use o|
00002190  6e 6c 79 2c 20 61 6e 64  20 6e 6f 74 20 61 76 61  |nly, and not ava|
000021a0  69 6c 61 62 6c 65 20 75  6e 64 65 72 20 52 49 53  |ilable under RIS|
000021b0  43 20 4f 53 20 32 2e 00  44 41 54 41 7e 00 00 00  |C OS 2..DATA~...|
000021c0  41 44 46 53 5f 4c 6f 63  6b 49 44 45 20 20 28 26  |ADFS_LockIDE  (&|
000021d0  34 30 32 35 31 29 0a 23  50 61 72 65 6e 74 20 41  |40251).#Parent A|
000021e0  44 46 53 5f 0a 3d 3e 09  52 30 20 3d 09 66 6c 61  |DFS_.=>.R0 =.fla|
000021f0  67 2c 20 62 30 20 73 65  74 20 74 6f 20 6c 6f 63  |g, b0 set to loc|
00002200  6b 2c 20 63 6c 65 61 72  20 74 6f 20 75 6e 6c 6f  |k, clear to unlo|
00002210  63 6b 0a 0a 54 68 69 73  20 69 73 20 75 73 65 64  |ck..This is used|
00002220  20 74 6f 20 6c 6f 63 6b  20 74 68 65 20 49 44 45  | to lock the IDE|
00002230  20 62 75 73 2e 0a 00 00  44 41 54 41 a1 00 00 00  | bus....DATA....|
00002240  41 44 46 53 5f 53 65 63  74 6f 72 4f 70 20 20 28  |ADFS_SectorOp  (|
00002250  26 34 30 32 34 44 29 0a  23 50 61 72 65 6e 74 20  |&4024D).#Parent |
00002260  41 44 46 53 5f 0a 54 68  69 73 20 53 57 49 20 63  |ADFS_.This SWI c|
00002270  61 6c 6c 73 20 3c 46 69  6c 65 43 6f 72 65 5f 53  |alls <FileCore_S|
00002280  65 63 74 6f 72 4f 70 3e  2c 20 61 66 74 65 72 20  |ectorOp>, after |
00002290  66 69 72 73 74 20 73 65  74 74 69 6e 67 20 52 38  |first setting R8|
000022a0  20 74 6f 20 70 6f 69 6e  74 20 74 6f 20 74 68 65  | to point to the|
000022b0  20 46 69 6c 65 43 6f 72  65 20 69 6e 73 74 61 6e  | FileCore instan|
000022c0  63 65 20 70 72 69 76 61  74 65 20 77 6f 72 64 20  |ce private word |
000022d0  66 6f 72 20 41 44 46 53  2e 00 00 00 44 41 54 41  |for ADFS....DATA|
000022e0  a7 00 00 00 41 44 46 53  5f 46 72 65 65 53 70 61  |....ADFS_FreeSpa|
000022f0  63 65 36 34 20 20 28 26  34 30 32 35 32 29 0a 23  |ce64  (&40252).#|
00002300  50 61 72 65 6e 74 20 41  44 46 53 5f 0a 54 68 69  |Parent ADFS_.Thi|
00002310  73 20 53 57 49 20 63 61  6c 6c 73 20 3c 46 69 6c  |s SWI calls <Fil|
00002320  65 43 6f 72 65 5f 46 72  65 65 53 70 61 63 65 36  |eCore_FreeSpace6|
00002330  34 3e 2c 20 61 66 74 65  72 20 66 69 72 73 74 20  |4>, after first |
00002340  73 65 74 74 69 6e 67 20  52 38 20 74 6f 20 70 6f  |setting R8 to po|
00002350  69 6e 74 20 74 6f 20 74  68 65 20 46 69 6c 65 43  |int to the FileC|
00002360  6f 72 65 20 69 6e 73 74  61 6e 63 65 20 70 72 69  |ore instance pri|
00002370  76 61 74 65 20 77 6f 72  64 20 66 6f 72 20 41 44  |vate word for AD|
00002380  46 53 2e 00 44 49 52 24  8c 00 00 00 8c 00 00 00  |FS..DIR$........|
00002390  10 24 00 00 48 fd ff ff  f0 af 84 0b 4d 00 00 00  |.$..H.......M...|
000023a0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000023b0  60 24 00 00 48 ff ff ff  0c 43 d4 10 db 00 00 00  |`$..H....C......|
000023c0  13 00 00 00 00 00 00 00  45 72 72 6f 72 00 00 00  |........Error...|
000023d0  3c 25 00 00 48 ff ff ff  f9 44 d4 10 82 01 00 00  |<%..H....D......|
000023e0  13 00 00 00 00 00 00 00  48 45 4c 50 00 00 00 00  |........HELP....|
000023f0  c0 26 00 00 48 ff ff ff  42 4a d4 10 f4 00 00 00  |.&..H...BJ......|
00002400  13 00 00 00 00 00 00 00  4d 65 73 73 61 67 65 00  |........Message.|
00002410  44 41 54 41 4d 00 00 00  42 61 73 69 63 54 72 61  |DATAM...BasicTra|
00002420  6e 73 0a 23 50 61 72 65  6e 74 20 21 52 6f 6f 74  |ns.#Parent !Root|
00002430  0a 23 50 72 65 66 69 78  20 42 61 73 69 63 54 72  |.#Prefix BasicTr|
00002440  61 6e 73 5f 0a 3c 45 72  72 6f 72 3e 0a 3c 48 45  |ans_.<Error>.<HE|
00002450  4c 50 3e 0a 3c 4d 65 73  73 61 67 65 3e 00 00 00  |LP>.<Message>...|
00002460  44 41 54 41 db 00 00 00  42 41 53 49 43 54 72 61  |DATA....BASICTra|
00002470  6e 73 5f 45 72 72 6f 72  20 20 28 26 34 32 43 38  |ns_Error  (&42C8|
00002480  31 29 0a 23 50 61 72 65  6e 74 20 42 41 53 49 43  |1).#Parent BASIC|
00002490  54 72 61 6e 73 5f 0a 3d  3e 09 52 30 20 3d 09 65  |Trans_.=>.R0 =.e|
000024a0  72 72 6f 72 20 6e 75 6d  62 65 72 20 28 30 20 2d  |rror number (0 -|
000024b0  20 31 31 32 29 0a 09 52  31 20 3d 09 70 6f 69 6e  | 112)..R1 =.poin|
000024c0  74 65 72 20 74 6f 20 6f  75 74 70 75 74 20 62 75  |ter to output bu|
000024d0  66 66 65 72 0a 0a 3c 3d  09 52 30 2c 52 31 2c 52  |ffer..<=.R0,R1,R|
000024e0  32 2c 52 33 20 63 6f 72  72 75 70 74 65 64 0a 0a  |2,R3 corrupted..|
000024f0  54 68 69 73 20 53 57 49  20 77 72 69 74 65 73 20  |This SWI writes |
00002500  61 6e 20 61 70 70 72 6f  70 72 69 61 74 65 20 30  |an appropriate 0|
00002510  20 74 65 72 6d 69 6e 61  74 65 64 20 65 72 72 6f  | terminated erro|
00002520  72 20 6d 65 73 73 61 67  65 20 69 6e 74 6f 20 74  |r message into t|
00002530  68 65 20 62 75 66 66 65  72 2e 0a 00 44 41 54 41  |he buffer...DATA|
00002540  82 01 00 00 42 41 53 49  43 54 72 61 6e 73 5f 48  |....BASICTrans_H|
00002550  65 6c 70 20 20 28 26 34  32 43 38 30 29 0a 23 50  |elp  (&42C80).#P|
00002560  61 72 65 6e 74 20 42 41  53 49 43 54 72 61 6e 73  |arent BASICTrans|
00002570  5f 0a 3d 3e 09 52 30 20  3d 09 70 6f 69 6e 74 65  |_.=>.R0 =.pointe|
00002580  72 20 74 6f 20 68 65 6c  70 20 74 65 78 74 20 28  |r to help text (|
00002590  6c 65 78 69 63 61 6c 6c  79 20 61 6e 61 6c 79 73  |lexically analys|
000025a0  65 64 20 61 6e 64 20 43  52 20 74 65 72 6d 69 6e  |ed and CR termin|
000025b0  61 74 65 64 29 0a 09 52  31 20 3d 09 70 6f 69 6e  |ated)..R1 =.poin|
000025c0  74 65 72 20 74 6f 20 6e  61 6d 65 20 28 27 42 41  |ter to name ('BA|
000025d0  53 49 43 27 20 6f 72 20  27 42 41 53 49 43 36 34  |SIC' or 'BASIC64|
000025e0  27 29 0a 09 52 32 20 3d  09 70 6f 69 6e 74 65 72  |')..R2 =.pointer|
000025f0  20 74 6f 20 6c 65 78 69  63 61 6c 20 61 6e 61 6c  | to lexical anal|
00002600  79 73 65 72 20 74 61 62  6c 65 73 0a 0a 3c 3d 09  |yser tables..<=.|
00002610  52 30 2c 52 32 20 63 6f  72 72 75 70 74 65 64 0a  |R0,R2 corrupted.|
00002620  09 52 31 20 3d 09 6e 6f  6e 20 7a 65 72 6f 20 69  |.R1 =.non zero i|
00002630  6e 73 74 72 75 63 74 73  20 42 41 53 49 43 20 74  |nstructs BASIC t|
00002640  6f 20 70 72 69 6e 74 20  74 68 65 20 64 65 66 61  |o print the defa|
00002650  75 6c 74 20 28 45 6e 67  6c 69 73 68 29 20 74 65  |ult (English) te|
00002660  78 74 0a 0a 42 41 53 49  43 20 74 6f 6b 65 6e 69  |xt..BASIC tokeni|
00002670  73 65 73 20 74 68 65 20  68 65 6c 70 20 74 65 78  |ses the help tex|
00002680  74 20 61 6e 64 20 74 68  65 6e 20 63 61 6c 6c 73  |t and then calls|
00002690  20 74 68 69 73 20 53 57  49 20 74 6f 20 70 72 69  | this SWI to pri|
000026a0  6e 74 20 74 68 65 20 61  70 70 72 6f 70 72 69 61  |nt the appropria|
000026b0  74 65 20 68 65 6c 70 20  74 65 78 74 2e 0a 00 00  |te help text....|
000026c0  44 41 54 41 f4 00 00 00  42 41 53 49 43 54 72 61  |DATA....BASICTra|
000026d0  6e 73 5f 4d 65 73 73 61  67 65 20 20 28 26 34 32  |ns_Message  (&42|
000026e0  43 38 31 32 29 0a 23 50  61 72 65 6e 74 20 42 41  |C812).#Parent BA|
000026f0  53 49 43 54 72 61 6e 73  5f 0a 3d 3e 09 52 30 20  |SICTrans_.=>.R0 |
00002700  3d 09 6d 65 73 73 61 67  65 20 6e 75 6d 62 65 72  |=.message number|
00002710  20 28 30 20 2d 20 32 35  29 0a 09 52 31 20 3d 09  | (0 - 25)..R1 =.|
00002720  6d 65 73 73 61 67 65 20  64 65 70 65 6e 64 65 6e  |message dependen|
00002730  74 20 76 61 6c 75 65 0a  09 52 32 20 3d 09 6d 65  |t value..R2 =.me|
00002740  73 73 61 67 65 20 64 65  70 65 6e 64 65 6e 74 20  |ssage dependent |
00002750  76 61 6c 75 65 0a 09 52  33 20 3d 09 6d 65 73 73  |value..R3 =.mess|
00002760  61 67 65 20 64 65 70 65  6e 64 65 6e 74 20 76 61  |age dependent va|
00002770  6c 75 65 0a 0a 3c 3d 09  52 30 2c 52 31 20 63 6f  |lue..<=.R0,R1 co|
00002780  72 72 75 70 74 65 64 0a  0a 54 68 69 73 20 53 57  |rrupted..This SW|
00002790  49 20 70 72 69 6e 74 73  20 61 20 27 6d 69 73 63  |I prints a 'misc|
000027a0  65 6c 6c 61 6e 65 6f 75  73 27 20 6d 65 73 73 61  |ellaneous' messa|
000027b0  67 65 2e 0a 44 49 52 24  ec 01 00 00 ec 01 00 00  |ge..DIR$........|
000027c0  a0 29 00 00 48 fd ff ff  ed 11 e7 0b a3 00 00 00  |.)..H...........|
000027d0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000027e0  44 2a 00 00 48 ff ff ff  9b 50 bb 1f aa 01 00 00  |D*..H....P......|
000027f0  13 00 00 00 00 00 00 00  47 65 74 49 6e 66 6f 00  |........GetInfo.|
00002800  f0 2b 00 00 46 fd ff ff  9d 04 62 88 b1 00 00 00  |.+..F.....b.....|
00002810  13 00 00 00 00 00 00 00  62 75 66 66 65 72 73 00  |........buffers.|
00002820  a4 2c 00 00 48 fd ff ff  3a f2 af 26 bb 00 00 00  |.,..H...:..&....|
00002830  13 00 00 00 00 00 00 00  66 6c 61 67 73 00 00 00  |........flags...|
00002840  60 2d 00 00 48 ff ff ff  b9 30 bb 1f 65 02 00 00  |`-..H....0..e...|
00002850  13 00 00 00 00 00 00 00  43 72 65 61 74 65 00 00  |........Create..|
00002860  c8 2f 00 00 48 ff ff ff  15 4b bb 1f f3 01 00 00  |./..H....K......|
00002870  13 00 00 00 00 00 00 00  52 65 6d 6f 76 65 00 00  |........Remove..|
00002880  bc 31 00 00 48 ff ff ff  84 2b bb 1f 35 01 00 00  |.1..H....+..5...|
00002890  13 00 00 00 00 00 00 00  44 65 72 65 67 69 73 74  |........Deregist|
000028a0  65 72 00 00 f4 32 00 00  48 ff ff ff 38 4e bb 1f  |er...2..H...8N..|
000028b0  48 01 00 00 13 00 00 00  00 00 00 00 4c 69 6e 6b  |H...........Link|
000028c0  44 65 76 69 63 65 00 00  3c 34 00 00 48 ff ff ff  |Device..<4..H...|
000028d0  bb 26 bb 1f a5 01 00 00  13 00 00 00 00 00 00 00  |.&..............|
000028e0  4d 6f 64 69 66 79 46 6c  61 67 73 00 e4 35 00 00  |ModifyFlags..5..|
000028f0  48 fd ff ff 9b 33 bb 1f  c6 01 00 00 13 00 00 00  |H....3..........|
00002900  00 00 00 00 6f 77 6e 65  72 63 68 61 6e 67 65 00  |....ownerchange.|
00002910  ac 37 00 00 48 ff ff ff  73 2e bb 1f 88 01 00 00  |.7..H...s.......|
00002920  13 00 00 00 00 00 00 00  52 65 67 69 73 74 65 72  |........Register|
00002930  00 00 00 00 34 39 00 00  48 ff ff ff e3 1f bb 1f  |....49..H.......|
00002940  29 01 00 00 13 00 00 00  00 00 00 00 54 68 72 65  |)...........Thre|
00002950  73 68 6f 6c 64 00 00 00  60 3a 00 00 48 ff ff ff  |shold...`:..H...|
00002960  af 4f bb 1f d8 00 00 00  13 00 00 00 00 00 00 00  |.O..............|
00002970  55 6e 6c 69 6e 6b 44 65  76 69 63 65 00 00 00 00  |UnlinkDevice....|
00002980  38 3b 00 00 48 fd ff ff  11 53 8a 0b 4d 01 00 00  |8;..H....S..M...|
00002990  13 00 00 00 00 00 00 00  77 61 6b 65 75 70 00 00  |........wakeup..|
000029a0  44 41 54 41 a3 00 00 00  42 75 66 66 65 72 0a 23  |DATA....Buffer.#|
000029b0  50 61 72 65 6e 74 20 21  52 6f 6f 74 0a 23 50 72  |Parent !Root.#Pr|
000029c0  65 66 69 78 20 42 75 66  66 65 72 5f 0a 3c 43 72  |efix Buffer_.<Cr|
000029d0  65 61 74 65 3e 0a 3c 44  65 72 65 67 69 73 74 65  |eate>.<Deregiste|
000029e0  72 3e 0a 3c 47 65 74 49  6e 66 6f 3e 0a 49 6e 74  |r>.<GetInfo>.Int|
000029f0  65 72 6e 61 6c 49 6e 66  6f 0a 3c 4c 69 6e 6b 44  |ernalInfo.<LinkD|
00002a00  65 76 69 63 65 3e 0a 3c  4d 6f 64 69 66 79 46 6c  |evice>.<ModifyFl|
00002a10  61 67 73 3e 0a 3c 52 65  6d 6f 76 65 3e 0a 3c 52  |ags>.<Remove>.<R|
00002a20  65 67 69 73 74 65 72 3e  0a 3c 54 68 72 65 73 68  |egister>.<Thresh|
00002a30  6f 6c 64 3e 0a 3c 55 6e  6c 69 6e 6b 44 65 76 69  |old>.<UnlinkDevi|
00002a40  63 65 3e 00 44 41 54 41  aa 01 00 00 42 75 66 66  |ce>.DATA....Buff|
00002a50  65 72 5f 47 65 74 49 6e  66 6f 20 20 28 26 34 32  |er_GetInfo  (&42|
00002a60  39 34 37 29 0a 23 50 61  72 65 6e 74 20 42 75 66  |947).#Parent Buf|
00002a70  66 65 72 5f 0a 3d 3e 09  52 30 20 3d 09 3c 62 75  |fer_.=>.R0 =.<bu|
00002a80  66 66 65 72 20 6e 75 6d  62 65 72 3d 3e 42 75 66  |ffer number=>Buf|
00002a90  66 65 72 5f 62 75 66 66  65 72 73 3e 0a 3c 3d 09  |fer_buffers>.<=.|
00002aa0  52 30 20 3d 09 3c 66 6c  61 67 73 3d 3e 42 75 66  |R0 =.<flags=>Buf|
00002ab0  66 65 72 5f 66 6c 61 67  73 3e 0a 09 52 31 20 3d  |fer_flags>..R1 =|
00002ac0  09 70 6f 69 6e 74 65 72  20 74 6f 20 62 75 66 66  |.pointer to buff|
00002ad0  65 72 20 73 74 61 72 74  0a 09 52 32 20 3d 09 70  |er start..R2 =.p|
00002ae0  6f 69 6e 74 65 72 20 74  6f 20 62 75 66 66 65 72  |ointer to buffer|
00002af0  20 65 6e 64 0a 09 52 33  20 3d 09 69 6e 73 65 72  | end..R3 =.inser|
00002b00  74 69 6f 6e 20 6f 66 66  73 65 74 0a 09 52 34 20  |tion offset..R4 |
00002b10  3d 09 72 65 6d 6f 76 61  6c 20 6f 66 66 73 65 74  |=.removal offset|
00002b20  0a 09 52 35 20 3d 09 62  79 74 65 73 20 66 72 65  |..R5 =.bytes fre|
00002b30  65 0a 09 52 36 20 3d 09  62 79 74 65 73 20 75 73  |e..R6 =.bytes us|
00002b40  65 64 0a 0a 54 68 69 73  20 53 57 49 20 72 65 61  |ed..This SWI rea|
00002b50  64 73 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 61  |ds information a|
00002b60  62 6f 75 74 20 61 20 70  61 72 74 69 63 75 6c 61  |bout a particula|
00002b70  72 20 62 75 66 66 65 72  2e 20 49 6e 73 65 72 74  |r buffer. Insert|
00002b80  69 6f 6e 20 61 6e 64 20  72 65 6d 6f 76 61 6c 20  |ion and removal |
00002b90  70 6f 69 6e 74 73 20 77  72 61 70 20 61 72 6f 75  |points wrap arou|
00002ba0  6e 64 2c 20 61 6e 64 20  74 68 65 20 73 75 6d 20  |nd, and the sum |
00002bb0  6f 66 20 66 72 65 65 20  73 70 61 63 65 20 61 6e  |of free space an|
00002bc0  64 20 63 68 61 72 61 63  74 65 72 73 20 6d 61 79  |d characters may|
00002bd0  20 6e 6f 74 20 65 71 75  61 6c 20 74 6f 74 61 6c  | not equal total|
00002be0  20 62 75 66 66 65 72 20  73 69 7a 65 2e 0a 00 00  | buffer size....|
00002bf0  44 41 54 41 b1 00 00 00  42 75 66 66 65 72 20 62  |DATA....Buffer b|
00002c00  75 66 66 65 72 73 0a 5c  23 09 46 6f 72 0a 23 4c  |uffers.\#.For.#L|
00002c10  69 6e 65 0a 30 09 4b 65  79 62 6f 61 72 64 0a 31  |ine.0.Keyboard.1|
00002c20  09 53 65 72 69 61 6c 20  69 6e 70 75 74 0a 32 09  |.Serial input.2.|
00002c30  53 65 72 69 61 6c 20 6f  75 74 70 75 74 0a 33 09  |Serial output.3.|
00002c40  50 72 69 6e 74 65 72 0a  34 09 53 6f 75 6e 64 20  |Printer.4.Sound |
00002c50  63 68 61 6e 6e 65 6c 20  30 0a 35 09 53 6f 75 6e  |channel 0.5.Soun|
00002c60  64 20 63 68 61 6e 6e 65  6c 20 31 0a 36 09 53 6f  |d channel 1.6.So|
00002c70  75 6e 64 20 63 68 61 6e  6e 65 6c 20 32 0a 37 09  |und channel 2.7.|
00002c80  53 6f 75 6e 64 20 63 68  61 6e 6e 65 6c 20 33 0a  |Sound channel 3.|
00002c90  38 09 53 70 65 65 63 68  0a 39 09 4d 6f 75 73 65  |8.Speech.9.Mouse|
00002ca0  0a 00 00 00 44 41 54 41  bb 00 00 00 42 75 66 66  |....DATA....Buff|
00002cb0  65 72 20 66 6c 61 67 73  0a 23 50 61 72 65 6e 74  |er flags.#Parent|
00002cc0  20 42 75 66 66 65 72 5f  47 65 74 49 6e 66 6f 0a  | Buffer_GetInfo.|
00002cd0  42 69 74 09 4d 65 61 6e  69 6e 67 0a 23 4c 69 6e  |Bit.Meaning.#Lin|
00002ce0  65 0a 30 09 44 6f 72 6d  61 6e 74 0a 31 09 47 65  |e.0.Dormant.1.Ge|
00002cf0  6e 65 72 61 74 65 20 3c  65 76 65 6e 74 3d 3e 65  |nerate <event=>e|
00002d00  76 65 6e 74 5f 30 3e 20  6f 6e 20 65 6d 70 74 79  |vent_0> on empty|
00002d10  0a 32 09 47 65 6e 65 72  61 74 65 20 3c 65 76 65  |.2.Generate <eve|
00002d20  6e 74 3d 3e 65 76 65 6e  74 5f 31 3e 20 6f 6e 20  |nt=>event_1> on |
00002d30  66 75 6c 6c 0a 33 09 3c  55 70 43 61 6c 6c 3d 3e  |full.3.<UpCall=>|
00002d40  4f 53 5f 55 70 43 61 6c  6c 72 65 61 73 6f 6e 73  |OS_UpCallreasons|
00002d50  3e 20 6f 6e 20 74 68 72  65 73 68 6f 6c 64 0a 00  |> on threshold..|
00002d60  44 41 54 41 65 02 00 00  42 75 66 66 65 72 5f 43  |DATAe...Buffer_C|
00002d70  72 65 61 74 65 20 20 28  26 34 32 39 34 30 29 0a  |reate  (&42940).|
00002d80  23 50 61 72 65 6e 74 20  42 75 66 66 65 72 5f 0a  |#Parent Buffer_.|
00002d90  3d 3e 09 52 30 20 3d 09  62 75 66 66 65 72 27 73  |=>.R0 =.buffer's|
00002da0  20 3c 66 6c 61 67 20 77  6f 72 64 3d 3e 62 75 66  | <flag word=>buf|
00002db0  66 65 72 5f 66 6c 61 67  73 3e 0a 09 52 31 20 3d  |fer_flags>..R1 =|
00002dc0  09 73 69 7a 65 20 6f 66  20 62 75 66 66 65 72 20  |.size of buffer |
00002dd0  74 6f 20 62 65 20 63 72  65 61 74 65 64 0a 09 52  |to be created..R|
00002de0  32 20 3d 09 70 72 65 66  65 72 72 65 64 20 68 61  |2 =.preferred ha|
00002df0  6e 64 6c 65 20 66 6f 72  20 74 68 65 20 62 75 66  |ndle for the buf|
00002e00  66 65 72 2c 20 2d 31 20  74 6f 20 67 65 74 20 74  |fer, -1 to get t|
00002e10  68 65 20 62 75 66 66 65  72 20 6d 61 6e 61 67 65  |he buffer manage|
00002e20  72 20 74 6f 20 67 65 6e  65 72 61 74 65 20 6f 6e  |r to generate on|
00002e30  65 0a 3c 3d 09 52 30 20  3d 09 62 75 66 66 65 72  |e.<=.R0 =.buffer|
00002e40  20 68 61 6e 64 6c 65 0a  0a 54 68 69 73 20 63 6c  | handle..This cl|
00002e50  61 69 6d 73 20 61 6e 20  61 72 65 61 20 6f 66 20  |aims an area of |
00002e60  74 68 65 20 52 4d 41 20  61 6e 64 20 72 65 67 69  |the RMA and regi|
00002e70  73 74 65 72 73 20 69 74  20 61 73 20 61 20 62 75  |sters it as a bu|
00002e80  66 66 65 72 2e 20 49 74  20 63 61 6e 20 61 74 20  |ffer. It can at |
00002e90  6d 6f 73 74 20 68 6f 6c  64 20 52 31 2d 31 20 62  |most hold R1-1 b|
00002ea0  79 74 65 73 2e 0a 49 66  20 52 32 20 5c 3c 3e 2d  |ytes..If R2 \<>-|
00002eb0  31 2c 20 74 68 65 20 67  69 76 65 6e 20 6e 75 6d  |1, the given num|
00002ec0  62 65 72 20 69 73 20 63  68 65 63 6b 65 64 20 66  |ber is checked f|
00002ed0  6f 72 20 75 6e 69 71 75  65 6e 65 73 73 2c 20 69  |or uniqueness, i|
00002ee0  66 20 69 74 20 61 6c 72  65 61 64 79 20 65 78 69  |f it already exi|
00002ef0  73 74 73 2c 20 61 20 6e  65 77 20 6f 6e 65 20 69  |sts, a new one i|
00002f00  73 20 67 65 6e 65 72 61  74 65 64 2e 0a 4e 6f 74  |s generated..Not|
00002f10  65 20 74 68 61 74 20 79  6f 75 20 64 6f 20 6e 6f  |e that you do no|
00002f20  74 20 6e 65 65 64 20 61  6e 79 20 63 6f 6d 70 6c  |t need any compl|
00002f30  69 63 61 74 65 64 20 63  61 6c 63 75 6c 61 74 69  |icated calculati|
00002f40  6f 6e 73 20 74 6f 20 77  72 69 74 65 20 64 61 74  |ons to write dat|
00002f50  61 20 69 6e 74 6f 20 74  68 65 20 62 75 66 66 65  |a into the buffe|
00002f60  72 20 2d 20 69 74 27 73  20 61 20 73 69 6d 70 6c  |r - it's a simpl|
00002f70  79 20 61 20 62 6c 6f 63  6b 20 6f 66 20 6d 65 6d  |y a block of mem|
00002f80  6f 72 79 20 2e 20 47 65  74 20 74 68 65 20 61 64  |ory . Get the ad|
00002f90  64 72 65 73 73 20 77 69  74 68 20 3c 42 75 66 66  |dress with <Buff|
00002fa0  65 72 5f 47 65 74 49 6e  66 6f 3e 20 61 6e 64 20  |er_GetInfo> and |
00002fb0  77 72 69 74 65 20 74 6f  20 74 68 65 20 62 75 66  |write to the buf|
00002fc0  66 65 72 2e 0a 00 00 00  44 41 54 41 f3 01 00 00  |fer.....DATA....|
00002fd0  42 75 66 66 65 72 5f 52  65 6d 6f 76 65 20 20 28  |Buffer_Remove  (|
00002fe0  26 34 32 39 34 31 29 0a  23 50 61 72 65 6e 74 20  |&42941).#Parent |
00002ff0  42 75 66 66 65 72 5f 0a  3d 3e 09 52 30 20 3d 09  |Buffer_.=>.R0 =.|
00003000  48 61 6e 64 6c 65 20 6f  66 20 62 75 66 66 65 72  |Handle of buffer|
00003010  20 74 6f 20 62 65 20 72  65 6d 6f 76 65 64 0a 0a  | to be removed..|
00003020  54 68 69 73 20 72 65 6d  6f 76 65 73 20 74 68 65  |This removes the|
00003030  20 62 75 66 66 65 72 20  73 70 65 63 69 66 69 65  | buffer specifie|
00003040  64 20 74 68 65 20 68 61  6e 64 6c 65 20 67 69 76  |d the handle giv|
00003050  65 6e 20 69 6e 20 52 30  2e 20 49 74 20 72 65 6c  |en in R0. It rel|
00003060  65 61 73 65 73 20 74 68  65 20 77 6f 72 6b 73 70  |eases the worksp|
00003070  61 63 65 20 69 6e 20 74  68 65 20 52 4d 41 20 72  |ace in the RMA r|
00003080  65 73 65 72 76 65 64 20  66 6f 72 20 74 68 69 73  |eserved for this|
00003090  20 62 75 66 66 65 72 2e  20 59 6f 75 20 73 68 6f  | buffer. You sho|
000030a0  75 6c 64 20 74 68 69 73  20 74 6f 20 72 65 6d 6f  |uld this to remo|
000030b0  76 65 20 62 75 66 66 65  72 73 20 63 72 65 61 74  |ve buffers creat|
000030c0  65 64 20 77 69 74 68 20  3c 42 75 66 66 65 72 5f  |ed with <Buffer_|
000030d0  43 72 65 61 74 65 3e 20  2d 20 66 6f 72 20 62 75  |Create> - for bu|
000030e0  66 66 65 72 73 20 6d 61  64 65 20 75 73 69 6e 67  |ffers made using|
000030f0  20 3c 42 75 66 66 65 72  5f 52 65 67 69 73 74 65  | <Buffer_Registe|
00003100  72 3e 20 79 6f 75 20 73  68 6f 75 6c 64 20 75 73  |r> you should us|
00003110  65 20 3c 42 75 66 66 65  72 5f 44 65 72 65 67 69  |e <Buffer_Deregi|
00003120  73 74 65 72 3e 20 69 6e  73 74 65 61 64 2e 0a 0a  |ster> instead...|
00003130  41 6e 79 20 64 61 74 61  20 69 6e 20 74 68 65 20  |Any data in the |
00003140  62 75 66 66 65 72 20 77  69 6c 6c 20 62 65 20 70  |buffer will be p|
00003150  75 72 67 65 64 2c 20 61  6e 64 20 61 6e 20 61 63  |urged, and an ac|
00003160  63 65 73 73 20 76 69 61  20 3c 49 6e 73 56 3d 3e  |cess via <InsV=>|
00003170  76 65 63 74 6f 72 5f 49  6e 73 56 3e 2c 20 3c 52  |vector_InsV>, <R|
00003180  65 6d 56 3d 3e 76 65 63  74 6f 72 5f 52 65 6d 56  |emV=>vector_RemV|
00003190  3e 20 61 6e 64 20 3c 43  6e 70 56 3d 3e 76 65 63  |> and <CnpV=>vec|
000031a0  74 6f 72 5f 43 6e 70 56  3e 20 77 69 6c 6c 20 62  |tor_CnpV> will b|
000031b0  65 20 69 67 6e 6f 72 65  64 2e 0a 00 44 41 54 41  |e ignored...DATA|
000031c0  35 01 00 00 42 75 66 66  65 72 5f 44 65 72 65 67  |5...Buffer_Dereg|
000031d0  69 73 74 65 72 20 20 28  26 34 32 39 34 33 29 0a  |ister  (&42943).|
000031e0  23 50 61 72 65 6e 74 20  42 75 66 66 65 72 5f 0a  |#Parent Buffer_.|
000031f0  3d 3e 09 52 30 20 3d 09  48 61 6e 64 6c 65 20 6f  |=>.R0 =.Handle o|
00003200  66 20 62 75 66 66 65 72  20 74 6f 20 62 65 20 72  |f buffer to be r|
00003210  65 6d 6f 76 65 64 0a 0a  54 68 69 73 20 64 65 72  |emoved..This der|
00003220  65 67 69 73 74 65 72 73  20 74 68 65 20 62 75 66  |egisters the buf|
00003230  66 65 72 20 73 70 65 63  69 66 69 65 64 20 62 79  |fer specified by|
00003240  20 74 68 65 20 68 61 6e  64 6c 65 20 67 69 76 65  | the handle give|
00003250  6e 20 69 6e 20 52 30 2e  20 59 6f 75 20 73 68 6f  |n in R0. You sho|
00003260  75 6c 64 20 74 68 69 73  20 74 6f 20 64 65 72 65  |uld this to dere|
00003270  67 69 73 74 65 72 20 62  75 66 66 65 72 73 20 72  |gister buffers r|
00003280  65 67 69 73 74 65 72 64  20 77 69 74 68 20 3c 42  |egisterd with <B|
00003290  75 66 66 65 72 5f 52 65  67 69 73 74 65 72 3e 20  |uffer_Register> |
000032a0  2d 20 66 6f 72 20 62 75  66 66 65 72 73 20 6d 61  |- for buffers ma|
000032b0  64 65 20 75 73 69 6e 67  20 3c 42 75 66 66 65 72  |de using <Buffer|
000032c0  5f 43 72 65 61 74 65 3e  20 79 6f 75 20 73 68 6f  |_Create> you sho|
000032d0  75 6c 64 20 75 73 65 20  3c 42 75 66 66 65 72 5f  |uld use <Buffer_|
000032e0  52 65 6d 6f 76 65 3e 20  69 6e 73 74 65 61 64 2e  |Remove> instead.|
000032f0  0a 00 00 00 44 41 54 41  48 01 00 00 42 75 66 66  |....DATAH...Buff|
00003300  65 72 5f 4c 69 6e 6b 44  65 76 69 63 65 20 20 28  |er_LinkDevice  (|
00003310  26 34 32 39 34 35 29 0a  23 50 61 72 65 6e 74 20  |&42945).#Parent |
00003320  42 75 66 66 65 72 5f 0a  3d 3e 09 52 30 20 3d 09  |Buffer_.=>.R0 =.|
00003330  62 75 66 66 65 72 20 68  61 6e 64 6c 65 0a 09 52  |buffer handle..R|
00003340  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |1 =.pointer to <|
00003350  77 61 6b 65 20 75 70 20  72 6f 75 74 69 6e 65 3d  |wake up routine=|
00003360  3e 62 75 66 66 65 72 5f  77 61 6b 65 75 70 3e 0a  |>buffer_wakeup>.|
00003370  09 20 09 30 20 66 6f 72  20 6e 6f 6e 65 0a 09 52  |. .0 for none..R|
00003380  32 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |2 =.pointer to <|
00003390  6f 77 6e 65 72 20 63 68  61 6e 67 65 20 72 6f 75  |owner change rou|
000033a0  74 69 6e 65 3d 3e 62 75  66 66 65 72 5f 6f 77 6e  |tine=>buffer_own|
000033b0  65 72 63 68 61 6e 67 65  3e 0a 09 20 09 30 20 69  |erchange>.. .0 i|
000033c0  66 20 74 68 65 20 6f 77  6e 65 72 20 63 61 6e 6e  |f the owner cann|
000033d0  6f 74 20 62 65 20 63 68  61 6e 67 65 64 0a 09 52  |ot be changed..R|
000033e0  33 20 3d 09 72 6f 75 74  69 6e 65 73 27 20 70 72  |3 =.routines' pr|
000033f0  69 76 61 74 65 20 77 6f  72 64 20 28 52 38 29 0a  |ivate word (R8).|
00003400  09 52 34 20 3d 09 77 6f  72 6b 73 70 61 63 65 20  |.R4 =.workspace |
00003410  28 52 31 32 29 0a 0a 54  68 69 73 20 53 57 49 20  |(R12)..This SWI |
00003420  6c 69 6e 6b 73 20 72 6f  75 74 69 6e 65 73 20 74  |links routines t|
00003430  6f 20 61 20 62 75 66 66  65 72 2e 0a 44 41 54 41  |o a buffer..DATA|
00003440  a5 01 00 00 42 75 66 66  65 72 5f 4d 6f 64 69 66  |....Buffer_Modif|
00003450  79 46 6c 61 67 73 20 20  28 26 34 32 39 34 34 29  |yFlags  (&42944)|
00003460  0a 23 50 61 72 65 6e 74  20 42 75 66 66 65 72 5f  |.#Parent Buffer_|
00003470  0a 3d 3e 09 52 30 20 3d  09 62 75 66 66 65 72 20  |.=>.R0 =.buffer |
00003480  68 61 6e 64 6c 65 0a 09  52 31 20 3d 09 45 4f 52  |handle..R1 =.EOR|
00003490  20 6d 61 73 6b 0a 09 52  32 20 3d 09 41 4e 44 20  | mask..R2 =.AND |
000034a0  6d 61 73 6b 0a 3c 3d 09  52 31 20 3d 09 6f 6c 64  |mask.<=.R1 =.old|
000034b0  20 66 6c 61 67 73 0a 09  52 32 20 3d 09 6e 65 77  | flags..R2 =.new|
000034c0  20 66 6c 61 67 73 0a 0a  54 68 69 73 20 53 57 49  | flags..This SWI|
000034d0  20 6d 6f 64 69 66 69 65  73 20 74 68 65 20 62 75  | modifies the bu|
000034e0  66 66 65 72 27 73 20 3c  66 6c 61 67 20 77 6f 72  |ffer's <flag wor|
000034f0  64 3d 3e 62 75 66 66 65  72 5f 66 6c 61 67 73 3e  |d=>buffer_flags>|
00003500  2e 0a 0a 20 20 20 4e 65  77 56 61 6c 20 3d 20 28  |...   NewVal = (|
00003510  4f 6c 64 56 61 6c 20 41  4e 44 20 52 32 29 20 45  |OldVal AND R2) E|
00003520  4f 52 20 52 31 0a 0a 45  6e 73 75 72 65 20 74 68  |OR R1..Ensure th|
00003530  61 74 20 79 6f 75 20 64  6f 20 6e 6f 74 20 6d 6f  |at you do not mo|
00003540  64 69 66 69 79 20 72 65  73 65 72 76 65 64 20 62  |difiy reserved b|
00003550  69 74 73 20 77 69 74 68  20 74 68 69 73 20 63 61  |its with this ca|
00003560  6c 6c 20 2d 20 72 65 73  65 72 76 65 64 20 62 69  |ll - reserved bi|
00003570  74 73 20 73 68 6f 75 6c  64 20 62 65 20 63 6c 65  |ts should be cle|
00003580  61 72 20 69 6e 20 52 31  2c 20 73 65 74 20 69 6e  |ar in R1, set in|
00003590  20 52 32 2e 0a 23 74 61  62 0a 54 6f 20 72 65 61  | R2..#tab.To rea|
000035a0  64 3a 09 52 31 20 3d 20  30 09 09 52 32 20 3d 20  |d:.R1 = 0..R2 = |
000035b0  26 30 30 30 30 30 30 30  46 0a 54 6f 20 73 65 74  |&0000000F.To set|
000035c0  3a 09 09 52 31 20 3d 20  6e 65 77 20 76 61 6c 75  |:..R1 = new valu|
000035d0  65 09 52 32 20 3d 20 26  46 46 46 46 46 46 46 30  |e.R2 = &FFFFFFF0|
000035e0  0a 00 00 00 44 41 54 41  c6 01 00 00 42 75 66 66  |....DATA....Buff|
000035f0  65 72 20 6f 77 6e 65 72  20 63 68 61 6e 67 65 20  |er owner change |
00003600  72 6f 75 74 69 6e 65 0a  23 50 61 72 65 6e 74 20  |routine.#Parent |
00003610  42 75 66 66 65 72 5f 4c  69 6e 6b 44 65 76 69 63  |Buffer_LinkDevic|
00003620  65 0a 3d 3e 09 52 30 20  3d 09 62 75 66 66 65 72  |e.=>.R0 =.buffer|
00003630  20 68 61 6e 64 6c 65 0a  09 52 38 20 3d 09 70 72  | handle..R8 =.pr|
00003640  69 76 61 74 65 20 77 6f  72 64 0a 09 52 31 32 20  |ivate word..R12 |
00003650  3d 09 77 6f 72 6b 73 70  61 63 65 0a 0a 4f 6e 20  |=.workspace..On |
00003660  65 6e 74 72 79 20 70 72  6f 63 65 73 73 6f 72 20  |entry processor |
00003670  6d 61 79 20 62 65 20 69  6e 20 61 6e 79 20 73 74  |may be in any st|
00003680  61 74 65 20 28 6d 6f 64  65 2c 20 69 6e 74 65 72  |ate (mode, inter|
00003690  75 70 74 73 29 2e 20 4f  6e 20 65 78 69 74 20 79  |upts). On exit y|
000036a0  6f 75 20 6d 75 73 74 20  72 65 73 74 6f 72 65 20  |ou must restore |
000036b0  65 76 65 72 79 74 68 69  6e 67 2c 20 75 6e 6c 65  |everything, unle|
000036c0  73 73 20 79 6f 75 20 77  69 73 68 20 74 6f 20 72  |ss you wish to r|
000036d0  65 74 75 72 6e 20 61 6e  20 65 72 72 6f 72 20 28  |eturn an error (|
000036e0  69 6e 20 52 30 2c 20 56  20 73 65 74 29 2e 20 54  |in R0, V set). T|
000036f0  68 69 73 20 72 6f 75 74  69 6e 65 20 69 73 20 63  |his routine is c|
00003700  61 6c 6c 65 64 20 77 68  65 6e 65 76 65 72 20 61  |alled whenever a|
00003710  20 62 75 66 66 65 72 27  73 20 6f 77 6e 65 72 20  | buffer's owner |
00003720  69 73 20 63 68 61 6e 67  69 6e 67 20 2d 20 7b 2f  |is changing - {/|
00003730  7d 69 2e 65 2e 7b 2f 7d  20 72 65 6d 6f 76 69 6e  |}i.e.{/} removin|
00003740  67 2f 64 65 72 65 67 69  73 74 65 72 69 6e 67 20  |g/deregistering |
00003750  74 68 65 20 62 75 66 66  65 72 2c 20 61 20 63 61  |the buffer, a ca|
00003760  6c 6c 20 74 6f 20 3c 42  75 66 66 65 72 5f 4c 69  |ll to <Buffer_Li|
00003770  6e 6b 44 65 76 69 63 65  3e 20 66 6f 72 20 74 68  |nkDevice> for th|
00003780  69 73 20 62 75 66 66 65  72 2c 20 6f 72 20 6b 69  |is buffer, or ki|
00003790  6c 6c 69 6e 67 20 74 68  65 20 62 75 66 66 65 72  |lling the buffer|
000037a0  20 6d 61 6e 61 67 65 72  2e 0a 00 00 44 41 54 41  | manager....DATA|
000037b0  88 01 00 00 42 75 66 66  65 72 5f 52 65 67 69 73  |....Buffer_Regis|
000037c0  74 65 72 20 20 28 26 34  32 39 34 32 29 0a 23 50  |ter  (&42942).#P|
000037d0  61 72 65 6e 74 20 42 75  66 66 65 72 5f 0a 3d 3e  |arent Buffer_.=>|
000037e0  09 52 30 20 3d 09 62 75  66 66 65 72 27 73 20 3c  |.R0 =.buffer's <|
000037f0  66 6c 61 67 20 77 6f 72  64 3d 3e 62 75 66 66 65  |flag word=>buffe|
00003800  72 5f 66 6c 61 67 73 3e  0a 09 52 31 20 3d 09 73  |r_flags>..R1 =.s|
00003810  74 61 72 74 20 61 64 64  72 65 73 73 20 6f 66 20  |tart address of |
00003820  62 75 66 66 65 72 0a 09  52 32 20 3d 09 62 79 74  |buffer..R2 =.byt|
00003830  65 20 62 65 79 6f 6e 64  20 65 6e 64 20 6f 66 20  |e beyond end of |
00003840  62 75 66 66 65 72 0a 09  52 33 20 3d 09 70 72 65  |buffer..R3 =.pre|
00003850  66 65 72 72 65 64 20 68  61 6e 64 6c 65 20 66 6f  |ferred handle fo|
00003860  72 20 74 68 65 20 62 75  66 66 65 72 2c 20 2d 31  |r the buffer, -1|
00003870  20 74 6f 20 67 65 74 20  74 68 65 20 62 75 66 66  | to get the buff|
00003880  65 72 20 6d 61 6e 61 67  65 72 20 74 6f 20 67 65  |er manager to ge|
00003890  6e 65 72 61 74 65 20 6f  6e 65 0a 3c 3d 09 52 30  |nerate one.<=.R0|
000038a0  20 3d 09 62 75 66 66 65  72 20 68 61 6e 64 6c 65  | =.buffer handle|
000038b0  0a 0a 54 68 69 73 20 53  57 49 20 69 73 20 73 69  |..This SWI is si|
000038c0  6d 69 6c 61 72 20 74 6f  20 3c 42 75 66 66 65 72  |milar to <Buffer|
000038d0  5f 43 72 65 61 74 65 3e  2c 20 62 75 74 20 64 6f  |_Create>, but do|
000038e0  65 73 20 6e 6f 74 20 63  6c 61 69 6d 20 6d 65 6d  |es not claim mem|
000038f0  6f 72 79 20 66 6f 72 20  79 6f 75 20 2d 20 72 61  |ory for you - ra|
00003900  74 68 65 72 20 69 74 20  72 65 67 69 73 74 65 72  |ther it register|
00003910  73 20 79 6f 75 72 20 65  78 69 73 74 69 6e 67 20  |s your existing |
00003920  6d 65 6d 6f 72 79 20 61  73 20 61 20 62 75 66 66  |memory as a buff|
00003930  65 72 2e 0a 44 41 54 41  29 01 00 00 42 75 66 66  |er..DATA)...Buff|
00003940  65 72 5f 54 68 72 65 73  68 6f 6c 64 20 20 28 26  |er_Threshold  (&|
00003950  34 32 39 34 39 29 0a 23  50 61 72 65 6e 74 20 42  |42949).#Parent B|
00003960  75 66 66 65 72 5f 0a 3d  3e 09 52 30 20 3d 09 62  |uffer_.=>.R0 =.b|
00003970  75 66 66 65 72 20 68 61  6e 64 6c 65 0a 09 52 31  |uffer handle..R1|
00003980  20 3d 09 74 68 72 65 73  68 6f 6c 64 20 28 2d 31  | =.threshold (-1|
00003990  20 74 6f 20 72 65 61 64  2c 20 30 20 66 6f 72 20  | to read, 0 for |
000039a0  6e 6f 6e 65 29 0a 3c 3d  09 52 31 20 3d 09 70 72  |none).<=.R1 =.pr|
000039b0  65 76 69 6f 75 73 20 76  61 6c 75 65 0a 0a 4f 53  |evious value..OS|
000039c0  5f 55 70 43 61 6c 6c 20  3c 38 3d 3e 4f 53 5f 55  |_UpCall <8=>OS_U|
000039d0  70 43 61 6c 6c 38 3e 20  61 6e 64 20 3c 39 3d 3e  |pCall8> and <9=>|
000039e0  4f 53 5f 55 70 43 61 6c  6c 39 3e 20 61 72 65 20  |OS_UpCall9> are |
000039f0  69 73 73 75 65 64 20 69  66 20 62 69 74 20 33 20  |issued if bit 3 |
00003a00  6f 66 20 74 68 65 20 3c  62 75 66 66 65 72 20 66  |of the <buffer f|
00003a10  6c 61 67 73 3d 3e 62 75  66 66 65 72 5f 66 6c 61  |lags=>buffer_fla|
00003a20  67 73 3e 20 69 73 20 73  65 74 2c 20 61 6e 64 20  |gs> is set, and |
00003a30  74 68 65 20 62 75 66 66  65 72 20 66 72 65 65 20  |the buffer free |
00003a40  73 70 61 63 65 20 63 72  6f 73 73 65 73 20 74 68  |space crosses th|
00003a50  65 20 74 68 72 65 73 68  6f 6c 64 2e 0a 00 00 00  |e threshold.....|
00003a60  44 41 54 41 d8 00 00 00  42 75 66 66 65 72 5f 55  |DATA....Buffer_U|
00003a70  6e 6c 69 6e 6b 44 65 76  69 63 65 20 20 28 26 34  |nlinkDevice  (&4|
00003a80  32 39 34 36 29 0a 23 50  61 72 65 6e 74 20 42 75  |2946).#Parent Bu|
00003a90  66 66 65 72 5f 0a 3d 3e  09 52 30 20 3d 09 62 75  |ffer_.=>.R0 =.bu|
00003aa0  66 66 65 72 20 68 61 6e  64 6c 65 0a 0a 54 68 69  |ffer handle..Thi|
00003ab0  73 20 53 57 49 20 75 6e  6c 69 6e 6b 73 20 72 6f  |s SWI unlinks ro|
00003ac0  75 74 69 6e 65 73 20 66  72 6f 6d 20 61 20 62 75  |utines from a bu|
00003ad0  66 66 65 72 20 6c 69 6e  6b 65 64 20 77 69 74 68  |ffer linked with|
00003ae0  20 3c 42 75 66 66 65 72  5f 4c 69 6e 6b 44 65 76  | <Buffer_LinkDev|
00003af0  69 63 65 3e 2e 20 49 74  20 64 6f 65 73 20 6e 6f  |ice>. It does no|
00003b00  74 20 63 61 6c 6c 20 74  68 65 20 3c 6f 77 6e 65  |t call the <owne|
00003b10  72 20 63 68 61 6e 67 65  64 3d 3e 62 75 66 66 65  |r changed=>buffe|
00003b20  72 5f 6f 77 6e 65 72 63  68 61 6e 67 65 3e 20 72  |r_ownerchange> r|
00003b30  6f 75 74 69 6e 65 2e 0a  44 41 54 41 4d 01 00 00  |outine..DATAM...|
00003b40  42 75 66 66 65 72 20 77  61 6b 65 75 70 20 72 6f  |Buffer wakeup ro|
00003b50  75 74 69 6e 65 0a 23 50  61 72 65 6e 74 20 4f 53  |utine.#Parent OS|
00003b60  5f 4c 69 6e 6b 44 65 76  69 63 65 0a 3d 3e 09 52  |_LinkDevice.=>.R|
00003b70  30 20 3d 09 62 75 66 66  65 72 20 68 61 6e 64 6c  |0 =.buffer handl|
00003b80  65 0a 09 52 38 20 3d 09  70 72 69 76 61 74 65 20  |e..R8 =.private |
00003b90  77 6f 72 64 0a 09 52 31  32 20 3d 09 77 6f 72 6b  |word..R12 =.work|
00003ba0  73 70 61 63 65 0a 0a 42  65 66 6f 72 65 20 63 61  |space..Before ca|
00003bb0  6c 6c 69 6e 67 20 62 69  74 20 30 20 69 73 20 73  |lling bit 0 is s|
00003bc0  65 74 20 69 6e 20 74 68  65 20 3c 66 6c 61 67 73  |et in the <flags|
00003bd0  20 77 6f 72 64 3d 3e 62  75 66 66 65 72 5f 66 6c  | word=>buffer_fl|
00003be0  61 67 73 3e 2e 20 4f 6e  20 65 6e 74 72 79 20 70  |ags>. On entry p|
00003bf0  72 6f 63 65 73 73 6f 72  20 6d 61 79 20 62 65 20  |rocessor may be |
00003c00  69 6e 20 61 6e 79 20 73  74 61 74 65 20 28 6d 6f  |in any state (mo|
00003c10  64 65 2c 20 69 6e 74 65  72 75 70 74 73 29 2e 20  |de, interupts). |
00003c20  4f 6e 20 65 78 69 74 20  79 6f 75 20 6d 75 73 74  |On exit you must|
00003c30  20 72 65 73 74 6f 72 65  20 65 76 65 72 79 74 68  | restore everyth|
00003c40  69 6e 67 2e 20 54 68 69  73 20 72 6f 75 74 69 6e  |ing. This routin|
00003c50  65 20 69 73 20 63 61 6c  6c 65 64 20 74 6f 20 61  |e is called to a|
00003c60  6c 6c 6f 77 20 79 6f 75  20 74 6f 20 77 61 6b 65  |llow you to wake|
00003c70  20 75 70 20 64 6f 72 6d  61 6e 74 20 68 61 72 64  | up dormant hard|
00003c80  77 61 72 65 2e 00 00 00  44 49 52 24 2c 00 00 00  |ware....DIR$,...|
00003c90  2c 00 00 00 b4 3c 00 00  46 fd ff ff b4 4b 22 a5  |,....<..F....K".|
00003ca0  9c 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
00003cb0  74 00 00 00 44 41 54 41  9c 00 00 00 43 61 63 68  |t...DATA....Cach|
00003cc0  65 0a 23 50 61 72 65 6e  74 20 21 52 6f 6f 74 0a  |e.#Parent !Root.|
00003cd0  23 50 72 65 66 69 78 20  43 61 63 68 65 5f 0a 23  |#Prefix Cache_.#|
00003ce0  54 61 62 6c 65 20 43 6f  6c 75 6d 6e 73 20 32 0a  |Table Columns 2.|
00003cf0  43 6f 6e 74 72 6f 6c 0a  43 61 63 68 65 61 62 6c  |Control.Cacheabl|
00003d00  65 0a 55 70 64 61 74 65  61 62 6c 65 0a 44 69 73  |e.Updateable.Dis|
00003d10  72 75 70 74 69 76 65 0a  46 6c 75 73 68 0a 23 45  |ruptive.Flush.#E|
00003d20  6e 64 54 61 62 6c 65 0a  0a 4e 6f 74 20 61 76 61  |ndTable..Not ava|
00003d30  69 6c 61 62 6c 65 20 66  72 6f 6d 20 52 49 53 43  |ilable from RISC|
00003d40  20 4f 53 20 33 2e 35 20  6f 6e 77 61 72 64 73 2e  | OS 3.5 onwards.|
00003d50  44 49 52 24 a4 06 00 00  a4 06 00 00 f4 43 00 00  |DIR$.........C..|
00003d60  46 ff ff ff cb 17 65 db  30 02 00 00 13 00 00 00  |F.....e.0.......|
00003d70  00 00 00 00 53 65 74 46  6f 6e 74 43 6f 6c 6f 75  |....SetFontColou|
00003d80  72 73 00 00 24 46 00 00  46 ff ff ff 77 02 64 db  |rs..$F..F...w.d.|
00003d90  2a 01 00 00 13 00 00 00  00 00 00 00 43 6f 6c 6f  |*...........Colo|
00003da0  75 72 4e 75 6d 62 65 72  54 6f 47 43 4f 4c 00 00  |urNumberToGCOL..|
00003db0  50 47 00 00 48 ff ff ff  3a 9e e2 0b 28 01 00 00  |PG..H...:...(...|
00003dc0  13 00 00 00 00 00 00 00  47 43 4f 4c 54 6f 43 6f  |........GCOLToCo|
00003dd0  6c 6f 75 72 4e 75 6d 62  65 72 00 00 78 48 00 00  |lourNumber..xH..|
00003de0  46 ff ff ff f7 1e 64 db  2a 01 00 00 13 00 00 00  |F.....d.*.......|
00003df0  00 00 00 00 49 6e 76 61  6c 69 64 61 74 65 43 61  |....InvalidateCa|
00003e00  63 68 65 00 a4 49 00 00  46 ff ff ff 89 2c 64 db  |che..I..F....,d.|
00003e10  d6 00 00 00 13 00 00 00  00 00 00 00 52 65 74 75  |............Retu|
00003e20  72 6e 43 6f 6c 6f 75 72  4e 75 6d 62 65 72 00 00  |rnColourNumber..|
00003e30  7c 4a 00 00 46 ff ff ff  81 36 64 db 5a 01 00 00  ||J..F....6d.Z...|
00003e40  13 00 00 00 00 00 00 00  52 65 74 75 72 6e 43 6f  |........ReturnCo|
00003e50  6c 6f 75 72 4e 75 6d 62  65 72 46 6f 72 4d 6f 64  |lourNumberForMod|
00003e60  65 00 00 00 d8 4b 00 00  48 ff ff ff 3f d7 e2 0b  |e....K..H...?...|
00003e70  90 04 00 00 13 00 00 00  00 00 00 00 52 65 74 75  |............Retu|
00003e80  72 6e 46 6f 6e 74 43 6f  6c 6f 75 72 73 00 00 00  |rnFontColours...|
00003e90  68 50 00 00 46 ff ff ff  22 61 64 db 49 01 00 00  |hP..F..."ad.I...|
00003ea0  13 00 00 00 00 00 00 00  52 65 74 75 72 6e 47 43  |........ReturnGC|
00003eb0  4f 4c 00 00 b4 51 00 00  46 ff ff ff 5c 70 64 db  |OL...Q..F...\pd.|
00003ec0  51 01 00 00 13 00 00 00  00 00 00 00 52 65 74 75  |Q...........Retu|
00003ed0  72 6e 47 43 4f 4c 46 6f  72 4d 6f 64 65 00 00 00  |rnGCOLForMode...|
00003ee0  08 53 00 00 46 ff ff ff  b3 7f 64 db da 00 00 00  |.S..F.....d.....|
00003ef0  13 00 00 00 00 00 00 00  52 65 74 75 72 6e 4f 70  |........ReturnOp|
00003f00  70 43 6f 6c 6f 75 72 4e  75 6d 62 65 72 00 00 00  |pColourNumber...|
00003f10  e4 53 00 00 46 ff ff ff  6c 8b 64 db 73 01 00 00  |.S..F...l.d.s...|
00003f20  13 00 00 00 00 00 00 00  52 65 74 75 72 6e 4f 70  |........ReturnOp|
00003f30  70 43 6f 6c 6f 75 72 4e  75 6d 62 65 72 46 6f 72  |pColourNumberFor|
00003f40  4d 6f 64 65 00 00 00 00  58 55 00 00 46 ff ff ff  |Mode....XU..F...|
00003f50  91 97 64 db c0 00 00 00  13 00 00 00 00 00 00 00  |..d.............|
00003f60  52 65 74 75 72 6e 4f 70  70 47 43 4f 4c 00 00 00  |ReturnOppGCOL...|
00003f70  18 56 00 00 46 ff ff ff  5c a3 64 db 55 01 00 00  |.V..F...\.d.U...|
00003f80  13 00 00 00 00 00 00 00  52 65 74 75 72 6e 4f 70  |........ReturnOp|
00003f90  70 47 43 4f 4c 46 6f 72  4d 6f 64 65 00 00 00 00  |pGCOLForMode....|
00003fa0  70 57 00 00 48 ff ff ff  53 28 f0 0b 08 04 00 00  |pW..H...S(......|
00003fb0  13 00 00 00 00 00 00 00  53 65 6c 65 63 74 47 43  |........SelectGC|
00003fc0  4f 4c 54 61 62 6c 65 00  78 5b 00 00 48 ff ff ff  |OLTable.x[..H...|
00003fd0  d1 fb 9f 19 56 06 00 00  13 00 00 00 00 00 00 00  |....V...........|
00003fe0  53 65 6c 65 63 74 54 61  62 6c 65 00 d0 61 00 00  |SelectTable..a..|
00003ff0  46 ff ff ff 98 43 65 db  5b 01 00 00 13 00 00 00  |F....Ce.[.......|
00004000  00 00 00 00 53 65 74 47  43 4f 4c 00 2c 63 00 00  |....SetGCOL.,c..|
00004010  46 fd ff ff d6 5c 65 db  27 01 00 00 13 00 00 00  |F....\e.'.......|
00004020  00 00 00 00 47 43 4f 4c  66 6c 61 67 73 00 00 00  |....GCOLflags...|
00004030  54 64 00 00 46 ff ff ff  ad 72 65 db b4 01 00 00  |Td..F....re.....|
00004040  13 00 00 00 00 00 00 00  53 65 74 4f 70 70 47 43  |........SetOppGC|
00004050  4f 4c 00 00 08 66 00 00  47 fd ff ff 64 a0 d7 07  |OL...f..G...d...|
00004060  c8 00 00 00 13 00 00 00  00 00 00 00 70 69 78 74  |............pixt|
00004070  72 61 6e 73 00 00 00 00  d0 66 00 00 47 ff ff ff  |rans.....f..G...|
00004080  2a 19 bd f2 08 01 00 00  33 00 00 00 00 00 00 00  |*.......3.......|
00004090  53 65 74 43 6f 6c 6f 75  72 00 00 00 d8 67 00 00  |SetColour....g..|
000040a0  48 ff ff ff 3a 04 3a 00  4c 01 00 00 13 00 00 00  |H...:.:.L.......|
000040b0  00 00 00 00 43 6f 6e 76  65 72 74 52 47 42 54 6f  |....ConvertRGBTo|
000040c0  43 49 45 00 24 69 00 00  48 ff ff ff 27 7a 39 00  |CIE.$i..H...'z9.|
000040d0  4c 01 00 00 13 00 00 00  00 00 00 00 43 6f 6e 76  |L...........Conv|
000040e0  65 72 74 43 49 45 54 6f  52 47 42 00 70 6a 00 00  |ertCIEToRGB.pj..|
000040f0  48 ff ff ff d9 6e e5 0b  be 01 00 00 13 00 00 00  |H....n..........|
00004100  00 00 00 00 43 6f 6e 76  65 72 74 52 47 42 54 6f  |....ConvertRGBTo|
00004110  48 53 56 00 30 6c 00 00  48 ff ff ff 39 28 ef 0b  |HSV.0l..H...9(..|
00004120  ca 01 00 00 13 00 00 00  00 00 00 00 43 6f 6e 76  |............Conv|
00004130  65 72 74 48 53 56 54 6f  52 47 42 00 fc 6d 00 00  |ertHSVToRGB..m..|
00004140  48 ff ff ff ce 1e 3a 00  d8 01 00 00 13 00 00 00  |H.....:.........|
00004150  00 00 00 00 43 6f 6e 76  65 72 74 52 47 42 54 6f  |....ConvertRGBTo|
00004160  43 4d 59 4b 00 00 00 00  d4 6f 00 00 48 ff ff ff  |CMYK.....o..H...|
00004170  68 34 3a 00 d8 01 00 00  13 00 00 00 00 00 00 00  |h4:.............|
00004180  43 6f 6e 76 65 72 74 43  4d 59 4b 54 6f 52 47 42  |ConvertCMYKToRGB|
00004190  00 00 00 00 ac 71 00 00  48 fd ff ff b9 8b 3a 00  |.....q..H.....:.|
000041a0  c5 00 00 00 13 00 00 00  00 00 00 00 66 69 78 65  |............fixe|
000041b0  64 70 6f 69 6e 74 00 00  74 72 00 00 48 fd ff ff  |dpoint..tr..H...|
000041c0  54 2a e5 0b dd 05 00 00  13 00 00 00 00 00 00 00  |T*..............|
000041d0  63 61 6c 69 62 72 61 74  69 6f 6e 74 61 62 6c 65  |calibrationtable|
000041e0  00 00 00 00 54 78 00 00  48 ff ff ff e5 4a ee 0b  |....Tx..H....J..|
000041f0  30 01 00 00 13 00 00 00  00 00 00 00 43 6f 6e 76  |0...........Conv|
00004200  65 72 74 44 65 76 69 63  65 43 6f 6c 6f 75 72 00  |ertDeviceColour.|
00004210  84 79 00 00 48 ff ff ff  1d 8a ee 0b b7 01 00 00  |.y..H...........|
00004220  13 00 00 00 00 00 00 00  43 6f 6e 76 65 72 74 44  |........ConvertD|
00004230  65 76 69 63 65 50 61 6c  65 74 74 65 00 00 00 00  |evicePalette....|
00004240  3c 7b 00 00 48 ff ff ff  aa 04 e6 0b 9e 00 00 00  |<{..H...........|
00004250  13 00 00 00 00 00 00 00  47 65 6e 65 72 61 74 65  |........Generate|
00004260  54 61 62 6c 65 00 00 00  dc 7b 00 00 48 ff ff ff  |Table....{..H...|
00004270  d2 33 e3 0b 50 00 00 00  13 00 00 00 00 00 00 00  |.3..P...........|
00004280  4d 69 73 63 4f 70 00 00  2c 7c 00 00 48 ff ff ff  |MiscOp..,|..H...|
00004290  f0 4b e6 0b 41 01 00 00  13 00 00 00 00 00 00 00  |.K..A...........|
000042a0  52 65 61 64 43 61 6c 69  62 72 61 74 69 6f 6e 00  |ReadCalibration.|
000042b0  70 7d 00 00 48 ff ff ff  f3 87 f0 0b cf 03 00 00  |p}..H...........|
000042c0  13 00 00 00 00 00 00 00  52 65 61 64 50 61 6c 65  |........ReadPale|
000042d0  74 74 65 00 40 81 00 00  48 ff ff ff 05 41 e6 0b  |tte.@...H....A..|
000042e0  24 01 00 00 13 00 00 00  00 00 00 00 53 65 74 43  |$...........SetC|
000042f0  61 6c 69 62 72 61 74 69  6f 6e 00 00 64 82 00 00  |alibration..d...|
00004300  48 ff ff ff 2c 8c f1 0b  4c 01 00 00 13 00 00 00  |H...,...L.......|
00004310  00 00 00 00 53 65 74 4f  70 70 54 65 78 74 43 6f  |....SetOppTextCo|
00004320  6c 6f 75 72 00 00 00 00  b0 83 00 00 48 ff ff ff  |lour........H...|
00004330  f0 7f f1 0b 48 01 00 00  13 00 00 00 00 00 00 00  |....H...........|
00004340  53 65 74 54 65 78 74 43  6f 6c 6f 75 72 00 00 00  |SetTextColour...|
00004350  f8 84 00 00 48 ff ff ff  98 f8 ee 0b 4c 01 00 00  |....H.......L...|
00004360  13 00 00 00 00 00 00 00  57 72 69 74 65 43 61 6c  |........WriteCal|
00004370  69 62 72 61 74 69 6f 6e  54 6f 46 69 6c 65 00 00  |ibrationToFile..|
00004380  44 86 00 00 48 ff ff ff  9a 33 f1 0b f4 00 00 00  |D...H....3......|
00004390  13 00 00 00 00 00 00 00  57 72 69 74 65 4c 6f 61  |........WriteLoa|
000043a0  64 69 6e 67 73 54 6f 46  69 6c 65 00 38 87 00 00  |dingsToFile.8...|
000043b0  48 ff ff ff 8f f4 f0 0b  e2 02 00 00 13 00 00 00  |H...............|
000043c0  00 00 00 00 57 72 69 74  65 50 61 6c 65 74 74 65  |....WritePalette|
000043d0  00 00 00 00 1c 8a 00 00  48 fd ff ff 0c a5 66 1a  |........H.....f.|
000043e0  ec 02 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
000043f0  74 00 00 00 44 41 54 41  30 02 00 00 43 6f 6c 6f  |t...DATA0...Colo|
00004400  75 72 54 72 61 6e 73 5f  53 65 74 46 6f 6e 74 43  |urTrans_SetFontC|
00004410  6f 6c 6f 75 72 73 20 28  26 34 30 37 34 46 29 0a  |olours (&4074F).|
00004420  23 50 61 72 65 6e 74 20  43 6f 6c 6f 75 72 54 72  |#Parent ColourTr|
00004430  61 6e 73 5f 0a 3d 3e 09  52 30 20 3d 09 66 6f 6e  |ans_.=>.R0 =.fon|
00004440  74 20 68 61 6e 64 6c 65  2c 20 6f 72 20 30 20 66  |t handle, or 0 f|
00004450  6f 72 20 63 75 72 72 65  6e 74 20 66 6f 6e 74 0a  |or current font.|
00004460  09 52 31 20 3d 09 62 61  63 6b 67 72 6f 75 6e 64  |.R1 =.background|
00004470  20 70 61 6c 65 74 74 65  20 65 6e 74 72 79 0a 09  | palette entry..|
00004480  52 32 20 3d 09 66 6f 72  65 67 72 6f 75 6e 64 20  |R2 =.foreground |
00004490  70 61 6c 65 74 74 65 20  65 6e 74 72 79 0a 09 52  |palette entry..R|
000044a0  33 20 3d 09 6d 61 78 69  6d 75 6d 20 66 6f 72 65  |3 =.maximum fore|
000044b0  67 72 6f 75 6e 64 20 63  6f 6c 6f 75 72 20 6f 66  |ground colour of|
000044c0  66 73 65 74 20 28 30 2d  31 34 29 0a 0a 3c 3d 09  |fset (0-14)..<=.|
000044d0  52 30 20 70 72 65 73 65  72 76 65 64 0a 09 52 31  |R0 preserved..R1|
000044e0  20 3d 09 62 61 63 6b 67  72 6f 75 6e 64 20 6c 6f  | =.background lo|
000044f0  67 69 63 61 6c 20 63 6f  6c 6f 75 72 20 28 70 72  |gical colour (pr|
00004500  65 73 65 72 76 65 64 20  69 66 20 69 6e 20 32 35  |eserved if in 25|
00004510  36 20 63 6f 6c 6f 75 72  20 6d 6f 64 65 29 0a 09  |6 colour mode)..|
00004520  52 32 20 3d 09 66 6f 72  65 67 72 6f 75 6e 64 20  |R2 =.foreground |
00004530  6c 6f 67 69 63 61 6c 20  63 6f 6c 6f 75 72 0a 09  |logical colour..|
00004540  52 33 20 3d 09 6d 61 78  69 6d 75 6d 20 73 65 6e  |R3 =.maximum sen|
00004550  73 69 62 6c 65 20 63 6f  6c 6f 75 72 20 6f 66 66  |sible colour off|
00004560  73 65 74 20 28 75 70 20  74 6f 20 52 33 20 6f 6e  |set (up to R3 on|
00004570  20 65 6e 74 72 79 29 0a  0a 54 68 69 73 20 63 61  | entry)..This ca|
00004580  6c 6c 2c 20 67 69 76 65  6e 20 61 20 70 61 69 72  |ll, given a pair|
00004590  20 6f 66 20 70 61 6c 65  74 74 65 20 65 6e 74 72  | of palette entr|
000045a0  69 65 73 2c 20 66 69 6e  64 73 20 74 68 65 20 62  |ies, finds the b|
000045b0  65 73 74 20 61 76 61 69  6c 61 62 6c 65 20 72 61  |est available ra|
000045c0  6e 67 65 20 6f 66 20 61  6e 74 69 2d 61 6c 69 61  |nge of anti-alia|
000045d0  73 69 6e 67 20 63 6f 6c  6f 75 72 73 20 69 6e 20  |sing colours in |
000045e0  74 68 65 20 63 75 72 72  65 6e 74 20 70 61 6c 65  |the current pale|
000045f0  74 74 65 2c 20 61 6e 64  20 73 65 74 73 20 74 68  |tte, and sets th|
00004600  65 20 66 6f 6e 74 20 6d  61 6e 61 67 65 72 20 74  |e font manager t|
00004610  6f 20 75 73 65 20 74 68  65 73 65 20 63 6f 6c 6f  |o use these colo|
00004620  75 72 73 2e 44 41 54 41  2a 01 00 00 43 6f 6c 6f  |urs.DATA*...Colo|
00004630  75 72 54 72 61 6e 73 5f  43 6f 6c 6f 75 72 4e 75  |urTrans_ColourNu|
00004640  6d 62 65 72 54 6f 47 43  4f 4c 20 28 26 34 30 37  |mberToGCOL (&407|
00004650  34 44 29 0a 23 50 61 72  65 6e 74 20 43 6f 6c 6f  |4D).#Parent Colo|
00004660  75 72 54 72 61 6e 73 5f  0a 3d 3e 09 52 30 20 3d  |urTrans_.=>.R0 =|
00004670  09 63 6f 6c 6f 75 72 20  6e 75 6d 62 65 72 0a 3c  |.colour number.<|
00004680  3d 09 52 30 20 3d 09 47  43 4f 4c 0a 0a 54 68 69  |=.R0 =.GCOL..Thi|
00004690  73 20 63 61 6c 6c 20 63  68 61 6e 67 65 73 20 74  |s call changes t|
000046a0  68 65 20 76 61 6c 75 65  20 70 61 73 73 65 64 20  |he value passed |
000046b0  66 72 6f 6d 20 61 20 63  6f 6c 6f 75 72 20 6e 75  |from a colour nu|
000046c0  6d 62 65 72 2c 20 74 6f  20 61 20 47 43 4f 4c 2e  |mber, to a GCOL.|
000046d0  0a 0a 55 73 65 20 74 68  69 73 20 61 6e 64 20 3c  |..Use this and <|
000046e0  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 47 43 4f 4c  |ColourTrans_GCOL|
000046f0  54 6f 43 6f 6c 6f 75 72  4e 75 6d 62 65 72 3e 2c  |ToColourNumber>,|
00004700  20 6f 6e 6c 79 20 69 6e  20 32 35 36 20 63 6f 6c  | only in 256 col|
00004710  6f 75 72 20 6d 6f 64 65  73 2c 20 74 68 65 20 72  |our modes, the r|
00004720  65 73 75 6c 74 73 20 69  6e 20 61 6e 79 20 6f 74  |esults in any ot|
00004730  68 65 72 20 6d 6f 64 65  73 20 77 69 6c 6c 20 62  |her modes will b|
00004740  65 20 6d 65 61 6e 69 6e  67 6c 65 73 73 2e 00 00  |e meaningless...|
00004750  44 41 54 41 28 01 00 00  43 6f 6c 6f 75 72 54 72  |DATA(...ColourTr|
00004760  61 6e 73 5f 47 43 4f 4c  54 6f 43 6f 6c 6f 75 72  |ans_GCOLToColour|
00004770  4e 75 6d 62 65 72 20 28  26 34 30 37 34 43 29 0a  |Number (&4074C).|
00004780  23 50 61 72 65 6e 74 20  43 6f 6c 6f 75 72 54 72  |#Parent ColourTr|
00004790  61 6e 73 5f 0a 3d 3e 09  52 30 20 3d 09 47 43 4f  |ans_.=>.R0 =.GCO|
000047a0  4c 0a 3c 3d 09 52 30 20  3d 09 63 6f 6c 6f 75 72  |L.<=.R0 =.colour|
000047b0  20 6e 75 6d 62 65 72 0a  0a 54 68 69 73 20 63 61  | number..This ca|
000047c0  6c 6c 20 63 68 61 6e 67  65 73 20 74 68 65 20 76  |ll changes the v|
000047d0  61 6c 75 65 20 70 61 73  73 65 64 20 66 72 6f 6d  |alue passed from|
000047e0  20 47 43 4f 4c 2c 20 74  6f 20 61 20 63 6f 6c 6f  | GCOL, to a colo|
000047f0  75 72 20 6e 75 6d 62 65  72 2e 0a 0a 55 73 65 20  |ur number...Use |
00004800  74 68 69 73 20 61 6e 64  20 3c 43 6f 6c 6f 75 72  |this and <Colour|
00004810  54 72 61 6e 73 5f 43 6f  6c 6f 75 72 4e 75 6d 62  |Trans_ColourNumb|
00004820  65 72 54 6f 47 43 4f 4c  3e 2c 20 6f 6e 6c 79 20  |erToGCOL>, only |
00004830  69 6e 20 32 35 36 20 63  6f 6c 6f 75 72 20 6d 6f  |in 256 colour mo|
00004840  64 65 73 2c 20 74 68 65  20 72 65 73 75 6c 74 73  |des, the results|
00004850  20 69 6e 20 61 6e 79 20  6f 74 68 65 72 20 6d 6f  | in any other mo|
00004860  64 65 73 20 77 69 6c 6c  20 62 65 20 6d 65 61 6e  |des will be mean|
00004870  69 6e 67 6c 65 73 73 2e  44 41 54 41 2a 01 00 00  |ingless.DATA*...|
00004880  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 49 6e 76 61  |ColourTrans_Inva|
00004890  6c 69 64 61 74 65 43 61  63 68 65 20 28 26 34 30  |lidateCache (&40|
000048a0  37 35 30 29 0a 23 50 61  72 65 6e 74 20 43 6f 6c  |750).#Parent Col|
000048b0  6f 75 72 54 72 61 6e 73  5f 0a 54 68 69 73 20 63  |ourTrans_.This c|
000048c0  61 6c 6c 20 6d 75 73 74  20 62 65 20 69 73 73 75  |all must be issu|
000048d0  65 64 20 77 68 65 6e 65  76 65 72 20 74 68 65 20  |ed whenever the |
000048e0  70 61 6c 65 74 74 65 20  68 61 73 20 63 68 61 6e  |palette has chan|
000048f0  67 65 64 20 73 69 6e 63  65 20 43 6f 6c 6f 75 72  |ged since Colour|
00004900  54 72 61 6e 73 20 77 61  73 20 6c 61 73 74 20 63  |Trans was last c|
00004910  61 6c 6c 65 64 2e 20 4e  6f 74 65 20 74 68 61 74  |alled. Note that|
00004920  20 63 6f 6c 6f 75 72 20  63 68 61 6e 67 65 73 20  | colour changes |
00004930  64 75 65 20 74 6f 20 61  20 6d 6f 64 65 20 63 68  |due to a mode ch|
00004940  61 6e 67 65 20 61 72 65  20 64 65 74 65 63 74 65  |ange are detecte|
00004950  64 2e 20 59 6f 75 20 6f  6e 6c 79 20 6e 65 65 64  |d. You only need|
00004960  20 74 6f 20 75 73 65 20  74 68 69 73 20 69 66 20  | to use this if |
00004970  61 6e 6f 74 68 65 72 20  6f 66 20 74 68 65 20 70  |another of the p|
00004980  61 6c 65 74 74 65 20 63  68 61 6e 67 65 20 6f 70  |alette change op|
00004990  65 72 61 74 69 6f 6e 73  20 77 61 73 20 75 73 65  |erations was use|
000049a0  64 2e 00 00 44 41 54 41  d6 00 00 00 43 6f 6c 6f  |d...DATA....Colo|
000049b0  75 72 54 72 61 6e 73 5f  52 65 74 75 72 6e 43 6f  |urTrans_ReturnCo|
000049c0  6c 6f 75 72 4e 75 6d 62  65 72 20 28 26 34 30 37  |lourNumber (&407|
000049d0  34 34 29 0a 23 50 61 72  65 6e 74 20 43 6f 6c 6f  |44).#Parent Colo|
000049e0  75 72 54 72 61 6e 73 5f  0a 3d 3e 09 52 30 20 3d  |urTrans_.=>.R0 =|
000049f0  09 70 61 6c 65 74 74 65  20 65 6e 74 72 79 0a 3c  |.palette entry.<|
00004a00  3d 09 52 30 20 3d 09 63  6f 6c 6f 75 72 20 6e 75  |=.R0 =.colour nu|
00004a10  6d 62 65 72 0a 0a 54 68  69 73 20 63 61 6c 6c 2c  |mber..This call,|
00004a20  20 67 69 76 65 6e 20 61  20 70 61 6c 65 74 74 65  | given a palette|
00004a30  20 65 6e 74 72 79 2c 20  72 65 74 75 72 6e 73 20  | entry, returns |
00004a40  74 68 65 20 63 6c 6f 73  65 73 74 20 63 6f 6c 6f  |the closest colo|
00004a50  75 72 20 6e 75 6d 62 65  72 20 69 6e 20 74 68 65  |ur number in the|
00004a60  20 63 75 72 72 65 6e 74  20 6d 6f 64 65 20 61 6e  | current mode an|
00004a70  64 20 70 61 6c 65 74 74  65 2e 00 00 44 41 54 41  |d palette...DATA|
00004a80  5a 01 00 00 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |Z...ColourTrans_|
00004a90  52 65 74 75 72 6e 43 6f  6c 6f 75 72 4e 75 6d 62  |ReturnColourNumb|
00004aa0  65 72 46 6f 72 4d 6f 64  65 20 28 26 34 30 37 34  |erForMode (&4074|
00004ab0  36 29 0a 3d 3e 09 52 30  20 3d 09 70 61 6c 65 74  |6).=>.R0 =.palet|
00004ac0  74 65 20 65 6e 74 72 79  0a 09 52 31 20 3d 09 64  |te entry..R1 =.d|
00004ad0  65 73 74 69 6e 61 74 69  6f 6e 20 6d 6f 64 65 2c  |estination mode,|
00004ae0  20 6f 72 20 2d 31 20 66  6f 72 20 63 75 72 72 65  | or -1 for curre|
00004af0  6e 74 20 6d 6f 64 65 0a  09 52 32 20 3d 09 70 61  |nt mode..R2 =.pa|
00004b00  6c 65 74 74 65 20 70 6f  69 6e 74 65 72 2c 20 6f  |lette pointer, o|
00004b10  72 20 2d 31 20 66 6f 72  20 63 75 72 72 65 6e 74  |r -1 for current|
00004b20  20 70 61 6c 65 74 74 65  2c 20 6f 72 20 30 20 66  | palette, or 0 f|
00004b30  6f 72 20 64 65 66 61 75  6c 74 20 66 6f 72 20 74  |or default for t|
00004b40  68 65 20 6d 6f 64 65 0a  0a 3c 3d 09 52 30 20 3d  |he mode..<=.R0 =|
00004b50  09 63 6f 6c 6f 75 72 20  6e 75 6d 62 65 72 0a 09  |.colour number..|
00004b60  52 31 2c 52 32 20 70 72  65 73 65 72 76 65 64 20  |R1,R2 preserved |
00004b70  0a 0a 54 68 69 73 20 63  61 6c 6c 2c 20 67 69 76  |..This call, giv|
00004b80  65 6e 20 61 20 70 61 6c  65 74 74 65 20 65 6e 74  |en a palette ent|
00004b90  72 79 2c 20 61 20 64 65  73 74 69 6e 61 74 69 6f  |ry, a destinatio|
00004ba0  6e 20 6d 6f 64 65 20 61  6e 64 20 70 61 6c 65 74  |n mode and palet|
00004bb0  74 65 2c 20 72 65 74 75  72 6e 73 20 74 68 65 20  |te, returns the |
00004bc0  63 6c 6f 73 65 73 74 20  63 6f 6c 6f 75 72 20 6e  |closest colour n|
00004bd0  75 6d 62 65 72 2e 00 00  44 41 54 41 90 04 00 00  |umber...DATA....|
00004be0  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 74 75  |ColourTrans_Retu|
00004bf0  72 6e 46 6f 6e 74 43 6f  6c 6f 75 72 73 20 28 26  |rnFontColours (&|
00004c00  34 30 37 34 45 29 0a 23  50 61 72 65 6e 74 20 43  |4074E).#Parent C|
00004c10  6f 6c 6f 75 72 54 72 61  6e 73 5f 0a 3d 3e 09 52  |olourTrans_.=>.R|
00004c20  30 20 3d 09 66 6f 6e 74  20 68 61 6e 64 6c 65 2c  |0 =.font handle,|
00004c30  20 6f 72 20 30 20 66 6f  72 20 63 75 72 72 65 6e  | or 0 for curren|
00004c40  74 20 66 6f 6e 74 0a 09  52 31 20 3d 09 62 61 63  |t font..R1 =.bac|
00004c50  6b 67 6f 72 75 6e 64 20  70 61 6c 65 74 74 65 20  |kgorund palette |
00004c60  65 6e 74 72 79 0a 09 52  32 20 3d 09 66 6f 72 65  |entry..R2 =.fore|
00004c70  67 72 6f 75 6e 64 20 70  61 6c 65 74 74 65 20 65  |ground palette e|
00004c80  6e 74 72 79 0a 09 52 33  20 3d 09 6d 61 78 69 6d  |ntry..R3 =.maxim|
00004c90  75 6d 20 66 6f 72 65 67  72 6f 75 6e 64 20 63 6f  |um foreground co|
00004ca0  6c 6f 75 72 20 6f 66 66  73 65 74 20 28 30 2d 31  |lour offset (0-1|
00004cb0  34 29 0a 0a 3c 3d 09 52  30 20 70 72 65 73 65 72  |4)..<=.R0 preser|
00004cc0  76 65 64 0a 09 52 31 20  3d 09 62 61 63 6b 67 72  |ved..R1 =.backgr|
00004cd0  6f 75 6e 64 20 6c 6f 67  69 63 61 6c 20 63 6f 6c  |ound logical col|
00004ce0  6f 75 72 20 28 70 72 65  73 65 72 76 65 64 20 69  |our (preserved i|
00004cf0  66 20 69 6e 20 32 35 36  20 63 6f 6c 6f 75 72 20  |f in 256 colour |
00004d00  6d 6f 64 65 29 0a 09 52  32 20 3d 09 66 6f 72 65  |mode)..R2 =.fore|
00004d10  67 72 6f 75 6e 64 20 6c  6f 67 69 63 61 6c 20 63  |ground logical c|
00004d20  6f 6c 6f 75 72 0a 09 52  33 20 3d 09 6d 61 78 69  |olour..R3 =.maxi|
00004d30  6d 75 6d 20 73 65 6e 73  69 62 6c 65 20 63 6f 6c  |mum sensible col|
00004d40  6f 75 72 20 6f 66 66 73  65 74 20 28 75 70 20 74  |our offset (up t|
00004d50  6f 20 52 33 20 6f 6e 20  65 6e 74 72 79 29 0a 0a  |o R3 on entry)..|
00004d60  54 68 69 73 20 63 61 6c  6c 2c 20 67 69 76 65 6e  |This call, given|
00004d70  20 62 61 63 6b 67 72 6f  75 6e 64 20 61 6e 64 20  | background and |
00004d80  66 6f 72 65 67 72 6f 75  6e 64 20 63 6f 6c 6f 75  |foreground colou|
00004d90  72 73 20 61 6e 64 20 74  68 65 20 6e 75 6d 62 65  |rs and the numbe|
00004da0  72 20 6f 66 20 61 6e 74  69 20 61 6c 69 61 73 69  |r of anti aliasi|
00004db0  6e 67 20 63 6f 6c 6f 75  72 73 20 64 65 73 69 72  |ng colours desir|
00004dc0  65 64 2c 20 66 69 6e 64  73 20 74 68 65 20 6d 61  |ed, finds the ma|
00004dd0  78 69 6d 75 6d 20 72 61  6e 67 65 20 6f 66 20 63  |ximum range of c|
00004de0  6f 6c 6f 75 72 20 74 68  61 74 20 63 61 6e 20 73  |olour that can s|
00004df0  65 6e 73 69 62 6c 79 20  62 65 20 75 73 65 64 2e  |ensibly be used.|
00004e00  20 53 6f 20 66 6f 72 20  74 68 65 20 67 69 76 65  | So for the give|
00004e10  6e 20 70 61 6c 65 74 74  65 20 65 6e 74 72 69 65  |n palette entrie|
00004e20  73 2c 20 69 74 20 66 69  6e 64 73 20 74 68 65 20  |s, it finds the |
00004e30  62 65 73 74 20 66 69 74  20 69 6e 20 74 68 65 20  |best fit in the |
00004e40  63 75 72 72 65 6e 74 20  70 61 6c 65 74 74 65 2c  |current palette,|
00004e50  20 61 6e 64 20 74 68 65  6e 20 69 6e 73 70 65 63  | and then inspec|
00004e60  74 73 20 74 68 65 20 6f  74 68 65 72 20 61 76 61  |ts the other ava|
00004e70  69 6c 61 62 6c 65 20 63  6f 6c 6f 75 72 73 20 74  |ilable colours t|
00004e80  6f 20 64 65 64 75 63 65  20 74 68 65 20 6d 61 78  |o deduce the max|
00004e90  69 6d 75 6d 20 70 6f 73  73 69 62 6c 65 20 61 6d  |imum possible am|
00004ea0  6f 75 6e 74 20 6f 66 20  61 6e 74 69 2d 61 6c 69  |ount of anti-ali|
00004eb0  61 73 69 6e 67 20 75 70  20 74 6f 20 74 68 65 20  |asing up to the |
00004ec0  6c 69 6d 69 74 20 69 6e  20 52 33 2e 0a 0a 49 66  |limit in R3...If|
00004ed0  20 61 6e 74 69 2d 61 6c  69 61 73 69 6e 67 20 69  | anti-aliasing i|
00004ee0  73 20 64 65 73 69 72 61  62 6c 65 2c 20 79 6f 75  |s desirable, you|
00004ef0  20 73 68 6f 75 6c 64 20  73 65 74 20 52 33 3d 31  | should set R3=1|
00004f00  34 20 6f 6e 20 65 6e 74  72 79 3b 20 6f 74 68 65  |4 on entry; othe|
00004f10  72 77 69 73 65 20 73 65  74 20 52 33 3d 30 20 66  |rwise set R3=0 f|
00004f20  6f 72 20 6d 6f 6e 6f 63  68 72 6f 6d 65 2e 0a 0a  |or monochrome...|
00004f30  54 68 65 20 76 61 6c 75  65 73 20 69 6e 20 52 31  |The values in R1|
00004f40  2d 52 33 20 6f 6e 20 65  78 69 74 20 61 72 65 20  |-R3 on exit are |
00004f50  73 75 69 74 61 62 6c 65  20 66 6f 72 20 70 61 73  |suitable for pas|
00004f60  73 69 6e 67 20 74 6f 20  3c 46 6f 6e 74 5f 53 65  |sing to <Font_Se|
00004f70  74 46 6f 6e 74 43 6f 6c  6f 75 72 73 3e 2c 20 6f  |tFontColours>, o|
00004f80  72 20 69 6e 63 6c 75 64  69 6e 67 20 69 6e 20 61  |r including in a|
00004f90  20 66 6f 6e 74 20 73 74  72 69 6e 67 20 69 6e 20  | font string in |
00004fa0  61 20 63 6f 6d 6d 61 6e  64 20 28 31 38 29 20 73  |a command (18) s|
00004fb0  65 71 75 65 6e 63 65 2e  0a 0a 49 6e 20 32 35 36  |equence...In 256|
00004fc0  20 63 6f 6c 6f 75 72 20  6d 6f 64 65 73 20 79 6f  | colour modes yo|
00004fd0  75 20 63 61 6e 20 6f 6e  6c 79 20 73 65 74 20 31  |u can only set 1|
00004fe0  36 20 63 6f 6c 6f 75 72  73 20 62 65 66 6f 72 65  |6 colours before|
00004ff0  20 70 72 65 76 69 6f 75  73 6c 79 20 72 65 74 75  | previously retu|
00005000  72 6e 65 64 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  |rned information|
00005010  20 62 65 63 6f 6d 65 73  20 69 6e 76 61 6c 69 64  | becomes invalid|
00005020  20 2d 20 74 68 69 73 20  69 73 20 74 68 65 20 73  | - this is the s|
00005030  6f 75 72 63 65 20 6f 66  20 74 68 65 20 31 36 20  |ource of the 16 |
00005040  63 6f 6c 6f 75 72 63 68  61 6e 67 65 20 6c 69 6d  |colourchange lim|
00005050  69 74 61 74 69 6f 6e 20  69 6e 20 3c 46 6f 6e 74  |itation in <Font|
00005060  5f 50 61 69 6e 74 3e 2e  44 41 54 41 49 01 00 00  |_Paint>.DATAI...|
00005070  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 74 75  |ColourTrans_Retu|
00005080  72 6e 47 43 4f 4c 20 28  26 34 30 37 34 32 29 0a  |rnGCOL (&40742).|
00005090  23 50 61 72 65 6e 74 20  43 6f 6c 6f 75 72 54 72  |#Parent ColourTr|
000050a0  61 6e 73 5f 0a 3d 3e 09  52 30 20 3d 09 50 61 6c  |ans_.=>.R0 =.Pal|
000050b0  65 74 74 65 20 65 6e 74  72 79 0a 3c 3d 09 52 30  |ette entry.<=.R0|
000050c0  20 3d 09 47 43 4f 4c 0a  0a 54 68 69 73 20 63 61  | =.GCOL..This ca|
000050d0  6c 6c 2c 20 67 69 76 65  6e 20 61 20 70 61 6c 65  |ll, given a pale|
000050e0  74 74 65 20 65 6e 74 72  79 2c 20 72 65 74 75 72  |tte entry, retur|
000050f0  6e 73 20 74 68 65 20 63  6c 6f 73 65 73 74 20 47  |ns the closest G|
00005100  43 4f 4c 20 69 6e 20 74  68 65 20 63 75 72 72 65  |COL in the curre|
00005110  6e 74 20 6d 6f 64 65 20  61 6e 64 20 70 61 6c 65  |nt mode and pale|
00005120  74 74 65 2e 20 49 74 27  73 20 65 71 75 69 76 61  |tte. It's equiva|
00005130  6c 65 6e 74 20 74 6f 20  3c 43 6f 6c 6f 75 72 54  |lent to <ColourT|
00005140  72 61 6e 73 5f 52 65 74  75 72 6e 47 43 4f 4c 46  |rans_ReturnGCOLF|
00005150  6f 72 4d 6f 64 65 3e 20  66 6f 72 20 74 68 65 20  |orMode> for the |
00005160  67 69 76 65 6e 20 70 61  6c 65 74 74 65 20 65 6e  |given palette en|
00005170  74 72 79 2c 20 77 69 74  68 20 70 61 72 61 6d 65  |try, with parame|
00005180  74 65 72 73 20 6f 66 20  2d 31 20 66 6f 72 20 62  |ters of -1 for b|
00005190  6f 74 68 20 74 68 65 20  6d 6f 64 65 20 61 6e 64  |oth the mode and|
000051a0  20 70 61 6c 65 74 74 65  20 70 6f 69 6e 74 65 72  | palette pointer|
000051b0  2e 00 00 00 44 41 54 41  51 01 00 00 43 6f 6c 6f  |....DATAQ...Colo|
000051c0  75 72 54 72 61 6e 73 5f  52 65 74 75 72 6e 47 43  |urTrans_ReturnGC|
000051d0  4f 4c 46 6f 72 4d 6f 64  65 20 28 26 34 30 37 34  |OLForMode (&4074|
000051e0  35 29 0a 23 50 61 72 65  6e 74 20 43 6f 6c 6f 75  |5).#Parent Colou|
000051f0  72 54 72 61 6e 73 5f 0a  3d 3e 09 52 30 20 3d 09  |rTrans_.=>.R0 =.|
00005200  50 61 6c 65 74 74 65 20  65 6e 74 72 79 0a 09 52  |Palette entry..R|
00005210  31 20 3d 09 64 65 73 74  69 6e 61 74 69 6f 6e 20  |1 =.destination |
00005220  6d 6f 64 65 2c 20 2d 31  20 66 6f 72 20 63 75 72  |mode, -1 for cur|
00005230  72 65 6e 74 20 6d 6f 64  65 0a 09 52 32 20 3d 09  |rent mode..R2 =.|
00005240  70 61 6c 65 74 74 65 20  70 6f 69 6e 74 65 72 2c  |palette pointer,|
00005250  20 6f 72 20 2d 31 20 66  6f 72 20 63 75 72 72 65  | or -1 for curre|
00005260  6e 74 20 70 61 6c 65 74  74 65 2c 20 6f 72 20 30  |nt palette, or 0|
00005270  20 66 6f 72 20 64 65 66  61 75 6c 74 20 66 6f 72  | for default for|
00005280  20 74 68 65 20 6d 6f 64  65 0a 0a 3c 3d 09 52 30  | the mode..<=.R0|
00005290  20 3d 09 47 43 4f 4c 0a  09 52 31 2c 52 32 20 70  | =.GCOL..R1,R2 p|
000052a0  72 65 73 65 72 76 65 64  0a 0a 54 68 69 73 20 63  |reserved..This c|
000052b0  61 6c 6c 2c 20 67 69 76  65 6e 20 61 20 70 61 6c  |all, given a pal|
000052c0  65 74 74 65 20 65 6e 74  72 79 2c 20 61 20 64 65  |ette entry, a de|
000052d0  73 74 69 6e 61 74 69 6f  6e 20 6d 6f 64 65 20 61  |stination mode a|
000052e0  6e 64 20 70 61 6c 65 74  74 65 2c 20 72 65 74 75  |nd palette, retu|
000052f0  72 6e 73 20 74 68 65 20  63 6c 6f 73 65 73 74 20  |rns the closest |
00005300  47 43 4f 4c 2e 00 00 00  44 41 54 41 da 00 00 00  |GCOL....DATA....|
00005310  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 74 75  |ColourTrans_Retu|
00005320  72 6e 4f 70 70 43 6f 6c  6f 75 72 4e 75 6d 62 65  |rnOppColourNumbe|
00005330  72 20 28 26 34 30 37 34  39 29 0a 23 50 61 72 65  |r (&40749).#Pare|
00005340  6e 74 20 43 6f 6c 6f 75  72 54 72 61 6e 73 5f 0a  |nt ColourTrans_.|
00005350  3d 3e 09 52 30 20 3d 09  70 61 6c 65 74 74 65 20  |=>.R0 =.palette |
00005360  65 6e 74 72 79 0a 3c 3d  09 52 30 20 3d 09 63 6f  |entry.<=.R0 =.co|
00005370  6c 6f 75 72 20 6e 75 6d  62 65 72 0a 0a 54 68 69  |lour number..Thi|
00005380  73 20 63 61 6c 6c 2c 20  67 69 76 65 6e 20 61 20  |s call, given a |
00005390  70 61 6c 65 74 74 65 20  65 6e 74 72 79 2c 20 72  |palette entry, r|
000053a0  65 74 75 72 6e 73 20 74  68 65 20 66 75 72 74 68  |eturns the furth|
000053b0  65 73 74 20 63 6f 6c 6f  75 72 20 6e 75 6d 62 65  |est colour numbe|
000053c0  72 20 69 6e 20 74 68 65  20 63 75 72 72 65 6e 74  |r in the current|
000053d0  20 6d 6f 64 65 20 61 6e  64 20 70 61 6c 65 74 74  | mode and palett|
000053e0  65 2e 00 00 44 41 54 41  73 01 00 00 43 6f 6c 6f  |e...DATAs...Colo|
000053f0  75 72 54 72 61 6e 73 5f  52 65 74 75 72 6e 4f 70  |urTrans_ReturnOp|
00005400  70 43 6f 6c 6f 75 72 4e  75 6d 62 65 72 46 6f 72  |pColourNumberFor|
00005410  4d 6f 64 65 20 28 26 34  30 37 34 42 29 0a 23 50  |Mode (&4074B).#P|
00005420  61 72 65 6e 74 20 43 6f  6c 6f 75 72 54 72 61 6e  |arent ColourTran|
00005430  73 5f 0a 3d 3e 09 52 30  20 3d 09 70 61 6c 65 74  |s_.=>.R0 =.palet|
00005440  74 65 20 65 6e 74 72 79  0a 09 52 31 20 3d 09 64  |te entry..R1 =.d|
00005450  65 73 74 69 6e 61 74 69  6f 6e 20 6d 6f 64 65 2c  |estination mode,|
00005460  20 6f 72 20 2d 31 20 66  6f 72 20 63 75 72 72 65  | or -1 for curre|
00005470  6e 74 20 6d 6f 64 65 0a  09 52 32 20 3d 09 70 61  |nt mode..R2 =.pa|
00005480  6c 65 74 74 65 20 70 6f  69 6e 74 65 72 2c 20 6f  |lette pointer, o|
00005490  72 20 2d 31 20 66 6f 72  20 63 75 72 72 65 6e 74  |r -1 for current|
000054a0  20 70 61 6c 65 74 74 65  2c 20 6f 72 20 30 20 66  | palette, or 0 f|
000054b0  6f 72 20 64 65 66 61 75  6c 74 20 66 6f 72 20 74  |or default for t|
000054c0  68 65 20 6d 6f 64 65 0a  0a 3c 3d 09 52 30 20 3d  |he mode..<=.R0 =|
000054d0  09 63 6f 6c 6f 75 72 20  6e 75 6d 62 65 72 0a 09  |.colour number..|
000054e0  52 31 2c 52 32 20 70 72  65 73 65 72 76 65 64 20  |R1,R2 preserved |
000054f0  0a 0a 54 68 69 73 20 63  61 6c 6c 2c 20 67 69 76  |..This call, giv|
00005500  65 6e 20 61 20 70 61 6c  65 74 74 65 20 65 6e 74  |en a palette ent|
00005510  72 79 2c 20 61 20 64 65  73 74 69 6e 61 74 69 6f  |ry, a destinatio|
00005520  6e 20 6d 6f 64 65 20 61  6e 64 20 70 61 6c 65 74  |n mode and palet|
00005530  74 65 2c 20 72 65 74 75  72 6e 73 20 74 68 65 20  |te, returns the |
00005540  66 75 72 74 68 65 73 74  20 63 6f 6c 6f 75 72 20  |furthest colour |
00005550  6e 75 6d 62 65 72 2e 00  44 41 54 41 c0 00 00 00  |number..DATA....|
00005560  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 74 75  |ColourTrans_Retu|
00005570  72 6e 4f 70 70 47 43 4f  4c 20 28 26 34 30 37 34  |rnOppGCOL (&4074|
00005580  37 29 0a 23 50 61 72 65  6e 74 20 43 6f 6c 6f 75  |7).#Parent Colou|
00005590  72 54 72 61 6e 73 5f 0a  3d 3e 09 52 30 20 3d 09  |rTrans_.=>.R0 =.|
000055a0  70 61 6c 65 74 74 65 20  65 6e 74 72 79 0a 3c 3d  |palette entry.<=|
000055b0  09 52 30 20 3d 09 47 43  4f 4c 0a 0a 54 68 69 73  |.R0 =.GCOL..This|
000055c0  20 63 61 6c 6c 2c 20 67  69 76 65 6e 20 61 20 70  | call, given a p|
000055d0  61 6c 65 74 74 65 20 65  6e 74 72 79 2c 20 72 65  |alette entry, re|
000055e0  74 75 72 6e 73 20 74 68  65 20 66 75 72 74 68 65  |turns the furthe|
000055f0  73 74 20 47 43 4f 4c 20  69 6e 20 74 68 65 20 63  |st GCOL in the c|
00005600  75 72 72 65 6e 74 20 6d  6f 64 65 20 61 6e 64 20  |urrent mode and |
00005610  70 61 6c 65 74 74 65 2e  44 41 54 41 55 01 00 00  |palette.DATAU...|
00005620  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 74 75  |ColourTrans_Retu|
00005630  72 6e 4f 70 70 47 43 4f  4c 46 6f 72 4d 6f 64 65  |rnOppGCOLForMode|
00005640  20 28 26 34 30 37 34 41  29 0a 23 50 61 72 65 6e  | (&4074A).#Paren|
00005650  74 20 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 0a 3d  |t ColourTrans_.=|
00005660  3e 09 52 30 20 3d 09 50  61 6c 65 74 74 65 20 65  |>.R0 =.Palette e|
00005670  6e 74 72 79 0a 09 52 31  20 3d 09 64 65 73 74 69  |ntry..R1 =.desti|
00005680  6e 61 74 69 6f 6e 20 6d  6f 64 65 2c 20 2d 31 20  |nation mode, -1 |
00005690  66 6f 72 20 63 75 72 72  65 6e 74 20 6d 6f 64 65  |for current mode|
000056a0  0a 09 52 32 20 3d 09 70  61 6c 65 74 74 65 20 70  |..R2 =.palette p|
000056b0  6f 69 6e 74 65 72 2c 20  6f 72 20 2d 31 20 66 6f  |ointer, or -1 fo|
000056c0  72 20 63 75 72 72 65 6e  74 20 70 61 6c 65 74 74  |r current palett|
000056d0  65 2c 20 6f 72 20 30 20  66 6f 72 20 64 65 66 61  |e, or 0 for defa|
000056e0  75 6c 74 20 66 6f 72 20  74 68 65 20 6d 6f 64 65  |ult for the mode|
000056f0  0a 0a 3c 3d 09 52 30 20  3d 09 47 43 4f 4c 0a 09  |..<=.R0 =.GCOL..|
00005700  52 31 2c 52 32 20 70 72  65 73 65 72 76 65 64 0a  |R1,R2 preserved.|
00005710  0a 54 68 69 73 20 63 61  6c 6c 2c 20 67 69 76 65  |.This call, give|
00005720  6e 20 61 20 70 61 6c 65  74 74 65 20 65 6e 74 72  |n a palette entr|
00005730  79 2c 20 61 20 64 65 73  74 69 6e 61 74 69 6f 6e  |y, a destination|
00005740  20 6d 6f 64 65 20 61 6e  64 20 70 61 6c 65 74 74  | mode and palett|
00005750  65 2c 20 72 65 74 75 72  6e 73 20 74 68 65 20 66  |e, returns the f|
00005760  75 72 74 68 65 73 74 20  47 43 4f 4c 2e 00 00 00  |urthest GCOL....|
00005770  44 41 54 41 08 04 00 00  43 6f 6c 6f 75 72 54 72  |DATA....ColourTr|
00005780  61 6e 73 5f 53 65 6c 65  63 74 47 43 4f 4c 54 61  |ans_SelectGCOLTa|
00005790  62 6c 65 20 28 26 34 30  37 34 31 29 0a 23 50 61  |ble (&40741).#Pa|
000057a0  72 65 6e 74 20 43 6f 6c  6f 75 72 54 72 61 6e 73  |rent ColourTrans|
000057b0  5f 0a 3d 3e 09 52 30 20  3d 09 2d 31 20 66 6f 72  |_.=>.R0 =.-1 for|
000057c0  20 63 75 72 72 65 6e 74  20 6d 6f 64 65 0a 09 20  | current mode.. |
000057d0  09 28 69 66 20 5c 3c 20  32 35 36 29 09 73 6f 75  |.(if \< 256).sou|
000057e0  72 63 65 20 6d 6f 64 65  0a 09 20 09 28 69 66 20  |rce mode.. .(if |
000057f0  3e 3d 20 32 35 36 29 09  70 6f 69 6e 74 65 72 20  |>= 256).pointer |
00005800  74 6f 20 73 70 72 69 74  65 20 61 72 65 61 0a 09  |to sprite area..|
00005810  52 31 20 3d 09 28 69 66  20 52 30 20 5c 3c 20 32  |R1 =.(if R0 \< 2|
00005820  35 36 29 09 73 6f 75 72  63 65 20 70 61 6c 65 74  |56).source palet|
00005830  74 65 20 70 6f 69 6e 74  65 72 20 6f 72 20 2d 31  |te pointer or -1|
00005840  20 66 6f 72 20 63 75 72  72 65 6e 74 20 70 61 6c  | for current pal|
00005850  65 74 74 65 0a 09 20 09  28 69 66 20 52 30 20 3e  |ette.. .(if R0 >|
00005860  3d 20 32 35 36 29 09 70  6f 69 6e 74 65 72 20 74  |= 256).pointer t|
00005870  6f 20 73 70 72 69 74 65  20 6e 61 6d 65 2f 73 70  |o sprite name/sp|
00005880  72 69 74 65 20 69 6e 20  61 72 65 61 20 70 6f 69  |rite in area poi|
00005890  6e 74 65 64 20 74 6f 20  62 79 20 52 30 20 28 61  |nted to by R0 (a|
000058a0  73 20 73 70 65 63 69 66  69 65 64 20 62 79 20 52  |s specified by R|
000058b0  35 29 0a 09 52 32 20 3d  09 64 65 73 74 69 6e 61  |5)..R2 =.destina|
000058c0  74 69 6f 6e 20 6d 6f 64  65 2c 20 6f 72 20 2d 31  |tion mode, or -1|
000058d0  20 66 6f 72 20 63 75 72  72 65 6e 74 20 6d 6f 64  | for current mod|
000058e0  65 0a 09 52 33 20 3d 09  64 65 73 74 69 6e 61 74  |e..R3 =.destinat|
000058f0  69 6f 6e 20 70 61 6c 65  74 74 65 20 70 6f 69 6e  |ion palette poin|
00005900  74 65 72 2c 20 6f 72 20  2d 31 20 66 6f 72 20 63  |ter, or -1 for c|
00005910  75 72 72 65 6e 74 20 70  61 6c 65 74 74 65 2c 20  |urrent palette, |
00005920  6f 72 20 30 20 66 6f 72  20 64 65 66 61 75 6c 74  |or 0 for default|
00005930  20 66 6f 72 20 74 68 65  20 6d 6f 64 65 0a 09 52  | for the mode..R|
00005940  34 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |4 =.pointer to <|
00005950  62 75 66 66 65 72 3d 3e  63 6f 6c 6f 75 72 74 72  |buffer=>colourtr|
00005960  61 6e 73 5f 70 69 78 74  72 61 6e 73 3e 0a 09 52  |ans_pixtrans>..R|
00005970  35 20 3d 09 3c 66 6c 61  67 73 3d 3e 2e 66 6c 61  |5 =.<flags=>.fla|
00005980  67 73 3e 20 28 6f 6e 6c  79 20 75 73 65 64 20 69  |gs> (only used i|
00005990  66 20 52 30 20 3e 3d 20  32 35 36 29 0a 0a 3c 3d  |f R0 >= 256)..<=|
000059a0  09 41 6c 6c 20 72 65 67  69 73 74 65 72 73 20 70  |.All registers p|
000059b0  72 65 73 65 72 76 65 64  0a 0a 54 68 69 73 20 63  |reserved..This c|
000059c0  61 6c 6c 2c 20 67 69 76  65 6e 20 61 20 73 6f 75  |all, given a sou|
000059d0  72 63 65 20 6d 6f 64 65  20 61 6e 64 20 70 61 6c  |rce mode and pal|
000059e0  65 74 74 65 2c 20 61 20  64 65 73 74 69 6e 61 74  |ette, a destinat|
000059f0  69 6f 6e 20 6d 6f 64 65  20 61 6e 64 20 70 61 6c  |ion mode and pal|
00005a00  65 74 74 65 2c 20 61 6e  64 20 61 20 62 75 66 66  |ette, and a buff|
00005a10  65 72 2c 20 73 65 74 73  20 75 70 20 61 20 6c 69  |er, sets up a li|
00005a20  73 74 20 6f 66 20 47 43  4f 4c 73 20 69 6e 20 74  |st of GCOLs in t|
00005a30  68 65 20 62 75 66 66 65  72 2e 20 54 68 65 20 76  |he buffer. The v|
00005a40  61 6c 75 65 73 20 63 61  6e 20 73 75 62 73 65 71  |alues can subseq|
00005a50  75 65 6e 74 6c 79 20 62  65 20 75 73 65 64 20 62  |uently be used b|
00005a60  79 20 70 61 73 73 69 6e  67 20 74 68 65 6d 20 74  |y passing them t|
00005a70  6f 20 3c 47 43 4f 4c 3d  3e 42 41 53 49 43 3a 47  |o <GCOL=>BASIC:G|
00005a80  43 4f 4c 3e 20 61 6e 64  20 3c 54 49 4e 54 3d 3e  |COL> and <TINT=>|
00005a90  42 41 53 49 43 3a 54 49  4e 54 3e 2e 0a 23 53 75  |BASIC:TINT>..#Su|
00005aa0  62 70 61 67 65 20 66 6c  61 67 73 0a 53 65 6c 65  |bpage flags.Sele|
00005ab0  63 74 20 54 61 62 6c 65  20 66 6c 61 67 73 0a 42  |ct Table flags.B|
00005ac0  69 74 09 4d 65 61 6e 69  6e 67 20 69 66 20 73 65  |it.Meaning if se|
00005ad0  74 0a 23 4c 69 6e 65 0a  30 09 52 31 20 3d 20 70  |t.#Line.0.R1 = p|
00005ae0  6f 69 6e 74 65 72 20 74  6f 20 73 70 72 69 74 65  |ointer to sprite|
00005af0  20 28 6f 74 68 65 72 77  69 73 65 20 73 70 72 69  | (otherwise spri|
00005b00  74 65 20 6e 61 6d 65 29  0a 31 09 75 73 65 20 63  |te name).1.use c|
00005b10  75 72 72 65 6e 74 20 70  61 6c 65 74 74 65 20 69  |urrent palette i|
00005b20  66 20 73 70 72 69 74 65  20 64 6f 65 73 6e 27 74  |f sprite doesn't|
00005b30  20 68 61 76 65 20 6f 6e  65 20 28 6f 74 68 65 72  | have one (other|
00005b40  77 69 73 65 20 64 65 66  61 75 6c 74 20 70 61 6c  |wise default pal|
00005b50  65 74 74 65 29 0a 6f 74  68 65 72 20 62 69 74 73  |ette).other bits|
00005b60  20 72 65 73 65 72 76 65  64 20 28 6d 75 73 74 20  | reserved (must |
00005b70  62 65 20 7a 65 72 6f 29  44 41 54 41 56 06 00 00  |be zero)DATAV...|
00005b80  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 53 65 6c 65  |ColourTrans_Sele|
00005b90  63 74 54 61 62 6c 65 20  28 26 34 30 37 34 30 29  |ctTable (&40740)|
00005ba0  0a 23 50 61 72 65 6e 74  20 43 6f 6c 6f 75 72 54  |.#Parent ColourT|
00005bb0  72 61 6e 73 5f 0a 3d 3e  09 52 30 20 3d 09 2d 31  |rans_.=>.R0 =.-1|
00005bc0  20 66 6f 72 20 63 75 72  72 65 6e 74 20 6d 6f 64  | for current mod|
00005bd0  65 0a 09 20 09 28 69 66  20 5c 3c 20 32 35 36 29  |e.. .(if \< 256)|
00005be0  09 73 6f 75 72 63 65 20  6d 6f 64 65 0a 09 20 09  |.source mode.. .|
00005bf0  28 69 66 20 3e 3d 20 32  35 36 29 09 70 6f 69 6e  |(if >= 256).poin|
00005c00  74 65 72 20 74 6f 20 73  70 72 69 74 65 20 61 72  |ter to sprite ar|
00005c10  65 61 0a 09 52 31 20 3d  09 28 69 66 20 52 30 20  |ea..R1 =.(if R0 |
00005c20  5c 3c 20 32 35 36 29 09  73 6f 75 72 63 65 20 70  |\< 256).source p|
00005c30  61 6c 65 74 74 65 20 70  6f 69 6e 74 65 72 20 6f  |alette pointer o|
00005c40  72 20 2d 31 20 66 6f 72  20 63 75 72 72 65 6e 74  |r -1 for current|
00005c50  20 70 61 6c 65 74 74 65  0a 09 20 09 28 69 66 20  | palette.. .(if |
00005c60  52 30 20 3e 3d 20 32 35  36 29 09 70 6f 69 6e 74  |R0 >= 256).point|
00005c70  65 72 20 74 6f 20 73 70  72 69 74 65 20 6e 61 6d  |er to sprite nam|
00005c80  65 2f 73 70 72 69 74 65  20 69 6e 20 61 72 65 61  |e/sprite in area|
00005c90  20 70 6f 69 6e 74 65 64  20 74 6f 20 62 79 20 52  | pointed to by R|
00005ca0  30 20 28 61 73 20 73 70  65 63 69 66 69 65 64 20  |0 (as specified |
00005cb0  62 79 20 52 35 29 0a 09  52 32 20 3d 09 64 65 73  |by R5)..R2 =.des|
00005cc0  74 69 6e 61 74 69 6f 6e  20 6d 6f 64 65 2c 20 6f  |tination mode, o|
00005cd0  72 20 2d 31 20 66 6f 72  20 63 75 72 72 65 6e 74  |r -1 for current|
00005ce0  20 6d 6f 64 65 0a 09 52  33 20 3d 09 64 65 73 74  | mode..R3 =.dest|
00005cf0  69 6e 61 74 69 6f 6e 20  70 61 6c 65 74 74 65 20  |ination palette |
00005d00  70 6f 69 6e 74 65 72 2c  20 6f 72 20 2d 31 20 66  |pointer, or -1 f|
00005d10  6f 72 20 63 75 72 72 65  6e 74 20 70 61 6c 65 74  |or current palet|
00005d20  74 65 2c 20 6f 72 20 30  20 66 6f 72 20 64 65 66  |te, or 0 for def|
00005d30  61 75 6c 74 20 66 6f 72  20 74 68 65 20 6d 6f 64  |ault for the mod|
00005d40  65 0a 09 52 34 20 3d 09  70 6f 69 6e 74 65 72 20  |e..R4 =.pointer |
00005d50  74 6f 20 3c 62 75 66 66  65 72 3d 3e 63 6f 6c 6f  |to <buffer=>colo|
00005d60  75 72 74 72 61 6e 73 5f  70 69 78 74 72 61 6e 73  |urtrans_pixtrans|
00005d70  3e 2c 20 6f 72 20 30 20  74 6f 20 72 65 74 75 72  |>, or 0 to retur|
00005d80  6e 20 6c 65 6e 67 74 68  0a 09 52 35 20 3d 09 3c  |n length..R5 =.<|
00005d90  66 6c 61 67 73 3d 3e 2e  66 6c 61 67 73 3e 20 28  |flags=>.flags> (|
00005da0  6f 6e 6c 79 20 75 73 65  64 20 69 66 20 52 30 20  |only used if R0 |
00005db0  3e 3d 20 32 35 36 29 0a  09 52 36 20 3d 09 70 6f  |>= 256)..R6 =.po|
00005dc0  69 6e 74 65 72 20 74 6f  20 3c 74 72 61 6e 73 66  |inter to <transf|
00005dd0  65 72 20 66 75 6e 63 74  69 6f 6e 3d 3e 2e 74 72  |er function=>.tr|
00005de0  61 6e 73 66 65 72 66 75  6e 63 74 69 6f 6e 3e 20  |ansferfunction> |
00005df0  28 69 66 20 52 30 20 3d  3e 20 32 35 36 20 61 6e  |(if R0 => 256 an|
00005e00  64 20 66 6c 61 67 73 20  62 69 74 20 32 29 0a 09  |d flags bit 2)..|
00005e10  52 37 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R7 =.pointer to |
00005e20  74 72 61 6e 73 66 65 72  20 66 75 6e 63 74 69 6f  |transfer functio|
00005e30  6e 20 77 6f 72 6b 73 70  61 63 65 20 28 52 31 32  |n workspace (R12|
00005e40  29 20 28 69 66 20 52 30  20 3d 3e 20 32 35 36 20  |) (if R0 => 256 |
00005e50  61 6e 64 20 66 6c 61 67  73 20 62 69 74 20 32 29  |and flags bit 2)|
00005e60  0a 0a 3c 3d 09 52 34 20  3d 09 72 65 71 75 69 72  |..<=.R4 =.requir|
00005e70  65 64 20 62 75 66 66 65  72 20 73 69 7a 65 20 69  |ed buffer size i|
00005e80  66 20 30 20 6f 6e 20 65  6e 74 72 79 2c 20 65 6c  |f 0 on entry, el|
00005e90  73 65 20 70 72 65 73 65  72 76 65 64 0a 09 41 6c  |se preserved..Al|
00005ea0  6c 20 6f 74 68 65 72 20  72 65 67 69 73 74 65 72  |l other register|
00005eb0  73 20 70 72 65 73 65 72  76 65 64 0a 0a 54 68 69  |s preserved..Thi|
00005ec0  73 20 63 61 6c 6c 20 73  65 74 73 20 75 70 20 61  |s call sets up a|
00005ed0  20 74 72 61 6e 73 6c 61  74 69 6f 6e 20 74 61 62  | translation tab|
00005ee0  6c 65 20 69 6e 20 61 20  62 75 66 66 65 72 20 2d  |le in a buffer -|
00005ef0  20 74 68 61 74 20 69 73  2c 20 61 20 73 65 74 20  | that is, a set |
00005f00  6f 66 20 63 6f 6c 6f 75  72 20 6e 75 6d 62 65 72  |of colour number|
00005f10  73 20 61 73 20 75 73 65  64 20 62 79 20 73 63 61  |s as used by sca|
00005f20  6c 65 64 20 73 70 72 69  74 65 20 70 6c 6f 74 74  |led sprite plott|
00005f30  69 6e 67 2e 0a 23 53 75  62 70 61 67 65 20 66 6c  |ing..#Subpage fl|
00005f40  61 67 73 0a 53 65 6c 65  63 74 20 54 61 62 6c 65  |ags.Select Table|
00005f50  20 66 6c 61 67 73 0a 42  69 74 09 4d 65 61 6e 69  | flags.Bit.Meani|
00005f60  6e 67 20 69 66 20 73 65  74 0a 23 4c 69 6e 65 0a  |ng if set.#Line.|
00005f70  30 09 52 31 20 3d 20 70  6f 69 6e 74 65 72 20 74  |0.R1 = pointer t|
00005f80  6f 20 73 70 72 69 74 65  20 28 6f 74 68 65 72 77  |o sprite (otherw|
00005f90  69 73 65 20 73 70 72 69  74 65 20 6e 61 6d 65 29  |ise sprite name)|
00005fa0  0a 31 09 75 73 65 20 63  75 72 72 65 6e 74 20 70  |.1.use current p|
00005fb0  61 6c 65 74 74 65 20 69  66 20 73 70 72 69 74 65  |alette if sprite|
00005fc0  20 64 6f 65 73 6e 27 74  20 68 61 76 65 20 6f 6e  | doesn't have on|
00005fd0  65 20 28 6f 74 68 65 72  77 69 73 65 20 64 65 66  |e (otherwise def|
00005fe0  61 75 6c 74 20 70 61 6c  65 74 74 65 29 0a 32 09  |ault palette).2.|
00005ff0  52 36 2c 20 52 37 20 73  70 65 63 69 66 79 20 74  |R6, R7 specify t|
00006000  72 61 6e 73 66 65 72 20  66 75 6e 63 74 69 6f 6e  |ransfer function|
00006010  0a 32 34 2d 33 31 09 46  6f 72 6d 61 74 20 6f 66  |.24-31.Format of|
00006020  20 72 65 74 75 72 6e 65  64 20 74 61 62 6c 65 09  | returned table.|
00006030  30 20 3d 3e 20 3c 70 69  78 74 72 61 6e 73 20 74  |0 => <pixtrans t|
00006040  61 62 6c 65 3d 3e 63 6f  6c 6f 75 72 74 72 61 6e  |able=>colourtran|
00006050  73 5f 70 69 78 74 72 61  6e 73 3e 0a 09 20 09 09  |s_pixtrans>.. ..|
00006060  09 09 31 20 3d 3e 20 70  68 79 73 69 63 61 6c 20  |..1 => physical |
00006070  70 61 6c 65 74 74 65 20  74 61 62 6c 65 0a 6f 74  |palette table.ot|
00006080  68 65 72 20 62 69 74 73  20 72 65 73 65 72 76 65  |her bits reserve|
00006090  64 20 28 6d 75 73 74 20  62 65 20 7a 65 72 6f 29  |d (must be zero)|
000060a0  0a 23 53 75 62 70 61 67  65 20 74 72 61 6e 73 66  |.#Subpage transf|
000060b0  65 72 66 75 6e 63 74 69  6f 6e 0a 43 6f 6c 6f 75  |erfunction.Colou|
000060c0  72 54 72 61 6e 73 20 74  72 61 6e 73 66 65 72 20  |rTrans transfer |
000060d0  66 75 6e 63 74 69 6f 6e  0a 42 79 20 73 65 74 74  |function.By sett|
000060e0  69 6e 67 20 62 69 74 20  32 20 6f 66 20 74 68 65  |ing bit 2 of the|
000060f0  20 66 6c 61 67 73 2c 20  43 6f 6c 6f 75 72 54 72  | flags, ColourTr|
00006100  61 6e 73 20 77 69 6c 6c  20 63 61 6c 6c 20 74 68  |ans will call th|
00006110  65 20 74 72 61 6e 73 66  65 72 20 66 75 6e 63 74  |e transfer funct|
00006120  69 6f 6e 20 73 70 65 63  69 66 69 65 64 20 69 6e  |ion specified in|
00006130  20 52 36 20 74 6f 20 70  72 65 2d 70 72 6f 63 65  | R6 to pre-proce|
00006140  73 73 20 65 61 63 68 20  70 61 6c 6c 65 74 65 20  |ss each pallete |
00006150  65 6e 74 72 79 0a 3d 3e  09 52 30 20 3d 09 70 61  |entry.=>.R0 =.pa|
00006160  6c 65 74 74 65 20 65 6e  74 72 79 0a 09 52 31 32  |lette entry..R12|
00006170  20 3d 09 77 6f 72 6b 73  70 61 63 65 20 28 61 73  | =.workspace (as|
00006180  20 73 70 65 63 69 66 65  64 20 69 6e 20 52 37 29  | specifed in R7)|
00006190  0a 3c 3d 09 52 30 20 3d  09 70 72 6f 63 65 73 73  |.<=.R0 =.process|
000061a0  65 64 20 70 61 6c 65 74  74 65 20 65 6e 74 72 79  |ed palette entry|
000061b0  0a 09 50 72 65 73 65 72  76 65 20 61 6c 6c 20 6f  |..Preserve all o|
000061c0  74 68 65 72 20 72 65 67  69 73 74 65 72 73 00 00  |ther registers..|
000061d0  44 41 54 41 5b 01 00 00  43 6f 6c 6f 75 72 54 72  |DATA[...ColourTr|
000061e0  61 6e 73 5f 53 65 74 47  43 4f 4c 20 28 26 34 30  |ans_SetGCOL (&40|
000061f0  37 34 33 29 0a 23 50 61  72 65 6e 74 20 43 6f 6c  |743).#Parent Col|
00006200  6f 75 72 54 72 61 6e 73  5f 0a 3d 3e 09 52 30 20  |ourTrans_.=>.R0 |
00006210  3d 09 50 61 6c 65 74 74  65 20 65 6e 74 72 79 0a  |=.Palette entry.|
00006220  09 52 33 20 3d 09 3c 66  6c 61 67 73 3d 3e 43 6f  |.R3 =.<flags=>Co|
00006230  6c 6f 75 72 54 72 61 6e  73 5f 47 43 4f 4c 66 6c  |lourTrans_GCOLfl|
00006240  61 67 73 3e 0a 09 52 34  20 3d 09 47 43 4f 4c 20  |ags>..R4 =.GCOL |
00006250  61 63 74 69 6f 6e 0a 20  20 20 0a 3c 3d 09 52 30  |action.   .<=.R0|
00006260  20 3d 09 47 43 4f 4c 0a  09 52 32 20 3d 09 6c 6f  | =.GCOL..R2 =.lo|
00006270  67 32 20 6f 66 20 62 69  74 73 2d 70 65 72 2d 70  |g2 of bits-per-p|
00006280  69 78 65 6c 20 66 6f 72  20 63 75 72 72 65 6e 74  |ixel for current|
00006290  20 6d 6f 64 65 0a 09 52  33 20 3d 09 69 6e 69 74  | mode..R3 =.init|
000062a0  69 61 6c 20 76 61 6c 75  65 20 41 4e 44 20 26 38  |ial value AND &8|
000062b0  30 0a 09 52 34 20 70 72  65 73 65 72 76 65 64 0a  |0..R4 preserved.|
000062c0  0a 54 68 69 73 20 63 61  6c 6c 2c 20 67 69 76 65  |.This call, give|
000062d0  6e 20 61 20 70 61 6c 65  74 74 65 20 65 6e 74 72  |n a palette entr|
000062e0  79 2c 20 77 6f 72 6b 73  20 6f 75 74 20 74 68 65  |y, works out the|
000062f0  20 63 6c 6f 73 65 73 74  20 47 43 4f 4c 20 69 6e  | closest GCOL in|
00006300  20 74 68 65 20 63 75 72  72 65 6e 74 20 6d 6f 64  | the current mod|
00006310  65 20 61 6e 64 20 70 61  6c 65 74 74 65 2c 20 61  |e and palette, a|
00006320  6e 64 20 73 65 74 73 20  69 74 2e 00 44 41 54 41  |nd sets it..DATA|
00006330  27 01 00 00 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |'...ColourTrans_|
00006340  53 65 74 47 43 4f 4c 20  66 6c 61 67 73 20 66 6f  |SetGCOL flags fo|
00006350  72 20 52 33 0a 42 69 74  09 4d 65 61 6e 69 6e 67  |r R3.Bit.Meaning|
00006360  20 69 66 20 73 65 74 0a  23 4c 69 6e 65 0a 37 09  | if set.#Line.7.|
00006370  73 65 74 20 62 61 63 6b  67 72 6f 75 6e 64 20 63  |set background c|
00006380  6f 6c 6f 75 72 20 28 6f  74 68 65 72 77 69 73 65  |olour (otherwise|
00006390  20 66 6f 72 65 67 72 6f  75 6e 64 29 0a 38 09 75  | foreground).8.u|
000063a0  73 65 20 45 43 46 27 73  20 74 6f 20 67 69 76 65  |se ECF's to give|
000063b0  20 61 20 62 65 74 74 65  72 20 61 70 70 72 6f 78  | a better approx|
000063c0  69 6d 61 74 69 6f 6e 20  74 6f 20 74 68 65 20 63  |imation to the c|
000063d0  6f 6c 6f 75 72 0a 0a 54  68 65 20 72 65 6d 61 69  |olour..The remai|
000063e0  6e 69 6e 67 20 62 69 74  73 20 6f 66 20 52 33 20  |ning bits of R3 |
000063f0  61 6e 64 20 74 68 65 20  74 6f 70 20 74 68 72 65  |and the top thre|
00006400  65 20 62 79 74 65 73 20  6f 66 20 52 34 20 61 72  |e bytes of R4 ar|
00006410  65 20 72 65 73 65 72 76  65 64 2c 20 61 6e 64 20  |e reserved, and |
00006420  73 68 6f 75 6c 64 20 62  65 20 73 65 74 20 74 6f  |should be set to|
00006430  20 7a 65 72 6f 20 74 6f  20 61 6c 6c 6f 77 20 66  | zero to allow f|
00006440  6f 72 20 66 75 74 75 72  65 20 65 78 70 61 6e 73  |or future expans|
00006450  69 6f 6e 00 44 41 54 41  b4 01 00 00 43 6f 6c 6f  |ion.DATA....Colo|
00006460  75 72 54 72 61 6e 73 5f  53 65 74 4f 70 70 47 43  |urTrans_SetOppGC|
00006470  4f 4c 20 28 26 34 30 37  34 38 29 0a 23 50 61 72  |OL (&40748).#Par|
00006480  65 6e 74 20 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |ent ColourTrans_|
00006490  0a 3d 3e 09 52 30 20 3d  09 70 61 6c 65 74 74 65  |.=>.R0 =.palette|
000064a0  20 65 6e 74 72 79 0a 09  52 33 20 3d 09 30 20 66  | entry..R3 =.0 f|
000064b0  6f 72 20 66 6f 72 65 67  72 6f 75 6e 64 20 6f 72  |or foreground or|
000064c0  20 31 32 38 20 66 6f 72  20 62 61 63 6b 67 72 6f  | 128 for backgro|
000064d0  75 6e 64 0a 09 52 34 20  3d 09 47 43 4f 4c 20 61  |und..R4 =.GCOL a|
000064e0  63 74 69 6f 6e 0a 0a 3c  3d 09 52 30 20 3d 09 47  |ction..<=.R0 =.G|
000064f0  43 4f 4c 0a 09 52 32 20  3d 09 6c 6f 67 32 20 6f  |COL..R2 =.log2 o|
00006500  66 20 62 69 74 73 2d 70  65 72 2d 70 69 78 65 6c  |f bits-per-pixel|
00006510  20 66 6f 72 20 63 75 72  72 65 6e 74 20 6d 6f 64  | for current mod|
00006520  65 0a 09 52 33 20 3d 09  69 6e 69 74 69 61 6c 20  |e..R3 =.initial |
00006530  76 61 6c 75 65 20 41 4e  44 20 26 38 30 0a 09 52  |value AND &80..R|
00006540  34 20 70 72 65 73 65 72  76 65 64 20 0a 0a 54 68  |4 preserved ..Th|
00006550  69 73 20 63 61 6c 6c 2c  20 67 69 76 65 6e 20 61  |is call, given a|
00006560  20 70 61 6c 65 74 74 65  20 65 6e 74 72 79 2c 20  | palette entry, |
00006570  77 6f 72 6b 73 20 6f 75  74 20 74 68 65 20 66 75  |works out the fu|
00006580  72 74 68 65 73 74 20 47  43 4f 4c 20 69 6e 20 74  |rthest GCOL in t|
00006590  68 65 20 63 75 72 72 65  6e 74 20 6d 6f 64 65 20  |he current mode |
000065a0  61 6e 64 20 70 61 6c 65  74 74 65 2c 20 61 6e 64  |and palette, and|
000065b0  20 73 65 74 73 20 69 74  2e 0a 0a 54 68 65 20 74  | sets it...The t|
000065c0  6f 70 20 74 68 72 65 65  20 62 69 74 73 20 6f 66  |op three bits of|
000065d0  20 52 33 20 61 6e 64 20  52 34 20 73 68 6f 75 6c  | R3 and R4 shoul|
000065e0  64 20 62 65 20 7a 65 72  6f 20 74 6f 20 61 6c 6c  |d be zero to all|
000065f0  6f 77 20 66 6f 72 20 66  75 74 75 72 65 20 65 78  |ow for future ex|
00006600  70 61 6e 73 69 6f 6e 2e  44 41 54 41 c8 00 00 00  |pansion.DATA....|
00006610  43 6f 6c 6f 75 72 20 74  72 61 6e 73 6c 61 74 69  |Colour translati|
00006620  6f 6e 20 74 61 62 6c 65  0a 23 50 61 72 65 6e 74  |on table.#Parent|
00006630  20 43 6f 6c 6f 75 72 54  72 61 6e 73 5f 53 65 6c  | ColourTrans_Sel|
00006640  65 63 74 54 61 62 6c 65  0a 30 09 43 6f 6c 6f 75  |ectTable.0.Colou|
00006650  72 20 74 6f 20 75 73 65  20 69 6e 73 74 65 61 64  |r to use instead|
00006660  20 6f 66 20 73 70 72 69  74 65 20 63 6f 6c 6f 75  | of sprite colou|
00006670  72 20 30 0a 31 09 43 6f  6c 6f 75 72 20 74 6f 20  |r 0.1.Colour to |
00006680  75 73 65 20 69 6e 73 74  65 61 64 20 6f 66 20 73  |use instead of s|
00006690  70 72 69 74 65 20 63 6f  6c 6f 75 72 20 31 0a 2e  |prite colour 1..|
000066a0  0a 2e 0a 31 35 09 43 6f  6c 6f 75 72 20 74 6f 20  |...15.Colour to |
000066b0  75 73 65 20 69 6e 73 74  65 61 64 20 6f 66 20 73  |use instead of s|
000066c0  70 72 69 74 65 20 63 6f  6c 6f 75 72 20 31 35 0a  |prite colour 15.|
000066d0  44 41 54 41 08 01 00 00  43 6f 6c 6f 75 72 54 72  |DATA....ColourTr|
000066e0  61 6e 73 5f 53 65 74 43  6f 6c 6f 75 72 20 20 28  |ans_SetColour  (|
000066f0  26 34 30 37 35 45 29 0a  23 50 61 72 65 6e 74 20  |&4075E).#Parent |
00006700  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 0a 3d 3e 09  |ColourTrans_.=>.|
00006710  52 30 20 3d 09 47 43 4f  4c 20 6e 75 6d 62 65 72  |R0 =.GCOL number|
00006720  0a 09 52 33 20 3d 09 66  6c 61 67 73 20 3a 0a 09  |..R3 =.flags :..|
00006730  20 09 20 20 62 69 74 20  37 20 73 65 74 20 66 6f  | .  bit 7 set fo|
00006740  72 20 62 61 63 6b 67 72  6f 75 6e 64 2c 20 65 6c  |r background, el|
00006750  73 65 20 66 6f 72 65 67  72 6f 75 6e 64 0a 09 20  |se foreground.. |
00006760  09 20 20 62 69 74 20 39  20 73 65 74 20 66 6f 72  |.  bit 9 set for|
00006770  20 74 65 78 74 20 63 6f  6c 6f 75 72 2c 20 65 6c  | text colour, el|
00006780  73 65 20 67 72 61 70 68  69 63 73 0a 09 52 34 20  |se graphics..R4 |
00006790  3d 09 47 43 4f 4c 20 61  63 74 69 6f 6e 0a 0a 54  |=.GCOL action..T|
000067a0  68 69 73 20 53 57 49 20  69 73 20 75 73 65 64 20  |his SWI is used |
000067b0  74 6f 20 63 68 61 6e 67  65 20 74 68 65 20 63 75  |to change the cu|
000067c0  72 72 65 6e 74 20 70 6c  6f 74 74 69 6e 67 20 63  |rrent plotting c|
000067d0  6f 6c 6f 75 72 73 2e 0a  44 41 54 41 4c 01 00 00  |olours..DATAL...|
000067e0  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 43 6f 6e 76  |ColourTrans_Conv|
000067f0  65 72 74 52 47 42 54 6f  43 49 45 20 28 26 34 30  |ertRGBToCIE (&40|
00006800  37 35 35 29 0a 23 50 61  72 65 6e 74 20 43 6f 6c  |755).#Parent Col|
00006810  6f 75 72 54 72 61 6e 73  5f 0a 3d 3e 09 52 30 20  |ourTrans_.=>.R0 |
00006820  3d 09 3c 72 65 64 20 63  6f 6d 70 6f 6e 65 6e 74  |=.<red component|
00006830  3d 3e 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 66 69  |=>ColourTrans_fi|
00006840  78 65 64 70 6f 69 6e 74  3e 0a 09 52 31 20 3d 09  |xedpoint>..R1 =.|
00006850  3c 67 72 65 65 6e 20 63  6f 6d 70 6f 6e 65 6e 74  |<green component|
00006860  3d 3e 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 66 69  |=>ColourTrans_fi|
00006870  78 65 64 70 6f 69 6e 74  3e 0a 09 52 32 20 3d 09  |xedpoint>..R2 =.|
00006880  3c 72 65 64 20 63 6f 6d  70 6f 6e 65 6e 74 3d 3e  |<red component=>|
00006890  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 66 69 78 65  |ColourTrans_fixe|
000068a0  64 70 6f 69 6e 74 3e 0a  0a 3c 3d 09 52 30 20 3d  |dpoint>..<=.R0 =|
000068b0  09 43 49 45 20 78 20 76  61 6c 75 65 0a 09 52 31  |.CIE x value..R1|
000068c0  20 3d 09 43 49 45 20 79  20 76 61 6c 75 65 0a 09  | =.CIE y value..|
000068d0  52 32 20 3d 09 43 49 45  20 7a 20 76 61 6c 75 65  |R2 =.CIE z value|
000068e0  0a 0a 54 68 69 73 20 63  61 6c 6c 20 63 6f 6e 76  |..This call conv|
000068f0  65 72 74 73 20 74 68 65  20 63 6f 6c 6f 75 72 20  |erts the colour |
00006900  70 61 73 73 65 64 20 61  73 20 52 47 42 20 76 61  |passed as RGB va|
00006910  6c 75 65 73 20 74 6f 20  43 49 45 20 76 61 6c 75  |lues to CIE valu|
00006920  65 73 2e 0a 44 41 54 41  4c 01 00 00 43 6f 6c 6f  |es..DATAL...Colo|
00006930  75 72 54 72 61 6e 73 5f  43 6f 6e 76 65 72 74 43  |urTrans_ConvertC|
00006940  49 45 54 6f 52 47 42 20  28 26 34 30 37 35 36 29  |IEToRGB (&40756)|
00006950  0a 23 50 61 72 65 6e 74  20 43 6f 6c 6f 75 72 54  |.#Parent ColourT|
00006960  72 61 6e 73 5f 0a 3d 3e  09 52 30 20 3d 09 43 49  |rans_.=>.R0 =.CI|
00006970  45 20 78 20 76 61 6c 75  65 0a 09 52 31 20 3d 09  |E x value..R1 =.|
00006980  43 49 45 20 79 20 76 61  6c 75 65 0a 09 52 32 20  |CIE y value..R2 |
00006990  3d 09 43 49 45 20 7a 20  76 61 6c 75 65 0a 0a 3c  |=.CIE z value..<|
000069a0  3d 09 52 30 20 3d 09 3c  72 65 64 20 63 6f 6d 70  |=.R0 =.<red comp|
000069b0  6f 6e 65 6e 74 3d 3e 43  6f 6c 6f 75 72 54 72 61  |onent=>ColourTra|
000069c0  6e 73 5f 66 69 78 65 64  70 6f 69 6e 74 3e 0a 09  |ns_fixedpoint>..|
000069d0  52 31 20 3d 09 3c 67 72  65 65 6e 20 63 6f 6d 70  |R1 =.<green comp|
000069e0  6f 6e 65 6e 74 3d 3e 43  6f 6c 6f 75 72 54 72 61  |onent=>ColourTra|
000069f0  6e 73 5f 66 69 78 65 64  70 6f 69 6e 74 3e 0a 09  |ns_fixedpoint>..|
00006a00  52 32 20 3d 09 3c 72 65  64 20 63 6f 6d 70 6f 6e  |R2 =.<red compon|
00006a10  65 6e 74 3d 3e 43 6f 6c  6f 75 72 54 72 61 6e 73  |ent=>ColourTrans|
00006a20  5f 66 69 78 65 64 70 6f  69 6e 74 3e 0a 0a 54 68  |_fixedpoint>..Th|
00006a30  69 73 20 63 61 6c 6c 20  63 6f 6e 76 65 72 74 73  |is call converts|
00006a40  20 74 68 65 20 63 6f 6c  6f 75 72 20 70 61 73 73  | the colour pass|
00006a50  65 64 20 61 73 20 43 49  45 20 76 61 6c 75 65 73  |ed as CIE values|
00006a60  20 74 6f 20 52 47 42 20  76 61 6c 75 65 73 2e 0a  | to RGB values..|
00006a70  44 41 54 41 be 01 00 00  43 6f 6c 6f 75 72 54 72  |DATA....ColourTr|
00006a80  61 6e 73 5f 43 6f 6e 76  65 72 74 52 47 42 54 6f  |ans_ConvertRGBTo|
00006a90  48 53 56 20 28 26 34 30  37 35 38 29 0a 23 50 61  |HSV (&40758).#Pa|
00006aa0  72 65 6e 74 20 43 6f 6c  6f 75 72 54 72 61 6e 73  |rent ColourTrans|
00006ab0  5f 0a 3d 3e 09 52 30 20  3d 09 3c 72 65 64 20 63  |_.=>.R0 =.<red c|
00006ac0  6f 6d 70 6f 6e 65 6e 74  3d 3e 43 6f 6c 6f 75 72  |omponent=>Colour|
00006ad0  54 72 61 6e 73 5f 66 69  78 65 64 70 6f 69 6e 74  |Trans_fixedpoint|
00006ae0  3e 0a 09 52 31 20 3d 09  3c 67 72 65 65 6e 20 63  |>..R1 =.<green c|
00006af0  6f 6d 70 6f 6e 65 6e 74  3d 3e 43 6f 6c 6f 75 72  |omponent=>Colour|
00006b00  54 72 61 6e 73 5f 66 69  78 65 64 70 6f 69 6e 74  |Trans_fixedpoint|
00006b10  3e 0a 09 52 32 20 3d 09  3c 72 65 64 20 63 6f 6d  |>..R2 =.<red com|
00006b20  70 6f 6e 65 6e 74 3d 3e  43 6f 6c 6f 75 72 54 72  |ponent=>ColourTr|
00006b30  61 6e 73 5f 66 69 78 65  64 70 6f 69 6e 74 3e 0a  |ans_fixedpoint>.|
00006b40  0a 3c 3d 09 52 30 20 3d  09 3c 68 75 65 2c 20 30  |.<=.R0 =.<hue, 0|
00006b50  20 74 6f 20 33 36 30 3d  3e 43 6f 6c 6f 75 72 54  | to 360=>ColourT|
00006b60  72 61 6e 73 5f 66 69 78  65 64 70 6f 69 6e 74 3e  |rans_fixedpoint>|
00006b70  0a 09 52 31 20 3d 09 3c  73 61 74 75 72 61 74 69  |..R1 =.<saturati|
00006b80  6f 6e 3d 3e 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |on=>ColourTrans_|
00006b90  66 69 78 65 64 70 6f 69  6e 74 3e 0a 09 52 32 20  |fixedpoint>..R2 |
00006ba0  3d 09 3c 76 61 6c 75 65  3d 3e 43 6f 6c 6f 75 72  |=.<value=>Colour|
00006bb0  54 72 61 6e 73 5f 66 69  78 65 64 70 6f 69 6e 74  |Trans_fixedpoint|
00006bc0  3e 0a 0a 54 68 69 73 20  63 61 6c 6c 20 63 6f 6e  |>..This call con|
00006bd0  76 65 72 74 73 20 74 68  65 20 63 6f 6c 6f 75 72  |verts the colour|
00006be0  20 70 61 73 73 65 64 20  61 73 20 52 47 42 20 76  | passed as RGB v|
00006bf0  61 6c 75 65 73 20 74 6f  20 48 53 56 20 76 61 6c  |alues to HSV val|
00006c00  75 65 73 2e 20 48 75 65  20 69 73 20 75 6e 64 65  |ues. Hue is unde|
00006c10  66 69 6e 65 64 20 66 6f  72 20 61 63 68 72 6f 6d  |fined for achrom|
00006c20  61 74 69 63 20 63 6f 6c  6f 75 72 73 2e 0a 00 00  |atic colours....|
00006c30  44 41 54 41 ca 01 00 00  43 6f 6c 6f 75 72 54 72  |DATA....ColourTr|
00006c40  61 6e 73 5f 43 6f 6e 76  65 72 74 48 53 56 54 6f  |ans_ConvertHSVTo|
00006c50  52 47 42 20 28 26 34 30  37 35 39 29 0a 23 50 61  |RGB (&40759).#Pa|
00006c60  72 65 6e 74 20 43 6f 6c  6f 75 72 54 72 61 6e 73  |rent ColourTrans|
00006c70  5f 0a 3d 3e 09 52 30 20  3d 09 3c 68 75 65 2c 20  |_.=>.R0 =.<hue, |
00006c80  30 20 74 6f 20 33 36 30  3d 3e 43 6f 6c 6f 75 72  |0 to 360=>Colour|
00006c90  54 72 61 6e 73 5f 66 69  78 65 64 70 6f 69 6e 74  |Trans_fixedpoint|
00006ca0  3e 0a 09 52 31 20 3d 09  3c 73 61 74 75 72 61 74  |>..R1 =.<saturat|
00006cb0  69 6f 6e 3d 3e 43 6f 6c  6f 75 72 54 72 61 6e 73  |ion=>ColourTrans|
00006cc0  5f 66 69 78 65 64 70 6f  69 6e 74 3e 0a 09 52 32  |_fixedpoint>..R2|
00006cd0  20 3d 09 3c 76 61 6c 75  65 3d 3e 43 6f 6c 6f 75  | =.<value=>Colou|
00006ce0  72 54 72 61 6e 73 5f 66  69 78 65 64 70 6f 69 6e  |rTrans_fixedpoin|
00006cf0  74 3e 0a 0a 3c 3d 09 52  30 20 3d 09 3c 72 65 64  |t>..<=.R0 =.<red|
00006d00  20 63 6f 6d 70 6f 6e 65  6e 74 3d 3e 43 6f 6c 6f  | component=>Colo|
00006d10  75 72 54 72 61 6e 73 5f  66 69 78 65 64 70 6f 69  |urTrans_fixedpoi|
00006d20  6e 74 3e 0a 09 52 31 20  3d 09 3c 67 72 65 65 6e  |nt>..R1 =.<green|
00006d30  20 63 6f 6d 70 6f 6e 65  6e 74 3d 3e 43 6f 6c 6f  | component=>Colo|
00006d40  75 72 54 72 61 6e 73 5f  66 69 78 65 64 70 6f 69  |urTrans_fixedpoi|
00006d50  6e 74 3e 0a 09 52 32 20  3d 09 3c 72 65 64 20 63  |nt>..R2 =.<red c|
00006d60  6f 6d 70 6f 6e 65 6e 74  3d 3e 43 6f 6c 6f 75 72  |omponent=>Colour|
00006d70  54 72 61 6e 73 5f 66 69  78 65 64 70 6f 69 6e 74  |Trans_fixedpoint|
00006d80  3e 0a 0a 54 68 69 73 20  63 61 6c 6c 20 63 6f 6e  |>..This call con|
00006d90  76 65 72 74 73 20 74 68  65 20 63 6f 6c 6f 75 72  |verts the colour|
00006da0  20 70 61 73 73 65 64 20  61 73 20 48 53 56 20 76  | passed as HSV v|
00006db0  61 6c 75 65 73 20 74 6f  20 52 47 42 20 76 61 6c  |alues to RGB val|
00006dc0  75 65 73 2e 20 49 74 20  77 69 6c 6c 20 67 65 6e  |ues. It will gen|
00006dd0  65 72 61 74 65 20 61 6e  20 65 72 72 6f 72 20 66  |erate an error f|
00006de0  6f 72 20 68 75 65 20 3d  20 73 74 61 74 75 72 61  |or hue = statura|
00006df0  74 69 6f 6e 20 3d 20 30  2e 0a 00 00 44 41 54 41  |tion = 0....DATA|
00006e00  d8 01 00 00 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |....ColourTrans_|
00006e10  43 6f 6e 76 65 72 74 52  47 42 54 6f 43 4d 59 4b  |ConvertRGBToCMYK|
00006e20  20 28 26 34 30 37 35 41  29 0a 23 50 61 72 65 6e  | (&4075A).#Paren|
00006e30  74 20 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 0a 3d  |t ColourTrans_.=|
00006e40  3e 09 52 30 20 3d 09 3c  72 65 64 20 63 6f 6d 70  |>.R0 =.<red comp|
00006e50  6f 6e 65 6e 74 3d 3e 43  6f 6c 6f 75 72 54 72 61  |onent=>ColourTra|
00006e60  6e 73 5f 66 69 78 65 64  70 6f 69 6e 74 3e 0a 09  |ns_fixedpoint>..|
00006e70  52 31 20 3d 09 3c 67 72  65 65 6e 20 63 6f 6d 70  |R1 =.<green comp|
00006e80  6f 6e 65 6e 74 3d 3e 43  6f 6c 6f 75 72 54 72 61  |onent=>ColourTra|
00006e90  6e 73 5f 66 69 78 65 64  70 6f 69 6e 74 3e 0a 09  |ns_fixedpoint>..|
00006ea0  52 32 20 3d 09 3c 72 65  64 20 63 6f 6d 70 6f 6e  |R2 =.<red compon|
00006eb0  65 6e 74 3d 3e 43 6f 6c  6f 75 72 54 72 61 6e 73  |ent=>ColourTrans|
00006ec0  5f 66 69 78 65 64 70 6f  69 6e 74 3e 0a 0a 3c 3d  |_fixedpoint>..<=|
00006ed0  09 52 30 20 3d 09 3c 63  79 61 6e 20 63 6f 6d 70  |.R0 =.<cyan comp|
00006ee0  6f 6e 65 6e 74 3d 3e 43  6f 6c 6f 75 72 54 72 61  |onent=>ColourTra|
00006ef0  6e 73 5f 66 69 78 65 64  70 6f 69 6e 74 3e 0a 09  |ns_fixedpoint>..|
00006f00  52 31 20 3d 09 3c 6d 61  67 65 6e 74 61 20 63 6f  |R1 =.<magenta co|
00006f10  6d 70 6f 6e 65 6e 74 3d  3e 43 6f 6c 6f 75 72 54  |mponent=>ColourT|
00006f20  72 61 6e 73 5f 66 69 78  65 64 70 6f 69 6e 74 3e  |rans_fixedpoint>|
00006f30  0a 09 52 32 20 3d 09 3c  79 65 6c 6c 6f 77 20 63  |..R2 =.<yellow c|
00006f40  6f 6d 70 6f 6e 65 6e 74  3d 3e 43 6f 6c 6f 75 72  |omponent=>Colour|
00006f50  54 72 61 6e 73 5f 66 69  78 65 64 70 6f 69 6e 74  |Trans_fixedpoint|
00006f60  3e 0a 09 52 33 20 3d 09  3c 6b 65 79 20 63 6f 6d  |>..R3 =.<key com|
00006f70  70 6f 6e 65 6e 74 3d 3e  43 6f 6c 6f 75 72 54 72  |ponent=>ColourTr|
00006f80  61 6e 73 5f 66 69 78 65  64 70 6f 69 6e 74 3e 0a  |ans_fixedpoint>.|
00006f90  0a 54 68 69 73 20 63 61  6c 6c 20 63 6f 6e 76 65  |.This call conve|
00006fa0  72 74 73 20 74 68 65 20  63 6f 6c 6f 75 72 20 70  |rts the colour p|
00006fb0  61 73 73 65 64 20 61 73  20 52 47 42 20 76 61 6c  |assed as RGB val|
00006fc0  75 65 73 20 74 6f 20 43  4d 59 4b 20 76 61 6c 75  |ues to CMYK valu|
00006fd0  65 73 2e 0a 44 41 54 41  d8 01 00 00 43 6f 6c 6f  |es..DATA....Colo|
00006fe0  75 72 54 72 61 6e 73 5f  43 6f 6e 76 65 72 74 43  |urTrans_ConvertC|
00006ff0  4d 59 4b 54 6f 52 47 42  20 28 26 34 30 37 35 42  |MYKToRGB (&4075B|
00007000  29 0a 23 50 61 72 65 6e  74 20 43 6f 6c 6f 75 72  |).#Parent Colour|
00007010  54 72 61 6e 73 5f 0a 3d  3e 09 52 30 20 3d 09 3c  |Trans_.=>.R0 =.<|
00007020  63 79 61 6e 20 63 6f 6d  70 6f 6e 65 6e 74 3d 3e  |cyan component=>|
00007030  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 66 69 78 65  |ColourTrans_fixe|
00007040  64 70 6f 69 6e 74 3e 0a  09 52 31 20 3d 09 3c 6d  |dpoint>..R1 =.<m|
00007050  61 67 65 6e 74 61 20 63  6f 6d 70 6f 6e 65 6e 74  |agenta component|
00007060  3d 3e 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 66 69  |=>ColourTrans_fi|
00007070  78 65 64 70 6f 69 6e 74  3e 0a 09 52 32 20 3d 09  |xedpoint>..R2 =.|
00007080  3c 79 65 6c 6c 6f 77 20  63 6f 6d 70 6f 6e 65 6e  |<yellow componen|
00007090  74 3d 3e 43 6f 6c 6f 75  72 54 72 61 6e 73 5f 66  |t=>ColourTrans_f|
000070a0  69 78 65 64 70 6f 69 6e  74 3e 0a 09 52 33 20 3d  |ixedpoint>..R3 =|
000070b0  09 3c 6b 65 79 20 63 6f  6d 70 6f 6e 65 6e 74 3d  |.<key component=|
000070c0  3e 43 6f 6c 6f 75 72 54  72 61 6e 73 5f 66 69 78  |>ColourTrans_fix|
000070d0  65 64 70 6f 69 6e 74 3e  0a 0a 3c 3d 09 52 30 20  |edpoint>..<=.R0 |
000070e0  3d 09 3c 72 65 64 20 63  6f 6d 70 6f 6e 65 6e 74  |=.<red component|
000070f0  3d 3e 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 66 69  |=>ColourTrans_fi|
00007100  78 65 64 70 6f 69 6e 74  3e 0a 09 52 31 20 3d 09  |xedpoint>..R1 =.|
00007110  3c 67 72 65 65 6e 20 63  6f 6d 70 6f 6e 65 6e 74  |<green component|
00007120  3d 3e 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 66 69  |=>ColourTrans_fi|
00007130  78 65 64 70 6f 69 6e 74  3e 0a 09 52 32 20 3d 09  |xedpoint>..R2 =.|
00007140  3c 72 65 64 20 63 6f 6d  70 6f 6e 65 6e 74 3d 3e  |<red component=>|
00007150  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 66 69 78 65  |ColourTrans_fixe|
00007160  64 70 6f 69 6e 74 3e 0a  0a 54 68 69 73 20 63 61  |dpoint>..This ca|
00007170  6c 6c 20 63 6f 6e 76 65  72 74 73 20 74 68 65 20  |ll converts the |
00007180  63 6f 6c 6f 75 72 20 70  61 73 73 65 64 20 61 73  |colour passed as|
00007190  20 43 4d 59 4b 20 76 61  6c 75 65 73 20 74 6f 20  | CMYK values to |
000071a0  52 47 42 20 76 61 6c 75  65 73 2e 0a 44 41 54 41  |RGB values..DATA|
000071b0  c5 00 00 00 43 6f 6c 6f  75 72 54 72 61 6e 73 20  |....ColourTrans |
000071c0  66 69 78 65 64 20 70 6f  69 6e 74 20 76 61 6c 75  |fixed point valu|
000071d0  65 73 0a 23 50 61 72 65  6e 74 20 43 6f 6c 6f 75  |es.#Parent Colou|
000071e0  72 54 72 61 6e 73 5f 0a  56 61 6c 75 65 73 20 70  |rTrans_.Values p|
000071f0  61 73 73 65 64 20 61 73  20 66 69 78 65 64 20 70  |assed as fixed p|
00007200  6f 69 6e 74 20 6e 75 6d  62 65 72 73 20 68 61 76  |oint numbers hav|
00007210  65 20 74 68 65 20 70 6f  69 6e 74 20 62 65 74 77  |e the point betw|
00007220  65 65 6e 20 62 69 74 73  20 31 35 20 61 6e 64 20  |een bits 15 and |
00007230  31 36 2c a0 73 6f 20 31  20 69 73 20 26 31 30 30  |16,.so 1 is &100|
00007240  30 30 2c 20 30 2e 30 31  20 69 73 20 61 72 6f 75  |00, 0.01 is arou|
00007250  6e 64 20 26 32 38 46 20  61 6e 64 20 30 2e 31 20  |nd &28F and 0.1 |
00007260  69 73 20 61 72 6f 75 6e  64 20 26 31 39 39 39 2e  |is around &1999.|
00007270  0a 00 00 00 44 41 54 41  dd 05 00 00 43 6f 6c 6f  |....DATA....Colo|
00007280  75 72 54 72 61 6e 73 20  63 61 6c 69 62 72 61 74  |urTrans calibrat|
00007290  69 6f 6e 20 74 61 62 6c  65 73 0a 23 50 61 72 65  |ion tables.#Pare|
000072a0  6e 74 20 43 6f 6c 6f 75  72 54 72 61 6e 73 5f 0a  |nt ColourTrans_.|
000072b0  23 20 50 52 4d 20 33 2d  33 34 32 0a 54 61 62 6c  |# PRM 3-342.Tabl|
000072c0  65 73 20 61 72 65 20 73  70 65 63 69 66 69 65 64  |es are specified|
000072d0  20 61 73 0a 0a 53 69 7a  65 09 43 6f 6e 74 65 6e  | as..Size.Conten|
000072e0  74 0a 23 4c 69 6e 65 0a  34 09 6e 75 6d 62 65 72  |t.#Line.4.number|
000072f0  20 6f 66 20 65 6e 74 72  69 65 73 20 66 6f 72 20  | of entries for |
00007300  63 6f 6d 70 6f 6e 65 6e  74 20 6f 6e 65 0a 34 09  |component one.4.|
00007310  6e 75 6d 62 65 72 20 6f  66 20 65 6e 74 72 69 65  |number of entrie|
00007320  73 20 66 6f 72 20 63 6f  6d 70 6f 6e 65 6e 74 20  |s for component |
00007330  74 77 6f 0a 34 09 6e 75  6d 62 65 72 20 6f 66 20  |two.4.number of |
00007340  65 6e 74 72 69 65 73 20  66 6f 72 20 63 6f 6d 70  |entries for comp|
00007350  6f 6e 65 6e 74 20 74 68  72 65 65 0a 6e 75 6d 62  |onent three.numb|
00007360  65 72 20 2a 20 34 09 65  6e 74 72 69 65 73 20 66  |er * 4.entries f|
00007370  6f 72 20 63 6f 6d 70 6f  6e 65 6e 74 20 6f 6e 65  |or component one|
00007380  20 28 69 6e 20 61 73 63  65 6e 64 69 6e 67 20 64  | (in ascending d|
00007390  65 76 69 63 65 20 63 6f  6d 70 6f 6e 65 6e 74 20  |evice component |
000073a0  6f 72 64 65 72 29 0a 6e  75 6d 62 65 72 20 2a 20  |order).number * |
000073b0  34 09 65 6e 74 72 69 65  73 20 66 6f 72 20 63 6f  |4.entries for co|
000073c0  6d 70 6f 6e 65 6e 74 20  74 77 6f 0a 6e 75 6d 62  |mponent two.numb|
000073d0  65 72 20 2a 20 34 09 65  6e 74 72 69 65 73 20 66  |er * 4.entries f|
000073e0  6f 72 20 63 6f 6d 70 6f  6e 65 6e 74 20 74 68 72  |or component thr|
000073f0  65 65 0a 23 54 61 62 0a  0a 41 6e 20 65 6e 74 72  |ee.#Tab..An entr|
00007400  79 20 69 73 20 70 61 63  6b 65 64 20 69 6e 20 74  |y is packed in t|
00007410  68 65 20 66 6f 72 6d 0a  0a 09 26 42 42 47 47 52  |he form...&BBGGR|
00007420  52 44 44 0a 0a 77 68 65  72 65 09 26 42 42 47 47  |RDD..where.&BBGG|
00007430  52 52 09 69 73 20 74 68  65 20 22 73 74 61 6e 64  |RR.is the "stand|
00007440  61 72 64 22 20 63 6f 6c  6f 75 72 20 66 6f 72 0a  |ard" colour for.|
00007450  65 69 74 68 65 72 09 26  30 30 30 30 44 44 09 64  |either.&0000DD.d|
00007460  65 76 69 63 65 20 63 6f  6d 70 6f 6e 65 6e 74 20  |evice component |
00007470  6f 6e 65 0a 6f 72 09 26  30 30 44 44 30 30 09 64  |one.or.&00DD00.d|
00007480  65 76 69 63 65 20 63 6f  6d 70 6f 6e 65 6e 74 20  |evice component |
00007490  74 77 6f 0a 6f 72 09 26  44 44 30 30 30 30 09 64  |two.or.&DD0000.d|
000074a0  65 76 69 63 65 20 63 6f  6d 70 6f 6e 65 6e 74 20  |evice component |
000074b0  74 68 72 65 65 0a 0a 28  7b 2f 7d 69 2e 65 2e 7b  |three..({/}i.e.{|
000074c0  2f 7d 20 74 68 65 20 74  61 62 6c 65 20 67 69 76  |/} the table giv|
000074d0  65 73 20 61 20 6d 61 70  70 69 6e 67 20 66 6f 72  |es a mapping for|
000074e0  20 61 20 73 69 6e 67 6c  65 20 70 75 72 65 20 64  | a single pure d|
000074f0  65 76 69 63 65 20 63 6f  6d 70 6f 6e 65 6e 74 20  |evice component |
00007500  74 6f 20 74 68 65 20 73  74 61 6e 64 61 72 64 20  |to the standard |
00007510  52 47 42 20 63 6f 6c 6f  75 72 29 0a 0a 23 54 61  |RGB colour)..#Ta|
00007520  62 0a 54 6f 20 63 6f 6e  76 65 72 74 20 61 20 64  |b.To convert a d|
00007530  65 76 69 63 65 20 63 6f  6c 6f 75 72 20 69 6e 74  |evice colour int|
00007540  6f 20 61 20 73 74 61 6e  64 61 72 64 20 63 6f 6c  |o a standard col|
00007550  6f 75 72 20 43 6f 6c 6f  75 72 54 72 61 6e 73 0a  |our ColourTrans.|
00007560  8f 09 73 70 6c 69 74 73  20 74 68 65 20 64 65 76  |..splits the dev|
00007570  69 63 65 20 63 6f 6c 6f  75 72 20 69 6e 74 6f 20  |ice colour into |
00007580  69 74 73 20 33 20 63 6f  6d 70 6f 6e 65 6e 74 73  |its 3 components|
00007590  0a 8f 09 6c 6f 6f 6b 73  20 75 70 20 65 61 63 68  |...looks up each|
000075a0  20 63 6f 6d 70 6f 6e 65  6e 74 20 69 6e 20 74 68  | component in th|
000075b0  65 20 63 61 6c 69 62 72  61 74 69 6f 6e 20 74 61  |e calibration ta|
000075c0  62 6c 65 0a 8f 09 66 6f  72 20 65 6e 74 72 69 65  |ble...for entrie|
000075d0  73 20 6e 6f 74 20 69 6e  20 74 68 65 20 74 61 62  |s not in the tab|
000075e0  6c 65 20 70 65 72 66 6f  72 6d 73 20 6c 69 6e 65  |le performs line|
000075f0  61 72 20 69 6e 74 65 72  70 6f 6c 61 74 69 6f 6e  |ar interpolation|
00007600  20 6f 6e 20 74 68 65 20  74 77 6f 20 62 6f 75 6e  | on the two boun|
00007610  64 69 6e 67 20 76 61 6c  75 65 73 0a 8f 09 73 75  |ding values...su|
00007620  6d 73 20 74 68 65 20 33  20 73 74 61 6e 64 61 72  |ms the 3 standar|
00007630  64 20 63 6f 6c 6f 75 72  73 20 64 65 72 69 76 65  |d colours derive|
00007640  64 20 66 72 6f 6d 20 65  61 63 68 20 6f 66 20 74  |d from each of t|
00007650  68 65 20 33 20 63 6f 6d  70 6f 6e 65 6e 74 73 0a  |he 3 components.|
00007660  0a 23 54 61 62 0a 0a 46  6f 72 20 61 6e 20 69 6e  |.#Tab..For an in|
00007670  74 65 72 65 73 74 69 6e  67 20 65 66 66 65 63 74  |teresting effect|
00007680  20 74 72 79 20 74 68 65  20 74 61 62 6c 65 0a 0a  | try the table..|
00007690  26 30 30 30 30 30 30 30  32 0a 26 30 30 30 30 30  |&00000002.&00000|
000076a0  30 30 32 0a 26 30 30 30  30 30 30 30 32 0a 26 30  |002.&00000002.&0|
000076b0  30 30 30 30 30 30 30 0a  26 37 46 37 46 30 30 46  |0000000.&7F7F00F|
000076c0  46 0a 26 30 30 30 30 30  30 30 30 0a 26 37 46 30  |F.&00000000.&7F0|
000076d0  30 37 46 46 46 0a 26 30  30 30 30 30 30 30 30 0a  |07FFF.&00000000.|
000076e0  26 30 30 37 46 37 46 46  46 0a 0a 4e 6f 72 6d 61  |&007F7FFF..Norma|
000076f0  6c 69 74 79 20 63 61 6e  20 62 65 20 72 65 73 74  |lity can be rest|
00007700  6f 72 65 64 20 77 69 74  68 0a 0a 26 30 30 30 30  |ored with..&0000|
00007710  30 30 30 32 0a 26 30 30  30 30 30 30 30 32 0a 26  |0002.&00000002.&|
00007720  30 30 30 30 30 30 30 32  0a 26 30 30 30 30 30 30  |00000002.&000000|
00007730  30 30 0a 26 30 30 30 30  46 46 46 46 0a 26 30 30  |00.&0000FFFF.&00|
00007740  30 30 30 30 30 30 0a 26  30 30 46 46 30 30 46 46  |000000.&00FF00FF|
00007750  0a 26 30 30 30 30 30 30  30 30 0a 26 46 46 30 30  |.&00000000.&FF00|
00007760  30 30 46 46 0a 0a 6f 72  20 62 79 20 70 61 73 73  |00FF..or by pass|
00007770  69 6e 67 20 61 6e 20 69  6e 76 61 6c 69 64 20 74  |ing an invalid t|
00007780  61 62 6c 65 20 74 6f 20  3c 43 6f 6c 6f 75 72 54  |able to <ColourT|
00007790  72 61 6e 73 5f 53 65 74  43 61 6c 69 62 72 61 74  |rans_SetCalibrat|
000077a0  69 6f 6e 3e 2c 20 67 65  6e 65 72 61 74 69 6e 67  |ion>, generating|
000077b0  20 61 6e 20 65 72 72 6f  72 20 61 6e 64 20 72 65  | an error and re|
000077c0  73 74 6f 72 69 6e 67 20  74 68 65 20 64 65 66 61  |storing the defa|
000077d0  75 6c 74 20 63 61 6c 69  62 72 61 72 74 69 6f 6e  |ult calibrartion|
000077e0  2e 0a 0a 54 68 65 20 64  65 66 61 75 6c 74 20 63  |...The default c|
000077f0  61 6c 69 62 72 61 74 69  6f 6e 20 66 6f 72 20 74  |alibration for t|
00007800  68 65 20 73 63 72 65 65  6e 20 69 73 20 6c 69 6e  |he screen is lin|
00007810  65 61 72 20 2d 20 73 63  72 65 65 6e 20 64 65 76  |ear - screen dev|
00007820  69 63 65 20 63 6f 6c 6f  75 72 73 20 61 72 65 20  |ice colours are |
00007830  61 73 73 75 6d 65 64 20  74 6f 20 62 65 20 73 74  |assumed to be st|
00007840  61 6e 64 61 72 64 20 63  6f 6c 6f 75 72 73 2e 0a  |andard colours..|
00007850  0a 00 00 00 44 41 54 41  30 01 00 00 43 6f 6c 6f  |....DATA0...Colo|
00007860  75 72 54 72 61 6e 73 5f  43 6f 6e 76 65 72 74 44  |urTrans_ConvertD|
00007870  65 76 69 63 65 43 6f 6c  6f 75 72 20 20 28 26 34  |eviceColour  (&4|
00007880  30 37 35 33 29 0a 23 50  61 72 65 6e 74 20 43 6f  |0753).#Parent Co|
00007890  6c 6f 75 72 54 72 61 6e  73 5f 0a 3d 3e 09 52 30  |lourTrans_.=>.R0|
000078a0  20 3d 09 64 65 76 69 63  65 20 63 6f 6c 6f 75 72  | =.device colour|
000078b0  20 28 26 42 42 47 47 52  52 30 30 29 0a 09 52 31  | (&BBGGRR00)..R1|
000078c0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 3c 63  | =.pointer to <c|
000078d0  61 6c 69 62 72 61 74 69  6f 6e 20 74 61 62 6c 65  |alibration table|
000078e0  3d 3e 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 63 61  |=>ColourTrans_ca|
000078f0  6c 69 62 72 61 74 69 6f  6e 74 61 62 6c 65 3e 2c  |librationtable>,|
00007900  20 6f 72 20 30 20 74 6f  20 75 73 65 20 63 75 72  | or 0 to use cur|
00007910  72 65 6e 74 20 73 63 72  65 65 6e 20 63 61 6c 69  |rent screen cali|
00007920  62 72 61 74 69 6f 6e 0a  3c 3d 09 52 32 20 3d 09  |bration.<=.R2 =.|
00007930  73 74 61 6e 64 61 72 64  20 63 6f 6c 6f 75 72 20  |standard colour |
00007940  28 26 42 42 47 47 52 52  30 30 29 0a 0a 54 68 69  |(&BBGGRR00)..Thi|
00007950  73 20 53 57 49 20 63 6f  6e 76 65 72 74 73 20 61  |s SWI converts a|
00007960  20 64 65 76 69 63 65 20  63 6f 6c 6f 75 72 20 74  | device colour t|
00007970  6f 20 61 20 73 74 61 6e  64 61 72 64 20 63 6f 6c  |o a standard col|
00007980  6f 75 72 2e 44 41 54 41  b7 01 00 00 43 6f 6c 6f  |our.DATA....Colo|
00007990  75 72 54 72 61 6e 73 5f  43 6f 6e 76 65 72 74 44  |urTrans_ConvertD|
000079a0  65 76 69 63 65 50 61 6c  65 74 74 65 20 20 28 26  |evicePalette  (&|
000079b0  34 30 37 35 34 29 0a 23  50 61 72 65 6e 74 20 43  |40754).#Parent C|
000079c0  6f 6c 6f 75 72 54 72 61  6e 73 5f 0a 3d 3e 09 52  |olourTrans_.=>.R|
000079d0  30 20 3d 09 6e 75 6d 62  65 72 20 6f 66 20 63 6f  |0 =.number of co|
000079e0  6c 6f 75 72 73 20 74 6f  20 63 6f 6e 76 65 72 74  |lours to convert|
000079f0  0a 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
00007a00  6f 20 74 61 62 6c 65 20  6f 66 20 64 65 76 69 63  |o table of devic|
00007a10  65 20 63 6f 6c 6f 75 72  73 20 28 69 6e 20 74 68  |e colours (in th|
00007a20  65 20 66 6f 72 6d 20 26  42 42 47 47 52 52 30 30  |e form &BBGGRR00|
00007a30  29 0a 09 52 32 20 3d 09  70 6f 69 6e 74 65 72 20  |)..R2 =.pointer |
00007a40  74 6f 20 74 61 62 6c 65  20 77 72 69 74 65 20 73  |to table write s|
00007a50  74 61 6e 64 61 72 64 20  63 6f 6c 6f 75 72 73 20  |tandard colours |
00007a60  28 69 6e 20 74 68 65 20  66 6f 72 6d 20 26 42 42  |(in the form &BB|
00007a70  47 47 52 52 30 30 29 0a  09 52 33 20 3d 09 70 6f  |GGRR00)..R3 =.po|
00007a80  69 6e 74 65 72 20 74 6f  20 3c 63 61 6c 69 62 72  |inter to <calibr|
00007a90  61 74 69 6f 6e 20 74 61  62 6c 65 3d 3e 43 6f 6c  |ation table=>Col|
00007aa0  6f 75 72 54 72 61 6e 73  5f 63 61 6c 69 62 72 61  |ourTrans_calibra|
00007ab0  74 69 6f 6e 74 61 62 6c  65 3e 2c 20 6f 72 20 30  |tiontable>, or 0|
00007ac0  20 74 6f 20 75 73 65 20  63 75 72 72 65 6e 74 20  | to use current |
00007ad0  73 63 72 65 65 6e 20 63  61 6c 69 62 72 61 74 69  |screen calibrati|
00007ae0  6f 6e 0a 3c 3d 09 52 30  20 2d 20 52 33 20 70 72  |on.<=.R0 - R3 pr|
00007af0  65 73 65 72 76 65 64 0a  0a 54 68 69 73 20 53 57  |eserved..This SW|
00007b00  49 20 63 6f 6e 76 65 72  74 73 20 61 20 74 61 62  |I converts a tab|
00007b10  6c 65 20 6f 66 20 64 65  76 69 63 65 20 63 6f 6c  |le of device col|
00007b20  6f 75 72 73 20 74 6f 20  61 20 73 74 61 6e 64 61  |ours to a standa|
00007b30  72 64 20 63 6f 6c 6f 75  72 73 2e 00 44 41 54 41  |rd colours..DATA|
00007b40  9e 00 00 00 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |....ColourTrans_|
00007b50  47 65 6e 65 72 61 74 65  54 61 62 6c 65 20 28 26  |GenerateTable (&|
00007b60  34 30 37 36 33 29 0a 23  50 61 72 65 6e 74 20 43  |40763).#Parent C|
00007b70  6f 6c 6f 75 72 54 72 61  6e 73 5f 0a 49 64 65 6e  |olourTrans_.Iden|
00007b80  74 69 63 61 6c 20 74 6f  20 3c 43 6f 6c 6f 75 72  |tical to <Colour|
00007b90  54 72 61 6e 73 5f 53 65  6c 65 63 74 54 61 62 6c  |Trans_SelectTabl|
00007ba0  65 3e 2c 20 65 78 63 65  70 74 20 74 68 61 74 20  |e>, except that |
00007bb0  69 74 20 61 6c 77 61 79  73 20 61 73 73 75 6d 65  |it always assume|
00007bc0  73 20 52 35 20 63 6f 6e  74 61 69 6e 73 20 76 61  |s R5 contains va|
00007bd0  6c 69 64 20 66 6c 61 67  73 2e 00 00 44 41 54 41  |lid flags...DATA|
00007be0  50 00 00 00 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |P...ColourTrans_|
00007bf0  4d 69 73 63 4f 70 20 20  28 26 34 30 37 35 46 29  |MiscOp  (&4075F)|
00007c00  0a 23 50 61 72 65 6e 74  20 43 6f 6c 6f 75 72 54  |.#Parent ColourT|
00007c10  72 61 6e 73 5f 0a 46 6f  72 20 69 6e 74 65 72 6e  |rans_.For intern|
00007c20  61 6c 20 75 73 65 20 6f  6e 6c 79 2e 44 41 54 41  |al use only.DATA|
00007c30  41 01 00 00 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |A...ColourTrans_|
00007c40  52 65 61 64 43 61 6c 69  62 72 61 74 69 6f 6e 20  |ReadCalibration |
00007c50  20 28 26 34 30 37 35 32  29 0a 23 50 61 72 65 6e  | (&40752).#Paren|
00007c60  74 20 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 0a 3d  |t ColourTrans_.=|
00007c70  3e 09 52 30 20 3d 09 70  6f 69 6e 74 65 72 20 74  |>.R0 =.pointer t|
00007c80  6f 20 62 75 66 66 65 72  20 28 30 20 74 6f 20 72  |o buffer (0 to r|
00007c90  65 61 64 20 73 69 7a 65  20 6f 66 20 62 75 66 66  |ead size of buff|
00007ca0  65 72 29 0a 3c 3d 09 52  30 20 70 72 65 73 65 72  |er).<=.R0 preser|
00007cb0  76 65 64 0a 09 52 31 20  3d 09 73 69 7a 65 20 6f  |ved..R1 =.size o|
00007cc0  66 20 74 61 62 6c 65 20  69 66 20 52 30 20 3d 20  |f table if R0 = |
00007cd0  30 20 6f 6e 20 65 6e 74  72 79 2c 20 65 6c 73 65  |0 on entry, else|
00007ce0  20 70 72 65 73 65 72 76  65 64 0a 0a 43 6f 70 69  | preserved..Copi|
00007cf0  65 73 20 74 68 65 20 73  63 72 65 65 6e 20 3c 63  |es the screen <c|
00007d00  61 6c 69 62 72 61 74 69  6f 6e 20 74 61 62 6c 65  |alibration table|
00007d10  3d 3e 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 63 61  |=>ColourTrans_ca|
00007d20  6c 69 62 72 61 74 69 6f  6e 74 61 62 6c 65 3e 20  |librationtable> |
00007d30  69 6e 74 6f 20 74 68 65  20 73 70 65 63 69 66 69  |into the specifi|
00007d40  65 64 20 62 75 66 66 65  72 2e 20 54 68 65 20 64  |ed buffer. The d|
00007d50  65 66 61 75 6c 74 20 74  61 62 6c 65 20 68 61 73  |efault table has|
00007d60  20 61 20 73 69 7a 65 20  6f 66 20 30 2e 00 00 00  | a size of 0....|
00007d70  44 41 54 41 cf 03 00 00  43 6f 6c 6f 75 72 54 72  |DATA....ColourTr|
00007d80  61 6e 73 5f 52 65 61 64  50 61 6c 65 74 74 65 20  |ans_ReadPalette |
00007d90  28 26 34 30 37 35 43 29  0a 23 50 61 72 65 6e 74  |(&4075C).#Parent|
00007da0  20 43 6f 6c 6f 75 72 54  72 61 6e 73 5f 0a 3d 3e  | ColourTrans_.=>|
00007db0  09 52 30 20 3d 09 2d 31  20 66 6f 72 20 63 75 72  |.R0 =.-1 for cur|
00007dc0  72 65 6e 74 20 6d 6f 64  65 0a 09 20 09 28 69 66  |rent mode.. .(if|
00007dd0  20 5c 3c 20 32 35 36 29  09 73 6f 75 72 63 65 20  | \< 256).source |
00007de0  6d 6f 64 65 0a 09 20 09  28 69 66 20 3e 3d 20 32  |mode.. .(if >= 2|
00007df0  35 36 29 09 70 6f 69 6e  74 65 72 20 74 6f 20 73  |56).pointer to s|
00007e00  70 72 69 74 65 20 61 72  65 61 0a 09 52 31 20 3d  |prite area..R1 =|
00007e10  09 28 69 66 20 52 30 20  5c 3c 20 32 35 36 29 09  |.(if R0 \< 256).|
00007e20  73 6f 75 72 63 65 20 70  61 6c 65 74 74 65 20 70  |source palette p|
00007e30  6f 69 6e 74 65 72 20 6f  72 20 2d 31 20 66 6f 72  |ointer or -1 for|
00007e40  20 63 75 72 72 65 6e 74  20 70 61 6c 65 74 74 65  | current palette|
00007e50  0a 09 20 09 28 69 66 20  52 30 20 3e 3d 20 32 35  |.. .(if R0 >= 25|
00007e60  36 29 09 70 6f 69 6e 74  65 72 20 74 6f 20 73 70  |6).pointer to sp|
00007e70  72 69 74 65 20 6e 61 6d  65 2f 73 70 72 69 74 65  |rite name/sprite|
00007e80  20 69 6e 20 61 72 65 61  20 70 6f 69 6e 74 65 64  | in area pointed|
00007e90  20 74 6f 20 62 79 20 52  30 20 28 61 73 20 73 70  | to by R0 (as sp|
00007ea0  65 63 69 66 69 65 64 20  62 79 20 52 34 29 0a 09  |ecified by R4)..|
00007eb0  52 32 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R2 =.pointer to |
00007ec0  62 75 66 66 65 72 2c 20  6f 72 20 30 20 74 6f 20  |buffer, or 0 to |
00007ed0  72 65 74 75 72 6e 20 73  69 7a 65 20 6e 65 65 64  |return size need|
00007ee0  65 64 20 69 6e 20 52 33  0a 09 52 33 20 3d 09 73  |ed in R3..R3 =.s|
00007ef0  69 7a 65 20 6f 66 20 62  75 66 66 65 72 20 28 69  |ize of buffer (i|
00007f00  66 20 52 32 20 69 73 20  6e 6f 6e 7a 65 72 6f 29  |f R2 is nonzero)|
00007f10  0a 09 52 34 20 3d 09 3c  66 6c 61 67 73 3d 3e 2e  |..R4 =.<flags=>.|
00007f20  66 6c 61 67 73 3e 20 28  6f 6e 6c 79 20 75 73 65  |flags> (only use|
00007f30  64 20 69 66 20 52 30 20  3e 3d 20 32 35 36 29 0a  |d if R0 >= 256).|
00007f40  0a 3c 3d 09 52 32 20 3d  09 69 6e 63 72 65 6d 65  |.<=.R2 =.increme|
00007f50  6e 74 65 64 20 62 79 20  77 6f 72 64 73 20 77 72  |nted by words wr|
00007f60  69 74 74 65 6e 0a 09 52  33 20 3d 09 72 65 6d 61  |itten..R3 =.rema|
00007f70  69 6e 69 6e 67 20 73 69  7a 65 20 6f 66 20 62 75  |ining size of bu|
00007f80  66 66 65 72 0a 0a 54 68  69 73 20 63 61 6c 6c 20  |ffer..This call |
00007f90  72 65 61 64 73 20 74 68  65 20 73 63 72 65 65 6e  |reads the screen|
00007fa0  27 73 20 70 61 6c 65 74  74 65 20 6f 72 20 61 20  |'s palette or a |
00007fb0  73 70 72 69 74 65 27 73  20 70 61 6c 65 74 74 65  |sprite's palette|
00007fc0  2e 20 41 6c 6c 20 65 6e  74 72 69 65 73 20 61 72  |. All entries ar|
00007fd0  65 20 72 65 74 75 72 6e  65 64 20 61 73 20 5f 74  |e returned as _t|
00007fe0  72 75 65 5f 20 32 34 20  62 69 74 20 52 47 42 2c  |rue_ 24 bit RGB,|
00007ff0  20 63 61 6c 69 62 72 61  74 65 64 20 69 66 20 72  | calibrated if r|
00008000  65 71 75 69 72 65 64 2e  20 49 6e 20 32 35 36 20  |equired. In 256 |
00008010  63 6f 6c 6f 75 72 20 6d  6f 64 65 73 20 74 68 65  |colour modes the|
00008020  20 66 75 6c 6c 20 32 35  36 20 70 61 6c 65 74 74  | full 256 palett|
00008030  65 20 65 6e 74 72 69 65  73 20 61 72 65 20 72 65  |e entries are re|
00008040  74 75 72 6e 65 64 2c 20  72 61 74 68 65 72 20 74  |turned, rather t|
00008050  68 61 6e 20 74 68 65 20  31 36 20 75 73 65 64 20  |han the 16 used |
00008060  62 79 20 56 49 44 43 20  31 2e 0a 23 53 75 62 70  |by VIDC 1..#Subp|
00008070  61 67 65 20 66 6c 61 67  73 0a 52 65 61 64 20 50  |age flags.Read P|
00008080  61 6c 65 74 74 65 20 66  6c 61 67 73 0a 42 69 74  |alette flags.Bit|
00008090  09 4d 65 61 6e 69 6e 67  20 69 66 20 73 65 74 0a  |.Meaning if set.|
000080a0  23 4c 69 6e 65 0a 30 09  52 31 20 3d 09 70 6f 69  |#Line.0.R1 =.poi|
000080b0  6e 74 65 72 20 74 6f 20  73 70 72 69 74 65 20 28  |nter to sprite (|
000080c0  6f 74 68 65 72 77 69 73  65 20 73 70 72 69 74 65  |otherwise sprite|
000080d0  20 6e 61 6d 65 29 0a 31  09 72 65 74 75 72 6e 20  | name).1.return |
000080e0  66 6c 61 73 68 69 6e 67  20 63 6f 6c 6f 75 72 73  |flashing colours|
000080f0  20 28 64 65 66 61 75 6c  74 20 69 73 20 6e 6f 74  | (default is not|
00008100  20 74 6f 20 72 65 74 75  72 6e 20 66 6c 61 73 68  | to return flash|
00008110  69 6e 67 20 63 6f 6c 6f  75 72 73 29 0a 6f 74 68  |ing colours).oth|
00008120  65 72 20 62 69 74 73 20  72 65 73 65 72 76 65 64  |er bits reserved|
00008130  20 28 6d 75 73 74 20 62  65 20 7a 65 72 6f 29 00  | (must be zero).|
00008140  44 41 54 41 24 01 00 00  43 6f 6c 6f 75 72 54 72  |DATA$...ColourTr|
00008150  61 6e 73 5f 53 65 74 43  61 6c 69 62 72 61 74 69  |ans_SetCalibrati|
00008160  6f 6e 20 20 28 26 34 30  37 35 31 29 0a 23 50 61  |on  (&40751).#Pa|
00008170  72 65 6e 74 20 43 6f 6c  6f 75 72 54 72 61 6e 73  |rent ColourTrans|
00008180  5f 0a 3d 3e 09 52 30 20  3d 09 70 6f 69 6e 74 65  |_.=>.R0 =.pointe|
00008190  72 20 74 6f 20 3c 63 61  6c 69 62 72 61 74 69 6f  |r to <calibratio|
000081a0  6e 20 74 61 62 6c 65 3d  3e 43 6f 6c 6f 75 72 54  |n table=>ColourT|
000081b0  72 61 6e 73 5f 63 61 6c  69 62 72 61 74 69 6f 6e  |rans_calibration|
000081c0  74 61 62 6c 65 3e 0a 0a  43 6f 70 69 65 73 20 74  |table>..Copies t|
000081d0  68 65 20 63 61 6c 69 62  72 61 74 69 6f 6e 20 74  |he calibration t|
000081e0  61 62 6c 65 20 69 6e 74  6f 20 74 68 65 20 52 4d  |able into the RM|
000081f0  41 2c 20 66 6f 72 20 75  73 65 20 61 73 20 74 68  |A, for use as th|
00008200  65 20 73 63 72 65 65 6e  20 63 61 6c 69 62 72 61  |e screen calibra|
00008210  74 69 6f 6e 20 74 61 62  6c 65 2e 20 45 78 70 65  |tion table. Expe|
00008220  72 69 6d 65 6e 74 61 74  69 6f 6e 20 73 75 67 67  |rimentation sugg|
00008230  65 73 74 73 20 74 68 61  74 20 52 30 20 3d 20 30  |ests that R0 = 0|
00008240  20 72 65 73 74 6f 72 65  73 20 74 68 65 20 64 65  | restores the de|
00008250  66 61 75 6c 74 20 77 69  74 68 6f 75 74 20 65 72  |fault without er|
00008260  72 6f 72 2e 44 41 54 41  4c 01 00 00 43 6f 6c 6f  |ror.DATAL...Colo|
00008270  75 72 54 72 61 6e 73 5f  53 65 74 6f 70 70 54 65  |urTrans_SetoppTe|
00008280  78 74 43 6f 6c 6f 75 72  20 28 26 34 30 37 36 32  |xtColour (&40762|
00008290  29 0a 23 50 61 72 65 6e  74 20 43 6f 6c 6f 75 72  |).#Parent Colour|
000082a0  54 72 61 6e 73 5f 0a 3d  3e 09 52 30 20 3d 09 50  |Trans_.=>.R0 =.P|
000082b0  61 6c 65 74 74 65 20 65  6e 74 72 79 0a 09 52 33  |alette entry..R3|
000082c0  20 3d 09 66 6c 61 67 73  3a 09 62 69 74 20 37 20  | =.flags:.bit 7 |
000082d0  73 65 74 20 66 6f 72 20  62 61 63 6b 67 72 6f 75  |set for backgrou|
000082e0  6e 64 2c 20 65 6c 73 65  20 66 6f 72 65 67 72 6f  |nd, else foregro|
000082f0  75 6e 64 0a 09 20 09 20  20 09 6f 74 68 65 72 20  |und.. .  .other |
00008300  62 69 74 73 20 30 20 28  72 65 73 65 72 76 65 64  |bits 0 (reserved|
00008310  29 0a 20 20 20 0a 3c 3d  09 52 30 20 3d 09 47 43  |).   .<=.R0 =.GC|
00008320  4f 4c 0a 09 52 33 20 70  72 65 73 65 72 76 65 64  |OL..R3 preserved|
00008330  0a 0a 54 68 69 73 20 63  61 6c 6c 2c 20 67 69 76  |..This call, giv|
00008340  65 6e 20 61 20 70 61 6c  65 74 74 65 20 65 6e 74  |en a palette ent|
00008350  72 79 2c 20 77 6f 72 6b  73 20 6f 75 74 20 74 68  |ry, works out th|
00008360  65 20 66 75 72 74 68 65  73 74 20 47 43 4f 4c 20  |e furthest GCOL |
00008370  69 6e 20 74 68 65 20 63  75 72 72 65 6e 74 20 6d  |in the current m|
00008380  6f 64 65 20 61 6e 64 20  70 61 6c 65 74 74 65 2c  |ode and palette,|
00008390  20 61 6e 64 20 73 65 74  73 20 74 68 65 20 74 65  | and sets the te|
000083a0  78 74 20 63 6f 6c 6f 75  72 20 74 6f 20 69 74 2e  |xt colour to it.|
000083b0  44 41 54 41 48 01 00 00  43 6f 6c 6f 75 72 54 72  |DATAH...ColourTr|
000083c0  61 6e 73 5f 53 65 74 54  65 78 74 43 6f 6c 6f 75  |ans_SetTextColou|
000083d0  72 20 28 26 34 30 37 36  31 29 0a 23 50 61 72 65  |r (&40761).#Pare|
000083e0  6e 74 20 43 6f 6c 6f 75  72 54 72 61 6e 73 5f 0a  |nt ColourTrans_.|
000083f0  3d 3e 09 52 30 20 3d 09  50 61 6c 65 74 74 65 20  |=>.R0 =.Palette |
00008400  65 6e 74 72 79 0a 09 52  33 20 3d 09 66 6c 61 67  |entry..R3 =.flag|
00008410  73 3a 09 62 69 74 20 37  20 73 65 74 20 66 6f 72  |s:.bit 7 set for|
00008420  20 62 61 63 6b 67 72 6f  75 6e 64 2c 20 65 6c 73  | background, els|
00008430  65 20 66 6f 72 65 67 72  6f 75 6e 64 0a 09 20 09  |e foreground.. .|
00008440  20 20 09 6f 74 68 65 72  20 62 69 74 73 20 30 20  |  .other bits 0 |
00008450  28 72 65 73 65 72 76 65  64 29 0a 20 20 20 0a 3c  |(reserved).   .<|
00008460  3d 09 52 30 20 3d 09 47  43 4f 4c 0a 09 52 33 20  |=.R0 =.GCOL..R3 |
00008470  70 72 65 73 65 72 76 65  64 0a 0a 54 68 69 73 20  |preserved..This |
00008480  63 61 6c 6c 2c 20 67 69  76 65 6e 20 61 20 70 61  |call, given a pa|
00008490  6c 65 74 74 65 20 65 6e  74 72 79 2c 20 77 6f 72  |lette entry, wor|
000084a0  6b 73 20 6f 75 74 20 74  68 65 20 63 6c 6f 73 65  |ks out the close|
000084b0  73 74 20 47 43 4f 4c 20  69 6e 20 74 68 65 20 63  |st GCOL in the c|
000084c0  75 72 72 65 6e 74 20 6d  6f 64 65 20 61 6e 64 20  |urrent mode and |
000084d0  70 61 6c 65 74 74 65 2c  20 61 6e 64 20 73 65 74  |palette, and set|
000084e0  73 20 74 68 65 20 74 65  78 74 20 63 6f 6c 6f 75  |s the text colou|
000084f0  72 20 74 6f 20 69 74 2e  44 41 54 41 4c 01 00 00  |r to it.DATAL...|
00008500  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 57 72 69 74  |ColourTrans_Writ|
00008510  65 43 61 6c 69 62 72 61  74 69 6f 6e 54 6f 46 69  |eCalibrationToFi|
00008520  6c 65 20 20 28 26 34 30  37 35 37 29 0a 23 50 61  |le  (&40757).#Pa|
00008530  72 65 6e 74 20 43 6f 6c  6f 75 72 54 72 61 6e 73  |rent ColourTrans|
00008540  5f 0a 3d 3e 09 52 30 20  3d 09 66 6c 61 67 73 09  |_.=>.R0 =.flags.|
00008550  62 69 74 20 30 20 73 65  74 09 61 6c 77 61 79 73  |bit 0 set.always|
00008560  20 77 72 69 74 65 20 63  61 6c 69 62 72 61 74 69  | write calibrati|
00008570  6f 6e 0a 09 20 09 20 09  62 69 74 20 30 20 63 6c  |on.. . .bit 0 cl|
00008580  65 61 72 09 77 72 69 74  65 20 63 61 6c 69 62 72  |ear.write calibr|
00008590  61 74 69 6f 6e 20 75 6e  6c 65 73 73 20 69 74 20  |ation unless it |
000085a0  69 73 20 74 68 65 20 64  65 66 61 75 6c 74 0a 09  |is the default..|
000085b0  09 20 09 6f 74 68 65 72  20 62 69 74 73 20 72 65  |. .other bits re|
000085c0  73 65 72 76 65 64 0a 09  52 31 20 3d 09 66 69 6c  |served..R1 =.fil|
000085d0  65 20 68 61 6e 64 6c 65  20 74 6f 20 77 72 69 74  |e handle to writ|
000085e0  65 20 74 6f 0a 3c 3d 09  52 30 20 63 6f 72 72 75  |e to.<=.R0 corru|
000085f0  70 74 65 64 0a 0a 57 72  69 74 65 20 2a 20 43 6f  |pted..Write * Co|
00008600  6d 6d 61 6e 64 73 20 74  6f 20 74 68 65 20 67 69  |mmands to the gi|
00008610  76 65 6e 20 66 69 6c 65  20 74 6f 20 72 65 2d 63  |ven file to re-c|
00008620  72 65 61 74 65 20 74 68  65 20 63 75 72 72 65 6e  |reate the curren|
00008630  74 20 63 61 6c 69 62 72  61 74 69 6f 6e 20 74 61  |t calibration ta|
00008640  62 6c 65 2e 44 41 54 41  f4 00 00 00 43 6f 6c 6f  |ble.DATA....Colo|
00008650  75 72 54 72 61 6e 73 5f  57 72 69 74 65 43 61 6c  |urTrans_WriteCal|
00008660  69 62 72 61 74 69 6f 6e  54 6f 46 69 6c 65 20 20  |ibrationToFile  |
00008670  28 26 34 30 37 36 30 29  0a 23 50 61 72 65 6e 74  |(&40760).#Parent|
00008680  20 43 6f 6c 6f 75 72 54  72 61 6e 73 5f 0a 3d 3e  | ColourTrans_.=>|
00008690  09 52 31 20 3d 09 66 69  6c 65 20 68 61 6e 64 6c  |.R1 =.file handl|
000086a0  65 20 74 6f 20 77 72 69  74 65 20 74 6f 0a 3c 3d  |e to write to.<=|
000086b0  09 41 6c 6c 20 72 65 67  69 73 74 65 72 73 20 70  |.All registers p|
000086c0  72 65 73 65 72 76 65 64  0a 0a 57 72 69 74 65 20  |reserved..Write |
000086d0  61 20 2a 20 43 6f 6d 6d  61 6e 64 20 74 6f 20 74  |a * Command to t|
000086e0  68 65 20 67 69 76 65 6e  20 66 69 6c 65 20 74 6f  |he given file to|
000086f0  20 72 65 73 74 6f 72 65  20 74 68 65 20 65 72 72  | restore the err|
00008700  6f 72 20 6c 6f 61 64 69  6e 67 73 2e 20 54 68 69  |or loadings. Thi|
00008710  73 20 61 6c 6c 6f 77 73  20 64 65 73 6b 74 6f 70  |s allows desktop|
00008720  20 73 61 76 69 6e 67 20  6f 66 20 74 68 65 20 6c  | saving of the l|
00008730  6f 61 64 69 6e 67 73 2e  44 41 54 41 e2 02 00 00  |oadings.DATA....|
00008740  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 57 72 69 74  |ColourTrans_Writ|
00008750  65 50 61 6c 65 74 74 65  20 28 26 34 30 37 35 44  |ePalette (&4075D|
00008760  29 0a 23 50 61 72 65 6e  74 20 43 6f 6c 6f 75 72  |).#Parent Colour|
00008770  54 72 61 6e 73 5f 0a 3d  3e 09 52 30 20 3d 09 2d  |Trans_.=>.R0 =.-|
00008780  31 20 66 6f 72 20 63 75  72 72 65 6e 74 20 6d 6f  |1 for current mo|
00008790  64 65 20 6f 72 20 70 6f  69 6e 74 65 72 20 74 6f  |de or pointer to|
000087a0  20 73 70 72 69 74 65 20  61 72 65 61 0a 09 52 31  | sprite area..R1|
000087b0  20 3d 09 28 69 66 20 52  30 20 3d 20 2d 31 29 09  | =.(if R0 = -1).|
000087c0  2d 31 20 74 6f 20 77 72  69 74 65 20 63 75 72 72  |-1 to write curr|
000087d0  65 6e 74 20 70 61 6c 65  74 74 65 20 65 6c 73 65  |ent palette else|
000087e0  20 69 67 6e 6f 72 65 64  0a 09 20 09 28 69 66 20  | ignored.. .(if |
000087f0  52 30 20 3e 3d 20 30 29  09 70 6f 69 6e 74 65 72  |R0 >= 0).pointer|
00008800  20 74 6f 20 73 70 72 69  74 65 20 6e 61 6d 65 2f  | to sprite name/|
00008810  73 70 72 69 74 65 20 69  6e 20 61 72 65 61 20 70  |sprite in area p|
00008820  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 52 30 20  |ointed to by R0 |
00008830  28 61 73 20 73 70 65 63  69 66 69 65 64 20 62 79  |(as specified by|
00008840  20 52 34 29 0a 09 52 32  20 3d 09 70 6f 69 6e 74  | R4)..R2 =.point|
00008850  65 72 20 74 6f 20 70 61  6c 65 74 74 65 20 74 6f  |er to palette to|
00008860  20 77 72 69 74 65 0a 09  52 33 20 3d 09 30 20 28  | write..R3 =.0 (|
00008870  72 65 73 65 72 76 65 64  29 0a 09 52 34 20 3d 09  |reserved)..R4 =.|
00008880  3c 66 6c 61 67 73 3d 3e  2e 66 6c 61 67 73 3e 20  |<flags=>.flags> |
00008890  28 6f 6e 6c 79 20 75 73  65 64 20 69 66 20 52 30  |(only used if R0|
000088a0  20 3e 3d 20 30 29 0a 0a  54 68 69 73 20 63 61 6c  | >= 0)..This cal|
000088b0  6c 20 77 72 69 74 65 20  74 68 65 20 73 63 72 65  |l write the scre|
000088c0  65 6e 27 73 20 70 61 6c  65 74 74 65 20 6f 72 20  |en's palette or |
000088d0  61 20 73 70 72 69 74 65  27 73 20 70 61 6c 65 74  |a sprite's palet|
000088e0  74 65 2e 20 49 66 20 70  6f 73 73 69 62 6c 65 20  |te. If possible |
000088f0  32 35 36 20 63 6f 6c 6f  75 72 20 70 61 6c 65 74  |256 colour palet|
00008900  74 65 73 20 61 72 65 20  63 6f 6d 70 61 63 74 65  |tes are compacte|
00008910  64 20 74 6f 20 74 68 65  20 31 36 20 75 73 65 64  |d to the 16 used|
00008920  20 62 79 20 56 49 44 43  20 31 2c 20 65 6c 73 65  | by VIDC 1, else|
00008930  20 61 6c 6c 20 32 35 36  20 63 6f 6c 6f 75 72 73  | all 256 colours|
00008940  20 61 72 65 20 77 72 69  74 74 65 6e 2e 0a 23 53  | are written..#S|
00008950  75 62 70 61 67 65 20 66  6c 61 67 73 0a 57 72 69  |ubpage flags.Wri|
00008960  74 65 20 50 61 6c 65 74  74 65 20 66 6c 61 67 73  |te Palette flags|
00008970  0a 42 69 74 09 4d 65 61  6e 69 6e 67 20 69 66 20  |.Bit.Meaning if |
00008980  73 65 74 0a 23 4c 69 6e  65 0a 30 09 52 31 20 3d  |set.#Line.0.R1 =|
00008990  09 70 6f 69 6e 74 65 72  20 74 6f 20 73 70 72 69  |.pointer to spri|
000089a0  74 65 20 28 6f 74 68 65  72 77 69 73 65 20 73 70  |te (otherwise sp|
000089b0  72 69 74 65 20 6e 61 6d  65 29 0a 31 09 66 6c 61  |rite name).1.fla|
000089c0  73 68 69 6e 67 20 63 6f  6c 6f 75 72 73 20 69 6e  |shing colours in|
000089d0  20 74 61 62 6c 65 20 28  64 65 66 61 75 6c 74 20  | table (default |
000089e0  69 73 20 6e 6f 20 66 6c  61 73 68 69 6e 67 20 63  |is no flashing c|
000089f0  6f 6c 6f 75 72 73 29 0a  6f 74 68 65 72 20 62 69  |olours).other bi|
00008a00  74 73 20 72 65 73 65 72  76 65 64 20 28 6d 75 73  |ts reserved (mus|
00008a10  74 20 62 65 20 7a 65 72  6f 29 00 00 44 41 54 41  |t be zero)..DATA|
00008a20  ec 02 00 00 43 6f 6c 6f  75 72 54 72 61 6e 73 0a  |....ColourTrans.|
00008a30  23 50 61 72 65 6e 74 20  21 52 6f 6f 74 0a 23 50  |#Parent !Root.#P|
00008a40  72 65 66 69 78 20 43 6f  6c 6f 75 72 54 72 61 6e  |refix ColourTran|
00008a50  73 5f 0a 23 54 61 62 6c  65 20 43 6f 6c 75 6d 6e  |s_.#Table Column|
00008a60  73 20 33 0a 3c 43 6f 6c  6f 75 72 4e 75 6d 62 65  |s 3.<ColourNumbe|
00008a70  72 54 6f 47 43 4f 4c 3e  0a 3c 43 6f 6e 76 65 72  |rToGCOL>.<Conver|
00008a80  74 43 49 45 54 6f 52 47  42 3e 0a 3c 43 6f 6e 76  |tCIEToRGB>.<Conv|
00008a90  65 72 74 43 4d 59 4b 54  6f 52 47 42 3e 0a 3c 43  |ertCMYKToRGB>.<C|
00008aa0  6f 6e 76 65 72 74 44 65  76 69 63 65 43 6f 6c 6f  |onvertDeviceColo|
00008ab0  75 72 3e 0a 3c 43 6f 6e  76 65 72 74 44 65 76 69  |ur>.<ConvertDevi|
00008ac0  63 65 50 61 6c 65 74 74  65 3e 0a 3c 43 6f 6e 76  |cePalette>.<Conv|
00008ad0  65 72 74 48 53 56 54 6f  52 47 42 3e 0a 3c 43 6f  |ertHSVToRGB>.<Co|
00008ae0  6e 76 65 72 74 52 47 42  54 6f 43 49 45 3e 0a 3c  |nvertRGBToCIE>.<|
00008af0  43 6f 6e 76 65 72 74 52  47 42 54 6f 43 4d 59 4b  |ConvertRGBToCMYK|
00008b00  3e 0a 3c 43 6f 6e 76 65  72 74 52 47 42 54 6f 48  |>.<ConvertRGBToH|
00008b10  53 56 3e 0a 3c 47 43 4f  4c 54 6f 43 6f 6c 6f 75  |SV>.<GCOLToColou|
00008b20  72 4e 75 6d 62 65 72 3e  0a 3c 47 65 6e 65 72 61  |rNumber>.<Genera|
00008b30  74 65 54 61 62 6c 65 3e  0a 3c 49 6e 76 61 6c 69  |teTable>.<Invali|
00008b40  64 61 74 65 43 61 63 68  65 3e 0a 3c 4d 69 73 63  |dateCache>.<Misc|
00008b50  4f 70 3e 0a 3c 52 65 61  64 43 61 6c 69 62 72 61  |Op>.<ReadCalibra|
00008b60  74 69 6f 6e 3e 0a 3c 52  65 61 64 50 61 6c 65 74  |tion>.<ReadPalet|
00008b70  74 65 3e 0a 3c 52 65 74  75 72 6e 43 6f 6c 6f 75  |te>.<ReturnColou|
00008b80  72 4e 75 6d 62 65 72 3e  0a 3c 52 65 74 75 72 6e  |rNumber>.<Return|
00008b90  43 6f 6c 6f 75 72 4e 75  6d 62 65 72 46 6f 72 4d  |ColourNumberForM|
00008ba0  6f 64 65 3e 0a 3c 52 65  74 75 72 6e 46 6f 6e 74  |ode>.<ReturnFont|
00008bb0  43 6f 6c 6f 75 72 73 3e  0a 3c 52 65 74 75 72 6e  |Colours>.<Return|
00008bc0  47 43 4f 4c 3e 0a 3c 52  65 74 75 72 6e 47 43 4f  |GCOL>.<ReturnGCO|
00008bd0  4c 46 6f 72 4d 6f 64 65  3e 0a 3c 52 65 74 75 72  |LForMode>.<Retur|
00008be0  6e 4f 70 70 43 6f 6c 6f  75 72 4e 75 6d 62 65 72  |nOppColourNumber|
00008bf0  3e 0a 3c 52 65 74 75 72  6e 4f 70 70 43 6f 6c 6f  |>.<ReturnOppColo|
00008c00  75 72 4e 75 6d 62 65 72  46 6f 72 4d 6f 64 65 3e  |urNumberForMode>|
00008c10  0a 3c 52 65 74 75 72 6e  4f 70 70 47 43 4f 4c 3e  |.<ReturnOppGCOL>|
00008c20  0a 3c 52 65 74 75 72 6e  4f 70 70 47 43 4f 4c 46  |.<ReturnOppGCOLF|
00008c30  6f 72 4d 6f 64 65 3e 0a  3c 53 65 6c 65 63 74 47  |orMode>.<SelectG|
00008c40  43 4f 4c 54 61 62 6c 65  3e 0a 3c 53 65 6c 65 63  |COLTable>.<Selec|
00008c50  74 54 61 62 6c 65 3e 0a  3c 53 65 74 43 61 6c 69  |tTable>.<SetCali|
00008c60  62 72 61 74 69 6f 6e 3e  0a 3c 53 65 74 43 6f 6c  |bration>.<SetCol|
00008c70  6f 75 72 3e 0a 3c 53 65  74 46 6f 6e 74 43 6f 6c  |our>.<SetFontCol|
00008c80  6f 75 72 73 3e 0a 3c 53  65 74 47 43 4f 4c 3e 0a  |ours>.<SetGCOL>.|
00008c90  3c 53 65 74 4f 70 70 47  43 4f 4c 3e 0a 3c 53 65  |<SetOppGCOL>.<Se|
00008ca0  74 4f 70 70 54 65 78 74  43 6f 6c 6f 75 72 3e 0a  |tOppTextColour>.|
00008cb0  3c 53 65 74 54 65 78 74  43 6f 6c 6f 75 72 3e 0a  |<SetTextColour>.|
00008cc0  3c 57 72 69 74 65 43 61  6c 69 62 72 61 74 69 6f  |<WriteCalibratio|
00008cd0  6e 54 6f 46 69 6c 65 3e  0a 3c 57 72 69 74 65 4c  |nToFile>.<WriteL|
00008ce0  6f 61 64 69 6e 67 73 54  6f 46 69 6c 65 3e 0a 3c  |oadingsToFile>.<|
00008cf0  57 72 69 74 65 50 61 6c  65 74 74 65 3e 0a 23 45  |WritePalette>.#E|
00008d00  6e 64 54 61 62 6c 65 0a  44 49 52 24 50 00 00 00  |ndTable.DIR$P...|
00008d10  50 00 00 00 58 8d 00 00  46 fd ff ff 68 8b 1d 00  |P...X...F...h...|
00008d20  3e 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |>...........!Roo|
00008d30  74 00 00 00 98 8d 00 00  47 ff ff ff f2 f5 a8 cd  |t.......G.......|
00008d40  33 01 00 00 13 00 00 00  00 00 00 00 44 69 73 61  |3...........Disa|
00008d50  73 73 65 6d 62 6c 65 00  44 41 54 41 3e 00 00 00  |ssemble.DATA>...|
00008d60  44 65 62 75 67 67 65 72  0a 23 50 61 72 65 6e 74  |Debugger.#Parent|
00008d70  20 21 52 6f 6f 74 0a 23  50 72 65 66 69 78 20 44  | !Root.#Prefix D|
00008d80  65 62 75 67 67 65 72 5f  0a 3c 44 69 73 61 73 73  |ebugger_.<Disass|
00008d90  65 6d 62 6c 65 3e 00 00  44 41 54 41 33 01 00 00  |emble>..DATA3...|
00008da0  44 65 62 75 67 67 65 72  5f 44 69 73 61 73 73 65  |Debugger_Disasse|
00008db0  6d 62 6c 65 20 20 28 26  34 30 33 38 30 29 0a 23  |mble  (&40380).#|
00008dc0  50 61 72 65 6e 74 20 44  65 62 75 67 67 65 72 5f  |Parent Debugger_|
00008dd0  0a 3d 3e 09 52 30 20 3d  09 69 6e 73 74 72 75 63  |.=>.R0 =.instruc|
00008de0  74 69 6f 6e 0a 09 52 31  20 3d 09 61 64 64 72 65  |tion..R1 =.addre|
00008df0  73 73 20 69 74 20 63 61  6d 65 20 66 72 6f 6d 0a  |ss it came from.|
00008e00  0a 3c 3d 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |.<=.R1 =.pointer|
00008e10  20 74 6f 20 7a 65 72 6f  20 74 65 72 6d 69 6e 61  | to zero termina|
00008e20  74 65 64 20 73 74 72 69  6e 67 0a 09 52 32 20 3d  |ted string..R2 =|
00008e30  09 6c 65 6e 67 74 68 2c  20 69 6e 63 6c 75 64 69  |.length, includi|
00008e40  6e 67 20 74 65 72 6d 69  6e 61 74 6f 72 0a 0a 54  |ng terminator..T|
00008e50  68 69 73 20 53 57 49 20  64 69 73 61 73 73 65 6d  |his SWI disassem|
00008e60  62 6c 65 73 20 61 6e 20  69 6e 73 74 72 75 63 74  |bles an instruct|
00008e70  69 6f 6e 2e 20 54 68 65  20 61 64 64 72 65 73 73  |ion. The address|
00008e80  20 69 6e 20 52 31 20 69  73 20 6e 65 65 64 65 64  | in R1 is needed|
00008e90  20 66 6f 72 20 50 43 20  72 65 6c 61 74 69 76 65  | for PC relative|
00008ea0  20 69 6e 73 74 72 75 63  74 69 6f 6e 73 20 28 6c  | instructions (l|
00008eb0  69 6b 65 20 42 2c 20 42  4c 2c 20 4c 44 52 20 78  |ike B, BL, LDR x|
00008ec0  2c 5b 50 43 2c 23 2e 2e  5d 20 29 00 44 49 52 24  |,[PC,#..] ).DIR$|
00008ed0  28 03 00 00 28 03 00 00  f4 91 00 00 48 fd ff ff  |(...(.......H...|
00008ee0  7c 5f e3 1a b0 00 00 00  13 00 00 00 00 00 00 00  ||_..............|
00008ef0  21 52 6f 6f 74 00 00 00  a4 92 00 00 48 ff ff ff  |!Root.......H...|
00008f00  da 93 a6 20 17 02 00 00  33 00 00 00 00 00 00 00  |... ....3.......|
00008f10  43 61 6c 6c 44 65 76 69  63 65 00 00 bc 94 00 00  |CallDevice......|
00008f20  48 ff ff ff b9 56 d9 1a  02 01 00 00 33 00 00 00  |H....V......3...|
00008f30  00 00 00 00 44 65 72 65  67 69 73 74 65 72 00 00  |....Deregister..|
00008f40  c0 95 00 00 48 ff ff ff  0a 9b d9 1a ed 00 00 00  |....H...........|
00008f50  33 00 00 00 00 00 00 00  44 65 72 65 67 69 73 74  |3.......Deregist|
00008f60  65 72 4f 62 6a 65 63 74  73 00 00 00 b0 96 00 00  |erObjects.......|
00008f70  48 fd ff ff 36 f2 e0 1a  92 02 00 00 13 00 00 00  |H...6...........|
00008f80  00 00 00 00 64 65 76 69  63 65 73 00 44 99 00 00  |....devices.D...|
00008f90  48 fd ff ff cc 8a a7 20  0e 03 00 00 13 00 00 00  |H...... ........|
00008fa0  00 00 00 00 65 6e 74 72  79 00 00 00 54 9c 00 00  |....entry...T...|
00008fb0  48 fd ff ff e3 b8 e5 1a  8d 02 00 00 13 00 00 00  |H...............|
00008fc0  00 00 00 00 65 6e 74 72  79 30 00 00 e4 9e 00 00  |....entry0......|
00008fd0  48 fd ff ff 07 97 a7 20  10 01 00 00 13 00 00 00  |H...... ........|
00008fe0  00 00 00 00 65 6e 74 72  79 31 00 00 f4 9f 00 00  |....entry1......|
00008ff0  48 fd ff ff ba 2a e2 1a  fb 01 00 00 13 00 00 00  |H....*..........|
00009000  00 00 00 00 65 6e 74 72  79 31 30 00 f0 a1 00 00  |....entry10.....|
00009010  48 fd ff ff 6a 9f a7 20  21 01 00 00 13 00 00 00  |H...j.. !.......|
00009020  00 00 00 00 65 6e 74 72  79 31 31 00 14 a3 00 00  |....entry11.....|
00009030  48 fd ff ff cc 28 e0 1a  78 01 00 00 13 00 00 00  |H....(..x.......|
00009040  00 00 00 00 65 6e 74 72  79 32 00 00 8c a4 00 00  |....entry2......|
00009050  48 fd ff ff 77 b1 e0 1a  0b 01 00 00 13 00 00 00  |H...w...........|
00009060  00 00 00 00 65 6e 74 72  79 33 00 00 98 a5 00 00  |....entry3......|
00009070  48 fd ff ff 56 66 e0 1a  1d 01 00 00 13 00 00 00  |H...Vf..........|
00009080  00 00 00 00 65 6e 74 72  79 34 00 00 b8 a6 00 00  |....entry4......|
00009090  48 fd ff ff ee aa a7 20  39 01 00 00 13 00 00 00  |H...... 9.......|
000090a0  00 00 00 00 65 6e 74 72  79 35 00 00 f4 a7 00 00  |....entry5......|
000090b0  48 fd ff ff 60 b7 a7 20  e5 02 00 00 13 00 00 00  |H...`.. ........|
000090c0  00 00 00 00 65 6e 74 72  79 36 00 00 dc aa 00 00  |....entry6......|
000090d0  48 fd ff ff da b4 e1 1a  63 01 00 00 13 00 00 00  |H.......c.......|
000090e0  00 00 00 00 65 6e 74 72  79 38 00 00 40 ac 00 00  |....entry8..@...|
000090f0  48 fd ff ff 14 c6 e1 1a  68 01 00 00 13 00 00 00  |H.......h.......|
00009100  00 00 00 00 65 6e 74 72  79 39 00 00 a8 ad 00 00  |....entry9......|
00009110  48 ff ff ff 21 ca a7 20  06 02 00 00 33 00 00 00  |H...!.. ....3...|
00009120  00 00 00 00 52 65 63 65  69 76 65 64 43 68 61 72  |....ReceivedChar|
00009130  61 63 74 65 72 00 00 00  b0 af 00 00 48 ff ff ff  |acter.......H...|
00009140  95 f0 a7 20 77 03 00 00  33 00 00 00 00 00 00 00  |... w...3.......|
00009150  52 65 67 69 73 74 65 72  00 00 00 00 28 b3 00 00  |Register....(...|
00009160  48 ff ff ff 2b 7b d9 1a  da 00 00 00 33 00 00 00  |H...+{......3...|
00009170  00 00 00 00 52 65 67 69  73 74 65 72 4f 62 6a 65  |....RegisterObje|
00009180  63 74 73 00 04 b4 00 00  48 fd ff ff e6 5e a8 20  |cts.....H....^. |
00009190  37 0a 00 00 13 00 00 00  00 00 00 00 73 70 65 63  |7...........spec|
000091a0  69 61 6c 00 3c be 00 00  48 ff ff ff 74 72 a8 20  |ial.<...H...tr. |
000091b0  7e 01 00 00 33 00 00 00  00 00 00 00 54 68 72 65  |~...3.......Thre|
000091c0  73 68 6f 6c 64 00 00 00  bc bf 00 00 48 ff ff ff  |shold.......H...|
000091d0  53 c5 a8 20 24 02 00 00  33 00 00 00 00 00 00 00  |S.. $...3.......|
000091e0  54 72 61 6e 73 6d 69 74  43 68 61 72 61 63 74 65  |TransmitCharacte|
000091f0  72 00 00 00 44 41 54 41  b0 00 00 00 44 65 76 69  |r...DATA....Devi|
00009200  63 65 46 53 0a 23 50 61  72 65 6e 74 20 21 52 6f  |ceFS.#Parent !Ro|
00009210  6f 74 0a 23 50 72 65 66  69 78 20 44 65 76 69 63  |ot.#Prefix Devic|
00009220  65 46 53 5f 0a 3c 43 61  6c 6c 44 65 76 69 63 65  |eFS_.<CallDevice|
00009230  3e 0a 3c 44 65 72 65 67  69 73 74 65 72 3e 0a 3c  |>.<Deregister>.<|
00009240  44 65 72 65 67 69 73 74  65 72 4f 62 6a 65 63 74  |DeregisterObject|
00009250  73 3e 0a 3c 52 65 63 65  69 76 65 64 43 68 61 72  |s>.<ReceivedChar|
00009260  61 63 74 65 72 3e 0a 3c  52 65 67 69 73 74 65 72  |acter>.<Register|
00009270  3e 0a 3c 52 65 67 69 73  74 65 72 4f 62 6a 65 63  |>.<RegisterObjec|
00009280  74 73 3e 0a 3c 54 68 72  65 73 68 6f 6c 64 3e 0a  |ts>.<Threshold>.|
00009290  3c 54 72 61 6e 73 6d 69  74 43 68 61 72 61 63 74  |<TransmitCharact|
000092a0  65 72 3e 0a 44 41 54 41  17 02 00 00 44 65 76 69  |er>.DATA....Devi|
000092b0  63 65 46 53 5f 43 61 6c  6c 44 65 76 69 63 65 20  |ceFS_CallDevice |
000092c0  20 28 26 34 32 37 34 34  29 0a 23 50 61 72 65 6e  | (&42744).#Paren|
000092d0  74 20 44 65 76 69 63 65  46 53 5f 0a 3d 3e 09 52  |t DeviceFS_.=>.R|
000092e0  30 20 3d 09 3c 72 65 61  73 6f 6e 20 63 6f 64 65  |0 =.<reason code|
000092f0  3d 3e 44 65 76 69 63 65  46 53 5f 65 6e 74 72 79  |=>DeviceFS_entry|
00009300  3e 0a 09 52 31 20 3d 09  64 65 76 69 63 65 20 64  |>..R1 =.device d|
00009310  72 69 76 65 72 27 73 20  68 61 6e 64 6c 65 2c 20  |river's handle, |
00009320  6f 72 20 70 61 74 68 2c  20 6f 72 20 30 20 74 6f  |or path, or 0 to|
00009330  20 62 72 6f 61 64 63 61  73 74 20 74 6f 20 61 6c  | broadcast to al|
00009340  6c 20 64 65 76 69 63 65  73 0a 09 52 32 20 2d 20  |l devices..R2 - |
00009350  52 37 20 61 72 65 20 70  61 73 73 65 64 20 74 6f  |R7 are passed to|
00009360  20 64 65 76 69 63 65 20  64 72 69 76 65 72 2c 20  | device driver, |
00009370  61 6e 64 20 64 65 70 65  6e 64 20 6f 6e 20 72 65  |and depend on re|
00009380  61 73 6f 6e 20 63 6f 64  65 0a 09 52 31 32 09 3d  |ason code..R12.=|
00009390  20 70 6f 69 6e 74 65 72  20 74 6f 20 77 6f 72 6b  | pointer to work|
000093a0  73 70 61 63 65 0a 3c 3d  09 64 65 70 65 6e 64 73  |space.<=.depends|
000093b0  20 6f 6e 20 64 65 76 69  63 65 20 61 6e 64 20 72  | on device and r|
000093c0  65 61 73 6f 6e 20 63 6f  64 65 0a 0a 54 68 69 73  |eason code..This|
000093d0  20 53 57 49 20 63 61 6c  6c 73 20 74 68 65 20 3c  | SWI calls the <|
000093e0  64 65 76 69 63 65 20 65  6e 74 72 79 20 70 6f 69  |device entry poi|
000093f0  6e 74 3d 3e 44 65 76 69  63 65 46 53 5f 65 6e 74  |nt=>DeviceFS_ent|
00009400  72 79 3e 20 73 70 65 63  69 66 69 65 64 20 62 79  |ry> specified by|
00009410  20 74 68 65 20 72 65 61  73 6f 6e 20 63 6f 64 65  | the reason code|
00009420  2e 20 54 68 65 20 64 65  76 69 63 65 28 73 29 20  |. The device(s) |
00009430  74 6f 20 63 61 6c 6c 20  63 61 6e 20 62 65 20 73  |to call can be s|
00009440  70 65 63 66 69 65 64 20  62 79 20 64 65 76 69 63  |pecfied by devic|
00009450  65 20 68 61 6e 64 6c 65  2c 20 66 69 6c 65 6e 61  |e handle, filena|
00009460  6d 65 20 69 6e 20 74 68  65 20 64 69 72 65 63 74  |me in the direct|
00009470  6f 72 79 20 73 74 72 75  63 74 75 72 65 20 28 7b  |ory structure ({|
00009480  66 43 6f 64 65 7d 24 7b  66 7d 20 6d 61 79 20 62  |fCode}${f} may b|
00009490  65 20 75 73 65 64 29 2c  20 6f 72 20 30 20 74 6f  |e used), or 0 to|
000094a0  20 62 72 6f 61 64 63 61  73 74 20 74 6f 20 61 6c  | broadcast to al|
000094b0  6c 20 64 65 76 69 63 65  73 2e 0a 00 44 41 54 41  |l devices...DATA|
000094c0  02 01 00 00 44 65 76 69  63 65 46 53 5f 44 65 72  |....DeviceFS_Der|
000094d0  65 67 69 73 74 65 72 20  20 28 26 34 32 37 34 31  |egister  (&42741|
000094e0  29 0a 23 50 61 72 65 6e  74 20 44 65 76 69 63 65  |).#Parent Device|
000094f0  46 53 5f 0a 3d 3e 09 52  30 20 3d 09 64 65 76 69  |FS_.=>.R0 =.devi|
00009500  63 65 20 64 72 69 76 65  72 27 73 20 68 61 6e 64  |ce driver's hand|
00009510  6c 65 0a 0a 54 68 69 73  20 53 57 49 20 64 65 72  |le..This SWI der|
00009520  65 67 69 73 74 65 72 73  20 61 20 64 65 76 69 63  |egisters a devic|
00009530  65 20 64 72 69 76 65 72  20 61 6e 64 20 61 73 73  |e driver and ass|
00009540  6f 63 69 61 74 65 64 20  64 65 76 69 63 65 73 2c  |ociated devices,|
00009550  20 61 6e 64 20 72 65 6d  6f 76 65 73 20 61 6e 79  | and removes any|
00009560  20 73 79 73 74 65 6d 20  76 61 72 69 61 62 6c 65  | system variable|
00009570  73 20 61 73 73 6f 63 69  61 67 65 64 20 77 69 74  |s associaged wit|
00009580  68 20 74 68 65 20 64 65  76 69 63 65 2c 20 65 78  |h the device, ex|
00009590  63 65 70 74 20 7b 66 43  6f 64 65 7d 44 65 76 69  |cept {fCode}Devi|
000095a0  63 65 46 53 24 7b 2f 7d  44 65 76 69 63 65 7b 2f  |ceFS${/}Device{/|
000095b0  7d 24 6f 70 74 69 6f 6e  73 7b 66 7d 2e 0a 00 00  |}$options{f}....|
000095c0  44 41 54 41 ed 00 00 00  44 65 76 69 63 65 46 53  |DATA....DeviceFS|
000095d0  5f 44 65 72 65 67 69 73  74 65 72 4f 62 6a 65 63  |_DeregisterObjec|
000095e0  74 73 20 20 28 26 34 32  37 34 33 29 0a 23 50 61  |ts  (&42743).#Pa|
000095f0  72 65 6e 74 20 44 65 76  69 63 65 46 53 5f 0a 3d  |rent DeviceFS_.=|
00009600  3e 09 52 30 20 3d 09 64  65 76 69 63 65 20 64 72  |>.R0 =.device dr|
00009610  69 76 65 72 27 73 20 68  61 6e 64 6c 65 0a 09 52  |iver's handle..R|
00009620  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 6e  |1 =.pointer to n|
00009630  61 6d 65 20 6f 66 20 64  65 76 69 63 65 20 74 6f  |ame of device to|
00009640  20 72 65 6d 6f 76 65 0a  0a 54 68 69 73 20 53 57  | remove..This SW|
00009650  49 20 64 65 72 65 67 69  73 74 65 72 73 20 61 20  |I deregisters a |
00009660  2a 73 69 6e 67 6c 65 2a  20 61 64 64 69 74 69 6f  |*single* additio|
00009670  6e 61 6c 20 64 65 76 69  63 65 20 66 72 6f 6d 20  |nal device from |
00009680  61 6e 20 64 65 76 69 63  65 20 64 72 69 76 65 72  |an device driver|
00009690  2e 20 49 74 20 61 70 70  65 61 72 73 20 74 6f 20  |. It appears to |
000096a0  62 65 20 6d 69 73 6e 61  6d 65 64 2e 0a 00 00 00  |be misnamed.....|
000096b0  44 41 54 41 92 02 00 00  44 65 76 69 63 65 20 64  |DATA....Device d|
000096c0  65 73 63 72 69 70 74 69  6f 6e 0a 23 50 61 72 65  |escription.#Pare|
000096d0  6e 74 20 44 65 76 69 63  65 46 53 5f 52 65 67 69  |nt DeviceFS_Regi|
000096e0  73 74 65 72 0a 44 65 76  69 63 65 73 20 61 72 65  |ster.Devices are|
000096f0  20 73 70 65 63 69 66 69  65 64 20 61 73 20 61 20  | specified as a |
00009700  6c 69 73 74 20 6f 66 20  32 34 20 62 79 74 65 20  |list of 24 byte |
00009710  62 6c 6f 63 6b 73 2c 20  74 65 72 6d 69 6e 61 74  |blocks, terminat|
00009720  65 64 20 62 79 20 61 20  6e 75 6c 6c 20 77 6f 72  |ed by a null wor|
00009730  64 2e 0a 0a 4f 66 66 73  65 74 09 4d 65 61 6e 69  |d...Offset.Meani|
00009740  6e 67 0a 23 4c 69 6e 65  0a 30 09 6f 66 66 73 65  |ng.#Line.0.offse|
00009750  74 20 74 6f 20 64 65 76  69 63 65 20 6e 61 6d 65  |t to device name|
00009760  0a 34 09 66 6c 61 67 73  3a 09 62 69 74 20 30 20  |.4.flags:.bit 0 |
00009770  73 65 74 20 66 6f 72 20  62 75 66 66 65 72 65 64  |set for buffered|
00009780  0a 09 20 09 62 69 74 20  31 20 73 65 74 20 74 6f  |.. .bit 1 set to|
00009790  20 63 72 65 61 74 65 20  70 61 74 68 20 76 61 72  | create path var|
000097a0  69 61 62 6c 65 20 28 7b  2f 7d 65 2e 67 2e 7b 2f  |iable ({/}e.g.{/|
000097b0  7d 20 7b 66 43 6f 64 65  7d 53 65 72 69 61 6c 24  |} {fCode}Serial$|
000097c0  50 61 74 68 7b 66 7d 20  66 6f 72 20 61 20 64 65  |Path{f} for a de|
000097d0  76 69 63 65 20 7b 66 43  6f 64 65 7d 53 65 72 69  |vice {fCode}Seri|
000097e0  61 6c 7b 66 7d 29 0a 38  09 64 65 66 61 75 6c 74  |al{f}).8.default|
000097f0  20 52 58 20 3c 62 75 66  66 65 72 20 66 6c 61 67  | RX <buffer flag|
00009800  73 3d 3e 42 75 66 66 65  72 5f 66 6c 61 67 73 3e  |s=>Buffer_flags>|
00009810  0a 31 32 09 64 65 66 61  75 6c 74 20 52 58 20 62  |.12.default RX b|
00009820  75 66 66 65 72 20 73 69  7a 65 0a 31 36 09 64 65  |uffer size.16.de|
00009830  66 61 75 6c 74 20 54 58  20 3c 62 75 66 66 65 72  |fault TX <buffer|
00009840  20 66 6c 61 67 73 3d 3e  42 75 66 66 65 72 5f 66  | flags=>Buffer_f|
00009850  6c 61 67 73 3e 0a 32 30  09 64 65 66 61 75 6c 74  |lags>.20.default|
00009860  20 54 58 20 62 75 66 66  65 72 20 73 69 7a 65 0a  | TX buffer size.|
00009870  32 34 09 30 20 28 72 65  73 65 72 76 65 64 29 0a  |24.0 (reserved).|
00009880  0a 54 68 65 20 64 65 76  69 63 65 20 6e 61 6d 65  |.The device name|
00009890  20 69 73 20 75 73 65 64  3a 0a 0a 8f 09 69 6e 20  | is used:....in |
000098a0  74 68 65 20 44 65 76 69  63 65 46 53 20 64 69 72  |the DeviceFS dir|
000098b0  65 63 74 6f 72 79 20 73  74 72 75 63 74 75 72 65  |ectory structure|
000098c0  0a 8f 09 74 6f 20 63 72  65 61 74 65 20 61 20 7b  |...to create a {|
000098d0  66 43 6f 64 65 7d 44 65  76 69 63 65 46 53 24 7b  |fCode}DeviceFS${|
000098e0  2f 7d 44 65 76 69 63 65  7b 2f 7d 24 6f 70 74 69  |/}Device{/}$opti|
000098f0  6f 6e 73 7b 66 7d 20 76  61 72 69 61 62 6c 65 20  |ons{f} variable |
00009900  69 66 20 74 68 69 73 20  64 6f 65 73 20 6e 6f 74  |if this does not|
00009910  20 65 78 69 73 74 0a 8f  09 61 20 70 61 74 68 20  | exist...a path |
00009920  76 61 72 69 61 62 6c 65  20 28 69 66 20 74 68 65  |variable (if the|
00009930  20 66 6c 61 67 20 62 69  74 20 69 73 20 73 65 74  | flag bit is set|
00009940  29 0a 00 00 44 41 54 41  0e 03 00 00 44 65 76 69  |)...DATA....Devi|
00009950  63 65 20 64 72 69 76 65  72 20 65 6e 74 72 79 20  |ce driver entry |
00009960  70 6f 69 6e 74 0a 23 50  61 72 65 6e 74 20 44 65  |point.#Parent De|
00009970  76 69 63 65 46 53 5f 43  61 6c 6c 44 65 76 69 63  |viceFS_CallDevic|
00009980  65 0a 3d 3e 09 52 30 20  3d 09 72 65 61 73 6f 6e  |e.=>.R0 =.reason|
00009990  20 63 6f 64 65 20 3a 0a  09 20 09 20 09 30 09 3c  | code :.. . .0.<|
000099a0  49 6e 69 74 69 61 6c 69  73 65 3d 3e 44 65 76 69  |Initialise=>Devi|
000099b0  63 65 46 53 5f 65 6e 74  72 79 30 3e 0a 09 20 09  |ceFS_entry0>.. .|
000099c0  20 09 31 09 3c 46 69 6e  61 6c 69 73 65 3d 3e 44  | .1.<Finalise=>D|
000099d0  65 76 69 63 65 46 53 5f  65 6e 74 72 79 31 3e 0a  |eviceFS_entry1>.|
000099e0  09 20 09 20 09 32 09 3c  57 61 6b 65 20 75 70 20  |. . .2.<Wake up |
000099f0  66 6f 72 20 54 58 3d 3e  44 65 76 69 63 65 46 53  |for TX=>DeviceFS|
00009a00  5f 65 6e 74 72 79 32 3e  0a 09 20 09 20 09 33 09  |_entry2>.. . .3.|
00009a10  3c 57 61 6b 65 20 75 70  20 66 6f 72 20 52 58 3d  |<Wake up for RX=|
00009a20  3e 44 65 76 69 63 65 46  53 5f 65 6e 74 72 79 33  |>DeviceFS_entry3|
00009a30  3e 0a 09 20 09 20 09 34  09 3c 53 6c 65 65 70 20  |>.. . .4.<Sleep |
00009a40  52 58 3d 3e 44 65 76 69  63 65 46 53 5f 65 6e 74  |RX=>DeviceFS_ent|
00009a50  72 79 34 3e 0a 09 20 09  20 09 35 09 3c 45 6e 75  |ry4>.. . .5.<Enu|
00009a60  6d 65 72 61 74 65 20 64  69 72 65 63 74 6f 72 79  |merate directory|
00009a70  3d 3e 44 65 76 69 63 65  46 53 5f 65 6e 74 72 79  |=>DeviceFS_entry|
00009a80  35 3e 0a 09 20 09 20 09  36 09 3c 43 72 65 61 74  |5>.. . .6.<Creat|
00009a90  65 20 62 75 66 66 65 72  20 66 6f 72 20 54 58 3d  |e buffer for TX=|
00009aa0  3e 44 65 76 69 63 65 46  53 5f 65 6e 74 72 79 36  |>DeviceFS_entry6|
00009ab0  3e 0a 09 20 09 20 09 37  09 3c 43 72 65 61 74 65  |>.. . .7.<Create|
00009ac0  20 62 75 66 66 65 72 20  66 6f 72 20 52 58 3d 3e  | buffer for RX=>|
00009ad0  44 65 76 69 63 65 46 53  5f 65 6e 74 72 79 36 3e  |DeviceFS_entry6>|
00009ae0  0a 09 20 09 20 09 38 09  3c 48 61 6c 74 3d 3e 44  |.. . .8.<Halt=>D|
00009af0  65 76 69 63 65 46 53 5f  65 6e 74 72 79 38 3e 0a  |eviceFS_entry8>.|
00009b00  09 20 09 20 09 39 09 3c  52 65 73 75 6d 65 3d 3e  |. . .9.<Resume=>|
00009b10  44 65 76 69 63 65 46 53  5f 65 6e 74 72 79 39 3e  |DeviceFS_entry9>|
00009b20  0a 09 20 09 20 09 31 30  09 3c 45 6e 64 20 6f 66  |.. . .10.<End of|
00009b30  20 64 61 74 61 3d 3e 44  65 76 69 63 65 46 53 5f  | data=>DeviceFS_|
00009b40  65 6e 74 72 79 31 30 3e  0a 09 20 09 20 09 31 31  |entry10>.. . .11|
00009b50  09 3c 53 74 72 65 61 6d  20 63 72 65 61 74 65 64  |.<Stream created|
00009b60  3d 3e 44 65 76 69 63 65  46 53 5f 65 6e 74 72 79  |=>DeviceFS_entry|
00009b70  31 31 3e 0a 0a 09 52 38  20 3d 09 70 72 69 76 61  |11>...R8 =.priva|
00009b80  74 65 20 77 6f 72 64 0a  09 52 31 32 20 3d 09 77  |te word..R12 =.w|
00009b90  6f 72 6b 73 70 61 63 65  20 70 6f 69 6e 74 65 72  |orkspace pointer|
00009ba0  0a 09 6f 74 68 65 72 20  72 65 67 69 73 74 65 72  |..other register|
00009bb0  73 20 61 73 20 67 69 76  65 6e 20 69 6e 20 63 61  |s as given in ca|
00009bc0  6c 6c 73 0a 3c 3d 09 52  30 20 70 72 65 73 65 72  |lls.<=.R0 preser|
00009bd0  76 65 64 2c 20 6f 72 20  56 20 73 65 74 20 61 6e  |ved, or V set an|
00009be0  64 20 52 30 20 70 6f 69  6e 74 69 6e 67 20 74 6f  |d R0 pointing to|
00009bf0  20 61 6e 20 3c 65 72 72  6f 72 20 62 6c 6f 63 6b  | an <error block|
00009c00  3d 3e 73 77 69 5f 65 72  72 6f 72 62 6c 6f 63 6b  |=>swi_errorblock|
00009c10  3e 0a 09 52 31 20 70 72  65 73 65 72 76 65 64 0a  |>..R1 preserved.|
00009c20  09 41 6c 6c 20 6e 61 6d  65 64 20 72 65 67 69 73  |.All named regis|
00009c30  74 65 72 73 20 70 72 65  73 65 72 76 65 64 0a 0a  |ters preserved..|
00009c40  4e 75 6d 62 65 72 09 4e  61 6d 65 0a 23 4c 69 6e  |Number.Name.#Lin|
00009c50  65 0a 00 00 44 41 54 41  8d 02 00 00 44 65 76 69  |e...DATA....Devi|
00009c60  63 65 20 64 72 69 76 65  72 20 69 6e 69 74 69 61  |ce driver initia|
00009c70  6c 69 73 65 20 65 6e 74  72 79 20 70 6f 69 6e 74  |lise entry point|
00009c80  20 28 30 29 0a 23 50 61  72 65 6e 74 20 44 65 76  | (0).#Parent Dev|
00009c90  69 63 65 46 53 5f 43 61  6c 6c 44 65 76 69 63 65  |iceFS_CallDevice|
00009ca0  0a 3d 3e 09 52 30 20 3d  09 30 0a 09 52 32 20 3d  |.=>.R0 =.0..R2 =|
00009cb0  09 44 65 76 69 63 65 46  53 20 73 74 72 65 61 6d  |.DeviceFS stream|
00009cc0  20 68 61 6e 64 6c 65 0a  09 52 33 20 3d 09 66 6c  | handle..R3 =.fl|
00009cd0  61 67 73 3a 20 62 69 74  20 30 20 63 6c 65 61 72  |ags: bit 0 clear|
00009ce0  20 66 6f 72 20 52 58 2c  20 65 6c 73 65 20 54 58  | for RX, else TX|
00009cf0  0a 09 52 36 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R6 =.pointer t|
00009d00  6f 20 3c 22 73 70 65 63  69 61 6c 20 66 69 65 6c  |o <"special fiel|
00009d10  64 20 63 6f 6e 74 72 6f  6c 20 62 6c 6f 63 6b 22  |d control block"|
00009d20  3d 3e 44 65 76 69 63 65  46 53 5f 73 70 65 63 69  |=>DeviceFS_speci|
00009d30  61 6c 3e 0a 3c 3d 09 52  32 20 3d 09 64 65 76 69  |al>.<=.R2 =.devi|
00009d40  63 65 20 64 72 69 76 65  72 20 73 74 72 65 61 6d  |ce driver stream|
00009d50  20 68 61 6e 64 6c 65 0a  0a 54 68 69 73 20 65 6e  | handle..This en|
00009d60  74 72 79 20 70 6f 69 6e  74 20 69 73 20 63 61 6c  |try point is cal|
00009d70  6c 65 64 20 77 68 65 6e  20 44 65 76 69 63 65 46  |led when DeviceF|
00009d80  53 20 6f 70 65 6e 73 20  61 20 73 74 72 65 61 6d  |S opens a stream|
00009d90  20 6f 6e 74 6f 20 74 68  65 20 64 65 76 69 63 65  | onto the device|
00009da0  20 64 72 69 76 65 72 2e  20 54 68 65 20 7b 2f 7d  | driver. The {/}|
00009db0  73 74 72 65 61 6d 20 68  61 6e 64 6c 65 7b 2f 7d  |stream handle{/}|
00009dc0  20 69 74 20 73 75 70 70  6c 69 65 73 20 6d 75 73  | it supplies mus|
00009dd0  74 20 62 65 20 73 74 6f  72 65 64 2c 20 61 73 20  |t be stored, as |
00009de0  79 6f 75 20 6e 65 65 64  20 69 74 20 66 6f 72 20  |you need it for |
00009df0  44 65 76 69 63 65 46 53  20 53 57 49 73 20 73 75  |DeviceFS SWIs su|
00009e00  63 68 20 61 73 20 3c 44  65 76 69 63 65 46 53 5f  |ch as <DeviceFS_|
00009e10  52 65 63 65 69 76 65 64  43 68 61 72 61 63 74 65  |ReceivedCharacte|
00009e20  72 3e 2e 20 2a 59 6f 75  72 2a 20 7b 2f 7d 73 74  |r>. *Your* {/}st|
00009e30  72 65 61 6d 20 68 61 6e  64 6c 65 7b 2f 7d 20 77  |ream handle{/} w|
00009e40  69 6c 6c 20 62 65 20 70  61 73 73 65 64 20 74 6f  |ill be passed to|
00009e50  20 6f 74 68 65 72 20 65  6e 74 72 79 20 70 6f 69  | other entry poi|
00009e60  6e 74 73 20 2d 20 30 20  69 73 20 61 20 72 65 73  |nts - 0 is a res|
00009e70  65 72 76 65 64 20 76 61  6c 75 65 2c 20 73 6f 20  |erved value, so |
00009e80  79 6f 75 20 6d 61 79 20  6e 6f 74 20 75 73 65 20  |you may not use |
00009e90  74 68 69 73 20 61 73 20  79 6f 75 72 20 68 61 6e  |this as your han|
00009ea0  64 6c 65 2e 20 54 68 65  20 62 6c 6f 63 6b 20 69  |dle. The block i|
00009eb0  6e 20 52 36 20 77 69 6c  6c 20 72 65 6d 61 69 6e  |n R6 will remain|
00009ec0  20 69 6e 74 61 63 74 20  75 6e 74 69 6c 20 74 68  | intact until th|
00009ed0  65 20 73 74 72 65 61 6d  20 63 6c 6f 73 65 73 2e  |e stream closes.|
00009ee0  0a 00 00 00 44 41 54 41  10 01 00 00 44 65 76 69  |....DATA....Devi|
00009ef0  63 65 20 64 72 69 76 65  72 20 66 69 6e 61 6c 69  |ce driver finali|
00009f00  73 65 20 65 6e 74 72 79  20 70 6f 69 6e 74 20 28  |se entry point (|
00009f10  31 29 0a 23 50 61 72 65  6e 74 20 44 65 76 69 63  |1).#Parent Devic|
00009f20  65 46 53 5f 43 61 6c 6c  44 65 76 69 63 65 0a 3d  |eFS_CallDevice.=|
00009f30  3e 09 52 30 20 3d 09 31  0a 09 52 32 20 3d 09 64  |>.R0 =.1..R2 =.d|
00009f40  65 76 69 63 65 20 64 72  69 76 65 72 20 73 74 72  |evice driver str|
00009f50  65 61 6d 20 68 61 6e 64  6c 65 2c 20 6f 72 20 30  |eam handle, or 0|
00009f60  20 66 6f 72 20 61 6c 6c  20 73 74 72 65 61 6d 73  | for all streams|
00009f70  0a 0a 54 68 69 73 20 65  6e 74 72 79 20 70 6f 69  |..This entry poi|
00009f80  6e 74 20 69 73 20 63 61  6c 6c 65 64 20 77 68 65  |nt is called whe|
00009f90  6e 20 44 65 76 69 63 65  46 53 20 63 6c 6f 73 65  |n DeviceFS close|
00009fa0  73 20 61 20 73 74 72 65  61 6d 20 6f 6e 20 74 68  |s a stream on th|
00009fb0  65 20 64 65 76 69 63 65  20 64 72 69 76 65 72 2c  |e device driver,|
00009fc0  20 6f 72 20 77 68 65 6e  20 74 68 65 20 64 65 76  | or when the dev|
00009fd0  69 63 65 20 64 72 69 76  65 72 20 69 73 20 62 65  |ice driver is be|
00009fe0  69 6e 67 20 72 65 6d 6f  76 65 64 20 28 52 32 3d  |ing removed (R2=|
00009ff0  30 29 2e 0a 44 41 54 41  fb 01 00 00 44 65 76 69  |0)..DATA....Devi|
0000a000  63 65 20 64 72 69 76 65  72 20 45 6e 64 20 6f 66  |ce driver End of|
0000a010  20 44 61 74 61 20 65 6e  74 72 79 20 70 6f 69 6e  | Data entry poin|
0000a020  74 20 28 31 30 29 0a 23  50 61 72 65 6e 74 20 44  |t (10).#Parent D|
0000a030  65 76 69 63 65 46 53 5f  43 61 6c 6c 44 65 76 69  |eviceFS_CallDevi|
0000a040  63 65 0a 3d 3e 09 52 30  20 3d 09 31 30 0a 09 52  |ce.=>.R0 =.10..R|
0000a050  32 20 3d 09 64 65 76 69  63 65 20 64 72 69 76 65  |2 =.device drive|
0000a060  72 20 73 74 72 65 61 6d  20 68 61 6e 64 6c 65 0a  |r stream handle.|
0000a070  09 52 33 20 3d 09 2d 31  0a 3c 3d 09 52 33 20 3d  |.R3 =.-1.<=.R3 =|
0000a080  09 30 20 69 66 20 6e 6f  74 20 65 6e 64 20 6f 66  |.0 if not end of|
0000a090  20 64 61 74 61 0a 09 20  09 2d 31 20 69 66 20 65  | data.. .-1 if e|
0000a0a0  6e 64 20 6f 66 20 64 61  74 61 0a 0a 57 68 65 6e  |nd of data..When|
0000a0b0  20 44 65 76 69 63 65 46  53 20 69 73 20 61 73 6b  | DeviceFS is ask|
0000a0c0  65 64 20 69 66 20 45 4f  46 20 68 61 73 20 62 65  |ed if EOF has be|
0000a0d0  65 6e 20 72 65 61 63 68  65 64 2c 20 69 74 20 77  |en reached, it w|
0000a0e0  69 6c 6c 20 72 65 73 70  6f 6e 64 20 66 61 6c 73  |ill respond fals|
0000a0f0  65 20 69 66 20 61 20 62  75 66 66 65 72 65 64 20  |e if a buffered |
0000a100  73 74 72 65 61 6d 20 73  74 69 6c 6c 20 68 61 73  |stream still has|
0000a110  20 62 75 66 66 65 72 65  64 20 64 61 74 61 2c 20  | buffered data, |
0000a120  6f 72 20 61 6e 20 75 6e  62 75 66 66 65 72 65 64  |or an unbuffered|
0000a130  20 73 74 72 65 61 6d 20  68 61 73 20 61 20 6e 6f  | stream has a no|
0000a140  6e 2d 65 6d 70 74 79 20  52 58 2f 54 58 20 77 6f  |n-empty RX/TX wo|
0000a150  72 64 2e 20 4f 74 68 65  72 77 69 73 65 20 69 74  |rd. Otherwise it|
0000a160  20 63 61 6c 6c 73 20 74  68 69 73 20 65 6e 74 72  | calls this entr|
0000a170  79 20 70 6f 69 6e 74 2e  20 4d 6f 73 74 20 64 65  |y point. Most de|
0000a180  76 69 63 65 73 20 77 69  6c 6c 20 72 65 74 75 72  |vices will retur|
0000a190  6e 20 2d 31 20 28 45 4f  46 20 72 65 61 63 68 65  |n -1 (EOF reache|
0000a1a0  64 29 20 62 75 74 20 73  6f 6d 65 20 28 7b 2f 7d  |d) but some ({/}|
0000a1b0  65 2e 67 2e 7b 2f 7d 20  61 20 73 63 61 6e 6e 65  |e.g.{/} a scanne|
0000a1c0  72 29 20 6d 61 79 20 6b  6e 6f 77 20 74 68 61 74  |r) may know that|
0000a1d0  20 74 68 65 72 65 20 69  73 20 73 74 69 6c 6c 20  | there is still |
0000a1e0  64 61 74 61 20 74 6f 20  64 6f 6d 65 29 2e 0a 00  |data to dome)...|
0000a1f0  44 41 54 41 21 01 00 00  44 65 76 69 63 65 20 64  |DATA!...Device d|
0000a200  72 69 76 65 72 20 53 74  72 65 61 6d 20 63 72 65  |river Stream cre|
0000a210  61 74 65 64 20 65 6e 74  72 79 20 70 6f 69 6e 74  |ated entry point|
0000a220  20 28 31 31 29 0a 23 50  61 72 65 6e 74 20 44 65  | (11).#Parent De|
0000a230  76 69 63 65 46 53 5f 43  61 6c 6c 44 65 76 69 63  |viceFS_CallDevic|
0000a240  65 0a 3d 3e 09 52 30 20  3d 09 31 31 0a 09 52 32  |e.=>.R0 =.11..R2|
0000a250  20 3d 09 64 65 76 69 63  65 20 64 72 69 76 65 72  | =.device driver|
0000a260  20 73 74 72 65 61 6d 20  68 61 6e 64 6c 65 0a 09  | stream handle..|
0000a270  52 33 20 3d 09 62 75 66  66 65 72 20 68 61 6e 64  |R3 =.buffer hand|
0000a280  6c 65 2c 20 6f 72 20 2d  31 20 66 6f 72 20 6e 6f  |le, or -1 for no|
0000a290  6e 65 0a 0a 54 68 69 73  20 65 6e 74 72 79 20 70  |ne..This entry p|
0000a2a0  6f 69 6e 74 20 69 73 20  63 61 6c 6c 65 64 20 77  |oint is called w|
0000a2b0  68 65 6e 20 61 20 73 74  72 65 61 6d 20 67 65 6e  |hen a stream gen|
0000a2c0  65 72 61 74 69 6f 6e 20  69 73 20 63 6f 6d 70 6c  |eration is compl|
0000a2d0  65 74 65 2e 20 59 6f 75  72 20 64 65 76 69 63 65  |ete. Your device|
0000a2e0  20 64 72 69 76 65 72 20  63 61 6e 20 6e 6f 77 20  | driver can now |
0000a2f0  73 74 61 72 74 20 72 65  63 69 65 76 69 6e 67 20  |start recieving |
0000a300  6f 72 20 74 72 61 6e 73  6d 69 74 74 69 6e 67 2e  |or transmitting.|
0000a310  0a 00 00 00 44 41 54 41  78 01 00 00 44 65 76 69  |....DATAx...Devi|
0000a320  63 65 20 64 72 69 76 65  72 20 57 61 6b 65 20 75  |ce driver Wake u|
0000a330  70 20 66 6f 72 20 54 58  20 65 6e 74 72 79 20 70  |p for TX entry p|
0000a340  6f 69 6e 74 20 28 32 29  0a 23 50 61 72 65 6e 74  |oint (2).#Parent|
0000a350  20 44 65 76 69 63 65 46  53 5f 43 61 6c 6c 44 65  | DeviceFS_CallDe|
0000a360  76 69 63 65 0a 3d 3e 09  52 30 20 3d 09 32 0a 09  |vice.=>.R0 =.2..|
0000a370  52 32 20 3d 09 64 65 76  69 63 65 20 64 72 69 76  |R2 =.device driv|
0000a380  65 72 20 73 74 72 65 61  6d 20 68 61 6e 64 6c 65  |er stream handle|
0000a390  0a 3c 3d 09 52 30 20 3d  09 30 20 69 66 20 79 6f  |.<=.R0 =.0 if yo|
0000a3a0  75 20 77 69 73 68 20 74  6f 20 72 65 6d 61 69 6e  |u wish to remain|
0000a3b0  20 64 6f 72 6d 61 6e 74  0a 09 20 09 32 20 69 66  | dormant.. .2 if|
0000a3c0  20 79 6f 75 20 61 72 65  20 72 65 61 64 79 20 74  | you are ready t|
0000a3d0  6f 20 74 72 61 6e 73 6d  69 74 0a 0a 54 68 69 73  |o transmit..This|
0000a3e0  20 65 6e 74 72 79 20 70  6f 69 6e 74 20 69 73 20  | entry point is |
0000a3f0  63 61 6c 6c 65 64 20 77  68 65 6e 20 44 65 76 69  |called when Devi|
0000a400  63 65 46 53 20 68 61 73  20 64 61 74 61 20 72 65  |ceFS has data re|
0000a410  61 64 79 20 74 6f 20 74  72 61 6e 73 6d 69 74 2e  |ady to transmit.|
0000a420  20 49 66 20 79 6f 75 20  77 69 73 68 20 74 6f 20  | If you wish to |
0000a430  77 61 6b 65 20 75 70 20  74 72 61 6e 73 6d 69 74  |wake up transmit|
0000a440  20 64 61 74 61 20 79 6f  75 20 73 68 6f 75 6c 64  | data you should|
0000a450  20 63 61 6c 6c 20 3c 44  65 76 69 63 65 46 53 5f  | call <DeviceFS_|
0000a460  54 72 61 6e 73 6d 69 74  43 68 61 72 61 63 74 65  |TransmitCharacte|
0000a470  72 3e 20 74 6f 20 6f 62  74 61 69 6e 20 62 79 74  |r> to obtain byt|
0000a480  65 73 20 74 6f 20 73 65  6e 64 2e 0a 44 41 54 41  |es to send..DATA|
0000a490  0b 01 00 00 44 65 76 69  63 65 20 64 72 69 76 65  |....Device drive|
0000a4a0  72 20 57 61 6b 65 20 75  70 20 66 6f 72 20 52 58  |r Wake up for RX|
0000a4b0  20 65 6e 74 72 79 20 70  6f 69 6e 74 20 28 33 29  | entry point (3)|
0000a4c0  0a 23 50 61 72 65 6e 74  20 44 65 76 69 63 65 46  |.#Parent DeviceF|
0000a4d0  53 5f 43 61 6c 6c 44 65  76 69 63 65 0a 3d 3e 09  |S_CallDevice.=>.|
0000a4e0  52 30 20 3d 09 33 0a 09  52 32 20 3d 09 64 65 76  |R0 =.3..R2 =.dev|
0000a4f0  69 63 65 20 64 72 69 76  65 72 20 73 74 72 65 61  |ice driver strea|
0000a500  6d 20 68 61 6e 64 6c 65  0a 0a 54 68 69 73 20 65  |m handle..This e|
0000a510  6e 74 72 79 20 70 6f 69  6e 74 20 69 73 20 63 61  |ntry point is ca|
0000a520  6c 6c 65 64 20 77 68 65  6e 20 44 65 76 69 63 65  |lled when Device|
0000a530  46 53 20 77 61 6e 74 73  20 64 61 74 61 20 66 72  |FS wants data fr|
0000a540  6f 6d 20 74 68 65 20 64  65 76 69 63 65 2e 20 59  |om the device. Y|
0000a550  6f 75 20 73 68 6f 75 6c  64 20 63 61 6c 6c 20 3c  |ou should call <|
0000a560  44 65 76 69 63 65 46 53  5f 52 65 63 65 69 76 65  |DeviceFS_Receive|
0000a570  64 43 68 61 72 61 63 74  65 72 3e 20 61 73 20 62  |dCharacter> as b|
0000a580  79 74 65 73 20 62 65 63  6f 6d 65 20 61 76 61 69  |ytes become avai|
0000a590  6c 61 62 6c 65 2e 0a 00  44 41 54 41 1d 01 00 00  |lable...DATA....|
0000a5a0  44 65 76 69 63 65 20 64  72 69 76 65 72 20 53 6c  |Device driver Sl|
0000a5b0  65 65 70 20 52 58 20 65  6e 74 72 79 20 70 6f 69  |eep RX entry poi|
0000a5c0  6e 74 20 28 34 29 0a 23  50 61 72 65 6e 74 20 44  |nt (4).#Parent D|
0000a5d0  65 76 69 63 65 46 53 5f  43 61 6c 6c 44 65 76 69  |eviceFS_CallDevi|
0000a5e0  63 65 0a 3d 3e 09 52 30  20 3d 09 34 0a 09 52 32  |ce.=>.R0 =.4..R2|
0000a5f0  20 3d 09 64 65 76 69 63  65 20 64 72 69 76 65 72  | =.device driver|
0000a600  20 73 74 72 65 61 6d 20  68 61 6e 64 6c 65 0a 0a  | stream handle..|
0000a610  54 68 69 73 20 65 6e 74  72 79 20 70 6f 69 6e 74  |This entry point|
0000a620  20 69 73 20 63 61 6c 6c  65 64 20 77 68 65 6e 20  | is called when |
0000a630  44 65 76 69 63 65 46 53  20 6e 6f 20 6c 6f 6e 67  |DeviceFS no long|
0000a640  65 72 20 61 77 61 69 74  73 20 64 61 74 61 20 66  |er awaits data f|
0000a650  72 6f 6d 20 74 68 65 20  64 65 76 69 63 65 2e 20  |rom the device. |
0000a660  49 6e 74 65 72 75 70 74  2d 64 72 69 76 65 6e 20  |Interupt-driven |
0000a670  62 75 66 66 65 72 65 64  20 64 65 76 69 63 65 20  |buffered device |
0000a680  64 72 69 76 65 72 73 20  77 69 6c 6c 20 69 67 6e  |drivers will ign|
0000a690  6f 72 65 20 74 68 69 73  20 63 61 6c 6c 2c 20 61  |ore this call, a|
0000a6a0  73 20 74 68 65 79 20 64  6f 20 6e 6f 74 20 73 6c  |s they do not sl|
0000a6b0  65 65 70 2e 0a 00 00 00  44 41 54 41 39 01 00 00  |eep.....DATA9...|
0000a6c0  44 65 76 69 63 65 20 64  72 69 76 65 72 20 45 6e  |Device driver En|
0000a6d0  75 6d 65 72 61 74 65 20  64 69 72 65 63 74 6f 72  |umerate director|
0000a6e0  79 20 65 6e 74 72 79 20  70 6f 69 6e 74 20 28 35  |y entry point (5|
0000a6f0  29 0a 23 50 61 72 65 6e  74 20 44 65 76 69 63 65  |).#Parent Device|
0000a700  46 53 5f 43 61 6c 6c 44  65 76 69 63 65 0a 3d 3e  |FS_CallDevice.=>|
0000a710  09 52 30 20 3d 09 35 0a  09 52 32 20 3d 09 70 6f  |.R0 =.5..R2 =.po|
0000a720  69 6e 74 65 72 20 74 6f  20 70 61 74 68 20 62 65  |inter to path be|
0000a730  69 6e 67 20 65 6e 75 6d  65 72 61 74 65 64 20 28  |ing enumerated (|
0000a740  6e 75 6c 6c 20 74 65 72  6d 69 6e 61 74 65 64 29  |null terminated)|
0000a750  0a 0a 54 68 69 73 20 65  6e 74 72 79 20 70 6f 69  |..This entry poi|
0000a760  6e 74 20 69 73 20 63 61  6c 6c 65 64 20 69 6e 20  |nt is called in |
0000a770  61 6c 6c 20 64 65 76 69  63 65 73 20 77 68 65 6e  |all devices when|
0000a780  20 74 68 65 20 44 65 76  69 63 65 46 53 20 64 69  | the DeviceFS di|
0000a790  72 65 63 74 6f 72 79 20  73 74 72 75 63 74 75 72  |rectory structur|
0000a7a0  65 20 69 73 20 61 62 6f  75 74 20 74 6f 20 62 65  |e is about to be|
0000a7b0  20 72 65 61 64 2c 20 61  6c 6c 6f 77 69 6e 67 20  | read, allowing |
0000a7c0  64 65 76 69 63 65 73 20  74 6f 20 61 64 64 20 61  |devices to add a|
0000a7d0  6e 64 20 72 65 6d 6f 76  65 20 6e 6f 6e 2d 70 65  |nd remove non-pe|
0000a7e0  72 6d 61 6e 65 6e 74 20  64 65 76 69 63 65 73 2e  |rmanent devices.|
0000a7f0  0a 00 00 00 44 41 54 41  e5 02 00 00 44 65 76 69  |....DATA....Devi|
0000a800  63 65 20 64 72 69 76 65  72 20 43 72 65 61 74 65  |ce driver Create|
0000a810  20 62 75 66 66 65 72 20  65 6e 74 72 79 20 70 6f  | buffer entry po|
0000a820  69 6e 74 73 20 28 36 20  26 20 37 29 0a 23 50 61  |ints (6 & 7).#Pa|
0000a830  72 65 6e 74 20 44 65 76  69 63 65 46 53 5f 43 61  |rent DeviceFS_Ca|
0000a840  6c 6c 44 65 76 69 63 65  0a 3d 3e 09 52 30 20 3d  |llDevice.=>.R0 =|
0000a850  09 36 20 28 54 58 20 62  75 66 66 65 72 29 20 6f  |.6 (TX buffer) o|
0000a860  72 20 37 20 28 52 58 20  62 75 66 66 65 72 29 0a  |r 7 (RX buffer).|
0000a870  09 52 32 20 3d 09 64 65  76 69 63 65 20 64 72 69  |.R2 =.device dri|
0000a880  76 65 72 20 73 74 72 65  61 6d 20 68 61 6e 64 6c  |ver stream handl|
0000a890  65 0a 09 52 33 20 3d 09  73 75 67 67 65 73 74 65  |e..R3 =.suggeste|
0000a8a0  64 20 3c 62 75 66 66 65  72 20 66 6c 61 67 73 3d  |d <buffer flags=|
0000a8b0  3e 42 75 66 66 65 72 5f  66 6c 61 67 73 3e 0a 09  |>Buffer_flags>..|
0000a8c0  52 34 20 3d 09 73 75 67  67 65 73 74 65 64 20 62  |R4 =.suggested b|
0000a8d0  75 66 66 65 72 20 73 69  7a 65 20 28 6e 6f 6e 2d  |uffer size (non-|
0000a8e0  7a 65 72 6f 29 0a 09 52  35 20 3d 09 73 75 67 67  |zero)..R5 =.sugg|
0000a8f0  65 73 74 65 64 20 62 75  66 66 65 72 20 68 61 6e  |ested buffer han|
0000a900  64 6c 65 2c 20 6f 72 20  2d 31 20 74 6f 20 67 65  |dle, or -1 to ge|
0000a910  6e 65 72 61 74 65 20 75  6e 69 71 75 65 20 68 61  |nerate unique ha|
0000a920  6e 64 6c 65 0a 09 52 36  20 3d 09 73 75 67 67 65  |ndle..R6 =.sugge|
0000a930  73 74 65 64 20 62 75 66  66 65 72 20 74 68 72 65  |sted buffer thre|
0000a940  73 68 6f 6c 64 20 28 77  68 65 6e 20 3c 68 61 6c  |shold (when <hal|
0000a950  74 20 65 76 65 6e 74 3d  3e 44 65 76 69 63 65 46  |t event=>DeviceF|
0000a960  53 5f 65 6e 74 72 79 38  3e 20 69 73 20 63 61 6c  |S_entry8> is cal|
0000a970  6c 65 64 29 0a 3c 3d 09  52 33 2d 52 36 20 6d 6f  |led).<=.R3-R6 mo|
0000a980  64 69 66 69 65 64 20 74  6f 20 64 72 69 76 65 72  |dified to driver|
0000a990  27 73 20 72 65 71 75 69  72 65 6d 65 6e 74 73 0a  |'s requirements.|
0000a9a0  0a 54 68 69 73 20 65 6e  74 72 79 20 70 6f 69 6e  |.This entry poin|
0000a9b0  74 20 69 73 20 63 61 6c  6c 65 64 20 6a 75 73 74  |t is called just|
0000a9c0  20 62 65 66 6f 72 65 20  74 68 65 20 62 75 66 66  | before the buff|
0000a9d0  65 72 20 69 73 20 63 72  65 61 74 65 64 2c 20 74  |er is created, t|
0000a9e0  6f 20 61 6c 6c 6f 77 20  74 68 65 20 64 72 69 76  |o allow the driv|
0000a9f0  65 72 20 74 6f 20 6d 6f  64 69 66 79 20 70 61 72  |er to modify par|
0000aa00  61 6d 65 74 65 72 73 20  61 73 20 64 65 73 69 72  |ameters as desir|
0000aa10  65 64 2e 20 54 68 65 20  73 75 67 67 65 73 74 65  |ed. The suggeste|
0000aa20  64 20 62 75 66 66 65 72  20 66 6c 61 67 73 20 61  |d buffer flags a|
0000aa30  72 65 20 74 68 6f 73 65  20 67 69 76 65 6e 20 77  |re those given w|
0000aa40  68 65 6e 20 74 68 65 20  3c 64 65 76 69 63 65 20  |hen the <device |
0000aa50  77 61 73 20 72 65 67 69  73 74 65 72 65 64 3d 3e  |was registered=>|
0000aa60  44 65 76 69 63 65 46 53  5f 64 65 76 69 63 65 73  |DeviceFS_devices|
0000aa70  3e 2e 20 52 35 20 77 69  6c 6c 20 64 65 66 61 75  |>. R5 will defau|
0000aa80  6c 74 20 74 6f 20 2d 31  20 28 67 65 6e 65 72 61  |lt to -1 (genera|
0000aa90  74 65 20 75 6e 69 71 75  65 20 68 61 6e 64 6c 65  |te unique handle|
0000aaa0  29 20 62 75 74 20 79 6f  75 20 6d 61 79 20 73 70  |) but you may sp|
0000aab0  65 63 69 66 79 20 74 68  65 20 6e 75 6d 62 65 72  |ecify the number|
0000aac0  20 6f 66 20 61 20 62 75  66 66 65 72 20 74 6f 20  | of a buffer to |
0000aad0  6c 69 6e 6b 20 74 6f 2e  0a 00 00 00 44 41 54 41  |link to.....DATA|
0000aae0  63 01 00 00 44 65 76 69  63 65 20 64 72 69 76 65  |c...Device drive|
0000aaf0  72 20 48 61 6c 74 20 65  6e 74 72 79 20 70 6f 69  |r Halt entry poi|
0000ab00  6e 74 20 28 38 29 0a 23  50 61 72 65 6e 74 20 44  |nt (8).#Parent D|
0000ab10  65 76 69 63 65 46 53 5f  43 61 6c 6c 44 65 76 69  |eviceFS_CallDevi|
0000ab20  63 65 0a 3d 3e 09 52 30  20 3d 09 38 0a 09 52 32  |ce.=>.R0 =.8..R2|
0000ab30  20 3d 09 64 65 76 69 63  65 20 64 72 69 76 65 72  | =.device driver|
0000ab40  20 73 74 72 65 61 6d 20  68 61 6e 64 6c 65 0a 0a  | stream handle..|
0000ab50  54 68 69 73 20 65 6e 74  72 79 20 70 6f 69 6e 74  |This entry point|
0000ab60  20 69 73 20 63 61 6c 6c  65 64 20 77 68 65 6e 20  | is called when |
0000ab70  74 68 65 20 66 72 65 65  20 73 70 61 63 65 20 66  |the free space f|
0000ab80  61 6c 6c 73 20 62 65 6c  6f 77 20 74 68 65 20 74  |alls below the t|
0000ab90  68 72 65 73 68 6f 6c 64  20 28 73 65 74 20 6f 6e  |hreshold (set on|
0000aba0  20 63 72 65 61 74 69 6f  6e 2c 20 6f 72 20 6d 6f  | creation, or mo|
0000abb0  64 69 66 69 65 64 20 62  79 20 3c 44 65 76 69 63  |dified by <Devic|
0000abc0  65 46 53 5f 54 68 72 65  73 68 6f 6c 64 3e 29 2e  |eFS_Threshold>).|
0000abd0  20 49 74 20 61 6c 6c 6f  77 73 20 74 68 65 20 64  | It allows the d|
0000abe0  72 69 76 65 72 20 74 6f  20 61 74 74 65 6d 70 74  |river to attempt|
0000abf0  20 74 6f 20 73 74 6f 70  20 69 6e 63 6f 6d 69 6e  | to stop incomin|
0000ac00  67 20 64 61 74 61 20 28  7b 2f 7d 65 2e 67 2e 7b  |g data ({/}e.g.{|
0000ac10  2f 7d 20 61 20 73 65 72  69 61 6c 20 64 65 76 69  |/} a serial devi|
0000ac20  63 65 20 63 6f 75 6c 64  20 70 65 72 66 6f 72 6d  |ce could perform|
0000ac30  20 68 61 6e 64 73 68 61  6b 69 6e 67 29 2e 0a 00  | handshaking)...|
0000ac40  44 41 54 41 68 01 00 00  44 65 76 69 63 65 20 64  |DATAh...Device d|
0000ac50  72 69 76 65 72 20 52 65  73 75 6d 65 20 65 6e 74  |river Resume ent|
0000ac60  72 79 20 70 6f 69 6e 74  20 28 39 29 0a 23 50 61  |ry point (9).#Pa|
0000ac70  72 65 6e 74 20 44 65 76  69 63 65 46 53 5f 43 61  |rent DeviceFS_Ca|
0000ac80  6c 6c 44 65 76 69 63 65  0a 3d 3e 09 52 30 20 3d  |llDevice.=>.R0 =|
0000ac90  09 39 0a 09 52 32 20 3d  09 64 65 76 69 63 65 20  |.9..R2 =.device |
0000aca0  64 72 69 76 65 72 20 73  74 72 65 61 6d 20 68 61  |driver stream ha|
0000acb0  6e 64 6c 65 0a 0a 54 68  69 73 20 65 6e 74 72 79  |ndle..This entry|
0000acc0  20 70 6f 69 6e 74 20 69  73 20 63 61 6c 6c 65 64  | point is called|
0000acd0  20 77 68 65 6e 20 74 68  65 20 66 72 65 65 20 73  | when the free s|
0000ace0  70 61 63 65 20 72 69 73  65 73 20 61 62 6f 76 65  |pace rises above|
0000acf0  20 74 68 65 20 74 68 72  65 73 68 6f 6c 64 20 28  | the threshold (|
0000ad00  73 65 74 20 6f 6e 20 63  72 65 61 74 69 6f 6e 2c  |set on creation,|
0000ad10  20 6f 72 20 6d 6f 64 69  66 69 65 64 20 62 79 20  | or modified by |
0000ad20  3c 44 65 76 69 63 65 46  53 5f 54 68 72 65 73 68  |<DeviceFS_Thresh|
0000ad30  6f 6c 64 3e 29 2e 20 49  74 20 61 6c 6c 6f 77 73  |old>). It allows|
0000ad40  20 74 68 65 20 64 72 69  76 65 72 20 74 6f 20 61  | the driver to a|
0000ad50  74 74 65 6d 70 74 20 74  6f 20 72 65 73 74 61 72  |ttempt to restar|
0000ad60  74 20 69 6e 63 6f 6d 69  6e 67 20 64 61 74 61 20  |t incoming data |
0000ad70  28 7b 2f 7d 65 2e 67 2e  7b 2f 7d 20 61 20 73 65  |({/}e.g.{/} a se|
0000ad80  72 69 61 6c 20 64 65 76  69 63 65 20 63 6f 75 6c  |rial device coul|
0000ad90  64 20 70 65 72 66 6f 72  6d 20 68 61 6e 64 73 68  |d perform handsh|
0000ada0  61 6b 69 6e 67 29 2e 0a  44 41 54 41 06 02 00 00  |aking)..DATA....|
0000adb0  44 65 76 69 63 65 46 53  5f 52 65 63 65 69 76 65  |DeviceFS_Receive|
0000adc0  64 43 68 61 72 61 63 74  65 72 20 20 28 26 34 32  |dCharacter  (&42|
0000add0  37 34 36 29 0a 23 50 61  72 65 6e 74 20 44 65 76  |746).#Parent Dev|
0000ade0  69 63 65 46 53 5f 0a 3d  3e 09 52 30 20 3d 09 62  |iceFS_.=>.R0 =.b|
0000adf0  79 74 65 20 72 65 63 69  65 76 65 64 0a 09 52 31  |yte recieved..R1|
0000ae00  20 3d 09 44 65 76 69 63  65 73 46 53 20 73 74 72  | =.DevicesFS str|
0000ae10  65 61 6d 20 68 61 6e 64  6c 65 0a 3c 3d 09 43 20  |eam handle.<=.C |
0000ae20  63 6c 65 61 72 20 69 66  20 62 79 74 65 20 74 72  |clear if byte tr|
0000ae30  61 6e 73 66 65 72 72 65  64 0a 09 43 20 73 65 74  |ansferred..C set|
0000ae40  20 69 66 20 6e 6f 74 20  74 72 61 6e 73 66 65 72  | if not transfer|
0000ae50  72 65 64 0a 0a 54 68 69  73 20 53 57 49 20 69 73  |red..This SWI is|
0000ae60  20 6d 61 64 65 20 62 79  20 61 20 64 65 76 69 63  | made by a devic|
0000ae70  65 20 77 68 65 6e 20 69  74 20 72 65 63 69 65 76  |e when it reciev|
0000ae80  65 73 20 61 20 63 68 61  72 61 63 74 65 72 2e 20  |es a character. |
0000ae90  44 65 76 69 63 65 46 53  20 77 69 6c 6c 20 74 68  |DeviceFS will th|
0000aea0  65 6e 20 70 72 6f 63 65  73 73 20 74 68 65 20 63  |en process the c|
0000aeb0  68 61 72 61 63 74 65 72  20 28 62 75 66 66 65 72  |haracter (buffer|
0000aec0  20 69 74 2c 20 6f 72 20  75 6e 62 6c 6f 63 6b 20  | it, or unblock |
0000aed0  61 20 77 61 69 74 69 6e  67 20 73 74 72 65 61 6d  |a waiting stream|
0000aee0  29 2e 0a 0a 4e 6f 74 65  20 2d 20 66 6f 72 20 73  |)...Note - for s|
0000aef0  70 65 65 64 20 44 65 76  69 63 65 46 53 5f 52 65  |peed DeviceFS_Re|
0000af00  63 65 69 76 65 64 43 68  61 72 61 63 74 65 72 20  |ceivedCharacter |
0000af10  61 6e 64 20 3c 44 65 76  69 63 65 46 53 5f 54 72  |and <DeviceFS_Tr|
0000af20  61 6e 73 6d 69 74 43 68  61 72 61 63 74 65 72 3e  |ansmitCharacter>|
0000af30  20 64 6f 20 6e 6f 74 20  76 61 6c 69 64 61 74 65  | do not validate|
0000af40  20 74 68 65 20 65 78 74  65 72 6e 61 6c 20 68 61  | the external ha|
0000af50  6e 64 6c 65 20 70 61 73  73 65 64 20 2d 20 73 74  |ndle passed - st|
0000af60  72 61 6e 67 65 20 74 68  69 6e 67 73 20 77 69 6c  |range things wil|
0000af70  6c 20 68 61 70 70 65 6e  20 69 66 20 62 61 64 20  |l happen if bad |
0000af80  68 61 6e 64 6c 65 73 20  61 72 65 20 70 61 73 73  |handles are pass|
0000af90  65 64 2e 0a 23 20 4e 61  73 61 6c 20 64 65 6d 6f  |ed..# Nasal demo|
0000afa0  6e 73 0a 23 20 52 65 61  6c 6c 79 20 3f 0a 00 00  |ns.# Really ?...|
0000afb0  44 41 54 41 77 03 00 00  44 65 76 69 63 65 46 53  |DATAw...DeviceFS|
0000afc0  5f 52 65 67 69 73 74 65  72 20 20 28 26 34 32 37  |_Register  (&427|
0000afd0  34 30 29 0a 23 50 61 72  65 6e 74 20 44 65 76 69  |40).#Parent Devi|
0000afe0  63 65 46 53 5f 0a 3d 3e  09 52 30 20 3d 09 3c 66  |ceFS_.=>.R0 =.<f|
0000aff0  6c 61 67 73 3d 3e 2e 66  6c 61 67 73 3e 0a 09 52  |lags=>.flags>..R|
0000b000  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 6c  |1 =.pointer to l|
0000b010  69 73 74 20 6f 66 20 3c  64 65 76 69 63 65 73 20  |ist of <devices |
0000b020  74 6f 20 69 6e 73 74 61  6c 6c 3d 3e 44 65 76 69  |to install=>Devi|
0000b030  63 65 46 53 5f 64 65 76  69 63 65 73 3e 0a 09 52  |ceFS_devices>..R|
0000b040  32 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |2 =.pointer to <|
0000b050  64 65 76 69 63 65 20 64  72 69 76 65 72 20 65 6e  |device driver en|
0000b060  74 72 79 20 70 6f 69 6e  74 3d 3e 44 65 76 69 63  |try point=>Devic|
0000b070  65 46 53 5f 65 6e 74 72  79 3e 0a 09 52 33 20 3d  |eFS_entry>..R3 =|
0000b080  09 70 72 69 76 61 74 65  20 77 6f 72 64 09 09 28  |.private word..(|
0000b090  70 61 73 73 65 64 20 74  6f 20 65 6e 74 72 79 20  |passed to entry |
0000b0a0  70 6f 69 6e 74 20 69 6e  20 52 38 29 0a 09 52 34  |point in R8)..R4|
0000b0b0  20 3d 09 77 6f 72 6b 73  70 61 63 65 20 70 6f 69  | =.workspace poi|
0000b0c0  6e 74 65 72 09 28 70 61  73 73 65 64 20 74 6f 20  |nter.(passed to |
0000b0d0  65 6e 74 72 79 20 70 6f  69 6e 74 20 69 6e 20 52  |entry point in R|
0000b0e0  31 32 29 0a 09 52 35 20  3d 09 70 6f 69 6e 74 65  |12)..R5 =.pointe|
0000b0f0  72 20 74 6f 20 3c 73 70  65 63 69 61 6c 20 66 69  |r to <special fi|
0000b100  65 6c 64 20 76 61 6c 69  64 61 74 69 6f 6e 20 73  |eld validation s|
0000b110  74 72 69 6e 67 3d 3e 44  65 76 69 63 65 46 53 5f  |tring=>DeviceFS_|
0000b120  73 70 65 63 69 61 6c 3e  0a 09 52 36 20 3d 09 6d  |special>..R6 =.m|
0000b130  61 78 69 6d 69 75 6d 20  52 58 20 64 65 76 69 63  |aximium RX devic|
0000b140  65 73 20 28 30 20 3d 3e  20 6e 6f 6e 65 2c 20 2d  |es (0 => none, -|
0000b150  31 20 3d 3e 20 75 6e 6c  69 6d 69 74 65 64 29 0a  |1 => unlimited).|
0000b160  09 52 37 20 3d 09 6d 61  78 69 6d 69 75 6d 20 54  |.R7 =.maximium T|
0000b170  58 20 64 65 76 69 63 65  73 20 28 30 20 3d 3e 20  |X devices (0 => |
0000b180  6e 6f 6e 65 2c 20 2d 31  20 3d 3e 20 75 6e 6c 69  |none, -1 => unli|
0000b190  6d 69 74 65 64 29 0a 3c  3d 09 52 30 20 3d 09 64  |mited).<=.R0 =.d|
0000b1a0  65 76 69 63 65 20 64 72  69 76 65 72 27 73 20 68  |evice driver's h|
0000b1b0  61 6e 64 6c 65 0a 0a 54  68 69 73 20 53 57 49 20  |andle..This SWI |
0000b1c0  72 65 67 69 73 74 65 72  73 20 61 20 64 65 76 69  |registers a devi|
0000b1d0  63 65 20 64 72 69 76 65  72 20 28 74 68 65 20 68  |ce driver (the h|
0000b1e0  61 72 64 77 61 72 65 20  69 6e 74 65 72 66 61 63  |ardware interfac|
0000b1f0  65 20 63 6f 64 65 29 20  61 6e 64 20 61 73 73 6f  |e code) and asso|
0000b200  63 69 61 74 65 64 20 64  65 76 69 63 65 73 20 28  |ciated devices (|
0000b210  7b 2f 7d 65 2e 67 2e 7b  2f 7d 20 62 75 66 66 65  |{/}e.g.{/} buffe|
0000b220  72 65 64 20 61 6e 64 20  75 6e 62 75 66 66 65 72  |red and unbuffer|
0000b230  65 64 29 20 77 69 74 68  20 44 65 76 69 63 65 46  |ed) with DeviceF|
0000b240  53 2e 20 49 66 20 61 6e  79 20 64 65 76 69 63 65  |S. If any device|
0000b250  20 69 6e 20 74 68 65 20  6c 69 73 74 20 66 61 69  | in the list fai|
0000b260  6c 73 20 74 6f 20 72 65  67 69 73 74 65 72 20 74  |ls to register t|
0000b270  68 65 6e 20 61 6c 6c 20  61 72 65 20 72 65 6d 6f  |hen all are remo|
0000b280  76 65 64 2e 0a 23 73 75  62 70 61 67 65 20 66 6c  |ved..#subpage fl|
0000b290  61 67 73 0a 4d 65 61 6e  69 6e 67 20 6f 66 20 62  |ags.Meaning of b|
0000b2a0  69 74 73 20 69 6e 20 52  30 0a 42 69 74 09 6d 65  |its in R0.Bit.me|
0000b2b0  61 6e 69 6e 67 20 69 66  20 63 6c 65 61 72 09 69  |aning if clear.i|
0000b2c0  66 20 73 65 74 0a 30 09  63 68 61 72 61 63 74 65  |f set.0.characte|
0000b2d0  72 20 64 65 76 69 63 65  09 62 6c 6f 63 6b 20 64  |r device.block d|
0000b2e0  65 76 69 63 65 20 28 75  6e 69 6d 70 6c 65 6d 65  |evice (unimpleme|
0000b2f0  6e 74 65 64 29 0a 31 09  6e 6f 74 20 66 75 6c 6c  |nted).1.not full|
0000b300  20 64 75 70 6c 65 78 09  09 66 75 6c 6c 20 64 75  | duplex..full du|
0000b310  70 6c 65 78 0a 32 2d 33  31 09 30 20 28 72 65 73  |plex.2-31.0 (res|
0000b320  65 72 76 65 64 29 0a 00  44 41 54 41 da 00 00 00  |erved)..DATA....|
0000b330  44 65 76 69 63 65 46 53  5f 52 65 67 69 73 74 65  |DeviceFS_Registe|
0000b340  72 4f 62 6a 65 63 74 73  20 20 28 26 34 32 37 34  |rObjects  (&4274|
0000b350  32 29 0a 23 50 61 72 65  6e 74 20 44 65 76 69 63  |2).#Parent Devic|
0000b360  65 46 53 5f 0a 3d 3e 09  52 30 20 3d 09 64 65 76  |eFS_.=>.R0 =.dev|
0000b370  69 63 65 20 64 72 69 76  65 72 27 73 20 68 61 6e  |ice driver's han|
0000b380  64 6c 65 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |dle..R1 =.pointe|
0000b390  72 20 74 6f 20 6c 69 73  74 20 6f 66 20 3c 64 65  |r to list of <de|
0000b3a0  76 69 63 65 73 20 74 6f  20 69 6e 73 74 61 6c 6c  |vices to install|
0000b3b0  3d 3e 44 65 76 69 63 65  46 53 5f 64 65 76 69 63  |=>DeviceFS_devic|
0000b3c0  65 73 3e 0a 0a 54 68 69  73 20 53 57 49 20 72 65  |es>..This SWI re|
0000b3d0  67 69 73 74 65 72 73 20  61 64 64 69 74 69 6f 6e  |gisters addition|
0000b3e0  61 6c 20 64 65 76 69 63  65 73 20 77 69 74 68 20  |al devices with |
0000b3f0  61 6e 20 64 65 76 69 63  65 20 64 72 69 76 65 72  |an device driver|
0000b400  2e 0a 00 00 44 41 54 41  37 0a 00 00 44 65 76 69  |....DATA7...Devi|
0000b410  63 65 20 64 72 69 76 65  72 20 73 70 65 63 69 61  |ce driver specia|
0000b420  6c 20 66 69 65 6c 64 73  0a 23 50 61 72 65 6e 74  |l fields.#Parent|
0000b430  20 44 65 76 69 63 65 46  53 5f 52 65 67 69 73 74  | DeviceFS_Regist|
0000b440  65 72 0a 28 54 68 69 73  20 69 73 20 70 72 6f 62  |er.(This is prob|
0000b450  61 62 6c 79 20 2f 74 68  65 2f 20 6d 6f 73 74 20  |ably /the/ most |
0000b460  70 6f 6f 72 6c 79 20 65  78 70 6c 61 69 6e 65 64  |poorly explained|
0000b470  20 70 61 72 74 20 6f 66  20 74 68 65 20 65 6e 74  | part of the ent|
0000b480  69 72 65 20 50 52 4d 29  0a 0a 53 70 65 63 69 61  |ire PRM)..Specia|
0000b490  6c 20 66 69 65 6c 64 73  20 63 61 6e 20 62 65 20  |l fields can be |
0000b4a0  75 73 65 64 20 74 6f 20  70 61 73 73 20 65 78 74  |used to pass ext|
0000b4b0  72 61 20 70 61 72 61 6d  65 74 65 72 73 20 74 6f  |ra parameters to|
0000b4c0  20 61 20 64 65 76 69 63  65 2c 20 61 6e 64 20 44  | a device, and D|
0000b4d0  65 76 69 63 65 46 53 20  70 72 6f 76 69 64 65 73  |eviceFS provides|
0000b4e0  20 61 20 6d 65 63 68 61  6e 69 73 6d 20 74 6f 20  | a mechanism to |
0000b4f0  70 61 73 73 20 74 68 65  6d 2c 20 75 73 69 6e 67  |pass them, using|
0000b500  20 61 20 76 61 6c 69 64  61 74 69 6f 6e 20 73 74  | a validation st|
0000b510  72 69 6e 67 2e 20 49 66  20 61 20 64 65 76 69 63  |ring. If a devic|
0000b520  65 20 64 6f 65 73 20 6e  6f 74 20 77 61 6e 74 20  |e does not want |
0000b530  74 6f 20 75 73 65 20 74  68 65 20 44 65 76 69 63  |to use the Devic|
0000b540  65 46 53 20 6d 65 63 68  61 6e 69 73 6d 2c 20 69  |eFS mechanism, i|
0000b550  74 20 73 68 6f 75 6c 64  20 70 61 73 73 20 30 20  |t should pass 0 |
0000b560  61 73 20 74 68 65 20 76  61 6c 69 64 61 74 69 6f  |as the validatio|
0000b570  6e 20 73 74 72 69 6e 67  20 70 6f 69 6e 74 65 72  |n string pointer|
0000b580  2c 20 61 6e 64 20 62 65  20 70 72 65 70 61 72 65  |, and be prepare|
0000b590  64 20 74 6f 20 69 67 6e  6f 72 65 20 75 6e 6b 6e  |d to ignore unkn|
0000b5a0  6f 77 6e 20 70 61 72 61  6d 65 74 65 72 73 20 69  |own parameters i|
0000b5b0  6e 20 74 68 65 20 73 70  65 63 69 61 6c 20 66 69  |n the special fi|
0000b5c0  65 6c 64 2e 0a 0a 56 61  6c 69 64 61 74 69 6f 6e  |eld...Validation|
0000b5d0  20 73 74 72 69 6e 67 73  20 63 6f 6e 73 69 73 74  | strings consist|
0000b5e0  20 6f 66 20 6b 65 79 77  6f 72 64 73 20 61 6e 64  | of keywords and|
0000b5f0  20 65 73 63 61 70 65 73  20 6f 66 20 74 68 65 20  | escapes of the |
0000b600  66 6f 72 6d 0a 0a 20 20  7b 66 43 6f 64 65 7d 6b  |form..  {fCode}k|
0000b610  65 79 77 6f 72 64 5b 2c  6b 65 79 77 6f 72 64 5d  |eyword[,keyword]|
0000b620  2f 65 73 63 61 70 65 5b  2f 65 73 63 61 70 65 5d  |/escape[/escape]|
0000b630  7b 66 7d 0a 0a 65 73 63  61 70 65 20 69 73 20 70  |{f}..escape is p|
0000b640  65 72 6d 69 74 74 65 64  20 74 77 6f 20 76 61 6c  |ermitted two val|
0000b650  75 65 73 3a 0a 0a 2f 4e  09 6e 75 6d 62 65 72 0a  |ues:../N.number.|
0000b660  2f 53 09 73 77 69 74 63  68 0a 0a 49 74 20 69 73  |/S.switch..It is|
0000b670  20 75 6e 63 6c 65 61 72  20 68 6f 77 20 74 68 65  | unclear how the|
0000b680  20 76 61 6c 69 64 61 74  69 6f 6e 20 73 74 72 69  | validation stri|
0000b690  6e 67 20 69 73 20 62 75  69 6c 74 20 75 70 20 62  |ng is built up b|
0000b6a0  79 20 6a 6f 69 6e 69 6e  67 20 6b 65 79 77 6f 72  |y joining keywor|
0000b6b0  64 20 73 65 63 74 69 6f  6e 73 20 2d 20 61 73 20  |d sections - as |
0000b6c0  74 68 65 20 65 73 63 61  70 65 20 69 73 20 66 69  |the escape is fi|
0000b6d0  78 65 64 20 61 74 20 6f  6e 65 20 63 68 61 72 61  |xed at one chara|
0000b6e0  63 74 65 72 20 6d 61 79  62 65 20 74 68 65 20 73  |cter maybe the s|
0000b6f0  65 63 74 69 6f 6e 73 20  61 72 65 20 73 69 6d 70  |ections are simp|
0000b700  6c 79 20 63 6f 6e 63 61  74 65 6e 61 74 65 64 2e  |ly concatenated.|
0000b710  0a 23 20 47 65 72 70 68  3e 20 54 68 69 73 20 69  |.# Gerph> This i|
0000b720  73 20 6d 79 20 62 65 6c  69 65 66 0a 0a 54 68 65  |s my belief..The|
0000b730  20 73 70 65 63 69 61 6c  20 66 69 65 6c 64 20 69  | special field i|
0000b740  74 73 65 6c 66 20 69 73  20 70 61 73 73 65 64 20  |tself is passed |
0000b750  61 63 63 6f 72 64 69 6e  67 20 74 6f 20 74 68 65  |according to the|
0000b760  20 76 61 6c 69 64 61 74  69 6f 6e 20 73 74 72 69  | validation stri|
0000b770  6e 67 2c 20 61 6e 64 20  74 68 65 20 72 65 73 75  |ng, and the resu|
0000b780  6c 74 73 20 70 6c 61 63  65 64 20 69 6e 20 61 20  |lts placed in a |
0000b790  62 75 66 66 65 72 2e 20  54 68 65 20 62 75 66 66  |buffer. The buff|
0000b7a0  65 72 20 68 61 73 20 6f  6e 65 20 77 6f 72 64 20  |er has one word |
0000b7b0  70 65 72 20 65 73 63 61  70 65 2c 20 77 68 69 63  |per escape, whic|
0000b7c0  68 20 69 73 20 73 65 74  20 74 6f 20 26 44 45 41  |h is set to &DEA|
0000b7d0  44 44 45 41 44 20 69 66  20 74 68 65 20 6b 65 79  |DDEAD if the key|
0000b7e0  77 6f 72 64 20 69 73 20  61 62 73 65 6e 74 20 66  |word is absent f|
0000b7f0  72 6f 6d 20 74 68 65 20  73 70 65 63 69 61 6c 20  |rom the special |
0000b800  66 69 65 6c 64 2e 20 22  3c 50 61 72 61 6d 65 74  |field. "<Paramet|
0000b810  65 72 73 3d 3e 2e 70 61  72 61 6d 65 74 65 72 73  |ers=>.parameters|
0000b820  3e 22 20 61 72 65 20 74  65 72 6d 69 6e 61 74 65  |>" are terminate|
0000b830  64 20 62 79 20 61 20 63  6f 6d 6d 61 2c 20 6f 72  |d by a comma, or|
0000b840  20 61 6e 20 6f 75 74 20  6f 66 20 70 6c 61 63 65  | an out of place|
0000b850  20 63 68 61 72 61 63 74  65 72 20 28 7b 2f 7d 65  | character ({/}e|
0000b860  2e 67 2e 7b 2f 7d 20 6c  65 74 74 65 72 20 69 6e  |.g.{/} letter in|
0000b870  20 61 20 6e 75 6d 65 72  69 63 20 66 69 65 6c 64  | a numeric field|
0000b880  29 2e 20 4e 75 6d 62 65  72 73 20 61 72 65 20 72  |). Numbers are r|
0000b890  65 61 64 20 77 69 74 68  20 3c 4f 53 5f 52 65 61  |ead with <OS_Rea|
0000b8a0  64 55 6e 73 69 67 6e 65  64 3e 20 61 6e 64 20 73  |dUnsigned> and s|
0000b8b0  74 6f 72 65 64 20 69 6e  20 74 68 65 20 77 6f 72  |tored in the wor|
0000b8c0  64 2e 20 53 77 69 74 63  68 65 73 20 73 74 6f 72  |d. Switches stor|
0000b8d0  65 20 74 68 65 20 73 74  61 74 65 20 6f 66 20 74  |e the state of t|
0000b8e0  68 65 20 6b 65 79 77 6f  72 64 20 2d 20 73 6f 20  |he keyword - so |
0000b8f0  61 20 76 61 6c 69 64 61  74 69 6f 6e 20 73 74 72  |a validation str|
0000b900  69 6e 67 20 6f 66 0a 0a  23 49 6e 64 65 6e 74 20  |ing of..#Indent |
0000b910  32 3b 66 43 6f 64 65 0a  6d 69 6b 65 2c 64 65 6e  |2;fCode.mike,den|
0000b920  6e 69 73 2f 53 0a 23 69  6e 64 65 6e 74 3b 66 0a  |nis/S.#indent;f.|
0000b930  0a 77 69 6c 6c 20 73 74  6f 72 65 20 30 20 69 66  |.will store 0 if|
0000b940  20 22 6d 69 6b 65 22 20  69 73 20 70 72 65 73 65  | "mike" is prese|
0000b950  6e 74 20 69 6e 20 74 68  65 20 73 70 65 63 69 61  |nt in the specia|
0000b960  6c 20 66 69 65 6c 64 2c  20 31 20 69 66 20 22 64  |l field, 1 if "d|
0000b970  65 6e 6e 69 73 22 20 69  73 20 70 72 65 73 65 6e  |ennis" is presen|
0000b980  74 2e 0a 0a 50 72 65 73  75 6d 61 62 6c 79 20 74  |t...Presumably t|
0000b990  68 69 73 20 6d 65 61 6e  73 20 74 68 61 74 0a 0a  |his means that..|
0000b9a0  23 69 6e 64 65 6e 74 20  32 3b 66 43 6f 64 65 0a  |#indent 2;fCode.|
0000b9b0  6d 69 6b 65 2c 64 65 6e  6e 69 73 2f 53 2f 4e 0a  |mike,dennis/S/N.|
0000b9c0  23 69 6e 64 65 6d 74 3b  66 0a 0a 77 69 6c 6c 20  |#indemt;f..will |
0000b9d0  73 74 6f 72 65 0a 0a 4f  66 66 73 65 74 09 56 61  |store..Offset.Va|
0000b9e0  6c 75 65 0a 23 4c 69 6e  65 0a 30 09 30 0a 34 09  |lue.#Line.0.0.4.|
0000b9f0  37 0a 20 20 66 6f 72 20  22 6d 69 6b 65 37 22 0a  |7.  for "mike7".|
0000ba00  0a 6f 72 0a 0a 30 09 31  0a 34 09 31 36 0a 20 20  |.or..0.1.4.16.  |
0000ba10  66 6f 72 20 22 64 65 6e  6e 69 73 31 36 22 0a 0a  |for "dennis16"..|
0000ba20  49 74 20 69 73 20 6e 6f  74 20 63 6c 65 61 72 20  |It is not clear |
0000ba30  77 68 61 74 20 74 68 65  20 22 7b 2a 7d 73 70 65  |what the "{*}spe|
0000ba40  63 69 61 6c 20 66 69 65  6c 64 20 63 6f 6e 74 72  |cial field contr|
0000ba50  6f 6c 20 62 6c 6f 63 6b  7b 2a 7d 22 20 6f 66 20  |ol block{*}" of |
0000ba60  74 68 65 20 3c 49 6e 69  74 69 61 6c 69 73 65 20  |the <Initialise |
0000ba70  65 6e 74 72 79 20 70 6f  69 6e 74 3d 3e 44 65 76  |entry point=>Dev|
0000ba80  69 63 65 46 53 5f 65 6e  74 72 79 30 3e 20 61 63  |iceFS_entry0> ac|
0000ba90  74 75 61 6c 6c 79 20 2f  69 73 2f 20 2d 20 74 68  |tually /is/ - th|
0000baa0  65 20 74 65 78 74 20 73  75 67 67 65 73 74 73 20  |e text suggests |
0000bab0  74 68 61 74 20 69 74 20  69 73 20 61 20 70 6f 69  |that it is a poi|
0000bac0  6e 74 65 72 20 74 6f 20  74 68 65 20 28 3f 75 6e  |nter to the (?un|
0000bad0  70 61 72 73 65 64 29 20  73 70 65 63 69 61 6c 20  |parsed) special |
0000bae0  66 69 65 6c 64 2c 20 77  68 65 72 65 61 73 20 74  |field, whereas t|
0000baf0  68 65 20 6e 61 6d 65 20  73 75 67 67 65 73 74 73  |he name suggests|
0000bb00  20 69 74 20 69 73 20 61  20 70 6f 69 6e 74 65 72  | it is a pointer|
0000bb10  20 74 6f 20 74 68 69 73  20 70 61 72 73 65 64 20  | to this parsed |
0000bb20  62 6c 6f 63 6b 2e 0a 23  53 75 62 70 61 67 65 20  |block..#Subpage |
0000bb30  70 61 72 61 6d 65 74 65  72 73 0a 22 50 61 72 61  |parameters."Para|
0000bb40  6d 65 74 65 72 73 22 0a  22 50 61 72 61 6d 65 74  |meters"."Paramet|
0000bb50  65 72 73 20 61 72 65 20  73 65 70 61 72 61 74 65  |ers are separate|
0000bb60  64 20 62 79 20 63 6f 6d  6d 61 73 22 2c 20 22 6b  |d by commas", "k|
0000bb70  65 79 77 6f 72 64 73 20  73 65 70 61 72 61 74 65  |eywords separate|
0000bb80  64 20 62 79 20 73 65 6d  69 63 6f 6c 6f 6e 73 22  |d by semicolons"|
0000bb90  20 67 69 76 65 73 20 74  68 65 20 69 6d 70 72 65  | gives the impre|
0000bba0  73 73 69 6f 6e 20 74 68  61 74 20 74 68 65 20 73  |ssion that the s|
0000bbb0  79 73 74 65 6d 20 77 61  73 20 69 6e 74 65 6e 64  |ystem was intend|
0000bbc0  65 64 20 74 6f 20 73 75  70 70 6f 72 74 20 73 74  |ed to support st|
0000bbd0  72 69 6e 67 20 70 61 72  61 6d 65 74 65 72 73 20  |ring parameters |
0000bbe0  69 6e 20 61 64 64 74 69  6f 6e 2e 20 42 6c 6f 63  |in addtion. Bloc|
0000bbf0  6b 20 64 65 76 69 63 65  73 20 61 72 65 20 69 6e  |k devices are in|
0000bc00  20 74 68 65 20 41 50 49  2c 20 79 65 74 20 61 72  | the API, yet ar|
0000bc10  65 20 75 6e 69 6d 70 6c  65 6d 65 6e 74 65 64 20  |e unimplemented |
0000bc20  2d 20 77 61 73 20 44 65  76 69 63 65 46 53 20 6f  |- was DeviceFS o|
0000bc30  6e 6c 79 20 70 61 72 74  69 61 6c 6c 79 20 69 6d  |nly partially im|
0000bc40  70 6c 65 6d 65 6e 74 65  64 3f 0a 23 20 47 65 72  |plemented?.# Ger|
0000bc50  70 68 3e 20 49 27 76 65  20 61 6c 77 61 79 73 20  |ph> I've always |
0000bc60  77 6f 6e 64 65 72 65 64  20 61 62 6f 75 74 20 74  |wondered about t|
0000bc70  68 69 73 2e 2e 2e 20 59  6f 75 27 72 65 20 70 72  |his... You're pr|
0000bc80  6f 62 61 62 6c 79 20 72  69 67 68 74 0a 23 20 20  |obably right.#  |
0000bc90  20 20 20 20 20 20 2f 49  66 2f 20 69 74 20 77 65  |      /If/ it we|
0000bca0  72 65 20 69 6d 70 6c 65  6d 65 6e 74 65 64 20 63  |re implemented c|
0000bcb0  6f 72 72 65 63 74 6c 79  2c 20 69 74 20 77 6f 75  |orrectly, it wou|
0000bcc0  6c 64 20 6d 61 6b 65 20  61 6e 20 65 78 63 65 6c  |ld make an excel|
0000bcd0  6c 65 6e 74 0a 23 20 20  20 20 20 20 20 20 6d 65  |lent.#        me|
0000bce0  64 69 75 6d 20 66 6f 72  20 53 6f 63 6b 65 74 2d  |dium for Socket-|
0000bcf0  6c 69 6b 65 20 74 72 61  6e 73 66 65 72 73 2e 0a  |like transfers..|
0000bd00  23 20 20 20 20 20 20 20  20 48 6f 77 20 61 62 6f  |#        How abo|
0000bd10  75 74 20 61 20 48 54 4d  4c 2d 3e 54 65 78 74 20  |ut a HTML->Text |
0000bd20  63 6f 6e 76 65 72 73 69  6f 6e 2c 20 72 75 6e 6e  |conversion, runn|
0000bd30  69 6e 67 20 61 73 20 69  74 20 72 65 63 65 69 76  |ing as it receiv|
0000bd40  65 73 20 64 61 74 61 20  3f 0a 23 20 20 20 20 20  |es data ?.#     |
0000bd50  20 20 20 4f 72 20 61 20  73 74 72 65 61 6d 69 6e  |   Or a streamin|
0000bd60  67 20 67 72 61 70 68 69  63 20 3f 20 28 6f 75 74  |g graphic ? (out|
0000bd70  70 75 74 73 20 52 47 42  20 76 61 6c 75 65 73 20  |puts RGB values |
0000bd80  61 73 20 74 68 65 79 20  61 72 65 20 70 72 6f 63  |as they are proc|
0000bd90  65 73 73 65 64 0a 23 20  20 20 20 20 20 20 20 69  |essed.#        i|
0000bda0  6e 20 74 68 65 20 62 61  63 6b 67 72 6f 75 6e 64  |n the background|
0000bdb0  2e 0a 23 20 20 20 20 20  20 20 20 6f 6b 2c 20 73  |..#        ok, s|
0000bdc0  6f 20 74 68 65 79 20 61  72 65 20 73 74 75 70 69  |o they are stupi|
0000bdd0  64 20 69 64 65 61 73 2c  20 62 75 74 20 61 74 20  |d ideas, but at |
0000bde0  70 72 65 73 65 6e 74 20  74 68 65 79 20 61 72 65  |present they are|
0000bdf0  20 6e 6f 74 20 73 65 6e  73 69 62 6c 79 0a 23 20  | not sensibly.# |
0000be00  20 20 20 20 20 20 20 70  6f 73 73 69 62 6c 65 20  |       possible |
0000be10  62 65 63 61 75 73 65 20  6f 66 20 63 65 72 74 61  |because of certa|
0000be20  69 6e 20 27 66 61 69 6c  69 6e 67 73 27 20 69 6e  |in 'failings' in|
0000be30  20 44 65 76 69 63 65 46  53 2e 0a 00 44 41 54 41  | DeviceFS...DATA|
0000be40  7e 01 00 00 44 65 76 69  63 65 46 53 5f 54 68 72  |~...DeviceFS_Thr|
0000be50  65 73 68 6f 6c 64 20 20  28 26 34 32 37 34 35 29  |eshold  (&42745)|
0000be60  0a 23 50 61 72 65 6e 74  20 44 65 76 69 63 65 46  |.#Parent DeviceF|
0000be70  53 5f 0a 3d 3e 09 52 31  20 3d 09 44 65 76 69 63  |S_.=>.R1 =.Devic|
0000be80  65 46 53 20 3c 73 74 72  65 61 6d 20 68 61 6e 64  |eFS <stream hand|
0000be90  6c 65 3d 3e 44 65 76 69  63 65 46 53 5f 65 6e 74  |le=>DeviceFS_ent|
0000bea0  72 79 30 3e 0a 09 52 32  20 3d 09 74 68 72 65 73  |ry0>..R2 =.thres|
0000beb0  68 6f 6c 64 20 74 6f 20  75 73 65 2c 20 22 6f 72  |hold to use, "or|
0000bec0  20 2d 31 20 74 6f 20 72  65 61 64 22 0a 3c 3d 09  | -1 to read".<=.|
0000bed0  22 52 31 2c 20 52 32 20  70 72 65 73 65 72 76 65  |"R1, R2 preserve|
0000bee0  64 22 0a 23 20 47 65 72  70 68 3e 20 48 6f 77 20  |d".# Gerph> How |
0000bef0  62 69 7a 61 72 72 65 2e  2e 2e 20 49 20 62 65 6c  |bizarre... I bel|
0000bf00  69 65 76 65 20 69 74 27  73 20 6c 79 69 6e 67 2e  |ieve it's lying.|
0000bf10  2e 2e 20 48 6d 6d 2e 2e  2e 20 4d 61 79 62 65 20  |.. Hmm... Maybe |
0000bf20  49 20 73 68 6f 75 6c 64  0a 23 20 20 20 20 20 20  |I should.#      |
0000bf30  20 20 6d 61 69 6c 20 74  68 65 20 6f 72 61 63 6c  |  mail the oracl|
0000bf40  65 20 3f 20 28 44 61 76  65 20 57 61 6c 6b 65 72  |e ? (Dave Walker|
0000bf50  29 0a 0a 54 68 69 73 20  53 57 49 20 73 65 74 73  |)..This SWI sets|
0000bf60  20 74 68 65 20 74 68 72  65 73 68 6f 6c 64 20 61  | the threshold a|
0000bf70  74 20 77 68 69 63 68 20  3c 68 61 6c 74 3d 3e 44  |t which <halt=>D|
0000bf80  65 76 69 63 65 46 53 5f  65 6e 74 72 79 38 3e 20  |eviceFS_entry8> |
0000bf90  61 6e 64 20 3c 72 65 73  75 6d 65 3d 3e 44 65 76  |and <resume=>Dev|
0000bfa0  69 63 65 46 53 5f 65 6e  74 72 79 39 3e 20 61 72  |iceFS_entry9> ar|
0000bfb0  65 20 63 61 6c 6c 65 64  2e 0a 00 00 44 41 54 41  |e called....DATA|
0000bfc0  24 02 00 00 44 65 76 69  63 65 46 53 5f 54 72 61  |$...DeviceFS_Tra|
0000bfd0  6e 73 6d 69 74 43 68 61  72 61 63 74 65 72 20 20  |nsmitCharacter  |
0000bfe0  28 26 34 32 37 34 37 29  0a 23 50 61 72 65 6e 74  |(&42747).#Parent|
0000bff0  20 44 65 76 69 63 65 46  53 5f 0a 3d 3e 09 52 31  | DeviceFS_.=>.R1|
0000c000  20 3d 09 44 65 76 69 63  65 73 46 53 20 73 74 72  | =.DevicesFS str|
0000c010  65 61 6d 20 68 61 6e 64  6c 65 0a 3c 3d 09 52 30  |eam handle.<=.R0|
0000c020  20 3d 09 62 79 74 65 20  74 6f 20 74 72 61 6e 73  | =.byte to trans|
0000c030  6d 69 74 0a 09 43 20 73  65 74 20 69 66 20 75 6e  |mit..C set if un|
0000c040  61 62 6c 65 20 74 6f 20  72 65 61 64 20 61 20 63  |able to read a c|
0000c050  68 61 72 61 63 74 65 72  20 74 6f 20 74 72 61 6e  |haracter to tran|
0000c060  73 6d 69 74 0a 0a 54 68  69 73 20 53 57 49 20 69  |smit..This SWI i|
0000c070  73 20 6d 61 64 65 20 62  79 20 61 20 64 65 76 69  |s made by a devi|
0000c080  63 65 20 77 68 65 6e 20  69 74 20 77 61 6e 74 73  |ce when it wants|
0000c090  20 74 6f 20 74 72 61 6e  73 6d 69 74 20 61 20 63  | to transmit a c|
0000c0a0  68 61 72 61 63 74 65 72  2e 20 44 65 76 69 63 65  |haracter. Device|
0000c0b0  46 53 20 77 69 6c 6c 20  74 72 79 20 74 6f 20 66  |FS will try to f|
0000c0c0  69 6e 64 20 63 68 61 72  61 63 74 65 72 20 28 75  |ind character (u|
0000c0d0  6e 62 75 66 66 65 72 20  6f 6e 65 2c 20 6f 72 20  |nbuffer one, or |
0000c0e0  72 65 61 64 20 66 72 6f  6d 20 61 20 77 61 69 74  |read from a wait|
0000c0f0  69 6e 67 20 73 74 72 65  61 6d 29 2e 0a 0a 4e 6f  |ing stream)...No|
0000c100  74 65 20 2d 20 66 6f 72  20 73 70 65 65 64 20 44  |te - for speed D|
0000c110  65 76 69 63 65 46 53 5f  54 72 61 6e 73 6d 69 74  |eviceFS_Transmit|
0000c120  43 68 61 72 61 63 74 65  72 20 61 6e 64 20 3c 44  |Character and <D|
0000c130  65 76 69 63 65 46 53 5f  52 65 63 65 69 76 65 64  |eviceFS_Received|
0000c140  43 68 61 72 61 63 74 65  72 3e 20 64 6f 20 6e 6f  |Character> do no|
0000c150  74 20 76 61 6c 69 64 61  74 65 20 74 68 65 20 65  |t validate the e|
0000c160  78 74 65 72 6e 61 6c 20  68 61 6e 64 6c 65 20 70  |xternal handle p|
0000c170  61 73 73 65 64 20 2d 20  73 74 72 61 6e 67 65 20  |assed - strange |
0000c180  74 68 69 6e 67 73 20 77  69 6c 6c 20 68 61 70 70  |things will happ|
0000c190  65 6e 20 69 66 20 62 61  64 20 68 61 6e 64 6c 65  |en if bad handle|
0000c1a0  73 20 61 72 65 20 70 61  73 73 65 64 2e 0a 23 20  |s are passed..# |
0000c1b0  4e 61 73 61 6c 20 64 65  6d 6f 6e 73 0a 23 20 54  |Nasal demons.# T|
0000c1c0  68 65 79 20 67 65 74 20  65 76 65 72 79 77 68 65  |hey get everywhe|
0000c1d0  72 65 2c 20 64 6f 6e 27  74 20 74 68 65 79 20 3f  |re, don't they ?|
0000c1e0  44 49 52 24 2c 00 00 00  2c 00 00 00 0c c2 00 00  |DIR$,...,.......|
0000c1f0  47 fd ff ff ed 0d 84 82  b3 00 00 00 13 00 00 00  |G...............|
0000c200  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
0000c210  b3 00 00 00 44 4d 41 0a  23 50 61 72 65 6e 74 20  |....DMA.#Parent |
0000c220  21 52 6f 6f 74 0a 23 50  72 65 66 69 78 20 44 4d  |!Root.#Prefix DM|
0000c230  41 5f 0a 23 54 61 62 6c  65 20 43 6f 6c 75 6d 6e  |A_.#Table Column|
0000c240  73 20 32 0a 52 65 67 69  73 74 65 72 43 68 61 6e  |s 2.RegisterChan|
0000c250  6e 65 6c 0a 44 65 72 65  67 69 73 74 65 72 43 68  |nel.DeregisterCh|
0000c260  61 6e 6e 65 6c 0a 51 75  65 75 65 54 72 61 6e 73  |annel.QueueTrans|
0000c270  66 65 72 0a 54 65 72 6d  69 6e 61 74 65 54 72 61  |fer.TerminateTra|
0000c280  6e 73 66 65 72 0a 53 75  73 70 65 6e 64 54 72 61  |nsfer.SuspendTra|
0000c290  6e 73 66 65 72 0a 52 65  73 75 6d 65 54 72 61 6e  |nsfer.ResumeTran|
0000c2a0  73 66 65 72 0a 45 78 61  6d 69 6e 65 54 72 61 6e  |sfer.ExamineTran|
0000c2b0  73 66 65 72 0a 23 45 6e  64 54 61 62 6c 65 0a 00  |sfer.#EndTable..|
0000c2c0  44 49 52 24 9c 00 00 00  9c 00 00 00 5c c3 00 00  |DIR$........\...|
0000c2d0  46 fd ff ff 61 58 66 db  49 00 00 00 13 00 00 00  |F...aXf.I.......|
0000c2e0  00 00 00 00 21 52 6f 6f  74 00 00 00 a8 c3 00 00  |....!Root.......|
0000c2f0  48 ff ff ff 06 43 f5 19  31 04 00 00 13 00 00 00  |H....C..1.......|
0000c300  00 00 00 00 44 69 73 63  46 6f 72 6d 61 74 00 00  |....DiscFormat..|
0000c310  dc c7 00 00 46 fd ff ff  6d 2b 66 db 83 01 00 00  |....F...m+f.....|
0000c320  13 00 00 00 00 00 00 00  46 6f 72 6d 61 74 53 70  |........FormatSp|
0000c330  65 63 00 00 60 c9 00 00  48 ff ff ff f5 40 f5 19  |ec..`...H....@..|
0000c340  0a 05 00 00 13 00 00 00  00 00 00 00 4c 61 79 6f  |............Layo|
0000c350  75 74 53 74 72 75 63 74  75 72 65 00 44 41 54 41  |utStructure.DATA|
0000c360  49 00 00 00 44 4f 53 46  53 0a 23 50 61 72 65 6e  |I...DOSFS.#Paren|
0000c370  74 20 21 52 6f 6f 74 0a  23 50 72 65 66 69 78 20  |t !Root.#Prefix |
0000c380  44 4f 53 46 53 5f 0a 3c  44 69 73 63 46 6f 72 6d  |DOSFS_.<DiscForm|
0000c390  61 74 3e 0a 3c 4c 61 79  6f 75 74 53 74 72 75 63  |at>.<LayoutStruc|
0000c3a0  74 75 72 65 3e 00 00 00  44 41 54 41 31 04 00 00  |ture>...DATA1...|
0000c3b0  44 4f 53 46 53 5f 44 69  73 63 46 6f 72 6d 61 74  |DOSFS_DiscFormat|
0000c3c0  20 20 28 26 34 31 41 43  30 29 0a 23 50 61 72 65  |  (&41AC0).#Pare|
0000c3d0  6e 74 20 44 4f 53 46 53  5f 0a 3d 3e 09 52 30 20  |nt DOSFS_.=>.R0 |
0000c3e0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 3c 64 69  |=.pointer to <di|
0000c3f0  73 63 20 66 6f 72 6d 61  74 20 73 74 72 75 63 74  |sc format struct|
0000c400  75 72 65 3d 3e 46 69 6c  65 43 6f 72 65 5f 46 6f  |ure=>FileCore_Fo|
0000c410  72 6d 61 74 3e 20 74 6f  20 62 65 20 66 69 6c 6c  |rmat> to be fill|
0000c420  65 64 20 69 6e 0a 09 52  31 20 3d 09 53 57 49 20  |ed in..R1 =.SWI |
0000c430  6e 75 6d 62 65 72 20 74  6f 20 63 61 6c 6c 20 74  |number to call t|
0000c440  6f 20 76 65 74 20 64 69  73 63 20 66 6f 72 6d 61  |o vet disc forma|
0000c450  74 20 28 65 67 20 3c 41  44 46 53 5f 56 65 74 46  |t (eg <ADFS_VetF|
0000c460  6f 72 6d 61 74 3e 29 0a  09 52 32 20 3d 09 70 61  |ormat>)..R2 =.pa|
0000c470  72 61 6d 65 74 65 72 20  69 6e 20 52 31 20 74 6f  |rameter in R1 to|
0000c480  20 75 73 65 20 77 68 65  6e 20 63 61 6c 6c 69 6e  | use when callin|
0000c490  67 20 76 65 74 74 69 6e  67 20 53 57 49 0a 09 52  |g vetting SWI..R|
0000c4a0  33 20 3d 09 3c 66 6f 72  6d 61 74 20 73 70 65 63  |3 =.<format spec|
0000c4b0  69 66 69 65 72 3d 3e 44  4f 53 46 53 5f 46 6f 72  |ifier=>DOSFS_For|
0000c4c0  6d 61 74 53 70 65 63 3e  0a 0a 3c 3d 09 52 30 2d  |matSpec>..<=.R0-|
0000c4d0  52 33 20 70 72 65 73 65  72 76 65 64 0a 0a 54 68  |R3 preserved..Th|
0000c4e0  69 73 20 63 61 6c 6c 20  66 69 6c 6c 73 20 69 6e  |is call fills in|
0000c4f0  20 74 68 65 20 64 69 73  63 20 66 6f 72 6d 61 74  | the disc format|
0000c500  20 73 74 72 75 63 74 75  72 65 20 70 6f 69 6e 74  | structure point|
0000c510  65 64 20 74 6f 20 62 79  20 52 30 20 77 69 74 68  |ed to by R0 with|
0000c520  20 74 68 65 20 27 70 72  65 66 65 63 74 27 20 70  | the 'prefect' p|
0000c530  61 72 61 6d 65 74 65 72  73 20 66 6f 72 20 74 68  |arameters for th|
0000c540  65 20 73 70 65 63 69 66  69 65 64 20 66 6f 72 6d  |e specified form|
0000c550  61 74 2c 20 74 61 6b 69  6e 67 20 6e 6f 20 61 63  |at, taking no ac|
0000c560  63 6f 75 6e 74 20 6f 66  20 74 68 65 20 61 62 69  |count of the abi|
0000c570  6c 69 74 69 65 73 20 6f  66 20 74 68 65 20 61 76  |lities of the av|
0000c580  61 69 6c 61 62 6c 65 20  68 61 72 64 77 61 72 65  |ailable hardware|
0000c590  20 74 68 61 74 20 77 69  6c 6c 20 68 61 76 65 20  | that will have |
0000c5a0  74 6f 20 70 65 72 66 6f  72 6d 20 74 68 65 20 66  |to perform the f|
0000c5b0  6f 72 6d 61 74 2e 20 4f  6e 63 65 20 66 69 6c 6c  |ormat. Once fill|
0000c5c0  65 64 20 69 6e 2c 20 74  68 69 73 20 53 57 49 20  |ed in, this SWI |
0000c5d0  63 61 6c 6c 73 20 74 68  65 20 76 65 74 74 69 6e  |calls the vettin|
0000c5e0  67 20 53 57 49 20 74 6f  20 63 68 65 63 6b 20 74  |g SWI to check t|
0000c5f0  68 65 20 66 6f 72 6d 61  79 20 73 74 72 75 63 74  |he formay struct|
0000c600  75 72 65 20 66 6f 72 20  61 63 68 69 65 76 61 62  |ure for achievab|
0000c610  69 6c 69 74 79 20 6f 6e  20 74 68 65 20 61 76 61  |ility on the ava|
0000c620  69 6c 61 62 6c 65 20 68  61 72 64 77 61 72 65 2e  |ilable hardware.|
0000c630  20 54 68 65 20 76 65 74  74 69 6e 67 20 53 57 49  | The vetting SWI|
0000c640  20 6d 61 79 20 67 65 6e  65 72 61 74 65 20 61 6e  | may generate an|
0000c650  20 65 72 72 6f 72 20 69  66 20 74 68 65 20 66 6f  | error if the fo|
0000c660  72 6d 61 74 20 64 69 66  66 65 72 73 20 77 69 64  |rmat differs wid|
0000c670  65 6c 79 20 66 72 6f 6d  20 77 68 61 74 20 63 61  |ely from what ca|
0000c680  6e 20 62 65 20 61 63 68  69 65 76 65 64 3b 20 61  |n be achieved; a|
0000c690  6c 74 65 72 6e 61 74 69  76 65 6c 79 20 69 74 20  |lternatively it |
0000c6a0  6d 61 79 20 61 6c 74 65  72 20 74 68 65 20 66 6f  |may alter the fo|
0000c6b0  72 6d 61 74 20 73 74 72  75 63 74 75 72 65 20 74  |rmat structure t|
0000c6c0  6f 20 74 68 65 20 63 6c  6f 73 65 73 74 20 6d 61  |o the closest ma|
0000c6d0  74 63 68 20 74 68 61 74  20 63 61 6e 20 62 65 20  |tch that can be |
0000c6e0  61 63 68 69 65 76 65 64  2e 20 54 68 65 20 76 65  |achieved. The ve|
0000c6f0  74 74 69 6e 67 20 53 57  49 20 74 68 65 6e 20 72  |tting SWI then r|
0000c700  65 74 75 72 6e 73 20 74  6f 20 74 68 69 73 20 53  |eturns to this S|
0000c710  57 49 2c 20 77 68 69 63  68 20 63 68 65 63 6b 73  |WI, which checks|
0000c720  20 77 68 65 74 68 65 72  20 74 68 65 20 66 6f 72  | whether the for|
0000c730  6d 61 74 20 62 6c 6f 63  6b 20 2d 20 61 73 20 75  |mat block - as u|
0000c740  70 64 61 74 65 64 20 62  79 20 74 68 65 20 76 65  |pdated by the ve|
0000c750  74 74 69 6e 67 20 53 57  49 20 2d 20 69 73 20 73  |tting SWI - is s|
0000c760  74 69 6c 6c 20 61 6e 20  61 64 65 71 75 61 74 65  |till an adequate|
0000c770  20 6d 61 74 63 68 20 66  6f 72 20 74 68 65 20 64  | match for the d|
0000c780  65 73 69 72 65 64 20 66  6f 72 6d 61 74 2e 20 49  |esired format. I|
0000c790  66 20 69 74 20 69 73 2c  20 74 68 69 73 20 53 57  |f it is, this SW|
0000c7a0  49 20 72 65 74 75 72 6e  73 20 74 6f 20 69 74 73  |I returns to its|
0000c7b0  20 63 61 6c 6c 65 72 3b  20 6f 74 68 65 72 77 69  | caller; otherwi|
0000c7c0  73 65 20 69 74 20 67 65  6e 65 72 61 74 65 73 20  |se it generates |
0000c7d0  61 6e 20 65 72 72 6f 72  2e 00 00 00 44 41 54 41  |an error....DATA|
0000c7e0  83 01 00 00 46 6f 72 6d  61 74 20 73 70 65 63 69  |....Format speci|
0000c7f0  66 69 65 72 0a 5c 23 09  4e 61 6d 65 09 53 69 7a  |fier.\#.Name.Siz|
0000c800  65 09 4f 53 09 09 54 79  70 65 0a 23 4c 69 6e 65  |e.OS..Type.#Line|
0000c810  0a 30 09 44 4f 53 2f 51  09 31 2e 34 34 4d 09 4d  |.0.DOS/Q.1.44M.M|
0000c820  53 2d 44 4f 53 20 33 2e  32 30 09 64 6f 75 62 6c  |S-DOS 3.20.doubl|
0000c830  65 20 73 69 64 65 64 0a  31 09 44 4f 53 2f 4d 09  |e sided.1.DOS/M.|
0000c840  37 32 30 6b 09 4d 53 2d  44 4f 53 20 33 2e 32 30  |720k.MS-DOS 3.20|
0000c850  09 64 6f 75 62 6c 65 20  73 69 64 65 64 0a 32 09  |.double sided.2.|
0000c860  44 4f 53 2f 48 09 31 2e  32 30 4d 09 4d 53 2d 44  |DOS/H.1.20M.MS-D|
0000c870  4f 53 20 33 09 64 6f 75  62 6c 65 20 73 69 64 65  |OS 3.double side|
0000c880  64 0a 33 09 44 4f 53 2f  4e 09 33 36 30 6b 09 4d  |d.3.DOS/N.360k.M|
0000c890  53 2d 44 4f 53 20 32 2c  33 09 64 6f 75 62 6c 65  |S-DOS 2,3.double|
0000c8a0  20 73 69 64 65 64 0a 34  09 44 4f 53 2f 50 09 31  | sided.4.DOS/P.1|
0000c8b0  38 30 6b 09 4d 53 2d 44  4f 53 20 32 2c 33 09 73  |80k.MS-DOS 2,3.s|
0000c8c0  69 6e 67 6c 65 20 73 69  64 65 64 0a 35 09 44 4f  |ingle sided.5.DO|
0000c8d0  53 2f 54 09 33 32 30 6b  09 4d 53 2d 44 4f 53 20  |S/T.320k.MS-DOS |
0000c8e0  31 2c 32 2c 33 09 64 6f  75 62 6c 65 20 73 69 64  |1,2,3.double sid|
0000c8f0  65 64 0a 36 09 44 4f 53  2f 55 09 31 36 30 6b 09  |ed.6.DOS/U.160k.|
0000c900  4d 53 2d 44 4f 53 20 31  2c 32 2c 33 09 73 69 6e  |MS-DOS 1,2,3.sin|
0000c910  67 6c 65 20 73 69 64 65  64 0a 37 09 41 74 61 72  |gle sided.7.Atar|
0000c920  69 2f 4d 09 37 32 30 6b  09 41 74 61 72 69 09 09  |i/M.720k.Atari..|
0000c930  64 6f 75 62 6c 65 20 73  69 64 65 64 0a 38 09 41  |double sided.8.A|
0000c940  74 61 72 69 2f 4e 09 33  36 30 6b 09 41 74 61 72  |tari/N.360k.Atar|
0000c950  69 09 09 73 69 6e 67 6c  65 20 73 69 64 65 64 00  |i..single sided.|
0000c960  44 41 54 41 0a 05 00 00  44 4f 53 46 53 5f 4c 61  |DATA....DOSFS_La|
0000c970  79 6f 75 74 53 74 72 75  63 74 75 72 65 20 20 28  |youtStructure  (|
0000c980  26 34 31 41 43 31 29 0a  23 50 61 72 65 6e 74 20  |&41AC1).#Parent |
0000c990  44 4f 53 46 53 5f 0a 3d  3e 09 52 30 20 3d 09 3c  |DOSFS_.=>.R0 =.<|
0000c9a0  73 74 72 75 63 74 75 72  65 20 73 70 65 63 69 66  |structure specif|
0000c9b0  69 65 72 3d 3e 44 4f 53  46 53 5f 46 6f 72 6d 61  |ier=>DOSFS_Forma|
0000c9c0  74 53 70 65 63 3e 0a 09  52 31 20 3d 09 70 6f 69  |tSpec>..R1 =.poi|
0000c9d0  6e 74 65 72 20 74 6f 20  62 61 64 20 62 6c 6f 63  |nter to bad bloc|
0000c9e0  6b 20 6c 69 73 74 20 28  74 65 72 6d 69 6e 61 74  |k list (terminat|
0000c9f0  65 64 20 62 79 20 2d 31  29 0a 09 52 32 20 3d 09  |ed by -1)..R2 =.|
0000ca00  70 6f 69 6e 74 65 72 20  74 6f 20 6e 75 6c 6c 20  |pointer to null |
0000ca10  74 65 72 6d 69 6e 61 74  65 64 20 64 69 73 63 20  |terminated disc |
0000ca20  6e 61 6d 65 0a 09 52 33  20 3d 09 69 6d 61 67 65  |name..R3 =.image|
0000ca30  20 66 69 6c 65 20 68 61  6e 64 6c 65 0a 0a 3c 3d  | file handle..<=|
0000ca40  20 52 30 2d 52 33 20 70  72 65 73 65 72 76 65 64  | R0-R3 preserved|
0000ca50  0a 0a 54 68 69 73 20 63  61 6c 6c 20 6c 61 79 73  |..This call lays|
0000ca60  20 6f 75 74 20 69 6e 20  74 68 65 20 73 70 65 63  | out in the spec|
0000ca70  69 66 69 65 64 20 69 6d  61 67 65 20 61 6c 6c 20  |ified image all |
0000ca80  6e 65 63 65 73 73 61 72  79 20 73 74 72 75 63 74  |necessary struct|
0000ca90  75 72 65 73 20 74 6f 20  68 61 76 65 20 61 20 76  |ures to have a v|
0000caa0  61 6c 69 64 2c 20 65 6d  70 74 79 20 64 69 73 63  |alid, empty disc|
0000cab0  2e 20 49 74 20 63 61 6e  20 62 65 20 75 73 65 64  |. It can be used|
0000cac0  3a 0a 0a 23 49 6e 64 65  6e 74 20 32 0a 8f 20 74  |:..#Indent 2.. t|
0000cad0  6f 20 6c 61 79 6f 75 74  20 61 20 73 74 72 75 63  |o layout a struc|
0000cae0  74 75 72 65 20 6f 6e 20  61 20 62 6c 61 63 6b 2c  |ture on a black,|
0000caf0  20 66 6f 72 6d 61 74 74  65 64 20 64 69 73 63 20  | formatted disc |
0000cb00  28 69 6e 20 77 68 69 63  68 20 63 61 73 65 20 74  |(in which case t|
0000cb10  68 65 20 73 70 65 63 69  66 69 65 64 20 69 6d 61  |he specified ima|
0000cb20  67 65 20 73 68 6f 75 6c  64 20 62 65 20 74 68 65  |ge should be the|
0000cb30  20 77 68 6f 6c 65 20 64  69 73 63 20 69 6d 61 67  | whole disc imag|
0000cb40  65 29 0a 8f 20 74 6f 20  6c 61 79 6f 75 74 20 61  |e).. to layout a|
0000cb50  20 70 61 72 74 69 74 69  6f 6e 20 69 6e 20 61 20  | partition in a |
0000cb60  66 69 6c 65 20 6f 6e 20  61 20 64 69 73 63 20 74  |file on a disc t|
0000cb70  68 61 74 20 68 61 73 20  61 6c 72 65 61 64 79 20  |hat has already |
0000cb80  62 65 65 6e 20 66 6f 72  6d 61 74 74 65 64 20 28  |been formatted (|
0000cb90  66 6f 72 20 65 78 61 6d  70 6c 65 20 66 6f 72 20  |for example for |
0000cba0  74 68 65 20 50 43 20 65  6d 75 6c 61 74 6f 72 29  |the PC emulator)|
0000cbb0  2e 0a 23 49 6e 64 65 6e  74 0a 0a 49 66 20 74 68  |..#Indent..If th|
0000cbc0  65 20 67 69 76 65 6e 20  69 6d 61 67 65 20 66 6f  |e given image fo|
0000cbd0  72 6d 61 74 20 68 61 73  20 6e 6f 20 6f 70 74 69  |rmat has no opti|
0000cbe0  6f 6e 20 74 6f 20 73 74  6f 72 65 20 61 20 64 69  |on to store a di|
0000cbf0  73 63 20 6e 61 6d 65 20  74 68 65 6e 20 74 68 69  |sc name then thi|
0000cc00  73 20 70 61 72 61 6d 65  74 65 72 20 73 68 6f 75  |s parameter shou|
0000cc10  6c 64 20 62 65 20 69 67  6e 6f 72 65 64 2e 0a 0a  |ld be ignored...|
0000cc20  54 68 65 20 62 61 64 20  62 6c 6f 63 6b 20 6c 69  |The bad block li|
0000cc30  73 74 20 73 68 6f 75 6c  64 20 62 65 20 70 72 65  |st should be pre|
0000cc40  73 65 6e 74 65 64 20 61  73 20 61 6e 20 61 72 72  |sented as an arr|
0000cc50  61 79 20 6f 66 20 62 61  64 20 62 6c 6f 63 6b 20  |ay of bad block |
0000cc60  61 64 64 72 65 73 73 65  73 2e 20 45 61 63 68 20  |addresses. Each |
0000cc70  61 64 64 72 65 73 73 20  69 73 20 34 20 62 79 74  |address is 4 byt|
0000cc80  65 73 20 6c 6f 6e 67 2e  20 54 68 65 20 61 72 72  |es long. The arr|
0000cc90  61 79 20 69 73 20 74 65  72 6d 69 6e 61 74 65 64  |ay is terminated|
0000cca0  20 62 79 20 61 20 2d 31  20 65 6e 74 72 79 2e 0a  | by a -1 entry..|
0000ccb0  0a 49 74 27 73 20 61 73  73 75 6d 65 64 20 74 68  |.It's assumed th|
0000ccc0  61 74 20 52 30 20 67 69  76 65 73 20 65 6e 6f 75  |at R0 gives enou|
0000ccd0  67 68 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 66  |gh information f|
0000cce0  6f 72 20 74 68 65 20 66  6f 72 6d 61 74 20 2d 20  |or the format - |
0000ccf0  69 74 20 6d 61 79 20 62  65 20 74 68 61 74 20 52  |it may be that R|
0000cd00  30 20 63 6f 6e 74 61 69  6e 73 20 6d 61 6e 79 20  |0 contains many |
0000cd10  62 69 74 20 66 69 65 6c  64 73 20 6f 72 20 70 6f  |bit fields or po|
0000cd20  69 6e 74 73 20 74 6f 20  61 20 62 6c 6f 63 6b 20  |ints to a block |
0000cd30  6f 66 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 73 20  |of informations |
0000cd40  2d 20 74 68 65 20 63 68  6f 69 63 65 20 69 73 20  |- the choice is |
0000cd50  75 70 20 74 6f 20 74 68  65 20 69 6d 61 67 65 20  |up to the image |
0000cd60  66 69 6c 69 6e 67 20 73  79 73 74 65 6d 20 6d 6f  |filing system mo|
0000cd70  64 75 6c 65 2e 20 54 68  65 20 76 61 6c 75 65 20  |dule. The value |
0000cd80  69 6e 20 52 30 20 69 73  20 75 73 65 64 20 74 6f  |in R0 is used to|
0000cd90  20 70 61 73 73 20 65 6e  6f 75 67 68 20 69 6e 66  | pass enough inf|
0000cda0  6f 72 6d 61 74 69 6f 6e  20 74 6f 20 73 70 65 63  |ormation to spec|
0000cdb0  69 66 79 20 74 68 65 20  64 69 73 63 20 73 74 72  |ify the disc str|
0000cdc0  75 63 74 75 72 65 20 44  4f 53 46 53 20 75 73 65  |ucture DOSFS use|
0000cdd0  73 20 61 20 73 69 6d 70  6c 65 20 74 61 62 6c 65  |s a simple table|
0000cde0  20 69 6e 64 65 78 20 66  6f 72 20 74 68 69 73 3b  | index for this;|
0000cdf0  20 6f 74 68 65 72 20 69  6d 61 67 65 20 66 69 6c  | other image fil|
0000ce00  69 6e 67 20 73 79 73 74  65 6d 73 20 6d 61 79 20  |ing systems may |
0000ce10  70 61 73 73 20 64 69 66  66 65 72 65 6e 74 20 69  |pass different i|
0000ce20  6e 66 6f 72 6d 61 74 69  6f 6e 73 20 28 75 73 69  |nformations (usi|
0000ce30  6e 67 20 61 20 70 6f 69  6e 74 65 72 20 69 66 20  |ng a pointer if |
0000ce40  6e 65 63 65 73 73 61 72  79 29 20 66 6f 72 20 74  |necessary) for t|
0000ce50  68 65 69 72 20 4c 61 79  6f 75 74 53 74 72 75 63  |heir LayoutStruc|
0000ce60  74 75 72 65 20 53 57 49  2e 0a 00 00 44 49 52 24  |ture SWI....DIR$|
0000ce70  1c 03 00 00 1c 03 00 00  88 d1 00 00 48 fd ff ff  |............H...|
0000ce80  f6 f6 b7 26 0c 01 00 00  13 00 00 00 00 00 00 00  |...&............|
0000ce90  21 52 6f 6f 74 00 00 00  94 d2 00 00 48 ff ff ff  |!Root.......H...|
0000cea0  da ed b7 26 60 04 00 00  13 00 00 00 00 00 00 00  |...&`...........|
0000ceb0  52 65 6e 64 65 72 00 00  f4 d6 00 00 48 ff ff ff  |Render......H...|
0000cec0  37 8b c5 26 a4 01 00 00  13 00 00 00 00 00 00 00  |7..&............|
0000ced0  42 42 6f 78 00 00 00 00  98 d8 00 00 48 fd ff ff  |BBox........H...|
0000cee0  05 64 a9 20 a0 00 00 00  13 00 00 00 00 00 00 00  |.d. ............|
0000cef0  64 61 73 68 73 74 79 6c  65 00 00 00 38 d9 00 00  |dashstyle...8...|
0000cf00  48 fd ff ff de 65 b3 26  00 01 00 00 13 00 00 00  |H....e.&........|
0000cf10  00 00 00 00 6f 62 6a 65  63 74 30 00 38 da 00 00  |....object0.8...|
0000cf20  48 fd ff ff ed 4a a9 20  2e 01 00 00 13 00 00 00  |H....J. ........|
0000cf30  00 00 00 00 6f 62 6a 65  63 74 31 00 68 db 00 00  |....object1.h...|
0000cf40  48 fd ff ff 38 6b b3 26  d5 00 00 00 13 00 00 00  |H...8k.&........|
0000cf50  00 00 00 00 6f 62 6a 65  63 74 31 33 00 00 00 00  |....object13....|
0000cf60  40 dc 00 00 48 fd ff ff  2a 35 a9 20 a5 01 00 00  |@...H...*5. ....|
0000cf70  13 00 00 00 00 00 00 00  6f 62 6a 65 63 74 32 00  |........object2.|
0000cf80  e8 dd 00 00 48 fd ff ff  2b 2b a9 20 89 00 00 00  |....H...++. ....|
0000cf90  13 00 00 00 00 00 00 00  6f 62 6a 65 63 74 35 00  |........object5.|
0000cfa0  74 de 00 00 48 fd ff ff  43 08 a9 20 db 00 00 00  |t...H...C.. ....|
0000cfb0  13 00 00 00 00 00 00 00  6f 62 6a 65 63 74 36 00  |........object6.|
0000cfc0  50 df 00 00 48 fd ff ff  9d 29 a9 20 9e 00 00 00  |P...H....). ....|
0000cfd0  13 00 00 00 00 00 00 00  6f 62 6a 65 63 74 37 00  |........object7.|
0000cfe0  f0 df 00 00 48 fd ff ff  61 24 a9 20 40 01 00 00  |....H...a$. @...|
0000cff0  13 00 00 00 00 00 00 00  6f 62 6a 65 63 74 39 00  |........object9.|
0000d000  30 e1 00 00 48 fd ff ff  74 5f a9 20 4d 01 00 00  |0...H...t_. M...|
0000d010  13 00 00 00 00 00 00 00  70 61 74 68 73 74 79 6c  |........pathstyl|
0000d020  65 00 00 00 80 e2 00 00  48 fd ff ff ca 59 a9 20  |e.......H....Y. |
0000d030  5a 02 00 00 13 00 00 00  00 00 00 00 74 65 78 74  |Z...........text|
0000d040  62 6f 64 79 00 00 00 00  dc e4 00 00 48 fd ff ff  |body........H...|
0000d050  d2 5c a9 20 a3 00 00 00  13 00 00 00 00 00 00 00  |.\. ............|
0000d060  74 65 78 74 73 74 79 6c  65 00 00 00 80 e5 00 00  |textstyle.......|
0000d070  48 fd ff ff a9 47 a9 20  f5 00 00 00 13 00 00 00  |H....G. ........|
0000d080  00 00 00 00 6f 62 6a 65  63 74 31 30 00 00 00 00  |....object10....|
0000d090  78 e6 00 00 48 fd ff ff  61 01 a3 0c 50 03 00 00  |x...H...a...P...|
0000d0a0  13 00 00 00 00 00 00 00  6f 62 6a 65 63 74 31 31  |........object11|
0000d0b0  00 00 00 00 c8 e9 00 00  48 fd ff ff 17 74 b6 26  |........H....t.&|
0000d0c0  41 03 00 00 13 00 00 00  00 00 00 00 66 6f 72 6d  |A...........form|
0000d0d0  61 74 00 00 0c ed 00 00  48 fd ff ff b4 37 a9 20  |at......H....7. |
0000d0e0  3d 02 00 00 13 00 00 00  00 00 00 00 6f 62 6a 65  |=...........obje|
0000d0f0  63 74 31 36 00 00 00 00  4c ef 00 00 48 fd ff ff  |ct16....L...H...|
0000d100  55 74 9d 1c 94 02 00 00  13 00 00 00 00 00 00 00  |Ut..............|
0000d110  6f 62 6a 65 63 74 31 32  00 00 00 00 e0 f1 00 00  |object12........|
0000d120  48 fd ff ff 24 97 b6 26  10 02 00 00 33 00 00 00  |H...$..&....3...|
0000d130  00 00 00 00 72 65 6e 64  65 72 73 74 61 74 65 00  |....renderstate.|
0000d140  f0 f3 00 00 48 fd ff ff  27 69 b6 26 2e 01 00 00  |....H...'i.&....|
0000d150  13 00 00 00 00 00 00 00  68 65 61 64 65 72 00 00  |........header..|
0000d160  20 f5 00 00 48 fd ff ff  06 f9 b6 26 82 01 00 00  | ...H......&....|
0000d170  33 00 00 00 00 00 00 00  64 65 63 6c 61 72 65 73  |3.......declares|
0000d180  74 61 74 65 00 00 00 00  44 41 54 41 0c 01 00 00  |tate....DATA....|
0000d190  44 72 61 77 46 69 6c 65  0a 23 50 61 72 65 6e 74  |DrawFile.#Parent|
0000d1a0  20 21 52 6f 6f 74 0a 23  50 72 65 66 69 78 20 44  | !Root.#Prefix D|
0000d1b0  72 61 77 46 69 6c 65 5f  0a 23 54 61 62 6c 65 20  |rawFile_.#Table |
0000d1c0  43 6f 6c 75 6d 6e 73 20  32 0a 3c 52 65 6e 64 65  |Columns 2.<Rende|
0000d1d0  72 3e 0a 3c 42 42 6f 78  3e 0a 44 65 63 6c 61 72  |r>.<BBox>.Declar|
0000d1e0  65 46 6f 6e 74 73 0a 23  45 6e 64 54 61 62 6c 65  |eFonts.#EndTable|
0000d1f0  0a 0a 53 65 72 76 69 63  65 73 3a 0a 23 49 6e 64  |..Services:.#Ind|
0000d200  65 6e 74 20 32 0a 34 35  35 34 30 20 3c 53 65 72  |ent 2.45540 <Ser|
0000d210  76 69 63 65 5f 44 72 61  77 4f 62 6a 65 63 74 52  |vice_DrawObjectR|
0000d220  65 6e 64 65 72 3d 3e 73  65 72 76 69 63 65 5f 34  |ender=>service_4|
0000d230  35 35 34 30 3e 0a 34 35  35 34 31 20 3c 53 65 72  |5540>.45541 <Ser|
0000d240  76 69 63 65 5f 44 72 61  77 4f 62 6a 65 63 74 44  |vice_DrawObjectD|
0000d250  65 63 6c 61 72 65 46 6f  6e 74 73 3d 3e 73 65 72  |eclareFonts=>ser|
0000d260  76 69 63 65 5f 34 35 35  34 31 3e 0a 23 69 6e 64  |vice_45541>.#ind|
0000d270  65 6e 74 0a 0a 3c 46 69  6c 65 20 66 6f 72 6d 61  |ent..<File forma|
0000d280  74 3d 3e 44 72 61 77 46  69 6c 65 5f 66 6f 72 6d  |t=>DrawFile_form|
0000d290  61 74 3e 0a 44 41 54 41  60 04 00 00 44 72 61 77  |at>.DATA`...Draw|
0000d2a0  46 69 6c 65 5f 52 65 6e  64 65 72 0a 23 50 61 72  |File_Render.#Par|
0000d2b0  65 6e 74 20 44 72 61 77  46 69 6c 65 5f 0a 3d 3e  |ent DrawFile_.=>|
0000d2c0  09 52 30 20 3d 09 3c 66  6c 61 67 73 3d 3e 2e 66  |.R0 =.<flags=>.f|
0000d2d0  6c 61 67 73 3e 0a 09 52  31 20 3d 09 70 6f 69 6e  |lags>..R1 =.poin|
0000d2e0  74 65 72 20 74 6f 20 3c  64 72 61 77 66 69 6c 65  |ter to <drawfile|
0000d2f0  20 62 6c 6f 63 6b 3d 3e  44 72 61 77 66 69 6c 65  | block=>Drawfile|
0000d300  5f 66 6f 72 6d 61 74 3e  0a 09 52 32 20 3d 09 6c  |_format>..R2 =.l|
0000d310  65 6e 67 74 68 20 6f 66  20 62 6c 6f 63 6b 0a 09  |ength of block..|
0000d320  52 33 20 3d 09 3c 74 72  61 6e 73 66 6f 72 6d 61  |R3 =.<transforma|
0000d330  74 69 6f 6e 20 6d 61 74  72 69 78 3d 3e 44 72 61  |tion matrix=>Dra|
0000d340  77 5f 74 72 61 6e 73 66  6f 72 6d 3e 2c 20 6f 72  |w_transform>, or|
0000d350  20 30 20 74 6f 20 75 73  65 20 69 64 65 6e 74 69  | 0 to use identi|
0000d360  74 79 20 6d 61 74 72 69  78 0a 09 52 34 20 3d 09  |ty matrix..R4 =.|
0000d370  70 6f 69 6e 74 65 72 20  74 6f 20 3c 63 6c 69 70  |pointer to <clip|
0000d380  70 69 6e 67 20 72 65 63  74 61 6e 67 6c 65 3d 3e  |ping rectangle=>|
0000d390  73 77 69 5f 62 62 6f 78  3e 20 69 6e 20 4f 53 20  |swi_bbox> in OS |
0000d3a0  75 6e 69 74 73 2c 20 6f  72 20 30 20 66 6f 72 20  |units, or 0 for |
0000d3b0  6e 6f 6e 65 0a 09 52 35  20 3d 09 66 6c 61 74 6e  |none..R5 =.flatn|
0000d3c0  65 73 73 20 69 66 20 62  69 74 20 32 20 6f 66 20  |ess if bit 2 of |
0000d3d0  52 30 20 73 65 74 0a 3c  3d 09 41 6c 6c 20 70 72  |R0 set.<=.All pr|
0000d3e0  65 73 65 72 76 65 64 0a  0a 54 68 69 73 20 53 57  |eserved..This SW|
0000d3f0  49 20 72 65 6e 64 65 72  73 20 61 20 64 72 61 77  |I renders a draw|
0000d400  20 66 69 6c 65 20 61 74  20 61 20 67 69 76 65 6e  | file at a given|
0000d410  20 73 63 72 65 65 6e 20  70 6f 73 69 74 69 6f 6e  | screen position|
0000d420  20 77 68 65 72 65 20 74  68 61 74 20 70 6f 73 69  | where that posi|
0000d430  74 69 6f 6e 20 69 73 20  64 65 66 69 6e 65 64 20  |tion is defined |
0000d440  61 73 20 73 63 72 65 65  6e 20 70 6f 73 69 74 69  |as screen positi|
0000d450  6f 6e 20 30 2c 20 30 20  77 69 74 68 20 74 68 65  |on 0, 0 with the|
0000d460  20 78 2d 20 61 6e 64 20  79 2d 74 72 61 6e 73 6c  | x- and y-transl|
0000d470  61 74 69 6f 6e 73 20 61  73 20 73 70 65 63 69 66  |ations as specif|
0000d480  69 65 64 20 69 6e 20 74  68 65 20 74 72 61 6e 73  |ied in the trans|
0000d490  66 6f 72 6d 61 74 69 6f  6e 20 6d 61 74 72 69 78  |formation matrix|
0000d4a0  2e 20 48 65 6e 63 65 2c  20 74 6f 20 72 65 6e 64  |. Hence, to rend|
0000d4b0  65 72 20 61 20 6e 6f 6e  2d 72 6f 74 61 74 65 64  |er a non-rotated|
0000d4c0  20 31 3a 31 20 64 72 61  77 20 66 69 6c 65 20 61  | 1:1 draw file a|
0000d4d0  74 20 28 78 2c 20 79 29  20 28 73 63 72 65 65 6e  |t (x, y) (screen|
0000d4e0  20 63 6f 6f 72 64 69 6e  61 74 65 73 20 69 6e 20  | coordinates in |
0000d4f0  4f 53 20 75 6e 69 74 73  29 20 74 68 65 20 74 72  |OS units) the tr|
0000d500  61 6e 73 66 6f 72 6d 61  74 69 6f 6e 20 6d 61 74  |ansformation mat|
0000d510  72 69 78 20 69 73 20 3a  0a 23 49 6e 64 65 6e 74  |rix is :.#Indent|
0000d520  20 32 3b 54 61 62 0a 28  09 31 20 3c 3c 20 31 36  | 2;Tab.(.1 << 16|
0000d530  09 30 09 29 0a 28 09 30  09 31 20 3c 3c 20 31 36  |.0.).(.0.1 << 16|
0000d540  09 29 0a 28 09 32 35 36  2a 78 09 32 35 36 2a 79  |.).(.256*x.256*y|
0000d550  09 29 0a 23 49 6e 64 65  6e 74 0a 0a 54 68 65 20  |.).#Indent..The |
0000d560  63 6c 69 70 70 69 6e 67  20 72 65 63 74 61 6e 67  |clipping rectang|
0000d570  6c 65 20 69 73 20 74 79  70 69 63 61 6c 6c 79 20  |le is typically |
0000d580  61 20 72 65 64 72 61 77  20 72 65 63 74 61 6e 67  |a redraw rectang|
0000d590  6c 65 20 72 65 74 75 72  6e 65 64 20 62 79 20 74  |le returned by t|
0000d5a0  68 65 20 57 69 6d 70 20  6f 6e 20 61 20 72 65 64  |he Wimp on a red|
0000d5b0  72 61 77 20 77 69 6e 64  6f 77 20 72 65 71 75 65  |raw window reque|
0000d5c0  73 74 2e 20 20 49 66 20  52 34 20 3d 20 30 2c 20  |st.  If R4 = 0, |
0000d5d0  74 68 65 6e 20 74 68 65  20 77 68 6f 6c 65 20 64  |then the whole d|
0000d5e0  72 61 77 20 66 69 6c 65  20 69 73 20 72 65 6e 64  |raw file is rend|
0000d5f0  65 72 65 64 2e 20 49 66  20 6e 6f 6e 2d 7a 65 72  |ered. If non-zer|
0000d600  6f 2c 20 6f 6e 6c 79 20  6f 62 6a 65 63 74 73 20  |o, only objects |
0000d610  77 68 69 63 68 20 69 6e  74 65 72 73 65 63 74 20  |which intersect |
0000d620  74 68 65 20 63 6c 69 70  70 69 6e 67 20 72 65 63  |the clipping rec|
0000d630  74 61 6e 67 6c 65 20 61  72 65 20 72 65 6e 64 65  |tangle are rende|
0000d640  72 65 64 2e 0a 23 0a 23  53 75 62 70 61 67 65 20  |red..#.#Subpage |
0000d650  66 6c 61 67 73 0a 44 72  61 77 46 69 6c 65 5f 52  |flags.DrawFile_R|
0000d660  65 6e 64 65 72 20 66 6c  61 67 73 0a 42 69 74 09  |ender flags.Bit.|
0000d670  4d 65 61 6e 69 6e 67 20  69 66 20 73 65 74 0a 23  |Meaning if set.#|
0000d680  4c 69 6e 65 0a 30 09 72  65 6e 64 65 72 20 62 6f  |Line.0.render bo|
0000d690  75 6e 64 69 6e 67 20 62  6f 78 65 73 20 28 61 73  |unding boxes (as|
0000d6a0  20 64 6f 74 74 65 64 20  72 65 64 20 72 65 63 74  | dotted red rect|
0000d6b0  61 6e 67 6c 65 73 29 0a  31 09 64 6f 20 6e 6f 74  |angles).1.do not|
0000d6c0  20 72 65 6e 64 65 72 20  74 68 65 20 6f 62 6a 65  | render the obje|
0000d6d0  63 74 73 20 74 68 65 6d  73 65 6c 76 65 73 0a 32  |cts themselves.2|
0000d6e0  09 75 73 65 20 52 35 20  61 73 20 66 6c 61 74 6e  |.use R5 as flatn|
0000d6f0  65 73 73 0a 44 41 54 41  a4 01 00 00 44 72 61 77  |ess.DATA....Draw|
0000d700  46 69 6c 65 5f 42 42 6f  78 0a 23 50 61 72 65 6e  |File_BBox.#Paren|
0000d710  74 20 44 72 61 77 46 69  6c 65 5f 0a 3d 3e 09 52  |t DrawFile_.=>.R|
0000d720  30 20 3d 09 66 6c 61 67  73 20 28 6d 75 73 74 20  |0 =.flags (must |
0000d730  62 65 20 30 29 0a 09 52  31 20 3d 09 70 6f 69 6e  |be 0)..R1 =.poin|
0000d740  74 65 72 20 74 6f 20 64  72 61 77 66 69 6c 65 20  |ter to drawfile |
0000d750  62 6c 6f 63 6b 0a 09 52  32 20 3d 09 6c 65 6e 67  |block..R2 =.leng|
0000d760  74 68 20 6f 66 20 62 6c  6f 63 6b 0a 09 52 33 20  |th of block..R3 |
0000d770  3d 09 3c 74 72 61 6e 73  66 6f 72 6d 61 74 69 6f  |=.<transformatio|
0000d780  6e 20 6d 61 74 72 69 78  3d 3e 44 72 61 77 5f 74  |n matrix=>Draw_t|
0000d790  72 61 6e 73 66 6f 72 6d  3e 2c 20 6f 72 20 30 20  |ransform>, or 0 |
0000d7a0  74 6f 20 75 73 65 20 69  64 65 6e 74 69 74 79 0a  |to use identity.|
0000d7b0  09 52 34 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R4 =.pointer to|
0000d7c0  20 34 20 77 6f 72 64 20  62 75 66 66 65 72 20 66  | 4 word buffer f|
0000d7d0  6f 72 20 3c 62 6f 75 6e  64 69 6e 67 20 62 6f 78  |or <bounding box|
0000d7e0  3d 3e 73 77 69 5f 62 62  6f 78 3e 20 69 6e 20 64  |=>swi_bbox> in d|
0000d7f0  72 61 77 20 75 6e 69 74  73 0a 3c 3d 09 41 6c 6c  |raw units.<=.All|
0000d800  20 70 72 65 73 65 72 76  65 64 0a 0a 54 68 69 73  | preserved..This|
0000d810  20 53 57 49 20 69 73 20  75 73 65 64 20 74 6f 20  | SWI is used to |
0000d820  64 65 74 65 72 6d 69 6e  65 20 74 68 65 20 62 6f  |determine the bo|
0000d830  75 6e 64 69 6e 67 20 62  6f 78 20 28 69 6e 20 64  |unding box (in d|
0000d840  72 61 77 20 75 6e 69 74  73 29 20 6f 66 20 74 68  |raw units) of th|
0000d850  65 20 67 69 76 65 6e 20  64 72 61 77 20 66 69 6c  |e given draw fil|
0000d860  65 2c 20 61 73 20 69 66  20 69 74 20 77 65 72 65  |e, as if it were|
0000d870  20 70 6c 6f 74 74 65 64  20 77 69 74 68 20 74 68  | plotted with th|
0000d880  65 20 74 72 61 6e 73 66  6f 72 6d 61 74 69 6f 6e  |e transformation|
0000d890  20 67 69 76 65 6e 2e 0a  44 41 54 41 a0 00 00 00  | given..DATA....|
0000d8a0  44 72 61 77 20 64 61 73  68 20 73 74 79 6c 65 20  |Draw dash style |
0000d8b0  62 6c 6f 63 6b 0a 23 50  61 72 65 6e 74 20 64 72  |block.#Parent dr|
0000d8c0  61 77 66 69 6c 65 5f 66  6f 72 6d 61 74 0a 4f 66  |awfile_format.Of|
0000d8d0  66 73 65 74 09 4c 65 6e  09 43 6f 6e 74 65 6e 74  |fset.Len.Content|
0000d8e0  73 0a 23 4c 69 6e 65 0a  30 09 34 09 4f 66 66 73  |s.#Line.0.4.Offs|
0000d8f0  65 74 20 74 6f 20 77 68  65 72 65 20 74 6f 20 73  |et to where to s|
0000d900  74 61 72 74 0a 34 09 34  09 4e 75 6d 62 65 72 20  |tart.4.4.Number |
0000d910  6f 66 20 65 6c 65 6d 65  6e 74 73 0a 38 09 6e 2a  |of elements.8.n*|
0000d920  34 09 4c 65 6e 67 74 68  20 6f 66 20 65 6c 65 6d  |4.Length of elem|
0000d930  65 6e 74 0a 2e 2e 2e 0a  44 41 54 41 00 01 00 00  |ent.....DATA....|
0000d940  46 6f 6e 74 20 74 61 62  6c 65 20 6f 62 6a 65 63  |Font table objec|
0000d950  74 20 28 30 29 0a 23 50  61 72 65 6e 74 20 64 72  |t (0).#Parent dr|
0000d960  61 77 66 69 6c 65 5f 66  6f 72 6d 61 74 0a 54 68  |awfile_format.Th|
0000d970  69 73 20 6f 62 6a 65 63  74 20 68 61 73 20 6e 6f  |is object has no|
0000d980  20 62 6f 75 6e 64 69 6e  67 20 62 6f 78 2e 20 49  | bounding box. I|
0000d990  74 20 73 68 6f 75 6c 64  20 6f 6e 6c 79 20 61 70  |t should only ap|
0000d9a0  70 65 61 72 20 6f 6e 63  65 2c 20 61 6e 64 20 62  |pear once, and b|
0000d9b0  65 66 6f 72 65 20 61 6e  79 20 74 65 78 74 20 6f  |efore any text o|
0000d9c0  62 6a 65 63 74 73 2e 0a  0a 49 74 20 63 6f 6e 73  |bjects...It cons|
0000d9d0  69 73 74 73 20 6f 66 20  61 20 73 65 72 69 65 73  |ists of a series|
0000d9e0  20 6f 66 20 3a 0a 23 49  6e 64 65 6e 74 20 32 0a  | of :.#Indent 2.|
0000d9f0  31 20 62 79 74 65 20 66  6f 6e 74 20 6e 75 6d 62  |1 byte font numb|
0000da00  65 72 0a 7a 65 72 6f 20  74 65 72 6d 69 6e 61 74  |er.zero terminat|
0000da10  65 64 20 66 6f 6e 74 6e  61 6d 65 0a 30 20 74 6f  |ed fontname.0 to|
0000da20  20 33 20 7a 65 72 6f 73  20 74 6f 20 70 61 64 20  | 3 zeros to pad |
0000da30  74 6f 20 77 6f 72 64 0a  44 41 54 41 2e 01 00 00  |to word.DATA....|
0000da40  54 65 78 74 20 6f 62 6a  65 63 74 20 28 31 29 0a  |Text object (1).|
0000da50  23 50 61 72 65 6e 74 20  64 72 61 77 66 69 6c 65  |#Parent drawfile|
0000da60  5f 66 6f 72 6d 61 74 0a  4f 66 66 73 65 74 09 4c  |_format.Offset.L|
0000da70  65 6e 09 43 6f 6e 74 65  6e 74 73 0a 23 4c 69 6e  |en.Contents.#Lin|
0000da80  65 0a 32 34 09 34 09 54  65 78 74 20 63 6f 6c 6f  |e.24.4.Text colo|
0000da90  75 72 0a 32 38 09 34 09  42 61 63 6b 67 72 6f 75  |ur.28.4.Backgrou|
0000daa0  6e 64 20 68 69 6e 74 0a  33 32 09 34 09 3c 54 65  |nd hint.32.4.<Te|
0000dab0  78 74 20 73 74 79 6c 65  3d 3e 64 72 61 77 66 69  |xt style=>drawfi|
0000dac0  6c 65 5f 74 65 78 74 73  74 79 6c 65 3e 0a 33 36  |le_textstyle>.36|
0000dad0  09 34 09 78 2d 73 69 7a  65 20 28 69 6e 20 31 2f  |.4.x-size (in 1/|
0000dae0  36 34 30 27 73 20 6f 66  20 61 20 70 6f 69 6e 74  |640's of a point|
0000daf0  29 0a 34 30 09 34 09 79  2d 73 69 7a 65 20 28 69  |).40.4.y-size (i|
0000db00  65 20 64 72 61 77 20 75  6e 69 74 73 29 0a 34 34  |e draw units).44|
0000db10  09 34 09 78 20 63 6f 6f  72 64 20 6f 66 20 73 74  |.4.x coord of st|
0000db20  61 72 74 20 6f 66 20 62  61 73 65 6c 69 6e 65 0a  |art of baseline.|
0000db30  34 38 09 34 09 79 20 63  6f 6f 72 64 20 6f 66 20  |48.4.y coord of |
0000db40  69 74 0a 35 32 09 6e 09  7a 65 72 6f 20 74 65 72  |it.52.n.zero ter|
0000db50  6d 69 6e 61 74 65 64 20  73 74 72 69 6e 67 20 70  |minated string p|
0000db60  61 64 64 69 6e 67 00 00  44 41 54 41 d5 00 00 00  |adding..DATA....|
0000db70  54 72 61 6e 73 66 6f 72  6d 65 64 20 73 70 72 69  |Transformed spri|
0000db80  74 65 20 6f 62 6a 65 63  74 20 28 31 33 29 0a 23  |te object (13).#|
0000db90  50 61 72 65 6e 74 20 64  72 61 77 66 69 6c 65 5f  |Parent drawfile_|
0000dba0  66 6f 72 6d 61 74 0a 54  68 69 73 20 69 73 20 66  |format.This is f|
0000dbb0  6f 6c 6c 6f 77 65 64 20  62 79 20 61 20 32 34 20  |ollowed by a 24 |
0000dbc0  62 79 74 65 20 3c 74 72  61 6e 73 66 6f 72 6d 61  |byte <transforma|
0000dbd0  74 69 6f 6e 20 6d 61 74  72 69 78 3d 3e 64 72 61  |tion matrix=>dra|
0000dbe0  77 5f 74 72 61 6e 73 66  6f 72 6d 3e 2c 20 61 6e  |w_transform>, an|
0000dbf0  64 20 74 68 65 6e 20 61  20 3c 73 70 72 69 74 65  |d then a <sprite|
0000dc00  3d 3e 6f 73 5f 73 70 72  69 74 65 6f 70 5f 70 74  |=>os_spriteop_pt|
0000dc10  72 3e 2e 20 54 68 69 73  20 69 73 20 73 63 61 6c  |r>. This is scal|
0000dc20  65 64 20 74 6f 20 66 69  6c 6c 20 74 68 65 20 62  |ed to fill the b|
0000dc30  6f 75 6e 64 69 6e 67 20  62 6f 78 2e 0a 00 00 00  |ounding box.....|
0000dc40  44 41 54 41 a5 01 00 00  50 61 74 68 20 6f 62 6a  |DATA....Path obj|
0000dc50  65 63 74 20 28 32 29 0a  23 50 61 72 65 6e 74 20  |ect (2).#Parent |
0000dc60  64 72 61 77 66 69 6c 65  5f 66 6f 72 6d 61 74 0a  |drawfile_format.|
0000dc70  4f 66 66 73 65 74 0a 23  4c 69 6e 65 0a 32 34 09  |Offset.#Line.24.|
0000dc80  34 09 46 69 6c 6c 20 63  6f 6c 6f 75 72 20 28 2d  |4.Fill colour (-|
0000dc90  31 20 66 6f 72 20 6e 6f  6e 65 29 0a 32 38 09 34  |1 for none).28.4|
0000dca0  09 4f 75 74 6c 69 6e 65  20 63 6f 6c 20 28 2d 31  |.Outline col (-1|
0000dcb0  20 66 6f 72 20 6e 6f 6e  65 29 0a 33 32 09 34 09  | for none).32.4.|
0000dcc0  4f 75 74 6c 69 6e 65 20  77 69 64 74 68 0a 33 36  |Outline width.36|
0000dcd0  09 34 09 3c 70 61 74 68  20 73 74 79 6c 65 3d 3e  |.4.<path style=>|
0000dce0  64 72 61 77 66 69 6c 65  5f 70 61 74 68 73 74 79  |drawfile_pathsty|
0000dcf0  6c 65 3e 0a 34 30 09 6e  09 3c 4f 70 74 69 6f 6e  |le>.40.n.<Option|
0000dd00  61 6c 20 64 61 73 68 20  70 61 74 74 65 72 6e 3d  |al dash pattern=|
0000dd10  3e 64 72 61 77 66 69 6c  65 5f 64 61 73 68 73 74  |>drawfile_dashst|
0000dd20  79 6c 65 3e 0a 09 6e 09  50 61 74 68 20 63 6f 6d  |yle>..n.Path com|
0000dd30  70 6f 6e 65 6e 74 73 20  3a 0a 0a 2b 30 09 34 09  |ponents :..+0.4.|
0000dd40  54 61 67 20 69 64 09 4d  65 61 6e 69 6e 67 0a 09  |Tag id.Meaning..|
0000dd50  20 09 30 09 45 6e 64 20  6f 66 20 70 61 74 68 0a  | .0.End of path.|
0000dd60  09 20 09 32 09 4d 6f 76  65 2c 20 6f 6e 65 20 70  |. .2.Move, one p|
0000dd70  6f 69 6e 74 0a 09 20 09  35 09 43 6c 6f 73 65 20  |oint.. .5.Close |
0000dd80  73 75 62 2d 70 61 74 68  0a 09 20 09 38 09 4c 69  |sub-path.. .8.Li|
0000dd90  6e 65 2c 20 6f 6e 65 20  70 6f 69 6e 74 0a 09 20  |ne, one point.. |
0000dda0  09 36 09 42 65 7a 69 65  72 2c 20 74 68 72 65 65  |.6.Bezier, three|
0000ddb0  20 70 6f 69 6e 74 73 0a  0a 2b 34 09 6e 09 30 2d  | points..+4.n.0-|
0000ddc0  33 20 73 65 74 73 20 6f  66 20 28 78 2c 79 29 20  |3 sets of (x,y) |
0000ddd0  64 65 70 65 6e 64 61 6e  74 20 6f 6e 20 74 61 67  |dependant on tag|
0000dde0  0a 2e 2e 2e 0a 00 00 00  44 41 54 41 89 00 00 00  |........DATA....|
0000ddf0  53 70 72 69 74 65 20 6f  62 6a 65 63 74 20 28 35  |Sprite object (5|
0000de00  29 0a 23 50 61 72 65 6e  74 20 64 72 61 77 66 69  |).#Parent drawfi|
0000de10  6c 65 5f 66 6f 72 6d 61  74 0a 54 68 69 73 20 69  |le_format.This i|
0000de20  73 20 66 6f 6c 6c 6f 77  65 64 20 62 79 20 61 20  |s followed by a |
0000de30  3c 73 70 72 69 74 65 3d  3e 6f 73 5f 73 70 72 69  |<sprite=>os_spri|
0000de40  74 65 6f 70 5f 70 74 72  3e 2c 20 77 68 69 63 68  |teop_ptr>, which|
0000de50  20 69 73 20 73 63 61 6c  65 64 20 74 6f 20 66 69  | is scaled to fi|
0000de60  6c 6c 20 62 6f 75 6e 64  69 6e 67 20 62 6f 78 2e  |ll bounding box.|
0000de70  0a 00 00 00 44 41 54 41  db 00 00 00 47 72 6f 75  |....DATA....Grou|
0000de80  70 20 6f 62 6a 65 63 74  0a 23 50 61 72 65 6e 74  |p object.#Parent|
0000de90  20 64 72 61 77 66 69 6c  65 5f 66 6f 72 6d 61 74  | drawfile_format|
0000dea0  0a 23 20 4d 6f 72 65 20  66 61 66 66 69 6e 67 20  |.# More faffing |
0000deb0  77 69 74 68 20 73 70 61  63 65 73 2e 2e 2e 0a 54  |with spaces....T|
0000dec0  68 69 73 20 63 6f 6e 73  69 73 74 73 20 6f 66 20  |his consists of |
0000ded0  61 20 31 32 20 62 79 74  65 20 6e 61 6d 65 20 28  |a 12 byte name (|
0000dee0  70 61 64 64 65 64 20 77  69 74 68 20 7b 2a 7d 73  |padded with {*}s|
0000def0  70 61 63 65 73 7b 2a 7d  29 2c 20 61 6e 64 20 74  |paces{*}), and t|
0000df00  68 65 6e 20 61 20 73 65  71 75 65 6e 63 65 20 6f  |hen a sequence o|
0000df10  66 20 6f 62 6a 65 63 74  73 2e 20 54 68 65 73 65  |f objects. These|
0000df20  20 77 69 6c 6c 20 61 6c  6c 20 6c 69 65 20 77 69  | will all lie wi|
0000df30  74 68 69 6e 20 74 68 65  20 62 6f 75 6e 64 69 6e  |thin the boundin|
0000df40  67 20 62 6f 78 20 6f 66  20 74 68 69 73 2e 0a 00  |g box of this...|
0000df50  44 41 54 41 9e 00 00 00  54 61 67 67 65 64 20 6f  |DATA....Tagged o|
0000df60  62 6a 65 63 74 20 28 37  29 0a 23 50 61 72 65 6e  |bject (7).#Paren|
0000df70  74 20 64 72 61 77 66 69  6c 65 5f 66 6f 72 6d 61  |t drawfile_forma|
0000df80  74 0a 54 68 69 73 20 63  6f 6e 73 69 73 74 73 20  |t.This consists |
0000df90  6f 66 0a 8f 09 31 20 77  6f 72 64 20 6f 66 20 74  |of...1 word of t|
0000dfa0  61 67 20 69 64 20 28 61  6c 6c 6f 63 61 74 65 64  |ag id (allocated|
0000dfb0  20 66 72 6f 6d 20 61 63  6f 72 6e 29 0a 8f 09 61  | from acorn)...a|
0000dfc0  6e 20 6f 62 6a 65 63 74  0a 8f 09 6f 70 74 69 6f  |n object...optio|
0000dfd0  6e 61 6c 20 65 78 74 72  61 20 64 61 74 61 20 28  |nal extra data (|
0000dfe0  77 6f 72 64 20 61 6c 69  67 6e 65 64 29 0a 00 00  |word aligned)...|
0000dff0  44 41 54 41 40 01 00 00  54 65 78 74 20 61 72 65  |DATA@...Text are|
0000e000  61 20 6f 62 6a 65 63 74  20 28 39 29 0a 23 50 61  |a object (9).#Pa|
0000e010  72 65 6e 74 20 64 72 61  77 66 69 6c 65 5f 66 6f  |rent drawfile_fo|
0000e020  72 6d 61 74 0a 46 69 72  73 74 2c 20 31 20 6f 72  |rmat.First, 1 or|
0000e030  20 6d 6f 72 65 20 3c 74  65 78 74 20 63 6f 6c 75  | more <text colu|
0000e040  6d 6e 73 3d 3e 64 72 61  77 66 69 6c 65 5f 6f 62  |mns=>drawfile_ob|
0000e050  6a 65 63 74 31 30 3e 20  61 6e 64 20 74 68 65 6e  |ject10> and then|
0000e060  20 3a 0a 0a 4f 66 66 73  65 74 09 4c 65 6e 09 43  | :..Offset.Len.C|
0000e070  6f 6e 74 65 6e 74 73 0a  23 4c 69 6e 65 0a 30 09  |ontents.#Line.0.|
0000e080  34 09 7a 65 72 6f 20 74  6f 20 6d 61 72 6b 20 65  |4.zero to mark e|
0000e090  6e 64 20 6f 66 20 63 6f  6c 75 6d 6e 73 0a 34 09  |nd of columns.4.|
0000e0a0  34 09 72 65 73 65 72 76  65 64 0a 38 09 34 09 72  |4.reserved.8.4.r|
0000e0b0  65 73 65 72 76 65 64 0a  31 32 09 34 09 69 6e 69  |eserved.12.4.ini|
0000e0c0  74 69 61 6c 20 66 6f 72  65 67 72 6f 75 6e 64 20  |tial foreground |
0000e0d0  63 6f 6c 0a 31 36 09 34  09 69 6e 69 74 69 61 6c  |col.16.4.initial|
0000e0e0  20 62 61 63 6b 67 72 6f  75 6e 64 20 68 69 6e 74  | background hint|
0000e0f0  0a 32 30 09 6e 09 7a 65  72 6f 20 74 65 72 6d 69  |.20.n.zero termi|
0000e100  6e 61 74 65 64 20 3c 62  6f 64 79 20 6f 66 20 74  |nated <body of t|
0000e110  65 78 74 3d 3e 64 72 61  77 66 69 6c 65 5f 74 65  |ext=>drawfile_te|
0000e120  78 74 62 6f 64 79 3e 0a  70 61 64 64 69 6e 67 0a  |xtbody>.padding.|
0000e130  44 41 54 41 4d 01 00 00  50 61 74 68 20 73 74 79  |DATAM...Path sty|
0000e140  6c 65 0a 23 50 61 72 65  6e 74 20 64 72 61 77 66  |le.#Parent drawf|
0000e150  69 6c 65 5f 66 6f 72 6d  61 74 0a 42 69 74 73 09  |ile_format.Bits.|
0000e160  4d 65 61 6e 69 6e 67 0a  23 4c 69 6e 65 0a 30 2d  |Meaning.#Line.0-|
0000e170  31 09 4a 6f 69 6e 20 73  74 79 6c 65 20 3a 0a 09  |1.Join style :..|
0000e180  20 20 30 20 20 6d 69 74  72 65 64 0a 09 20 20 31  |  0  mitred..  1|
0000e190  20 20 72 6f 75 6e 64 0a  09 20 20 32 20 20 62 65  |  round..  2  be|
0000e1a0  76 65 6c 6c 65 64 0a 32  2d 33 09 45 6e 64 20 63  |velled.2-3.End c|
0000e1b0  61 70 20 3a 0a 09 20 20  30 20 20 62 75 74 74 0a  |ap :..  0  butt.|
0000e1c0  09 20 20 31 20 20 72 6f  75 6e 64 0a 09 20 20 32  |.  1  round..  2|
0000e1d0  20 20 73 71 61 72 65 0a  09 20 20 33 20 20 74 72  |  sqare..  3  tr|
0000e1e0  69 61 6e 67 6c 65 0a 34  2d 35 09 53 74 61 72 74  |iangle.4-5.Start|
0000e1f0  20 63 61 70 0a 36 09 57  69 6e 64 69 6e 67 20 72  | cap.6.Winding r|
0000e200  75 6c 65 20 3a 0a 09 20  20 30 20 20 6e 6f 6e 2d  |ule :..  0  non-|
0000e210  7a 65 72 6f 0a 09 20 20  31 20 20 65 76 65 6e 2d  |zero..  1  even-|
0000e220  6f 64 64 0a 37 09 64 61  73 68 20 70 61 74 74 65  |odd.7.dash patte|
0000e230  72 6e 20 3a 0a 09 20 20  30 20 20 6e 6f 6e 65 0a  |rn :..  0  none.|
0000e240  09 20 20 31 20 20 79 65  73 0a 31 36 2d 32 33 09  |.  1  yes.16-23.|
0000e250  74 72 69 61 6e 67 6c 65  20 63 61 70 20 77 69 64  |triangle cap wid|
0000e260  74 68 0a 32 34 2d 33 31  09 74 72 69 61 6e 67 6c  |th.24-31.triangl|
0000e270  65 20 63 61 70 20 6c 65  6e 67 74 68 0a 00 00 00  |e cap length....|
0000e280  44 41 54 41 5a 02 00 00  45 73 63 61 70 65 20 73  |DATAZ...Escape s|
0000e290  65 71 75 65 6e 63 65 73  20 69 6e 20 44 72 61 77  |equences in Draw|
0000e2a0  20 74 65 78 74 20 61 72  65 61 0a 23 50 61 72 65  | text area.#Pare|
0000e2b0  6e 74 20 64 72 61 77 66  69 6c 65 5f 66 6f 72 6d  |nt drawfile_form|
0000e2c0  61 74 0a 53 65 71 75 65  6e 63 65 09 09 4d 65 61  |at.Sequence..Mea|
0000e2d0  6e 69 6e 67 0a 23 4c 69  6e 65 0a 5c 5c 21 5c 3c  |ning.#Line.\\!\<|
0000e2e0  76 65 72 73 69 6f 6e 3e  2f 09 09 56 65 72 73 69  |version>/..Versi|
0000e2f0  6f 6e 20 6d 75 73 74 20  62 65 20 31 0a 5c 5c 41  |on must be 1.\\A|
0000e300  5c 3c 63 6f 64 65 3e 09  09 41 6c 69 67 6e 6d 65  |\<code>..Alignme|
0000e310  6e 74 3a 20 4c 2c 20 52  2c 20 43 2c 20 44 0a 5c  |nt: L, R, C, D.\|
0000e320  5c 42 5c 3c 52 3e 20 5c  3c 47 3e 20 5c 3c 42 3e  |\B\<R> \<G> \<B>|
0000e330  2f 09 53 65 74 20 62 61  63 6b 67 72 6f 75 6e 64  |/.Set background|
0000e340  20 68 69 6e 74 0a 5c 5c  43 5c 3c 52 3e 20 5c 3c  | hint.\\C\<R> \<|
0000e350  47 3e 20 5c 3c 42 3e 2f  09 53 65 74 20 66 6f 72  |G> \<B>/.Set for|
0000e360  65 67 72 6f 75 6e 64 20  63 6f 6c 6f 75 72 0a 5c  |eground colour.\|
0000e370  5c 44 5c 3c 6e 75 6d 62  65 72 3e 2f 09 09 4e 75  |\D\<number>/..Nu|
0000e380  6d 62 65 72 20 6f 66 20  63 6f 6c 75 6d 6e 73 0a  |mber of columns.|
0000e390  5c 5c 46 5c 3c 64 69 67  69 74 3e 5c 3c 6e 61 6d  |\\F\<digit>\<nam|
0000e3a0  65 3e 20 5c 3c 73 69 7a  65 3e 20 5b 5c 3c 77 69  |e> \<size> [\<wi|
0000e3b0  64 74 68 3e 5d 2f 09 44  65 63 6c 61 72 65 20 61  |dth>]/.Declare a|
0000e3c0  20 66 6f 6e 74 0a 5c 5c  5c 3c 64 69 67 69 74 3e  | font.\\\<digit>|
0000e3d0  09 09 53 65 6c 65 63 74  20 61 20 66 6f 6e 74 0a  |..Select a font.|
0000e3e0  5c 5c 4c 5c 3c 76 61 6c  75 65 3e 2f 09 09 4c 65  |\\L\<value>/..Le|
0000e3f0  61 64 69 6e 67 0a 5c 5c  4d 5c 3c 6c 65 66 74 3e  |ading.\\M\<left>|
0000e400  20 5c 3c 72 69 67 68 74  3e 2f 09 53 65 74 73 20  | \<right>/.Sets |
0000e410  6d 61 72 67 69 6e 73 0a  5c 5c 50 5c 3c 76 61 6c  |margins.\\P\<val|
0000e420  75 65 3e 2f 09 09 50 61  72 61 67 72 61 70 68 20  |ue>/..Paragraph |
0000e430  6c 65 61 64 69 6e 67 0a  5c 5c 55 5c 3c 70 6f 73  |leading.\\U\<pos|
0000e440  3e 20 5c 3c 74 68 69 63  6b 6e 65 73 73 3e 2f 09  |> \<thickness>/.|
0000e450  54 75 72 6e 20 6f 6e 20  75 6e 64 65 72 6c 69 6e  |Turn on underlin|
0000e460  65 0a 5c 5c 56 5b 2d 5d  5c 3c 64 69 67 69 74 3e  |e.\\V[-]\<digit>|
0000e470  09 09 56 65 72 74 69 63  61 6c 20 6d 6f 76 65 0a  |..Vertical move.|
0000e480  5c 5c 2d 09 09 09 53 6f  66 74 20 68 79 70 65 6e  |\\-...Soft hypen|
0000e490  0a 5c 5c 5c 3c 6e 65 77  6c 69 6e 65 3e 09 09 46  |.\\\<newline>..F|
0000e4a0  6f 72 63 65 20 6c 69 6e  65 20 62 72 65 61 6b 0a  |orce line break.|
0000e4b0  5c 5c 5c 5c 09 09 09 22  5c 5c 22 0a 5c 5c 3b 5c  |\\\\..."\\".\\;\|
0000e4c0  3c 74 65 78 74 3e 20 5c  3c 6e 65 77 6c 69 6e 65  |<text> \<newline|
0000e4d0  3e 09 63 6f 6d 6d 65 6e  74 0a 00 00 44 41 54 41  |>.comment...DATA|
0000e4e0  a3 00 00 00 54 65 78 74  20 73 74 79 6c 65 0a 23  |....Text style.#|
0000e4f0  50 61 72 65 6e 74 20 64  72 61 77 66 69 6c 65 5f  |Parent drawfile_|
0000e500  66 6f 72 6d 61 74 0a 46  69 72 73 74 20 28 6c 6f  |format.First (lo|
0000e510  77 65 73 74 29 20 62 79  74 65 20 69 73 20 66 6f  |west) byte is fo|
0000e520  6e 74 6e 75 6d 62 65 72  2c 20 61 6e 64 20 72 65  |ntnumber, and re|
0000e530  66 65 72 73 20 74 6f 20  66 6f 6e 74 20 69 6e 20  |fers to font in |
0000e540  66 6f 6e 74 20 74 61 62  6c 65 2e 0a 0a 54 68 65  |font table...The|
0000e550  20 72 65 73 74 20 6f 66  20 77 6f 72 64 20 69 73  | rest of word is|
0000e560  20 72 65 73 65 72 76 65  64 2c 20 61 6e 64 20 73  | reserved, and s|
0000e570  68 6f 75 6c 64 20 62 65  20 7a 65 72 6f 2e 0a 00  |hould be zero...|
0000e580  44 41 54 41 f5 00 00 00  54 65 78 74 20 63 6f 6c  |DATA....Text col|
0000e590  75 6d 6e 20 6f 62 6a 65  63 74 20 28 31 30 29 0a  |umn object (10).|
0000e5a0  23 50 61 72 65 6e 74 20  64 72 61 77 66 69 6c 65  |#Parent drawfile|
0000e5b0  5f 66 6f 72 6d 61 74 0a  4e 6f 20 64 61 74 61 20  |_format.No data |
0000e5c0  6f 74 68 65 72 20 74 68  61 6e 20 74 68 65 20 73  |other than the s|
0000e5d0  74 61 6e 64 61 72 64 20  36 20 77 6f 72 64 20 68  |tandard 6 word h|
0000e5e0  65 61 64 65 72 20 2d 20  74 68 65 20 62 6f 75 6e  |eader - the boun|
0000e5f0  64 69 6e 67 20 62 6f 78  20 69 6e 20 74 68 65 20  |ding box in the |
0000e600  68 65 61 64 65 72 20 67  69 76 65 73 20 74 68 65  |header gives the|
0000e610  20 6c 6f 63 61 74 69 6f  6e 20 6f 66 20 74 68 65  | location of the|
0000e620  20 63 6f 6c 75 6d 6e 2e  20 54 65 78 74 20 63 6f  | column. Text co|
0000e630  6c 75 6d 6e 20 6f 62 6a  65 63 74 73 20 63 61 6e  |lumn objects can|
0000e640  20 6f 6e 6c 79 20 6f 63  63 75 72 20 69 6e 20 3c  | only occur in <|
0000e650  54 65 78 74 20 61 72 65  61 20 6f 62 6a 65 63 74  |Text area object|
0000e660  73 3d 3e 64 72 61 77 66  69 6c 65 5f 6f 62 6a 65  |s=>drawfile_obje|
0000e670  63 74 39 3e 2e 00 00 00  44 41 54 41 50 03 00 00  |ct9>....DATAP...|
0000e680  4f 70 74 69 6f 6e 20 6f  62 6a 65 63 74 20 28 31  |Option object (1|
0000e690  31 29 0a 23 50 61 72 65  6e 74 20 44 72 61 77 5f  |1).#Parent Draw_|
0000e6a0  66 69 6c 65 66 6f 72 6d  61 74 0a 54 68 69 73 20  |fileformat.This |
0000e6b0  6f 62 6a 65 63 74 20 68  61 73 20 73 70 61 63 65  |object has space|
0000e6c0  20 66 6f 72 20 61 20 62  6f 75 6e 64 69 6e 67 20  | for a bounding |
0000e6d0  62 6f 78 2c 20 62 75 74  20 74 68 65 20 34 20 77  |box, but the 4 w|
0000e6e0  6f 72 64 73 20 73 68 6f  75 6c 64 20 62 65 20 73  |ords should be s|
0000e6f0  65 74 20 74 6f 20 7a 65  72 6f 2e 0a 0a 4f 66 66  |et to zero...Off|
0000e700  73 65 74 09 43 6f 6e 74  65 6e 74 73 0a 23 4c 69  |set.Contents.#Li|
0000e710  6e 65 0a 30 09 70 61 70  65 72 20 73 69 7a 65 20  |ne.0.paper size |
0000e720  7b 2f 7d 65 2e 67 2e 7b  2f 7d 09 41 33 20 3d 20  |{/}e.g.{/}.A3 = |
0000e730  26 34 30 30 0a 20 09 20  09 09 09 41 34 20 3d 20  |&400. . ...A4 = |
0000e740  26 35 30 30 0a 09 20 09  09 09 41 35 20 3d 20 26  |&500.. ...A5 = &|
0000e750  36 30 30 0a 34 09 70 61  70 65 72 20 6c 69 6d 69  |600.4.paper limi|
0000e760  74 73 09 6d 65 61 6e 69  6e 67 20 77 68 65 6e 20  |ts.meaning when |
0000e770  62 69 74 20 73 65 74 3a  0a 09 20 09 09 30 09 09  |bit set:.. ..0..|
0000e780  73 68 6f 77 20 6c 69 6d  69 74 73 0a 09 20 09 09  |show limits.. ..|
0000e790  34 09 09 6c 61 6e 64 73  63 61 70 65 0a 09 20 09  |4..landscape.. .|
0000e7a0  09 38 09 09 64 65 66 61  75 6c 74 20 74 6f 20 70  |.8..default to p|
0000e7b0  72 69 6e 74 65 72 20 6c  69 6d 69 74 73 0a 09 20  |rinter limits.. |
0000e7c0  09 09 31 2d 33 2c 35 2d  37 2c 39 2d 33 31 09 30  |..1-3,5-7,9-31.0|
0000e7d0  20 28 72 65 73 65 72 76  65 64 29 0a 38 09 67 72  | (reserved).8.gr|
0000e7e0  69 64 20 73 70 61 63 69  6e 67 20 28 66 6c 6f 61  |id spacing (floa|
0000e7f0  74 69 6e 67 20 70 6f 69  6e 74 29 0a 31 36 09 67  |ting point).16.g|
0000e800  72 69 64 20 64 69 76 69  73 69 6f 6e 0a 09 20 09  |rid division.. .|
0000e810  09 09 7a 65 72 6f 3a 09  09 6e 6f 6e 2d 7a 65 72  |..zero:..non-zer|
0000e820  6f 3a 0a 32 30 09 67 72  69 64 09 09 09 72 65 63  |o:.20.grid...rec|
0000e830  74 61 6e 67 75 6c 61 72  09 69 73 6f 6d 65 74 72  |tangular.isometr|
0000e840  69 63 0a 32 34 09 61 75  74 6f 2d 61 64 6a 75 73  |ic.24.auto-adjus|
0000e850  74 09 09 6f 66 66 09 09  6f 6e 0a 32 38 09 67 72  |t..off..on.28.gr|
0000e860  69 64 20 73 68 6f 77 6e  09 09 6e 6f 09 09 79 65  |id shown..no..ye|
0000e870  73 0a 33 32 09 75 6e 69  74 73 09 09 09 69 6e 63  |s.32.units...inc|
0000e880  68 65 73 09 09 63 6d 0a  33 36 09 7a 6f 6f 6d 20  |hes..cm.36.zoom |
0000e890  6d 75 6c 74 69 70 6c 69  65 72 20 28 31 2d 38 29  |multiplier (1-8)|
0000e8a0  09 20 0a 34 30 09 7a 6f  6f 6d 20 64 69 76 69 64  |. .40.zoom divid|
0000e8b0  65 72 20 28 31 2d 38 29  09 20 0a 34 34 09 7a 6f  |er (1-8). .44.zo|
0000e8c0  6f 6d 20 6c 6f 63 6b 69  6e 67 09 09 6e 6f 6e 65  |om locking..none|
0000e8d0  09 09 70 6f 77 65 72 73  20 6f 66 20 32 0a 34 38  |..powers of 2.48|
0000e8e0  09 74 6f 6f 6c 62 6f 78  09 09 09 61 62 73 65 6e  |.toolbox...absen|
0000e8f0  74 09 09 70 72 65 73 65  6e 74 0a 35 32 09 69 6e  |t..present.52.in|
0000e900  69 74 69 61 6c 20 65 6e  74 72 79 20 6d 6f 64 65  |itial entry mode|
0000e910  20 2d 20 62 69 74 20 73  65 74 20 66 6f 72 0a 09  | - bit set for..|
0000e920  30 20 6c 69 6e 65 0a 09  31 20 63 6c 6f 73 65 64  |0 line..1 closed|
0000e930  20 6c 69 6e 65 0a 09 32  20 63 75 72 76 65 0a 09  | line..2 curve..|
0000e940  33 20 63 6c 6f 73 65 64  20 63 75 72 76 65 0a 09  |3 closed curve..|
0000e950  34 20 72 65 63 74 61 6e  67 6c 65 0a 09 35 20 65  |4 rectangle..5 e|
0000e960  6c 6c 69 70 73 65 0a 09  36 20 74 65 78 74 20 6c  |llipse..6 text l|
0000e970  69 6e 65 0a 09 37 20 73  65 6c 65 63 74 0a 35 36  |ine..7 select.56|
0000e980  09 62 79 74 65 73 20 69  6e 20 75 6e 64 6f 20 62  |.bytes in undo b|
0000e990  75 66 66 65 72 0a 0a 50  65 72 73 6f 6e 61 6c 6c  |uffer..Personall|
0000e9a0  79 20 49 27 64 27 76 65  20 70 61 63 6b 65 64 20  |y I'd've packed |
0000e9b0  77 6f 72 64 73 20 32 30  2d 35 32 20 69 6e 20 6f  |words 20-52 in o|
0000e9c0  6e 65 20 77 6f 72 64 2e  44 41 54 41 41 03 00 00  |ne word.DATAA...|
0000e9d0  46 6f 72 6d 61 74 20 6f  66 20 44 72 61 77 20 66  |Format of Draw f|
0000e9e0  69 6c 65 20 28 66 69 6c  65 74 79 70 65 20 61 66  |ile (filetype af|
0000e9f0  66 29 0a 23 50 61 72 65  6e 74 20 44 72 61 77 66  |f).#Parent Drawf|
0000ea00  69 6c 65 5f 0a 44 72 61  77 20 66 69 6c 65 73 20  |ile_.Draw files |
0000ea10  63 6f 6e 73 69 73 74 20  6f 66 20 3a 0a 0a 3c 46  |consist of :..<F|
0000ea20  69 6c 65 20 68 65 61 64  65 72 3d 3e 44 72 61 77  |ile header=>Draw|
0000ea30  46 69 6c 65 5f 68 65 61  64 65 72 3e 2c 20 66 6f  |File_header>, fo|
0000ea40  6c 6c 6f 77 65 64 20 62  79 20 30 20 6f 72 20 6d  |llowed by 0 or m|
0000ea50  6f 72 65 20 6f 62 6a 65  63 74 73 20 3a 0a 0a 4f  |ore objects :..O|
0000ea60  66 66 73 65 74 09 4c 65  6e 09 43 6f 6e 74 65 6e  |ffset.Len.Conten|
0000ea70  74 73 0a 23 4c 69 6e 65  0a 30 09 34 09 4f 62 6a  |ts.#Line.0.4.Obj|
0000ea80  65 63 74 20 74 79 70 65  0a 09 20 09 20 20 30 09  |ect type.. .  0.|
0000ea90  3c 46 6f 6e 74 20 74 61  62 6c 65 3d 3e 64 72 61  |<Font table=>dra|
0000eaa0  77 66 69 6c 65 5f 6f 62  6a 65 63 74 30 3e 0a 09  |wfile_object0>..|
0000eab0  20 09 20 20 31 09 3c 54  65 78 74 20 6f 62 6a 65  | .  1.<Text obje|
0000eac0  63 74 3d 3e 64 72 61 77  66 69 6c 65 5f 6f 62 6a  |ct=>drawfile_obj|
0000ead0  65 63 74 31 3e 0a 09 20  09 20 20 32 09 3c 50 61  |ect1>.. .  2.<Pa|
0000eae0  74 68 20 6f 62 6a 65 63  74 3d 3e 64 72 61 77 66  |th object=>drawf|
0000eaf0  69 6c 65 5f 6f 62 6a 65  63 74 32 3e 0a 09 20 09  |ile_object2>.. .|
0000eb00  20 20 35 09 3c 53 70 72  69 74 65 20 6f 62 6a 65  |  5.<Sprite obje|
0000eb10  63 74 3d 3e 64 72 61 77  66 69 6c 65 5f 6f 62 6a  |ct=>drawfile_obj|
0000eb20  65 63 74 35 3e 0a 09 20  09 20 20 36 09 3c 47 72  |ect5>.. .  6.<Gr|
0000eb30  6f 75 70 20 6f 62 6a 65  63 74 3d 3e 64 72 61 77  |oup object=>draw|
0000eb40  66 69 6c 65 5f 6f 62 6a  65 63 74 36 3e 0a 09 20  |file_object6>.. |
0000eb50  09 20 20 37 09 3c 54 61  67 67 65 64 20 6f 62 6a  |.  7.<Tagged obj|
0000eb60  65 63 74 3d 3e 64 72 61  77 66 69 6c 65 5f 6f 62  |ect=>drawfile_ob|
0000eb70  6a 65 63 74 37 3e 0a 09  20 09 20 20 39 09 3c 54  |ject7>.. .  9.<T|
0000eb80  65 78 74 20 61 72 65 61  20 6f 62 6a 65 63 74 3d  |ext area object=|
0000eb90  3e 64 72 61 77 66 69 6c  65 5f 6f 62 6a 65 63 74  |>drawfile_object|
0000eba0  39 3e 0a 09 20 09 20 20  31 30 09 3c 54 65 78 74  |9>.. .  10.<Text|
0000ebb0  20 63 6f 6c 75 6d 6e 20  6f 62 6a 65 63 74 3d 3e  | column object=>|
0000ebc0  64 72 61 77 66 69 6c 65  5f 6f 62 6a 65 63 74 31  |drawfile_object1|
0000ebd0  30 3e 0a 09 20 09 20 20  31 31 09 3c 4f 70 74 69  |0>.. .  11.<Opti|
0000ebe0  6f 6e 73 20 6f 62 6a 65  63 74 3d 3e 64 72 61 77  |ons object=>draw|
0000ebf0  66 69 6c 65 5f 6f 62 6a  65 63 74 31 31 3e 0a 09  |file_object11>..|
0000ec00  20 09 20 20 31 32 09 3c  54 72 61 6e 73 66 6f 72  | .  12.<Transfor|
0000ec10  6d 65 64 20 74 65 78 74  20 6f 62 6a 65 63 74 3d  |med text object=|
0000ec20  3e 64 72 61 77 66 69 6c  65 5f 6f 62 6a 65 63 74  |>drawfile_object|
0000ec30  31 32 3e 0a 09 20 09 20  20 31 33 09 3c 54 72 61  |12>.. .  13.<Tra|
0000ec40  6e 73 66 6f 72 6d 65 64  20 73 70 72 69 74 65 20  |nsformed sprite |
0000ec50  6f 62 6a 65 63 74 3d 3e  64 72 61 77 66 69 6c 65  |object=>drawfile|
0000ec60  5f 6f 62 6a 65 63 74 31  33 3e 0a 09 20 09 20 20  |_object13>.. .  |
0000ec70  31 36 09 3c 4a 50 45 47  20 6f 62 6a 65 63 74 3d  |16.<JPEG object=|
0000ec80  3e 64 72 61 77 66 69 6c  65 5f 6f 62 6a 65 63 74  |>drawfile_object|
0000ec90  31 36 3e 0a 34 09 34 09  57 6f 72 64 20 61 6c 69  |16>.4.4.Word ali|
0000eca0  67 6e 65 64 20 73 69 7a  65 2c 20 69 6e 63 6c 75  |gned size, inclu|
0000ecb0  64 69 6e 67 20 68 65 61  64 65 72 0a 38 09 31 36  |ding header.8.16|
0000ecc0  09 42 6f 75 6e 64 69 6e  67 20 62 6f 78 20 28 6e  |.Bounding box (n|
0000ecd0  6f 74 20 61 6c 6c 20 74  79 70 65 73 20 68 61 76  |ot all types hav|
0000ece0  65 20 74 68 69 73 29 0a  6e 09 6e 09 4f 62 6a 65  |e this).n.n.Obje|
0000ecf0  63 74 20 73 70 65 63 69  66 69 63 20 64 61 74 61  |ct specific data|
0000ed00  2c 20 69 66 20 61 6e 79  0a 00 00 00 44 41 54 41  |, if any....DATA|
0000ed10  3d 02 00 00 4a 50 45 47  20 6f 62 6a 65 63 74 20  |=...JPEG object |
0000ed20  28 31 36 29 0a 23 50 61  72 65 6e 74 20 64 72 61  |(16).#Parent dra|
0000ed30  77 66 69 6c 65 5f 66 6f  72 6d 61 74 0a 4f 66 66  |wfile_format.Off|
0000ed40  73 65 74 09 4c 65 6e 09  43 6f 6e 74 65 6e 74 73  |set.Len.Contents|
0000ed50  0a 23 4c 69 6e 65 0a 32  34 09 34 09 68 65 69 67  |.#Line.24.4.heig|
0000ed60  68 74 09 28 64 72 61 77  20 75 6e 69 74 73 29 0a  |ht.(draw units).|
0000ed70  32 38 09 34 09 77 69 64  74 68 0a 33 32 09 34 09  |28.4.width.32.4.|
0000ed80  78 20 44 50 49 09 28 39  30 20 66 6f 72 20 61 20  |x DPI.(90 for a |
0000ed90  6e 6f 72 6d 61 6c 20 73  71 75 61 72 65 20 70 69  |normal square pi|
0000eda0  78 65 6c 20 6d 6f 64 65  29 0a 33 36 09 34 09 79  |xel mode).36.4.y|
0000edb0  20 44 50 49 0a 34 30 09  32 34 09 3c 74 72 61 6e  | DPI.40.24.<tran|
0000edc0  73 66 6f 72 6d 61 74 69  6f 6e 20 6d 61 74 72 69  |sformation matri|
0000edd0  78 3d 3e 64 72 61 77 5f  74 72 61 6e 73 66 6f 72  |x=>draw_transfor|
0000ede0  6d 3e 0a 36 34 09 34 09  6c 65 6e 67 74 68 20 6f  |m>.64.4.length o|
0000edf0  66 20 4a 50 45 47 20 64  61 74 61 0a 36 38 09 20  |f JPEG data.68. |
0000ee00  09 65 6d 62 65 64 64 65  64 20 4a 50 45 47 20 28  |.embedded JPEG (|
0000ee10  73 74 72 69 63 74 6c 79  20 4a 46 49 46 29 20 66  |strictly JFIF) f|
0000ee20  69 6c 65 0a 70 61 64 64  69 6e 67 20 74 6f 20 6e  |ile.padding to n|
0000ee30  65 78 74 20 77 6f 72 64  0a 0a 43 75 72 72 65 6e  |ext word..Curren|
0000ee40  74 6c 79 20 69 74 20 73  65 65 6d 73 20 74 68 61  |tly it seems tha|
0000ee50  74 20 74 68 65 20 36 20  77 6f 72 64 20 74 72 61  |t the 6 word tra|
0000ee60  6e 73 66 6f 72 6d 61 74  69 6f 6e 20 6d 61 74 72  |nsformation matr|
0000ee70  69 78 20 69 73 20 75 73  65 64 20 6f 6e 6c 79 20  |ix is used only |
0000ee80  74 6f 20 73 63 61 6c 65  20 74 68 65 20 4a 50 45  |to scale the JPE|
0000ee90  47 20 69 6d 61 67 65 20  61 6e 64 20 74 72 61 6e  |G image and tran|
0000eea0  73 6c 61 74 65 20 69 74  20 66 72 6f 6d 20 28 30  |slate it from (0|
0000eeb0  2c 30 29 2c 28 68 65 69  67 68 74 2c 77 69 64 74  |,0),(height,widt|
0000eec0  68 29 20 74 6f 20 74 68  65 20 72 65 71 75 69 72  |h) to the requir|
0000eed0  65 64 20 70 6f 73 69 74  69 6f 6e 20 6f 6e 20 74  |ed position on t|
0000eee0  68 65 20 70 61 67 65 2e  20 49 74 20 69 73 20 6e  |he page. It is n|
0000eef0  6f 74 20 6b 6e 6f 77 6e  20 77 68 65 74 68 65 72  |ot known whether|
0000ef00  20 74 68 69 73 20 6f 62  6a 65 63 74 20 63 61 6e  | this object can|
0000ef10  20 63 6f 6e 74 61 69 6e  20 4a 50 45 47 20 64 61  | contain JPEG da|
0000ef20  74 61 20 69 6e 20 61 6e  79 20 66 6f 72 6d 61 74  |ta in any format|
0000ef30  20 6f 74 68 65 72 20 74  68 61 6e 20 61 20 4a 46  | other than a JF|
0000ef40  49 46 20 66 69 6c 65 2e  0a 00 00 00 44 41 54 41  |IF file.....DATA|
0000ef50  94 02 00 00 54 72 61 6e  73 66 6f 72 6d 65 64 20  |....Transformed |
0000ef60  74 65 78 74 20 6f 62 6a  65 63 74 20 28 31 32 29  |text object (12)|
0000ef70  0a 4f 66 66 73 65 74 09  4c 65 6e 09 43 6f 6e 74  |.Offset.Len.Cont|
0000ef80  65 6e 74 73 0a 23 4c 69  6e 65 0a 32 34 09 32 34  |ents.#Line.24.24|
0000ef90  09 3c 54 72 61 6e 73 66  6f 72 6d 61 74 69 6f 6e  |.<Transformation|
0000efa0  20 6d 61 74 72 69 78 3d  3e 46 6f 6e 74 5f 6d 61  | matrix=>Font_ma|
0000efb0  74 72 69 78 3e 0a 23 20  4f 69 20 4a 75 73 74 69  |trix>.# Oi Justi|
0000efc0  6e 20 2d 20 54 65 6b 6b  69 65 20 64 69 73 63 20  |n - Tekkie disc |
0000efd0  72 65 66 65 72 73 20 79  6f 75 20 74 6f 20 46 6f  |refers you to Fo|
0000efe0  6e 74 20 6d 61 74 72 69  78 2c 20 6e 6f 74 20 64  |nt matrix, not d|
0000eff0  72 61 77 20 6d 61 74 72  69 78 21 20 3a 2d 29 0a  |raw matrix! :-).|
0000f000  23 20 41 68 2c 20 77 65  6c 6c 20 49 20 61 6d 20  |# Ah, well I am |
0000f010  77 72 6f 6e 67 20 61 6e  64 20 69 74 20 69 73 20  |wrong and it is |
0000f020  72 69 67 68 74 2e 2e 2e  20 4d 61 6b 65 73 20 61  |right... Makes a|
0000f030  20 63 68 61 6e 67 65 20  3a 2d 29 0a 23 20 49 20  | change :-).# I |
0000f040  63 61 6e 20 73 65 65 20  74 68 65 20 68 65 61 64  |can see the head|
0000f050  6c 69 6e 65 73 20 6e 6f  77 20 2d 20 22 50 52 4d  |lines now - "PRM|
0000f060  20 63 6f 72 72 65 63 74  20 66 6f 72 20 6f 6e 63  | correct for onc|
0000f070  65 21 22 0a 34 38 09 34  09 46 6f 6e 74 20 66 6c  |e!".48.4.Font fl|
0000f080  61 67 73 20 3a 0a 09 20  09 20 20 62 69 74 20 30  |ags :.. .  bit 0|
0000f090  20 73 65 74 20 3a 20 6b  65 72 6e 20 74 65 78 74  | set : kern text|
0000f0a0  0a 09 20 09 20 20 62 69  74 20 31 20 73 65 74 20  |.. .  bit 1 set |
0000f0b0  3a 20 72 69 67 68 74 20  74 6f 20 6c 65 66 74 0a  |: right to left.|
0000f0c0  0a 52 65 73 74 20 61 72  65 20 61 73 20 66 6f 72  |.Rest are as for|
0000f0d0  20 6e 6f 72 6d 61 6c 20  3c 74 65 78 74 20 6f 62  | normal <text ob|
0000f0e0  6a 65 63 74 3d 3e 64 72  61 77 66 69 6c 65 5f 6f  |ject=>drawfile_o|
0000f0f0  62 6a 65 63 74 31 3e 20  3a 0a 0a 35 32 09 34 09  |bject1> :..52.4.|
0000f100  54 65 78 74 20 63 6f 6c  6f 75 72 0a 35 36 09 34  |Text colour.56.4|
0000f110  09 42 61 63 6b 67 72 6f  75 6e 64 20 68 69 6e 74  |.Background hint|
0000f120  0a 36 30 09 34 09 3c 54  65 78 74 20 73 74 79 6c  |.60.4.<Text styl|
0000f130  65 3d 3e 64 72 61 77 66  69 6c 65 5f 74 65 78 74  |e=>drawfile_text|
0000f140  73 74 79 6c 65 3e 0a 36  34 09 34 09 78 2d 73 69  |style>.64.4.x-si|
0000f150  7a 65 20 28 69 6e 20 31  2f 36 34 30 27 73 20 6f  |ze (in 1/640's o|
0000f160  66 20 61 20 70 6f 69 6e  74 29 0a 36 38 09 34 09  |f a point).68.4.|
0000f170  79 2d 73 69 7a 65 20 28  69 65 20 64 72 61 77 20  |y-size (ie draw |
0000f180  75 6e 69 74 73 29 0a 37  32 09 34 09 78 20 63 6f  |units).72.4.x co|
0000f190  6f 72 64 20 6f 66 20 73  74 61 72 74 20 6f 66 20  |ord of start of |
0000f1a0  62 61 73 65 6c 69 6e 65  0a 37 36 09 34 09 79 20  |baseline.76.4.y |
0000f1b0  63 6f 6f 72 64 20 6f 66  20 69 74 0a 38 30 09 6e  |coord of it.80.n|
0000f1c0  09 7a 65 72 6f 20 74 65  72 6d 69 6e 61 74 65 64  |.zero terminated|
0000f1d0  20 73 74 72 69 6e 67 0a  70 61 64 64 69 6e 67 0a  | string.padding.|
0000f1e0  44 41 54 41 10 02 00 00  52 65 6e 64 65 72 20 73  |DATA....Render s|
0000f1f0  74 61 74 65 20 66 6f 72  20 44 72 61 77 46 69 6c  |tate for DrawFil|
0000f200  65 0a 23 50 61 72 65 6e  74 20 53 65 72 76 69 63  |e.#Parent Servic|
0000f210  65 5f 34 35 35 34 30 0a  4f 66 66 73 65 74 09 43  |e_45540.Offset.C|
0000f220  6f 6e 74 65 6e 74 73 0a  23 4c 69 6e 65 0a 30 09  |ontents.#Line.0.|
0000f230  70 6f 69 6e 74 65 72 20  74 6f 20 3c 6f 62 6a 65  |pointer to <obje|
0000f240  63 74 20 74 6f 20 62 65  20 72 65 6e 64 65 72 65  |ct to be rendere|
0000f250  64 3d 3e 44 72 61 77 46  69 6c 65 5f 66 6f 72 6d  |d=>DrawFile_form|
0000f260  61 74 3e 0a 23 20 47 65  72 70 68 3e 20 41 6e 6f  |at>.# Gerph> Ano|
0000f270  74 68 65 72 20 68 6f 72  72 69 64 20 6c 69 6e 6b  |ther horrid link|
0000f280  0a 34 09 70 6f 69 6e 74  65 72 20 74 6f 20 3c 44  |.4.pointer to <D|
0000f290  72 61 77 46 69 6c 65 20  68 65 61 64 65 72 3d 3e  |rawFile header=>|
0000f2a0  64 72 61 77 66 69 6c 65  5f 68 65 61 64 65 72 3e  |drawfile_header>|
0000f2b0  0a 38 09 70 6f 69 6e 74  65 72 20 74 6f 20 3c 66  |.8.pointer to <f|
0000f2c0  6f 6e 74 20 74 61 62 6c  65 20 6f 62 6a 65 63 74  |ont table object|
0000f2d0  3d 3e 44 72 61 77 66 69  6c 65 5f 6f 62 6a 65 63  |=>Drawfile_objec|
0000f2e0  74 30 3e 2c 20 6f 72 20  30 20 69 66 20 6e 6f 6e  |t0>, or 0 if non|
0000f2f0  65 20 66 6f 75 6e 64 20  79 65 74 0a 31 32 09 66  |e found yet.12.f|
0000f300  6c 61 67 73 20 70 61 73  73 65 64 20 74 6f 20 3c  |lags passed to <|
0000f310  44 72 61 77 46 69 6c 65  5f 52 65 6e 64 65 72 3e  |DrawFile_Render>|
0000f320  0a 31 36 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |.16.pointer to <|
0000f330  74 72 61 6e 73 66 6f 72  6d 61 74 69 6f 6e 20 6d  |transformation m|
0000f340  61 74 72 69 78 3d 3e 64  72 61 77 5f 74 72 61 6e  |atrix=>draw_tran|
0000f350  73 66 6f 72 6d 3e 0a 32  30 09 70 6f 69 6e 74 65  |sform>.20.pointe|
0000f360  72 20 74 6f 20 3c 63 6c  69 70 70 69 6e 67 20 72  |r to <clipping r|
0000f370  65 63 74 61 6e 67 6c 65  3d 3e 73 77 69 5f 62 62  |ectangle=>swi_bb|
0000f380  6f 78 3e 0a 32 34 09 66  6c 61 74 6e 65 73 73 20  |ox>.24.flatness |
0000f390  70 61 72 61 6d 65 74 65  72 20 70 61 73 73 65 64  |parameter passed|
0000f3a0  20 74 6f 20 3c 44 72 61  77 46 69 6c 65 5f 52 65  | to <DrawFile_Re|
0000f3b0  6e 64 65 72 3e 0a 32 38  09 70 6f 69 6e 74 65 72  |nder>.28.pointer|
0000f3c0  20 74 6f 20 3c 65 72 72  6f 72 20 62 6c 6f 63 6b  | to <error block|
0000f3d0  3d 3e 73 77 69 5f 65 72  72 6f 72 62 6c 6f 63 6b  |=>swi_errorblock|
0000f3e0  3e 2c 20 6f 72 20 30 20  69 66 20 6e 6f 6e 65 0a  |>, or 0 if none.|
0000f3f0  44 41 54 41 2e 01 00 00  44 72 61 77 66 69 6c 65  |DATA....Drawfile|
0000f400  20 68 65 61 64 65 72 20  62 6c 6f 63 6b 0a 23 50  | header block.#P|
0000f410  61 72 65 6e 74 20 44 72  61 77 46 69 6c 65 5f 46  |arent DrawFile_F|
0000f420  6f 72 6d 61 74 0a 4f 66  66 73 65 74 09 4c 65 6e  |ormat.Offset.Len|
0000f430  09 43 6f 6e 74 65 6e 74  73 0a 23 4c 69 6e 65 0a  |.Contents.#Line.|
0000f440  30 09 34 09 22 44 72 61  77 22 0a 34 09 34 09 4d  |0.4."Draw".4.4.M|
0000f450  61 6a 6f 72 20 76 65 72  73 69 6f 6e 2c 20 32 30  |ajor version, 20|
0000f460  31 20 61 74 20 70 72 65  73 65 6e 74 0a 38 09 34  |1 at present.8.4|
0000f470  09 4d 69 6e 6f 72 20 76  65 72 73 69 6f 6e 0a 31  |.Minor version.1|
0000f480  32 09 31 32 09 4e 61 6d  65 20 6f 66 20 70 72 6f  |2.12.Name of pro|
0000f490  64 75 63 69 6e 67 20 70  72 6f 67 72 61 6d 2c 20  |ducing program, |
0000f4a0  70 61 64 64 65 64 20 77  69 74 68 20 2a 73 70 61  |padded with *spa|
0000f4b0  63 65 73 2a 0a 23 20 48  65 79 2c 20 6c 65 74 27  |ces*.# Hey, let'|
0000f4c0  73 20 6a 75 73 74 20 73  74 72 65 73 73 20 74 68  |s just stress th|
0000f4d0  61 74 2e 20 49 74 27 73  20 73 74 75 70 69 64 2e  |at. It's stupid.|
0000f4e0  0a 32 34 09 34 09 78 20  6c 6f 77 0a 32 38 09 34  |.24.4.x low.28.4|
0000f4f0  09 79 20 6c 6f 77 20 20  20 42 6f 75 6e 64 69 6e  |.y low   Boundin|
0000f500  67 20 62 6f 78 0a 33 32  09 34 09 78 20 68 69 67  |g box.32.4.x hig|
0000f510  68 0a 33 36 09 34 09 79  20 68 69 67 68 0a 00 00  |h.36.4.y high...|
0000f520  44 41 54 41 82 01 00 00  44 65 63 6c 61 72 65 20  |DATA....Declare |
0000f530  66 6f 6e 74 73 20 73 74  61 74 65 20 66 6f 72 20  |fonts state for |
0000f540  44 72 61 77 46 69 6c 65  0a 23 50 61 72 65 6e 74  |DrawFile.#Parent|
0000f550  20 53 65 72 76 69 63 65  5f 34 35 35 34 31 0a 4f  | Service_45541.O|
0000f560  66 66 73 65 74 09 43 6f  6e 74 65 6e 74 73 0a 23  |ffset.Contents.#|
0000f570  4c 69 6e 65 0a 30 09 70  6f 69 6e 74 65 72 20 74  |Line.0.pointer t|
0000f580  6f 20 3c 6f 62 6a 65 63  74 20 74 6f 20 62 65 20  |o <object to be |
0000f590  72 65 6e 64 65 72 65 64  3d 3e 44 72 61 77 46 69  |rendered=>DrawFi|
0000f5a0  6c 65 5f 66 6f 72 6d 61  74 3e 0a 23 20 47 65 72  |le_format>.# Ger|
0000f5b0  70 68 3e 20 41 6e 6f 74  68 65 72 20 68 6f 72 72  |ph> Another horr|
0000f5c0  69 64 20 6c 69 6e 6b 0a  34 09 70 6f 69 6e 74 65  |id link.4.pointe|
0000f5d0  72 20 74 6f 20 3c 44 72  61 77 46 69 6c 65 20 68  |r to <DrawFile h|
0000f5e0  65 61 64 65 72 3d 3e 64  72 61 77 66 69 6c 65 5f  |eader=>drawfile_|
0000f5f0  68 65 61 64 65 72 3e 0a  38 09 70 6f 69 6e 74 65  |header>.8.pointe|
0000f600  72 20 74 6f 20 3c 66 6f  6e 74 20 74 61 62 6c 65  |r to <font table|
0000f610  20 6f 62 6a 65 63 74 3d  3e 44 72 61 77 66 69 6c  | object=>Drawfil|
0000f620  65 5f 6f 62 6a 65 63 74  30 3e 2c 20 6f 72 20 30  |e_object0>, or 0|
0000f630  20 69 66 20 6e 6f 6e 65  20 66 6f 75 6e 64 20 79  | if none found y|
0000f640  65 74 0a 31 32 09 66 6c  61 67 73 20 70 61 73 73  |et.12.flags pass|
0000f650  65 64 20 74 6f 20 3c 44  72 61 77 46 69 6c 65 5f  |ed to <DrawFile_|
0000f660  52 65 6e 64 65 72 3e 0a  31 36 09 70 6f 69 6e 74  |Render>.16.point|
0000f670  65 72 20 74 6f 20 3c 65  72 72 6f 72 20 62 6c 6f  |er to <error blo|
0000f680  63 6b 3d 3e 73 77 69 5f  65 72 72 6f 72 62 6c 6f  |ck=>swi_errorblo|
0000f690  63 6b 3e 2c 20 6f 72 20  30 20 69 66 20 6e 6f 6e  |ck>, or 0 if non|
0000f6a0  65 0a 00 00 44 49 52 24  08 02 00 00 08 02 00 00  |e...DIR$........|
0000f6b0  ac f8 00 00 48 fd ff ff  ae fe 65 2a 72 00 00 00  |....H.....e*r...|
0000f6c0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0000f6d0  20 f9 00 00 48 ff ff ff  17 31 5e 19 d5 01 00 00  | ...H....1^.....|
0000f6e0  33 00 00 00 00 00 00 00  46 69 6c 6c 00 00 00 00  |3.......Fill....|
0000f6f0  f8 fa 00 00 48 fd ff ff  6f 1c 5e 19 4c 01 00 00  |....H...o.^.L...|
0000f700  13 00 00 00 00 00 00 00  66 69 6c 6c 73 74 79 6c  |........fillstyl|
0000f710  65 00 00 00 44 fc 00 00  48 ff ff ff 30 ff 66 2a  |e...D...H...0.f*|
0000f720  74 04 00 00 33 00 00 00  00 00 00 00 53 74 72 6f  |t...3.......Stro|
0000f730  6b 65 00 00 b8 00 01 00  48 fd ff ff 3b 92 98 0c  |ke......H...;...|
0000f740  40 04 00 00 33 00 00 00  00 00 00 00 6a 6f 69 6e  |@...3.......join|
0000f750  63 61 70 62 6c 6f 63 6b  00 00 00 00 f8 04 01 00  |capblock........|
0000f760  48 fd ff ff 57 99 66 2a  10 03 00 00 33 00 00 00  |H...W.f*....3...|
0000f770  00 00 00 00 70 61 74 68  62 6c 6f 63 6b 00 00 00  |....pathblock...|
0000f780  08 08 01 00 48 fd ff ff  e1 64 cc 10 75 04 00 00  |....H....d..u...|
0000f790  33 00 00 00 00 00 00 00  74 72 61 6e 73 66 6f 72  |3.......transfor|
0000f7a0  6d 00 00 00 80 0c 01 00  48 fd ff ff d9 6b cc 10  |m.......H....k..|
0000f7b0  40 01 00 00 33 00 00 00  00 00 00 00 74 72 61 6e  |@...3.......tran|
0000f7c0  73 66 6f 72 6d 75 6e 69  74 73 00 00 c0 0d 01 00  |sformunits......|
0000f7d0  48 ff ff ff a1 b7 66 2a  7d 05 00 00 33 00 00 00  |H.....f*}...3...|
0000f7e0  00 00 00 00 70 72 6f 63  65 73 73 70 61 74 68 00  |....processpath.|
0000f7f0  40 13 01 00 48 fd ff ff  95 2f 66 2a ca 01 00 00  |@...H..../f*....|
0000f800  33 00 00 00 00 00 00 00  64 61 73 68 62 6c 6f 63  |3.......dashbloc|
0000f810  6b 00 00 00 0c 15 01 00  48 ff ff ff 5a 82 66 2a  |k.......H...Z.f*|
0000f820  00 02 00 00 33 00 00 00  00 00 00 00 46 6c 61 74  |....3.......Flat|
0000f830  74 65 6e 50 61 74 68 00  0c 17 01 00 48 fd ff ff  |tenPath.....H...|
0000f840  52 8d 62 19 8b 02 00 00  33 00 00 00 00 00 00 00  |R.b.....3.......|
0000f850  6f 75 74 70 61 74 68 62  6c 6f 63 6b 00 00 00 00  |outpathblock....|
0000f860  98 19 01 00 48 ff ff ff  2a 09 67 2a be 02 00 00  |....H...*.g*....|
0000f870  33 00 00 00 00 00 00 00  53 74 72 6f 6b 65 50 61  |3.......StrokePa|
0000f880  74 68 00 00 58 1c 01 00  48 ff ff ff 10 14 67 2a  |th..X...H.....g*|
0000f890  4f 02 00 00 33 00 00 00  00 00 00 00 54 72 61 6e  |O...3.......Tran|
0000f8a0  73 66 6f 72 6d 50 61 74  68 00 00 00 44 41 54 41  |sformPath...DATA|
0000f8b0  72 00 00 00 44 72 61 77  0a 23 50 61 72 65 6e 74  |r...Draw.#Parent|
0000f8c0  20 21 52 6f 6f 74 0a 23  50 72 65 66 69 78 20 44  | !Root.#Prefix D|
0000f8d0  72 61 77 5f 0a 3c 46 69  6c 6c 3e 0a 3c 46 6c 61  |raw_.<Fill>.<Fla|
0000f8e0  74 74 65 6e 50 61 74 68  3e 0a 3c 50 72 6f 63 65  |ttenPath>.<Proce|
0000f8f0  73 73 50 61 74 68 3e 0a  3c 53 74 72 6f 6b 65 3e  |ssPath>.<Stroke>|
0000f900  0a 3c 53 74 72 6f 6b 65  50 61 74 68 3e 0a 3c 54  |.<StrokePath>.<T|
0000f910  72 61 6e 73 66 6f 72 6d  50 61 74 68 3e 0a 00 00  |ransformPath>...|
0000f920  44 41 54 41 d5 01 00 00  44 72 61 77 5f 46 69 6c  |DATA....Draw_Fil|
0000f930  6c 20 20 28 26 34 30 37  30 32 29 0a 23 50 61 72  |l  (&40702).#Par|
0000f940  65 6e 74 20 44 72 61 77  5f 0a 3d 3e 09 52 30 20  |ent Draw_.=>.R0 |
0000f950  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 3c 70 61  |=.pointer to <pa|
0000f960  74 68 20 62 6c 6f 63 6b  3d 3e 64 72 61 77 5f 70  |th block=>draw_p|
0000f970  61 74 68 62 6c 6f 63 6b  3e 0a 09 52 31 20 3d 09  |athblock>..R1 =.|
0000f980  3c 66 69 6c 6c 20 73 74  79 6c 65 3d 3e 64 72 61  |<fill style=>dra|
0000f990  77 5f 66 69 6c 6c 73 74  79 6c 65 3e 2c 20 6f 72  |w_fillstyle>, or|
0000f9a0  20 30 20 66 6f 72 20 3c  64 65 66 61 75 6c 74 3d  | 0 for <default=|
0000f9b0  3e 2e 66 69 6c 6c 3e 0a  09 52 32 20 3d 09 70 6f  |>.fill>..R2 =.po|
0000f9c0  69 6e 74 65 72 20 74 6f  20 3c 74 72 61 6e 73 66  |inter to <transf|
0000f9d0  6f 72 6d 61 74 69 6f 6e  20 6d 61 74 72 69 78 3d  |ormation matrix=|
0000f9e0  3e 64 72 61 77 5f 74 72  61 6e 73 66 6f 72 6d 3e  |>draw_transform>|
0000f9f0  2c 20 6f 72 20 30 20 66  6f 72 20 64 65 66 61 75  |, or 0 for defau|
0000fa00  6c 74 0a 09 52 33 20 3d  09 66 6c 61 74 6e 65 73  |lt..R3 =.flatnes|
0000fa10  73 2c 20 6f 72 20 30 20  66 6f 72 20 64 65 66 61  |s, or 0 for defa|
0000fa20  75 6c 74 0a 0a 3c 3d 09  52 30 20 63 6f 72 72 75  |ult..<=.R0 corru|
0000fa30  70 74 0a 0a 54 68 69 73  20 53 57 49 20 69 73 20  |pt..This SWI is |
0000fa40  75 73 65 64 20 74 6f 20  64 72 61 77 20 61 20 70  |used to draw a p|
0000fa50  61 74 68 20 61 6e 64 20  66 69 6c 6c 20 69 74 73  |ath and fill its|
0000fa60  20 69 6e 73 69 64 65 2e  0a 23 53 75 62 50 61 67  | inside..#SubPag|
0000fa70  65 20 66 69 6c 6c 0a 44  72 61 77 5f 46 69 6c 6c  |e fill.Draw_Fill|
0000fa80  20 64 65 66 61 75 6c 74  20 66 69 6c 6c 20 73 74  | default fill st|
0000fa90  79 6c 65 0a 30 20 67 69  76 65 73 20 74 68 65 20  |yle.0 gives the |
0000faa0  64 65 66 61 75 6c 74 20  3c 66 69 6c 6c 20 73 74  |default <fill st|
0000fab0  79 6c 65 3d 3e 64 72 61  77 5f 66 69 6c 6c 73 74  |yle=>draw_fillst|
0000fac0  79 6c 65 3e 20 2d 20 26  33 30 20 2d 20 66 69 6c  |yle> - &30 - fil|
0000fad0  6c 20 74 6f 20 62 6f 75  6e 64 61 72 79 20 63 65  |l to boundary ce|
0000fae0  6e 74 72 65 2c 20 6e 6f  6e 2d 7a 65 72 6f 20 72  |ntre, non-zero r|
0000faf0  75 6c 65 2e 0a 00 00 00  44 41 54 41 4c 01 00 00  |ule.....DATAL...|
0000fb00  44 72 61 77 20 66 69 6c  6c 20 73 74 79 6c 65 73  |Draw fill styles|
0000fb10  0a 42 69 74 73 09 4d 65  61 6e 69 6e 67 20 69 66  |.Bits.Meaning if|
0000fb20  20 73 65 74 20 28 6f 72  20 6f 66 20 76 61 6c 75  | set (or of valu|
0000fb30  65 29 0a 23 4c 69 6e 65  0a 30 2c 31 09 30 09 4e  |e).#Line.0,1.0.N|
0000fb40  6f 6e 2d 7a 65 72 6f 20  77 69 6e 64 69 6e 67 20  |on-zero winding |
0000fb50  72 75 6c 65 0a 09 31 09  4e 65 67 61 74 69 76 65  |rule..1.Negative|
0000fb60  20 77 69 6e 64 69 6e 67  20 72 75 6c 65 0a 09 32  | winding rule..2|
0000fb70  09 45 76 65 6e 2d 6f 64  64 20 77 69 6e 64 69 6e  |.Even-odd windin|
0000fb80  67 20 72 75 6c 65 0a 09  33 09 50 6f 73 69 74 69  |g rule..3.Positi|
0000fb90  76 65 20 77 69 6e 64 69  6e 67 20 72 75 6c 65 0a  |ve winding rule.|
0000fba0  0a 32 09 50 6c 6f 74 20  6e 6f 6e 2d 62 6f 75 6e  |.2.Plot non-boun|
0000fbb0  64 61 72 79 20 65 78 74  65 72 69 6f 72 20 70 69  |dary exterior pi|
0000fbc0  78 65 6c 73 0a 33 09 50  6c 6f 74 20 62 6f 75 6e  |xels.3.Plot boun|
0000fbd0  64 61 72 79 20 65 78 74  65 72 69 6f 72 20 70 69  |dary exterior pi|
0000fbe0  78 65 6c 73 0a 34 09 50  6c 6f 74 20 62 6f 75 6e  |xels.4.Plot boun|
0000fbf0  64 61 72 79 20 69 6e 74  65 72 69 6f 72 20 70 69  |dary interior pi|
0000fc00  78 65 6c 73 0a 35 09 50  6c 6f 74 20 6e 6f 6e 2d  |xels.5.Plot non-|
0000fc10  62 6f 75 6e 64 61 72 79  20 69 6e 74 65 72 69 6f  |boundary interio|
0000fc20  72 20 70 69 78 65 6c 73  0a 6f 74 68 65 72 73 09  |r pixels.others.|
0000fc30  52 65 73 65 72 76 65 64  2c 20 6d 75 73 74 20 62  |Reserved, must b|
0000fc40  65 20 30 0a 44 41 54 41  74 04 00 00 44 72 61 77  |e 0.DATAt...Draw|
0000fc50  5f 53 74 72 6f 6b 65 20  20 28 26 34 30 37 30 34  |_Stroke  (&40704|
0000fc60  29 0a 23 50 61 72 65 6e  74 20 44 72 61 77 5f 0a  |).#Parent Draw_.|
0000fc70  3d 3e 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |=>.R0 =.pointer |
0000fc80  74 6f 20 3c 70 61 74 68  20 62 6c 6f 63 6b 3d 3e  |to <path block=>|
0000fc90  64 72 61 77 5f 70 61 74  68 62 6c 6f 63 6b 3e 0a  |draw_pathblock>.|
0000fca0  09 52 31 20 3d 09 3c 66  69 6c 6c 20 73 74 79 6c  |.R1 =.<fill styl|
0000fcb0  65 3d 3e 64 72 61 77 5f  66 69 6c 6c 73 74 79 6c  |e=>draw_fillstyl|
0000fcc0  65 3e 2c 20 6f 72 20 30  20 66 6f 72 20 3c 64 65  |e>, or 0 for <de|
0000fcd0  66 61 75 6c 74 3d 3e 2e  66 69 6c 6c 3e 0a 09 20  |fault=>.fill>.. |
0000fce0  09 62 69 74 20 33 31 20  63 6c 65 61 72 20 74 6f  |.bit 31 clear to|
0000fcf0  20 73 74 72 6f 6b 65 20  65 61 63 68 20 73 75 62  | stroke each sub|
0000fd00  70 61 74 68 20 69 6e 20  74 75 72 6e 20 28 63 61  |path in turn (ca|
0000fd10  6e 20 72 65 73 75 6c 74  20 69 6e 20 70 69 78 65  |n result in pixe|
0000fd20  6c 73 20 62 65 69 6e 67  20 70 6c 6f 74 74 65 64  |ls being plotted|
0000fd30  20 74 77 69 63 65 29 0a  09 52 32 20 3d 09 70 6f  | twice)..R2 =.po|
0000fd40  69 6e 74 65 72 20 74 6f  20 3c 74 72 61 6e 73 66  |inter to <transf|
0000fd50  6f 72 6d 61 74 69 6f 6e  20 6d 61 74 72 69 78 3d  |ormation matrix=|
0000fd60  3e 64 72 61 77 5f 74 72  61 6e 73 66 6f 72 6d 3e  |>draw_transform>|
0000fd70  2c 20 6f 72 20 30 20 66  6f 72 20 64 65 66 61 75  |, or 0 for defau|
0000fd80  6c 74 0a 09 52 33 20 3d  09 66 6c 61 74 6e 65 73  |lt..R3 =.flatnes|
0000fd90  73 2c 20 6f 72 20 30 20  66 6f 72 20 64 65 66 61  |s, or 0 for defa|
0000fda0  75 6c 74 0a 09 52 34 20  3d 09 6c 69 6e 65 20 74  |ult..R4 =.line t|
0000fdb0  68 69 63 6b 6e 65 73 73  2c 20 6f 72 20 30 20 66  |hickness, or 0 f|
0000fdc0  6f 72 20 64 65 66 61 75  6c 74 0a 09 52 35 20 3d  |or default..R5 =|
0000fdd0  09 70 6f 69 6e 74 65 72  20 74 6f 20 3c 6a 6f 69  |.pointer to <joi|
0000fde0  6e 2f 63 61 70 20 62 6c  6f 63 6b 3d 3e 64 72 61  |n/cap block=>dra|
0000fdf0  77 5f 6a 6f 69 6e 63 61  70 62 6c 6f 63 6b 3e 2c  |w_joincapblock>,|
0000fe00  20 6f 72 20 30 20 69 66  20 6e 6f 6e 65 0a 09 52  | or 0 if none..R|
0000fe10  36 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |6 =.pointer to <|
0000fe20  64 61 73 68 69 6e 67 20  70 61 74 74 65 72 6e 3d  |dashing pattern=|
0000fe30  3e 64 72 61 77 5f 64 61  73 68 62 6c 6f 63 6b 3e  |>draw_dashblock>|
0000fe40  2c 20 6f 72 20 30 20 69  66 20 6e 6f 6e 65 0a 0a  |, or 0 if none..|
0000fe50  3c 3d 09 52 30 20 63 6f  72 72 75 70 74 0a 0a 54  |<=.R0 corrupt..T|
0000fe60  68 69 73 20 53 57 49 20  69 73 20 75 73 65 64 20  |his SWI is used |
0000fe70  74 6f 20 64 72 61 77 20  61 20 70 61 74 68 2e 0a  |to draw a path..|
0000fe80  0a 49 66 20 74 68 69 63  6b 6e 65 73 73 20 69 73  |.If thickness is|
0000fe90  20 7a 65 72 6f 2c 20 66  69 6c 6c 20 62 69 74 73  | zero, fill bits|
0000fea0  20 33 2c 32 20 6d 75 73  74 20 6e 6f 74 20 62 65  | 3,2 must not be|
0000feb0  20 30 31 0a 49 66 20 74  68 69 63 6b 6e 65 73 73  | 01.If thickness|
0000fec0  20 69 73 20 6e 6f 6e 2d  7a 65 72 6f 2c 20 66 69  | is non-zero, fi|
0000fed0  6c 6c 20 62 69 74 73 20  32 2d 35 20 6d 75 73 74  |ll bits 2-5 must|
0000fee0  20 6e 6f 74 20 62 65 20  30 31 31 30 20 2d 20 7b  | not be 0110 - {|
0000fef0  2f 7d 69 2e 65 2e 7b 2f  7d 20 66 69 6c 6c 69 6e  |/}i.e.{/} fillin|
0000ff00  67 20 6a 75 73 74 20 74  68 65 20 62 6f 75 6e 64  |g just the bound|
0000ff10  61 72 79 20 70 69 78 65  6c 73 2e 0a 23 20 47 65  |ary pixels..# Ge|
0000ff20  72 70 68 3e 20 69 74 20  77 61 73 20 35 2d 32 20  |rph> it was 5-2 |
0000ff30  62 75 74 20 74 68 61 74  20 6c 6f 6f 6b 73 20 73  |but that looks s|
0000ff40  69 6c 6c 79 2e 20 48 6f  77 65 76 65 72 20 32 2d  |illy. However 2-|
0000ff50  35 20 70 75 74 73 20 74  68 65 20 62 69 74 73 20  |5 puts the bits |
0000ff60  69 6e 20 74 68 65 20 77  72 6f 6e 67 0a 23 20 20  |in the wrong.#  |
0000ff70  20 20 20 20 20 20 6f 72  64 65 72 20 2d 20 49 27  |      order - I'|
0000ff80  76 65 20 64 6f 6e 65 20  74 68 69 73 2c 20 62 65  |ve done this, be|
0000ff90  63 61 75 73 65 20 74 68  65 20 6f 72 64 65 72 69  |cause the orderi|
0000ffa0  6e 67 20 2f 69 73 6e 27  74 2f 20 72 65 6c 65 76  |ng /isn't/ relev|
0000ffb0  61 6e 74 20 68 65 72 65  20 3a 2d 29 0a 23 53 75  |ant here :-).#Su|
0000ffc0  62 50 61 67 65 20 66 69  6c 6c 0a 44 72 61 77 5f  |bPage fill.Draw_|
0000ffd0  53 74 72 6f 6b 65 20 64  65 66 61 75 6c 74 20 66  |Stroke default f|
0000ffe0  69 6c 6c 20 73 74 79 6c  65 0a 30 20 67 69 76 65  |ill style.0 give|
0000fff0  73 20 74 68 65 20 64 65  66 61 75 6c 74 20 3c 66  |s the default <f|
00010000  69 6c 6c 20 73 74 79 6c  65 3d 3e 64 72 61 77 5f  |ill style=>draw_|
00010010  66 69 6c 6c 73 74 79 6c  65 3e 20 77 68 69 63 68  |fillstyle> which|
00010020  20 64 65 70 6e 64 73 20  6f 6e 20 52 34 20 28 6c  | depnds on R4 (l|
00010030  69 6e 65 20 74 68 69 63  6b 6e 65 73 73 29 3a 0a  |ine thickness):.|
00010040  0a 52 34 20 76 61 6c 75  65 09 44 65 66 61 75 6c  |.R4 value.Defaul|
00010050  74 20 66 69 6c 6c 20 73  74 79 6c 65 0a 23 4c 69  |t fill style.#Li|
00010060  6e 65 0a 30 09 09 26 33  30 20 2d 20 66 69 6c 6c  |ne.0..&30 - fill|
00010070  20 74 6f 20 62 6f 75 6e  64 61 72 79 20 63 65 6e  | to boundary cen|
00010080  74 72 65 2c 20 6e 6f 6e  2d 7a 65 72 6f 20 72 75  |tre, non-zero ru|
00010090  6c 65 2e 0a 6f 74 68 65  72 09 09 26 31 38 20 2d  |le..other..&18 -|
000100a0  20 66 69 6c 6c 20 6f 6e  6c 79 20 74 68 65 20 62  | fill only the b|
000100b0  6f 75 6e 64 61 72 79 0a  44 41 54 41 40 04 00 00  |oundary.DATA@...|
000100c0  44 72 61 77 20 6a 6f 69  6e 2f 63 61 70 20 62 6c  |Draw join/cap bl|
000100d0  6f 63 6b 0a 4f 66 66 73  65 74 09 4d 65 61 6e 69  |ock.Offset.Meani|
000100e0  6e 67 0a 23 4c 69 6e 65  0a 30 09 3c 4a 6f 69 6e  |ng.#Line.0.<Join|
000100f0  20 73 74 79 6c 65 3d 3e  2e 6a 6f 69 6e 73 74 79  | style=>.joinsty|
00010100  6c 65 3e 0a 31 09 3c 45  6e 64 20 63 61 70 3d 3e  |le>.1.<End cap=>|
00010110  2e 65 6e 64 73 73 74 79  6c 65 3e 0a 32 09 3c 53  |.endsstyle>.2.<S|
00010120  74 61 72 74 20 63 61 70  3d 3e 2e 65 6e 64 73 73  |tart cap=>.endss|
00010130  74 79 6c 65 3e 0a 33 09  72 65 73 65 72 76 65 64  |tyle>.3.reserved|
00010140  2c 20 6d 75 73 74 20 62  65 20 30 0a 34 09 6d 69  |, must be 0.4.mi|
00010150  74 72 65 20 6c 69 6d 69  74 2c 20 69 6e 20 66 6f  |tre limit, in fo|
00010160  72 6d 20 26 66 66 66 66  2e 66 66 66 66 3b 20 69  |rm &ffff.ffff; i|
00010170  66 20 74 68 65 20 64 69  73 74 61 6e 63 65 20 70  |f the distance p|
00010180  72 6f 6a 65 63 74 65 64  20 62 79 20 6d 69 74 72  |rojected by mitr|
00010190  65 73 20 77 6f 75 6c 64  20 62 65 20 67 72 65 61  |es would be grea|
000101a0  74 65 72 20 74 68 61 6e  20 74 68 69 73 20 70 72  |ter than this pr|
000101b0  6f 70 6f 72 74 69 6f 6e  20 6f 66 20 74 68 65 20  |oportion of the |
000101c0  6c 69 6e 65 20 77 69 64  74 68 20 74 68 65 6e 20  |line width then |
000101d0  69 74 20 77 69 6c 6c 20  62 65 20 62 65 76 65 6c  |it will be bevel|
000101e0  6c 65 64 0a 38 2c 39 09  41 64 64 69 74 69 6f 6e  |led.8,9.Addition|
000101f0  61 6c 20 77 69 64 74 68  20 6f 66 20 73 74 61 72  |al width of star|
00010200  74 20 74 72 69 61 6e 67  75 6c 61 72 20 63 61 70  |t triangular cap|
00010210  2c 20 69 6e 20 31 2f 32  35 36 20 6f 66 20 6c 69  |, in 1/256 of li|
00010220  6e 65 20 77 69 64 74 68  0a 31 30 2c 31 31 09 45  |ne width.10,11.E|
00010230  78 74 65 6e 73 69 6f 6e  20 6f 66 20 73 74 61 72  |xtension of star|
00010240  74 20 63 61 70 20 66 72  6f 6d 20 6c 69 6e 65 2c  |t cap from line,|
00010250  20 69 6e 20 31 2f 32 35  36 20 6f 66 20 6c 69 6e  | in 1/256 of lin|
00010260  65 20 77 69 64 74 68 0a  31 32 2c 31 33 09 41 64  |e width.12,13.Ad|
00010270  64 69 74 69 6f 6e 61 6c  20 77 69 64 74 68 20 6f  |ditional width o|
00010280  66 20 65 6e 64 20 74 72  69 61 6e 67 75 6c 61 72  |f end triangular|
00010290  20 63 61 70 2c 20 69 6e  20 31 2f 32 35 36 20 6f  | cap, in 1/256 o|
000102a0  66 20 6c 69 6e 65 20 77  69 64 74 68 0a 31 34 2c  |f line width.14,|
000102b0  31 35 09 45 78 74 65 6e  73 69 6f 6e 20 6f 66 20  |15.Extension of |
000102c0  65 6e 64 20 63 61 70 20  66 72 6f 6d 20 6c 69 6e  |end cap from lin|
000102d0  65 2c 20 69 6e 20 31 2f  32 35 36 20 6f 66 20 6c  |e, in 1/256 of l|
000102e0  69 6e 65 20 77 69 64 74  68 0a 0a 49 66 20 6d 69  |ine width..If mi|
000102f0  74 72 65 73 20 61 6e 64  20 74 72 69 61 6e 67 6c  |tres and triangl|
00010300  65 73 20 61 72 65 20 6e  6f 74 20 75 73 65 64 20  |es are not used |
00010310  74 68 65 6e 20 74 68 65  20 62 6c 6f 63 6b 20 6d  |then the block m|
00010320  61 79 20 62 65 20 34 20  62 79 74 65 73 20 6c 6f  |ay be 4 bytes lo|
00010330  6e 67 2e 0a 49 66 20 6d  69 74 72 65 73 20 61 72  |ng..If mitres ar|
00010340  65 20 75 73 65 64 20 62  75 74 20 74 72 69 61 6e  |e used but trian|
00010350  67 6c 65 73 20 61 72 65  20 6e 6f 74 2c 20 74 68  |gles are not, th|
00010360  65 6e 20 74 68 65 20 62  6c 6f 63 6b 20 6d 61 79  |en the block may|
00010370  20 62 65 20 38 20 62 79  74 65 73 20 6c 6f 6e 67  | be 8 bytes long|
00010380  2e 0a 23 73 75 62 70 61  67 65 20 6a 6f 69 6e 73  |..#subpage joins|
00010390  74 79 6c 65 0a 4a 6f 69  6e 20 73 74 79 6c 65 0a  |tyle.Join style.|
000103a0  56 61 6c 75 65 09 4d 65  61 6e 69 6e 67 0a 23 4c  |Value.Meaning.#L|
000103b0  69 6e 65 0a 30 09 4d 69  74 72 65 64 20 28 65 64  |ine.0.Mitred (ed|
000103c0  67 65 73 20 63 6f 6e 74  69 6e 75 65 20 75 6e 74  |ges continue unt|
000103d0  69 6c 20 74 68 65 79 20  6d 65 65 74 29 0a 31 09  |il they meet).1.|
000103e0  52 6f 75 6e 64 20 28 61  20 63 75 72 76 65 20 66  |Round (a curve f|
000103f0  72 6f 6d 20 65 64 67 65  20 74 6f 20 65 64 67 65  |rom edge to edge|
00010400  29 0a 32 09 42 65 76 65  6c 6c 65 64 20 28 61 20  |).2.Bevelled (a |
00010410  6c 69 6e 65 20 66 72 6f  6d 20 65 64 67 65 20 74  |line from edge t|
00010420  6f 20 65 64 67 65 29 0a  23 73 75 62 70 61 67 65  |o edge).#subpage|
00010430  20 65 6e 64 73 73 74 79  6c 65 0a 43 61 70 20 65  | endsstyle.Cap e|
00010440  6e 64 73 20 73 74 79 6c  65 0a 56 61 6c 75 65 09  |nds style.Value.|
00010450  4d 65 61 6e 69 6e 67 0a  23 4c 69 6e 65 0a 30 09  |Meaning.#Line.0.|
00010460  42 75 74 74 20 28 61 20  6c 69 6e 65 20 66 72 6f  |Butt (a line fro|
00010470  6d 20 65 64 67 65 20 74  6f 20 65 64 67 65 29 0a  |m edge to edge).|
00010480  31 09 52 6f 75 6e 64 20  28 61 20 63 75 72 76 65  |1.Round (a curve|
00010490  20 66 72 6f 6d 20 65 64  67 65 20 74 6f 20 65 64  | from edge to ed|
000104a0  67 65 29 0a 32 09 53 71  75 61 72 65 73 20 28 61  |ge).2.Squares (a|
000104b0  20 73 71 75 61 72 65 20  70 72 6f 6a 65 63 74 73  | square projects|
000104c0  20 66 72 6f 6d 20 74 68  65 20 65 6e 64 29 0a 33  | from the end).3|
000104d0  09 54 72 69 61 6e 67 6c  65 20 28 66 6f 72 6d 69  |.Triangle (formi|
000104e0  6e 67 20 61 6e 20 61 72  72 6f 77 20 6f 72 20 73  |ng an arrow or s|
000104f0  69 6d 69 6c 61 72 29 0a  44 41 54 41 10 03 00 00  |imilar).DATA....|
00010500  44 72 61 77 20 70 61 74  68 20 62 6c 6f 63 6b 0a  |Draw path block.|
00010510  23 50 61 72 65 6e 74 20  44 72 61 77 5f 0a 44 72  |#Parent Draw_.Dr|
00010520  61 77 20 70 61 74 68 20  62 6c 6f 63 6b 73 20 63  |aw path blocks c|
00010530  6f 6e 73 69 73 74 20 6f  66 20 61 20 62 6c 6f 63  |onsist of a bloc|
00010540  6b 20 6f 66 20 77 6f 72  64 73 3b 20 63 6f 64 65  |k of words; code|
00010550  20 66 6f 6c 6c 6f 77 65  64 20 62 79 20 61 6e 79  | followed by any|
00010560  20 70 61 72 61 6d 65 74  65 72 73 2e 20 54 68 65  | parameters. The|
00010570  20 62 6c 6f 63 6b 20 69  73 20 74 65 72 6d 69 6e  | block is termin|
00010580  61 74 65 64 20 62 79 20  61 6e 20 27 45 6e 64 20  |ated by an 'End |
00010590  6f 66 20 70 61 74 68 27  20 65 6c 65 6d 65 6e 74  |of path' element|
000105a0  2e 0a 0a 43 6f 64 65 09  50 61 72 61 6d 65 74 65  |...Code.Paramete|
000105b0  72 73 09 4d 65 61 6e 69  6e 67 0a 23 4c 69 6e 65  |rs.Meaning.#Line|
000105c0  0a 30 09 2d 09 09 45 6e  64 20 6f 66 20 70 61 74  |.0.-..End of pat|
000105d0  68 20 28 77 68 65 6e 20  77 72 69 74 69 6e 67 20  |h (when writing |
000105e0  61 20 70 61 74 68 20 61  20 70 61 72 61 6d 65 74  |a path a paramet|
000105f0  65 72 20 69 73 20 75 73  65 64 20 74 6f 20 69 6e  |er is used to in|
00010600  64 69 63 61 74 65 20 74  68 65 20 72 65 6d 61 69  |dicate the remai|
00010610  6e 69 6e 67 20 6c 65 6e  67 74 68 20 6f 66 20 74  |ning length of t|
00010620  68 65 20 62 6c 6f 63 6b  2c 20 77 68 69 63 68 20  |he block, which |
00010630  69 73 20 75 70 64 61 74  65 64 20 61 73 20 64 61  |is updated as da|
00010640  74 61 20 69 73 20 77 72  69 74 74 65 6e 20 61 6e  |ta is written an|
00010650  64 20 74 68 65 20 65 6e  64 20 6f 66 20 70 61 74  |d the end of pat|
00010660  68 20 6d 61 72 6b 65 72  20 69 73 20 6d 6f 76 65  |h marker is move|
00010670  64 29 0a 31 09 70 6f 69  6e 74 65 72 09 09 43 6f  |d).1.pointer..Co|
00010680  6e 74 69 6e 75 61 74 69  6f 6e 20 6f 66 20 70 61  |ntinuation of pa|
00010690  74 68 20 61 74 20 70 6f  69 6e 74 65 72 0a 32 09  |th at pointer.2.|
000106a0  78 2c 20 79 09 09 4d 6f  76 65 20 74 6f 20 78 2c  |x, y..Move to x,|
000106b0  79 20 73 74 61 72 74 69  6e 67 20 61 20 6e 65 77  |y starting a new|
000106c0  20 73 75 62 2d 70 61 74  68 0a 33 09 78 2c 20 79  | sub-path.3.x, y|
000106d0  09 09 4d 6f 76 65 20 74  6f 20 78 2c 79 20 77 69  |..Move to x,y wi|
000106e0  74 68 6f 75 74 20 73 74  61 72 74 69 6e 67 20 61  |thout starting a|
000106f0  20 6e 65 77 20 73 75 62  2d 70 61 74 68 20 28 69  | new sub-path (i|
00010700  6e 74 65 72 6e 61 6c 20  75 73 65 29 0a 34 09 2d  |nternal use).4.-|
00010710  09 09 43 6c 6f 73 65 20  73 75 62 2d 70 61 74 68  |..Close sub-path|
00010720  20 77 69 74 68 20 6d 6f  76 65 0a 35 09 2d 09 09  | with move.5.-..|
00010730  43 6c 6f 73 65 20 73 75  62 2d 70 61 74 68 20 77  |Close sub-path w|
00010740  69 74 68 20 6c 69 6e 65  0a 36 09 63 78 31 2c 20  |ith line.6.cx1, |
00010750  63 79 31 2c 0a 09 63 78  32 2c 20 63 79 32 2c 0a  |cy1,..cx2, cy2,.|
00010760  09 78 2c 20 79 09 09 42  65 7a 69 65 72 20 63 75  |.x, y..Bezier cu|
00010770  72 76 65 20 74 6f 20 78  2c 79 20 75 73 69 6e 67  |rve to x,y using|
00010780  20 63 6f 6e 74 72 6f 6c  20 70 6f 69 6e 74 73 20  | control points |
00010790  63 78 31 2c 20 63 79 31  20 61 6e 64 20 63 78 32  |cx1, cy1 and cx2|
000107a0  2c 20 63 79 32 0a 37 09  78 2c 20 79 09 09 4d 6f  |, cy2.7.x, y..Mo|
000107b0  76 65 20 74 6f 20 78 2c  79 20 77 69 74 68 6f 75  |ve to x,y withou|
000107c0  74 20 73 74 61 72 74 69  6e 67 20 61 20 6e 65 77  |t starting a new|
000107d0  20 73 75 62 2d 70 61 74  68 20 28 6d 6f 73 74 6c  | sub-path (mostl|
000107e0  79 20 66 6f 72 20 69 6e  74 65 72 6e 61 6c 20 75  |y for internal u|
000107f0  73 65 29 0a 38 09 78 2c  20 79 09 09 4c 69 6e 65  |se).8.x, y..Line|
00010800  20 74 6f 20 78 2c 79 0a  44 41 54 41 75 04 00 00  | to x,y.DATAu...|
00010810  54 72 61 6e 73 66 6f 72  6d 61 74 69 6f 6e 20 6d  |Transformation m|
00010820  61 74 72 69 78 0a 4f 66  66 73 65 74 09 56 61 72  |atrix.Offset.Var|
00010830  09 43 6f 6e 74 65 6e 74  73 0a 23 4c 69 6e 65 0a  |.Contents.#Line.|
00010840  30 09 7b 2f 7d 61 7b 2f  7d 09 3c 78 20 6d 75 6c  |0.{/}a{/}.<x mul|
00010850  74 69 70 6c 69 65 72 3d  3e 64 72 61 77 5f 74 72  |tiplier=>draw_tr|
00010860  61 6e 73 66 6f 72 6d 75  6e 69 74 73 3e 2c 20 66  |ansformunits>, f|
00010870  6f 72 20 6e 65 77 20 78  0a 34 09 7b 2f 7d 62 7b  |or new x.4.{/}b{|
00010880  2f 7d 09 3c 78 20 6d 75  6c 74 69 70 6c 69 65 72  |/}.<x multiplier|
00010890  3d 3e 64 72 61 77 5f 74  72 61 6e 73 66 6f 72 6d  |=>draw_transform|
000108a0  75 6e 69 74 73 3e 2c 20  66 6f 72 20 6e 65 77 20  |units>, for new |
000108b0  79 0a 38 09 7b 2f 7d 63  7b 2f 7d 09 3c 79 20 6d  |y.8.{/}c{/}.<y m|
000108c0  75 6c 74 69 70 6c 69 65  72 3d 3e 64 72 61 77 5f  |ultiplier=>draw_|
000108d0  74 72 61 6e 73 66 6f 72  6d 75 6e 69 74 73 3e 2c  |transformunits>,|
000108e0  20 66 6f 72 20 6e 65 77  20 78 0a 31 32 09 7b 2f  | for new x.12.{/|
000108f0  7d 64 7b 2f 7d 09 3c 79  20 6d 75 6c 74 69 70 6c  |}d{/}.<y multipl|
00010900  69 65 72 3d 3e 64 72 61  77 5f 74 72 61 6e 73 66  |ier=>draw_transf|
00010910  6f 72 6d 75 6e 69 74 73  3e 2c 20 66 6f 72 20 6e  |ormunits>, for n|
00010920  65 77 20 79 0a 31 36 09  7b 2f 7d 65 7b 2f 7d 09  |ew y.16.{/}e{/}.|
00010930  78 20 74 72 61 6e 73 6c  61 74 69 6f 6e 2c 20 69  |x translation, i|
00010940  6e 20 64 72 61 77 20 75  6e 69 74 73 0a 32 30 09  |n draw units.20.|
00010950  7b 2f 7d 66 7b 2f 7d 09  79 20 74 72 61 6e 73 6c  |{/}f{/}.y transl|
00010960  61 74 69 6f 6e 2c 20 69  6e 20 64 72 61 77 20 75  |ation, in draw u|
00010970  6e 69 74 73 0a 0a 54 68  65 20 6e 65 77 20 63 6f  |nits..The new co|
00010980  2d 6f 72 64 69 6e 61 74  65 73 20 61 72 65 20 63  |-ordinates are c|
00010990  61 6c 63 75 6c 61 74 65  64 20 3a 0a 23 54 61 62  |alculated :.#Tab|
000109a0  3b 49 6e 64 65 6e 74 20  32 0a 6e 65 77 78 20 3d  |;Indent 2.newx =|
000109b0  09 7b 2f 7d 61 7b 2f 7d  78 20 2b 20 7b 2f 7d 63  |.{/}a{/}x + {/}c|
000109c0  7b 2f 7d 79 20 2b 20 7b  2f 7d 65 7b 2f 7d 0a 6e  |{/}y + {/}e{/}.n|
000109d0  65 77 79 20 3d 09 7b 2f  7d 62 7b 2f 7d 78 20 2b  |ewy =.{/}b{/}x +|
000109e0  20 7b 2f 7d 64 7b 2f 7d  79 20 2b 20 7b 2f 7d 66  | {/}d{/}y + {/}f|
000109f0  7b 2f 7d 0a 23 49 6e 64  65 6e 74 0a 0a 23 54 61  |{/}.#Indent..#Ta|
00010a00  62 0a 4f 72 2c 20 69 6e  20 6d 61 74 72 69 78 20  |b.Or, in matrix |
00010a10  66 6f 72 6d 20 3a 09 7b  66 32 34 7d e9 7b 66 7d  |form :.{f24}.{f}|
00010a20  09 7b 2f 7d 61 7b 2f 7d  09 7b 2f 7d 62 7b 2f 7d  |.{/}a{/}.{/}b{/}|
00010a30  09 30 09 7b 66 32 34 7d  f9 7b 66 7d 0a 09 09 09  |.0.{f24}.{f}....|
00010a40  7b 66 32 34 7d ea 7b 66  7d 09 7b 2f 7d 63 7b 2f  |{f24}.{f}.{/}c{/|
00010a50  7d 09 7b 2f 7d 64 7b 2f  7d 09 30 09 7b 66 32 34  |}.{/}d{/}.0.{f24|
00010a60  7d fa 7b 66 7d 0a 09 09  09 7b 66 32 34 7d eb 7b  |}.{f}....{f24}.{|
00010a70  66 7d 09 7b 2f 7d 65 7b  2f 7d 09 7b 2f 7d 66 7b  |f}.{/}e{/}.{/}f{|
00010a80  2f 7d 09 31 09 7b 66 32  34 7d fb 7b 66 7d 0a 0a  |/}.1.{f24}.{f}..|
00010a90  3c 53 74 61 6e 64 61 72  64 20 65 78 61 6d 70 6c  |<Standard exampl|
00010aa0  65 73 3d 3e 2e 65 78 61  6d 70 6c 65 73 3e 0a 23  |es=>.examples>.#|
00010ab0  53 75 62 70 61 67 65 20  65 78 61 6d 70 6c 65 73  |Subpage examples|
00010ac0  0a 54 72 61 6e 73 66 6f  72 6d 61 74 69 6f 6e 20  |.Transformation |
00010ad0  65 78 61 6d 70 6c 65 73  0a 52 6f 74 61 74 69 6f  |examples.Rotatio|
00010ae0  6e 20 63 61 6e 20 62 65  20 70 65 72 66 6f 72 6d  |n can be perform|
00010af0  65 64 20 62 79 20 75 73  69 6e 67 20 3a 0a 23 54  |ed by using :.#T|
00010b00  61 62 3b 49 6e 64 65 6e  74 20 32 0a 7b 2f 7d 61  |ab;Indent 2.{/}a|
00010b10  7b 2f 7d 09 3d 20 63 6f  73 28 20 7b 2f 7d 61 6e  |{/}.= cos( {/}an|
00010b20  67 6c 65 7b 2f 7d 20 29  09 7b 2f 7d 62 7b 2f 7d  |gle{/} ).{/}b{/}|
00010b30  09 3d 20 73 69 6e 20 28  20 7b 2f 7d 61 6e 67 6c  |.= sin ( {/}angl|
00010b40  65 7b 2f 7d 20 29 0a 7b  2f 7d 63 7b 2f 7d 09 3d  |e{/} ).{/}c{/}.=|
00010b50  20 2d 20 73 69 6e 28 20  7b 2f 7d 61 6e 67 6c 65  | - sin( {/}angle|
00010b60  7b 2f 7d 20 29 09 7b 2f  7d 64 7b 2f 7d 09 3d 20  |{/} ).{/}d{/}.= |
00010b70  63 6f 73 20 28 20 7b 2f  7d 61 6e 67 6c 65 7b 2f  |cos ( {/}angle{/|
00010b80  7d 20 29 0a 23 49 6e 64  65 6e 74 0a 0a 53 63 61  |} ).#Indent..Sca|
00010b90  6c 69 6e 67 20 63 61 6e  20 62 65 20 70 65 72 66  |ling can be perf|
00010ba0  6f 72 6d 65 64 20 62 79  20 75 73 69 6e 67 20 3a  |ormed by using :|
00010bb0  0a 23 49 6e 64 65 6e 74  20 32 0a 7b 2f 7d 61 7b  |.#Indent 2.{/}a{|
00010bc0  2f 7d 09 3d 20 7b 2f 7d  73 63 61 6c 65 7b 2f 7d  |/}.= {/}scale{/}|
00010bd0  09 09 7b 2f 7d 62 7b 2f  7d 09 3d 20 30 0a 7b 2f  |..{/}b{/}.= 0.{/|
00010be0  7d 63 7b 2f 7d 09 3d 20  30 09 09 09 7b 2f 7d 64  |}c{/}.= 0...{/}d|
00010bf0  7b 2f 7d 09 3d 20 7b 2f  7d 73 63 61 6c 65 7b 2f  |{/}.= {/}scale{/|
00010c00  7d 0a 23 49 6e 64 65 6e  74 0a 0a 54 72 61 6e 73  |}.#Indent..Trans|
00010c10  6c 61 74 69 6f 6e 20 63  61 6e 20 62 65 20 70 65  |lation can be pe|
00010c20  72 66 6f 72 6d 65 64 20  62 79 20 75 73 69 6e 67  |rformed by using|
00010c30  20 3a 0a 23 54 61 62 3b  49 6e 64 65 6e 74 20 32  | :.#Tab;Indent 2|
00010c40  0a 7b 2f 7d 65 7b 2f 7d  09 3d 20 7b 2f 7d 78 20  |.{/}e{/}.= {/}x |
00010c50  74 72 61 6e 73 6c 61 74  69 6f 6e 7b 2f 7d 09 7b  |translation{/}.{|
00010c60  2f 7d 66 7b 2f 7d 09 3d  20 7b 2f 7d 79 20 74 72  |/}f{/}.= {/}y tr|
00010c70  61 6e 73 6c 61 74 69 6f  6e 7b 2f 7d 0a 00 00 00  |anslation{/}....|
00010c80  44 41 54 41 40 01 00 00  44 72 61 77 20 54 72 61  |DATA@...Draw Tra|
00010c90  6e 73 66 6f 72 6d 20 55  6e 69 74 73 0a 23 50 61  |nsform Units.#Pa|
00010ca0  72 65 6e 74 20 44 72 61  77 5f 0a 44 72 61 77 20  |rent Draw_.Draw |
00010cb0  74 72 61 6e 73 66 6f 72  6d 20 75 6e 69 74 73 20  |transform units |
00010cc0  61 72 65 20 66 69 78 65  64 20 70 6f 69 6e 74 20  |are fixed point |
00010cd0  6e 75 6d 62 65 72 73 2c  20 77 69 74 68 20 74 68  |numbers, with th|
00010ce0  65 20 62 69 74 20 62 65  74 77 65 65 6e 20 62 69  |e bit between bi|
00010cf0  74 73 20 31 35 20 61 6e  64 20 31 36 2e 20 49 6e  |ts 15 and 16. In|
00010d00  20 65 73 73 65 6e 63 65  20 74 68 69 73 20 6d 65  | essence this me|
00010d10  61 6e 73 20 74 68 61 74  20 74 68 65 20 6e 75 6d  |ans that the num|
00010d20  62 65 72 73 20 61 72 65  20 3a 0a 0a 23 49 6e 64  |bers are :..#Ind|
00010d30  65 6e 74 20 34 3b 66 43  6f 64 65 0a 26 58 58 58  |ent 4;fCode.&XXX|
00010d40  58 b7 58 58 58 58 0a 23  49 6e 64 65 6e 74 3b 66  |X.XXXX.#Indent;f|
00010d50  0a 0a 54 68 61 74 20 69  73 2c 20 74 68 65 20 74  |..That is, the t|
00010d60  6f 70 20 74 77 6f 20 62  79 74 65 73 20 63 6f 6e  |op two bytes con|
00010d70  74 61 69 6e 73 20 74 68  65 20 77 68 6f 6c 65 20  |tains the whole |
00010d80  70 61 72 74 20 6f 66 20  74 68 65 20 66 72 61 63  |part of the frac|
00010d90  74 69 6f 6e 2c 20 74 68  65 20 62 6f 74 74 6f 6d  |tion, the bottom|
00010da0  20 74 77 6f 20 62 79 74  65 73 20 74 68 65 20 66  | two bytes the f|
00010db0  72 61 63 74 69 6f 6e 61  6c 20 70 61 72 74 2e 0a  |ractional part..|
00010dc0  44 41 54 41 7d 05 00 00  44 72 61 77 5f 50 72 6f  |DATA}...Draw_Pro|
00010dd0  63 65 73 73 50 61 74 68  20 20 28 26 34 30 37 30  |cessPath  (&4070|
00010de0  30 29 0a 23 50 61 72 65  6e 74 20 44 72 61 77 5f  |0).#Parent Draw_|
00010df0  0a 3d 3e 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |.=>.R0 =.pointer|
00010e00  20 74 6f 20 3c 70 61 74  68 20 62 6c 6f 63 6b 3d  | to <path block=|
00010e10  3e 64 72 61 77 5f 70 61  74 68 62 6c 6f 63 6b 3e  |>draw_pathblock>|
00010e20  0a 09 52 31 20 3d 09 3c  66 69 6c 6c 20 73 74 79  |..R1 =.<fill sty|
00010e30  6c 65 3d 3e 64 72 61 77  5f 66 69 6c 6c 73 74 79  |le=>draw_fillsty|
00010e40  6c 65 3e 20 77 69 74 68  20 3c 61 64 64 69 74 69  |le> with <additi|
00010e50  6f 6e 73 3d 3e 2e 65 78  74 72 61 66 69 6c 6c 3e  |ons=>.extrafill>|
00010e60  0a 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R2 =.pointer t|
00010e70  6f 20 3c 74 72 61 6e 73  66 6f 72 6d 61 74 69 6f  |o <transformatio|
00010e80  6e 20 6d 61 74 72 69 78  3d 3e 64 72 61 77 5f 74  |n matrix=>draw_t|
00010e90  72 61 6e 73 66 6f 72 6d  3e 2c 20 6f 72 20 30 20  |ransform>, or 0 |
00010ea0  66 6f 72 20 64 65 66 61  75 6c 74 0a 09 52 33 20  |for default..R3 |
00010eb0  3d 09 66 6c 61 74 6e 65  73 73 2c 20 6f 72 20 30  |=.flatness, or 0|
00010ec0  20 66 6f 72 20 64 65 66  61 75 6c 74 0a 09 52 34  | for default..R4|
00010ed0  20 3d 09 6c 69 6e 65 20  74 68 69 63 6b 6e 65 73  | =.line thicknes|
00010ee0  73 2c 20 6f 72 20 30 20  66 6f 72 20 64 65 66 61  |s, or 0 for defa|
00010ef0  75 6c 74 0a 09 52 35 20  3d 09 70 6f 69 6e 74 65  |ult..R5 =.pointe|
00010f00  72 20 74 6f 20 3c 6a 6f  69 6e 2f 63 61 70 20 62  |r to <join/cap b|
00010f10  6c 6f 63 6b 3d 3e 64 72  61 77 5f 6a 6f 69 6e 63  |lock=>draw_joinc|
00010f20  61 70 62 6c 6f 63 6b 3e  2c 20 6f 72 20 30 20 69  |apblock>, or 0 i|
00010f30  66 20 6e 6f 6e 65 0a 09  52 36 20 3d 09 70 6f 69  |f none..R6 =.poi|
00010f40  6e 74 65 72 20 74 6f 20  3c 64 61 73 68 69 6e 67  |nter to <dashing|
00010f50  20 70 61 74 74 65 72 6e  3d 3e 64 72 61 77 5f 64  | pattern=>draw_d|
00010f60  61 73 68 62 6c 6f 63 6b  3e 2c 20 6f 72 20 30 20  |ashblock>, or 0 |
00010f70  69 66 20 6e 6f 6e 65 0a  09 52 37 20 3d 09 70 6f  |if none..R7 =.po|
00010f80  69 6e 74 65 72 20 74 6f  20 3c 6f 75 74 70 75 74  |inter to <output|
00010f90  20 70 61 74 68 2c 20 6f  72 20 73 70 65 63 69 61  | path, or specia|
00010fa0  6c 20 76 61 6c 75 65 3d  3e 2e 73 70 65 63 69 61  |l value=>.specia|
00010fb0  6c 73 3e 0a 3c 3d 09 69  66 20 52 37 20 3d 20 30  |ls>.<=.if R7 = 0|
00010fc0  2c 20 31 20 6f 72 20 32  20 3a 0a 09 20 09 52 30  |, 1 or 2 :.. .R0|
00010fd0  20 63 6f 72 72 75 70 74  0a 09 69 66 20 52 37 20  | corrupt..if R7 |
00010fe0  3d 20 33 20 3a 0a 09 20  09 52 30 20 3d 20 73 69  |= 3 :.. .R0 = si|
00010ff0  7a 65 20 6f 66 20 62 75  66 66 65 72 0a 09 69 66  |ze of buffer..if|
00011000  20 52 37 20 69 73 20 61  20 70 6f 69 6e 74 65 72  | R7 is a pointer|
00011010  0a 09 20 09 52 30 20 3d  20 70 6f 69 6e 74 65 72  |.. .R0 = pointer|
00011020  20 74 6f 20 6e 65 77 20  65 6e 64 20 6f 66 20 62  | to new end of b|
00011030  75 66 66 65 72 20 6d 61  72 6b 65 72 0a 0a 54 68  |uffer marker..Th|
00011040  69 73 20 53 57 49 20 69  73 20 75 73 65 64 20 74  |is SWI is used t|
00011050  6f 20 70 65 72 66 6f 72  6d 20 6f 70 65 72 61 74  |o perform operat|
00011060  69 6f 6e 73 20 6f 6e 20  61 20 44 72 61 77 20 70  |ions on a Draw p|
00011070  61 74 68 2e 0a 23 53 75  62 70 61 67 65 20 73 70  |ath..#Subpage sp|
00011080  65 63 69 61 6c 73 0a 50  72 6f 63 65 73 73 50 61  |ecials.ProcessPa|
00011090  74 68 20 53 70 65 63 69  61 6c 20 76 61 6c 75 65  |th Special value|
000110a0  73 0a 56 61 6c 75 65 09  09 4d 65 61 6e 69 6e 67  |s.Value..Meaning|
000110b0  0a 23 4c 69 6e 65 0a 30  09 09 4f 75 74 70 75 74  |.#Line.0..Output|
000110c0  20 74 6f 20 74 68 65 20  69 6e 70 75 74 20 62 75  | to the input bu|
000110d0  66 66 65 72 20 70 61 74  68 0a 31 09 09 46 69 6c  |ffer path.1..Fil|
000110e0  6c 20 74 68 65 20 70 61  74 68 20 69 6e 20 6f 6e  |l the path in on|
000110f0  65 20 67 6f 0a 32 09 09  46 69 6c 6c 20 74 68 65  |e go.2..Fill the|
00011100  20 70 61 74 68 2c 20 64  6f 69 6e 67 20 6f 6e 65  | path, doing one|
00011110  20 73 75 62 70 61 74 68  20 61 74 20 61 20 74 69  | subpath at a ti|
00011120  6d 65 0a 33 09 09 43 61  6c 63 75 6c 61 74 65 20  |me.3..Calculate |
00011130  6f 75 74 70 75 74 20 62  75 66 66 65 72 20 73 69  |output buffer si|
00011140  7a 65 20 72 65 71 75 69  72 65 6d 65 6e 74 73 0a  |ze requirements.|
00011150  26 38 30 30 30 30 30 30  30 20 2b 20 78 09 4f 75  |&80000000 + x.Ou|
00011160  74 70 75 74 20 70 61 74  68 27 73 20 3c 62 6f 75  |tput path's <bou|
00011170  6e 64 69 6e 67 20 62 6f  78 3d 3e 73 77 69 5f 62  |nding box=>swi_b|
00011180  62 6f 78 3e 20 74 6f 20  62 6c 6f 63 6b 20 61 74  |box> to block at|
00011190  20 78 0a 78 09 09 4f 75  74 70 75 74 20 70 61 74  | x.x..Output pat|
000111a0  68 20 74 6f 20 3c 62 6c  6f 63 6b 3d 3e 44 72 61  |h to <block=>Dra|
000111b0  77 5f 6f 75 74 70 61 74  68 62 6c 6f 63 6b 3e 20  |w_outpathblock> |
000111c0  61 74 20 78 0a 09 09 54  68 65 20 66 69 72 73 74  |at x...The first|
000111d0  20 69 74 65 6d 20 69 6e  20 74 68 69 73 20 62 75  | item in this bu|
000111e0  66 66 65 72 20 73 68 6f  75 6c 64 20 62 65 20 30  |ffer should be 0|
000111f0  2c 20 66 6f 6c 6c 6f 77  65 64 20 62 79 20 61 20  |, followed by a |
00011200  77 6f 72 64 20 64 65 6e  6f 74 69 6e 67 20 74 68  |word denoting th|
00011210  65 20 73 69 7a 65 20 6f  66 20 74 68 65 20 62 75  |e size of the bu|
00011220  66 66 65 72 0a 23 53 75  62 70 61 67 65 20 65 78  |ffer.#Subpage ex|
00011230  74 72 61 66 69 6c 6c 0a  45 78 74 72 61 20 66 69  |trafill.Extra fi|
00011240  6c 6c 20 70 61 74 68 20  6f 70 74 69 6f 6e 73 20  |ll path options |
00011250  66 6f 72 20 50 72 6f 63  65 73 73 50 61 74 68 0a  |for ProcessPath.|
00011260  42 69 74 09 4d 65 61 6e  69 6e 67 20 69 66 20 73  |Bit.Meaning if s|
00011270  65 74 0a 23 4c 69 6e 65  0a 32 37 09 4f 70 65 6e  |et.#Line.27.Open|
00011280  20 73 75 62 70 61 74 68  73 20 61 72 65 20 74 6f  | subpaths are to|
00011290  20 62 65 20 63 6c 6f 73  65 64 0a 32 38 09 50 61  | be closed.28.Pa|
000112a0  74 68 20 73 68 6f 75 6c  64 20 62 65 20 66 6c 61  |th should be fla|
000112b0  74 74 65 6e 65 64 0a 32  39 09 50 61 74 68 20 73  |ttened.29.Path s|
000112c0  68 6f 75 6c 64 20 62 65  20 74 68 69 63 6b 65 6e  |hould be thicken|
000112d0  65 64 0a 33 30 09 50 61  74 68 20 73 68 6f 75 6c  |ed.30.Path shoul|
000112e0  64 20 62 65 20 72 65 2d  66 6c 61 74 74 65 6e 65  |d be re-flattene|
000112f0  64 20 61 66 74 65 72 20  74 68 69 6e 6b 65 6e 69  |d after thinkeni|
00011300  6e 67 0a 33 31 09 55 73  65 20 66 6c 6f 61 74 69  |ng.31.Use floati|
00011310  6e 67 20 70 6f 69 6e 74  20 6f 75 74 70 75 74 20  |ng point output |
00011320  28 6e 6f 74 20 69 6d 70  6c 65 6d 65 6e 74 65 64  |(not implemented|
00011330  20 61 74 20 70 72 65 73  65 6e 74 29 0a 00 00 00  | at present)....|
00011340  44 41 54 41 ca 01 00 00  44 72 61 77 20 64 61 73  |DATA....Draw das|
00011350  68 20 62 6c 6f 63 6b 0a  23 70 61 72 65 6e 74 20  |h block.#parent |
00011360  44 72 61 77 5f 50 72 6f  63 65 73 73 50 61 74 68  |Draw_ProcessPath|
00011370  0a 53 69 7a 65 09 4d 65  61 6e 69 6e 67 0a 23 4c  |.Size.Meaning.#L|
00011380  69 6e 65 0a 34 09 09 64  69 73 74 61 6e 63 65 20  |ine.4..distance |
00011390  69 6e 74 6f 20 64 61 73  68 20 70 61 74 74 65 72  |into dash patter|
000113a0  6e 20 74 6f 20 73 74 61  72 74 20 28 75 73 65 72  |n to start (user|
000113b0  20 63 6f 6f 72 64 69 6e  61 74 65 73 29 0a 34 09  | coordinates).4.|
000113c0  09 2f 6e 2f 20 2d 20 6e  75 6d 62 65 72 20 6f 66  |./n/ - number of|
000113d0  20 65 6c 65 6d 65 6e 74  73 20 69 6e 20 70 61 74  | elements in pat|
000113e0  74 65 72 6e 0a 34 7b 2f  7d 6e 7b 2f 7d 09 64 61  |tern.4{/}n{/}.da|
000113f0  73 68 20 65 6c 65 6d 65  6e 74 73 20 2d 20 65 61  |sh elements - ea|
00011400  63 68 20 69 73 20 61 20  6c 65 6e 67 74 68 20 69  |ch is a length i|
00011410  6e 20 75 73 65 72 20 63  6f 6f 72 64 73 0a 0a 45  |n user coords..E|
00011420  61 63 68 20 65 6c 65 6d  65 6e 74 20 67 69 76 65  |ach element give|
00011430  73 20 61 20 6c 65 6e 67  74 68 20 6f 66 20 64 61  |s a length of da|
00011440  73 68 2c 20 73 74 61 72  74 69 6e 67 20 77 69 74  |sh, starting wit|
00011450  68 20 61 6e 20 6f 6e 20  64 61 73 68 2c 20 61 74  |h an on dash, at|
00011460  65 72 6e 61 74 69 6e 67  20 6f 6e 20 2d 20 6f 66  |ernating on - of|
00011470  66 2c 20 6c 6f 6f 70 69  6e 67 20 72 6f 75 6e 64  |f, looping round|
00011480  20 74 68 65 20 6c 69 73  74 20 6f 66 20 65 6c 65  | the list of ele|
00011490  6d 65 6e 74 73 2e 20 48  65 6e 63 65 20 69 66 20  |ments. Hence if |
000114a0  2f 6e 2f 20 69 73 20 6f  64 64 20 74 68 65 20 73  |/n/ is odd the s|
000114b0  65 63 6f 6e 64 20 74 69  6d 65 20 72 6f 75 6e 64  |econd time round|
000114c0  20 65 6c 65 6d 65 6e 74  73 20 77 68 69 63 68 20  | elements which |
000114d0  77 65 72 65 20 6f 6e 20  66 69 72 73 74 20 74 69  |were on first ti|
000114e0  6d 65 20 72 6f 75 6e 64  20 77 69 6c 6c 20 6e 6f  |me round will no|
000114f0  77 20 62 65 20 6f 66 66  2c 20 61 6e 64 20 76 69  |w be off, and vi|
00011500  63 61 20 76 65 72 73 61  2e 0a 00 00 44 41 54 41  |ca versa....DATA|
00011510  00 02 00 00 44 72 61 77  5f 46 6c 61 74 74 65 6e  |....Draw_Flatten|
00011520  50 61 74 68 20 20 28 26  34 30 37 30 38 29 0a 23  |Path  (&40708).#|
00011530  50 61 72 65 6e 74 20 44  72 61 77 5f 0a 3d 3e 09  |Parent Draw_.=>.|
00011540  52 30 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R0 =.pointer to |
00011550  3c 70 61 74 68 20 62 6c  6f 63 6b 3d 3e 64 72 61  |<path block=>dra|
00011560  77 5f 70 61 74 68 62 6c  6f 63 6b 3e 0a 09 52 31  |w_pathblock>..R1|
00011570  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 3c 6f  | =.pointer to <o|
00011580  75 74 70 75 74 20 70 61  74 68 20 62 6c 6f 63 6b  |utput path block|
00011590  3d 3e 64 72 61 77 5f 6f  75 74 70 61 74 68 62 6c  |=>draw_outpathbl|
000115a0  6f 63 6b 3e 2c 20 6f 72  20 30 20 74 6f 20 63 61  |ock>, or 0 to ca|
000115b0  6c 63 6c 75 61 74 65 20  73 69 7a 65 0a 09 52 32  |lcluate size..R2|
000115c0  20 3d 09 66 6c 61 74 6e  65 73 73 2c 20 6f 72 20  | =.flatness, or |
000115d0  30 20 66 6f 72 20 64 65  66 61 75 6c 74 0a 0a 3c  |0 for default..<|
000115e0  3d 09 52 30 20 3d 09 52  31 20 3d 20 30 09 63 61  |=.R0 =.R1 = 0.ca|
000115f0  6c 75 6c 61 74 65 64 20  6f 75 74 70 75 74 20 62  |lulated output b|
00011600  75 66 66 65 72 20 73 69  7a 65 0a 09 20 09 65 6c  |uffer size.. .el|
00011610  73 65 09 70 6f 69 6e 74  65 72 20 74 6f 20 65 6e  |se.pointer to en|
00011620  64 20 6f 66 20 3c 70 61  74 68 20 6d 61 72 6b 65  |d of <path marke|
00011630  72 3d 3e 64 72 61 77 5f  70 61 74 68 62 6c 6f 63  |r=>draw_pathbloc|
00011640  6b 3e 20 69 6e 20 6f 75  74 70 75 74 20 70 61 74  |k> in output pat|
00011650  68 0a 0a 54 68 69 73 20  53 57 49 20 69 73 20 61  |h..This SWI is a|
00011660  20 73 75 62 73 65 74 20  6f 66 20 3c 44 72 61 77  | subset of <Draw|
00011670  5f 53 74 72 6f 6b 65 50  61 74 68 3e 2c 20 61 73  |_StrokePath>, as|
00011680  20 69 74 20 77 69 6c 6c  20 6f 6e 6c 79 20 66 6c  | it will only fl|
00011690  61 74 74 65 6e 20 61 20  70 61 74 68 2e 20 54 68  |atten a path. Th|
000116a0  69 73 20 69 73 20 75 73  65 66 75 6c 20 69 66 20  |is is useful if |
000116b0  79 6f 75 20 77 61 6e 74  20 74 6f 20 72 65 70 65  |you want to repe|
000116c0  61 74 65 64 6c 79 20 73  74 72 6f 6b 65 20 61 20  |atedly stroke a |
000116d0  70 61 74 68 2c 20 77 69  74 68 6f 75 74 20 68 61  |path, without ha|
000116e0  76 69 6e 67 20 74 6f 20  72 65 70 65 61 74 65 6c  |ving to repeatel|
000116f0  79 20 73 70 65 6e 64 20  74 69 6d 65 20 66 6c 61  |y spend time fla|
00011700  74 74 65 6e 69 6e 67 20  69 74 2e 0a 44 41 54 41  |ttening it..DATA|
00011710  8b 02 00 00 44 72 61 77  20 6f 75 74 70 75 74 20  |....Draw output |
00011720  74 6f 20 61 20 70 61 74  68 20 62 6c 6f 63 6b 0a  |to a path block.|
00011730  23 50 61 72 65 6e 74 20  44 72 61 77 5f 0a 57 68  |#Parent Draw_.Wh|
00011740  65 6e 20 77 72 69 74 69  6e 67 20 74 6f 20 61 20  |en writing to a |
00011750  70 61 74 68 20 62 6c 6f  63 6b 20 74 68 65 20 44  |path block the D|
00011760  72 61 77 20 6d 6f 64 75  6c 65 20 75 73 65 73 20  |raw module uses |
00011770  74 68 65 20 77 6f 72 64  20 61 66 74 65 72 20 74  |the word after t|
00011780  68 65 20 3c 65 6e 64 20  6f 66 20 70 61 74 68 20  |he <end of path |
00011790  6d 61 72 6b 65 72 3d 3e  44 72 61 77 5f 70 61 74  |marker=>Draw_pat|
000117a0  68 62 6c 6f 63 6b 3e 20  74 6f 20 73 74 6f 72 65  |hblock> to store|
000117b0  20 74 68 65 20 73 69 7a  65 20 6f 66 20 74 68 65  | the size of the|
000117c0  20 62 75 66 66 65 72 2e  20 41 73 20 64 61 74 61  | buffer. As data|
000117d0  20 69 73 20 77 72 69 74  74 65 6e 20 61 6e 64 20  | is written and |
000117e0  74 68 65 20 74 68 65 20  65 6e 64 20 6f 66 20 70  |the the end of p|
000117f0  61 74 68 20 6d 61 72 6b  65 72 20 69 73 20 6d 6f  |ath marker is mo|
00011800  76 65 64 20 74 68 69 73  20 76 61 6c 75 65 20 69  |ved this value i|
00011810  73 20 75 70 64 61 74 65  64 2c 20 61 6e 64 20 74  |s updated, and t|
00011820  68 65 20 53 57 49 20 72  65 74 75 72 6e 73 20 61  |he SWI returns a|
00011830  20 70 6f 69 6e 74 65 72  20 74 6f 20 74 68 65 20  | pointer to the |
00011840  6e 65 77 20 70 6f 73 69  74 69 6f 6e 20 6f 66 20  |new position of |
00011850  74 68 65 20 65 6e 64 20  6f 66 20 70 61 74 68 20  |the end of path |
00011860  6d 61 72 6b 65 72 2e 20  54 68 69 73 20 61 6c 6c  |marker. This all|
00011870  6f 77 73 20 61 20 73 65  63 6f 6e 64 20 53 57 49  |ows a second SWI|
00011880  20 74 6f 20 62 65 20 63  61 6c 6c 65 64 20 74 6f  | to be called to|
00011890  20 61 70 70 65 6e 64 20  74 6f 20 74 68 65 20 70  | append to the p|
000118a0  61 74 68 2c 20 77 69 74  68 20 6e 6f 20 6e 65 65  |ath, with no nee|
000118b0  64 20 66 6f 72 20 74 68  65 20 70 72 6f 67 72 61  |d for the progra|
000118c0  6d 20 74 6f 20 6b 65 65  70 20 74 72 61 63 6b 20  |m to keep track |
000118d0  6f 66 20 74 68 65 20 66  72 65 65 20 73 70 61 63  |of the free spac|
000118e0  65 20 69 6e 20 74 68 65  20 62 75 66 66 65 72 2e  |e in the buffer.|
000118f0  0a 0a 48 65 6e 63 65 20  62 65 66 6f 72 65 20 63  |..Hence before c|
00011900  61 6c 6c 69 6e 67 20 61  6e 79 20 53 57 49 73 20  |alling any SWIs |
00011910  74 68 61 74 20 77 72 69  74 65 20 61 20 70 61 74  |that write a pat|
00011920  68 20 74 6f 20 61 20 62  75 66 66 65 72 20 74 68  |h to a buffer th|
00011930  65 20 66 69 72 73 74 20  74 77 6f 20 77 6f 72 64  |e first two word|
00011940  73 20 73 68 6f 75 6c 64  20 62 65 20 69 6e 69 74  |s should be init|
00011950  69 61 6c 69 73 65 64 3a  0a 0a 4f 66 66 73 65 74  |ialised:..Offset|
00011960  09 56 61 6c 75 65 0a 23  4c 69 6e 65 0a 30 09 30  |.Value.#Line.0.0|
00011970  20 28 65 6e 64 20 6f 66  20 70 61 74 68 20 6d 61  | (end of path ma|
00011980  72 6b 65 72 29 0a 34 09  73 69 7a 65 20 6f 66 20  |rker).4.size of |
00011990  62 75 66 66 65 72 0a 00  44 41 54 41 be 02 00 00  |buffer..DATA....|
000119a0  44 72 61 77 5f 53 74 72  6f 6b 65 50 61 74 68 20  |Draw_StrokePath |
000119b0  20 28 26 34 30 37 30 36  29 0a 23 50 61 72 65 6e  | (&40706).#Paren|
000119c0  74 20 44 72 61 77 5f 0a  3d 3e 09 52 30 20 3d 09  |t Draw_.=>.R0 =.|
000119d0  70 6f 69 6e 74 65 72 20  74 6f 20 3c 70 61 74 68  |pointer to <path|
000119e0  20 62 6c 6f 63 6b 3d 3e  64 72 61 77 5f 70 61 74  | block=>draw_pat|
000119f0  68 62 6c 6f 63 6b 3e 0a  09 52 31 20 3d 09 70 6f  |hblock>..R1 =.po|
00011a00  69 6e 74 65 72 20 74 6f  20 3c 6f 75 74 70 75 74  |inter to <output|
00011a10  20 70 61 74 68 20 62 6c  6f 63 6b 3d 3e 64 72 61  | path block=>dra|
00011a20  77 5f 6f 75 74 70 61 74  68 62 6c 6f 63 6b 3e 2c  |w_outpathblock>,|
00011a30  20 6f 72 20 30 20 74 6f  20 63 61 6c 63 6c 75 61  | or 0 to calclua|
00011a40  74 65 20 73 69 7a 65 0a  09 52 32 20 3d 09 70 6f  |te size..R2 =.po|
00011a50  69 6e 74 65 72 20 74 6f  20 3c 74 72 61 6e 73 66  |inter to <transf|
00011a60  6f 72 6d 61 74 69 6f 6e  20 6d 61 74 72 69 78 3d  |ormation matrix=|
00011a70  3e 64 72 61 77 5f 74 72  61 6e 73 66 6f 72 6d 3e  |>draw_transform>|
00011a80  2c 20 6f 72 20 30 20 66  6f 72 20 64 65 66 61 75  |, or 0 for defau|
00011a90  6c 74 0a 09 52 33 20 3d  09 66 6c 61 74 6e 65 73  |lt..R3 =.flatnes|
00011aa0  73 2c 20 6f 72 20 30 20  66 6f 72 20 64 65 66 61  |s, or 0 for defa|
00011ab0  75 6c 74 0a 09 52 34 20  3d 09 6c 69 6e 65 20 74  |ult..R4 =.line t|
00011ac0  68 69 63 6b 6e 65 73 73  2c 20 6f 72 20 30 20 66  |hickness, or 0 f|
00011ad0  6f 72 20 64 65 66 61 75  6c 74 0a 09 52 35 20 3d  |or default..R5 =|
00011ae0  09 70 6f 69 6e 74 65 72  20 74 6f 20 3c 6a 6f 69  |.pointer to <joi|
00011af0  6e 2f 63 61 70 20 62 6c  6f 63 6b 3d 3e 64 72 61  |n/cap block=>dra|
00011b00  77 5f 6a 6f 69 6e 63 61  70 62 6c 6f 63 6b 3e 2c  |w_joincapblock>,|
00011b10  20 6f 72 20 30 20 69 66  20 6e 6f 6e 65 0a 09 52  | or 0 if none..R|
00011b20  36 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |6 =.pointer to <|
00011b30  64 61 73 68 69 6e 67 20  70 61 74 74 65 72 6e 3d  |dashing pattern=|
00011b40  3e 64 72 61 77 5f 64 61  73 68 62 6c 6f 63 6b 3e  |>draw_dashblock>|
00011b50  2c 20 6f 72 20 30 20 69  66 20 6e 6f 6e 65 0a 0a  |, or 0 if none..|
00011b60  3c 3d 09 52 30 20 3d 09  52 31 20 3d 20 30 09 63  |<=.R0 =.R1 = 0.c|
00011b70  61 6c 75 6c 61 74 65 64  20 6f 75 74 70 75 74 20  |alulated output |
00011b80  62 75 66 66 65 72 20 73  69 7a 65 0a 09 20 09 65  |buffer size.. .e|
00011b90  6c 73 65 09 70 6f 69 6e  74 65 72 20 74 6f 20 65  |lse.pointer to e|
00011ba0  6e 64 20 6f 66 20 3c 70  61 74 68 20 6d 61 72 6b  |nd of <path mark|
00011bb0  65 72 3d 3e 64 72 61 77  5f 70 61 74 68 62 6c 6f  |er=>draw_pathblo|
00011bc0  63 6b 3e 20 69 6e 20 6f  75 74 70 75 74 20 70 61  |ck> in output pa|
00011bd0  74 68 0a 0a 54 68 69 73  20 53 57 49 20 69 73 20  |th..This SWI is |
00011be0  6c 69 6b 65 20 61 20 63  61 6c 6c 20 74 6f 20 3c  |like a call to <|
00011bf0  44 72 61 77 5f 53 74 72  6f 6b 65 3e 2c 20 65 78  |Draw_Stroke>, ex|
00011c00  63 65 70 74 20 74 68 61  74 20 69 74 20 77 72 69  |cept that it wri|
00011c10  74 65 73 20 69 74 20 6f  75 74 70 75 74 20 61 73  |tes it output as|
00011c20  20 61 20 70 61 74 68 20  69 6e 20 74 68 65 20 62  | a path in the b|
00011c30  6c 6f 63 6b 2c 20 72 61  74 68 65 72 20 74 68 61  |lock, rather tha|
00011c40  6e 20 74 6f 20 74 68 65  20 56 44 55 20 64 72 69  |n to the VDU dri|
00011c50  76 65 72 73 2e 0a 00 00  44 41 54 41 4f 02 00 00  |vers....DATAO...|
00011c60  44 72 61 77 5f 54 72 61  6e 73 66 6f 72 6d 50 61  |Draw_TransformPa|
00011c70  74 68 20 20 28 26 34 30  37 30 41 29 0a 23 50 61  |th  (&4070A).#Pa|
00011c80  72 65 6e 74 20 44 72 61  77 5f 0a 3d 3e 09 52 30  |rent Draw_.=>.R0|
00011c90  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 3c 70  | =.pointer to <p|
00011ca0  61 74 68 20 62 6c 6f 63  6b 3d 3e 64 72 61 77 5f  |ath block=>draw_|
00011cb0  70 61 74 68 62 6c 6f 63  6b 3e 0a 09 52 31 20 3d  |pathblock>..R1 =|
00011cc0  09 70 6f 69 6e 74 65 72  20 74 6f 20 3c 6f 75 74  |.pointer to <out|
00011cd0  70 75 74 20 70 61 74 68  20 62 6c 6f 63 6b 3d 3e  |put path block=>|
00011ce0  64 72 61 77 5f 6f 75 74  70 61 74 68 62 6c 6f 63  |draw_outpathbloc|
00011cf0  6b 3e 2c 20 6f 72 20 30  20 74 6f 20 63 61 6c 63  |k>, or 0 to calc|
00011d00  6c 75 61 74 65 20 73 69  7a 65 0a 09 52 32 20 3d  |luate size..R2 =|
00011d10  09 70 6f 69 6e 74 65 72  20 74 6f 20 3c 74 72 61  |.pointer to <tra|
00011d20  6e 73 66 6f 72 6d 61 74  69 6f 6e 20 6d 61 74 72  |nsformation matr|
00011d30  69 78 3d 3e 64 72 61 77  5f 74 72 61 6e 73 66 6f  |ix=>draw_transfo|
00011d40  72 6d 3e 2c 20 6f 72 20  30 20 66 6f 72 20 64 65  |rm>, or 0 for de|
00011d50  66 61 75 6c 74 0a 09 52  33 20 3d 09 30 0a 0a 3c  |fault..R3 =.0..<|
00011d60  3d 09 52 30 20 3d 09 52  31 20 3d 20 30 09 63 61  |=.R0 =.R1 = 0.ca|
00011d70  6c 75 6c 61 74 65 64 20  6f 75 74 70 75 74 20 62  |lulated output b|
00011d80  75 66 66 65 72 20 73 69  7a 65 0a 09 20 09 65 6c  |uffer size.. .el|
00011d90  73 65 09 70 6f 69 6e 74  65 72 20 74 6f 20 65 6e  |se.pointer to en|
00011da0  64 20 6f 66 20 3c 70 61  74 68 20 6d 61 72 6b 65  |d of <path marke|
00011db0  72 3d 3e 64 72 61 77 5f  70 61 74 68 62 6c 6f 63  |r=>draw_pathbloc|
00011dc0  6b 3e 20 69 6e 20 6f 75  74 70 75 74 20 70 61 74  |k> in output pat|
00011dd0  68 0a 0a 54 68 69 73 20  53 57 49 20 69 73 20 61  |h..This SWI is a|
00011de0  20 73 75 62 73 65 74 20  6f 66 20 3c 44 72 61 77  | subset of <Draw|
00011df0  5f 53 74 72 6f 6b 65 50  61 74 68 3e 2c 20 69 6e  |_StrokePath>, in|
00011e00  20 74 68 61 74 20 69 74  20 6f 6e 6c 79 20 74 72  | that it only tr|
00011e10  61 6e 73 66 6f 72 6d 73  20 61 20 70 61 74 68 2e  |ansforms a path.|
00011e20  20 54 68 69 73 20 63 61  6e 20 73 61 76 65 20 74  | This can save t|
00011e30  68 65 20 74 69 6d 65 20  74 61 6b 65 6e 20 74 6f  |he time taken to|
00011e40  20 72 65 70 65 61 74 65  64 6c 79 20 74 72 61 6e  | repeatedly tran|
00011e50  73 66 6f 72 6d 20 74 68  65 20 73 61 6d 65 20 70  |sform the same p|
00011e60  61 74 68 2c 20 6f 72 20  72 65 64 75 63 65 20 65  |ath, or reduce e|
00011e70  72 72 6f 72 73 20 62 79  20 74 72 61 6e 73 66 6f  |rrors by transfo|
00011e80  72 6d 69 6e 67 20 2a 62  65 66 6f 72 65 2a 20 64  |rming *before* d|
00011e90  61 73 68 69 6e 67 20 61  6e 64 20 74 68 69 63 6b  |ashing and thick|
00011ea0  65 6e 69 6e 67 2e 0a 00  44 49 52 24 84 05 00 00  |ening...DIR$....|
00011eb0  84 05 00 00 2c 24 01 00  48 fd ff ff 57 ea 6b 15  |....,$..H...W.k.|
00011ec0  49 02 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |I...........!Roo|
00011ed0  74 00 00 00 78 26 01 00  47 ff ff ff 61 8e b8 cd  |t...x&..G...a...|
00011ee0  88 01 00 00 13 00 00 00  00 00 00 00 43 72 65 61  |............Crea|
00011ef0  74 65 52 65 63 65 69 76  65 00 00 00 00 28 01 00  |teReceive....(..|
00011f00  47 ff ff ff 0e 91 b8 cd  1c 01 00 00 13 00 00 00  |G...............|
00011f10  00 00 00 00 45 78 61 6d  69 6e 65 52 65 63 65 69  |....ExamineRecei|
00011f20  76 65 00 00 1c 29 01 00  48 fd ff ff 14 2c 6e 15  |ve...)..H....,n.|
00011f30  bf 01 00 00 13 00 00 00  00 00 00 00 73 74 61 74  |............stat|
00011f40  75 73 65 73 00 00 00 00  dc 2a 01 00 48 ff ff ff  |uses.....*..H...|
00011f50  5a 28 d8 15 b1 01 00 00  13 00 00 00 00 00 00 00  |Z(..............|
00011f60  52 65 61 64 52 65 63 65  69 76 65 00 90 2c 01 00  |ReadReceive..,..|
00011f70  47 ff ff ff 98 99 b8 cd  fa 00 00 00 13 00 00 00  |G...............|
00011f80  00 00 00 00 41 62 61 6e  64 6f 6e 52 65 63 65 69  |....AbandonRecei|
00011f90  76 65 00 00 8c 2d 01 00  48 ff ff ff 70 77 d8 15  |ve...-..H...pw..|
00011fa0  41 02 00 00 13 00 00 00  00 00 00 00 57 61 69 74  |A...........Wait|
00011fb0  46 6f 72 52 65 63 65 70  74 69 6f 6e 00 00 00 00  |ForReception....|
00011fc0  d0 2f 01 00 47 ff ff ff  48 a3 b8 cd ba 00 00 00  |./..G...H.......|
00011fd0  13 00 00 00 00 00 00 00  45 6e 75 6d 65 72 61 74  |........Enumerat|
00011fe0  65 52 65 63 65 69 76 65  00 00 00 00 8c 30 01 00  |eReceive.....0..|
00011ff0  48 ff ff ff af 6d d8 15  19 02 00 00 13 00 00 00  |H....m..........|
00012000  00 00 00 00 53 74 61 72  74 54 72 61 6e 73 6d 69  |....StartTransmi|
00012010  74 00 00 00 a8 32 01 00  47 ff ff ff 95 ad b8 cd  |t....2..G.......|
00012020  d4 00 00 00 13 00 00 00  00 00 00 00 50 6f 6c 6c  |............Poll|
00012030  54 72 61 6e 73 6d 69 74  00 00 00 00 7c 33 01 00  |Transmit....|3..|
00012040  47 ff ff ff cf af b8 cd  8f 00 00 00 13 00 00 00  |G...............|
00012050  00 00 00 00 41 62 61 6e  64 6f 6e 54 72 61 6e 73  |....AbandonTrans|
00012060  6d 69 74 00 0c 34 01 00  48 ff ff ff 01 fa d7 15  |mit..4..H.......|
00012070  93 02 00 00 13 00 00 00  00 00 00 00 44 6f 54 72  |............DoTr|
00012080  61 6e 73 6d 69 74 00 00  a0 36 01 00 47 ff ff ff  |ansmit...6..G...|
00012090  eb bd b8 cd e1 00 00 00  13 00 00 00 00 00 00 00  |................|
000120a0  52 65 61 64 4c 6f 63 61  6c 53 74 61 74 69 6f 6e  |ReadLocalStation|
000120b0  41 6e 64 4e 65 74 00 00  84 37 01 00 48 ff ff ff  |AndNet...7..H...|
000120c0  26 93 6e 15 31 02 00 00  13 00 00 00 00 00 00 00  |&.n.1...........|
000120d0  43 6f 6e 76 65 72 74 53  74 61 74 75 73 54 6f 53  |ConvertStatusToS|
000120e0  74 72 69 6e 67 00 00 00  b8 39 01 00 48 ff ff ff  |tring....9..H...|
000120f0  86 e1 d7 15 d7 01 00 00  13 00 00 00 00 00 00 00  |................|
00012100  43 6f 6e 76 65 72 74 53  74 61 74 75 73 54 6f 45  |ConvertStatusToE|
00012110  72 72 6f 72 00 00 00 00  90 3b 01 00 48 fd ff ff  |rror.....;..H...|
00012120  6c 9f 67 15 17 01 00 00  13 00 00 00 00 00 00 00  |l.g.............|
00012130  70 72 6f 74 65 63 74 73  00 00 00 00 a8 3c 01 00  |protects.....<..|
00012140  47 ff ff ff 1b cd b8 cd  f2 00 00 00 13 00 00 00  |G...............|
00012150  00 00 00 00 52 65 61 64  50 72 6f 74 65 63 74 69  |....ReadProtecti|
00012160  6f 6e 00 00 9c 3d 01 00  48 ff ff ff 26 b0 67 15  |on...=..H...&.g.|
00012170  11 01 00 00 13 00 00 00  00 00 00 00 53 65 74 50  |............SetP|
00012180  72 6f 74 65 63 74 69 6f  6e 00 00 00 b0 3e 01 00  |rotection....>..|
00012190  47 ff ff ff 5c 77 4f 15  b8 00 00 00 13 00 00 00  |G...\wO.........|
000121a0  00 00 00 00 50 72 69 6e  74 42 61 6e 6e 65 72 00  |....PrintBanner.|
000121b0  68 3f 01 00 47 ff ff ff  7f d3 b8 cd 80 01 00 00  |h?..G...........|
000121c0  13 00 00 00 00 00 00 00  52 65 61 64 54 72 61 6e  |........ReadTran|
000121d0  73 70 6f 72 74 54 79 70  65 00 00 00 e8 40 01 00  |sportType....@..|
000121e0  47 ff ff ff 3e d5 b8 cd  8d 00 00 00 13 00 00 00  |G...>...........|
000121f0  00 00 00 00 52 65 6c 65  61 73 65 50 6f 72 74 00  |....ReleasePort.|
00012200  78 41 01 00 47 ff ff ff  7c d6 b8 cd f9 00 00 00  |xA..G...|.......|
00012210  13 00 00 00 00 00 00 00  41 6c 6c 6f 63 61 74 65  |........Allocate|
00012220  50 6f 72 74 00 00 00 00  74 42 01 00 47 ff ff ff  |Port....tB..G...|
00012230  8f d8 b8 cd 96 00 00 00  13 00 00 00 00 00 00 00  |................|
00012240  44 65 41 6c 6c 6f 63 61  74 65 50 6f 72 74 00 00  |DeAllocatePort..|
00012250  0c 43 01 00 47 ff ff ff  ec d9 b8 cd be 00 00 00  |.C..G...........|
00012260  13 00 00 00 00 00 00 00  43 6c 61 69 6d 50 6f 72  |........ClaimPor|
00012270  74 00 00 00 cc 43 01 00  48 ff ff ff f8 5e d8 15  |t....C..H....^..|
00012280  50 02 00 00 13 00 00 00  00 00 00 00 53 74 61 72  |P...........Star|
00012290  74 49 6d 6d 65 64 69 61  74 65 00 00 1c 46 01 00  |tImmediate...F..|
000122a0  47 ff ff ff 1a 92 b6 cd  c1 00 00 00 13 00 00 00  |G...............|
000122b0  00 00 00 00 45 6e 75 6d  65 72 61 74 65 54 72 61  |....EnumerateTra|
000122c0  6e 73 6d 69 74 00 00 00  e0 46 01 00 48 ff ff ff  |nsmit....F..H...|
000122d0  ee 13 6c 15 6d 01 00 00  13 00 00 00 00 00 00 00  |..l.m...........|
000122e0  41 62 61 6e 64 6f 6e 41  6e 64 52 65 61 64 52 65  |AbandonAndReadRe|
000122f0  63 65 69 76 65 00 00 00  50 48 01 00 48 ff ff ff  |ceive...PH..H...|
00012300  6b d5 6b 15 7e 02 00 00  13 00 00 00 00 00 00 00  |k.k.~...........|
00012310  44 6f 49 6d 6d 65 64 69  61 74 65 00 d0 4a 01 00  |DoImmediate..J..|
00012320  48 ff ff ff f5 7d 6c 15  01 01 00 00 13 00 00 00  |H....}l.........|
00012330  00 00 00 00 4e 65 74 77  6f 72 6b 53 74 61 74 65  |....NetworkState|
00012340  00 00 00 00 d4 4b 01 00  48 ff ff ff 18 a3 6c 15  |.....K..H.....l.|
00012350  eb 00 00 00 13 00 00 00  00 00 00 00 50 61 63 6b  |............Pack|
00012360  65 74 53 69 7a 65 00 00  c0 4c 01 00 48 ff ff ff  |etSize...L..H...|
00012370  87 4f 68 15 4b 01 00 00  13 00 00 00 00 00 00 00  |.Oh.K...........|
00012380  52 65 61 64 53 74 61 74  69 6f 6e 4e 75 6d 62 65  |ReadStationNumbe|
00012390  72 00 00 00 0c 4e 01 00  48 ff ff ff d5 b1 6c 15  |r....N..H.....l.|
000123a0  c6 00 00 00 13 00 00 00  00 00 00 00 52 65 61 64  |............Read|
000123b0  54 72 61 6e 73 70 6f 72  74 4e 61 6d 65 00 00 00  |TransportName...|
000123c0  d4 4e 01 00 48 ff ff ff  13 4c 6c 15 2d 01 00 00  |.N..H....Ll.-...|
000123d0  13 00 00 00 00 00 00 00  56 65 72 73 69 6f 6e 00  |........Version.|
000123e0  04 50 01 00 48 fd ff ff  e0 ca 73 2b 7f 06 00 00  |.P..H.....s+....|
000123f0  13 00 00 00 00 00 00 00  69 6d 6d 65 64 69 61 74  |........immediat|
00012400  65 00 00 00 84 56 01 00  48 fd ff ff 8e a2 65 15  |e....V..H.....e.|
00012410  5a 00 00 00 13 00 00 00  00 00 00 00 69 6d 6d 65  |Z...........imme|
00012420  64 69 61 74 65 62 75 66  66 65 72 00 44 41 54 41  |diatebuffer.DATA|
00012430  49 02 00 00 45 63 6f 6e  65 74 0a 23 50 61 72 65  |I...Econet.#Pare|
00012440  6e 74 20 21 52 6f 6f 74  0a 23 50 72 65 66 69 78  |nt !Root.#Prefix|
00012450  20 45 63 6f 6e 65 74 5f  0a 23 54 61 62 6c 65 20  | Econet_.#Table |
00012460  43 6f 6c 75 6d 6e 73 20  33 0a 3c 41 62 61 6e 64  |Columns 3.<Aband|
00012470  6f 6e 41 6e 64 52 65 61  64 52 65 63 65 69 76 65  |onAndReadReceive|
00012480  3e 0a 3c 41 62 61 6e 64  6f 6e 52 65 63 65 69 76  |>.<AbandonReceiv|
00012490  65 3e 0a 3c 41 62 61 6e  64 6f 6e 54 72 61 6e 73  |e>.<AbandonTrans|
000124a0  6d 69 74 3e 0a 3c 41 6c  6c 6f 63 61 74 65 50 6f  |mit>.<AllocatePo|
000124b0  72 74 3e 0a 3c 43 6c 61  69 6d 50 6f 72 74 3e 0a  |rt>.<ClaimPort>.|
000124c0  3c 43 6f 6e 76 65 72 74  53 74 61 74 75 73 54 6f  |<ConvertStatusTo|
000124d0  45 72 72 6f 72 3e 0a 3c  43 6f 6e 76 65 72 74 53  |Error>.<ConvertS|
000124e0  74 61 74 75 73 54 6f 53  74 72 69 6e 67 3e 0a 3c  |tatusToString>.<|
000124f0  43 72 65 61 74 65 52 65  63 65 69 76 65 3e 0a 3c  |CreateReceive>.<|
00012500  44 65 41 6c 6c 6f 63 61  74 65 50 6f 72 74 3e 0a  |DeAllocatePort>.|
00012510  3c 44 6f 49 6d 6d 65 64  69 61 74 65 3e 0a 3c 44  |<DoImmediate>.<D|
00012520  6f 54 72 61 6e 73 6d 69  74 3e 0a 3c 45 6e 75 6d  |oTransmit>.<Enum|
00012530  65 72 61 74 65 52 65 63  65 69 76 65 3e 0a 3c 45  |erateReceive>.<E|
00012540  6e 75 6d 65 72 61 74 65  54 72 61 6e 73 6d 69 74  |numerateTransmit|
00012550  3e 0a 3c 45 78 61 6d 69  6e 65 52 65 63 65 69 76  |>.<ExamineReceiv|
00012560  65 3e 0a 3c 4e 65 74 77  6f 72 6b 53 74 61 74 65  |e>.<NetworkState|
00012570  3e 0a 3c 50 61 63 6b 65  74 53 69 7a 65 3e 0a 3c  |>.<PacketSize>.<|
00012580  50 6f 6c 6c 54 72 61 6e  73 6d 69 74 3e 0a 3c 50  |PollTransmit>.<P|
00012590  72 69 6e 74 42 61 6e 6e  65 72 3e 0a 3c 52 65 61  |rintBanner>.<Rea|
000125a0  64 4c 6f 63 61 6c 53 74  61 74 69 6f 6e 41 6e 64  |dLocalStationAnd|
000125b0  4e 65 74 3e 0a 3c 52 65  61 64 50 72 6f 74 65 63  |Net>.<ReadProtec|
000125c0  74 69 6f 6e 3e 0a 3c 52  65 61 64 52 65 63 65 69  |tion>.<ReadRecei|
000125d0  76 65 3e 0a 3c 52 65 61  64 53 74 61 74 69 6f 6e  |ve>.<ReadStation|
000125e0  4e 75 6d 62 65 72 3e 0a  3c 52 65 61 64 54 72 61  |Number>.<ReadTra|
000125f0  6e 73 70 6f 72 74 4e 61  6d 65 3e 0a 3c 52 65 61  |nsportName>.<Rea|
00012600  64 54 72 61 6e 73 70 6f  72 74 54 79 70 65 3e 0a  |dTransportType>.|
00012610  3c 52 65 6c 65 61 73 65  50 6f 72 74 3e 0a 3c 53  |<ReleasePort>.<S|
00012620  65 74 50 72 6f 74 65 63  74 69 6f 6e 3e 0a 3c 53  |etProtection>.<S|
00012630  74 61 72 74 49 6d 6d 65  64 69 61 74 65 3e 0a 3c  |tartImmediate>.<|
00012640  53 74 61 72 74 54 72 61  6e 73 6d 69 74 3e 0a 3c  |StartTransmit>.<|
00012650  57 61 69 74 46 6f 72 52  65 63 65 70 74 69 6f 6e  |WaitForReception|
00012660  3e 0a 3c 56 65 72 73 69  6f 6e 3e 0a 23 45 6e 64  |>.<Version>.#End|
00012670  54 61 62 6c 65 00 00 00  44 41 54 41 88 01 00 00  |Table...DATA....|
00012680  45 63 6f 6e 65 74 5f 43  72 65 61 74 65 52 65 63  |Econet_CreateRec|
00012690  65 69 76 65 20 20 28 26  34 30 30 30 30 29 0a 23  |eive  (&40000).#|
000126a0  50 61 72 65 6e 74 20 45  63 6f 6e 65 74 5f 0a 3d  |Parent Econet_.=|
000126b0  3e 09 52 30 20 3d 09 70  6f 72 74 20 6e 75 6d 62  |>.R0 =.port numb|
000126c0  65 72 0a 09 52 31 20 3d  09 73 74 61 74 69 6f 6e  |er..R1 =.station|
000126d0  20 6e 75 6d 62 65 72 0a  09 52 32 20 3d 09 6e 65  | number..R2 =.ne|
000126e0  74 20 6e 75 6d 62 65 72  0a 09 52 33 20 3d 09 70  |t number..R3 =.p|
000126f0  6f 69 6e 74 65 72 20 74  6f 20 64 61 74 61 20 62  |ointer to data b|
00012700  75 66 66 65 72 0a 09 52  34 20 3d 09 62 75 66 66  |uffer..R4 =.buff|
00012710  65 72 20 73 69 7a 65 0a  0a 3c 3d 09 52 30 20 3d  |er size..<=.R0 =|
00012720  09 68 61 6e 64 6c 65 0a  09 52 32 20 3d 09 30 20  |.handle..R2 =.0 |
00012730  69 66 20 6c 6f 63 61 6c  20 6e 65 74 0a 0a 54 68  |if local net..Th|
00012740  69 73 20 53 57 49 20 63  72 65 61 74 65 73 20 61  |is SWI creates a|
00012750  20 63 6f 6e 74 72 6f 6c  20 62 6c 6f 63 6b 20 74  | control block t|
00012760  6f 20 72 65 63 65 69 76  65 20 64 61 74 61 20 6f  |o receive data o|
00012770  6e 20 61 6e 20 65 63 6f  6e 65 74 20 70 6f 72 74  |n an econet port|
00012780  2e 20 54 68 65 20 64 61  74 61 20 62 75 66 66 65  |. The data buffe|
00012790  72 20 73 68 6f 75 6c 64  20 62 65 20 69 6e 20 52  |r should be in R|
000127a0  4d 41 20 6f 72 20 73 6f  6d 65 20 6f 74 68 65 72  |MA or some other|
000127b0  20 70 65 72 6d 61 6e 65  6e 74 6c 79 20 61 76 61  | permanently ava|
000127c0  69 6c 61 62 6c 65 20 61  72 65 61 20 6f 66 20 6d  |ilable area of m|
000127d0  65 6d 6f 72 79 2c 20 64  75 65 20 74 6f 20 74 68  |emory, due to th|
000127e0  65 20 77 61 79 20 69 6e  20 77 68 69 63 68 20 74  |e way in which t|
000127f0  68 65 20 64 61 74 61 20  69 73 20 72 65 61 64 2e  |he data is read.|
00012800  44 41 54 41 1c 01 00 00  45 63 6f 6e 65 74 5f 45  |DATA....Econet_E|
00012810  78 61 6d 69 6e 65 52 65  63 65 69 76 65 20 20 28  |xamineReceive  (|
00012820  26 34 30 30 30 31 29 0a  23 50 61 72 65 6e 74 20  |&40001).#Parent |
00012830  45 63 6f 6e 65 74 5f 0a  3d 3e 09 52 30 20 3d 09  |Econet_.=>.R0 =.|
00012840  68 61 6e 64 6c 65 0a 3c  3d 09 52 30 20 3d 09 3c  |handle.<=.R0 =.<|
00012850  73 74 61 74 75 73 3d 3e  65 63 6f 6e 65 74 5f 73  |status=>econet_s|
00012860  74 61 74 75 73 65 73 3e  0a 0a 54 68 69 73 20 53  |tatuses>..This S|
00012870  57 49 20 72 65 61 64 73  20 74 68 65 20 73 74 61  |WI reads the sta|
00012880  74 75 73 20 6f 66 20 61  20 72 65 63 65 69 76 65  |tus of a receive|
00012890  20 62 6c 6f 63 6b 2e 20  46 6f 72 20 6d 6f 72 65  | block. For more|
000128a0  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 20 61 62 6f  | information abo|
000128b0  75 74 20 74 68 65 20 62  6c 6f 63 6b 20 79 6f 75  |ut the block you|
000128c0  20 73 68 6f 75 6c 64 20  75 73 65 20 3c 45 63 6f  | should use <Eco|
000128d0  6e 65 74 5f 52 65 61 64  52 65 63 65 69 76 65 3e  |net_ReadReceive>|
000128e0  2e 0a 0a 54 68 69 73 20  69 73 20 74 68 65 20 72  |...This is the r|
000128f0  65 63 65 69 76 65 20 63  6f 75 6e 74 65 72 70 61  |eceive counterpa|
00012900  72 74 20 6f 66 20 3c 45  63 6f 6e 65 74 5f 50 6f  |rt of <Econet_Po|
00012910  6c 6c 54 72 61 6e 73 6d  69 74 3e 2e 44 41 54 41  |llTransmit>.DATA|
00012920  bf 01 00 00 45 63 6f 6e  65 74 20 73 74 61 74 75  |....Econet statu|
00012930  73 20 76 61 6c 75 65 73  0a 53 74 61 74 75 73 09  |s values.Status.|
00012940  56 61 6c 69 64 09 4d 65  61 6e 69 6e 67 0a 23 4c  |Valid.Meaning.#L|
00012950  69 6e 65 0a 30 09 54 09  54 72 61 6e 73 6d 69 74  |ine.0.T.Transmit|
00012960  74 65 64 0a 31 09 54 09  4c 69 6e 65 20 6a 61 6d  |ted.1.T.Line jam|
00012970  6d 65 64 0a 32 09 54 09  4e 65 74 20 65 72 72 6f  |med.2.T.Net erro|
00012980  72 0a 33 09 54 09 4e 6f  74 20 6c 69 73 74 65 6e  |r.3.T.Not listen|
00012990  69 6e 67 0a 34 09 54 09  4e 6f 20 63 6c 6f 63 6b  |ing.4.T.No clock|
000129a0  0a 35 09 54 09 54 72 61  6e 73 6d 69 74 20 72 65  |.5.T.Transmit re|
000129b0  61 64 79 20 28 61 77 61  69 74 69 6e 67 20 63 6f  |ady (awaiting co|
000129c0  6e 6e 65 63 74 29 0a 36  09 54 09 54 72 61 6e 73  |nnect).6.T.Trans|
000129d0  6d 69 74 74 69 6e 67 0a  37 09 52 09 52 65 63 65  |mitting.7.R.Rece|
000129e0  69 76 65 20 72 65 61 64  79 20 28 61 77 61 69 74  |ive ready (await|
000129f0  69 6e 67 20 64 61 74 61  29 0a 38 09 52 57 09 52  |ing data).8.RW.R|
00012a00  65 63 65 69 76 69 6e 67  0a 39 09 52 57 09 52 65  |eceiving.9.RW.Re|
00012a10  63 65 69 76 65 64 20 28  63 6f 6d 70 6c 65 74 65  |ceived (complete|
00012a20  29 0a 31 30 09 57 09 4e  6f 20 72 65 70 6c 79 0a  |).10.W.No reply.|
00012a30  31 31 09 57 09 45 73 63  61 70 65 20 70 72 65 73  |11.W.Escape pres|
00012a40  73 65 64 0a 31 32 09 3f  09 53 74 61 74 69 6f 6e  |sed.12.?.Station|
00012a50  20 6e 6f 74 20 70 72 65  73 65 6e 74 0a 0a 4d 65  | not present..Me|
00012a60  61 6e 69 6e 67 73 3a 0a  23 54 61 62 0a 52 09 52  |anings:.#Tab.R.R|
00012a70  65 63 65 69 76 65 20 62  6c 6f 63 6b 73 0a 57 09  |eceive blocks.W.|
00012a80  3c 45 63 6f 6e 65 74 5f  57 61 69 74 46 6f 72 52  |<Econet_WaitForR|
00012a90  65 63 65 70 74 69 6f 6e  3e 0a 54 09 54 72 61 73  |eception>.T.Tras|
00012aa0  6d 69 74 20 62 6c 6f 63  6b 73 0a 3f 09 4e 6f 20  |mit blocks.?.No |
00012ab0  63 61 6c 6c 20 69 73 20  64 6f 63 75 6d 65 6e 74  |call is document|
00012ac0  65 64 20 61 73 20 72 65  74 75 72 6e 69 6e 67 20  |ed as returning |
00012ad0  74 68 69 73 20 73 74 61  74 75 73 00 44 41 54 41  |this status.DATA|
00012ae0  b1 01 00 00 45 63 6f 6e  65 74 5f 52 65 61 64 52  |....Econet_ReadR|
00012af0  65 63 65 69 76 65 20 20  28 26 34 30 30 30 32 29  |eceive  (&40002)|
00012b00  0a 23 50 61 72 65 6e 74  20 45 63 6f 6e 65 74 5f  |.#Parent Econet_|
00012b10  0a 3d 3e 09 52 30 20 3d  09 68 61 6e 64 6c 65 0a  |.=>.R0 =.handle.|
00012b20  3c 3d 09 52 30 20 3d 09  3c 73 74 61 74 75 73 3d  |<=.R0 =.<status=|
00012b30  3e 65 63 6f 6e 65 74 5f  73 74 61 74 75 73 65 73  |>econet_statuses|
00012b40  3e 0a 09 52 31 20 3d 09  30 2c 20 6f 72 20 66 6c  |>..R1 =.0, or fl|
00012b50  61 67 20 62 79 74 65 20  69 66 20 72 30 3d 39 20  |ag byte if r0=9 |
00012b60  6f 6e 20 65 78 69 74 0a  09 52 32 20 3d 09 70 6f  |on exit..R2 =.po|
00012b70  72 74 20 6e 75 6d 62 65  72 0a 09 52 33 20 3d 09  |rt number..R3 =.|
00012b80  73 74 61 74 69 6f 6e 20  6e 75 6d 62 65 72 0a 09  |station number..|
00012b90  52 34 20 3d 09 6e 65 74  20 6e 75 6d 62 65 72 0a  |R4 =.net number.|
00012ba0  09 52 35 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R5 =.pointer to|
00012bb0  20 64 61 74 61 20 62 75  66 66 65 72 0a 09 52 36  | data buffer..R6|
00012bc0  20 3d 09 73 69 7a 65 20  6f 66 20 62 75 66 66 65  | =.size of buffe|
00012bd0  72 2c 20 6f 72 20 73 69  7a 65 20 6f 66 20 64 61  |r, or size of da|
00012be0  74 61 20 72 65 63 65 69  76 65 64 20 69 66 20 72  |ta received if r|
00012bf0  30 3d 39 20 6f 6e 20 65  78 69 74 0a 0a 54 68 69  |0=9 on exit..Thi|
00012c00  73 20 53 57 49 20 72 65  74 75 72 6e 73 20 69 6e  |s SWI returns in|
00012c10  66 6f 72 6d 61 74 69 6f  6e 20 61 62 6f 75 74 20  |formation about |
00012c20  61 20 63 6f 6e 74 72 6f  6c 20 62 6c 6f 63 6b 2c  |a control block,|
00012c30  20 67 69 76 65 6e 20 69  74 73 20 68 61 6e 64 6c  | given its handl|
00012c40  65 20 6e 75 6d 62 65 72  2e 20 3c 45 63 6f 6e 65  |e number. <Econe|
00012c50  74 5f 45 78 61 6d 69 6e  65 52 65 63 65 69 76 65  |t_ExamineReceive|
00012c60  3e 20 70 65 72 66 6f 72  6d 73 20 61 20 73 69 6d  |> performs a sim|
00012c70  69 6c 61 72 20 74 61 73  6b 2c 20 62 75 74 20 6d  |ilar task, but m|
00012c80  6f 72 65 20 71 75 69 63  6b 6c 79 2e 0a 00 00 00  |ore quickly.....|
00012c90  44 41 54 41 fa 00 00 00  45 63 6f 6e 65 74 5f 41  |DATA....Econet_A|
00012ca0  62 61 6e 64 6f 6e 52 65  63 65 69 76 65 20 20 28  |bandonReceive  (|
00012cb0  26 34 30 30 30 33 29 0a  23 50 61 72 65 6e 74 20  |&40003).#Parent |
00012cc0  45 63 6f 6e 65 74 5f 0a  3d 3e 09 52 30 20 3d 09  |Econet_.=>.R0 =.|
00012cd0  68 61 6e 64 6c 65 0a 3c  3d 09 52 30 20 3d 09 3c  |handle.<=.R0 =.<|
00012ce0  73 74 61 74 75 73 3d 3e  65 63 6f 6e 65 74 5f 73  |status=>econet_s|
00012cf0  74 61 74 75 73 65 73 3e  0a 0a 54 68 69 73 20 53  |tatuses>..This S|
00012d00  57 49 20 61 62 61 6e 64  6f 6e 73 20 61 20 72 65  |WI abandons a re|
00012d10  63 65 69 76 65 20 62 6c  6f 63 6b 2e 20 41 6e 79  |ceive block. Any|
00012d20  20 64 61 74 61 20 77 68  69 63 68 20 77 61 73 20  | data which was |
00012d30  69 6e 20 74 72 61 6e 73  66 65 72 20 28 72 30 3d  |in transfer (r0=|
00012d40  38 20 6f 6e 20 65 78 69  74 29 20 77 69 6c 6c 20  |8 on exit) will |
00012d50  62 65 20 64 69 73 63 61  72 64 65 64 20 61 6e 64  |be discarded and|
00012d60  20 74 68 65 20 62 6c 6f  63 6b 20 63 6f 6e 74 65  | the block conte|
00012d70  6e 74 73 20 77 69 6c 6c  20 72 65 6d 61 69 6e 20  |nts will remain |
00012d80  74 68 65 20 73 61 6d 65  2e 0a 00 00 44 41 54 41  |the same....DATA|
00012d90  41 02 00 00 45 63 6f 6e  65 74 5f 57 61 69 74 46  |A...Econet_WaitF|
00012da0  6f 72 52 65 63 65 70 74  69 6f 6e 20 20 28 26 34  |orReception  (&4|
00012db0  30 30 30 34 29 0a 23 50  61 72 65 6e 74 20 45 63  |0004).#Parent Ec|
00012dc0  6f 6e 65 74 5f 0a 3d 3e  09 52 30 20 3d 09 68 61  |onet_.=>.R0 =.ha|
00012dd0  6e 64 6c 65 0a 09 52 31  20 3d 09 74 69 6d 65 6f  |ndle..R1 =.timeo|
00012de0  75 74 20 69 6e 20 63 73  0a 09 52 32 20 3d 09 30  |ut in cs..R2 =.0|
00012df0  20 69 66 20 65 73 63 61  70 65 20 73 68 6f 75 6c  | if escape shoul|
00012e00  64 20 2a 6e 6f 74 2a 20  61 62 6f 72 74 0a 0a 3c  |d *not* abort..<|
00012e10  3d 09 52 30 20 3d 09 3c  73 74 61 74 75 73 3d 3e  |=.R0 =.<status=>|
00012e20  65 63 6f 6e 65 74 5f 73  74 61 74 75 73 65 73 3e  |econet_statuses>|
00012e30  0a 09 52 31 20 3d 09 30  2c 20 6f 72 20 66 6c 61  |..R1 =.0, or fla|
00012e40  67 20 62 79 74 65 20 69  66 20 72 30 3d 39 20 6f  |g byte if r0=9 o|
00012e50  6e 20 65 78 69 74 0a 09  52 32 20 3d 09 70 6f 72  |n exit..R2 =.por|
00012e60  74 20 6e 75 6d 62 65 72  0a 09 52 33 20 3d 09 73  |t number..R3 =.s|
00012e70  74 61 74 69 6f 6e 20 6e  75 6d 62 65 72 0a 09 52  |tation number..R|
00012e80  34 20 3d 09 6e 65 74 20  6e 75 6d 62 65 72 0a 09  |4 =.net number..|
00012e90  52 35 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R5 =.pointer to |
00012ea0  64 61 74 61 20 62 75 66  66 65 72 0a 09 52 36 20  |data buffer..R6 |
00012eb0  3d 09 73 69 7a 65 20 6f  66 20 62 75 66 66 65 72  |=.size of buffer|
00012ec0  2c 20 6f 72 20 73 69 7a  65 20 6f 66 20 64 61 74  |, or size of dat|
00012ed0  61 20 72 65 63 65 69 76  65 64 20 69 66 20 72 30  |a received if r0|
00012ee0  3d 39 20 6f 6e 20 65 78  69 74 0a 0a 54 68 69 73  |=9 on exit..This|
00012ef0  20 53 57 49 20 63 68 65  63 6b 73 20 74 68 65 20  | SWI checks the |
00012f00  70 6f 72 74 20 72 65 70  65 61 74 65 64 6c 79 20  |port repeatedly |
00012f10  75 6e 74 69 6c 20 65 69  74 68 65 72 20 61 62 6f  |until either abo|
00012f20  72 74 65 64 2c 20 6f 72  20 74 68 65 20 64 61 74  |rted, or the dat|
00012f30  61 20 69 73 20 72 65 63  65 69 76 65 64 2e 20 54  |a is received. T|
00012f40  68 65 20 62 6c 6f 63 6b  20 77 69 6c 6c 20 62 65  |he block will be|
00012f50  20 61 62 61 6e 64 6f 6e  65 64 20 61 66 74 65 72  | abandoned after|
00012f60  20 69 74 20 68 61 73 20  62 65 65 6e 20 72 65 63  | it has been rec|
00012f70  65 69 76 65 64 2e 20 41  73 20 74 68 69 73 20 53  |eived. As this S|
00012f80  57 49 20 65 6e 61 62 6c  65 73 20 69 6e 74 65 72  |WI enables inter|
00012f90  75 70 74 73 20 69 74 20  73 68 6f 75 6c 64 20 6e  |upts it should n|
00012fa0  6f 74 20 62 65 20 63 61  6c 6c 65 64 20 66 72 6f  |ot be called fro|
00012fb0  6d 20 73 65 72 76 69 63  65 20 6f 72 20 65 76 65  |m service or eve|
00012fc0  6e 74 20 68 61 6e 64 6c  65 72 73 2e 0a 00 00 00  |nt handlers.....|
00012fd0  44 41 54 41 ba 00 00 00  45 63 6f 6e 65 74 5f 45  |DATA....Econet_E|
00012fe0  6e 75 6d 65 72 61 74 65  52 65 63 65 69 76 65 20  |numerateReceive |
00012ff0  20 28 26 34 30 30 30 35  29 0a 23 50 61 72 65 6e  | (&40005).#Paren|
00013000  74 20 45 63 6f 6e 65 74  5f 0a 3d 3e 09 52 30 20  |t Econet_.=>.R0 |
00013010  3d 09 69 6e 64 65 78 2c  20 31 20 66 6f 72 20 66  |=.index, 1 for f|
00013020  69 72 73 74 20 62 6c 6f  63 6b 0a 3c 3d 09 52 30  |irst block.<=.R0|
00013030  20 3d 09 68 61 6e 64 6c  65 2c 20 6f 72 20 30 20  | =.handle, or 0 |
00013040  69 66 20 6e 6f 20 6d 6f  72 65 20 62 6c 6f 63 6b  |if no more block|
00013050  73 0a 0a 54 68 69 73 20  53 57 49 20 65 6e 75 6d  |s..This SWI enum|
00013060  65 72 61 74 65 73 20 74  68 65 20 63 75 72 72 65  |erates the curre|
00013070  6e 74 6c 79 20 6f 70 65  6e 20 72 65 63 65 69 76  |ntly open receiv|
00013080  65 20 62 6c 6f 63 6b 73  2e 0a 00 00 44 41 54 41  |e blocks....DATA|
00013090  19 02 00 00 45 63 6f 6e  65 74 5f 53 74 61 72 74  |....Econet_Start|
000130a0  54 72 61 6e 73 6d 69 74  20 20 28 26 34 30 30 30  |Transmit  (&4000|
000130b0  36 29 0a 23 50 61 72 65  6e 74 20 45 63 6f 6e 65  |6).#Parent Econe|
000130c0  74 5f 0a 3d 3e 09 52 30  20 3d 09 66 6c 61 67 20  |t_.=>.R0 =.flag |
000130d0  62 79 74 65 0a 09 52 31  20 3d 09 70 6f 72 74 20  |byte..R1 =.port |
000130e0  6e 75 6d 62 65 72 0a 09  52 32 20 3d 09 73 74 61  |number..R2 =.sta|
000130f0  74 69 6f 6e 20 6e 75 6d  62 65 72 0a 09 52 33 20  |tion number..R3 |
00013100  3d 09 6e 65 74 20 6e 75  6d 62 65 72 0a 09 52 34  |=.net number..R4|
00013110  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 64 61  | =.pointer to da|
00013120  74 61 20 62 75 66 66 65  72 0a 09 52 35 20 3d 09  |ta buffer..R5 =.|
00013130  62 75 66 66 65 72 20 73  69 7a 65 0a 09 52 36 20  |buffer size..R6 |
00013140  3d 09 72 65 74 72 79 20  63 6f 75 6e 74 0a 09 52  |=.retry count..R|
00013150  37 20 3d 09 64 65 6c 61  79 20 69 6e 20 63 73 0a  |7 =.delay in cs.|
00013160  0a 3c 3d 09 52 30 20 3d  09 68 61 6e 64 6c 65 0a  |.<=.R0 =.handle.|
00013170  09 52 31 20 63 6f 72 72  75 70 74 65 64 0a 09 52  |.R1 corrupted..R|
00013180  32 20 3d 09 62 75 66 66  65 72 20 61 64 64 72 65  |2 =.buffer addre|
00013190  73 73 0a 09 52 33 20 3d  09 73 74 61 74 69 6f 6e  |ss..R3 =.station|
000131a0  20 6e 75 6d 62 65 72 0a  09 52 34 20 3d 09 6e 65  | number..R4 =.ne|
000131b0  74 20 6e 75 6d 62 65 72  2c 20 6f 72 20 30 20 69  |t number, or 0 i|
000131c0  66 20 52 33 20 6f 6e 20  65 6e 74 72 79 20 77 61  |f R3 on entry wa|
000131d0  73 20 74 68 65 20 6c 6f  63 61 6c 20 6e 65 74 0a  |s the local net.|
000131e0  0a 54 68 69 73 20 53 57  49 20 63 72 65 61 74 65  |.This SWI create|
000131f0  73 20 61 20 63 6f 6e 74  72 6f 6c 20 62 6c 6f 63  |s a control bloc|
00013200  6b 20 74 6f 20 74 72 61  6e 73 6d 69 74 20 64 61  |k to transmit da|
00013210  74 61 20 6f 6e 20 61 6e  20 65 63 6f 6e 65 74 20  |ta on an econet |
00013220  70 6f 72 74 2e 20 54 68  65 20 64 61 74 61 20 62  |port. The data b|
00013230  75 66 66 65 72 20 73 68  6f 75 6c 64 20 62 65 20  |uffer should be |
00013240  69 6e 20 52 4d 41 20 6f  72 20 73 6f 6d 65 20 6f  |in RMA or some o|
00013250  74 68 65 72 20 70 65 72  6d 61 6e 65 6e 74 6c 79  |ther permanently|
00013260  20 61 76 61 69 6c 61 62  6c 65 20 61 72 65 61 20  | available area |
00013270  6f 66 20 6d 65 6d 6f 72  79 2c 20 64 75 65 20 74  |of memory, due t|
00013280  6f 20 74 68 65 20 77 61  79 20 69 6e 20 77 68 69  |o the way in whi|
00013290  63 68 20 74 68 65 20 64  61 74 61 20 69 73 20 72  |ch the data is r|
000132a0  65 61 64 2e 0a 00 00 00  44 41 54 41 d4 00 00 00  |ead.....DATA....|
000132b0  45 63 6f 6e 65 74 5f 50  6f 6c 6c 54 72 61 6e 73  |Econet_PollTrans|
000132c0  6d 69 74 20 20 28 26 34  30 30 30 37 29 0a 23 50  |mit  (&40007).#P|
000132d0  61 72 65 6e 74 20 45 63  6f 6e 65 74 5f 0a 3d 3e  |arent Econet_.=>|
000132e0  09 52 30 20 3d 09 68 61  6e 64 6c 65 0a 3c 3d 09  |.R0 =.handle.<=.|
000132f0  52 30 20 3d 09 3c 73 74  61 74 75 73 3d 3e 65 63  |R0 =.<status=>ec|
00013300  6f 6e 65 74 5f 73 74 61  74 75 73 65 73 3e 0a 0a  |onet_statuses>..|
00013310  54 68 69 73 20 53 57 49  20 72 65 61 64 73 20 74  |This SWI reads t|
00013320  68 65 20 73 74 61 74 75  73 20 6f 66 20 61 20 74  |he status of a t|
00013330  72 61 6e 73 6d 69 74 20  62 6c 6f 63 6b 2e 0a 0a  |ransmit block...|
00013340  54 68 69 73 20 69 73 20  74 68 65 20 74 72 61 6e  |This is the tran|
00013350  73 6d 69 74 20 63 6f 75  6e 74 65 72 70 61 72 74  |smit counterpart|
00013360  20 6f 66 20 3c 45 63 6f  6e 65 74 5f 45 78 61 6d  | of <Econet_Exam|
00013370  69 6e 65 52 65 63 65 69  76 65 3e 2e 44 41 54 41  |ineReceive>.DATA|
00013380  8f 00 00 00 45 63 6f 6e  65 74 5f 41 62 61 6e 64  |....Econet_Aband|
00013390  6f 6e 54 72 61 6e 73 6d  69 74 20 20 28 26 34 30  |onTransmit  (&40|
000133a0  30 30 38 29 0a 23 50 61  72 65 6e 74 20 45 63 6f  |008).#Parent Eco|
000133b0  6e 65 74 5f 0a 3d 3e 09  52 30 20 3d 09 68 61 6e  |net_.=>.R0 =.han|
000133c0  64 6c 65 0a 3c 3d 09 52  30 20 3d 09 3c 73 74 61  |dle.<=.R0 =.<sta|
000133d0  74 75 73 3d 3e 65 63 6f  6e 65 74 5f 73 74 61 74  |tus=>econet_stat|
000133e0  75 73 65 73 3e 0a 0a 54  68 69 73 20 53 57 49 20  |uses>..This SWI |
000133f0  61 62 61 6e 64 6f 6e 73  20 61 20 74 72 61 6e 73  |abandons a trans|
00013400  6d 69 74 20 62 6c 6f 63  6b 2e 0a 00 44 41 54 41  |mit block...DATA|
00013410  93 02 00 00 45 63 6f 6e  65 74 5f 44 6f 54 72 61  |....Econet_DoTra|
00013420  6e 73 6d 69 74 20 20 28  26 34 30 30 30 39 29 0a  |nsmit  (&40009).|
00013430  23 50 61 72 65 6e 74 20  45 63 6f 6e 65 74 5f 0a  |#Parent Econet_.|
00013440  3d 3e 09 52 30 20 3d 09  66 6c 61 67 20 62 79 74  |=>.R0 =.flag byt|
00013450  65 0a 09 52 31 20 3d 09  70 6f 72 74 20 6e 75 6d  |e..R1 =.port num|
00013460  62 65 72 0a 09 52 32 20  3d 09 73 74 61 74 69 6f  |ber..R2 =.statio|
00013470  6e 20 6e 75 6d 62 65 72  0a 09 52 33 20 3d 09 6e  |n number..R3 =.n|
00013480  65 74 20 6e 75 6d 62 65  72 0a 09 52 34 20 3d 09  |et number..R4 =.|
00013490  70 6f 69 6e 74 65 72 20  74 6f 20 64 61 74 61 20  |pointer to data |
000134a0  62 75 66 66 65 72 0a 09  52 35 20 3d 09 62 75 66  |buffer..R5 =.buf|
000134b0  66 65 72 20 73 69 7a 65  0a 09 52 36 20 3d 09 72  |fer size..R6 =.r|
000134c0  65 74 72 79 20 63 6f 75  6e 74 0a 09 52 37 20 3d  |etry count..R7 =|
000134d0  09 64 65 6c 61 79 20 69  6e 20 63 73 0a 0a 3c 3d  |.delay in cs..<=|
000134e0  09 52 30 20 3d 09 3c 73  74 61 74 75 73 3d 3e 65  |.R0 =.<status=>e|
000134f0  63 6f 6e 65 74 5f 73 74  61 74 75 73 65 73 3e 0a  |conet_statuses>.|
00013500  09 52 31 20 63 6f 72 72  75 70 74 65 64 0a 09 52  |.R1 corrupted..R|
00013510  32 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 62  |2 =.pointer to b|
00013520  75 66 66 65 72 0a 09 52  33 20 3d 09 73 74 61 74  |uffer..R3 =.stat|
00013530  69 6f 6e 20 6e 75 6d 62  65 72 0a 09 52 34 20 3d  |ion number..R4 =|
00013540  09 6e 65 74 20 6e 75 6d  62 65 72 2c 20 6f 72 20  |.net number, or |
00013550  30 20 69 66 20 52 33 20  6f 6e 20 65 6e 74 72 79  |0 if R3 on entry|
00013560  20 77 61 73 20 74 68 65  20 6c 6f 63 61 6c 20 6e  | was the local n|
00013570  65 74 0a 0a 54 68 69 73  20 53 57 49 20 63 72 65  |et..This SWI cre|
00013580  61 74 65 73 20 61 20 62  6c 6f 63 6b 20 61 6e 64  |ates a block and|
00013590  20 72 65 70 65 61 74 65  64 6c 79 20 70 6f 6c 6c  | repeatedly poll|
000135a0  73 20 75 6e 74 69 6c 20  74 68 65 20 64 61 74 61  |s until the data|
000135b0  20 69 73 20 72 65 63 65  69 76 65 64 2c 20 6f 72  | is received, or|
000135c0  20 61 6e 20 65 72 72 6f  72 20 61 74 20 77 68 69  | an error at whi|
000135d0  63 68 20 70 6f 69 6e 74  20 74 68 65 20 62 6c 6f  |ch point the blo|
000135e0  63 6b 20 69 73 20 61 62  61 6e 64 6f 6e 65 64 2e  |ck is abandoned.|
000135f0  20 41 73 20 74 68 69 73  20 53 57 49 20 65 6e 61  | As this SWI ena|
00013600  62 6c 65 73 20 69 6e 74  65 72 75 70 74 73 20 69  |bles interupts i|
00013610  74 20 73 68 6f 75 6c 64  20 6e 6f 74 20 62 65 20  |t should not be |
00013620  63 61 6c 6c 65 64 20 66  72 6f 6d 20 73 65 72 76  |called from serv|
00013630  69 63 65 20 6f 72 20 65  76 65 6e 74 20 68 61 6e  |ice or event han|
00013640  64 6c 65 72 73 2e 20 49  74 20 77 69 6c 6c 20 6c  |dlers. It will l|
00013650  6f 6f 70 20 69 6e 20 55  53 52 20 6d 6f 64 65 20  |oop in USR mode |
00013660  77 69 74 68 20 49 52 51  73 20 65 6e 61 62 6c 65  |with IRQs enable|
00013670  64 20 2d 20 61 20 73 69  64 65 20 65 66 66 65 63  |d - a side effec|
00013680  74 20 69 73 20 74 68 61  74 20 63 61 6c 6c 62 61  |t is that callba|
00013690  63 6b 73 20 6d 61 79 20  6f 63 63 75 72 2e 0a 00  |cks may occur...|
000136a0  44 41 54 41 e1 00 00 00  45 63 6f 6e 65 74 5f 52  |DATA....Econet_R|
000136b0  65 61 64 4c 6f 63 61 6c  53 74 61 74 69 6f 6e 41  |eadLocalStationA|
000136c0  6e 64 4e 65 74 20 20 28  26 34 30 30 30 41 29 0a  |ndNet  (&4000A).|
000136d0  23 50 61 72 65 6e 74 20  45 63 6f 6e 65 74 5f 0a  |#Parent Econet_.|
000136e0  3c 3d 09 52 30 20 3d 09  73 74 61 74 69 6f 6e 20  |<=.R0 =.station |
000136f0  6e 75 6d 62 65 72 0a 09  52 31 20 3d 09 6e 65 74  |number..R1 =.net|
00013700  20 6e 75 6d 62 65 72 0a  0a 54 68 69 73 20 63 61  | number..This ca|
00013710  6c 6c 20 72 65 74 75 72  6e 73 20 74 68 65 20 63  |ll returns the c|
00013720  6f 6d 70 75 74 65 72 73  20 73 74 61 74 69 6f 6e  |omputers station|
00013730  20 6e 75 6d 62 65 72 20  61 6e 64 20 6e 65 74 77  | number and netw|
00013740  6f 72 6b 2e 20 54 68 65  20 6e 65 74 20 6e 75 6d  |ork. The net num|
00013750  62 65 72 20 77 69 6c 6c  20 62 65 20 7a 65 72 6f  |ber will be zero|
00013760  20 69 66 20 74 68 65 72  65 20 61 72 65 20 6e 6f  | if there are no|
00013770  20 62 72 69 64 67 65 73  20 70 72 65 73 65 6e 74  | bridges present|
00013780  2e 00 00 00 44 41 54 41  31 02 00 00 45 63 6f 6e  |....DATA1...Econ|
00013790  65 74 5f 43 6f 6e 76 65  72 74 53 74 61 74 75 73  |et_ConvertStatus|
000137a0  54 6f 53 74 72 69 6e 67  20 20 28 26 34 30 30 30  |ToString  (&4000|
000137b0  42 29 0a 23 50 61 72 65  6e 74 20 45 63 6f 6e 65  |B).#Parent Econe|
000137c0  74 5f 0a 3d 3e 09 52 30  20 3d 09 3c 73 74 61 74  |t_.=>.R0 =.<stat|
000137d0  75 73 3d 3e 45 63 6f 6e  65 74 5f 73 74 61 74 75  |us=>Econet_statu|
000137e0  73 65 73 3e 0a 23 20 50  52 4d 20 32 2d 36 36 34  |ses>.# PRM 2-664|
000137f0  20 73 61 79 73 20 52 30  20 68 61 73 20 72 61 6e  | says R0 has ran|
00013800  67 65 20 30 2d 31 34 20  28 6e 6f 74 20 31 31 2c  |ge 0-14 (not 11,|
00013810  20 6e 6f 74 20 31 32 29  0a 09 52 31 20 3d 09 70  | not 12)..R1 =.p|
00013820  6f 69 6e 74 65 72 20 74  6f 20 62 75 66 66 65 72  |ointer to buffer|
00013830  20 66 6f 72 20 73 74 72  69 6e 67 0a 09 52 32 20  | for string..R2 |
00013840  3d 09 62 75 66 66 65 72  20 73 69 7a 65 0a 09 52  |=.buffer size..R|
00013850  33 20 3d 09 73 74 61 74  69 6f 6e 20 6e 75 6d 62  |3 =.station numb|
00013860  65 72 0a 09 52 34 20 3d  09 6e 65 74 20 6e 75 6d  |er..R4 =.net num|
00013870  62 65 72 0a 0a 3c 3d 09  52 30 20 3d 09 70 6f 69  |ber..<=.R0 =.poi|
00013880  6e 74 65 72 20 74 6f 20  62 75 66 66 65 72 0a 09  |nter to buffer..|
00013890  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
000138a0  65 6e 64 20 61 64 64 72  65 73 73 20 69 6e 20 62  |end address in b|
000138b0  75 66 66 65 72 0a 09 52  32 20 3d 09 73 70 61 63  |uffer..R2 =.spac|
000138c0  65 20 69 6e 20 62 75 66  66 65 72 0a 0a 54 68 69  |e in buffer..Thi|
000138d0  73 20 53 57 49 20 63 6f  6e 76 65 72 74 73 20 61  |s SWI converts a|
000138e0  20 73 74 61 74 75 73 20  72 65 73 75 6c 74 20 66  | status result f|
000138f0  72 6f 6d 20 61 20 70 72  69 6f 72 20 45 63 6f 6e  |rom a prior Econ|
00013900  65 74 20 63 61 6c 6c 20  74 6f 20 61 20 73 74 72  |et call to a str|
00013910  69 6e 67 2e 20 49 66 20  74 68 65 20 73 74 61 74  |ing. If the stat|
00013920  69 6f 6e 20 6f 72 20 6e  65 74 20 69 73 20 69 6e  |ion or net is in|
00013930  76 61 6c 69 64 20 74 68  65 6e 20 73 74 61 74 69  |valid then stati|
00013940  6f 6e 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 69  |on information i|
00013950  73 20 6e 6f 74 20 67 69  76 65 6e 2e 20 49 66 20  |s not given. If |
00013960  52 30 20 69 73 20 6f 75  74 20 6f 66 20 72 61 6e  |R0 is out of ran|
00013970  67 65 20 28 50 52 4d 20  73 61 79 73 20 30 2d 31  |ge (PRM says 0-1|
00013980  34 29 20 74 68 69 73 20  63 61 6c 6c 20 77 69 6c  |4) this call wil|
00013990  6c 20 44 61 74 61 20 41  62 6f 72 74 2f 41 64 64  |l Data Abort/Add|
000139a0  72 65 73 73 20 65 78 63  65 70 74 69 6f 6e 2e 20  |ress exception. |
000139b0  44 27 6f 68 2e 00 00 00  44 41 54 41 d7 01 00 00  |D'oh....DATA....|
000139c0  45 63 6f 6e 65 74 5f 43  6f 6e 76 65 72 74 53 74  |Econet_ConvertSt|
000139d0  61 74 75 73 54 6f 45 72  72 6f 72 20 28 26 34 30  |atusToError (&40|
000139e0  30 30 43 29 0a 23 50 61  72 65 6e 74 20 45 63 6f  |00C).#Parent Eco|
000139f0  6e 65 74 5f 0a 3d 3e 09  52 30 20 3d 09 3c 73 74  |net_.=>.R0 =.<st|
00013a00  61 74 75 73 3d 3e 45 63  6f 6e 65 74 5f 73 74 61  |atus=>Econet_sta|
00013a10  74 75 73 65 73 3e 0a 09  52 31 20 3d 09 70 6f 69  |tuses>..R1 =.poi|
00013a20  6e 74 65 72 20 74 6f 20  65 72 72 6f 72 20 62 75  |nter to error bu|
00013a30  66 66 65 72 0a 09 52 32  20 3d 09 62 75 66 66 65  |ffer..R2 =.buffe|
00013a40  72 20 73 69 7a 65 0a 09  52 33 20 3d 09 73 74 61  |r size..R3 =.sta|
00013a50  74 69 6f 6e 20 6e 75 6d  62 65 72 0a 09 52 34 20  |tion number..R4 |
00013a60  3d 09 6e 65 74 20 6e 75  6d 62 65 72 0a 0a 3c 3d  |=.net number..<=|
00013a70  09 52 30 20 3d 09 3c 62  75 66 66 65 72 3d 3e 73  |.R0 =.<buffer=>s|
00013a80  77 69 5f 65 72 72 6f 72  62 6c 6f 63 6b 3e 0a 09  |wi_errorblock>..|
00013a90  56 20 73 65 74 0a 0a 54  68 69 73 20 53 57 49 20  |V set..This SWI |
00013aa0  63 6f 6e 76 65 72 74 73  20 61 20 73 74 61 74 75  |converts a statu|
00013ab0  73 20 72 65 73 75 6c 74  20 66 72 6f 6d 20 61 20  |s result from a |
00013ac0  70 72 69 6f 72 20 45 63  6f 6e 65 74 20 63 61 6c  |prior Econet cal|
00013ad0  6c 20 74 6f 20 61 6e 20  65 72 72 6f 72 20 62 6c  |l to an error bl|
00013ae0  6f 63 6b 20 61 6e 64 20  74 68 65 6e 20 67 65 6e  |ock and then gen|
00013af0  65 72 61 74 65 73 20 61  6e 20 65 72 72 6f 72 2e  |erates an error.|
00013b00  20 54 6f 20 70 72 65 76  65 6e 74 20 74 68 65 20  | To prevent the |
00013b10  65 72 72 6f 72 2c 20 63  61 6c 6c 20 74 68 65 20  |error, call the |
00013b20  58 20 76 65 72 73 69 6f  6e 20 6f 66 20 74 68 69  |X version of thi|
00013b30  73 20 53 57 49 20 61 6e  64 20 72 65 61 64 20 52  |s SWI and read R|
00013b40  30 2c 20 6f 72 20 73 65  74 20 74 68 65 20 62 75  |0, or set the bu|
00013b50  66 66 65 72 20 61 64 64  72 65 73 73 20 74 6f 20  |ffer address to |
00013b60  30 20 77 68 69 63 68 20  77 69 6c 6c 20 6c 65 61  |0 which will lea|
00013b70  76 65 20 74 68 65 20 73  74 72 69 6e 67 20 69 6e  |ve the string in|
00013b80  20 74 68 65 20 77 6f 72  6b 73 70 61 63 65 2e 00  | the workspace..|
00013b90  44 41 54 41 17 01 00 00  45 63 6f 6e 65 74 20 70  |DATA....Econet p|
00013ba0  72 6f 74 65 63 74 69 6f  6e 20 62 69 74 73 0a 42  |rotection bits.B|
00013bb0  69 74 09 44 69 73 61 62  6c 65 64 20 69 66 20 73  |it.Disabled if s|
00013bc0  65 74 0a 23 4c 69 6e 65  0a 30 09 50 65 65 6b 0a  |et.#Line.0.Peek.|
00013bd0  31 09 50 6f 6b 65 0a 32  09 52 65 6d 6f 74 65 20  |1.Poke.2.Remote |
00013be0  4a 53 52 20 28 42 4c 29  0a 33 09 55 73 65 72 20  |JSR (BL).3.User |
00013bf0  70 72 6f 63 65 64 75 72  65 20 63 61 6c 6c 0a 34  |procedure call.4|
00013c00  09 4f 53 20 70 72 6f 63  65 64 75 72 65 20 63 61  |.OS procedure ca|
00013c10  6c 6c 0a 35 09 48 61 6c  74 0a 36 09 43 6f 6e 74  |ll.5.Halt.6.Cont|
00013c20  69 6e 75 65 20 28 30 20  6f 6e 20 52 49 53 43 20  |inue (0 on RISC |
00013c30  4f 53 29 0a 37 09 4d 61  63 68 69 6e 65 20 70 65  |OS).7.Machine pe|
00013c40  65 6b 20 28 30 20 6f 6e  20 52 49 53 43 20 4f 53  |ek (0 on RISC OS|
00013c50  29 0a 38 09 47 65 74 20  72 65 67 69 73 74 65 72  |).8.Get register|
00013c60  73 0a 39 2d 33 30 09 72  65 73 65 72 76 65 64 20  |s.9-30.reserved |
00013c70  28 30 29 0a 33 31 09 57  72 69 74 65 20 76 61 6c  |(0).31.Write val|
00013c80  75 65 20 74 6f 20 43 4d  4f 53 20 28 69 6e 20 3c  |ue to CMOS (in <|
00013c90  45 63 6f 6e 65 74 5f 53  65 74 50 72 6f 74 65 63  |Econet_SetProtec|
00013ca0  74 69 6f 6e 3e 29 0a 00  44 41 54 41 f2 00 00 00  |tion>)..DATA....|
00013cb0  45 63 6f 6e 65 74 5f 52  65 61 64 50 72 6f 74 65  |Econet_ReadProte|
00013cc0  63 74 69 6f 6e 20 20 28  26 34 30 30 30 44 29 0a  |ction  (&4000D).|
00013cd0  23 50 61 72 65 6e 74 20  45 63 6f 6e 65 74 5f 0a  |#Parent Econet_.|
00013ce0  3c 3d 09 52 30 20 3d 09  63 75 72 72 65 6e 74 20  |<=.R0 =.current |
00013cf0  3c 70 72 6f 74 65 63 74  69 6f 6e 3d 3e 45 63 6f  |<protection=>Eco|
00013d00  6e 65 74 5f 70 72 6f 74  65 63 74 73 3e 0a 0a 54  |net_protects>..T|
00013d10  68 69 73 20 53 57 49 20  69 73 20 75 73 65 64 20  |his SWI is used |
00013d20  74 6f 20 72 65 61 64 20  74 68 65 20 63 75 72 72  |to read the curr|
00013d30  65 6e 74 20 70 72 6f 74  65 63 74 69 6f 6e 20 77  |ent protection w|
00013d40  6f 72 64 20 66 6f 72 20  69 6d 6d 65 64 69 61 74  |ord for immediat|
00013d50  65 20 6f 70 65 72 61 74  69 6f 6e 73 2e 0a 0a 59  |e operations...Y|
00013d60  6f 75 20 73 68 6f 75 6c  64 20 75 73 65 20 3c 45  |ou should use <E|
00013d70  63 6f 6e 65 74 5f 53 65  74 50 72 6f 74 65 63 74  |conet_SetProtect|
00013d80  69 6f 6e 3e 20 69 6e 73  74 65 61 64 20 6f 66 20  |ion> instead of |
00013d90  74 68 69 73 20 63 61 6c  6c 2e 00 00 44 41 54 41  |this call...DATA|
00013da0  11 01 00 00 45 63 6f 6e  65 74 5f 53 65 74 50 72  |....Econet_SetPr|
00013db0  6f 74 65 63 74 69 6f 6e  20 20 28 26 34 30 30 30  |otection  (&4000|
00013dc0  45 29 0a 23 50 61 72 65  6e 74 20 45 63 6f 6e 65  |E).#Parent Econe|
00013dd0  74 5f 0a 3d 3e 09 52 30  20 3d 09 45 4f 52 20 6d  |t_.=>.R0 =.EOR m|
00013de0  61 73 6b 20 77 6f 72 64  0a 09 52 31 20 3d 09 41  |ask word..R1 =.A|
00013df0  4e 44 20 6d 61 73 6b 20  77 6f 72 64 0a 3c 3d 09  |ND mask word.<=.|
00013e00  52 30 20 3d 09 6f 6c 64  20 76 61 6c 75 65 0a 0a  |R0 =.old value..|
00013e10  54 68 69 73 20 53 57 49  20 69 73 20 75 73 65 64  |This SWI is used|
00013e20  20 74 6f 20 6d 6f 64 69  66 79 20 6f 72 20 72 65  | to modify or re|
00013e30  61 64 20 74 68 65 20 63  75 72 72 65 6e 74 20 3c  |ad the current <|
00013e40  70 72 6f 74 65 63 74 69  6f 6e 20 77 6f 72 64 3d  |protection word=|
00013e50  3e 45 63 6f 6e 65 74 5f  70 72 6f 74 65 63 74 73  |>Econet_protects|
00013e60  3e 20 66 6f 72 20 69 6d  6d 65 64 69 61 74 65 20  |> for immediate |
00013e70  6f 70 65 72 61 74 69 6f  6e 73 2e 0a 0a 59 6f 75  |operations...You|
00013e80  20 73 68 6f 75 6c 64 20  75 73 65 20 52 30 3d 30  | should use R0=0|
00013e90  2c 20 61 6e 64 20 52 31  3d 2d 31 20 74 6f 20 72  |, and R1=-1 to r|
00013ea0  65 61 64 20 74 68 65 20  77 6f 72 64 2e 00 00 00  |ead the word....|
00013eb0  44 41 54 41 b8 00 00 00  45 63 6f 6e 65 74 5f 50  |DATA....Econet_P|
00013ec0  72 69 6e 74 42 61 6e 6e  65 72 20 20 28 26 34 30  |rintBanner  (&40|
00013ed0  30 31 30 29 0a 23 50 61  72 65 6e 74 20 45 63 6f  |010).#Parent Eco|
00013ee0  6e 65 74 5f 0a 54 68 69  73 20 53 57 49 20 64 69  |net_.This SWI di|
00013ef0  73 70 6c 61 79 73 20 74  68 65 20 65 63 6f 6e 65  |splays the econe|
00013f00  74 20 62 61 6e 6e 65 72  2e 20 54 68 69 73 20 69  |t banner. This i|
00013f10  73 20 75 73 75 61 6c 6c  79 20 22 41 63 6f 72 6e  |s usually "Acorn|
00013f20  20 45 63 6f 6e 65 74 22  2c 20 62 75 74 20 63 6f  | Econet", but co|
00013f30  75 6c 64 20 62 65 20 22  41 63 6f 72 6e 20 45 63  |uld be "Acorn Ec|
00013f40  6f 6e 65 74 2c 20 6e 6f  20 63 6c 6f 63 6b 22 20  |onet, no clock" |
00013f50  69 66 20 6e 6f 20 63 6c  6f 63 6b 20 69 73 20 72  |if no clock is r|
00013f60  75 6e 6e 69 6e 67 2e 0a  44 41 54 41 80 01 00 00  |unning..DATA....|
00013f70  45 63 6f 6e 65 74 5f 52  65 61 64 54 72 61 6e 73  |Econet_ReadTrans|
00013f80  70 6f 72 74 54 79 70 65  20 20 28 26 34 30 30 31  |portType  (&4001|
00013f90  31 29 0a 23 50 61 72 65  6e 74 20 45 63 6f 6e 65  |1).#Parent Econe|
00013fa0  74 5f 0a 3d 3e 09 52 30  20 3d 09 73 74 61 74 69  |t_.=>.R0 =.stati|
00013fb0  6f 6e 20 6e 75 6d 62 65  72 0a 09 52 31 20 3d 09  |on number..R1 =.|
00013fc0  6e 65 74 20 6e 75 6d 62  65 72 0a 09 52 32 20 3d  |net number..R2 =|
00013fd0  09 32 20 28 77 68 79 20  3f 29 0a 09 0a 3c 3d 09  |.2 (why ?)...<=.|
00013fe0  52 32 20 3d 09 3c 74 72  61 6e 73 70 6f 72 74 20  |R2 =.<transport |
00013ff0  74 79 70 65 3d 3e 2e 74  72 61 6e 73 70 6f 72 74  |type=>.transport|
00014000  73 3e 0a 0a 54 68 69 73  20 53 57 49 20 72 65 74  |s>..This SWI ret|
00014010  75 72 6e 73 20 74 68 65  20 61 63 74 75 61 6c 20  |urns the actual |
00014020  66 6f 72 6d 20 69 6e 20  77 68 69 63 68 20 74 68  |form in which th|
00014030  65 20 64 61 74 61 20 77  69 6c 6c 20 62 65 20 73  |e data will be s|
00014040  65 6e 74 20 73 6f 20 74  68 61 74 20 74 68 65 20  |ent so that the |
00014050  74 72 61 6e 73 6d 69 73  73 69 6f 6e 20 74 79 70  |transmission typ|
00014060  65 20 75 73 65 64 20 63  61 6e 20 62 65 20 63 68  |e used can be ch|
00014070  61 6e 67 65 64 20 61 63  63 6f 72 64 69 6e 67 6c  |anged accordingl|
00014080  79 2e 0a 23 53 75 62 70  61 67 65 20 74 72 61 6e  |y..#Subpage tran|
00014090  73 70 6f 72 74 73 0a 45  63 6f 6e 65 74 20 74 72  |sports.Econet tr|
000140a0  61 6e 73 70 6f 72 74 20  74 79 70 65 73 0a 54 79  |ansport types.Ty|
000140b0  70 65 09 4d 65 61 6e 69  6e 67 0a 23 4c 69 6e 65  |pe.Meaning.#Line|
000140c0  0a 30 09 4e 6f 74 20 6b  6e 6f 77 6e 0a 31 09 49  |.0.Not known.1.I|
000140d0  6e 74 65 72 6e 65 74 0a  32 09 45 63 6f 6e 65 74  |nternet.2.Econet|
000140e0  0a 33 09 4e 65 78 75 73  44 41 54 41 8d 00 00 00  |.3.NexusDATA....|
000140f0  45 63 6f 6e 65 74 5f 52  65 6c 65 61 73 65 50 6f  |Econet_ReleasePo|
00014100  72 74 20 20 28 26 34 30  30 31 32 29 0a 23 50 61  |rt  (&40012).#Pa|
00014110  72 65 6e 74 20 45 63 6f  6e 65 74 5f 0a 3d 3e 09  |rent Econet_.=>.|
00014120  52 30 20 3d 09 70 6f 72  74 20 6e 75 6d 62 65 72  |R0 =.port number|
00014130  0a 0a 54 68 69 73 20 53  57 49 20 72 65 6c 65 61  |..This SWI relea|
00014140  73 65 73 20 61 20 70 6f  72 74 20 70 72 65 76 69  |ses a port previ|
00014150  6f 75 73 6c 79 20 63 6c  61 69 6d 65 64 20 62 79  |ously claimed by|
00014160  20 3c 45 63 6f 6e 65 74  5f 43 6c 61 69 6d 50 6f  | <Econet_ClaimPo|
00014170  72 74 3e 2e 0a 00 00 00  44 41 54 41 f9 00 00 00  |rt>.....DATA....|
00014180  45 63 6f 6e 65 74 5f 41  6c 6c 6f 63 61 74 65 50  |Econet_AllocateP|
00014190  6f 72 74 20 20 28 26 34  30 30 31 33 29 0a 23 50  |ort  (&40013).#P|
000141a0  61 72 65 6e 74 20 45 63  6f 6e 65 74 5f 0a 3c 3d  |arent Econet_.<=|
000141b0  09 52 30 20 3d 09 70 6f  72 74 20 6e 75 6d 62 65  |.R0 =.port numbe|
000141c0  72 0a 0a 54 68 69 73 20  53 57 49 20 61 73 6b 73  |r..This SWI asks|
000141d0  20 74 68 65 20 73 6f 66  74 77 61 72 65 20 66 6f  | the software fo|
000141e0  72 20 61 20 75 6e 69 71  75 65 20 70 6f 72 74 20  |r a unique port |
000141f0  6e 75 6d 62 65 72 20 77  68 69 63 68 20 68 61 73  |number which has|
00014200  20 6e 6f 74 20 62 65 65  6e 20 63 6c 61 69 6d 65  | not been claime|
00014210  64 20 6f 72 20 61 6c 6c  6f 63 61 74 65 64 2e 20  |d or allocated. |
00014220  57 68 65 6e 20 79 6f 75  20 68 61 76 65 20 66 69  |When you have fi|
00014230  6e 69 73 68 65 64 20 77  69 74 68 20 74 68 65 20  |nished with the |
00014240  70 6f 72 74 2c 20 75 73  65 20 3c 45 63 6f 6e 65  |port, use <Econe|
00014250  74 5f 44 65 41 6c 6c 6f  63 61 74 65 50 6f 72 74  |t_DeAllocatePort|
00014260  3e 20 74 6f 20 72 65 6c  65 61 73 65 20 69 74 2e  |> to release it.|
00014270  0a 00 00 00 44 41 54 41  96 00 00 00 45 63 6f 6e  |....DATA....Econ|
00014280  65 74 5f 44 65 41 6c 6c  6f 63 61 74 65 50 6f 72  |et_DeAllocatePor|
00014290  74 20 20 28 26 34 30 30  31 34 29 0a 23 50 61 72  |t  (&40014).#Par|
000142a0  65 6e 74 20 45 63 6f 6e  65 74 5f 0a 3d 3e 09 52  |ent Econet_.=>.R|
000142b0  30 20 3d 09 70 6f 72 74  20 6e 75 6d 62 65 72 0a  |0 =.port number.|
000142c0  0a 54 68 69 73 20 53 57  49 20 72 65 6c 65 61 73  |.This SWI releas|
000142d0  65 73 20 61 20 70 6f 72  74 20 70 72 65 76 69 6f  |es a port previo|
000142e0  75 73 6c 79 20 63 6c 61  69 6d 65 64 20 75 73 69  |usly claimed usi|
000142f0  6e 67 20 3c 45 63 6f 6e  65 74 5f 41 6c 6c 6f 63  |ng <Econet_Alloc|
00014300  61 74 65 50 6f 72 74 3e  2e 0a 00 00 44 41 54 41  |atePort>....DATA|
00014310  be 00 00 00 45 63 6f 6e  65 74 5f 43 6c 61 69 6d  |....Econet_Claim|
00014320  50 6f 72 74 20 20 28 26  34 30 30 31 35 29 0a 23  |Port  (&40015).#|
00014330  50 61 72 65 6e 74 20 45  63 6f 6e 65 74 5f 0a 3d  |Parent Econet_.=|
00014340  3e 09 52 30 20 3d 09 70  6f 72 74 20 6e 75 6d 62  |>.R0 =.port numb|
00014350  65 72 0a 0a 54 68 69 73  20 53 57 49 20 63 6c 61  |er..This SWI cla|
00014360  69 6d 73 20 61 20 73 70  65 63 69 66 69 63 20 70  |ims a specific p|
00014370  6f 72 74 20 6e 75 6d 62  65 72 2e 20 57 68 65 6e  |ort number. When|
00014380  20 79 6f 75 20 68 61 76  65 20 66 69 6e 69 73 68  | you have finish|
00014390  65 64 20 77 69 74 68 20  74 68 65 20 70 6f 72 74  |ed with the port|
000143a0  2c 20 75 73 65 20 3c 45  63 6f 6e 65 74 5f 52 65  |, use <Econet_Re|
000143b0  6c 65 61 73 65 50 6f 72  74 3e 20 74 6f 20 72 65  |leasePort> to re|
000143c0  6c 65 61 73 65 20 69 74  2e 0a 00 00 44 41 54 41  |lease it....DATA|
000143d0  50 02 00 00 45 63 6f 6e  65 74 5f 53 74 61 72 74  |P...Econet_Start|
000143e0  49 6d 6d 65 64 69 61 74  65 20 20 28 26 34 30 30  |Immediate  (&400|
000143f0  31 36 29 0a 23 50 61 72  65 6e 74 20 45 63 6f 6e  |16).#Parent Econ|
00014400  65 74 5f 0a 3d 3e 09 52  30 20 3d 09 3c 6f 70 65  |et_.=>.R0 =.<ope|
00014410  72 61 74 69 6f 6e 20 74  79 70 65 3d 3e 45 63 6f  |ration type=>Eco|
00014420  6e 65 74 5f 69 6d 6d 65  64 69 61 74 65 3e 0a 09  |net_immediate>..|
00014430  52 31 20 3d 09 72 65 6d  6f 74 65 20 61 64 64 72  |R1 =.remote addr|
00014440  65 73 73 2c 20 6f 72 20  70 72 6f 63 65 64 75 72  |ess, or procedur|
00014450  65 20 6e 75 6d 62 65 72  0a 09 52 32 20 3d 09 73  |e number..R2 =.s|
00014460  74 61 74 69 6f 6e 20 6e  75 6d 62 65 72 0a 09 52  |tation number..R|
00014470  33 20 3d 09 6e 65 74 20  6e 75 6d 62 65 72 0a 09  |3 =.net number..|
00014480  52 34 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R4 =.pointer to |
00014490  64 61 74 61 20 62 75 66  66 65 72 0a 09 52 35 20  |data buffer..R5 |
000144a0  3d 09 64 61 74 61 20 73  69 7a 65 0a 09 52 36 20  |=.data size..R6 |
000144b0  3d 09 72 65 70 65 61 74  20 63 6f 75 6e 74 0a 09  |=.repeat count..|
000144c0  52 37 20 3d 09 64 65 6c  61 79 20 69 6e 20 63 73  |R7 =.delay in cs|
000144d0  0a 0a 3c 3d 09 52 30 20  3d 09 68 61 6e 64 6c 65  |..<=.R0 =.handle|
000144e0  0a 09 52 31 20 63 6f 72  72 75 70 74 65 64 0a 09  |..R1 corrupted..|
000144f0  52 32 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R2 =.pointer to |
00014500  62 75 66 66 65 72 0a 09  52 33 20 3d 09 73 74 61  |buffer..R3 =.sta|
00014510  74 69 6f 6e 20 6e 75 6d  62 65 72 0a 09 52 34 20  |tion number..R4 |
00014520  3d 09 6e 65 74 20 6e 75  6d 62 65 72 2c 20 6f 72  |=.net number, or|
00014530  20 30 20 69 66 20 52 33  20 6f 6e 20 65 6e 74 72  | 0 if R3 on entr|
00014540  79 20 77 61 73 20 74 68  65 20 6c 6f 63 61 6c 20  |y was the local |
00014550  6e 65 74 0a 0a 54 68 69  73 20 53 57 49 20 6f 70  |net..This SWI op|
00014560  65 6e 73 20 61 20 74 72  61 6e 73 6d 69 73 73 69  |ens a transmissi|
00014570  6f 6e 20 62 6c 6f 63 6b  2c 20 61 6e 64 20 73 74  |on block, and st|
00014580  61 72 74 73 20 61 6e 20  69 6d 6d 65 64 69 61 74  |arts an immediat|
00014590  65 20 6f 70 65 72 61 74  69 6f 6e 2e 20 54 68 65  |e operation. The|
000145a0  20 64 61 74 61 20 62 75  66 66 65 72 20 73 68 6f  | data buffer sho|
000145b0  75 6c 64 20 62 65 20 69  6e 20 52 4d 41 20 6f 72  |uld be in RMA or|
000145c0  20 73 6f 6d 65 20 6f 74  68 65 72 20 70 65 72 6d  | some other perm|
000145d0  61 6e 65 6e 74 6c 79 20  61 76 61 69 6c 61 62 6c  |anently availabl|
000145e0  65 20 61 72 65 61 20 6f  66 20 6d 65 6d 6f 72 79  |e area of memory|
000145f0  2c 20 64 75 65 20 74 6f  20 74 68 65 20 77 61 79  |, due to the way|
00014600  20 69 6e 20 77 68 69 63  68 20 74 68 65 20 64 61  | in which the da|
00014610  74 61 20 69 73 20 72 65  61 64 2e 0a 44 41 54 41  |ta is read..DATA|
00014620  c1 00 00 00 45 63 6f 6e  65 74 5f 45 6e 75 6d 65  |....Econet_Enume|
00014630  72 61 74 65 54 72 61 6e  73 6d 69 74 20 28 26 34  |rateTransmit (&4|
00014640  30 30 31 46 29 20 28 33  2e 35 29 0a 23 50 61 72  |001F) (3.5).#Par|
00014650  65 6e 74 20 45 63 6f 6e  65 74 5f 0a 3d 3e 09 52  |ent Econet_.=>.R|
00014660  30 20 3d 09 69 6e 64 65  78 2c 20 31 20 66 6f 72  |0 =.index, 1 for|
00014670  20 66 69 72 73 74 20 62  6c 6f 63 6b 0a 3c 3d 09  | first block.<=.|
00014680  52 30 20 3d 09 68 61 6e  64 6c 65 2c 20 6f 72 20  |R0 =.handle, or |
00014690  30 20 69 66 20 6e 6f 20  6d 6f 72 65 20 62 6c 6f  |0 if no more blo|
000146a0  63 6b 73 0a 0a 54 68 69  73 20 53 57 49 20 65 6e  |cks..This SWI en|
000146b0  75 6d 65 72 61 74 65 73  20 74 68 65 20 63 75 72  |umerates the cur|
000146c0  72 65 6e 74 6c 79 20 6f  70 65 6e 20 74 72 61 6e  |rently open tran|
000146d0  73 6d 69 74 20 62 6c 6f  63 6b 73 2e 0a 00 00 00  |smit blocks.....|
000146e0  44 41 54 41 6d 01 00 00  45 63 6f 6e 65 74 5f 41  |DATAm...Econet_A|
000146f0  62 61 6e 64 6f 6e 41 6e  64 52 65 61 64 52 65 63  |bandonAndReadRec|
00014700  65 69 76 65 20 20 28 26  34 30 30 31 38 29 0a 23  |eive  (&40018).#|
00014710  50 61 72 65 6e 74 20 45  63 6f 6e 65 74 5f 0a 3d  |Parent Econet_.=|
00014720  3e 09 52 30 20 3d 09 68  61 6e 64 6c 65 0a 3c 3d  |>.R0 =.handle.<=|
00014730  09 52 30 20 3d 09 3c 73  74 61 74 75 73 3d 3e 65  |.R0 =.<status=>e|
00014740  63 6f 6e 65 74 5f 73 74  61 74 75 73 65 73 3e 0a  |conet_statuses>.|
00014750  09 52 31 20 3d 09 30 2c  20 6f 72 20 66 6c 61 67  |.R1 =.0, or flag|
00014760  20 62 79 74 65 20 69 66  20 72 30 3d 39 20 6f 6e  | byte if r0=9 on|
00014770  20 65 78 69 74 0a 09 52  32 20 3d 09 70 6f 72 74  | exit..R2 =.port|
00014780  20 6e 75 6d 62 65 72 0a  09 52 33 20 3d 09 73 74  | number..R3 =.st|
00014790  61 74 69 6f 6e 20 6e 75  6d 62 65 72 0a 09 52 34  |ation number..R4|
000147a0  20 3d 09 6e 65 74 20 6e  75 6d 62 65 72 0a 09 52  | =.net number..R|
000147b0  35 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 64  |5 =.pointer to d|
000147c0  61 74 61 20 62 75 66 66  65 72 0a 09 52 36 20 3d  |ata buffer..R6 =|
000147d0  09 73 69 7a 65 20 6f 66  20 62 75 66 66 65 72 20  |.size of buffer |
000147e0  28 6f 72 20 73 69 7a 65  20 6f 66 20 64 61 74 61  |(or size of data|
000147f0  20 72 65 63 65 69 76 65  64 20 69 66 20 72 30 3d  | received if r0=|
00014800  39 20 6f 6e 20 65 78 69  74 29 0a 0a 54 68 69 73  |9 on exit)..This|
00014810  20 53 57 49 20 72 65 74  75 72 6e 73 20 69 6e 66  | SWI returns inf|
00014820  6f 72 6d 61 74 69 6f 6e  20 61 62 6f 75 74 20 74  |ormation about t|
00014830  68 65 20 63 6f 6e 74 72  6f 6c 20 62 6c 6f 63 6b  |he control block|
00014840  20 69 74 20 61 62 61 6e  64 6f 6e 73 2e 00 00 00  | it abandons....|
00014850  44 41 54 41 7e 02 00 00  45 63 6f 6e 65 74 5f 44  |DATA~...Econet_D|
00014860  6f 49 6d 6d 65 64 69 61  74 65 20 20 28 26 34 30  |oImmediate  (&40|
00014870  30 31 37 29 0a 23 50 61  72 65 6e 74 20 45 63 6f  |017).#Parent Eco|
00014880  6e 65 74 5f 0a 3d 3e 09  52 30 20 3d 09 3c 6f 70  |net_.=>.R0 =.<op|
00014890  65 72 61 74 69 6f 6e 20  74 79 70 65 3d 3e 45 63  |eration type=>Ec|
000148a0  6f 6e 65 74 5f 69 6d 6d  65 64 69 61 74 65 3e 0a  |onet_immediate>.|
000148b0  09 52 31 20 3d 09 72 65  6d 6f 74 65 20 61 64 64  |.R1 =.remote add|
000148c0  72 65 73 73 2c 20 6f 72  20 70 72 6f 63 65 64 75  |ress, or procedu|
000148d0  72 65 20 6e 75 6d 62 65  72 0a 09 52 32 20 3d 09  |re number..R2 =.|
000148e0  73 74 61 74 69 6f 6e 20  6e 75 6d 62 65 72 0a 09  |station number..|
000148f0  52 33 20 3d 09 6e 65 74  20 6e 75 6d 62 65 72 0a  |R3 =.net number.|
00014900  09 52 34 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R4 =.pointer to|
00014910  20 64 61 74 61 20 62 75  66 66 65 72 0a 09 52 35  | data buffer..R5|
00014920  20 3d 09 64 61 74 61 20  73 69 7a 65 0a 09 52 36  | =.data size..R6|
00014930  20 3d 09 72 65 70 65 61  74 20 63 6f 75 6e 74 0a  | =.repeat count.|
00014940  09 52 37 20 3d 09 64 65  6c 61 79 20 69 6e 20 63  |.R7 =.delay in c|
00014950  73 0a 0a 3c 3d 09 52 30  20 3d 09 68 61 6e 64 6c  |s..<=.R0 =.handl|
00014960  65 0a 09 52 31 20 63 6f  72 72 75 70 74 65 64 0a  |e..R1 corrupted.|
00014970  09 52 32 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R2 =.pointer to|
00014980  20 62 75 66 66 65 72 0a  09 52 33 20 3d 09 73 74  | buffer..R3 =.st|
00014990  61 74 69 6f 6e 20 6e 75  6d 62 65 72 0a 09 52 34  |ation number..R4|
000149a0  20 3d 09 6e 65 74 20 6e  75 6d 62 65 72 20 28 6f  | =.net number (o|
000149b0  72 20 30 20 69 66 20 52  33 20 6f 6e 20 65 6e 74  |r 0 if R3 on ent|
000149c0  72 79 20 77 61 73 20 74  68 65 20 6c 6f 63 61 6c  |ry was the local|
000149d0  20 6e 65 74 29 0a 0a 54  68 69 73 20 53 57 49 20  | net)..This SWI |
000149e0  6f 70 65 6e 73 20 61 20  74 72 61 6e 73 6d 69 73  |opens a transmis|
000149f0  73 69 6f 6e 20 62 6c 6f  63 6b 20 61 6e 64 20 72  |sion block and r|
00014a00  65 70 65 61 74 65 64 6c  79 20 70 6f 6c 6c 73 20  |epeatedly polls |
00014a10  75 6e 74 69 6c 20 69 74  20 66 69 6e 69 73 68 65  |until it finishe|
00014a20  73 20 74 72 61 6e 73 6d  69 73 73 69 6f 6e 20 6f  |s transmission o|
00014a30  72 20 61 6e 20 65 72 72  6f 72 20 6f 63 63 75 72  |r an error occur|
00014a40  73 2e 20 49 74 20 61 62  61 6e 64 6f 6e 73 20 74  |s. It abandons t|
00014a50  68 65 20 62 6c 6f 63 6b  20 61 6e 64 20 72 65 74  |he block and ret|
00014a60  75 72 6e 73 20 74 68 65  20 66 69 6e 61 6c 20 73  |urns the final s|
00014a70  74 61 74 75 73 2e 20 49  74 20 77 69 6c 6c 20 6c  |tatus. It will l|
00014a80  6f 6f 70 20 69 6e 20 55  53 52 20 6d 6f 64 65 20  |oop in USR mode |
00014a90  77 69 74 68 20 49 52 51  73 20 65 6e 61 62 6c 65  |with IRQs enable|
00014aa0  64 20 2d 20 61 20 73 69  64 65 20 65 66 66 65 63  |d - a side effec|
00014ab0  74 20 69 73 20 74 68 61  74 20 63 61 6c 6c 62 61  |t is that callba|
00014ac0  63 6b 73 20 6d 61 79 20  6f 63 63 75 72 2e 00 00  |cks may occur...|
00014ad0  44 41 54 41 01 01 00 00  45 63 6f 6e 65 74 5f 4e  |DATA....Econet_N|
00014ae0  65 74 77 6f 72 6b 53 74  61 74 65 20 20 28 26 34  |etworkState  (&4|
00014af0  30 30 31 41 29 0a 23 50  61 72 65 6e 74 20 45 63  |001A).#Parent Ec|
00014b00  6f 6e 65 74 5f 0a 3d 3e  09 52 30 20 3d 09 73 74  |onet_.=>.R0 =.st|
00014b10  61 74 69 6f 6e 20 6e 75  6d 62 65 72 0a 09 52 31  |ation number..R1|
00014b20  20 3d 09 6e 65 74 20 6e  75 6d 62 65 72 0a 3c 3d  | =.net number.<=|
00014b30  09 52 32 20 3d 09 30 20  66 75 6c 6c 79 20 66 75  |.R2 =.0 fully fu|
00014b40  6e 63 74 69 6f 6e 61 6c  0a 09 20 09 73 74 72 69  |nctional.. .stri|
00014b50  63 74 6c 79 20 6f 74 68  65 72 20 76 61 6c 75 65  |ctly other value|
00014b60  73 20 74 72 61 6e 70 6f  72 74 20 64 65 70 65 6e  |s tranport depen|
00014b70  64 65 6e 74 3a 0a 09 20  09 31 20 6e 6f 20 63 6c  |dent:.. .1 no cl|
00014b80  6f 63 6b 0a 0a 54 68 69  73 20 53 57 49 20 72 65  |ock..This SWI re|
00014b90  74 75 72 6e 73 20 74 68  65 20 73 74 61 74 65 20  |turns the state |
00014ba0  6f 66 20 74 68 65 20 75  6e 64 65 72 6c 79 69 6e  |of the underlyin|
00014bb0  67 20 74 72 61 6e 73 70  6f 72 74 20 74 6f 20 74  |g transport to t|
00014bc0  68 65 20 67 69 76 65 6e  20 73 74 61 74 69 6f 6e  |he given station|
00014bd0  2e 00 00 00 44 41 54 41  eb 00 00 00 45 63 6f 6e  |....DATA....Econ|
00014be0  65 74 5f 50 61 63 6b 65  74 53 69 7a 65 20 20 28  |et_PacketSize  (|
00014bf0  26 34 30 30 31 41 42 29  0a 23 50 61 72 65 6e 74  |&4001AB).#Parent|
00014c00  20 45 63 6f 6e 65 74 5f  0a 3d 3e 09 52 30 20 3d  | Econet_.=>.R0 =|
00014c10  09 73 74 61 74 69 6f 6e  20 6e 75 6d 62 65 72 0a  |.station number.|
00014c20  09 52 31 20 3d 09 6e 65  74 20 6e 75 6d 62 65 72  |.R1 =.net number|
00014c30  0a 3c 3d 09 52 32 20 3d  09 6d 61 78 69 6d 75 6d  |.<=.R2 =.maximum|
00014c40  20 70 65 72 6d 69 74 74  65 64 20 70 61 63 6b 65  | permitted packe|
00014c50  74 20 73 69 7a 65 0a 0a  54 68 69 73 20 53 57 49  |t size..This SWI|
00014c60  20 72 65 74 75 72 6e 73  20 74 68 65 20 6d 61 78  | returns the max|
00014c70  69 6d 75 6d 20 72 65 63  6f 6d 6d 65 6e 64 65 64  |imum recommended|
00014c80  20 70 61 63 6b 65 74 20  73 69 7a 65 20 66 6f 72  | packet size for|
00014c90  20 74 68 65 20 75 6e 64  65 72 6c 79 69 6e 67 20  | the underlying |
00014ca0  74 72 61 6e 73 70 6f 72  74 20 74 6f 20 74 68 65  |transport to the|
00014cb0  20 67 69 76 65 6e 20 73  74 61 74 69 6f 6e 2e 00  | given station..|
00014cc0  44 41 54 41 4b 01 00 00  45 63 6f 6e 65 74 5f 52  |DATAK...Econet_R|
00014cd0  65 61 64 53 74 61 74 69  6f 6e 4e 75 6d 62 65 72  |eadStationNumber|
00014ce0  20 20 28 26 34 30 30 30  46 29 0a 23 50 61 72 65  |  (&4000F).#Pare|
00014cf0  6e 74 20 45 63 6f 6e 65  74 5f 0a 3d 3e 09 52 31  |nt Econet_.=>.R1|
00014d00  20 3d 09 73 74 72 69 6e  67 20 74 6f 20 72 65 61  | =.string to rea|
00014d10  64 0a 3c 3d 09 52 31 20  3d 09 61 64 64 72 65 73  |d.<=.R1 =.addres|
00014d20  73 20 6f 66 20 74 65 72  6d 69 6e 61 74 69 6e 67  |s of terminating|
00014d30  20 73 70 61 63 65 2f 63  6f 6e 74 72 6f 6c 20 63  | space/control c|
00014d40  68 61 72 61 63 74 65 72  0a 09 52 32 20 3d 09 73  |haracter..R2 =.s|
00014d50  74 61 74 69 6f 6e 20 6e  75 6d 62 65 72 20 28 6f  |tation number (o|
00014d60  72 20 2d 31 29 0a 09 52  33 20 3d 09 6e 65 74 20  |r -1)..R3 =.net |
00014d70  6e 75 6d 62 65 72 20 28  6f 72 20 2d 31 29 0a 0a  |number (or -1)..|
00014d80  54 68 69 73 20 53 57 49  20 69 73 20 75 73 65 64  |This SWI is used|
00014d90  20 65 78 74 72 61 63 74  20 74 68 65 20 73 74 61  | extract the sta|
00014da0  74 69 6f 6e 20 61 6e 64  2f 6f 72 20 6e 65 74 20  |tion and/or net |
00014db0  6e 75 6d 62 65 72 20 66  72 6f 6d 20 61 20 73 74  |number from a st|
00014dc0  72 69 6e 67 20 65 78 70  65 63 74 65 64 20 74 6f  |ring expected to|
00014dd0  20 62 65 20 6f 66 20 74  68 65 20 66 6f 72 6d 20  | be of the form |
00014de0  22 7b 2f 7d 6e 6e 6e 7b  2f 7d 2e 7b 2f 7d 73 73  |"{/}nnn{/}.{/}ss|
00014df0  73 7b 2f 7d 22 2e 0a 23  20 3f 3f 20 6f 72 20 22  |s{/}"..# ?? or "|
00014e00  7b 2f 7d 73 73 73 7b 2f  7d 22 2e 00 44 41 54 41  |{/}sss{/}"..DATA|
00014e10  c6 00 00 00 45 63 6f 6e  65 74 5f 52 65 61 64 54  |....Econet_ReadT|
00014e20  72 61 6e 73 70 6f 72 74  4e 61 6d 65 20 20 28 26  |ransportName  (&|
00014e30  34 30 30 31 43 29 0a 23  50 61 72 65 6e 74 20 45  |4001C).#Parent E|
00014e40  63 6f 6e 65 74 5f 0a 3d  3e 09 52 30 20 3d 09 73  |conet_.=>.R0 =.s|
00014e50  74 61 74 69 6f 6e 20 6e  75 6d 62 65 72 0a 09 52  |tation number..R|
00014e60  31 20 3d 09 6e 65 74 20  6e 75 6d 62 65 72 0a 3c  |1 =.net number.<|
00014e70  3d 09 52 32 20 3d 09 74  72 61 6e 73 70 6f 72 74  |=.R2 =.transport|
00014e80  20 6e 61 6d 65 0a 0a 54  68 69 73 20 53 57 49 20  | name..This SWI |
00014e90  72 65 74 75 72 6e 73 20  74 68 65 20 6e 61 6d 65  |returns the name|
00014ea0  20 6f 66 20 74 68 65 20  75 6e 64 65 72 6c 79 69  | of the underlyi|
00014eb0  6e 67 20 74 72 61 6e 73  70 6f 72 74 20 74 6f 20  |ng transport to |
00014ec0  74 68 65 20 67 69 76 65  6e 20 73 74 61 74 69 6f  |the given statio|
00014ed0  6e 2e 00 00 44 41 54 41  2d 01 00 00 45 63 6f 6e  |n...DATA-...Econ|
00014ee0  65 74 5f 56 65 72 73 69  6f 6e 20 20 28 26 34 30  |et_Version  (&40|
00014ef0  30 31 39 29 0a 23 50 61  72 65 6e 74 20 45 63 6f  |019).#Parent Eco|
00014f00  6e 65 74 5f 0a 3d 3e 09  52 30 20 3d 09 73 74 61  |net_.=>.R0 =.sta|
00014f10  74 69 6f 6e 20 6e 75 6d  62 65 72 0a 09 52 31 20  |tion number..R1 |
00014f20  3d 09 6e 65 74 20 6e 75  6d 62 65 72 0a 3c 3d 09  |=.net number.<=.|
00014f30  52 32 20 3d 09 76 65 72  73 69 6f 6e 20 6e 75 6d  |R2 =.version num|
00014f40  62 65 72 20 2a 20 31 30  30 0a 0a 54 68 69 73 20  |ber * 100..This |
00014f50  53 57 49 20 72 65 74 75  72 6e 73 20 74 68 65 20  |SWI returns the |
00014f60  76 65 72 73 69 6f 6e 20  6f 66 20 73 6f 66 74 77  |version of softw|
00014f70  61 72 65 20 75 73 65 64  20 6f 6e 20 74 68 65 20  |are used on the |
00014f80  75 6e 64 65 72 6c 79 69  6e 67 20 74 72 61 6e 73  |underlying trans|
00014f90  70 6f 72 74 20 74 6f 20  74 68 65 20 67 69 76 65  |port to the give|
00014fa0  6e 20 73 74 61 74 69 6f  6e 2e 20 53 65 74 74 69  |n station. Setti|
00014fb0  6e 67 20 52 30 20 61 6e  64 20 52 31 20 74 6f 20  |ng R0 and R1 to |
00014fc0  30 20 6f 6e 20 65 6e 74  72 79 20 72 65 74 75 72  |0 on entry retur|
00014fd0  6e 73 20 74 68 65 20 76  65 72 73 69 6f 6e 20 6f  |ns the version o|
00014fe0  66 20 74 68 65 20 74 6f  70 20 6c 65 76 65 6c 20  |f the top level |
00014ff0  45 63 6f 6e 65 74 20 73  6f 66 74 77 61 72 65 2e  |Econet software.|
00015000  0a 00 00 00 44 41 54 41  7f 06 00 00 45 63 6f 6e  |....DATA....Econ|
00015010  65 74 20 69 6d 6d 65 64  69 61 74 65 20 6f 70 65  |et immediate ope|
00015020  72 61 74 69 6f 6e 73 0a  23 50 61 72 65 6e 74 20  |rations.#Parent |
00015030  45 63 6f 6e 65 74 5f 44  6f 49 6d 6d 65 64 69 61  |Econet_DoImmedia|
00015040  74 65 0a 4e 75 6d 62 65  72 09 4e 61 6d 65 0a 23  |te.Number.Name.#|
00015050  4c 69 6e 65 0a 31 09 50  65 65 6b 09 09 09 52 65  |Line.1.Peek...Re|
00015060  61 64 20 64 65 73 74 69  6e 61 74 69 6f 6e 20 6d  |ad destination m|
00015070  61 63 68 69 6e 65 27 73  20 6d 65 6d 6f 72 79 0a  |achine's memory.|
00015080  32 09 50 6f 6b 65 09 09  09 57 72 69 74 65 20 64  |2.Poke...Write d|
00015090  65 73 74 69 6e 61 74 69  6f 6e 20 6d 61 63 68 69  |estination machi|
000150a0  6e 65 27 73 20 6d 65 6d  6f 72 79 20 28 21 29 0a  |ne's memory (!).|
000150b0  33 09 4a 53 52 09 09 09  43 61 6c 6c 73 20 61 20  |3.JSR...Calls a |
000150c0  3c 73 75 62 72 6f 75 74  69 6e 65 3d 3e 2e 4a 53  |<subroutine=>.JS|
000150d0  52 3e 0a 34 09 55 73 65  72 50 72 6f 63 65 64 75  |R>.4.UserProcedu|
000150e0  72 65 43 61 6c 6c 09 47  65 6e 65 72 61 74 65 20  |reCall.Generate |
000150f0  3c 45 76 65 6e 74 20 38  3d 3e 65 76 65 6e 74 5f  |<Event 8=>event_|
00015100  38 3e 0a 35 09 4f 53 50  72 6f 63 65 64 75 72 65  |8>.5.OSProcedure|
00015110  43 61 6c 6c 09 09 47 65  6e 65 72 61 74 65 20 3c  |Call..Generate <|
00015120  45 76 65 6e 74 20 31 36  3d 3e 65 76 65 6e 74 5f  |Event 16=>event_|
00015130  31 36 3e 0a 23 20 47 65  72 70 68 3e 20 45 76 65  |16>.# Gerph> Eve|
00015140  6e 74 20 31 36 20 69 73  20 6c 69 6e 6b 65 64 20  |nt 16 is linked |
00015150  74 6f 20 38 0a 36 09 48  61 6c 74 09 09 09 48 61  |to 8.6.Halt...Ha|
00015160  6c 74 20 74 68 65 20 64  65 73 74 69 6e 61 74 69  |lt the destinati|
00015170  6f 6e 20 6d 61 63 68 69  6e 65 20 28 42 42 43 20  |on machine (BBC |
00015180  26 20 4d 61 73 74 65 72  20 6f 6e 6c 79 29 0a 37  |& Master only).7|
00015190  09 43 6f 6e 74 69 6e 75  65 09 09 28 42 42 43 20  |.Continue..(BBC |
000151a0  26 20 4d 61 73 74 65 72  20 6f 6e 6c 79 29 0a 38  |& Master only).8|
000151b0  09 4d 61 63 68 69 6e 65  50 65 65 6b 09 09 52 65  |.MachinePeek..Re|
000151c0  74 75 72 6e 73 20 61 20  6e 75 6d 62 65 72 20 69  |turns a number i|
000151d0  64 65 6e 74 69 66 79 69  6e 67 20 74 68 65 20 3c  |dentifying the <|
000151e0  6d 61 63 68 69 6e 65 20  74 79 70 65 3d 3e 2e 4d  |machine type=>.M|
000151f0  50 65 65 6b 3e 0a 39 09  47 65 74 52 65 67 69 73  |Peek>.9.GetRegis|
00015200  74 65 72 73 09 09 52 65  74 75 72 6e 73 20 52 30  |ters..Returns R0|
00015210  2d 52 31 35 2c 20 52 31  33 5f 69 72 71 2c 20 52  |-R15, R13_irq, R|
00015220  31 34 5f 69 72 71 2c 20  52 31 33 5f 73 76 63 2c  |14_irq, R13_svc,|
00015230  20 52 31 34 5f 73 76 63  20 28 38 30 20 62 79 74  | R14_svc (80 byt|
00015240  65 73 29 0a 23 53 75 62  50 61 67 65 20 4a 53 52  |es).#SubPage JSR|
00015250  0a 45 63 6f 6e 65 74 20  4a 53 52 0a 54 68 69 73  |.Econet JSR.This|
00015260  20 77 69 6c 6c 20 63 61  75 73 65 20 61 20 4a 53  | will cause a JS|
00015270  52 20 6f 72 20 42 4c 20  6f 6e 20 74 68 65 20 64  |R or BL on the d|
00015280  65 73 74 69 6e 61 74 69  6f 6e 20 6d 61 63 68 69  |estination machi|
00015290  6e 65 2e 20 45 6e 74 72  79 20 63 6f 6e 64 69 74  |ne. Entry condit|
000152a0  69 6f 6e 73 3a 0a 0a 3d  3e 09 52 31 20 3d 09 3c  |ions:..=>.R1 =.<|
000152b0  61 72 67 75 6d 65 6e 74  20 62 75 66 66 65 72 3d  |argument buffer=|
000152c0  3e 45 63 6f 6e 65 74 5f  69 6d 6d 65 64 69 61 74  |>Econet_immediat|
000152d0  65 62 75 66 66 65 72 3e  0a 09 52 32 20 3d 09 61  |ebuffer>..R2 =.a|
000152e0  64 64 72 65 73 73 20 6f  66 20 74 68 65 20 63 6f  |ddress of the co|
000152f0  64 65 20 65 6e 74 65 72  65 64 0a 09 52 33 20 3d  |de entered..R3 =|
00015300  09 73 65 6e 64 69 6e 67  20 73 74 61 74 69 6f 6e  |.sending station|
00015310  0a 09 52 34 20 3d 09 73  65 6e 64 69 6e 67 20 6e  |..R4 =.sending n|
00015320  65 74 0a 3c 3d 09 52 30  2d 52 34 20 6d 61 79 20  |et.<=.R0-R4 may |
00015330  62 65 20 63 6f 72 72 75  70 74 65 64 0a 0a 49 66  |be corrupted..If|
00015340  20 74 68 65 20 61 64 64  72 65 73 73 20 74 6f 20  | the address to |
00015350  63 61 6c 6c 20 69 73 20  2d 31 20 74 68 65 6e 20  |call is -1 then |
00015360  74 68 65 20 61 64 64 72  65 73 73 20 63 61 6c 6c  |the address call|
00015370  65 64 20 69 73 20 74 68  65 20 61 72 67 75 6d 65  |ed is the argume|
00015380  6e 74 20 62 75 66 66 65  72 20 2d 20 74 68 69 73  |nt buffer - this|
00015390  20 61 6c 6c 6f 77 73 20  41 52 4d 20 63 6f 64 65  | allows ARM code|
000153a0  20 74 6f 20 62 65 20 73  65 6e 74 2e 20 28 45 72  | to be sent. (Er|
000153b0  6d 2c 20 73 65 63 75 72  69 74 79 20 72 69 73 6b  |m, security risk|
000153c0  3f 29 0a 23 53 75 62 50  61 67 65 20 4d 50 65 65  |?).#SubPage MPee|
000153d0  6b 0a 45 63 6f 6e 65 74  20 4d 61 63 68 69 6e 65  |k.Econet Machine|
000153e0  20 50 65 65 6b 0a 42 69  74 73 09 4d 65 61 6e 69  | Peek.Bits.Meani|
000153f0  6e 67 0a 23 4c 69 6e 65  0a 30 2d 31 35 09 4d 61  |ng.#Line.0-15.Ma|
00015400  63 68 69 6e 65 20 74 79  70 65 3a 0a 20 09 26 30  |chine type:. .&0|
00015410  30 30 30 09 52 65 73 65  72 76 65 64 0a 20 09 26  |000.Reserved. .&|
00015420  30 30 30 31 09 42 42 43  09 09 09 09 28 4f 53 20  |0001.BBC....(OS |
00015430  31 20 6f 72 20 32 29 0a  20 09 26 30 30 30 32 09  |1 or 2). .&0002.|
00015440  41 74 6f 6d 0a 20 09 26  30 30 30 33 09 53 79 73  |Atom. .&0003.Sys|
00015450  74 65 6d 20 33 20 6f 72  20 34 0a 20 09 26 30 30  |tem 3 or 4. .&00|
00015460  30 34 09 53 79 73 74 65  6d 20 35 0a 20 09 26 30  |04.System 5. .&0|
00015470  30 30 35 09 4d 61 73 74  65 72 20 31 32 38 09 09  |005.Master 128..|
00015480  09 28 4f 53 20 33 29 0a  20 09 26 30 30 30 36 09  |.(OS 3). .&0006.|
00015490  45 6c 65 63 74 72 6f 6e  09 09 09 28 4f 53 20 30  |Electron...(OS 0|
000154a0  29 0a 20 09 26 30 30 30  37 09 41 72 63 68 69 6d  |). .&0007.Archim|
000154b0  65 64 65 73 09 09 09 28  4f 53 20 36 29 0a 20 09  |edes...(OS 6). .|
000154c0  26 30 30 30 38 09 52 65  73 65 72 76 65 64 0a 20  |&0008.Reserved. |
000154d0  09 26 30 30 30 39 09 41  63 6f 72 6e 20 43 6f 6d  |.&0009.Acorn Com|
000154e0  6d 75 6e 69 63 61 74 6f  72 0a 20 09 26 30 30 30  |municator. .&000|
000154f0  41 09 4d 61 73 74 65 72  20 31 32 38 20 45 63 6f  |A.Master 128 Eco|
00015500  6e 65 74 20 54 65 72 6d  69 6e 61 6c 09 28 4f 53  |net Terminal.(OS|
00015510  20 34 29 0a 20 09 26 30  30 30 42 09 41 63 6f 72  | 4). .&000B.Acor|
00015520  6e 20 46 69 6c 65 73 74  6f 72 65 0a 20 09 26 30  |n Filestore. .&0|
00015530  30 30 43 09 4d 61 73 74  65 72 20 31 32 38 20 43  |00C.Master 128 C|
00015540  6f 6d 70 61 63 74 09 09  28 4f 53 20 35 29 0a 20  |ompact..(OS 5). |
00015550  09 26 30 30 30 44 09 41  63 6f 72 6e 20 45 63 6f  |.&000D.Acorn Eco|
00015560  6c 69 6e 6b 20 63 61 72  64 20 66 6f 72 20 50 65  |link card for Pe|
00015570  72 73 6f 6e 61 6c 20 43  6f 6d 70 75 74 65 72 73  |rsonal Computers|
00015580  0a 20 09 26 30 30 30 45  09 41 63 6f 72 6e 20 55  |. .&000E.Acorn U|
00015590  6e 69 78 20 62 6f 78 0a  20 09 26 46 46 46 41 09  |nix box. .&FFFA.|
000155a0  53 43 53 49 20 69 6e 74  65 72 66 61 63 65 0a 20  |SCSI interface. |
000155b0  09 26 46 46 46 42 09 53  4a 20 52 65 73 65 61 72  |.&FFFB.SJ Resear|
000155c0  63 68 20 49 42 4d 20 50  43 20 45 63 6f 6e 65 74  |ch IBM PC Econet|
000155d0  20 69 6e 74 65 72 66 61  63 65 0a 20 09 26 46 46  | interface. .&FF|
000155e0  46 43 09 4e 61 73 63 6f  6d 20 32 0a 20 09 26 46  |FC.Nascom 2. .&F|
000155f0  46 46 44 09 52 65 73 65  61 63 68 20 4d 61 63 68  |FFD.Reseach Mach|
00015600  69 6e 65 73 20 34 38 30  5a 0a 20 09 26 46 46 46  |ines 480Z. .&FFF|
00015610  45 09 53 4a 20 52 65 73  65 61 72 63 68 20 46 69  |E.SJ Research Fi|
00015620  6c 65 20 53 65 72 76 65  72 0a 20 09 26 46 46 46  |le Server. .&FFF|
00015630  46 09 5a 38 30 20 43 50  2f 4d 0a 31 36 2d 32 33  |F.Z80 CP/M.16-23|
00015640  09 53 6f 66 74 77 61 72  65 20 76 65 72 73 69 6f  |.Software versio|
00015650  6e 20 6e 75 6d 62 65 72  20 28 42 43 44 29 0a 32  |n number (BCD).2|
00015660  34 2d 33 31 09 53 6f 66  74 77 61 72 65 20 72 65  |4-31.Software re|
00015670  6c 65 61 73 65 20 6e 75  6d 62 65 72 20 28 42 43  |lease number (BC|
00015680  44 29 0a 00 44 41 54 41  5a 00 00 00 45 63 6f 6e  |D)..DATAZ...Econ|
00015690  65 74 20 70 72 6f 63 65  64 75 72 65 20 63 61 6c  |et procedure cal|
000156a0  6c 20 61 72 67 75 6d 65  6e 74 20 62 75 66 66 65  |l argument buffe|
000156b0  72 0a 4f 66 66 73 65 74  09 4d 65 61 6e 69 6e 67  |r.Offset.Meaning|
000156c0  0a 23 4c 69 6e 65 0a 30  09 53 69 7a 65 20 6f 66  |.#Line.0.Size of|
000156d0  20 62 75 66 66 65 72 0a  34 09 44 61 74 61 00 00  | buffer.4.Data..|
000156e0  44 49 52 24 48 02 00 00  48 02 00 00 28 59 01 00  |DIR$H...H...(Y..|
000156f0  48 fd ff ff 2a 71 58 12  a7 05 00 00 13 00 00 00  |H...*qX.........|
00015700  00 00 00 00 31 31 00 00  d0 5e 01 00 47 fd ff ff  |....11...^..G...|
00015710  75 77 9c e9 89 01 00 00  13 00 00 00 00 00 00 00  |uw..............|
00015720  31 30 00 00 5c 60 01 00  48 fd ff ff ee 1e 5c 26  |10..\`..H.....\&|
00015730  b7 04 00 00 13 00 00 00  00 00 00 00 69 6e 64 65  |............inde|
00015740  78 00 00 00 14 65 01 00  48 fd ff ff 84 ed 5a 26  |x....e..H.....Z&|
00015750  d5 00 00 00 13 00 00 00  00 00 00 00 32 00 00 00  |............2...|
00015760  ec 65 01 00 48 fd ff ff  5d fb d3 15 a9 03 00 00  |.e..H...].......|
00015770  13 00 00 00 00 00 00 00  38 00 00 00 98 69 01 00  |........8....i..|
00015780  48 fd ff ff 06 08 d4 15  15 00 00 00 33 00 00 00  |H...........3...|
00015790  00 00 00 00 31 36 3e 65  76 65 6e 74 5f 38 00 00  |....16>event_8..|
000157a0  b0 69 01 00 48 fd ff ff  53 9d 5b 26 d2 00 00 00  |.i..H...S.[&....|
000157b0  13 00 00 00 00 00 00 00  31 34 00 00 84 6a 01 00  |........14...j..|
000157c0  48 fd ff ff 66 0c d4 15  ca 00 00 00 13 00 00 00  |H...f...........|
000157d0  00 00 00 00 31 35 00 00  50 6b 01 00 48 fd ff ff  |....15..Pk..H...|
000157e0  10 20 2a 1e 03 02 00 00  13 00 00 00 00 00 00 00  |. *.............|
000157f0  36 00 00 00 54 6d 01 00  48 fd ff ff 3d 30 09 1d  |6...Tm..H...=0..|
00015800  25 01 00 00 33 00 00 00  00 00 00 00 30 00 00 00  |%...3.......0...|
00015810  7c 6e 01 00 48 fd ff ff  19 0d 09 1d d0 01 00 00  ||n..H...........|
00015820  33 00 00 00 00 00 00 00  31 00 00 00 4c 70 01 00  |3.......1...Lp..|
00015830  48 fd ff ff 71 82 fc 1c  e6 00 00 00 13 00 00 00  |H...q...........|
00015840  00 00 00 00 31 32 00 00  34 71 01 00 48 fd ff ff  |....12..4q..H...|
00015850  95 99 fd 1c 49 01 00 00  33 00 00 00 00 00 00 00  |....I...3.......|
00015860  31 37 00 00 80 72 01 00  48 fd ff ff eb d7 fd 1c  |17...r..H.......|
00015870  50 01 00 00 13 00 00 00  00 00 00 00 32 32 00 00  |P...........22..|
00015880  d0 73 01 00 48 fd ff ff  22 06 fd 1c c7 00 00 00  |.s..H...".......|
00015890  13 00 00 00 00 00 00 00  32 38 00 00 98 74 01 00  |........28...t..|
000158a0  48 fd ff ff 3d 07 fe 1c  d3 00 00 00 33 00 00 00  |H...=.......3...|
000158b0  00 00 00 00 33 00 00 00  6c 75 01 00 48 fd ff ff  |....3...lu..H...|
000158c0  52 34 5b 26 c7 01 00 00  33 00 00 00 00 00 00 00  |R4[&....3.......|
000158d0  34 00 00 00 34 77 01 00  48 fd ff ff f3 df fe 1c  |4...4w..H.......|
000158e0  a6 00 00 00 33 00 00 00  00 00 00 00 35 00 00 00  |....3.......5...|
000158f0  dc 77 01 00 48 fd ff ff  f1 bc fb 1c 36 01 00 00  |.w..H.......6...|
00015900  13 00 00 00 00 00 00 00  37 00 00 00 14 79 01 00  |........7....y..|
00015910  48 fd ff ff cb 8e 5b 26  c7 00 00 00 13 00 00 00  |H.....[&........|
00015920  00 00 00 00 39 00 00 00  44 41 54 41 a7 05 00 00  |....9...DATA....|
00015930  4b 65 79 20 74 72 61 6e  73 69 74 69 6f 6e 20 65  |Key transition e|
00015940  76 65 6e 74 20 28 31 31  29 0a 23 50 61 72 65 6e  |vent (11).#Paren|
00015950  74 20 65 76 65 6e 74 5f  69 6e 64 65 78 0a 3d 3e  |t event_index.=>|
00015960  09 52 30 20 3d 09 31 31  20 28 65 76 65 6e 74 20  |.R0 =.11 (event |
00015970  6e 75 6d 62 65 72 29 0a  09 52 31 20 3d 09 74 72  |number)..R1 =.tr|
00015980  61 6e 73 69 74 69 6f 6e  20 76 61 6c 75 65 0a 09  |ansition value..|
00015990  52 32 20 3d 09 3c 6b 65  79 20 6e 75 6d 62 65 72  |R2 =.<key number|
000159a0  3d 3e 2e 6b 65 79 6e 75  6d 62 65 72 3e 0a 09 52  |=>.keynumber>..R|
000159b0  33 20 3d 09 6b 65 79 62  6f 61 72 64 20 64 72 69  |3 =.keyboard dri|
000159c0  76 65 72 20 49 44 0a 0a  54 68 69 73 20 65 76 65  |ver ID..This eve|
000159d0  6e 74 20 69 73 20 70 6f  6c 6c 65 64 20 77 68 65  |nt is polled whe|
000159e0  6e 20 61 6e 79 20 6b 65  79 20 69 73 20 70 72 65  |n any key is pre|
000159f0  73 73 65 64 20 6f 72 20  72 65 6c 65 61 73 65 64  |ssed or released|
00015a00  2e 20 54 72 61 6e 73 69  74 69 6f 6e 20 76 61 6c  |. Transition val|
00015a10  75 65 20 69 73 20 30 20  77 68 65 6e 20 72 65 6c  |ue is 0 when rel|
00015a20  65 61 73 65 64 20 61 6e  64 20 31 20 77 68 65 6e  |eased and 1 when|
00015a30  20 70 72 65 73 73 65 64  2e 0a 23 53 75 62 70 61  | pressed..#Subpa|
00015a40  67 65 20 6b 65 79 6e 75  6d 62 65 72 0a 4b 65 79  |ge keynumber.Key|
00015a50  20 6e 75 6d 62 65 72 73  20 66 6f 72 20 74 72 61  | numbers for tra|
00015a60  6e 73 69 74 69 6f 6e 73  0a 23 54 61 62 6c 65 20  |nsitions.#Table |
00015a70  43 6f 6c 75 6d 6e 73 20  34 0a 30 20 20 20 45 73  |Columns 4.0   Es|
00015a80  63 61 70 65 0a 31 20 20  20 46 31 0a 32 20 20 20  |cape.1   F1.2   |
00015a90  46 32 0a 33 20 20 20 46  33 0a 34 20 20 20 46 34  |F2.3   F3.4   F4|
00015aa0  0a 35 20 20 20 46 35 0a  36 20 20 20 46 36 0a 37  |.5   F5.6   F6.7|
00015ab0  20 20 20 46 37 0a 38 20  20 20 46 38 0a 39 20 20  |   F7.8   F8.9  |
00015ac0  20 46 39 0a 31 30 20 20  46 31 30 0a 31 31 20 20  | F9.10  F10.11  |
00015ad0  46 31 31 0a 31 32 20 20  46 31 32 0a 31 33 20 20  |F11.12  F12.13  |
00015ae0  50 72 69 6e 74 0a 31 34  20 20 53 63 72 6f 6c 6c  |Print.14  Scroll|
00015af0  20 4c 6f 63 6b 0a 31 35  20 20 42 72 65 61 6b 0a  | Lock.15  Break.|
00015b00  31 36 20 20 7e 0a 31 37  20 20 31 0a 31 38 20 20  |16  ~.17  1.18  |
00015b10  32 0a 31 39 20 20 33 0a  32 30 20 20 34 0a 32 31  |2.19  3.20  4.21|
00015b20  20 20 35 0a 32 32 20 20  36 0a 32 33 20 20 37 0a  |  5.22  6.23  7.|
00015b30  32 34 20 20 38 0a 32 35  20 20 39 0a 32 36 20 20  |24  8.25  9.26  |
00015b40  30 0a 32 37 20 20 2d 0a  32 38 20 20 3d 0a 32 39  |0.27  -.28  =.29|
00015b50  20 20 a3 0a 33 30 20 20  5c 3c 2d 7c 0a 33 31 20  |  ..30  \<-|.31 |
00015b60  20 49 6e 73 65 72 74 0a  33 32 20 20 48 6f 6d 65  | Insert.32  Home|
00015b70  0a 33 33 20 20 50 61 67  65 20 55 70 0a 33 34 20  |.33  Page Up.34 |
00015b80  20 4e 75 6d 20 4c 6f 63  6b 0a 33 35 20 20 4b 20  | Num Lock.35  K |
00015b90  2f 0a 33 36 20 20 4b 20  2a 0a 33 37 20 20 4b 20  |/.36  K *.37  K |
00015ba0  23 0a 33 38 20 20 54 61  62 0a 33 39 20 20 51 0a  |#.38  Tab.39  Q.|
00015bb0  34 30 20 20 57 0a 34 31  20 20 45 0a 34 32 20 20  |40  W.41  E.42  |
00015bc0  52 0a 34 33 20 20 54 0a  34 34 20 20 59 0a 34 35  |R.43  T.44  Y.45|
00015bd0  20 20 55 0a 34 36 20 20  49 0a 34 37 20 20 4f 0a  |  U.46  I.47  O.|
00015be0  34 38 20 20 50 0a 34 39  20 20 5b 0a 35 30 20 20  |48  P.49  [.50  |
00015bf0  5d 0a 35 31 20 20 5c 0a  35 32 20 20 44 65 6c 65  |].51  \.52  Dele|
00015c00  74 65 0a 35 33 20 20 43  6f 70 79 0a 35 34 20 20  |te.53  Copy.54  |
00015c10  50 61 67 65 20 64 6f 77  6e 0a 35 35 20 20 4b 20  |Page down.55  K |
00015c20  37 0a 35 36 20 20 4b 20  38 0a 35 37 20 20 4b 20  |7.56  K 8.57  K |
00015c30  39 0a 35 38 20 20 4b 20  2d 0a 35 39 20 20 4c 20  |9.58  K -.59  L |
00015c40  43 74 72 6c 0a 36 30 20  20 41 0a 36 31 20 20 53  |Ctrl.60  A.61  S|
00015c50  0a 36 32 20 20 44 0a 36  33 20 20 46 0a 36 34 20  |.62  D.63  F.64 |
00015c60  20 47 0a 36 35 20 20 48  0a 36 36 20 20 4a 0a 36  | G.65  H.66  J.6|
00015c70  37 20 20 4b 0a 36 38 20  20 4c 0a 36 39 20 20 3b  |7  K.68  L.69  ;|
00015c80  0a 37 30 20 20 27 0a 37  31 20 20 52 65 74 75 72  |.70  '.71  Retur|
00015c90  6e 0a 37 32 20 20 4b 20  34 0a 37 33 20 20 4b 20  |n.72  K 4.73  K |
00015ca0  35 0a 37 34 20 20 4b 20  36 0a 37 35 20 20 4b 20  |5.74  K 6.75  K |
00015cb0  2b 0a 37 36 20 20 4c 20  53 68 69 66 74 0a 37 37  |+.76  L Shift.77|
00015cc0  20 20 28 3c 65 78 74 72  61 20 6b 65 79 3d 3e 2e  |  (<extra key=>.|
00015cd0  65 78 74 72 61 3e 29 0a  37 38 20 20 5a 0a 37 39  |extra>).78  Z.79|
00015ce0  20 20 58 0a 38 30 20 20  43 0a 38 31 20 20 56 0a  |  X.80  C.81  V.|
00015cf0  38 32 20 20 42 0a 38 33  20 20 4e 0a 38 34 20 20  |82  B.83  N.84  |
00015d00  4d 0a 38 35 20 20 2c 0a  38 36 20 20 2e 0a 38 37  |M.85  ,.86  ..87|
00015d10  20 20 2f 0a 38 38 20 20  52 20 53 68 69 66 74 0a  |  /.88  R Shift.|
00015d20  38 39 20 20 55 70 0a 39  30 20 20 4b 20 31 0a 39  |89  Up.90  K 1.9|
00015d30  31 20 20 4b 20 32 0a 39  32 20 20 4b 20 33 0a 39  |1  K 2.92  K 3.9|
00015d40  33 20 20 43 61 70 73 20  4c 6f 63 6b 0a 39 34 20  |3  Caps Lock.94 |
00015d50  20 4c 20 41 6c 74 0a 39  35 20 20 53 70 61 63 65  | L Alt.95  Space|
00015d60  0a 39 36 20 20 52 20 41  6c 74 0a 39 37 20 20 52  |.96  R Alt.97  R|
00015d70  20 43 74 72 6c 0a 39 38  20 20 4c 65 66 74 0a 39  | Ctrl.98  Left.9|
00015d80  39 20 20 44 6f 77 6e 0a  31 30 30 20 52 69 67 68  |9  Down.100 Righ|
00015d90  74 0a 31 30 31 20 4b 20  30 0a 31 30 32 20 4b 20  |t.101 K 0.102 K |
00015da0  2e 0a 31 30 33 20 45 6e  74 65 72 0a 31 31 32 20  |..103 Enter.112 |
00015db0  53 65 6c 65 63 74 0a 31  31 33 20 4d 65 6e 75 0a  |Select.113 Menu.|
00015dc0  31 31 34 20 41 64 6a 75  73 74 0a 23 45 6e 64 54  |114 Adjust.#EndT|
00015dd0  61 62 6c 65 0a 23 73 75  62 70 61 67 65 20 65 78  |able.#subpage ex|
00015de0  74 72 61 0a 4b 65 79 20  6e 75 6d 62 65 72 20 37  |tra.Key number 7|
00015df0  37 0a 53 6f 6d 65 20 6e  61 74 69 6f 6e 61 6c 20  |7.Some national |
00015e00  6b 65 79 62 6f 61 72 64  73 20 68 61 76 65 20 61  |keyboards have a|
00015e10  6e 20 65 78 74 72 61 20  6b 65 79 20 62 65 74 77  |n extra key betw|
00015e20  65 65 6e 20 6c 65 66 74  20 73 68 69 66 74 20 61  |een left shift a|
00015e30  6e 64 20 5a 2c 20 77 68  69 63 68 20 67 69 76 65  |nd Z, which give|
00015e40  73 20 6b 65 79 20 6e 75  6d 62 65 72 20 37 37 2e  |s key number 77.|
00015e50  20 54 68 69 73 20 6b 65  79 20 69 73 20 6e 6f 74  | This key is not|
00015e60  20 70 72 65 73 65 6e 74  20 6f 6e 20 74 68 65 20  | present on the |
00015e70  73 74 61 6e 64 61 72 64  20 55 4b 20 41 72 63 68  |standard UK Arch|
00015e80  69 6d 65 64 65 73 20 6b  65 79 62 6f 61 72 64 2c  |imedes keyboard,|
00015e90  20 61 6c 74 68 6f 75 67  68 20 61 20 63 6f 6e 74  | although a cont|
00015ea0  61 63 74 20 61 72 65 61  20 66 6f 72 20 69 74 20  |act area for it |
00015eb0  69 73 20 76 69 73 69 62  6c 65 20 6f 6e 20 74 68  |is visible on th|
00015ec0  65 20 6b 65 79 62 6f 61  72 64 20 50 43 42 2e 00  |e keyboard PCB..|
00015ed0  44 41 54 41 89 01 00 00  4d 6f 75 73 65 20 62 75  |DATA....Mouse bu|
00015ee0  74 74 6f 6e 20 65 76 65  6e 74 0a 23 50 61 72 65  |tton event.#Pare|
00015ef0  6e 74 20 65 76 65 6e 74  5f 69 6e 64 65 78 0a 3d  |nt event_index.=|
00015f00  3e 09 52 30 20 3d 09 31  30 20 28 65 76 65 6e 74  |>.R0 =.10 (event|
00015f10  20 6e 75 6d 62 65 72 29  0a 09 52 31 20 3d 09 6d  | number)..R1 =.m|
00015f20  6f 75 73 65 27 73 20 58  2d 63 6f 6f 72 64 69 6e  |ouse's X-coordin|
00015f30  61 74 65 0a 09 52 32 20  3d 09 6d 6f 75 73 65 27  |ate..R2 =.mouse'|
00015f40  73 20 59 2d 63 6f 6f 72  64 69 6e 61 74 65 0a 09  |s Y-coordinate..|
00015f50  52 33 20 3d 09 3c 62 75  74 74 6f 6e 20 73 74 61  |R3 =.<button sta|
00015f60  74 65 3d 3e 2e 73 74 61  74 65 3e 0a 09 52 34 20  |te=>.state>..R4 |
00015f70  3d 09 34 20 62 79 74 65  73 20 6f 66 20 6d 6f 6e  |=.4 bytes of mon|
00015f80  6f 74 6f 6e 69 63 20 63  65 6e 74 69 2d 73 65 63  |otonic centi-sec|
00015f90  6f 6e 64 20 76 61 6c 75  65 0a 0a 54 68 69 73 20  |ond value..This |
00015fa0  65 76 65 6e 74 20 69 73  20 67 65 6e 65 72 61 74  |event is generat|
00015fb0  65 64 20 77 68 65 6e 20  61 20 6d 6f 75 73 65 20  |ed when a mouse |
00015fc0  62 75 74 74 6f 6e 20 69  73 20 70 72 65 73 73 65  |button is presse|
00015fd0  64 20 6f 72 20 72 65 6c  65 61 73 65 64 2e 0a 23  |d or released..#|
00015fe0  53 75 62 70 61 67 65 20  73 74 61 74 65 0a 4d 6f  |Subpage state.Mo|
00015ff0  75 73 65 20 62 75 74 74  6f 6e 20 73 74 61 74 65  |use button state|
00016000  73 0a 42 69 74 09 4d 65  61 6e 69 6e 67 0a 23 4c  |s.Bit.Meaning.#L|
00016010  69 6e 65 0a 30 09 52 69  67 68 74 20 62 75 74 74  |ine.0.Right butt|
00016020  6f 6e 20 28 41 64 6a 75  73 74 29 0a 31 09 4d 69  |on (Adjust).1.Mi|
00016030  64 64 6c 65 20 62 75 74  74 6f 6e 20 28 4d 65 6e  |ddle button (Men|
00016040  75 29 0a 32 09 4c 65 66  74 20 62 75 74 74 6f 6e  |u).2.Left button|
00016050  20 28 53 65 6c 65 63 74  29 00 00 00 44 41 54 41  | (Select)...DATA|
00016060  b7 04 00 00 45 76 65 6e  74 20 6e 75 6d 62 65 72  |....Event number|
00016070  73 0a 5c 23 09 44 65 73  63 72 69 70 74 69 6f 6e  |s.\#.Description|
00016080  0a 23 4c 69 6e 65 0a 30  09 3c 4f 75 74 70 75 74  |.#Line.0.<Output|
00016090  20 62 75 66 66 65 72 20  68 61 73 20 62 65 63 6f  | buffer has beco|
000160a0  6d 65 20 65 6d 70 74 79  3d 3e 65 76 65 6e 74 5f  |me empty=>event_|
000160b0  30 3e 0a 31 09 3c 49 6e  70 75 74 20 62 75 66 66  |0>.1.<Input buff|
000160c0  65 72 20 68 61 73 20 62  65 63 6f 6d 65 20 66 75  |er has become fu|
000160d0  6c 6c 3d 3e 65 76 65 6e  74 5f 31 3e 0a 32 09 3c  |ll=>event_1>.2.<|
000160e0  43 68 61 72 61 63 74 65  72 20 70 6c 61 63 65 64  |Character placed|
000160f0  20 69 6e 20 69 6e 70 75  74 20 62 75 66 66 65 72  | in input buffer|
00016100  3d 3e 65 76 65 6e 74 5f  32 3e 0a 33 09 3c 41 44  |=>event_2>.3.<AD|
00016110  43 20 63 6f 6e 76 65 72  73 69 6f 6e 20 65 6e 64  |C conversion end|
00016120  65 64 20 69 6e 20 42 42  43 20 49 2f 4f 20 65 78  |ed in BBC I/O ex|
00016130  70 61 6e 73 69 6f 6e 20  63 61 72 64 3d 3e 65 76  |pansion card=>ev|
00016140  65 6e 74 5f 33 3e 0a 34  09 3c 56 53 79 6e 63 20  |ent_3>.4.<VSync |
00016150  45 76 65 6e 74 3d 3e 65  76 65 6e 74 5f 34 3e 0a  |Event=>event_4>.|
00016160  35 09 3c 49 6e 74 65 72  76 61 6c 20 74 69 6d 65  |5.<Interval time|
00016170  72 20 68 61 73 20 63 72  6f 73 73 65 64 20 7a 65  |r has crossed ze|
00016180  72 6f 3d 3e 65 76 65 6e  74 5f 35 3e 0a 36 09 3c  |ro=>event_5>.6.<|
00016190  45 73 63 61 70 65 20 63  6f 6e 64 69 74 69 6f 6e  |Escape condition|
000161a0  20 68 61 73 20 62 65 65  6e 20 64 65 74 65 63 74  | has been detect|
000161b0  65 64 3d 3e 65 76 65 6e  74 5f 36 3e 0a 37 09 3c  |ed=>event_6>.7.<|
000161c0  53 65 72 69 61 6c 20 52  53 34 32 33 20 65 72 72  |Serial RS423 err|
000161d0  6f 72 20 68 61 73 20 62  65 65 6e 20 64 65 74 65  |or has been dete|
000161e0  63 74 65 64 3d 3e 65 76  65 6e 74 5f 37 3e 0a 38  |cted=>event_7>.8|
000161f0  09 3c 45 63 6f 6e 65 74  20 75 73 65 72 20 72 65  |.<Econet user re|
00016200  6d 6f 74 65 20 70 72 6f  63 65 64 75 72 65 20 63  |mote procedure c|
00016210  61 6c 6c 65 64 3d 3e 65  76 65 6e 74 5f 38 3e 0a  |alled=>event_8>.|
00016220  39 09 3c 55 73 65 72 20  68 61 73 20 67 65 6e 65  |9.<User has gene|
00016230  72 61 74 65 64 20 61 6e  20 65 76 65 6e 74 3d 3e  |rated an event=>|
00016240  65 76 65 6e 74 5f 39 3e  0a 31 30 09 3c 4d 6f 75  |event_9>.10.<Mou|
00016250  73 65 20 74 72 61 6e 73  69 74 69 6f 6e 3d 3e 65  |se transition=>e|
00016260  76 65 6e 74 5f 31 30 3e  0a 31 31 09 3c 4b 65 79  |vent_10>.11.<Key|
00016270  20 74 72 61 6e 73 69 74  69 6f 6e 3d 3e 65 76 65  | transition=>eve|
00016280  6e 74 5f 31 31 3e 0a 31  32 09 3c 53 6f 75 6e 64  |nt_11>.12.<Sound|
00016290  20 73 79 73 74 65 6d 20  72 65 61 63 68 65 64 20  | system reached |
000162a0  73 74 61 72 74 20 6f 66  20 61 20 62 61 72 3d 3e  |start of a bar=>|
000162b0  65 76 65 6e 74 5f 31 32  3e 0a 31 33 09 50 43 20  |event_12>.13.PC |
000162c0  45 6d 75 6c 61 74 6f 72  20 65 76 65 6e 74 0a 31  |Emulator event.1|
000162d0  34 09 3c 45 63 6f 6e 65  74 20 72 65 63 65 69 76  |4.<Econet receiv|
000162e0  65 20 63 6f 6d 70 6c 65  74 65 3d 3e 65 76 65 6e  |e complete=>even|
000162f0  74 5f 31 34 3e 0a 31 35  09 3c 45 63 6f 6e 65 74  |t_14>.15.<Econet|
00016300  20 74 72 61 6e 73 6d 69  74 20 63 6f 6d 70 6c 65  | transmit comple|
00016310  74 65 3d 3e 65 76 65 6e  74 5f 31 35 3e 0a 31 36  |te=>event_15>.16|
00016320  09 3c 45 63 6f 6e 65 74  20 4f 53 20 72 65 6d 6f  |.<Econet OS remo|
00016330  74 65 20 70 72 6f 63 65  64 75 72 65 20 63 61 6c  |te procedure cal|
00016340  6c 65 64 3d 3e 65 76 65  6e 74 5f 31 36 3e 0a 23  |led=>event_16>.#|
00016350  20 74 68 69 73 20 6f 6e  65 20 6c 69 6e 6b 73 20  | this one links |
00016360  74 6f 20 65 76 65 6e 74  5f 38 0a 31 37 09 3c 4d  |to event_8.17.<M|
00016370  49 44 49 20 73 79 73 74  65 6d 20 65 76 65 6e 74  |IDI system event|
00016380  3d 3e 65 76 65 6e 74 5f  31 37 3e 0a 31 38 09 52  |=>event_17>.18.R|
00016390  65 73 65 72 76 65 64 20  66 6f 72 20 65 78 74 65  |eserved for exte|
000163a0  72 6e 61 6c 20 64 65 76  65 6c 6f 70 65 72 73 0a  |rnal developers.|
000163b0  31 39 09 3c 49 6e 74 65  72 6e 65 74 20 65 76 65  |19.<Internet eve|
000163c0  6e 74 3d 3e 49 6e 65 74  53 6f 63 6b 65 74 3a 65  |nt=>InetSocket:e|
000163d0  76 65 6e 74 5f 31 39 3e  0a 32 30 09 52 65 73 65  |vent_19>.20.Rese|
000163e0  72 76 65 64 20 66 6f 72  20 65 78 74 65 72 6e 61  |rved for externa|
000163f0  6c 20 64 65 76 65 6c 6f  70 65 72 73 0a 32 31 09  |l developers.21.|
00016400  45 78 70 61 6e 73 69 6f  6e 20 65 76 65 6e 74 20  |Expansion event |
00016410  28 73 75 62 2d 72 65 61  73 6f 6e 20 69 6e 20 72  |(sub-reason in r|
00016420  31 29 0a 32 32 09 3c 44  65 76 69 63 65 20 6f 76  |1).22.<Device ov|
00016430  65 72 72 75 6e 20 65 76  65 6e 74 3d 3e 65 76 65  |errun event=>eve|
00016440  6e 74 5f 32 32 3e 0a 32  33 09 52 65 73 65 72 76  |nt_22>.23.Reserv|
00016450  65 64 20 66 6f 72 20 65  78 74 65 72 6e 61 6c 20  |ed for external |
00016460  64 65 76 65 6c 6f 70 65  72 73 0a 32 34 09 44 72  |developers.24.Dr|
00016470  69 76 65 72 20 72 65 63  69 65 76 65 64 20 66 72  |iver recieved fr|
00016480  61 6d 65 20 66 6f 72 20  49 6e 74 65 72 6e 65 74  |ame for Internet|
00016490  20 28 44 43 49 20 32 20  6f 6e 6c 79 29 0a 32 35  | (DCI 2 only).25|
000164a0  09 44 72 69 76 65 72 20  63 6f 6d 70 6c 65 74 65  |.Driver complete|
000164b0  64 20 49 6e 74 65 72 6e  65 74 20 74 72 61 6e 73  |d Internet trans|
000164c0  6d 69 73 73 69 6f 6e 20  72 65 71 75 65 73 74 20  |mission request |
000164d0  28 44 43 49 20 32 20 6f  6e 6c 79 29 0a 32 38 09  |(DCI 2 only).28.|
000164e0  3c 50 6f 72 74 61 62 6c  65 20 42 61 74 74 65 72  |<Portable Batter|
000164f0  79 20 4d 61 6e 61 67 65  6d 65 6e 74 20 55 6e 69  |y Management Uni|
00016500  74 20 65 76 65 6e 74 3d  3e 65 76 65 6e 74 5f 32  |t event=>event_2|
00016510  38 3e 0a 00 44 41 54 41  d5 00 00 00 43 68 61 72  |8>..DATA....Char|
00016520  61 63 74 65 72 20 65 6e  74 65 72 69 6e 67 20 62  |acter entering b|
00016530  75 66 66 65 72 20 65 76  65 6e 74 0a 23 50 61 72  |uffer event.#Par|
00016540  65 6e 74 20 65 76 65 6e  74 5f 69 6e 64 65 78 0a  |ent event_index.|
00016550  3d 3e 09 52 30 20 3d 09  32 20 28 65 76 65 6e 74  |=>.R0 =.2 (event|
00016560  20 6e 75 6d 62 65 72 29  0a 09 52 31 20 3d 09 3c  | number)..R1 =.<|
00016570  62 75 66 66 65 72 20 6e  75 6d 62 65 72 3d 3e 42  |buffer number=>B|
00016580  75 66 66 65 72 5f 62 75  66 66 65 72 73 3e 0a 09  |uffer_buffers>..|
00016590  52 32 20 3d 09 62 79 74  65 20 62 65 69 6e 67 20  |R2 =.byte being |
000165a0  69 6e 73 65 72 74 65 64  0a 0a 54 68 69 73 20 65  |inserted..This e|
000165b0  76 65 6e 74 20 69 73 20  67 65 6e 65 72 61 74 65  |vent is generate|
000165c0  64 20 77 68 65 6e 20 61  20 62 79 74 65 20 69 73  |d when a byte is|
000165d0  20 69 6e 73 65 72 74 65  64 20 69 6e 74 6f 20 61  | inserted into a|
000165e0  20 62 75 66 66 65 72 2e  0a 00 00 00 44 41 54 41  | buffer.....DATA|
000165f0  a9 03 00 00 45 63 6f 6e  65 74 20 55 73 65 72 52  |....Econet UserR|
00016600  50 43 20 2f 20 4f 53 50  72 6f 63 20 65 76 65 6e  |PC / OSProc even|
00016610  74 73 0a 23 50 61 72 65  6e 74 20 65 76 65 6e 74  |ts.#Parent event|
00016620  5f 69 6e 64 65 78 0a 3d  3e 09 52 30 20 3d 09 38  |_index.=>.R0 =.8|
00016630  09 28 55 73 65 72 20 70  72 6f 63 65 64 75 72 65  |.(User procedure|
00016640  20 63 61 6c 6c 29 0a 09  20 09 31 36 09 28 4f 53  | call).. .16.(OS|
00016650  20 70 72 6f 63 65 64 75  72 65 20 63 61 6c 6c 29  | procedure call)|
00016660  0a 09 52 31 20 3d 09 3c  61 72 67 75 6d 65 6e 74  |..R1 =.<argument|
00016670  20 62 75 66 66 65 72 3d  3e 45 63 6f 6e 65 74 5f  | buffer=>Econet_|
00016680  69 6d 6d 65 64 69 61 74  65 62 75 66 66 65 72 3e  |immediatebuffer>|
00016690  0a 09 52 32 20 3d 09 3c  52 50 43 20 6e 75 6d 62  |..R2 =.<RPC numb|
000166a0  65 72 3d 3e 2e 52 50 43  3e 0a 09 52 33 20 3d 09  |er=>.RPC>..R3 =.|
000166b0  73 65 6e 64 69 6e 67 20  73 74 61 74 69 6f 6e 0a  |sending station.|
000166c0  09 52 34 20 3d 09 73 65  6e 64 69 6e 67 20 73 74  |.R4 =.sending st|
000166d0  61 74 69 6f 6e 27 73 20  6e 65 74 77 6f 72 6b 0a  |ation's network.|
000166e0  3c 3d 09 52 30 2d 52 34  20 6d 61 79 20 62 65 20  |<=.R0-R4 may be |
000166f0  63 6f 72 72 75 70 74 65  64 2e 0a 0a 54 68 65 73  |corrupted...Thes|
00016700  65 20 65 76 65 6e 74 73  20 61 72 65 20 67 65 6e  |e events are gen|
00016710  65 72 61 74 65 64 20 77  68 65 6e 20 74 68 65 20  |erated when the |
00016720  45 63 6f 6e 65 74 20 72  65 63 69 65 76 65 73 20  |Econet recieves |
00016730  61 20 55 73 65 72 52 50  43 20 6f 72 20 4f 53 20  |a UserRPC or OS |
00016740  50 72 6f 63 65 64 75 72  65 20 63 61 6c 6c 20 73  |Procedure call s|
00016750  65 6e 74 20 62 79 20 61  6e 6f 74 68 65 72 20 73  |ent by another s|
00016760  74 61 74 69 6f 6e 20 63  61 6c 6c 69 6e 67 20 3c  |tation calling <|
00016770  45 63 6f 6e 65 74 5f 44  6f 49 6d 6d 65 64 69 61  |Econet_DoImmedia|
00016780  74 65 3e 2e 0a 23 53 75  62 50 61 67 65 20 52 50  |te>..#SubPage RP|
00016790  43 0a 45 63 6f 6e 65 74  20 4f 53 20 50 72 6f 63  |C.Econet OS Proc|
000167a0  65 64 75 72 65 20 43 61  6c 6c 73 0a 4e 75 6d 62  |edure Calls.Numb|
000167b0  65 72 09 4e 61 6d 65 0a  23 57 72 61 70 20 6f 66  |er.Name.#Wrap of|
000167c0  66 0a 23 4c 69 6e 65 0a  30 09 3c 4f 53 43 68 61  |f.#Line.0.<OSCha|
000167d0  72 61 63 74 65 72 46 72  6f 6d 4e 6f 74 69 66 79  |racterFromNotify|
000167e0  3d 3e 2e 4e 6f 74 69 66  79 3e 0a 31 09 4f 53 49  |=>.Notify>.1.OSI|
000167f0  6e 69 74 69 61 6c 69 73  65 52 65 6d 6f 74 65 09  |nitialiseRemote.|
00016800  55 6e 69 6d 70 6c 65 6d  65 6e 74 65 64 20 6f 6e  |Unimplemented on|
00016810  20 52 49 53 43 20 4f 53  0a 32 09 4f 53 47 65 74  | RISC OS.2.OSGet|
00016820  56 69 65 77 50 61 72 61  6d 65 74 65 72 73 09 55  |ViewParameters.U|
00016830  6e 69 6d 70 6c 65 6d 65  6e 74 65 64 20 6f 6e 20  |nimplemented on |
00016840  52 49 53 43 20 4f 53 0a  33 09 4f 53 43 61 75 73  |RISC OS.3.OSCaus|
00016850  65 46 61 74 61 6c 45 72  72 6f 72 09 43 61 6c 6c  |eFatalError.Call|
00016860  73 20 3c 4f 53 5f 47 65  6e 65 72 61 74 65 45 72  |s <OS_GenerateEr|
00016870  72 6f 72 3e 2e 20 4f 75  63 68 21 0a 34 09 4f 53  |ror>. Ouch!.4.OS|
00016880  43 68 61 72 61 63 74 65  72 46 72 6f 6d 52 65 6d  |CharacterFromRem|
00016890  6f 74 65 09 55 6e 69 6d  70 6c 65 6d 65 6e 74 65  |ote.Unimplemente|
000168a0  64 20 6f 6e 20 52 49 53  43 20 4f 53 0a 23 53 75  |d on RISC OS.#Su|
000168b0  62 50 61 67 65 20 4e 6f  74 69 66 79 0a 4f 53 43  |bPage Notify.OSC|
000168c0  68 61 72 61 63 74 65 72  46 72 6f 6d 4e 6f 74 69  |haracterFromNoti|
000168d0  66 79 0a 4f 75 74 73 69  64 65 20 74 68 65 20 64  |fy.Outside the d|
000168e0  65 73 6b 74 6f 70 20 74  68 65 20 63 68 61 72 61  |esktop the chara|
000168f0  63 74 65 72 20 69 73 20  69 6e 73 65 72 74 65 64  |cter is inserted|
00016900  20 69 6e 74 6f 20 74 68  65 20 6b 65 79 62 6f 61  | into the keyboa|
00016910  72 64 20 62 75 66 66 65  72 2e 0a 0a 49 6e 73 69  |rd buffer...Insi|
00016920  64 65 20 74 68 65 20 64  65 73 6b 74 6f 70 2c 20  |de the desktop, |
00016930  63 68 61 72 61 63 74 65  72 73 20 61 72 65 20 63  |characters are c|
00016940  6f 6c 6c 61 74 65 64 20  62 79 20 73 74 61 74 69  |ollated by stati|
00016950  6f 6e 2c 20 61 6e 64 20  61 74 20 61 20 70 61 75  |on, and at a pau|
00016960  73 65 2c 20 61 20 3c 4d  65 73 73 61 67 65 20 4e  |se, a <Message N|
00016970  6f 74 69 66 79 3d 3e 57  69 6d 70 3a 4d 73 67 5f  |otify=>Wimp:Msg_|
00016980  34 30 30 34 30 3e 20 69  73 20 62 72 6f 61 64 63  |40040> is broadc|
00016990  61 73 74 2e 0a 00 00 00  44 41 54 41 15 00 00 00  |ast.....DATA....|
000169a0  23 20 72 65 64 69 72 65  63 74 69 6f 6e 00 00 00  |# redirection...|
000169b0  44 41 54 41 d2 00 00 00  45 63 6f 6e 65 74 20 52  |DATA....Econet R|
000169c0  65 63 65 69 76 65 0a 23  50 61 72 65 6e 74 20 65  |eceive.#Parent e|
000169d0  76 65 6e 74 5f 69 6e 64  65 78 0a 3d 3e 09 52 30  |vent_index.=>.R0|
000169e0  20 3d 09 31 34 20 28 65  76 65 6e 74 20 6e 75 6d  | =.14 (event num|
000169f0  62 65 72 29 0a 09 52 31  20 3d 09 72 65 63 65 69  |ber)..R1 =.recei|
00016a00  76 65 20 68 61 6e 64 6c  65 0a 09 52 32 20 3d 09  |ve handle..R2 =.|
00016a10  39 20 28 3c 73 74 61 74  75 73 20 52 65 63 65 69  |9 (<status Recei|
00016a20  76 65 64 3d 3e 65 63 6f  6e 65 74 5f 73 74 61 74  |ved=>econet_stat|
00016a30  75 73 65 73 3e 29 0a 09  52 33 20 3d 09 70 6f 72  |uses>)..R3 =.por|
00016a40  74 0a 0a 54 68 69 73 20  65 76 65 6e 74 20 69 73  |t..This event is|
00016a50  20 67 65 6e 65 72 61 74  65 64 20 77 68 65 6e 20  | generated when |
00016a60  74 68 65 20 45 63 6f 6e  65 74 20 63 6f 6d 70 6c  |the Econet compl|
00016a70  65 74 65 73 20 61 20 72  65 63 65 70 74 69 6f 6e  |etes a reception|
00016a80  2e 0a 00 00 44 41 54 41  ca 00 00 00 45 63 6f 6e  |....DATA....Econ|
00016a90  65 74 20 54 72 61 6e 73  6d 69 74 0a 23 50 61 72  |et Transmit.#Par|
00016aa0  65 6e 74 20 65 76 65 6e  74 5f 69 6e 64 65 78 0a  |ent event_index.|
00016ab0  3d 3e 09 52 30 20 3d 09  31 35 09 28 65 76 65 6e  |=>.R0 =.15.(even|
00016ac0  74 20 6e 75 6d 62 65 72  29 0a 09 52 31 20 3d 09  |t number)..R1 =.|
00016ad0  74 72 61 6e 73 6d 69 74  20 68 61 6e 64 6c 65 0a  |transmit handle.|
00016ae0  09 52 32 20 3d 09 3c 73  74 61 74 75 73 3d 3e 65  |.R2 =.<status=>e|
00016af0  63 6f 6e 65 74 5f 73 74  61 74 75 73 65 73 3e 0a  |conet_statuses>.|
00016b00  09 52 33 20 3d 09 70 6f  72 74 0a 0a 54 68 69 73  |.R3 =.port..This|
00016b10  20 65 76 65 6e 74 20 69  73 20 67 65 6e 65 72 61  | event is genera|
00016b20  74 65 64 20 77 68 65 6e  20 74 68 65 20 45 63 6f  |ted when the Eco|
00016b30  6e 65 74 20 63 6f 6d 70  6c 65 74 65 73 20 61 20  |net completes a |
00016b40  74 72 61 6e 73 6d 69 73  73 69 6f 6e 2e 0a 00 00  |transmission....|
00016b50  44 41 54 41 03 02 00 00  45 73 63 61 70 65 20 65  |DATA....Escape e|
00016b60  76 65 6e 74 0a 23 50 61  72 65 6e 74 20 65 76 65  |vent.#Parent eve|
00016b70  6e 74 5f 69 6e 64 65 78  0a 3d 3e 09 52 30 20 3d  |nt_index.=>.R0 =|
00016b80  09 36 20 28 65 76 65 6e  74 20 6e 75 6d 62 65 72  |.6 (event number|
00016b90  29 0a 0a 54 68 69 73 20  65 76 65 6e 74 20 69 73  |)..This event is|
00016ba0  20 67 65 6e 65 72 61 74  65 64 20 77 68 65 6e 20  | generated when |
00016bb0  61 6e 20 65 73 63 61 70  65 20 63 6f 6e 64 69 74  |an escape condit|
00016bc0  69 6f 6e 20 6f 63 63 75  72 73 20 64 75 65 20 74  |ion occurs due t|
00016bd0  6f 20 65 73 63 61 70 65  20 62 65 69 6e 67 20 70  |o escape being p|
00016be0  72 65 73 73 65 64 20 28  6f 72 20 72 65 63 65 69  |ressed (or recei|
00016bf0  76 65 64 20 69 6e 20 74  68 65 20 73 65 72 69 61  |ved in the seria|
00016c00  6c 20 62 75 66 66 65 72  20 77 69 74 68 20 3c 4f  |l buffer with <O|
00016c10  53 5f 42 79 74 65 20 31  38 31 3d 3e 4f 53 5f 42  |S_Byte 181=>OS_B|
00016c20  79 74 65 31 38 31 3e 20  65 6e 61 62 6c 65 64 29  |yte181> enabled)|
00016c30  2e 20 49 74 20 69 73 20  2a 6e 6f 74 2a 20 67 65  |. It is *not* ge|
00016c40  6e 65 72 61 74 65 64 20  62 79 20 63 61 6c 6c 69  |nerated by calli|
00016c50  6e 67 20 3c 4f 53 5f 42  79 74 65 20 31 32 35 3d  |ng <OS_Byte 125=|
00016c60  3e 4f 53 5f 42 79 74 65  31 32 35 3e 2e 0a 0a 49  |>OS_Byte125>...I|
00016c70  66 20 74 68 69 73 20 65  76 65 6e 74 20 69 73 20  |f this event is |
00016c80  65 6e 61 62 6c 65 64 20  74 68 65 6e 20 6b 65 79  |enabled then key|
00016c90  62 6f 61 72 64 20 65 73  63 61 70 65 73 20 67 65  |board escapes ge|
00016ca0  6e 65 72 61 74 65 20 74  68 69 73 20 65 76 65 6e  |nerate this even|
00016cb0  74 20 2a 69 6e 73 74 65  61 64 2a 20 6f 66 20 63  |t *instead* of c|
00016cc0  61 6c 6c 69 6e 67 20 74  68 65 20 3c 65 73 63 61  |alling the <esca|
00016cd0  70 65 20 68 61 6e 64 6c  65 72 3d 3e 4f 53 5f 68  |pe handler=>OS_h|
00016ce0  61 6e 64 6c 65 72 73 5f  65 73 63 61 70 65 3e 2e  |andlers_escape>.|
00016cf0  20 3c 4f 53 5f 42 79 74  65 20 31 32 35 3d 3e 4f  | <OS_Byte 125=>O|
00016d00  53 5f 42 79 74 65 31 32  35 3e 20 67 65 6e 65 72  |S_Byte125> gener|
00016d10  61 74 65 64 20 65 73 63  61 70 65 73 20 61 6c 77  |ated escapes alw|
00016d20  61 79 73 20 63 61 6c 6c  20 74 68 65 20 3c 65 73  |ays call the <es|
00016d30  63 61 70 65 20 68 61 6e  64 6c 65 72 3d 3e 4f 53  |cape handler=>OS|
00016d40  5f 68 61 6e 64 6c 65 72  73 5f 65 73 63 61 70 65  |_handlers_escape|
00016d50  3e 2e 0a 00 44 41 54 41  25 01 00 00 4f 75 74 70  |>...DATA%...Outp|
00016d60  75 74 20 62 75 66 66 65  72 20 65 6d 70 74 79 20  |ut buffer empty |
00016d70  65 76 65 6e 74 20 28 30  29 0a 23 50 61 72 65 6e  |event (0).#Paren|
00016d80  74 20 45 76 65 6e 74 5f  69 6e 64 65 78 0a 3d 3e  |t Event_index.=>|
00016d90  09 52 30 20 3d 09 30 20  28 65 76 65 6e 74 20 6e  |.R0 =.0 (event n|
00016da0  75 6d 62 65 72 29 0a 09  52 31 20 3d 09 3c 62 75  |umber)..R1 =.<bu|
00016db0  66 66 65 72 20 6e 75 6d  62 65 72 3d 3e 42 75 66  |ffer number=>Buf|
00016dc0  66 65 72 5f 62 75 66 66  65 72 73 3e 0a 0a 54 68  |fer_buffers>..Th|
00016dd0  69 73 20 65 76 65 6e 74  20 69 73 20 72 61 69 73  |is event is rais|
00016de0  65 64 20 77 68 65 6e 20  61 6e 20 6f 75 74 70 75  |ed when an outpu|
00016df0  74 20 62 75 66 66 65 72  20 77 68 69 63 68 20 68  |t buffer which h|
00016e00  61 73 20 3c 65 76 65 6e  74 20 67 65 6e 65 72 61  |as <event genera|
00016e10  74 69 6f 6e 20 65 6e 61  62 6c 65 64 3d 3e 42 75  |tion enabled=>Bu|
00016e20  66 66 65 72 5f 4d 6f 64  69 66 79 46 6c 61 67 73  |ffer_ModifyFlags|
00016e30  3e 20 69 73 20 65 6d 70  74 69 65 64 2c 20 6f 72  |> is emptied, or|
00016e40  20 61 6e 20 61 74 74 65  6d 70 74 20 69 73 20 6d  | an attempt is m|
00016e50  61 64 65 20 74 6f 20 72  65 6d 6f 76 65 20 61 20  |ade to remove a |
00016e60  61 6e 6f 74 68 65 72 20  62 79 74 65 20 77 68 65  |another byte whe|
00016e70  6e 20 65 6d 70 74 79 2e  0a 00 00 00 44 41 54 41  |n empty.....DATA|
00016e80  d0 01 00 00 49 6e 70 75  74 20 62 75 66 66 65 72  |....Input buffer|
00016e90  20 66 75 6c 6c 20 65 76  65 6e 74 20 28 31 29 0a  | full event (1).|
00016ea0  23 50 61 72 65 6e 74 20  45 76 65 6e 74 5f 69 6e  |#Parent Event_in|
00016eb0  64 65 78 0a 3d 3e 09 52  30 20 3d 09 31 20 28 65  |dex.=>.R0 =.1 (e|
00016ec0  76 65 6e 74 20 6e 75 6d  62 65 72 29 0a 09 52 31  |vent number)..R1|
00016ed0  20 3d 09 3c 62 75 66 66  65 72 20 6e 75 6d 62 65  | =.<buffer numbe|
00016ee0  72 3d 3e 42 75 66 66 65  72 5f 62 75 66 66 65 72  |r=>Buffer_buffer|
00016ef0  73 3e 2c 20 62 69 74 20  33 31 20 73 65 74 20 66  |s>, bit 31 set f|
00016f00  6f 72 20 62 6c 6f 63 6b  20 6f 70 65 72 61 74 69  |or block operati|
00016f10  6f 6e 2e 0a 09 52 32 20  3d 09 62 79 74 65 20 74  |on...R2 =.byte t|
00016f20  68 61 74 20 63 6f 75 6c  64 20 6e 6f 74 20 62 65  |hat could not be|
00016f30  20 69 6e 73 65 72 74 65  64 20 28 69 66 20 73 69  | inserted (if si|
00016f40  6e 67 6c 65 20 62 79 74  65 20 6f 70 65 72 61 74  |ngle byte operat|
00016f50  69 6f 6e 29 0a 09 20 09  70 6f 69 6e 74 65 72 20  |ion).. .pointer |
00016f60  74 6f 20 64 61 74 61 20  28 69 66 20 62 6c 6f 63  |to data (if bloc|
00016f70  6b 20 6f 70 65 72 61 74  69 6f 6e 29 0a 09 52 33  |k operation)..R3|
00016f80  20 3d 09 6e 75 6d 62 65  72 20 6f 66 20 62 79 74  | =.number of byt|
00016f90  65 73 20 6e 6f 74 20 69  6e 73 65 72 74 65 64 20  |es not inserted |
00016fa0  28 69 66 20 62 6c 6f 63  6b 20 6f 70 65 72 61 74  |(if block operat|
00016fb0  69 6f 6e 29 0a 0a 54 68  69 73 20 65 76 65 6e 74  |ion)..This event|
00016fc0  20 69 73 20 72 61 69 73  65 64 20 77 68 65 6e 20  | is raised when |
00016fd0  61 6e 20 61 74 74 65 6d  70 74 20 69 73 20 6d 61  |an attempt is ma|
00016fe0  64 65 20 74 6f 20 69 6e  73 65 72 74 20 61 20 63  |de to insert a c|
00016ff0  68 61 72 61 63 74 65 72  20 69 6e 74 6f 20 61 20  |haracter into a |
00017000  66 75 6c 6c 20 69 6e 70  75 74 20 62 75 66 66 65  |full input buffe|
00017010  72 20 77 68 69 63 68 20  68 61 73 20 3c 65 76 65  |r which has <eve|
00017020  6e 74 20 67 65 6e 65 72  61 74 69 6f 6e 20 65 6e  |nt generation en|
00017030  61 62 6c 65 64 3d 3e 42  75 66 66 65 72 5f 4d 6f  |abled=>Buffer_Mo|
00017040  64 69 66 79 46 6c 61 67  73 3e 2e 0a 44 41 54 41  |difyFlags>..DATA|
00017050  e6 00 00 00 53 74 61 72  74 20 6f 66 20 62 61 72  |....Start of bar|
00017060  20 65 76 65 6e 74 0a 23  50 61 72 65 6e 74 20 65  | event.#Parent e|
00017070  76 65 6e 74 5f 69 6e 64  65 78 0a 3d 3e 09 52 30  |vent_index.=>.R0|
00017080  20 3d 09 31 32 20 28 65  76 65 6e 74 20 6e 75 6d  | =.12 (event num|
00017090  62 65 72 29 0a 09 52 31  20 3d 09 32 0a 09 52 32  |ber)..R1 =.2..R2|
000170a0  20 3d 09 30 0a 0a 54 68  69 73 20 65 76 65 6e 74  | =.0..This event|
000170b0  20 69 73 20 67 65 6e 65  72 61 74 65 64 20 77 68  | is generated wh|
000170c0  65 6e 20 74 68 65 20 73  6f 75 6e 64 20 62 65 61  |en the sound bea|
000170d0  74 20 63 6f 75 6e 74 65  72 20 69 73 20 72 65 73  |t counter is res|
000170e0  65 74 2e 20 49 6e 20 66  75 74 75 72 65 20 52 32  |et. In future R2|
000170f0  20 6d 61 79 20 63 6f 6e  74 61 69 6e 20 74 68 65  | may contain the|
00017100  20 69 6e 76 6f 63 61 74  69 6f 6e 20 6e 75 6d 62  | invocation numb|
00017110  65 72 20 6f 66 20 74 68  65 20 74 61 73 6b 20 63  |er of the task c|
00017120  61 75 73 69 6e 67 20 74  68 65 20 65 76 65 6e 74  |ausing the event|
00017130  2e 0a 00 00 44 41 54 41  49 01 00 00 4d 49 44 49  |....DATAI...MIDI|
00017140  20 65 76 65 6e 74 20 28  31 37 29 0a 23 50 61 72  | event (17).#Par|
00017150  65 6e 74 20 45 76 65 6e  74 5f 69 6e 64 65 78 0a  |ent Event_index.|
00017160  3d 3e 09 52 30 20 3d 09  31 37 20 28 65 76 65 6e  |=>.R0 =.17 (even|
00017170  74 20 6e 75 6d 62 65 72  29 0a 09 52 31 20 3d 09  |t number)..R1 =.|
00017180  3c 45 76 65 6e 74 20 72  65 61 73 6f 6e 3d 3e 2e  |<Event reason=>.|
00017190  63 6f 64 65 3e 0a 0a 54  68 69 73 20 65 76 65 6e  |code>..This even|
000171a0  74 20 69 73 20 72 61 69  73 65 64 20 62 79 20 61  |t is raised by a|
000171b0  20 4d 49 44 49 20 63 61  72 64 2e 0a 23 53 75 62  | MIDI card..#Sub|
000171c0  70 61 67 65 20 63 6f 64  65 0a 4d 49 44 49 20 65  |page code.MIDI e|
000171d0  76 65 6e 74 20 72 65 61  73 6f 6e 73 0a 43 6f 64  |vent reasons.Cod|
000171e0  65 09 4d 65 61 6e 69 6e  67 0a 23 4c 69 6e 65 0a  |e.Meaning.#Line.|
000171f0  31 09 62 79 74 65 20 72  65 63 65 69 76 65 64 20  |1.byte received |
00017200  69 6e 74 6f 20 70 72 65  76 69 6f 75 73 6c 79 20  |into previously |
00017210  65 6d 70 74 79 20 62 75  66 66 65 72 0a 32 09 62  |empty buffer.2.b|
00017220  61 63 6b 67 72 6f 75 6e  64 20 4d 49 44 49 20 65  |ackground MIDI e|
00017230  72 72 6f 72 20 6f 63 63  75 72 72 65 64 0a 33 09  |rror occurred.3.|
00017240  53 63 68 65 64 75 6c 65  72 20 71 75 65 75 65 20  |Scheduler queue |
00017250  61 62 6f 75 74 20 74 6f  20 65 6d 70 74 79 20 2d  |about to empty -|
00017260  20 79 6f 75 20 63 61 6e  20 73 63 68 65 64 75 6c  | you can schedul|
00017270  65 20 6d 6f 72 65 20 64  61 74 61 2e 0a 00 00 00  |e more data.....|
00017280  44 41 54 41 50 01 00 00  44 65 76 69 63 65 20 6f  |DATAP...Device o|
00017290  76 65 72 72 75 6e 20 65  76 65 6e 74 0a 23 50 61  |verrun event.#Pa|
000172a0  72 65 6e 74 20 65 76 65  6e 74 5f 69 6e 64 65 78  |rent event_index|
000172b0  0a 3d 3e 09 52 30 20 3d  09 32 32 09 28 65 76 65  |.=>.R0 =.22.(eve|
000172c0  6e 74 20 6e 75 6d 62 65  72 29 0a 09 52 31 20 3d  |nt number)..R1 =|
000172d0  09 64 65 76 69 63 65 20  64 72 69 76 65 72 27 73  |.device driver's|
000172e0  20 68 61 6e 64 6c 65 0a  09 52 32 20 3d 09 66 69  | handle..R2 =.fi|
000172f0  6c 65 20 68 61 6e 64 6c  65 0a 09 52 33 20 3d 09  |le handle..R3 =.|
00017300  30 0a 0a 54 68 69 73 20  65 76 65 6e 74 20 69 73  |0..This event is|
00017310  20 67 65 6e 65 72 61 74  65 64 20 77 68 65 6e 20  | generated when |
00017320  3c 44 65 76 69 63 65 46  53 5f 52 65 63 65 69 76  |<DeviceFS_Receiv|
00017330  65 64 43 68 61 72 61 63  74 65 72 3e 20 69 73 20  |edCharacter> is |
00017340  63 61 6c 6c 65 64 20 66  6f 72 20 61 6e 20 75 6e  |called for an un|
00017350  62 75 66 66 65 72 65 64  20 73 74 72 65 61 6d 20  |buffered stream |
00017360  77 68 65 72 65 20 74 68  65 20 70 72 65 76 69 6f  |where the previo|
00017370  75 73 6c 79 20 72 65 63  65 69 76 65 64 20 63 68  |usly received ch|
00017380  61 72 61 63 74 65 72 20  68 61 73 20 6e 6f 74 20  |aracter has not |
00017390  62 65 65 6e 20 72 65 61  64 2e 20 54 68 65 20 6e  |been read. The n|
000173a0  65 77 20 63 68 61 72 61  63 74 65 72 20 6f 76 65  |ew character ove|
000173b0  72 77 72 69 74 65 73 20  74 68 65 20 70 72 65 76  |rwrites the prev|
000173c0  69 6f 75 73 20 63 68 61  72 61 63 74 65 72 2e 0a  |ious character..|
000173d0  44 41 54 41 c7 00 00 00  50 6f 72 74 61 62 6c 65  |DATA....Portable|
000173e0  20 42 4d 55 20 65 76 65  6e 74 0a 23 50 61 72 65  | BMU event.#Pare|
000173f0  6e 74 20 65 76 65 6e 74  5f 69 6e 64 65 78 0a 3d  |nt event_index.=|
00017400  3e 09 52 30 20 3d 09 32  20 28 65 76 65 6e 74 20  |>.R0 =.2 (event |
00017410  6e 75 6d 62 65 72 29 0a  09 52 31 20 3d 09 3c 42  |number)..R1 =.<B|
00017420  4d 55 20 66 6c 61 67 73  3d 3e 50 6f 72 74 61 62  |MU flags=>Portab|
00017430  6c 65 5f 42 4d 55 66 6c  61 67 73 3e 0a 0a 54 68  |le_BMUflags>..Th|
00017440  69 73 20 65 76 65 6e 74  20 69 73 20 67 65 6e 65  |is event is gene|
00017450  72 61 74 65 64 20 77 68  65 6e 20 61 6e 20 69 6e  |rated when an in|
00017460  74 65 72 72 75 70 74 73  20 69 73 20 72 65 63 65  |terrupts is rece|
00017470  69 76 65 64 20 66 72 6f  6d 20 74 68 65 20 62 61  |ived from the ba|
00017480  74 74 65 72 79 20 6d 61  6e 61 67 65 6d 65 6e 74  |ttery management|
00017490  20 75 6e 69 74 2e 0a 00  44 41 54 41 d3 00 00 00  | unit...DATA....|
000174a0  41 44 43 20 63 6f 6e 76  65 72 73 69 6f 6e 20 65  |ADC conversion e|
000174b0  6e 64 65 64 20 65 76 65  6e 74 20 28 33 29 0a 23  |nded event (3).#|
000174c0  50 61 72 65 6e 74 20 45  76 65 6e 74 5f 69 6e 64  |Parent Event_ind|
000174d0  65 78 0a 3d 3e 09 52 30  20 3d 09 33 20 28 65 76  |ex.=>.R0 =.3 (ev|
000174e0  65 6e 74 20 6e 75 6d 62  65 72 29 0a 09 52 31 20  |ent number)..R1 |
000174f0  3d 09 63 68 61 6e 6e 65  6c 20 74 68 61 74 20 6a  |=.channel that j|
00017500  75 73 74 20 63 6f 6e 76  65 72 74 65 64 0a 0a 54  |ust converted..T|
00017510  68 69 73 20 65 76 65 6e  74 20 69 73 20 72 61 69  |his event is rai|
00017520  73 65 64 20 62 79 20 61  20 42 42 43 20 49 2f 4f  |sed by a BBC I/O|
00017530  20 63 61 72 64 20 77 68  65 6e 20 61 6e 20 61 6e  | card when an an|
00017540  61 6c 6f 67 75 65 2d 74  6f 2d 64 69 67 69 74 61  |alogue-to-digita|
00017550  6c 20 63 6f 6e 76 65 72  73 69 6f 6e 20 69 73 20  |l conversion is |
00017560  63 6f 6d 70 6c 65 74 65  64 2e 0a 00 44 41 54 41  |completed...DATA|
00017570  c7 01 00 00 56 65 72 74  69 63 61 6c 20 73 79 6e  |....Vertical syn|
00017580  63 20 65 76 65 6e 74 20  28 34 29 0a 23 50 61 72  |c event (4).#Par|
00017590  65 6e 74 20 45 76 65 6e  74 5f 69 6e 64 65 78 0a  |ent Event_index.|
000175a0  3d 3e 09 52 30 20 3d 09  34 20 28 65 76 65 6e 74  |=>.R0 =.4 (event|
000175b0  20 6e 75 6d 62 65 72 29  0a 0a 54 68 69 73 20 65  | number)..This e|
000175c0  76 65 6e 74 20 69 73 20  72 61 69 73 65 64 20 77  |vent is raised w|
000175d0  68 65 6e 20 74 68 65 20  65 6c 65 63 74 72 6f 6e  |hen the electron|
000175e0  20 62 65 61 6d 20 72 65  61 63 68 65 73 20 74 68  | beam reaches th|
000175f0  65 20 62 6f 74 74 6f 6d  20 6f 66 20 74 68 65 20  |e bottom of the |
00017600  64 69 73 70 6c 61 79 20  61 72 65 61 20 61 6e 64  |display area and|
00017610  20 69 73 20 61 62 6f 75  74 20 74 6f 20 73 74 61  | is about to sta|
00017620  72 74 20 64 69 73 70 6c  61 79 69 6e 67 20 62 6f  |rt displaying bo|
00017630  72 64 65 72 20 63 6f 6c  6f 75 72 2e 20 54 68 69  |rder colour. Thi|
00017640  73 20 63 6f 72 72 65 73  70 6f 6e 64 73 20 74 6f  |s corresponds to|
00017650  20 74 68 65 20 74 69 6d  65 20 74 68 61 74 20 3c  | the time that <|
00017660  4f 53 5f 42 79 74 65 20  31 39 3d 3e 4f 53 5f 42  |OS_Byte 19=>OS_B|
00017670  79 74 65 30 31 39 3e 20  72 65 74 75 72 6e 73 2e  |yte019> returns.|
00017680  20 54 68 65 20 66 72 65  71 75 65 6e 63 79 20 6f  | The frequency o|
00017690  66 20 74 68 69 73 20 65  76 65 6e 74 20 64 65 70  |f this event dep|
000176a0  65 6e 64 73 20 6f 6e 20  74 68 65 20 73 63 61 6e  |ends on the scan|
000176b0  20 72 61 74 65 20 6f 66  20 74 68 65 20 6d 6f 6e  | rate of the mon|
000176c0  69 74 6f 72 2e 0a 0a 49  66 20 79 6f 75 20 77 69  |itor...If you wi|
000176d0  73 68 20 74 6f 20 73 79  6e 63 68 72 6f 6e 69 73  |sh to synchronis|
000176e0  65 20 6d 75 73 69 63 2c  20 79 6f 75 20 73 68 6f  |e music, you sho|
000176f0  75 6c 64 20 70 72 6f 62  61 62 6c 79 20 75 73 65  |uld probably use|
00017700  20 3c 54 69 63 6b 65 72  56 3d 3e 56 65 63 74 6f  | <TickerV=>Vecto|
00017710  72 5f 54 69 63 6b 65 72  56 3e 20 72 61 74 68 65  |r_TickerV> rathe|
00017720  72 20 74 68 61 6e 20 74  68 69 73 20 65 76 65 6e  |r than this even|
00017730  74 2e 0a 00 44 41 54 41  a6 00 00 00 49 6e 74 65  |t...DATA....Inte|
00017740  72 76 61 6c 20 74 69 6d  65 72 20 65 76 65 6e 74  |rval timer event|
00017750  20 28 35 29 0a 23 50 61  72 65 6e 74 20 45 76 65  | (5).#Parent Eve|
00017760  6e 74 5f 69 6e 64 65 78  0a 3d 3e 09 52 30 20 3d  |nt_index.=>.R0 =|
00017770  09 35 20 28 65 76 65 6e  74 20 6e 75 6d 62 65 72  |.5 (event number|
00017780  29 0a 0a 54 68 69 73 20  65 76 65 6e 74 20 69 73  |)..This event is|
00017790  20 72 61 69 73 65 64 20  77 68 65 6e 20 74 68 65  | raised when the|
000177a0  20 69 6e 74 65 72 76 61  6c 20 74 69 6d 65 72 20  | interval timer |
000177b0  63 72 6f 73 73 65 73 20  7a 65 72 6f 20 28 73 65  |crosses zero (se|
000177c0  65 20 3c 4f 53 5f 57 6f  72 64 20 34 3d 3e 4f 53  |e <OS_Word 4=>OS|
000177d0  5f 57 6f 72 64 34 3e 29  2e 0a 00 00 44 41 54 41  |_Word4>)....DATA|
000177e0  36 01 00 00 52 53 34 32  33 20 65 72 72 6f 72 20  |6...RS423 error |
000177f0  65 76 65 6e 74 0a 23 50  61 72 65 6e 74 20 65 76  |event.#Parent ev|
00017800  65 6e 74 5f 69 6e 64 65  78 0a 3d 3e 09 52 30 20  |ent_index.=>.R0 |
00017810  3d 09 37 20 28 65 76 65  6e 74 20 6e 75 6d 62 65  |=.7 (event numbe|
00017820  72 29 0a 09 52 31 20 3d  09 28 70 73 65 75 64 6f  |r)..R1 =.(pseudo|
00017830  20 36 38 35 30 20 73 74  61 74 75 73 20 72 65 67  | 6850 status reg|
00017840  69 73 74 65 72 29 20 3e  3e 20 31 0a 09 52 32 20  |ister) >> 1..R2 |
00017850  3d 09 63 68 61 72 61 63  74 65 72 20 72 65 63 65  |=.character rece|
00017860  69 76 65 64 0a 0a 54 68  69 73 20 65 76 65 6e 74  |ived..This event|
00017870  20 69 73 20 67 65 6e 65  72 61 74 65 64 20 77 68  | is generated wh|
00017880  65 6e 20 61 20 73 65 72  69 61 6c 20 65 72 72 6f  |en a serial erro|
00017890  72 20 69 73 20 64 65 74  65 63 74 65 64 2e 20 54  |r is detected. T|
000178a0  68 65 20 65 72 72 6f 72  20 69 73 20 73 70 65 63  |he error is spec|
000178b0  69 66 69 65 64 20 62 79  20 62 69 74 73 20 69 6e  |ified by bits in|
000178c0  20 52 31 3a 0a 0a 42 69  74 09 4d 65 61 69 6e 69  | R1:..Bit.Meaini|
000178d0  6e 67 20 77 68 65 6e 20  73 65 74 0a 23 4c 69 6e  |ng when set.#Lin|
000178e0  65 0a 33 09 46 72 61 6d  69 6e 67 20 65 72 72 6f  |e.3.Framing erro|
000178f0  72 0a 34 09 4f 76 65 72  2d 72 75 6e 20 65 72 72  |r.4.Over-run err|
00017900  6f 72 0a 35 09 50 61 72  69 74 79 20 65 72 72 6f  |or.5.Parity erro|
00017910  72 0a 00 00 44 41 54 41  c7 00 00 00 55 73 65 72  |r...DATA....User|
00017920  20 65 76 65 6e 74 0a 23  50 61 72 65 6e 74 20 65  | event.#Parent e|
00017930  76 65 6e 74 5f 69 6e 64  65 78 0a 3d 3e 09 52 30  |vent_index.=>.R0|
00017940  20 3d 09 39 20 28 65 76  65 6e 74 20 6e 75 6d 62  | =.9 (event numb|
00017950  65 72 29 0a 09 52 31 2e  2e 2e 20 75 73 65 72 20  |er)..R1... user |
00017960  70 61 72 61 6d 65 74 65  72 73 0a 0a 54 68 69 73  |parameters..This|
00017970  20 65 76 65 6e 74 20 69  73 20 67 65 6e 65 72 61  | event is genera|
00017980  74 65 64 20 77 68 65 6e  20 74 68 65 20 75 73 65  |ted when the use|
00017990  72 20 63 61 6c 6c 73 20  3c 4f 53 5f 47 65 6e 65  |r calls <OS_Gene|
000179a0  72 61 74 65 45 76 65 6e  74 3e 20 77 69 74 68 20  |rateEvent> with |
000179b0  52 30 3d 39 2c 20 61 6e  64 20 69 73 20 65 6e 74  |R0=9, and is ent|
000179c0  65 72 65 64 20 69 6e 20  53 56 43 20 6d 6f 64 65  |ered in SVC mode|
000179d0  2c 20 6e 6f 74 20 49 52  51 2e 0a 00 44 49 52 24  |, not IRQ...DIR$|
000179e0  1c 03 00 00 1c 03 00 00  f8 7c 01 00 47 fd ff ff  |.........|..G...|
000179f0  1f b4 a3 ce ef 00 00 00  13 00 00 00 00 00 00 00  |................|
00017a00  21 52 6f 6f 74 00 00 00  e8 7d 01 00 48 fd ff ff  |!Root....}..H...|
00017a10  3b f9 5d 25 97 05 00 00  13 00 00 00 00 00 00 00  |;.]%............|
00017a20  44 69 73 63 00 00 00 00  80 83 01 00 47 fd ff ff  |Disc........G...|
00017a30  4a ee b8 cd f4 02 00 00  13 00 00 00 00 00 00 00  |J...............|
00017a40  46 6f 72 6d 61 74 00 00  74 86 01 00 46 fd ff ff  |Format..t...F...|
00017a50  65 f6 24 26 67 00 00 00  13 00 00 00 00 00 00 00  |e.$&g...........|
00017a60  64 69 73 63 61 64 64 72  65 73 73 00 dc 86 01 00  |discaddress.....|
00017a70  48 ff ff ff b7 ca ba 1f  6c 07 00 00 13 00 00 00  |H.......l.......|
00017a80  00 00 00 00 43 72 65 61  74 65 00 00 48 8e 01 00  |....Create..H...|
00017a90  48 fd ff ff ea e1 68 26  6f 03 00 00 13 00 00 00  |H.....h&o.......|
00017aa0  00 00 00 00 66 73 64 65  73 63 72 69 70 74 6f 72  |....fsdescriptor|
00017ab0  00 00 00 00 b8 91 01 00  46 ff ff ff 82 b7 a4 d7  |........F.......|
00017ac0  df 01 00 00 13 00 00 00  00 00 00 00 44 65 73 63  |............Desc|
00017ad0  72 69 62 65 44 69 73 63  00 00 00 00 98 93 01 00  |ribeDisc........|
00017ae0  48 ff ff ff a3 d4 ba 1f  ba 00 00 00 13 00 00 00  |H...............|
00017af0  00 00 00 00 44 69 73 63  61 72 64 52 65 61 64 53  |....DiscardReadS|
00017b00  65 63 74 6f 72 73 43 61  63 68 65 00 54 94 01 00  |ectorsCache.T...|
00017b10  48 ff ff ff 12 d7 ba 1f  3b 04 00 00 13 00 00 00  |H.......;.......|
00017b20  00 00 00 00 44 69 73 63  46 6f 72 6d 61 74 00 00  |....DiscFormat..|
00017b30  90 98 01 00 46 fd ff ff  fd 04 a6 d7 ec 00 00 00  |....F...........|
00017b40  13 00 00 00 00 00 00 00  64 65 6e 73 69 74 69 65  |........densitie|
00017b50  73 00 00 00 7c 99 01 00  46 fd ff ff ee a1 a6 d7  |s...|...F.......|
00017b60  7a 00 00 00 13 00 00 00  00 00 00 00 66 6f 72 6d  |z...........form|
00017b70  61 74 73 70 65 63 00 00  f8 99 01 00 48 ff ff ff  |atspec......H...|
00017b80  ef d9 ba 1f fb 00 00 00  13 00 00 00 00 00 00 00  |................|
00017b90  44 72 69 76 65 73 00 00  f4 9a 01 00 48 ff ff ff  |Drives......H...|
00017ba0  23 dc ba 1f 7a 02 00 00  13 00 00 00 00 00 00 00  |#...z...........|
00017bb0  46 6c 6f 70 70 79 53 74  72 75 63 74 75 72 65 00  |FloppyStructure.|
00017bc0  70 9d 01 00 48 ff ff ff  56 bb ba 1f bf 01 00 00  |p...H...V.......|
00017bd0  13 00 00 00 00 00 00 00  46 72 65 65 53 70 61 63  |........FreeSpac|
00017be0  65 00 00 00 30 9f 01 00  48 ff ff ff 09 c3 ba 1f  |e...0...H.......|
00017bf0  36 02 00 00 13 00 00 00  00 00 00 00 4c 61 79 6f  |6...........Layo|
00017c00  75 74 53 74 72 75 63 74  75 72 65 00 68 a1 01 00  |utStructure.h...|
00017c10  47 fd ff ff 05 86 9f ce  e7 01 00 00 33 00 00 00  |G...........3...|
00017c20  00 00 00 00 64 65 66 65  63 74 6c 69 73 74 00 00  |....defectlist..|
00017c30  50 a3 01 00 47 ff ff ff  15 78 a3 ce 9b 00 00 00  |P...G....x......|
00017c40  13 00 00 00 00 00 00 00  53 65 63 74 6f 72 4f 70  |........SectorOp|
00017c50  00 00 00 00 ec a3 01 00  48 ff ff ff 25 e6 ba 1f  |........H...%...|
00017c60  94 01 00 00 13 00 00 00  00 00 00 00 46 72 65 65  |............Free|
00017c70  53 70 61 63 65 36 34 00  80 a5 01 00 48 fd ff ff  |Space64.....H...|
00017c80  bb 53 9b 22 a8 0a 00 00  33 00 00 00 00 00 00 00  |.S."....3.......|
00017c90  65 72 72 6f 72 73 00 00  28 b0 01 00 48 fd ff ff  |errors..(...H...|
00017ca0  8b a2 94 1a 2c 01 00 00  13 00 00 00 00 00 00 00  |....,...........|
00017cb0  63 79 63 6c 65 69 64 00  54 b1 01 00 48 fd ff ff  |cycleid.T...H...|
00017cc0  78 e2 80 2b 0c 01 00 00  13 01 00 00 00 00 00 00  |x..+............|
00017cd0  4d 69 73 63 4f 70 00 00  04 c9 01 00 48 fd ff ff  |MiscOp......H...|
00017ce0  56 e4 80 2b 64 01 00 00  13 01 00 00 00 00 00 00  |V..+d...........|
00017cf0  44 69 73 63 4f 70 00 00  44 41 54 41 ef 00 00 00  |DiscOp..DATA....|
00017d00  46 69 6c 65 43 6f 72 65  0a 23 50 61 72 65 6e 74  |FileCore.#Parent|
00017d10  20 21 52 6f 6f 74 0a 23  50 72 65 66 69 78 20 46  | !Root.#Prefix F|
00017d20  69 6c 65 63 6f 72 65 5f  0a 23 54 61 62 6c 65 20  |ilecore_.#Table |
00017d30  43 6f 6c 75 6d 6e 73 20  33 0a 3c 43 72 65 61 74  |Columns 3.<Creat|
00017d40  65 3e 0a 3c 44 65 73 63  72 69 62 65 44 69 73 63  |e>.<DescribeDisc|
00017d50  3e 0a 3c 44 69 73 63 61  72 64 52 65 61 64 53 65  |>.<DiscardReadSe|
00017d60  63 74 6f 72 73 43 61 63  68 65 3e 0a 3c 44 69 73  |ctorsCache>.<Dis|
00017d70  63 46 6f 72 6d 61 74 3e  0a 3c 44 69 73 63 4f 70  |cFormat>.<DiscOp|
00017d80  3e 0a 3c 44 72 69 76 65  73 3e 0a 3c 46 6c 6f 70  |>.<Drives>.<Flop|
00017d90  70 79 53 74 72 75 63 74  75 72 65 3e 0a 3c 46 72  |pyStructure>.<Fr|
00017da0  65 65 53 70 61 63 65 3e  0a 3c 4c 61 79 6f 75 74  |eeSpace>.<Layout|
00017db0  53 74 72 75 63 74 75 72  65 3e 0a 3c 4d 69 73 63  |Structure>.<Misc|
00017dc0  4f 70 3e 0a 3c 53 65 63  74 6f 72 4f 70 3e 0a 3c  |Op>.<SectorOp>.<|
00017dd0  46 72 65 65 53 70 61 63  65 36 34 3e 0a 23 45 6e  |FreeSpace64>.#En|
00017de0  64 54 61 62 6c 65 0a 00  44 41 54 41 97 05 00 00  |dTable..DATA....|
00017df0  46 69 6c 65 43 6f 72 65  20 64 69 73 63 20 64 65  |FileCore disc de|
00017e00  73 63 72 69 70 74 6f 72  0a 4f 66 66 73 65 74 09  |scriptor.Offset.|
00017e10  4e 61 6d 65 09 09 4d 65  61 6e 69 6e 67 0a 23 4c  |Name..Meaning.#L|
00017e20  69 6e 65 0a 30 09 6c 6f  67 32 73 65 63 73 69 7a  |ine.0.log2secsiz|
00017e30  65 09 4c 6f 67 32 20 6f  66 20 73 65 63 74 6f 72  |e.Log2 of sector|
00017e40  20 73 69 7a 65 20 28 53  65 63 74 6f 72 20 73 69  | size (Sector si|
00017e50  7a 65 20 3d 20 32 5e 78  29 0a 31 09 73 65 63 73  |ze = 2^x).1.secs|
00017e60  70 65 72 74 72 61 63 6b  09 6e 75 6d 62 65 72 20  |pertrack.number |
00017e70  6f 66 20 73 65 63 74 6f  72 73 20 70 65 72 20 74  |of sectors per t|
00017e80  72 61 63 6b 0a 32 09 68  65 61 64 73 09 09 6e 75  |rack.2.heads..nu|
00017e90  6d 62 65 72 20 6f 66 20  64 69 73 63 20 68 65 61  |mber of disc hea|
00017ea0  64 73 2c 20 69 66 20 69  6e 74 65 72 6c 65 61 76  |ds, if interleav|
00017eb0  65 64 20 6f 74 68 65 72  77 69 73 65 20 2d 31 20  |ed otherwise -1 |
00017ec0  28 31 20 66 6f 72 20 6f  6c 64 20 64 69 72 65 63  |(1 for old direc|
00017ed0  74 6f 72 69 65 73 29 0a  33 09 64 65 6e 73 69 74  |tories).3.densit|
00017ee0  79 09 09 3c 64 69 73 63  20 64 65 6e 73 69 74 79  |y..<disc density|
00017ef0  3d 3e 46 69 6c 65 43 6f  72 65 5f 64 65 6e 73 69  |=>FileCore_densi|
00017f00  74 69 65 73 3e 0a 34 09  69 64 6c 65 6e 09 09 6c  |ties>.4.idlen..l|
00017f10  65 6e 67 74 68 20 6f 66  20 69 64 20 66 69 65 6c  |ength of id fiel|
00017f20  64 20 6f 66 20 61 20 6d  61 70 20 66 72 61 67 6d  |d of a map fragm|
00017f30  65 6e 74 20 28 69 6e 20  62 69 74 73 29 0a 35 09  |ent (in bits).5.|
00017f40  6c 6f 67 32 62 70 6d 70  09 6c 6f 67 32 20 6f 66  |log2bpmp.log2 of|
00017f50  20 6e 75 6d 62 65 72 20  6f 66 20 62 79 74 65 73  | number of bytes|
00017f60  20 70 65 72 20 6d 61 70  20 62 69 74 73 0a 36 09  | per map bits.6.|
00017f70  73 6b 65 77 09 09 74 72  61 63 6b 20 74 6f 20 74  |skew..track to t|
00017f80  72 61 63 6b 20 73 65 63  74 6f 72 20 73 6b 65 77  |rack sector skew|
00017f90  20 66 6f 72 20 72 61 6e  64 6f 6d 20 61 63 63 65  | for random acce|
00017fa0  73 73 20 66 69 6c 65 20  61 6c 6c 6f 63 61 74 69  |ss file allocati|
00017fb0  6f 6e 0a 37 09 62 6f 6f  74 6f 70 74 69 6f 6e 09  |on.7.bootoption.|
00017fc0  62 6f 6f 74 20 6f 70 74  69 6f 6e 20 28 61 73 20  |boot option (as |
00017fd0  69 6e 20 2a 4f 70 74 20  34 2c 6e 29 0a 38 09 6c  |in *Opt 4,n).8.l|
00017fe0  6f 77 73 65 63 74 6f 72  09 6c 6f 77 65 73 74 20  |owsector.lowest |
00017ff0  6e 75 6d 62 65 72 65 64  20 73 65 63 74 6f 72 20  |numbered sector |
00018000  2b 20 3c 64 69 73 63 20  66 6c 61 67 73 3d 3e 2e  |+ <disc flags=>.|
00018010  66 6c 61 67 73 3e 0a 39  09 6e 7a 6f 6e 65 73 09  |flags>.9.nzones.|
00018020  09 6e 75 6d 62 65 72 20  6f 66 20 7a 6f 6e 65 73  |.number of zones|
00018030  20 69 6e 20 74 68 65 20  6d 61 70 0a 41 2d 42 09  | in the map.A-B.|
00018040  7a 6f 6e 65 5f 73 70 61  72 65 09 6e 75 6d 62 65  |zone_spare.numbe|
00018050  72 20 6f 66 20 6e 6f 6e  2d 61 6c 6c 6f 63 61 74  |r of non-allocat|
00018060  69 6f 6e 20 62 69 74 73  20 62 65 74 77 65 65 6e  |ion bits between|
00018070  20 7a 6f 6e 65 73 0a 43  2d 46 09 72 6f 6f 74 09  | zones.C-F.root.|
00018080  09 64 69 73 63 20 61 64  64 72 65 73 73 20 6f 66  |.disc address of|
00018090  20 72 6f 6f 74 20 64 69  72 65 63 74 6f 72 79 0a  | root directory.|
000180a0  31 30 2d 31 33 09 64 69  73 63 5f 73 69 7a 65 09  |10-13.disc_size.|
000180b0  64 69 73 63 20 73 69 7a  65 20 69 6e 20 62 79 74  |disc size in byt|
000180c0  65 73 0a 31 34 2d 31 35  09 64 69 73 63 5f 69 64  |es.14-15.disc_id|
000180d0  09 09 64 69 73 63 20 3c  63 79 63 6c 65 20 69 64  |..disc <cycle id|
000180e0  3d 3e 46 69 6c 65 43 6f  72 65 5f 63 79 63 6c 65  |=>FileCore_cycle|
000180f0  69 64 3e 0a 31 36 2d 31  46 09 64 69 73 63 5f 6e  |id>.16-1F.disc_n|
00018100  61 6d 65 09 64 69 73 63  20 6e 61 6d 65 20 28 73  |ame.disc name (s|
00018110  70 61 63 65 64 20 74 6f  20 31 30 20 63 68 61 72  |paced to 10 char|
00018120  73 2c 20 6e 6f 20 74 65  72 6d 69 6e 61 74 6f 72  |s, no terminator|
00018130  29 0a 32 30 2d 32 33 09  64 69 73 63 74 79 70 65  |).20-23.disctype|
00018140  09 3c 66 69 6c 65 74 79  70 65 20 67 69 76 65 6e  |.<filetype given|
00018150  20 74 6f 20 64 69 73 63  3d 3e 46 69 6c 65 74 79  | to disc=>Filety|
00018160  70 65 73 3a 21 52 6f 6f  74 3e 0a 0a 7b 2a 7d 27  |pes:!Root>..{*}'|
00018170  53 6d 61 6c 6c 27 20 64  69 73 63 73 20 28 50 72  |Small' discs (Pr|
00018180  65 2d 52 49 53 43 20 4f  53 20 33 2e 36 29 20 3a  |e-RISC OS 3.6) :|
00018190  7b 2a 7d 0a 32 34 2d 33  46 09 20 09 09 72 65 73  |{*}.24-3F. ..res|
000181a0  65 72 76 65 64 2c 20 6d  75 73 74 20 62 65 20 30  |erved, must be 0|
000181b0  0a 0a 7b 2a 7d 27 4c 61  72 67 65 27 20 64 69 73  |..{*}'Large' dis|
000181c0  63 73 20 28 52 49 53 43  20 4f 53 20 33 2e 36 20  |cs (RISC OS 3.6 |
000181d0  61 6e 64 20 6c 61 74 65  72 29 20 3a 7b 2a 7d 0a  |and later) :{*}.|
000181e0  32 34 2d 32 37 09 64 69  73 63 5f 73 69 7a 65 32  |24-27.disc_size2|
000181f0  09 68 69 67 68 20 77 6f  72 64 20 6f 66 20 64 69  |.high word of di|
00018200  73 63 20 73 69 7a 65 0a  32 38 09 73 68 61 72 65  |sc size.28.share|
00018210  5f 73 69 7a 65 09 62 30  2d 33 3a 20 6c 6f 67 32  |_size.b0-3: log2|
00018220  20 73 68 61 72 65 20 73  69 7a 65 20 67 72 61 6e  | share size gran|
00018230  75 6c 61 72 69 74 79 20  28 69 6e 20 73 65 63 74  |ularity (in sect|
00018240  6f 72 73 29 0a 09 20 09  09 62 34 2d 37 3a 20 72  |ors).. ..b4-7: r|
00018250  65 73 65 72 76 65 64 2c  20 6d 75 73 74 20 62 65  |eserved, must be|
00018260  20 30 0a 32 39 09 62 69  67 5f 66 6c 61 67 09 62  | 0.29.big_flag.b|
00018270  30 3a 20 73 65 74 20 69  66 20 74 68 69 73 20 69  |0: set if this i|
00018280  73 20 61 20 27 6c 61 72  67 65 27 20 64 69 73 63  |s a 'large' disc|
00018290  0a 09 20 09 09 62 31 2d  37 3a 20 72 65 73 65 72  |.. ..b1-7: reser|
000182a0  76 65 64 2c 20 6d 75 73  74 20 62 65 20 30 0a 32  |ved, must be 0.2|
000182b0  41 2d 33 46 09 20 09 09  72 65 73 65 72 76 65 64  |A-3F. ..reserved|
000182c0  2c 20 6d 75 73 74 20 62  65 20 30 0a 23 73 75 62  |, must be 0.#sub|
000182d0  70 61 67 65 20 66 6c 61  67 73 0a 44 69 73 63 20  |page flags.Disc |
000182e0  64 65 73 63 72 69 70 74  69 6f 6e 20 66 6c 61 67  |description flag|
000182f0  73 0a 62 69 74 73 09 4d  65 61 6e 69 6e 67 0a 23  |s.bits.Meaning.#|
00018300  6c 69 6e 65 0a 30 2d 35  09 6c 6f 77 65 73 74 20  |line.0-5.lowest |
00018310  6e 75 6d 62 65 72 65 64  20 73 65 63 74 6f 72 20  |numbered sector |
00018320  69 64 20 6f 6e 20 61 20  74 72 61 63 6b 0a 36 09  |id on a track.6.|
00018330  69 66 20 73 65 74 2c 20  74 72 65 61 74 20 73 69  |if set, treat si|
00018340  64 65 73 20 61 73 20 61  20 73 65 71 75 65 6e 63  |des as a sequenc|
00018350  65 20 28 6e 6f 74 20 69  6e 74 65 72 6c 65 61 76  |e (not interleav|
00018360  65 64 29 0a 37 09 69 66  20 73 65 74 2c 20 64 69  |ed).7.if set, di|
00018370  73 63 20 69 73 20 34 30  20 74 72 61 63 6b 0a 00  |sc is 40 track..|
00018380  44 41 54 41 f4 02 00 00  44 69 73 63 20 66 6f 72  |DATA....Disc for|
00018390  6d 61 74 20 62 6c 6f 63  6b 0a 4f 66 66 73 65 74  |mat block.Offset|
000183a0  09 4d 65 61 6e 69 6e 67  0a 23 4c 69 6e 65 0a 30  |.Meaning.#Line.0|
000183b0  09 53 65 63 74 6f 72 20  73 69 7a 65 0a 34 09 47  |.Sector size.4.G|
000183c0  61 70 20 31 20 73 69 64  65 20 30 0a 38 09 47 61  |ap 1 side 0.8.Ga|
000183d0  70 20 31 20 73 69 64 65  20 31 0a 43 09 47 61 70  |p 1 side 1.C.Gap|
000183e0  20 33 0a 31 30 09 53 65  63 74 6f 72 73 20 70 65  | 3.10.Sectors pe|
000183f0  72 20 74 72 61 63 6b 0a  31 31 09 3c 44 65 6e 73  |r track.11.<Dens|
00018400  69 74 79 3d 3e 46 69 6c  65 43 6f 72 65 5f 64 65  |ity=>FileCore_de|
00018410  6e 73 69 74 69 65 73 3e  0a 31 32 09 3c 4f 70 74  |nsities>.12.<Opt|
00018420  69 6f 6e 73 3d 3e 2e 6f  70 74 69 6f 6e 73 3e 0a  |ions=>.options>.|
00018430  31 33 09 53 74 61 72 74  20 73 65 63 74 6f 72 20  |13.Start sector |
00018440  6f 6e 20 61 20 74 72 61  63 6b 0a 31 34 09 53 65  |on a track.14.Se|
00018450  63 74 6f 72 20 69 6e 74  65 72 6c 65 61 76 65 0a  |ctor interleave.|
00018460  31 35 09 53 69 64 65 2f  73 69 64 65 20 73 65 63  |15.Side/side sec|
00018470  74 6f 72 20 73 6b 65 77  20 28 73 69 67 6e 65 64  |tor skew (signed|
00018480  29 0a 31 36 09 54 72 61  63 6b 2f 74 72 61 63 6b  |).16.Track/track|
00018490  20 73 65 63 74 6f 72 20  73 6b 65 77 20 28 73 69  | sector skew (si|
000184a0  67 6e 65 64 29 0a 31 37  09 53 65 63 74 6f 72 20  |gned).17.Sector |
000184b0  66 69 6c 6c 20 76 61 6c  75 65 0a 31 38 09 4e 75  |fill value.18.Nu|
000184c0  6d 62 65 72 20 6f 66 20  74 72 61 63 6b 73 20 74  |mber of tracks t|
000184d0  6f 20 66 6f 72 6d 61 74  20 28 69 65 20 63 79 6c  |o format (ie cyl|
000184e0  69 6e 64 65 72 73 2f 64  72 69 76 65 3a 20 75 73  |inders/drive: us|
000184f0  75 61 6c 6c 79 20 38 30  29 0a 31 43 2d 32 33 09  |ually 80).1C-23.|
00018500  52 65 73 65 72 76 65 64  2c 20 6d 75 73 74 20 62  |Reserved, must b|
00018510  65 20 30 0a 32 34 09 73  65 63 74 6f 72 20 69 64  |e 0.24.sector id|
00018520  20 62 75 66 66 65 72 2c  20 31 20 77 6f 72 64 2f  | buffer, 1 word/|
00018530  73 65 63 74 6f 72 0a 09  62 69 74 73 09 20 30 2d  |sector..bits. 0-|
00018540  37 09 43 79 6c 69 6e 64  65 72 20 6e 75 6d 62 65  |7.Cylinder numbe|
00018550  72 20 6d 6f 64 20 32 35  36 0a 09 20 09 20 38 2d  |r mod 256.. . 8-|
00018560  31 35 09 48 65 61 64 20  28 30 20 6f 6e 77 61 72  |15.Head (0 onwar|
00018570  64 73 29 0a 09 20 09 31  36 2d 32 33 09 53 65 63  |ds).. .16-23.Sec|
00018580  74 6f 72 20 6e 75 6d 62  65 72 0a 09 20 09 32 34  |tor number.. .24|
00018590  2d 33 31 09 6c 6f 67 32  28 73 65 63 74 6f 72 20  |-31.log2(sector |
000185a0  73 69 7a 65 29 2d 37 0a  23 73 75 62 70 61 67 65  |size)-7.#subpage|
000185b0  20 6f 70 74 69 6f 6e 73  0a 46 6f 72 6d 61 74 20  | options.Format |
000185c0  6f 70 74 69 6f 6e 73 0a  62 69 74 09 6d 65 61 6e  |options.bit.mean|
000185d0  69 6e 67 0a 23 4c 69 6e  65 0a 30 09 69 6e 64 65  |ing.#Line.0.inde|
000185e0  78 20 6d 61 72 6b 20 72  65 71 75 69 72 65 64 0a  |x mark required.|
000185f0  31 09 64 6f 75 62 6c 65  20 73 74 65 70 0a 32 2d  |1.double step.2-|
00018600  33 09 30 20 3d 09 69 6e  74 65 72 6c 65 61 76 65  |3.0 =.interleave|
00018610  64 20 73 69 64 65 0a 09  31 20 3d 09 66 6f 72 6d  |d side..1 =.form|
00018620  61 74 20 73 69 64 65 20  31 20 6f 6e 6c 79 0a 09  |at side 1 only..|
00018630  32 20 3d 09 66 6f 72 6d  61 74 20 73 69 64 65 20  |2 =.format side |
00018640  32 20 6f 6e 6c 79 0a 09  33 20 3d 09 73 65 71 75  |2 only..3 =.sequ|
00018650  65 6e 63 65 64 20 73 69  64 65 73 0a 34 2d 37 09  |enced sides.4-7.|
00018660  72 65 73 65 72 76 65 64  2c 20 6d 75 73 74 20 62  |reserved, must b|
00018670  65 20 30 0a 44 41 54 41  67 00 00 00 46 69 6c 65  |e 0.DATAg...File|
00018680  43 6f 72 65 5f 44 69 73  63 4f 70 20 61 64 64 72  |Core_DiscOp addr|
00018690  65 73 73 0a 42 69 74 09  4d 65 61 6e 69 6e 67 0a  |ess.Bit.Meaning.|
000186a0  23 4c 69 6e 65 0a 30 2d  32 38 09 44 69 73 63 20  |#Line.0-28.Disc |
000186b0  61 64 64 72 65 73 73 20  6f 66 66 73 65 74 20 69  |address offset i|
000186c0  6e 20 62 79 74 65 73 0a  32 39 2d 33 31 09 44 72  |n bytes.29-31.Dr|
000186d0  69 76 65 20 6e 75 6d 62  65 72 0a 00 44 41 54 41  |ive number..DATA|
000186e0  6c 07 00 00 46 69 6c 65  43 6f 72 65 5f 43 72 65  |l...FileCore_Cre|
000186f0  61 74 65 20 20 28 26 34  30 35 34 31 29 0a 23 50  |ate  (&40541).#P|
00018700  61 72 65 6e 74 20 46 69  6c 65 63 6f 72 65 5f 0a  |arent Filecore_.|
00018710  3d 3e 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |=>.R0 =.pointer |
00018720  74 6f 20 3c 64 65 73 63  72 69 70 74 6f 72 20 62  |to <descriptor b|
00018730  6c 6f 63 6b 3d 3e 46 69  6c 65 43 6f 72 65 5f 66  |lock=>FileCore_f|
00018740  73 64 65 73 63 72 69 70  74 6f 72 3e 0a 09 52 31  |sdescriptor>..R1|
00018750  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 63 61  | =.pointer to ca|
00018760  6c 6c 69 6e 67 20 6d 6f  64 75 6c 65 27 73 20 62  |lling module's b|
00018770  61 73 65 0a 09 52 32 20  3d 09 70 6f 69 6e 74 65  |ase..R2 =.pointe|
00018780  72 20 74 6f 20 63 61 6c  6c 69 6e 67 20 6d 6f 64  |r to calling mod|
00018790  75 6c 65 27 73 20 70 72  69 76 61 74 65 20 77 6f  |ule's private wo|
000187a0  72 64 0a 09 52 33 20 3d  09 3c 64 72 69 76 65 73  |rd..R3 =.<drives|
000187b0  20 63 6f 6e 66 69 67 75  72 61 74 69 6f 6e 3d 3e  | configuration=>|
000187c0  2e 64 72 69 76 65 73 3e  0a 09 52 34 20 3d 09 73  |.drives>..R4 =.s|
000187d0  75 67 67 65 73 74 65 64  20 73 69 7a 65 20 66 6f  |uggested size fo|
000187e0  20 64 69 72 65 63 74 6f  72 79 20 63 61 63 68 65  | directory cache|
000187f0  0a 09 52 35 20 3d 09 73  75 67 67 65 73 74 65 64  |..R5 =.suggested|
00018800  20 6e 75 6d 62 65 72 20  6f 66 20 31 30 37 32 20  | number of 1072 |
00018810  62 79 74 65 20 62 75 66  66 65 72 73 20 6f 72 20  |byte buffers or |
00018820  66 69 6c 65 20 63 61 63  68 65 0a 09 52 36 20 3d  |file cache..R6 =|
00018830  09 68 61 72 64 20 64 69  73 63 20 6d 61 70 20 73  |.hard disc map s|
00018840  69 7a 65 73 0a 0a 3c 3d  09 52 30 20 3d 09 70 6f  |izes..<=.R0 =.po|
00018850  69 6e 74 65 72 20 74 6f  20 46 69 6c 65 43 6f 72  |inter to FileCor|
00018860  65 20 69 6e 73 74 61 6e  63 65 20 70 72 69 76 61  |e instance priva|
00018870  74 65 20 77 6f 72 64 0a  09 52 31 20 3d 09 61 64  |te word..R1 =.ad|
00018880  64 72 65 73 73 20 74 6f  20 63 61 6c 6c 20 61 66  |dress to call af|
00018890  74 65 72 20 63 6f 6d 70  6c 65 74 69 6e 67 20 62  |ter completing b|
000188a0  61 63 6b 67 72 6f 75 6e  64 20 66 6c 6f 70 70 79  |ackground floppy|
000188b0  20 6f 70 0a 09 52 32 20  3d 09 61 64 64 72 65 73  | op..R2 =.addres|
000188c0  73 20 74 6f 20 63 61 6c  6c 20 61 66 74 65 72 20  |s to call after |
000188d0  63 6f 6d 70 6c 65 74 69  6e 67 20 62 61 63 6b 67  |completing backg|
000188e0  72 6f 75 6e 64 20 68 61  72 64 20 64 69 73 63 20  |round hard disc |
000188f0  6f 70 0a 09 52 33 20 3d  09 61 64 64 72 65 73 73  |op..R3 =.address|
00018900  20 74 6f 20 63 61 6c 6c  20 74 6f 20 72 65 6c 65  | to call to rele|
00018910  61 73 65 20 46 49 51 20  61 66 74 65 72 20 6c 6f  |ase FIQ after lo|
00018920  77 20 6c 65 76 65 6c 20  6f 70 0a 0a 54 68 69 73  |w level op..This|
00018930  20 63 61 6c 6c 20 63 72  65 61 74 65 73 20 61 20  | call creates a |
00018940  6e 65 77 20 69 6e 73 74  61 6e 74 69 61 74 69 6f  |new instantiatio|
00018950  6e 20 6f 66 20 61 6e 20  41 44 46 53 20 6c 69 6b  |n of an ADFS lik|
00018960  65 20 66 69 6c 69 6e 67  20 73 79 73 74 65 6d 2e  |e filing system.|
00018970  20 49 74 20 6d 75 73 74  20 62 65 20 63 61 6c 6c  | It must be call|
00018980  65 64 20 6f 6e 20 69 6e  69 74 69 61 6c 69 73 61  |ed on initialisa|
00018990  74 69 6f 6e 20 62 79 20  61 6e 79 20 66 69 6c 69  |tion by any fili|
000189a0  6e 67 20 73 79 73 74 65  6d 20 6d 6f 64 75 6c 65  |ng system module|
000189b0  20 74 68 61 74 20 69 73  20 61 64 64 69 6e 67 20  | that is adding |
000189c0  69 74 73 65 6c 66 20 74  6f 20 46 69 6c 65 43 6f  |itself to FileCo|
000189d0  72 65 2e 0a 0a 54 68 65  20 6f 6e 6c 79 20 73 74  |re...The only st|
000189e0  61 72 74 20 75 70 20 6f  70 74 69 6f 6e 20 63 75  |art up option cu|
000189f0  72 72 65 6e 74 6c 79 20  73 75 70 70 6f 72 74 65  |rrently supporte|
00018a00  64 20 69 73 20 27 4e 6f  20 64 69 72 65 63 74 6f  |d is 'No directo|
00018a10  72 79 20 73 74 61 74 65  27 20 77 68 69 63 68 20  |ry state' which |
00018a20  69 73 20 69 6e 64 69 63  61 74 65 64 20 62 79 20  |is indicated by |
00018a30  73 65 74 74 69 6e 67 20  62 69 74 20 33 30 2e 20  |setting bit 30. |
00018a40  41 6c 6c 20 6f 74 68 65  72 20 62 69 74 73 20 72  |All other bits r|
00018a50  65 70 72 65 73 65 6e 74  69 6e 67 20 73 74 61 72  |epresenting star|
00018a60  74 20 75 70 20 6f 70 74  69 6f 6e 73 20 6d 75 73  |t up options mus|
00018a70  74 20 62 65 20 63 6c 65  61 72 2e 0a 0a 49 66 20  |t be clear...If |
00018a80  74 68 65 20 66 69 6c 69  6e 67 20 73 79 73 74 65  |the filing syste|
00018a90  6d 20 64 6f 65 73 6e 27  74 20 73 75 70 70 6f 72  |m doesn't suppor|
00018aa0  74 20 62 61 63 6b 67 72  6f 75 6e 64 20 74 72 61  |t background tra|
00018ab0  6e 73 66 65 72 20 6f 66  20 64 61 74 61 2c 20 52  |nsfer of data, R|
00018ac0  35 20 6d 75 73 74 20 62  65 20 7a 65 72 6f 2e 0a  |5 must be zero..|
00018ad0  0a 54 68 65 20 68 61 72  64 20 64 69 73 63 20 6d  |.The hard disc m|
00018ae0  61 70 20 73 69 7a 65 20  61 72 65 20 67 69 76 65  |ap size are give|
00018af0  6e 20 75 73 69 6e 67 20  31 20 62 79 74 65 20 66  |n using 1 byte f|
00018b00  6f 72 20 65 61 63 68 20  64 69 73 63 2c 20 77 69  |or each disc, wi|
00018b10  74 68 20 64 72 69 76 65  20 34 20 69 6e 20 74 68  |th drive 4 in th|
00018b20  65 20 6c 6f 77 20 62 79  74 65 2c 20 61 6e 64 20  |e low byte, and |
00018b30  64 72 69 76 65 20 37 20  69 6e 20 74 68 65 20 68  |drive 7 in the h|
00018b40  69 67 68 20 62 79 74 65  2e 20 54 68 65 20 62 79  |igh byte. The by|
00018b50  74 65 20 73 68 6f 75 6c  64 20 63 6f 6e 74 61 69  |te should contai|
00018b60  6e 20 27 6d 61 70 20 73  69 7a 65 27 2f 32 35 36  |n 'map size'/256|
00018b70  20 28 69 65 20 32 20 66  6f 72 20 74 68 65 20 6f  | (ie 2 for the o|
00018b80  6c 64 20 6d 61 70 29 2e  20 54 68 69 73 20 69 73  |ld map). This is|
00018b90  20 6a 75 73 74 20 61 20  67 6f 6f 64 20 67 75 65  | just a good gue|
00018ba0  73 73 20 61 6e 64 20 73  68 6f 75 6c 64 6e 27 74  |ss and shouldn't|
00018bb0  20 69 6e 76 6f 6c 76 65  20 73 74 61 72 74 69 6e  | involve startin|
00018bc0  67 20 75 70 20 74 68 65  20 64 72 69 76 65 73 20  |g up the drives |
00018bd0  74 6f 20 72 65 61 64 20  66 72 6f 6d 20 74 68 65  |to read from the|
00018be0  6d 2e 20 59 6f 75 20 6d  69 67 68 74 20 73 74 6f  |m. You might sto|
00018bf0  72 65 20 74 68 69 73 20  69 6e 20 74 68 65 20 3c  |re this in the <|
00018c00  43 4d 4f 53 20 52 41 4d  3d 3e 4f 53 5f 42 79 74  |CMOS RAM=>OS_Byt|
00018c10  65 43 6d 6f 73 3e 2e 0a  0a 59 6f 75 20 6d 75 73  |eCmos>...You mus|
00018c20  74 20 73 74 6f 72 65 20  74 68 65 20 46 69 6c 65  |t store the File|
00018c30  43 6f 72 65 20 69 6e 73  74 61 6e 63 65 20 70 72  |Core instance pr|
00018c40  69 76 61 74 65 20 77 6f  72 64 20 72 65 74 75 72  |ivate word retur|
00018c50  6e 65 64 20 62 79 20 74  68 69 73 20 53 57 49 20  |ned by this SWI |
00018c60  69 6e 20 79 6f 75 72 20  6d 6f 64 75 6c 65 73 20  |in your modules |
00018c70  77 6f 72 6b 73 70 61 63  65 3b 20 69 74 27 73 20  |workspace; it's |
00018c80  79 6f 75 72 20 6d 6f 64  75 6c 65 27 73 20 6d 65  |your module's me|
00018c90  61 6e 73 20 6f 66 20 69  64 65 6e 74 69 66 79 69  |ans of identifyi|
00018ca0  6e 67 20 69 74 73 65 6c  66 20 74 6f 20 46 69 6c  |ng itself to Fil|
00018cb0  65 43 6f 72 65 2e 0a 20  0a 57 68 65 6e 20 79 6f  |eCore.. .When yo|
00018cc0  75 72 20 6d 6f 64 75 6c  65 20 63 61 6c 6c 73 20  |ur module calls |
00018cd0  74 68 65 20 61 64 64 72  65 73 73 65 73 20 72 65  |the addresses re|
00018ce0  74 75 72 6e 65 64 20 69  6e 20 52 31 2d 52 33 2c  |turned in R1-R3,|
00018cf0  20 69 74 20 6d 75 73 74  20 62 65 20 69 6e 20 53  | it must be in S|
00018d00  56 43 20 6d 6f 64 65 20  77 69 74 68 20 52 31 32  |VC mode with R12|
00018d10  20 68 6f 6c 64 69 6e 67  20 74 68 65 20 76 61 6c  | holding the val|
00018d20  75 65 20 6f 66 20 52 30  20 74 68 61 74 20 74 68  |ue of R0 that th|
00018d30  69 73 20 53 57 49 20 72  65 74 75 72 6e 65 64 2e  |is SWI returned.|
00018d40  20 49 6e 74 65 72 72 75  70 74 73 20 6e 65 65 64  | Interrupts need|
00018d50  20 74 6f 20 62 65 20 64  69 73 61 62 6c 65 64 2e  | to be disabled.|
00018d60  20 52 30 2c 20 52 31 2c  20 52 33 2d 52 31 31 20  | R0, R1, R3-R11 |
00018d70  61 6e 64 20 52 31 33 20  77 69 6c 6c 20 62 65 20  |and R13 will be |
00018d80  70 72 65 73 65 72 76 65  64 20 62 79 20 46 69 6c  |preserved by Fil|
00018d90  65 43 6f 72 65 20 6f 76  65 72 20 74 68 65 73 65  |eCore over these|
00018da0  20 63 61 6c 6c 73 2e 0a  23 53 75 62 70 61 67 65  | calls..#Subpage|
00018db0  20 64 72 69 76 65 73 0a  44 72 69 76 65 73 20 63  | drives.Drives c|
00018dc0  6f 6e 66 69 67 75 72 61  74 69 6f 6e 0a 42 69 74  |onfiguration.Bit|
00018dd0  73 09 43 6f 6e 74 65 6e  74 73 0a 23 4c 69 6e 65  |s.Contents.#Line|
00018de0  0a 30 2d 37 09 6e 75 6d  62 65 72 20 6f 66 20 66  |.0-7.number of f|
00018df0  6c 6f 70 70 69 65 73 20  28 30 2d 33 29 0a 38 2d  |loppies (0-3).8-|
00018e00  31 35 09 6e 75 6d 62 65  72 20 6f 66 20 68 61 72  |15.number of har|
00018e10  64 64 69 73 63 73 20 28  30 2d 33 29 0a 31 36 2d  |ddiscs (0-3).16-|
00018e20  32 34 09 64 65 66 61 75  6c 74 20 64 72 69 76 65  |24.default drive|
00018e30  0a 32 35 2d 33 31 09 73  74 61 72 74 20 75 70 20  |.25-31.start up |
00018e40  6f 70 74 69 6f 6e 73 0a  44 41 54 41 6f 03 00 00  |options.DATAo...|
00018e50  46 69 6c 65 63 6f 72 65  20 46 53 20 64 65 73 63  |Filecore FS desc|
00018e60  72 69 70 74 6f 72 20 62  6c 6f 63 6b 0a 4f 66 66  |riptor block.Off|
00018e70  73 65 74 09 43 6f 6e 74  61 69 6e 73 0a 23 4c 69  |set.Contains.#Li|
00018e80  6e 65 0a 30 09 3c 64 69  73 63 20 66 6c 61 67 73  |ne.0.<disc flags|
00018e90  3d 3e 2e 66 6c 61 67 73  3e 0a 33 09 3c 66 69 6c  |=>.flags>.3.<fil|
00018ea0  69 6e 67 20 73 79 73 74  65 6d 20 6e 75 6d 62 65  |ing system numbe|
00018eb0  72 3d 3e 66 73 79 73 5f  69 64 65 6e 74 3e 0a 34  |r=>fsys_ident>.4|
00018ec0  09 6f 66 66 73 65 74 20  6f 66 20 66 69 6c 69 6e  |.offset of filin|
00018ed0  67 20 73 79 73 74 65 6d  20 74 69 74 6c 65 20 66  |g system title f|
00018ee0  72 6f 6d 20 6d 6f 64 75  6c 65 20 62 61 73 65 0a  |rom module base.|
00018ef0  38 09 6f 66 66 73 65 74  20 6f 66 20 62 6f 6f 74  |8.offset of boot|
00018f00  20 74 65 78 74 20 66 72  6f 6d 20 6d 6f 64 75 6c  | text from modul|
00018f10  65 20 62 61 73 65 0a 31  32 09 6f 66 66 73 65 74  |e base.12.offset|
00018f20  20 6f 66 20 6c 6f 77 20  6c 65 76 65 6c 20 64 69  | of low level di|
00018f30  73 63 20 6f 70 20 65 6e  74 72 79 20 66 72 6f 6d  |sc op entry from|
00018f40  20 6d 6f 64 75 6c 65 20  62 61 73 65 0a 31 36 09  | module base.16.|
00018f50  6f 66 66 73 65 74 20 6f  66 20 6c 6f 77 20 6c 65  |offset of low le|
00018f60  76 65 6c 20 6d 69 73 63  65 6c 6c 61 6e 65 6f 75  |vel miscellaneou|
00018f70  73 20 65 6e 74 72 79 20  66 72 6f 6d 20 6d 6f 64  |s entry from mod|
00018f80  75 6c 65 20 62 61 73 65  0a 23 53 75 62 70 61 67  |ule base.#Subpag|
00018f90  65 20 66 6c 61 67 73 0a  44 69 73 63 20 66 6c 61  |e flags.Disc fla|
00018fa0  67 73 0a 42 69 74 09 4d  65 61 6e 69 6e 67 20 77  |gs.Bit.Meaning w|
00018fb0  68 65 6e 20 73 65 74 0a  23 4c 69 6e 65 0a 30 09  |hen set.#Line.0.|
00018fc0  48 61 72 64 20 64 69 73  63 20 6e 65 65 64 73 20  |Hard disc needs |
00018fd0  46 49 51 0a 31 09 46 6c  6f 70 70 79 20 6e 65 65  |FIQ.1.Floppy nee|
00018fe0  64 73 20 46 49 51 0a 32  09 52 65 73 65 72 76 65  |ds FIQ.2.Reserve|
00018ff0  64 20 6d 75 73 74 20 62  65 20 7a 65 72 6f 0a 33  |d must be zero.3|
00019000  09 55 73 65 20 6f 6e 6c  79 20 73 63 72 61 74 63  |.Use only scratc|
00019010  68 20 73 70 61 63 65 20  77 68 65 6e 20 61 20 74  |h space when a t|
00019020  65 6d 70 6f 72 61 72 79  20 62 75 66 66 65 72 20  |emporary buffer |
00019030  69 73 20 6e 65 65 64 65  64 0a 34 09 48 61 72 64  |is needed.4.Hard|
00019040  20 64 69 73 63 20 73 75  70 70 6f 72 74 20 6d 6f  | disc support mo|
00019050  75 6e 74 20 6c 69 6b 65  20 66 6c 6f 70 70 69 65  |unt like floppie|
00019060  73 20 64 6f 20 28 69 65  20 74 68 65 79 20 66 69  |s do (ie they fi|
00019070  6c 6c 20 69 6e 20 73 65  63 74 6f 72 20 73 69 7a  |ll in sector siz|
00019080  65 2c 20 68 65 61 64 73  2c 20 73 65 63 74 6f 72  |e, heads, sector|
00019090  73 20 70 65 72 20 74 72  61 63 6b 20 61 6e 64 20  |s per track and |
000190a0  64 65 6e 73 69 74 79 29  0a 35 09 48 61 72 64 20  |density).5.Hard |
000190b0  64 69 73 63 20 73 75 70  70 6f 72 74 20 70 6f 6c  |disc support pol|
000190c0  6c 20 63 68 61 6e 67 65  20 28 69 65 20 74 68 65  |l change (ie the|
000190d0  20 70 6f 6c 6c 20 63 68  61 6e 67 65 20 63 61 6c  | poll change cal|
000190e0  6c 20 77 6f 72 6b 73 20  66 6f 72 20 68 61 72 64  |l works for hard|
000190f0  20 64 69 73 63 73 20 61  6e 64 20 72 65 74 75 72  | discs and retur|
00019100  6e 73 20 61 20 73 65 6e  73 69 62 6c 65 20 76 61  |ns a sensible va|
00019110  6c 75 65 3b 20 61 6c 73  6f 20 6c 6f 63 6b 69 6e  |lue; also lockin|
00019120  67 20 74 68 65 6d 20 67  69 76 65 73 20 61 20 73  |g them gives a s|
00019130  65 6e 73 69 62 6c 65 20  72 65 73 75 6c 74 29 0a  |ensible result).|
00019140  36 09 46 6c 6f 70 70 69  65 73 20 73 75 70 70 6f  |6.Floppies suppo|
00019150  72 74 20 70 6f 77 65 72  20 65 6a 65 63 74 0a 37  |rt power eject.7|
00019160  09 48 61 72 64 64 69 73  63 73 20 73 75 70 70 6f  |.Harddiscs suppo|
00019170  72 74 20 70 6f 77 65 72  20 65 6a 65 63 74 0a 39  |rt power eject.9|
00019180  09 53 65 63 74 6f 72 20  61 64 64 72 65 73 73 69  |.Sector addressi|
00019190  6e 67 20 69 73 20 70 6f  73 73 69 62 6c 65 20 28  |ng is possible (|
000191a0  52 49 53 43 20 4f 53 20  33 2e 36 20 61 6e 64 20  |RISC OS 3.6 and |
000191b0  6c 61 74 65 72 29 0a 00  44 41 54 41 df 01 00 00  |later)..DATA....|
000191c0  46 69 6c 65 43 6f 72 65  5f 44 65 73 63 72 69 62  |FileCore_Describ|
000191d0  65 44 69 73 63 20 20 28  26 34 30 35 34 35 29 0a  |eDisc  (&40545).|
000191e0  23 50 61 72 65 6e 74 20  46 69 6c 65 43 6f 72 65  |#Parent FileCore|
000191f0  5f 0a 3d 3e 09 52 30 20  3d 09 70 6f 69 6e 74 65  |_.=>.R0 =.pointe|
00019200  72 20 74 6f 20 64 69 73  63 20 6e 61 6d 65 20 28  |r to disc name (|
00019210  6f 72 20 3a 30 2c 20 65  74 63 29 0a 09 52 31 20  |or :0, etc)..R1 |
00019220  3d 09 3c 70 6f 69 6e 74  65 72 20 74 6f 20 64 61  |=.<pointer to da|
00019230  74 61 20 62 6c 6f 63 6b  3d 3e 46 69 6c 65 43 6f  |ta block=>FileCo|
00019240  72 65 5f 64 69 73 63 3e  0a 09 52 38 20 3d 09 70  |re_disc>..R8 =.p|
00019250  6f 69 6e 74 65 72 20 74  6f 20 46 69 6c 65 43 6f  |ointer to FileCo|
00019260  72 65 20 69 6e 73 74 61  6e 63 65 20 70 72 69 76  |re instance priv|
00019270  61 74 65 20 77 6f 72 64  0a 0a 54 68 69 73 20 63  |ate word..This c|
00019280  61 6c 6c 20 61 6c 6c 6f  77 73 20 79 6f 75 20 74  |all allows you t|
00019290  6f 20 63 68 65 63 6b 20  74 68 65 20 64 69 73 63  |o check the disc|
000192a0  27 73 20 66 6f 72 6d 61  74 20 61 6e 64 20 69 6e  |'s format and in|
000192b0  74 65 72 6e 61 6c 20 73  74 72 75 63 74 75 72 65  |ternal structure|
000192c0  2e 20 49 66 20 74 68 65  20 69 73 20 73 70 65 63  |. If the is spec|
000192d0  69 66 69 65 64 20 69 73  20 6e 6f 74 20 69 6e 20  |ified is not in |
000192e0  61 20 64 72 69 76 65 20  69 74 20 77 69 6c 6c 20  |a drive it will |
000192f0  62 65 20 73 65 61 72 63  68 65 64 20 66 6f 72 20  |be searched for |
00019300  61 6e 64 20 61 73 6b 65  64 20 66 6f 72 20 69 6e  |and asked for in|
00019310  20 61 6e 20 65 72 72 6f  72 20 62 6f 78 20 6f 72  | an error box or|
00019320  20 62 79 20 70 72 6f 6d  70 74 2e 20 49 66 20 74  | by prompt. If t|
00019330  68 65 20 64 69 73 63 20  6e 61 6d 65 20 69 73 20  |he disc name is |
00019340  74 68 61 74 20 6f 66 20  61 20 64 72 69 76 65 20  |that of a drive |
00019350  74 68 65 6e 20 69 66 20  6e 6f 20 64 69 73 63 20  |then if no disc |
00019360  69 73 20 70 72 65 73 65  6e 74 20 74 68 65 6e 20  |is present then |
00019370  74 68 65 20 44 72 69 76  65 20 65 6d 70 74 79 20  |the Drive empty |
00019380  65 72 72 6f 72 20 77 69  6c 6c 20 62 65 20 72 65  |error will be re|
00019390  70 6f 72 74 65 64 2e 00  44 41 54 41 ba 00 00 00  |ported..DATA....|
000193a0  46 69 6c 65 43 6f 72 65  5f 44 69 73 63 61 72 64  |FileCore_Discard|
000193b0  52 65 61 64 53 65 63 74  6f 72 73 43 61 63 68 65  |ReadSectorsCache|
000193c0  20 20 28 26 34 30 35 34  36 29 0a 23 50 61 72 65  |  (&40546).#Pare|
000193d0  6e 74 20 46 69 6c 65 43  6f 72 65 5f 0a 3d 3e 09  |nt FileCore_.=>.|
000193e0  52 36 20 3d 09 63 61 63  68 65 20 68 61 6e 64 6c  |R6 =.cache handl|
000193f0  65 0a 0a 54 68 69 73 20  63 61 6c 6c 20 64 69 73  |e..This call dis|
00019400  63 61 72 64 73 20 74 68  65 20 63 61 63 68 65 20  |cards the cache |
00019410  6f 66 20 72 65 61 64 20  73 65 63 74 6f 72 73 20  |of read sectors |
00019420  63 72 65 61 74 65 64 20  62 79 20 3c 46 69 6c 65  |created by <File|
00019430  43 6f 72 65 5f 44 69 73  63 4f 70 20 39 3d 3e 46  |Core_DiscOp 9=>F|
00019440  69 6c 65 43 6f 72 65 5f  44 69 73 63 4f 70 39 3e  |ileCore_DiscOp9>|
00019450  2e 0a 00 00 44 41 54 41  3b 04 00 00 46 69 6c 65  |....DATA;...File|
00019460  43 6f 72 65 5f 44 69 73  63 46 6f 72 6d 61 74 20  |Core_DiscFormat |
00019470  20 28 26 34 30 35 34 37  29 0a 23 50 61 72 65 6e  | (&40547).#Paren|
00019480  74 20 46 69 6c 65 43 6f  72 65 5f 0a 3d 3e 09 52  |t FileCore_.=>.R|
00019490  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |0 =.pointer to <|
000194a0  64 69 73 63 20 66 6f 72  6d 61 74 20 73 74 72 75  |disc format stru|
000194b0  63 74 75 72 65 3d 3e 46  69 6c 65 43 6f 72 65 5f  |cture=>FileCore_|
000194c0  66 6f 72 6d 61 74 3e 20  74 6f 20 62 65 20 66 69  |format> to be fi|
000194d0  6c 6c 65 64 20 69 6e 0a  09 52 31 20 3d 09 53 57  |lled in..R1 =.SW|
000194e0  49 20 6e 75 6d 62 65 72  20 74 6f 20 63 61 6c 6c  |I number to call|
000194f0  20 74 6f 20 76 65 74 20  64 69 73 63 20 66 6f 72  | to vet disc for|
00019500  6d 61 74 20 28 65 67 20  3c 41 44 46 53 5f 56 65  |mat (eg <ADFS_Ve|
00019510  74 46 6f 72 6d 61 74 3e  29 0a 09 52 32 20 3d 09  |tFormat>)..R2 =.|
00019520  70 61 72 61 6d 65 74 65  72 20 69 6e 20 52 31 20  |parameter in R1 |
00019530  74 6f 20 75 73 65 20 77  68 65 6e 20 63 61 6c 6c  |to use when call|
00019540  69 6e 67 20 76 65 74 74  69 6e 67 20 53 57 49 0a  |ing vetting SWI.|
00019550  09 52 33 20 3d 09 3c 66  6f 72 6d 61 74 20 73 70  |.R3 =.<format sp|
00019560  65 63 69 66 69 65 72 3d  3e 46 69 6c 65 43 6f 72  |ecifier=>FileCor|
00019570  65 5f 66 6f 72 6d 61 74  73 70 65 63 3e 0a 0a 3c  |e_formatspec>..<|
00019580  3d 09 52 30 2d 52 33 20  70 72 65 73 65 72 76 65  |=.R0-R3 preserve|
00019590  64 0a 0a 54 68 69 73 20  63 61 6c 6c 20 66 69 6c  |d..This call fil|
000195a0  6c 73 20 69 6e 20 74 68  65 20 64 69 73 63 20 66  |ls in the disc f|
000195b0  6f 72 6d 61 74 20 73 74  72 75 63 74 75 72 65 20  |ormat structure |
000195c0  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 52 30  |pointed to by R0|
000195d0  20 77 69 74 68 20 74 68  65 20 27 70 72 65 66 65  | with the 'prefe|
000195e0  63 74 27 20 70 61 72 61  6d 65 74 65 72 73 20 66  |ct' parameters f|
000195f0  6f 72 20 74 68 65 20 73  70 65 63 69 66 69 65 64  |or the specified|
00019600  20 66 6f 72 6d 61 74 2c  20 74 61 6b 69 6e 67 20  | format, taking |
00019610  6e 6f 20 61 63 63 6f 75  6e 74 20 6f 66 20 74 68  |no account of th|
00019620  65 20 61 62 69 6c 69 74  69 65 73 20 6f 66 20 74  |e abilities of t|
00019630  68 65 20 61 76 61 69 6c  61 62 6c 65 20 68 61 72  |he available har|
00019640  64 77 61 72 65 20 74 68  61 74 20 77 69 6c 6c 20  |dware that will |
00019650  68 61 76 65 20 74 6f 20  70 65 72 66 6f 72 6d 20  |have to perform |
00019660  74 68 65 20 66 6f 72 6d  61 74 2e 20 4f 6e 63 65  |the format. Once|
00019670  20 66 69 6c 6c 65 64 20  69 6e 2c 20 74 68 69 73  | filled in, this|
00019680  20 53 57 49 20 63 61 6c  6c 73 20 74 68 65 20 76  | SWI calls the v|
00019690  65 74 74 69 6e 67 20 53  57 49 20 74 6f 20 63 68  |etting SWI to ch|
000196a0  65 63 6b 20 74 68 65 20  66 6f 72 6d 61 79 20 73  |eck the formay s|
000196b0  74 72 75 63 74 75 72 65  20 66 6f 72 20 61 63 68  |tructure for ach|
000196c0  69 65 76 61 62 69 6c 69  74 79 20 6f 6e 20 74 68  |ievability on th|
000196d0  65 20 61 76 61 69 6c 61  62 6c 65 20 68 61 72 64  |e available hard|
000196e0  77 61 72 65 2e 20 54 68  65 20 76 65 74 74 69 6e  |ware. The vettin|
000196f0  67 20 53 57 49 20 6d 61  79 20 67 65 6e 65 72 61  |g SWI may genera|
00019700  74 65 20 61 6e 20 65 72  72 6f 72 20 69 66 20 74  |te an error if t|
00019710  68 65 20 66 6f 72 6d 61  74 20 64 69 66 66 65 72  |he format differ|
00019720  73 20 77 69 64 65 6c 79  20 66 72 6f 6d 20 77 68  |s widely from wh|
00019730  61 74 20 63 61 6e 20 62  65 20 61 63 68 69 65 76  |at can be achiev|
00019740  65 64 3b 20 61 6c 74 65  72 6e 61 74 69 76 65 6c  |ed; alternativel|
00019750  79 20 69 74 20 6d 61 79  20 61 6c 74 65 72 20 74  |y it may alter t|
00019760  68 65 20 66 6f 72 6d 61  74 20 73 74 72 75 63 74  |he format struct|
00019770  75 72 65 20 74 6f 20 74  68 65 20 63 6c 6f 73 65  |ure to the close|
00019780  73 74 20 6d 61 74 63 68  20 74 68 61 74 20 63 61  |st match that ca|
00019790  6e 20 62 65 20 61 63 68  69 65 76 65 64 2e 20 54  |n be achieved. T|
000197a0  68 65 20 76 65 74 74 69  6e 67 20 53 57 49 20 74  |he vetting SWI t|
000197b0  68 65 6e 20 72 65 74 75  72 6e 73 20 74 6f 20 74  |hen returns to t|
000197c0  68 69 73 0a 53 57 49 2c  20 77 68 69 63 68 20 63  |his.SWI, which c|
000197d0  68 65 63 6b 73 20 77 68  65 74 68 65 72 20 74 68  |hecks whether th|
000197e0  65 20 66 6f 72 6d 61 74  20 62 6c 6f 63 6b 20 2d  |e format block -|
000197f0  20 61 73 20 75 70 64 61  74 65 64 20 62 79 20 74  | as updated by t|
00019800  68 65 20 76 65 74 74 69  6e 67 20 53 57 49 20 2d  |he vetting SWI -|
00019810  20 69 73 20 73 74 69 6c  6c 20 61 6e 20 61 64 65  | is still an ade|
00019820  71 75 61 74 65 20 6d 61  74 63 68 20 66 6f 72 20  |quate match for |
00019830  74 68 65 20 64 65 73 69  72 65 64 20 66 6f 72 6d  |the desired form|
00019840  61 74 2e 20 49 66 20 69  74 20 69 73 2c 20 74 68  |at. If it is, th|
00019850  69 73 20 53 57 49 20 72  65 74 75 72 6e 73 20 74  |is SWI returns t|
00019860  6f 20 69 74 73 20 63 61  6c 6c 65 72 3b 20 6f 74  |o its caller; ot|
00019870  68 65 72 77 69 73 65 20  69 74 20 67 65 6e 65 72  |herwise it gener|
00019880  61 74 65 73 20 61 6e 20  65 72 72 6f 72 2e 0a 00  |ates an error...|
00019890  44 41 54 41 ec 00 00 00  44 69 73 63 20 64 65 6e  |DATA....Disc den|
000198a0  73 69 74 69 65 73 0a 5c  23 09 4d 65 61 6e 69 6e  |sities.\#.Meanin|
000198b0  67 0a 23 6c 69 6e 65 0a  30 09 68 61 72 64 20 64  |g.#line.0.hard d|
000198c0  69 73 63 0a 31 09 73 69  6e 67 6c 65 20 64 65 6e  |isc.1.single den|
000198d0  73 69 74 79 20 28 31 32  35 20 4b 62 70 73 20 46  |sity (125 Kbps F|
000198e0  4d 29 0a 32 09 64 6f 75  62 6c 65 20 64 65 6e 73  |M).2.double dens|
000198f0  69 74 79 20 28 32 35 30  20 4b 62 70 73 20 46 4d  |ity (250 Kbps FM|
00019900  29 0a 33 09 64 6f 75 62  6c 65 2b 20 64 65 6e 73  |).3.double+ dens|
00019910  69 74 79 20 28 33 30 30  20 4b 62 70 73 20 46 4d  |ity (300 Kbps FM|
00019920  29 20 28 69 65 20 68 69  67 68 65 72 20 72 6f 74  |) (ie higher rot|
00019930  61 74 69 6f 6e 20 73 70  65 65 64 20 44 44 29 0a  |ation speed DD).|
00019940  34 09 71 75 61 64 20 64  65 6e 73 69 74 79 20 28  |4.quad density (|
00019950  35 30 30 20 4b 62 70 73  20 46 4d 29 0a 38 09 6f  |500 Kbps FM).8.o|
00019960  63 74 61 6c 20 64 65 6e  73 69 74 79 20 28 31 30  |ctal density (10|
00019970  30 30 20 4b 62 70 73 20  46 4d 29 0a 44 41 54 41  |00 Kbps FM).DATA|
00019980  7a 00 00 00 46 6f 72 6d  61 74 20 73 70 65 63 69  |z...Format speci|
00019990  66 69 65 72 0a 5c 23 09  4d 65 61 6e 69 6e 67 0a  |fier.\#.Meaning.|
000199a0  23 4c 69 6e 65 0a 26 38  30 09 4c 20 66 6f 72 6d  |#Line.&80.L form|
000199b0  61 74 20 66 6c 6f 70 70  79 0a 26 38 31 09 44 20  |at floppy.&81.D |
000199c0  66 6f 72 6d 61 74 20 66  6c 6f 70 70 79 0a 26 38  |format floppy.&8|
000199d0  32 09 45 20 66 6f 72 6d  61 74 20 66 6c 6f 70 70  |2.E format flopp|
000199e0  79 0a 26 38 33 09 46 20  66 6f 72 6d 61 74 20 66  |y.&83.F format f|
000199f0  6c 6f 70 70 79 0a 00 00  44 41 54 41 fb 00 00 00  |loppy...DATA....|
00019a00  46 69 6c 65 43 6f 72 65  5f 44 72 69 76 65 73 20  |FileCore_Drives |
00019a10  20 28 26 34 30 35 34 32  29 0a 23 50 61 72 65 6e  | (&40542).#Paren|
00019a20  74 20 46 69 6c 65 43 6f  72 65 5f 0a 3d 3e 09 52  |t FileCore_.=>.R|
00019a30  38 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 46  |8 =.pointer to F|
00019a40  69 6c 65 43 6f 72 65 20  69 6e 73 74 61 6e 63 65  |ileCore instance|
00019a50  20 70 72 69 76 61 74 65  20 77 6f 72 64 0a 0a 3c  | private word..<|
00019a60  3d 09 52 30 20 3d 09 64  65 66 61 75 6c 74 20 64  |=.R0 =.default d|
00019a70  72 69 76 65 0a 09 52 31  20 3d 09 6e 75 6d 62 65  |rive..R1 =.numbe|
00019a80  72 20 6f 66 20 66 6c 6f  70 70 79 20 64 72 69 76  |r of floppy driv|
00019a90  65 73 0a 09 52 32 20 3d  09 6e 75 6d 62 65 72 20  |es..R2 =.number |
00019aa0  6f 66 20 68 61 72 64 20  64 69 73 63 20 64 72 69  |of hard disc dri|
00019ab0  76 65 73 0a 0a 54 68 69  73 20 63 61 6c 6c 20 72  |ves..This call r|
00019ac0  65 74 75 72 6e 73 20 69  6e 66 6f 72 6d 61 74 69  |eturns informati|
00019ad0  6f 6e 73 20 6f 6e 20 74  68 65 20 66 69 6c 69 6e  |ons on the filin|
00019ae0  67 20 73 79 73 74 65 6d  27 73 20 64 72 69 76 65  |g system's drive|
00019af0  73 2e 0a 00 44 41 54 41  7a 02 00 00 46 69 6c 65  |s...DATAz...File|
00019b00  43 6f 72 65 5f 46 6c 6f  70 70 79 53 74 72 75 63  |Core_FloppyStruc|
00019b10  74 75 72 65 20 20 28 26  34 30 35 34 34 29 0a 23  |ture  (&40544).#|
00019b20  50 61 72 65 6e 74 20 46  69 6c 65 43 6f 72 65 5f  |Parent FileCore_|
00019b30  0a 3d 3e 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |.=>.R0 =.pointer|
00019b40  20 74 6f 20 62 75 66 66  65 72 20 28 6d 75 73 74  | to buffer (must|
00019b50  20 62 65 20 3e 3d 20 34  6b 20 6c 6f 6e 67 29 0a  | be >= 4k long).|
00019b60  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
00019b70  20 3c 64 69 73 63 20 72  65 63 6f 72 64 3d 3e 46  | <disc record=>F|
00019b80  69 6c 65 43 6f 72 65 5f  64 69 73 63 3e 20 64 65  |ileCore_disc> de|
00019b90  73 63 72 69 62 69 6e 67  20 73 68 61 70 65 20 61  |scribing shape a|
00019ba0  6e 64 20 66 6f 72 6d 61  74 0a 09 52 32 09 62 69  |nd format..R2.bi|
00019bb0  74 20 37 20 73 65 74 20  3a 20 6f 6c 64 20 64 69  |t 7 set : old di|
00019bc0  72 65 63 74 6f 72 79 20  73 74 72 75 63 74 75 72  |rectory structur|
00019bd0  65 0a 09 20 09 62 69 74  20 36 20 73 65 74 20 3a  |e.. .bit 6 set :|
00019be0  20 6f 6c 64 20 6d 61 70  0a 09 52 33 20 3d 09 70  | old map..R3 =.p|
00019bf0  6f 69 6e 74 65 72 20 74  6f 20 3c 6c 69 73 74 20  |ointer to <list |
00019c00  6f 66 20 64 65 66 65 63  74 73 3d 3e 46 69 6c 65  |of defects=>File|
00019c10  43 6f 72 65 5f 64 65 66  65 63 74 6c 69 73 74 3e  |Core_defectlist>|
00019c20  0a 0a 3c 3d 09 52 33 20  3d 09 74 6f 74 61 6c 20  |..<=.R3 =.total |
00019c30  73 69 7a 65 20 6f 66 20  73 74 72 75 63 74 75 72  |size of structur|
00019c40  65 20 63 72 65 61 74 65  64 0a 0a 54 68 69 73 20  |e created..This |
00019c50  63 61 6c 6c 20 63 72 65  61 74 65 73 20 61 20 52  |call creates a R|
00019c60  41 4d 20 69 6d 61 67 65  20 6f 66 20 61 20 66 6c  |AM image of a fl|
00019c70  6f 70 70 79 20 64 69 73  63 20 6d 61 70 20 61 6e  |oppy disc map an|
00019c80  64 20 72 6f 6f 74 20 64  69 72 65 63 74 6f 72 79  |d root directory|
00019c90  20 65 6e 74 72 79 2e 0a  0a 54 68 65 20 70 6f 69  | entry...The poi|
00019ca0  6e 74 65 72 20 74 6f 20  61 20 6c 69 73 74 20 6f  |nter to a list o|
00019cb0  66 20 64 65 66 65 63 74  73 20 69 73 20 6f 6e 6c  |f defects is onl|
00019cc0  79 20 6e 65 65 64 65 64  20 66 6f 72 20 6e 65 77  |y needed for new|
00019cd0  20 6d 61 70 20 64 69 73  63 73 2e 20 59 6f 75 20  | map discs. You |
00019ce0  64 6f 6e 27 74 20 6e 65  65 64 20 74 6f 20 6b 6e  |don't need to kn|
00019cf0  6f 77 20 61 20 46 69 6c  65 43 6f 72 65 20 69 6e  |ow a FileCore in|
00019d00  73 74 61 6e 63 65 20 70  72 69 76 61 74 65 20 77  |stance private w|
00019d10  6f 72 64 20 74 6f 20 75  73 65 20 74 68 69 73 20  |ord to use this |
00019d20  63 61 6c 6c 3b 20 69 6e  73 74 65 61 64 20 74 68  |call; instead th|
00019d30  65 20 64 69 73 63 20 72  65 63 6f 72 64 20 74 65  |e disc record te|
00019d40  6c 6c 73 20 46 69 6c 65  43 6f 72 65 20 77 68 69  |lls FileCore whi|
00019d50  63 68 20 66 69 6c 69 6e  67 20 73 79 73 74 65 6d  |ch filing system|
00019d60  20 69 73 20 69 6e 76 6f  6c 76 65 64 2e 0a 00 00  | is involved....|
00019d70  44 41 54 41 bf 01 00 00  46 69 6c 65 43 6f 72 65  |DATA....FileCore|
00019d80  5f 46 72 65 65 53 70 61  63 65 20 20 28 26 34 30  |_FreeSpace  (&40|
00019d90  35 34 33 29 0a 23 50 61  72 65 6e 74 20 46 69 6c  |543).#Parent Fil|
00019da0  65 43 6f 72 65 5f 0a 3d  3e 09 52 30 20 3d 09 70  |eCore_.=>.R0 =.p|
00019db0  6f 69 6e 74 65 72 20 74  6f 20 64 69 73 63 20 73  |ointer to disc s|
00019dc0  70 65 63 69 66 69 65 72  20 28 6e 61 6d 65 2c 20  |pecifier (name, |
00019dd0  6f 72 20 3a 30 2c 20 65  74 63 29 0a 09 52 38 20  |or :0, etc)..R8 |
00019de0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 46 69 6c  |=.pointer to Fil|
00019df0  65 43 6f 72 65 20 69 6e  73 74 61 6e 63 65 20 70  |eCore instance p|
00019e00  72 69 76 61 74 65 20 77  6f 72 64 0a 0a 3c 3d 09  |rivate word..<=.|
00019e10  52 30 20 3d 09 74 6f 74  61 6c 20 66 72 65 65 20  |R0 =.total free |
00019e20  73 70 61 63 65 20 6f 6e  20 64 69 73 63 0a 09 52  |space on disc..R|
00019e30  31 20 3d 09 73 69 7a 65  20 6f 66 20 6c 61 72 67  |1 =.size of larg|
00019e40  65 73 74 20 6f 62 6a 65  63 74 20 74 68 61 74 20  |est object that |
00019e50  63 61 6e 20 62 65 20 63  72 65 61 74 65 64 0a 0a  |can be created..|
00019e60  54 68 69 73 20 63 61 6c  6c 20 72 65 74 75 72 6e  |This call return|
00019e70  73 20 74 68 65 20 74 6f  74 61 6c 20 66 72 65 65  |s the total free|
00019e80  20 73 70 61 63 65 20 6f  6e 20 67 69 76 65 6e 20  | space on given |
00019e90  64 69 73 63 2c 20 61 6e  64 20 74 68 65 20 6c 61  |disc, and the la|
00019ea0  72 67 65 73 74 20 6f 62  6a 65 63 74 20 74 68 61  |rgest object tha|
00019eb0  74 20 63 61 6e 20 62 65  20 63 72 65 61 74 65 64  |t can be created|
00019ec0  20 6f 6e 20 69 74 2e 20  56 61 6c 75 65 73 20 6f  | on it. Values o|
00019ed0  66 20 26 37 46 46 46 46  46 46 46 20 73 68 6f 75  |f &7FFFFFFF shou|
00019ee0  6c 64 20 62 65 20 74 72  65 61 74 65 64 20 61 73  |ld be treated as|
00019ef0  20 27 61 74 20 6c 65 61  73 74 20 32 47 62 27 20  | 'at least 2Gb' |
00019f00  2d 20 79 6f 75 20 6d 69  67 68 74 20 72 65 70 72  |- you might repr|
00019f10  65 73 65 6e 74 20 74 68  69 73 20 63 61 73 75 61  |esent this casua|
00019f20  6c 6c 79 20 61 73 20 27  6c 6f 74 73 27 2e 0a 00  |lly as 'lots'...|
00019f30  44 41 54 41 36 02 00 00  46 69 6c 65 43 6f 72 65  |DATA6...FileCore|
00019f40  5f 4c 61 79 6f 75 74 53  74 72 75 63 74 75 72 65  |_LayoutStructure|
00019f50  20 20 28 26 34 30 35 34  38 29 0a 23 50 61 72 65  |  (&40548).#Pare|
00019f60  6e 74 20 46 69 6c 65 43  6f 72 65 5f 0a 3d 3e 09  |nt FileCore_.=>.|
00019f70  52 30 20 3d 09 3c 69 64  65 6e 74 69 66 69 65 72  |R0 =.<identifier|
00019f80  3d 3e 46 69 6c 65 43 6f  72 65 5f 44 69 73 63 3e  |=>FileCore_Disc>|
00019f90  20 6f 66 20 70 61 72 74  69 63 75 6c 61 72 20 66  | of particular f|
00019fa0  6f 72 6d 61 74 0a 09 52  31 20 3d 09 70 6f 69 6e  |ormat..R1 =.poin|
00019fb0  74 65 72 20 74 6f 20 62  61 64 20 62 6c 6f 63 6b  |ter to bad block|
00019fc0  20 6c 69 73 74 20 28 74  65 72 6d 69 6e 61 74 65  | list (terminate|
00019fd0  64 20 62 79 20 2d 31 29  0a 09 52 32 20 3d 09 70  |d by -1)..R2 =.p|
00019fe0  6f 69 6e 74 65 72 20 74  6f 20 6e 75 6c 6c 20 74  |ointer to null t|
00019ff0  65 72 6d 69 6e 61 74 65  64 20 64 69 73 63 20 6e  |erminated disc n|
0001a000  61 6d 65 0a 09 52 33 20  3d 09 69 6d 61 67 65 20  |ame..R3 =.image |
0001a010  66 69 6c 65 20 68 61 6e  64 6c 65 0a 0a 3c 3d 09  |file handle..<=.|
0001a020  52 30 2d 52 33 20 70 72  65 73 65 72 76 65 64 0a  |R0-R3 preserved.|
0001a030  0a 54 68 69 73 20 63 61  6c 6c 20 6c 61 79 73 20  |.This call lays |
0001a040  6f 75 74 20 69 6e 74 6f  20 74 68 65 20 73 70 65  |out into the spe|
0001a050  63 69 66 69 65 64 20 66  69 6c 65 20 61 20 73 65  |cified file a se|
0001a060  74 20 6f 66 20 73 74 72  75 63 74 75 72 65 20 63  |t of structure c|
0001a070  6f 72 72 65 73 70 6f 6e  64 69 6e 67 20 74 6f 20  |orresponding to |
0001a080  74 68 65 20 69 64 65 6e  74 69 66 69 65 64 20 66  |the identified f|
0001a090  6f 72 6d 61 74 2e 20 54  68 65 20 66 6f 72 6d 61  |ormat. The forma|
0001a0a0  74 20 69 64 65 6e 74 69  66 69 65 72 20 69 73 20  |t identifier is |
0001a0b0  61 20 70 6f 69 6e 74 65  72 20 74 6f 20 61 20 64  |a pointer to a d|
0001a0c0  69 73 63 20 72 65 63 6f  72 64 2e 20 41 6e 20 65  |isc record. An e|
0001a0d0  72 72 6f 72 20 69 73 20  72 65 74 75 72 6e 65 64  |rror is returned|
0001a0e0  20 69 66 20 74 68 65 20  73 70 65 63 69 66 69 65  | if the specifie|
0001a0f0  64 20 66 6f 72 6d 61 74  20 63 61 6e 27 74 20 6d  |d format can't m|
0001a100  61 70 20 6f 75 74 20 64  65 66 65 63 74 73 2c 20  |ap out defects, |
0001a110  61 6e 64 20 74 68 65 72  65 20 77 65 72 65 20 64  |and there were d|
0001a120  65 66 65 63 74 73 20 69  6e 20 74 68 65 20 64 65  |efects in the de|
0001a130  66 65 63 74 20 6c 69 73  74 2e 0a 0a 54 68 69 73  |fect list...This|
0001a140  20 63 61 6c 6c 20 69 73  6e 27 74 20 61 76 61 69  | call isn't avai|
0001a150  6c 61 62 6c 65 20 75 6e  64 65 72 20 52 49 53 43  |lable under RISC|
0001a160  20 4f 53 20 32 2e 00 00  44 41 54 41 e7 01 00 00  | OS 2...DATA....|
0001a170  44 65 66 65 63 74 20 6c  69 73 74 73 0a 23 50 61  |Defect lists.#Pa|
0001a180  72 65 6e 74 20 46 69 6c  65 43 6f 72 65 5f 0a 7b  |rent FileCore_.{|
0001a190  2a 7d 46 6f 72 20 27 73  6d 61 6c 6c 27 20 64 69  |*}For 'small' di|
0001a1a0  73 63 73 20 28 77 69 74  68 6f 75 74 20 62 69 67  |scs (without big|
0001a1b0  5f 66 6c 61 67 20 73 65  74 29 20 3a 7b 2a 7d 0a  |_flag set) :{*}.|
0001a1c0  23 49 6e 64 65 6e 74 20  32 0a 41 20 6c 69 73 74  |#Indent 2.A list|
0001a1d0  20 6f 66 20 64 65 66 65  63 74 73 20 69 6e 20 62  | of defects in b|
0001a1e0  79 74 65 20 61 64 64 72  65 73 73 65 73 2c 20 67  |yte addresses, g|
0001a1f0  69 76 69 6e 67 20 74 68  65 20 73 74 61 72 74 20  |iving the start |
0001a200  61 64 64 72 65 73 73 20  6f 66 20 65 61 63 68 20  |address of each |
0001a210  64 65 66 65 63 74 69 76  65 20 73 65 63 74 6f 72  |defective sector|
0001a220  20 61 6e 64 20 74 65 72  6d 69 6e 61 74 65 64 20  | and terminated |
0001a230  62 79 20 26 32 30 30 30  30 30 30 30 2e 0a 23 49  |by &20000000..#I|
0001a240  6e 64 65 6e 74 0a 0a 7b  2a 7d 46 6f 72 20 27 27  |ndent..{*}For ''|
0001a250  20 64 69 73 63 73 20 28  77 69 74 68 20 62 69 67  | discs (with big|
0001a260  5f 66 6c 61 67 20 73 65  74 29 20 3a 7b 2a 7d 0a  |_flag set) :{*}.|
0001a270  23 49 6e 64 65 6e 74 20  32 0a 41 20 6c 69 73 74  |#Indent 2.A list|
0001a280  20 6f 66 20 64 65 66 65  63 74 73 20 69 6e 20 62  | of defects in b|
0001a290  79 74 65 20 61 64 64 72  65 73 73 65 73 2c 20 67  |yte addresses, g|
0001a2a0  69 76 69 6e 67 20 74 68  65 20 73 74 61 72 74 20  |iving the start |
0001a2b0  61 64 64 72 65 73 73 20  6f 66 20 65 61 63 68 20  |address of each |
0001a2c0  64 65 66 65 63 74 69 76  65 20 73 65 63 74 6f 72  |defective sector|
0001a2d0  20 61 6e 64 20 74 65 72  6d 69 6e 61 74 65 64 20  | and terminated |
0001a2e0  62 79 20 26 32 30 30 30  30 30 30 30 2e 20 46 6f  |by &20000000. Fo|
0001a2f0  6c 6c 6f 77 65 64 20 62  79 20 61 20 73 65 63 6f  |llowed by a seco|
0001a300  6e 64 20 6c 69 73 74 20  77 69 74 68 20 74 68 65  |nd list with the|
0001a310  20 64 65 66 65 63 74 20  61 64 64 72 65 73 73 65  | defect addresse|
0001a320  73 20 69 6e 20 73 65 63  74 6f 72 73 2c 20 74 65  |s in sectors, te|
0001a330  72 6d 69 6e 61 74 65 64  20 62 79 20 26 34 30 30  |rminated by &400|
0001a340  30 30 30 30 30 2e 0a 23  49 6e 64 65 6e 74 0a 00  |00000..#Indent..|
0001a350  44 41 54 41 9b 00 00 00  46 69 6c 65 43 6f 72 65  |DATA....FileCore|
0001a360  5f 53 65 63 74 6f 72 4f  70 20 20 28 26 34 30 35  |_SectorOp  (&405|
0001a370  34 41 29 0a 23 50 61 72  65 6e 74 20 46 69 6c 65  |4A).#Parent File|
0001a380  43 6f 72 65 5f 0a 54 68  69 73 20 53 57 49 20 69  |Core_.This SWI i|
0001a390  73 20 69 64 65 6e 74 69  63 61 6c 20 74 6f 20 3c  |s identical to <|
0001a3a0  46 69 6c 65 43 6f 72 65  5f 44 69 73 63 4f 70 3e  |FileCore_DiscOp>|
0001a3b0  20 65 78 63 65 70 74 20  74 68 61 74 20 74 68 65  | except that the|
0001a3c0  20 61 64 64 72 65 73 73  65 73 20 67 69 76 65 6e  | addresses given|
0001a3d0  20 61 72 65 20 69 6e 20  73 65 63 74 6f 72 73 2c  | are in sectors,|
0001a3e0  20 6e 6f 74 20 62 79 74  65 73 2e 00 44 41 54 41  | not bytes..DATA|
0001a3f0  94 01 00 00 46 69 6c 65  43 6f 72 65 5f 46 72 65  |....FileCore_Fre|
0001a400  65 53 70 61 63 65 36 34  20 20 28 26 34 30 35 34  |eSpace64  (&4054|
0001a410  42 29 0a 23 50 61 72 65  6e 74 20 46 69 6c 65 43  |B).#Parent FileC|
0001a420  6f 72 65 5f 0a 3d 3e 09  52 30 20 3d 09 70 6f 69  |ore_.=>.R0 =.poi|
0001a430  6e 74 65 72 20 74 6f 20  64 69 73 63 20 73 70 65  |nter to disc spe|
0001a440  63 69 66 69 65 72 20 28  6e 61 6d 65 2c 20 6f 72  |cifier (name, or|
0001a450  20 3a 30 2c 20 65 74 63  29 0a 09 52 38 20 3d 09  | :0, etc)..R8 =.|
0001a460  70 6f 69 6e 74 65 72 20  74 6f 20 46 69 6c 65 43  |pointer to FileC|
0001a470  6f 72 65 20 69 6e 73 74  61 6e 63 65 20 70 72 69  |ore instance pri|
0001a480  76 61 74 65 20 77 6f 72  64 0a 0a 3c 3d 09 52 30  |vate word..<=.R0|
0001a490  20 3d 09 6c 65 61 73 74  20 73 69 67 6e 69 66 69  | =.least signifi|
0001a4a0  63 61 6e 74 20 77 6f 72  64 20 6f 66 20 66 72 65  |cant word of fre|
0001a4b0  65 20 73 70 61 63 65 0a  09 52 31 20 3d 09 6d 6f  |e space..R1 =.mo|
0001a4c0  73 74 20 73 69 67 6e 69  66 69 63 61 6e 74 20 77  |st significant w|
0001a4d0  6f 72 64 20 6f 66 20 66  72 65 65 20 73 70 61 63  |ord of free spac|
0001a4e0  65 0a 09 52 32 20 3d 09  73 69 7a 65 20 6f 66 20  |e..R2 =.size of |
0001a4f0  6c 61 72 67 65 73 74 20  6f 62 6a 65 63 74 20 74  |largest object t|
0001a500  68 61 74 20 63 61 6e 20  62 65 20 63 72 65 61 74  |hat can be creat|
0001a510  65 64 2c 20 6f 72 20 26  37 46 46 46 46 46 46 46  |ed, or &7FFFFFFF|
0001a520  20 69 66 20 3e 20 32 47  62 0a 0a 54 68 69 73 20  | if > 2Gb..This |
0001a530  63 61 6c 6c 20 72 65 74  75 72 6e 73 20 74 68 65  |call returns the|
0001a540  20 74 6f 74 61 6c 20 66  72 65 65 20 73 70 61 63  | total free spac|
0001a550  65 20 6f 6e 20 67 69 76  65 6e 20 64 69 73 63 20  |e on given disc |
0001a560  77 69 74 68 20 73 75 70  70 6f 72 74 20 66 6f 72  |with support for|
0001a570  20 27 6c 61 72 67 65 27  20 64 69 73 63 73 2e 0a  | 'large' discs..|
0001a580  44 41 54 41 a8 0a 00 00  46 69 6c 65 43 6f 72 65  |DATA....FileCore|
0001a590  5f 44 69 73 63 4f 70 20  65 72 72 6f 72 20 6e 75  |_DiscOp error nu|
0001a5a0  6d 62 65 72 73 0a 23 50  61 72 65 6e 74 20 46 69  |mbers.#Parent Fi|
0001a5b0  6c 65 43 6f 72 65 5f 44  69 73 63 4f 70 0a 45 72  |leCore_DiscOp.Er|
0001a5c0  72 6f 72 09 4d 65 61 6e  69 6e 67 0a 23 4c 69 6e  |ror.Meaning.#Lin|
0001a5d0  65 0a 30 09 2a 49 6e 76  61 6c 69 64 2a 20 3a 20  |e.0.*Invalid* : |
0001a5e0  56 53 20 61 6e 64 20 52  30 20 3d 20 30 20 73 68  |VS and R0 = 0 sh|
0001a5f0  6f 75 6c 64 20 6e 65 76  65 72 20 62 65 20 75 73  |ould never be us|
0001a600  65 64 0a 5c 3c 26 31 30  30 09 49 6e 74 65 72 6e  |ed.\<&100.Intern|
0001a610  61 6c 20 66 69 6c 65 63  6f 72 65 20 65 72 72 6f  |al filecore erro|
0001a620  72 20 6e 75 6d 62 65 72  0a 23 20 47 65 72 70 68  |r number.# Gerph|
0001a630  3e 20 4f 6b 2c 20 57 54  46 20 61 72 65 20 74 68  |> Ok, WTF are th|
0001a640  65 20 69 6e 74 65 72 6e  61 6c 20 66 69 6c 65 63  |e internal filec|
0001a650  6f 72 65 20 65 72 72 6f  72 20 6e 75 6d 62 65 72  |ore error number|
0001a660  73 20 64 6f 63 75 6d 65  6e 74 65 64 20 3f 21 0a  |s documented ?!.|
0001a670  62 33 31 20 73 65 74 09  62 30 2d 32 30 20 3a 09  |b31 set.b0-20 :.|
0001a680  09 64 69 73 63 20 61 64  64 72 65 73 73 2c 20 73  |.disc address, s|
0001a690  68 69 66 74 65 64 20 64  6f 77 6e 20 38 20 62 69  |hifted down 8 bi|
0001a6a0  74 73 0a 09 62 32 31 2d  32 33 20 3a 09 64 72 69  |ts..b21-23 :.dri|
0001a6b0  76 65 20 6e 75 6d 62 65  72 0a 09 62 32 34 2d 32  |ve number..b24-2|
0001a6c0  39 20 3a 09 3c 64 69 73  63 20 65 72 72 6f 72 20  |9 :.<disc error |
0001a6d0  6e 75 6d 62 65 72 3d 3e  2e 66 73 73 70 65 63 69  |number=>.fsspeci|
0001a6e0  66 69 63 3e 0a 09 62 33  30 20 3a 09 09 30 0a 23  |fic>..b30 :..0.#|
0001a6f0  53 75 62 70 61 67 65 20  66 73 73 70 65 63 69 66  |Subpage fsspecif|
0001a700  69 63 0a 46 69 6c 65 43  6f 72 65 5f 44 69 73 63  |ic.FileCore_Disc|
0001a710  4f 70 20 46 53 20 73 70  65 63 69 66 69 63 20 65  |Op FS specific e|
0001a720  72 72 6f 72 73 0a 23 20  47 65 72 70 68 3e 20 52  |rrors.# Gerph> R|
0001a730  65 61 6c 6c 79 20 74 68  65 73 65 20 73 68 6f 75  |eally these shou|
0001a740  6c 64 20 62 65 20 64 6f  63 75 6d 65 6e 74 65 64  |ld be documented|
0001a750  20 75 73 69 6e 67 20 6c  69 6e 6b 73 20 74 6f 20  | using links to |
0001a760  74 68 65 20 72 69 67 68  74 20 70 61 72 74 20 6f  |the right part o|
0001a770  66 0a 23 20 20 20 20 20  20 20 20 74 68 65 20 6d  |f.#        the m|
0001a780  61 6e 75 61 6c 2c 20 62  75 74 20 49 20 63 61 6e  |anual, but I can|
0001a790  27 74 20 62 65 20 62 6f  74 68 65 72 65 64 20 72  |'t be bothered r|
0001a7a0  69 67 68 74 20 6e 6f 77  0a 7b 2a 7d 31 37 37 32  |ight now.{*}1772|
0001a7b0  20 66 6c 6f 70 70 79 20  64 69 73 63 73 3a 7b 2a  | floppy discs:{*|
0001a7c0  7d 0a 23 49 6e 64 65 6e  74 20 32 0a 42 69 74 09  |}.#Indent 2.Bit.|
0001a7d0  4d 65 61 6e 69 6e 67 0a  23 6c 69 6e 65 0a 37 09  |Meaning.#line.7.|
0001a7e0  44 72 69 76 65 20 77 61  73 20 61 6c 72 65 61 64  |Drive was alread|
0001a7f0  79 20 72 75 6e 6e 69 6e  67 0a 23 20 49 20 74 68  |y running.# I th|
0001a800  69 6e 6b 0a 36 09 44 72  69 76 65 20 69 73 20 77  |ink.6.Drive is w|
0001a810  72 69 74 65 20 70 72 6f  74 65 63 74 65 64 0a 35  |rite protected.5|
0001a820  09 57 72 69 74 65 20 66  61 69 6c 65 64 0a 34 09  |.Write failed.4.|
0001a830  52 65 63 6f 72 64 20 6e  6f 74 20 66 6f 75 6e 64  |Record not found|
0001a840  0a 33 09 43 52 43 20 65  72 72 6f 72 0a 32 09 4c  |.3.CRC error.2.L|
0001a850  6f 73 74 20 64 61 74 61  0a 31 09 54 72 61 63 6b  |ost data.1.Track|
0001a860  20 30 20 66 6f 75 6e 64  0a 30 09 44 72 69 76 65  | 0 found.0.Drive|
0001a870  20 62 75 73 79 0a 23 20  4c 61 73 74 20 74 77 6f  | busy.# Last two|
0001a880  20 61 72 65 20 67 75 65  73 73 65 73 0a 0a 23 69  | are guesses..#i|
0001a890  6e 64 65 6e 74 0a 7b 2a  7d 53 54 35 30 36 20 68  |ndent.{*}ST506 h|
0001a8a0  61 72 64 20 64 69 73 63  73 3a 7b 2a 7d 0a 23 49  |ard discs:{*}.#I|
0001a8b0  6e 64 65 6e 74 20 32 0a  56 61 6c 75 65 09 4d 65  |ndent 2.Value.Me|
0001a8c0  61 6e 69 6e 67 0a 23 4c  69 6e 65 0a 26 31 09 41  |aning.#Line.&1.A|
0001a8d0  62 6f 72 74 20 63 6f 6d  6d 61 6e 64 20 61 63 63  |bort command acc|
0001a8e0  65 70 74 65 64 0a 26 32  09 49 6e 76 61 6c 69 64  |epted.&2.Invalid|
0001a8f0  20 63 6f 6d 6d 61 6e 64  20 69 73 73 75 65 64 0a  | command issued.|
0001a900  26 33 09 49 6e 76 61 6c  69 64 20 63 6f 6d 6d 61  |&3.Invalid comma|
0001a910  6e 64 20 70 61 72 61 6d  65 74 65 72 0a 26 34 09  |nd parameter.&4.|
0001a920  48 65 61 64 20 70 6f 73  69 74 69 6f 6e 69 6e 67  |Head positioning|
0001a930  2c 20 64 69 73 63 20 61  63 63 65 73 73 2c 20 6f  |, disc access, o|
0001a940  72 20 64 72 69 76 65 20  63 68 65 63 6b 20 62 65  |r drive check be|
0001a950  66 6f 72 65 20 53 50 43  20 69 73 73 75 65 64 0a  |fore SPC issued.|
0001a960  26 35 09 54 53 54 20 63  6f 6d 6d 61 6e 64 20 61  |&5.TST command a|
0001a970  66 74 65 72 20 53 50 43  20 63 6f 6d 6d 61 6e 64  |fter SPC command|
0001a980  0a 26 36 09 55 53 45 4c  44 20 66 6f 72 20 61 20  |.&6.USELD for a |
0001a990  64 72 69 76 65 20 68 61  73 20 6e 6f 74 20 62 65  |drive has not be|
0001a9a0  65 6e 20 72 65 74 75 72  6e 65 64 0a 26 37 09 57  |en returned.&7.W|
0001a9b0  72 69 74 65 20 66 61 75  6c 74 20 64 65 74 65 63  |rite fault detec|
0001a9c0  74 65 64 20 62 79 20 69  6e 74 65 72 66 61 63 65  |ted by interface|
0001a9d0  0a 26 38 09 44 72 69 76  65 20 6e 6f 74 20 72 65  |.&8.Drive not re|
0001a9e0  61 64 79 0a 26 39 09 53  65 65 6b 20 63 6f 6d 70  |ady.&9.Seek comp|
0001a9f0  6c 65 74 65 20 74 69 6d  65 64 20 6f 75 74 0a 26  |lete timed out.&|
0001aa00  41 09 53 45 4b 2c 20 6f  72 20 64 69 73 63 20 61  |A.SEK, or disc a|
0001aa10  63 63 65 73 73 20 69 73  73 75 65 64 20 64 75 72  |ccess issued dur|
0001aa20  69 6e 67 20 61 20 73 65  65 6b 0a 26 42 09 4e 65  |ing a seek.&B.Ne|
0001aa30  78 74 20 63 79 6c 69 6e  64 65 72 20 61 64 64 72  |xt cylinder addr|
0001aa40  65 73 73 20 69 73 20 74  6f 6f 20 62 69 67 0a 26  |ess is too big.&|
0001aa50  43 09 49 6e 76 61 6c 69  64 20 73 74 65 70 20 72  |C.Invalid step r|
0001aa60  61 74 65 3a 20 68 69 67  68 65 73 74 2d 73 70 65  |ate: highest-spe|
0001aa70  65 64 20 73 65 65 6b 20  73 70 65 63 69 66 69 65  |ed seek specifie|
0001aa80  64 20 69 6e 20 6e 6f 72  6d 61 6c 20 6d 6f 64 65  |d in normal mode|
0001aa90  0a 26 44 09 53 45 4b 2c  20 6f 72 20 64 69 73 63  |.&D.SEK, or disc|
0001aaa0  20 61 63 63 65 73 73 20  69 73 73 75 65 64 20 74  | access issued t|
0001aab0  6f 20 64 72 69 76 65 20  77 69 74 68 20 73 65 65  |o drive with see|
0001aac0  6b 20 65 72 72 6f 72 0a  26 45 09 44 61 74 61 20  |k error.&E.Data |
0001aad0  6f 76 65 72 72 75 6e 20  28 6d 65 6d 6f 72 79 20  |overrun (memory |
0001aae0  69 73 20 73 6c 6f 77 65  72 20 74 68 61 6e 20 74  |is slower than t|
0001aaf0  68 65 20 64 72 69 76 65  29 0a 23 20 74 68 65 20  |he drive).# the |
0001ab00  61 62 6f 76 65 20 73 68  6f 75 6c 64 20 6e 6f 74  |above should not|
0001ab10  20 6f 63 63 75 72 2c 20  65 76 65 6e 20 6f 6e 20  | occur, even on |
0001ab20  41 34 30 30 27 73 20 74  6f 20 6d 79 20 6b 6e 6f  |A400's to my kno|
0001ab30  77 6c 65 64 67 65 0a 26  46 09 48 65 61 64 20 61  |wledge.&F.Head a|
0001ab40  64 64 72 65 73 73 20 74  6f 6f 20 68 69 67 68 0a  |ddress too high.|
0001ab50  26 31 30 09 45 72 72 6f  72 20 63 6f 72 72 65 63  |&10.Error correc|
0001ab60  74 69 6f 6e 20 63 6f 64  65 20 64 65 74 65 63 74  |tion code detect|
0001ab70  65 64 20 61 6e 20 65 72  72 6f 72 0a 26 31 31 09  |ed an error.&11.|
0001ab80  43 52 43 20 65 72 72 6f  72 20 69 6e 20 64 61 74  |CRC error in dat|
0001ab90  61 20 61 72 65 61 0a 26  31 32 09 45 72 72 6f 72  |a area.&12.Error|
0001aba0  20 63 6f 72 72 65 63 74  69 6f 6e 20 63 6f 64 65  | correction code|
0001abb0  20 63 6f 72 72 65 63 74  65 64 20 61 6e 20 65 72  | corrected an er|
0001abc0  72 6f 72 0a 26 31 33 09  45 72 72 6f 72 20 63 6f  |ror.&13.Error co|
0001abd0  72 72 65 63 74 69 6f 6e  20 63 6f 64 65 20 66 61  |rrection code fa|
0001abe0  69 6c 65 64 20 69 6e 20  64 61 74 61 20 61 72 65  |iled in data are|
0001abf0  61 0a 26 31 34 09 49 6e  20 43 4d 50 44 20 63 6f  |a.&14.In CMPD co|
0001ac00  6d 6d 61 6e 64 20 64 61  74 61 20 6d 69 73 6d 61  |mmand data misma|
0001ac10  74 63 68 65 64 20 66 72  6f 6d 20 68 6f 73 74 20  |tched from host |
0001ac20  61 6e 64 20 64 69 73 63  0a 23 20 69 73 20 74 68  |and disc.# is th|
0001ac30  61 74 20 27 76 65 72 69  66 79 20 66 61 69 6c 65  |at 'verify faile|
0001ac40  64 27 20 74 68 65 6e 20  3f 0a 26 31 35 09 43 52  |d' then ?.&15.CR|
0001ac50  43 20 69 6e 20 49 44 20  66 69 65 6c 64 20 28 6e  |C in ID field (n|
0001ac60  65 76 65 72 20 67 65 6e  65 72 61 74 65 64 29 0a  |ever generated).|
0001ac70  26 31 36 09 49 44 20 73  65 61 72 63 68 20 74 69  |&16.ID search ti|
0001ac80  6d 65 64 20 6f 75 74 0a  26 31 37 09 49 44 20 61  |med out.&17.ID a|
0001ac90  72 65 61 20 68 61 73 20  62 61 64 20 61 64 64 72  |rea has bad addr|
0001aca0  65 73 73 20 6d 61 72 6b  0a 26 31 38 09 4d 69 73  |ess mark.&18.Mis|
0001acb0  73 69 6e 67 20 61 64 64  72 65 73 73 20 6d 61 72  |sing address mar|
0001acc0  6b 0a 26 31 39 09 44 72  69 76 65 20 77 72 69 74  |k.&19.Drive writ|
0001acd0  65 20 70 72 6f 74 65 63  74 65 64 0a 0a 23 69 6e  |e protected..#in|
0001ace0  64 65 6e 74 0a 7b 2a 7d  49 44 45 20 64 69 73 63  |dent.{*}IDE disc|
0001acf0  73 3a 7b 2a 7d 0a 23 49  6e 64 65 6e 74 20 32 0a  |s:{*}.#Indent 2.|
0001ad00  56 61 6c 75 65 09 4d 65  61 6e 69 6e 67 0a 23 4c  |Value.Meaning.#L|
0001ad10  69 6e 65 0a 26 32 09 43  6f 6d 6d 61 6e 64 20 61  |ine.&2.Command a|
0001ad20  62 6f 72 74 65 64 20 62  79 20 63 6f 6e 74 72 6f  |borted by contro|
0001ad30  6c 6c 65 72 0a 26 37 09  57 72 69 74 65 20 66 61  |ller.&7.Write fa|
0001ad40  75 6c 74 0a 26 38 09 44  72 69 76 65 20 6e 6f 74  |ult.&8.Drive not|
0001ad50  20 72 65 61 64 79 0a 26  39 09 54 72 61 63 6b 20  | ready.&9.Track |
0001ad60  30 20 6e 6f 74 20 66 6f  75 6e 64 0a 26 31 33 09  |0 not found.&13.|
0001ad70  55 6e 63 6f 72 72 65 63  74 65 64 20 64 61 74 61  |Uncorrected data|
0001ad80  20 65 72 72 6f 72 0a 26  31 36 09 53 65 63 74 6f  | error.&16.Secto|
0001ad90  72 20 49 44 20 66 69 65  6c 64 20 6e 6f 74 20 66  |r ID field not f|
0001ada0  6f 75 6e 64 0a 26 31 37  09 42 61 64 20 62 6c 6f  |ound.&17.Bad blo|
0001adb0  63 6b 20 6d 61 72 6b 20  64 65 74 65 63 74 65 64  |ck mark detected|
0001adc0  0a 26 31 38 09 4e 6f 20  64 61 74 61 20 61 64 64  |.&18.No data add|
0001add0  72 65 73 73 20 6d 61 72  6b 0a 26 32 30 09 4e 6f  |ress mark.&20.No|
0001ade0  20 44 52 51 20 77 68 65  6e 20 65 78 70 65 63 74  | DRQ when expect|
0001adf0  65 64 0a 26 32 31 09 44  72 69 76 65 20 62 75 73  |ed.&21.Drive bus|
0001ae00  79 20 77 68 65 6e 20 63  6f 6d 6d 61 6e 64 65 64  |y when commanded|
0001ae10  0a 26 32 32 09 44 72 69  76 65 20 62 75 73 79 20  |.&22.Drive busy |
0001ae20  6f 6e 20 63 6f 6d 6d 61  6e 64 20 63 6f 6d 70 6c  |on command compl|
0001ae30  65 74 69 6f 6e 0a 23 20  49 20 64 6f 6e 27 74 20  |etion.# I don't |
0001ae40  67 65 74 20 74 68 61 74  2c 20 62 75 74 20 74 68  |get that, but th|
0001ae50  65 72 65 20 79 6f 75 20  67 6f 2e 2e 2e 0a 26 32  |ere you go....&2|
0001ae60  33 09 43 6f 6e 74 72 6f  6c 6c 65 72 20 64 69 64  |3.Controller did|
0001ae70  20 6e 6f 74 20 72 65 73  70 6f 6e 64 20 77 69 74  | not respond wit|
0001ae80  68 69 6e 20 74 69 6d 65  6f 75 74 0a 26 32 34 09  |hin timeout.&24.|
0001ae90  55 6e 6b 6e 6f 77 6e 20  63 6f 64 65 20 69 6e 20  |Unknown code in |
0001aea0  65 72 72 6f 72 20 72 65  67 69 73 74 65 72 0a 0a  |error register..|
0001aeb0  23 69 6e 64 65 6e 74 0a  7b 2a 7d 37 31 30 2f 37  |#indent.{*}710/7|
0001aec0  31 31 20 66 6c 6f 70 70  79 20 64 69 73 63 73 3a  |11 floppy discs:|
0001aed0  7b 2a 7d 0a 23 69 6e 64  65 6e 74 20 32 0a 56 61  |{*}.#indent 2.Va|
0001aee0  6c 75 65 09 4d 65 61 6e  69 6e 67 0a 23 4c 69 6e  |lue.Meaning.#Lin|
0001aef0  65 0a 26 31 09 46 61 74  61 6c 20 65 72 72 6f 72  |e.&1.Fatal error|
0001af00  2c 20 63 6f 6e 74 72 6f  6c 6c 65 72 20 68 61 72  |, controller har|
0001af10  64 77 61 72 65 20 65 72  72 6f 72 0a 26 32 09 46  |dware error.&2.F|
0001af20  61 74 61 6c 20 65 72 72  6f 72 2c 20 63 6f 6d 6d  |atal error, comm|
0001af30  61 6e 64 20 74 69 6d 65  64 20 6f 75 74 3b 20 64  |and timed out; d|
0001af40  72 69 76 65 20 70 72 6f  62 6c 65 6d 0a 26 33 09  |rive problem.&3.|
0001af50  46 61 74 61 6c 20 65 72  72 6f 72 2c 20 74 72 61  |Fatal error, tra|
0001af60  63 6b 20 30 20 6e 6f 74  20 66 6f 75 6e 64 3b 20  |ck 0 not found; |
0001af70  64 72 69 76 65 20 70 72  6f 62 6c 65 6d 0a 26 31  |drive problem.&1|
0001af80  30 09 43 72 69 74 69 63  61 6c 20 65 72 72 6f 72  |0.Critical error|
0001af90  2c 20 73 65 65 6b 20 66  61 69 6c 65 64 0a 26 32  |, seek failed.&2|
0001afa0  30 09 52 65 63 6f 76 65  72 61 62 6c 65 20 65 72  |0.Recoverable er|
0001afb0  72 6f 72 2c 20 6e 6f 6e  20 73 70 65 63 69 66 69  |ror, non specifi|
0001afc0  63 20 63 6f 6d 6d 61 6e  64 20 65 72 72 6f 72 0a  |c command error.|
0001afd0  26 32 31 09 44 61 74 61  20 6f 76 65 72 72 75 6e  |&21.Data overrun|
0001afe0  0a 26 32 32 09 44 61 74  61 20 43 52 43 20 65 72  |.&22.Data CRC er|
0001aff0  72 6f 72 0a 26 32 33 09  53 65 63 74 6f 72 20 6f  |ror.&23.Sector o|
0001b000  72 20 49 44 20 6e 6f 74  20 66 6f 75 6e 64 0a 26  |r ID not found.&|
0001b010  32 34 09 4d 69 73 73 69  6e 67 20 61 64 64 72 65  |24.Missing addre|
0001b020  73 73 20 6d 61 72 6b 0a  44 41 54 41 2c 01 00 00  |ss mark.DATA,...|
0001b030  44 69 73 63 20 63 79 63  6c 65 20 49 44 0a 23 50  |Disc cycle ID.#P|
0001b040  61 72 65 6e 74 20 46 69  6c 65 43 6f 72 65 5f 64  |arent FileCore_d|
0001b050  69 73 63 0a 54 68 65 20  64 69 73 63 20 63 79 63  |isc.The disc cyc|
0001b060  6c 65 20 49 44 20 73 68  6f 75 6c 64 20 62 65 20  |le ID should be |
0001b070  65 69 74 68 65 72 3a 0a  8f 09 61 6e 20 49 44 20  |either:...an ID |
0001b080  73 74 6f 72 65 64 20 6f  6e 20 74 68 65 20 64 69  |stored on the di|
0001b090  73 63 20 77 68 69 63 68  20 63 68 61 6e 67 65 73  |sc which changes|
0001b0a0  20 6f 6e 20 65 61 63 68  20 64 69 73 63 20 75 70  | on each disc up|
0001b0b0  64 61 74 65 20 28 7b 2f  7d 69 2e 65 2e 7b 2f 7d  |date ({/}i.e.{/}|
0001b0c0  20 66 69 6c 63 6f 72 65  27 73 20 62 65 68 61 76  | filcore's behav|
0001b0d0  69 6f 75 72 29 0a 8f 09  61 20 76 61 6c 75 65 20  |iour)...a value |
0001b0e0  63 61 6c 75 63 75 6c 61  74 65 64 20 66 72 6f 6d  |caluculated from|
0001b0f0  20 61 6e 20 61 72 65 61  20 6f 66 20 64 69 73 63  | an area of disc|
0001b100  20 6c 69 6b 65 6c 79 20  74 6f 20 63 68 61 6e 67  | likely to chang|
0001b110  65 20 6f 6e 20 65 61 63  68 20 64 69 73 63 20 75  |e on each disc u|
0001b120  70 64 61 74 65 20 28 7b  2f 7d 65 2e 67 2e 7b 2f  |pdate ({/}e.g.{/|
0001b130  7d 20 61 20 43 52 43 20  6f 66 20 74 68 65 20 46  |} a CRC of the F|
0001b140  41 54 20 6f 6e 20 61 20  44 4f 53 20 66 6c 6f 70  |AT on a DOS flop|
0001b150  70 79 29 0a 44 49 52 24  0c 01 00 00 0c 01 00 00  |py).DIR$........|
0001b160  60 b2 01 00 48 ff ff ff  a4 3d 67 2a 61 02 00 00  |`...H....=g*a...|
0001b170  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0001b180  c4 b4 01 00 48 fd ff ff  d9 52 67 2a 50 07 00 00  |....H....Rg*P...|
0001b190  13 00 00 00 00 00 00 00  30 00 00 00 14 bc 01 00  |........0.......|
0001b1a0  48 fd ff ff d5 5d 98 22  19 04 00 00 13 00 00 00  |H....]."........|
0001b1b0  00 00 00 00 31 00 00 00  30 c0 01 00 48 fd ff ff  |....1...0...H...|
0001b1c0  e6 60 98 22 7e 01 00 00  13 00 00 00 00 00 00 00  |.`."~...........|
0001b1d0  32 00 00 00 b0 c1 01 00  48 fd ff ff 46 63 98 22  |2.......H...Fc."|
0001b1e0  f5 00 00 00 13 00 00 00  00 00 00 00 33 00 00 00  |............3...|
0001b1f0  a8 c2 01 00 48 fd ff ff  52 65 98 22 82 02 00 00  |....H...Re."....|
0001b200  13 00 00 00 00 00 00 00  34 00 00 00 2c c5 01 00  |........4...,...|
0001b210  48 fd ff ff c3 6f 98 22  1c 01 00 00 13 00 00 00  |H....o."........|
0001b220  00 00 00 00 36 00 00 00  48 c6 01 00 48 fd ff ff  |....6...H...H...|
0001b230  73 72 98 22 d8 00 00 00  13 00 00 00 00 00 00 00  |sr."............|
0001b240  37 00 00 00 20 c7 01 00  48 fd ff ff 5d 50 98 22  |7... ...H...]P."|
0001b250  e3 01 00 00 13 00 00 00  00 00 00 00 35 00 00 00  |............5...|
0001b260  44 41 54 41 61 02 00 00  46 69 6c 65 43 6f 72 65  |DATAa...FileCore|
0001b270  5f 4d 69 73 63 4f 70 20  20 28 26 34 30 35 34 39  |_MiscOp  (&40549|
0001b280  29 0a 23 50 61 72 65 6e  74 20 46 69 6c 65 43 6f  |).#Parent FileCo|
0001b290  72 65 5f 0a 3d 3e 09 52  30 20 3d 09 72 65 61 73  |re_.=>.R0 =.reas|
0001b2a0  6f 6e 20 63 6f 64 65 0a  09 20 09 20 20 30 09 3c  |on code.. .  0.<|
0001b2b0  4d 6f 75 6e 74 3d 3e 46  69 6c 65 43 6f 72 65 5f  |Mount=>FileCore_|
0001b2c0  4d 69 73 63 4f 70 30 3e  0a 09 20 09 20 20 31 09  |MiscOp0>.. .  1.|
0001b2d0  3c 50 6f 6c 6c 20 63 68  61 6e 67 65 64 3d 3e 46  |<Poll changed=>F|
0001b2e0  69 6c 65 43 6f 72 65 5f  4d 69 73 63 4f 70 31 3e  |ileCore_MiscOp1>|
0001b2f0  0a 09 20 09 20 20 32 09  3c 4c 6f 63 6b 20 64 72  |.. .  2.<Lock dr|
0001b300  69 76 65 3d 3e 46 69 6c  65 43 6f 72 65 5f 4d 69  |ive=>FileCore_Mi|
0001b310  73 63 4f 70 32 3e 0a 09  20 09 20 20 33 09 3c 55  |scOp2>.. .  3.<U|
0001b320  6e 6c 6f 63 6b 20 64 72  69 76 65 3d 3e 46 69 6c  |nlock drive=>Fil|
0001b330  65 43 6f 72 65 5f 4d 69  73 63 4f 70 33 3e 0a 09  |eCore_MiscOp3>..|
0001b340  20 09 20 20 34 09 3c 50  6f 6c 6c 20 70 65 72 69  | .  4.<Poll peri|
0001b350  6f 64 3d 3e 46 69 6c 65  43 6f 72 65 5f 4d 69 73  |od=>FileCore_Mis|
0001b360  63 4f 70 34 3e 0a 09 20  09 20 20 35 09 3c 45 6a  |cOp4>.. .  5.<Ej|
0001b370  65 63 74 20 64 69 73 63  3d 3e 46 69 6c 65 43 6f  |ect disc=>FileCo|
0001b380  72 65 5f 4d 69 73 63 4f  70 35 3e 0a 09 20 09 20  |re_MiscOp5>.. . |
0001b390  20 36 09 3c 52 65 61 64  20 70 72 6f 63 65 73 73  | 6.<Read process|
0001b3a0  65 64 20 46 69 6c 65 43  6f 72 65 5f 43 72 65 61  |ed FileCore_Crea|
0001b3b0  74 65 20 62 6c 6f 63 6b  3d 3e 46 69 6c 65 43 6f  |te block=>FileCo|
0001b3c0  72 65 5f 4d 69 73 63 4f  70 36 3e 0a 09 20 09 20  |re_MiscOp6>.. . |
0001b3d0  20 37 09 3c 52 65 61 64  20 64 72 69 76 65 20 66  | 7.<Read drive f|
0001b3e0  6c 61 67 73 3d 3e 46 69  6c 65 43 6f 72 65 5f 4d  |lags=>FileCore_M|
0001b3f0  69 73 63 4f 70 37 3e 0a  0a 09 52 31 20 3d 09 64  |iscOp7>...R1 =.d|
0001b400  72 69 76 65 20 6e 75 6d  62 65 72 0a 09 52 32 2d  |rive number..R2-|
0001b410  52 35 20 64 65 70 65 6e  64 61 6e 74 20 6f 6e 20  |R5 dependant on |
0001b420  72 65 61 73 6f 6e 20 63  6f 64 65 0a 09 52 38 20  |reason code..R8 |
0001b430  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 46 69 6c  |=.pointer to Fil|
0001b440  65 43 6f 72 65 20 69 6e  73 74 61 6e 63 65 20 70  |eCore instance p|
0001b450  72 69 76 61 74 65 20 77  6f 72 64 0a 0a 54 68 69  |rivate word..Thi|
0001b460  73 20 63 61 6c 6c 20 70  65 72 66 6f 72 6d 73 20  |s call performs |
0001b470  6d 69 73 63 65 6c 6c 61  6e 65 6f 75 73 20 66 75  |miscellaneous fu|
0001b480  6e 63 74 69 6f 6e 73 20  66 6f 72 20 61 63 63 65  |nctions for acce|
0001b490  73 73 69 6e 67 20 64 72  69 76 65 73 20 64 65 70  |ssing drives dep|
0001b4a0  65 6e 64 69 6e 67 20 6f  6e 20 74 68 65 20 72 65  |ending on the re|
0001b4b0  61 73 6f 6e 20 63 6f 64  65 20 69 6e 20 52 30 2e  |ason code in R0.|
0001b4c0  0a 00 00 00 44 41 54 41  50 07 00 00 46 69 6c 65  |....DATAP...File|
0001b4d0  43 6f 72 65 5f 4d 69 73  63 4f 70 20 30 0a 23 50  |Core_MiscOp 0.#P|
0001b4e0  61 72 65 6e 74 20 46 69  6c 65 43 6f 72 65 5f 4d  |arent FileCore_M|
0001b4f0  69 73 63 4f 70 0a 3d 3e  09 52 30 20 3d 09 30 20  |iscOp.=>.R0 =.0 |
0001b500  28 72 65 61 73 6f 6e 20  63 6f 64 65 29 0a 09 52  |(reason code)..R|
0001b510  31 20 3d 09 64 72 69 76  65 0a 09 52 32 20 3d 09  |1 =.drive..R2 =.|
0001b520  64 69 73 63 20 61 64 64  72 65 73 73 20 74 6f 20  |disc address to |
0001b530  72 65 61 64 20 66 72 6f  6d 0a 09 52 33 20 3d 09  |read from..R3 =.|
0001b540  70 6f 69 6e 74 65 72 20  74 6f 20 62 75 66 66 65  |pointer to buffe|
0001b550  72 0a 09 52 34 20 3d 09  6c 65 6e 67 74 68 20 74  |r..R4 =.length t|
0001b560  6f 20 72 65 61 64 20 69  6e 74 6f 20 62 75 66 66  |o read into buff|
0001b570  65 72 0a 09 52 35 20 3d  09 70 6f 69 6e 74 65 72  |er..R5 =.pointer|
0001b580  20 74 6f 20 3c 64 69 73  63 20 72 65 63 6f 72 64  | to <disc record|
0001b590  3d 3e 46 69 6c 65 43 6f  72 65 5f 64 69 73 63 3e  |=>FileCore_disc>|
0001b5a0  20 74 6f 20 66 69 6c 6c  20 69 6e 20 28 66 6c 6f  | to fill in (flo|
0001b5b0  70 70 69 65 73 20 61 6e  64 20 66 6c 6f 70 70 79  |ppies and floppy|
0001b5c0  20 6c 69 6b 65 20 68 61  72 64 20 64 69 73 63 73  | like hard discs|
0001b5d0  20 6f 6e 6c 79 29 0a 09  52 38 20 3d 09 70 6f 69  | only)..R8 =.poi|
0001b5e0  6e 74 65 72 20 74 6f 20  46 69 6c 65 43 6f 72 65  |nter to FileCore|
0001b5f0  20 69 6e 73 74 61 6e 63  65 20 70 72 69 76 61 74  | instance privat|
0001b600  65 20 77 6f 72 64 0a 0a  3c 3d 09 52 31 2d 52 35  |e word..<=.R1-R5|
0001b610  20 70 72 65 73 65 72 76  65 64 0a 0a 54 68 69 73  | preserved..This|
0001b620  20 63 61 6c 6c 20 6d 6f  75 6e 74 73 20 61 20 64  | call mounts a d|
0001b630  69 73 63 2c 20 72 65 61  64 69 6e 67 20 69 6e 20  |isc, reading in |
0001b640  74 68 65 20 64 61 74 61  20 61 73 6b 65 64 20 66  |the data asked f|
0001b650  6f 72 2e 0a 0a 46 6f 72  20 61 20 66 6c 6f 70 70  |or...For a flopp|
0001b660  79 20 64 69 73 63 2c 20  61 6e 64 20 66 6f 72 20  |y disc, and for |
0001b670  61 20 68 61 72 64 20 64  69 73 63 20 77 68 65 72  |a hard disc wher|
0001b680  65 20 62 69 74 20 34 20  6f 66 20 74 68 65 20 64  |e bit 4 of the d|
0001b690  65 73 63 72 69 70 74 6f  72 20 62 6c 6f 63 6b 20  |escriptor block |
0001b6a0  66 6c 61 67 73 20 69 73  20 73 65 74 2c 20 74 68  |flags is set, th|
0001b6b0  69 73 20 63 61 6c 6c 20  61 73 6b 73 20 74 68 65  |is call asks the|
0001b6c0  20 67 69 76 65 6e 20 66  69 6c 69 6e 67 20 73 79  | given filing sy|
0001b6d0  73 74 65 6d 20 74 6f 20  66 69 72 73 74 20 69 64  |stem to first id|
0001b6e0  65 6e 74 69 66 79 20 74  68 65 20 64 69 73 63 27  |entify the disc'|
0001b6f0  73 20 66 6f 72 6d 61 74  2e 20 54 68 65 20 73 75  |s format. The su|
0001b700  67 67 65 73 74 65 64 20  64 65 6e 73 69 74 79 20  |ggested density |
0001b710  74 6f 20 74 72 79 20 66  69 72 73 74 20 69 73 20  |to try first is |
0001b720  67 69 76 65 6e 20 69 6e  20 74 68 65 20 64 69 73  |given in the dis|
0001b730  63 20 72 65 63 6f 72 64  3b 20 69 66 20 74 68 69  |c record; if thi|
0001b740  73 20 69 73 20 6e 6f 74  20 73 75 63 63 65 73 73  |s is not success|
0001b750  66 75 6c 2c 20 74 68 65  20 66 69 6c 69 6e 67 20  |ful, the filing |
0001b760  73 79 73 74 65 6d 20 73  68 6f 75 6c 64 20 74 68  |system should th|
0001b770  65 6e 20 74 72 79 20 6f  74 68 65 72 20 64 65 6e  |en try other den|
0001b780  73 69 74 69 65 73 2e 20  54 68 65 20 66 6f 6c 6c  |sities. The foll|
0001b790  6f 77 69 6e 67 20 6f 72  64 65 72 20 69 73 20 73  |owing order is s|
0001b7a0  75 67 67 65 73 74 65 64  3a 0a 0a 23 49 6e 64 65  |uggested:..#Inde|
0001b7b0  6e 74 20 32 0a 31 2e 20  51 75 61 64 20 64 65 6e  |nt 2.1. Quad den|
0001b7c0  73 69 74 79 0a 32 2e 20  44 6f 75 62 6c 65 20 64  |sity.2. Double d|
0001b7d0  65 6e 64 69 74 79 0a 33  2e 20 4f 63 74 61 6c 20  |endity.3. Octal |
0001b7e0  64 65 6e 73 69 74 79 0a  34 2e 20 53 69 6e 67 6c  |density.4. Singl|
0001b7f0  65 20 64 65 6e 73 69 74  79 0a 35 2e 20 44 6f 75  |e density.5. Dou|
0001b800  62 6c 65 2b 20 64 65 6e  73 69 74 79 0a 23 49 6e  |ble+ density.#In|
0001b810  64 65 6e 74 0a 0a 4f 6e  63 65 20 74 68 65 20 66  |dent..Once the f|
0001b820  69 6c 69 6e 67 20 73 79  73 74 65 6d 20 68 61 73  |iling system has|
0001b830  20 69 64 65 6e 74 69 66  69 65 64 20 74 68 65 20  | identified the |
0001b840  64 69 73 63 27 73 20 66  6f 72 6d 61 74 2c 20 69  |disc's format, i|
0001b850  74 20 66 69 6c 6c 73 20  69 6e 20 74 68 65 20 27  |t fills in the '|
0001b860  6c 6f 67 32 73 65 63 73  69 7a 65 27 2c 20 27 73  |log2secsize', 's|
0001b870  65 63 73 70 65 72 74 72  61 63 6b 27 2c 20 27 68  |ecspertrack', 'h|
0001b880  65 61 64 73 27 2c 20 27  64 65 6e 73 69 74 79 27  |eads', 'density'|
0001b890  2c 20 27 6c 6f 77 73 65  63 74 6f 72 27 20 61 6e  |, 'lowsector' an|
0001b8a0  64 20 27 72 6f 6f 74 27  20 76 61 6c 75 65 73 20  |d 'root' values |
0001b8b0  69 6e 20 74 68 65 20 64  69 73 63 20 72 65 63 6f  |in the disc reco|
0001b8c0  72 64 2e 0a 0a 23 54 61  62 0a 8f 09 49 66 20 27  |rd...#Tab...If '|
0001b8d0  6c 6f 67 32 73 65 63 73  69 7a 65 27 5c 3c 3d 38  |log2secsize'\<=8|
0001b8e0  2c 20 74 68 65 6e 20 69  74 20 67 69 76 65 73 20  |, then it gives |
0001b8f0  27 68 65 61 64 73 27 20  74 68 65 20 76 61 6c 75  |'heads' the valu|
0001b900  65 20 28 61 63 74 75 61  6c 20 6e 75 6d 62 65 72  |e (actual number|
0001b910  20 6f 66 20 68 65 61 64  73 20 2d 31 29 2c 20 61  | of heads -1), a|
0001b920  6e 64 20 73 65 74 73 20  62 69 74 20 36 20 6f 66  |nd sets bit 6 of|
0001b930  20 27 6c 6f 77 73 65 63  74 6f 72 27 2c 20 73 6f  | 'lowsector', so|
0001b940  20 73 69 64 65 73 20 61  72 65 20 74 72 65 61 74  | sides are treat|
0001b950  65 64 20 61 73 20 73 65  71 75 65 6e 63 65 64 2e  |ed as sequenced.|
0001b960  20 4f 74 68 65 72 77 69  73 65 20 28 69 65 20 77  | Otherwise (ie w|
0001b970  68 65 6e 20 27 6c 6f 67  32 73 65 63 73 69 7a 65  |hen 'log2secsize|
0001b980  27 3e 38 29 20 69 74 20  67 69 76 65 73 20 27 68  |'>8) it gives 'h|
0001b990  65 61 64 73 27 20 74 68  65 20 76 61 6c 75 65 20  |eads' the value |
0001b9a0  28 61 63 74 75 61 6c 20  6e 75 6d 62 65 72 20 6f  |(actual number o|
0001b9b0  66 20 68 65 61 64 73 29  2c 20 61 6e 64 20 63 6c  |f heads), and cl|
0001b9c0  65 61 72 73 20 62 69 74  20 36 20 6f 66 20 6c 6f  |ears bit 6 of lo|
0001b9d0  77 20 73 65 63 74 6f 72  2c 20 73 6f 20 73 69 64  |w sector, so sid|
0001b9e0  65 73 20 61 72 65 20 74  72 65 61 74 65 64 20 61  |es are treated a|
0001b9f0  73 20 69 6e 74 65 72 6c  65 61 76 65 64 2e 0a 20  |s interleaved.. |
0001ba00  20 20 0a 8f 09 54 68 65  20 66 69 6c 69 6e 67 20  |  ...The filing |
0001ba10  73 79 73 74 65 6d 20 63  6c 65 61 72 73 20 62 69  |system clears bi|
0001ba20  74 20 37 20 6f 66 20 27  6c 6f 77 73 65 63 74 6f  |t 7 of 'lowsecto|
0001ba30  72 27 3b 20 74 68 69 73  20 69 73 20 75 73 65 64  |r'; this is used|
0001ba40  20 61 73 20 61 6e 20 69  6e 69 74 69 61 6c 20 76  | as an initial v|
0001ba50  61 6c 75 65 2c 20 77 68  69 63 68 20 46 69 6c 65  |alue, which File|
0001ba60  43 6f 72 65 20 73 75 62  73 65 71 75 65 6e 74 6c  |Core subsequentl|
0001ba70  79 20 63 6f 72 72 65 63  74 73 20 69 66 20 6e 65  |y corrects if ne|
0001ba80  63 65 73 73 61 72 79 2e  0a 0a 48 61 76 69 6e 67  |cessary...Having|
0001ba90  20 66 69 6c 6c 65 64 20  69 6e 20 74 68 65 20 64  | filled in the d|
0001baa0  69 73 63 20 72 65 63 6f  72 64 2c 20 74 68 65 20  |isc record, the |
0001bab0  66 69 6c 69 6e 67 20 73  79 73 74 65 6d 20 74 68  |filing system th|
0001bac0  65 6e 20 72 65 61 64 73  20 69 6e 20 74 68 65 20  |en reads in the |
0001bad0  64 61 74 61 20 61 73 6b  65 64 20 66 6f 72 2e 0a  |data asked for..|
0001bae0  0a 46 6f 72 20 68 61 72  64 20 64 69 73 63 73 20  |.For hard discs |
0001baf0  77 68 65 72 65 20 62 69  74 20 34 20 6f 66 20 74  |where bit 4 of t|
0001bb00  68 65 20 3c 64 65 73 63  72 69 70 74 6f 72 20 62  |he <descriptor b|
0001bb10  6c 6f 63 6b 3d 3e 46 69  6c 65 43 6f 72 65 5f 66  |lock=>FileCore_f|
0001bb20  73 64 65 73 63 72 69 70  74 6f 72 2e 66 6c 61 67  |sdescriptor.flag|
0001bb30  73 3e 20 66 6c 61 67 73  20 69 73 20 63 6c 65 61  |s> flags is clea|
0001bb40  72 2c 20 74 68 69 73 20  6d 65 72 65 6c 79 20 61  |r, this merely a|
0001bb50  73 6b 73 20 74 68 65 20  67 69 76 65 6e 20 66 69  |sks the given fi|
0001bb60  6c 69 6e 67 20 73 79 73  74 65 6d 20 74 6f 20 72  |ling system to r|
0001bb70  65 61 64 20 69 6e 20 74  68 65 20 64 61 74 61 20  |ead in the data |
0001bb80  61 73 6b 65 64 20 66 6f  72 2e 20 54 68 69 73 20  |asked for. This |
0001bb90  74 79 70 69 63 61 6c 6c  79 20 6e 65 63 65 73 73  |typically necess|
0001bba0  69 74 61 74 65 73 20 69  74 20 72 65 61 64 69 6e  |itates it readin|
0001bbb0  67 20 74 68 65 20 62 6f  6f 74 20 62 6c 6f 63 6b  |g the boot block|
0001bbc0  20 6f 66 20 74 68 65 20  64 69 73 63 3b 20 69 66  | of the disc; if|
0001bbd0  20 74 68 65 20 64 69 73  63 20 64 6f 65 73 6e 27  | the disc doesn'|
0001bbe0  74 20 68 61 76 65 20 6f  6e 65 2c 20 74 68 65 20  |t have one, the |
0001bbf0  66 69 6c 69 6e 67 20 73  79 73 74 65 6d 20 67 65  |filing system ge|
0001bc00  6e 65 72 61 74 65 73 20  6f 6e 65 20 69 74 73 65  |nerates one itse|
0001bc10  6c 66 2e 0a 44 41 54 41  19 04 00 00 46 69 6c 65  |lf..DATA....File|
0001bc20  43 6f 72 65 5f 4d 69 73  63 4f 70 20 31 0a 23 50  |Core_MiscOp 1.#P|
0001bc30  61 72 65 6e 74 20 46 69  6c 65 43 6f 72 65 5f 4d  |arent FileCore_M|
0001bc40  69 73 63 4f 70 0a 3d 3e  09 52 30 20 3d 09 31 20  |iscOp.=>.R0 =.1 |
0001bc50  28 72 65 61 73 6f 6e 20  63 6f 64 65 29 0a 09 52  |(reason code)..R|
0001bc60  31 20 3d 09 64 72 69 76  65 0a 09 52 32 20 3d 09  |1 =.drive..R2 =.|
0001bc70  73 65 71 75 65 6e 63 65  20 6e 75 6d 62 65 72 0a  |sequence number.|
0001bc80  09 52 38 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R8 =.pointer to|
0001bc90  20 46 69 6c 65 43 6f 72  65 20 70 72 69 76 61 74  | FileCore privat|
0001bca0  65 20 69 6e 73 74 61 6e  63 65 20 77 6f 72 64 0a  |e instance word.|
0001bcb0  0a 3c 3d 09 52 32 20 3d  09 73 65 71 75 65 6e 63  |.<=.R2 =.sequenc|
0001bcc0  65 20 6e 75 6d 62 65 72  0a 09 52 33 20 3d 09 3c  |e number..R3 =.<|
0001bcd0  72 65 73 75 6c 74 20 66  6c 61 67 3d 3e 2e 66 6c  |result flag=>.fl|
0001bce0  61 67 73 3e 0a 0a 54 68  65 20 73 65 71 75 65 6e  |ags>..The sequen|
0001bcf0  63 65 20 6e 75 6d 62 65  72 20 69 73 20 74 6f 20  |ce number is to |
0001bd00  65 6e 73 75 72 65 20 6e  6f 20 63 68 61 6e 67 65  |ensure no change|
0001bd10  73 20 61 72 65 20 6c 6f  73 74 20 64 75 65 20 74  |s are lost due t|
0001bd20  6f 20 72 65 73 65 74 20  62 65 69 6e 67 20 70 72  |o reset being pr|
0001bd30  65 73 73 65 64 2e 20 42  6f 74 68 20 74 68 65 20  |essed. Both the |
0001bd40  67 69 76 65 6e 20 66 69  6c 69 6e 67 20 73 79 73  |given filing sys|
0001bd50  74 65 6d 20 61 6e 64 20  74 68 65 20 46 69 6c 65  |tem and the File|
0001bd60  43 6f 72 65 20 69 6e 63  61 72 6e 61 74 69 6f 6e  |Core incarnation|
0001bd70  20 73 68 6f 75 6c 64 20  73 74 61 72 74 20 77 69  | should start wi|
0001bd80  74 68 20 61 20 73 65 71  75 65 6e 63 65 20 6e 75  |th a sequence nu|
0001bd90  6d 62 65 72 20 6f 66 20  30 20 66 6f 72 20 65 61  |mber of 0 for ea|
0001bda0  63 68 20 64 72 69 76 65  2e 20 54 68 65 20 66 69  |ch drive. The fi|
0001bdb0  6c 69 6e 67 20 73 79 73  74 65 6d 20 69 6e 63 72  |ling system incr|
0001bdc0  65 6d 65 6e 74 73 20 74  68 65 20 73 65 71 75 65  |ements the seque|
0001bdd0  6e 63 65 20 6e 75 6d 62  65 72 20 77 69 74 68 20  |nce number with |
0001bde0  65 61 63 68 20 63 68 61  6e 67 65 20 6f 66 20 73  |each change of s|
0001bdf0  74 61 74 65 2e 20 49 66  20 74 68 65 20 66 69 6c  |tate. If the fil|
0001be00  69 6e 67 20 73 79 73 74  65 6d 20 66 69 6e 64 73  |ing system finds|
0001be10  20 74 68 65 20 65 6e 74  72 79 20 73 65 71 75 65  | the entry seque|
0001be20  6e 63 65 20 6e 75 6d 62  65 72 20 64 6f 65 73 6e  |nce number doesn|
0001be30  27 74 20 6d 61 74 63 68  20 69 74 73 20 63 6f 70  |'t match its cop|
0001be40  79 20 69 74 20 73 68 6f  75 6c 64 20 72 65 74 75  |y it should retu|
0001be50  72 6e 20 63 68 61 6e 67  65 64 2f 6d 61 79 62 65  |rn changed/maybe|
0001be60  20 63 68 61 6e 67 65 64  2c 20 64 65 70 65 6e 64  | changed, depend|
0001be70  69 6e 67 20 6f 6e 20 77  68 65 74 68 65 72 20 74  |ing on whether t|
0001be80  68 65 20 64 69 73 63 20  63 68 61 6e 67 65 64 20  |he disc changed |
0001be90  6c 69 6e 65 20 77 6f 72  6b 73 2f 64 6f 65 73 6e  |line works/doesn|
0001bea0  27 74 20 77 6f 72 6b 2e  0a 23 53 75 62 70 61 67  |'t work..#Subpag|
0001beb0  65 20 66 6c 61 67 73 0a  4d 69 73 63 4f 70 20 33  |e flags.MiscOp 3|
0001bec0  20 72 65 73 75 6c 74 20  66 6c 61 67 73 0a 42 69  | result flags.Bi|
0001bed0  74 20 20 20 4d 65 61 6e  69 6e 67 20 77 68 65 6e  |t   Meaning when|
0001bee0  20 73 65 74 0a 23 4c 69  6e 65 0a 30 09 6e 6f 74  | set.#Line.0.not|
0001bef0  20 63 68 61 6e 67 65 64  0a 31 09 6d 61 79 62 65  | changed.1.maybe|
0001bf00  20 63 68 61 6e 67 65 64  0a 32 09 63 68 61 6e 67  | changed.2.chang|
0001bf10  65 64 0a 33 09 65 6d 70  74 79 0a 34 09 72 65 61  |ed.3.empty.4.rea|
0001bf20  64 79 0a 35 09 64 72 69  76 65 20 69 73 20 34 30  |dy.5.drive is 40|
0001bf30  20 74 72 61 63 6b 0a 36  09 65 6d 70 74 79 20 77  | track.6.empty w|
0001bf40  6f 72 6b 73 0a 37 09 63  68 61 6e 67 65 64 20 77  |orks.7.changed w|
0001bf50  6f 72 6b 73 0a 38 09 64  69 73 63 20 69 6e 20 64  |orks.8.disc in d|
0001bf60  72 69 76 65 20 69 73 20  68 69 67 68 20 64 65 6e  |rive is high den|
0001bf70  73 69 74 79 0a 39 09 64  65 6e 73 69 74 79 20 73  |sity.9.density s|
0001bf80  65 6e 73 69 6e 67 20 77  6f 72 6b 73 0a 31 30 09  |ensing works.10.|
0001bf90  72 65 61 64 79 20 77 6f  72 6b 73 0a 31 31 2d 33  |ready works.11-3|
0001bfa0  31 09 72 65 73 65 72 76  65 64 20 6d 75 73 74 20  |1.reserved must |
0001bfb0  62 65 20 7a 65 72 6f 0a  0a 45 78 61 63 74 6c 79  |be zero..Exactly|
0001bfc0  20 6f 6e 65 20 6f 66 20  74 68 65 20 62 69 74 73  | one of the bits|
0001bfd0  20 30 2d 33 20 6d 75 73  74 20 62 65 20 73 65 74  | 0-3 must be set|
0001bfe0  2e 20 4f 6e 63 65 20 62  69 74 20 36 20 6f 72 20  |. Once bit 6 or |
0001bff0  37 20 69 73 20 72 65 74  75 72 6e 65 64 20 73 65  |7 is returned se|
0001c000  74 20 66 6f 72 20 61 20  67 69 76 65 6e 20 64 72  |t for a given dr|
0001c010  69 76 65 2c 20 74 68 65  79 20 6d 75 73 74 20 61  |ive, they must a|
0001c020  6c 77 61 79 73 20 62 65  20 73 6f 2e 0a 00 00 00  |lways be so.....|
0001c030  44 41 54 41 7e 01 00 00  46 69 6c 65 43 6f 72 65  |DATA~...FileCore|
0001c040  5f 4d 69 73 63 4f 70 20  32 0a 23 50 61 72 65 6e  |_MiscOp 2.#Paren|
0001c050  74 20 46 69 6c 65 43 6f  72 65 5f 4d 69 73 63 4f  |t FileCore_MiscO|
0001c060  70 0a 3d 3e 09 52 30 20  3d 09 32 20 28 72 65 61  |p.=>.R0 =.2 (rea|
0001c070  73 6f 6e 20 63 6f 64 65  29 0a 09 52 31 20 3d 09  |son code)..R1 =.|
0001c080  66 6c 6f 70 70 79 20 64  72 69 76 65 0a 09 52 38  |floppy drive..R8|
0001c090  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 46 69  | =.pointer to Fi|
0001c0a0  6c 65 43 6f 72 65 20 69  6e 73 74 61 6e 63 65 20  |leCore instance |
0001c0b0  70 72 69 76 61 74 65 20  77 6f 72 64 0a 0a 54 68  |private word..Th|
0001c0c0  69 73 20 63 61 6c 6c 20  6c 6f 63 6b 73 20 61 20  |is call locks a |
0001c0d0  64 69 73 63 20 69 6e 20  61 20 64 72 69 76 65 2c  |disc in a drive,|
0001c0e0  20 79 6f 75 20 63 61 6e  20 6f 6e 6c 79 20 75 73  | you can only us|
0001c0f0  65 20 69 74 20 6f 6e 6c  79 20 66 6f 72 20 61 20  |e it only for a |
0001c100  66 6c 6f 70 70 79 20 64  72 69 76 65 2e 20 49 74  |floppy drive. It|
0001c110  20 73 68 6f 75 6c 64 20  61 74 20 6c 65 61 73 74  | should at least|
0001c120  20 65 6e 73 75 72 65 20  74 68 61 74 20 74 68 65  | ensure that the|
0001c130  20 64 72 69 76 65 20 6c  69 67 68 74 20 73 74 61  | drive light sta|
0001c140  79 73 20 6f 6e 20 75 6e  74 69 6c 20 75 6e 6c 6f  |ys on until unlo|
0001c150  63 6b 65 64 2e 20 4e 6f  74 65 20 74 68 61 74 20  |cked. Note that |
0001c160  6c 6f 63 6b 73 20 61 72  65 20 63 6f 75 6e 74 65  |locks are counte|
0001c170  64 2c 20 73 6f 20 65 61  63 68 20 27 6c 6f 63 6b  |d, so each 'lock|
0001c180  20 64 72 69 76 65 27 20  6d 75 73 74 20 62 65 20  | drive' must be |
0001c190  6d 61 74 63 68 65 64 20  62 79 20 61 6e 20 27 75  |matched by an 'u|
0001c1a0  6e 6c 6f 63 6b 20 64 72  69 76 65 27 2e 20 00 00  |nlock drive'. ..|
0001c1b0  44 41 54 41 f5 00 00 00  46 69 6c 65 43 6f 72 65  |DATA....FileCore|
0001c1c0  5f 4d 69 73 63 4f 70 20  33 0a 23 50 61 72 65 6e  |_MiscOp 3.#Paren|
0001c1d0  74 20 46 69 6c 65 43 6f  72 65 5f 4d 69 73 63 4f  |t FileCore_MiscO|
0001c1e0  70 0a 3d 3e 09 52 30 20  3d 09 33 20 28 72 65 61  |p.=>.R0 =.3 (rea|
0001c1f0  73 6f 6e 20 63 6f 64 65  29 0a 09 52 31 20 3d 09  |son code)..R1 =.|
0001c200  64 72 69 76 65 0a 09 52  38 20 3d 09 70 6f 69 6e  |drive..R8 =.poin|
0001c210  74 65 72 20 74 6f 20 46  69 6c 65 43 6f 72 65 20  |ter to FileCore |
0001c220  69 6e 73 74 61 6e 63 65  20 70 72 69 76 61 74 65  |instance private|
0001c230  20 77 6f 72 64 0a 0a 54  68 69 73 20 63 61 6c 6c  | word..This call|
0001c240  20 63 61 6e 20 6f 6e 6c  79 20 62 65 20 63 61 6c  | can only be cal|
0001c250  6c 65 64 20 66 6f 72 20  61 20 66 6c 6f 70 70 79  |led for a floppy|
0001c260  20 64 72 69 76 65 2e 20  49 74 20 72 65 76 65 72  | drive. It rever|
0001c270  73 65 73 20 61 20 73 69  6e 67 6c 65 20 4d 69 73  |ses a single Mis|
0001c280  63 4f 70 20 27 3c 4c 6f  63 6b 20 64 72 69 76 65  |cOp '<Lock drive|
0001c290  3d 3e 46 69 6c 65 43 6f  72 65 5f 4d 69 73 63 4f  |=>FileCore_MiscO|
0001c2a0  70 32 3e 27 2e 00 00 00  44 41 54 41 82 02 00 00  |p2>'....DATA....|
0001c2b0  46 69 6c 65 43 6f 72 65  5f 4d 69 73 63 4f 70 20  |FileCore_MiscOp |
0001c2c0  34 0a 23 50 61 72 65 6e  74 20 46 69 6c 65 43 6f  |4.#Parent FileCo|
0001c2d0  72 65 5f 4d 69 73 63 4f  70 0a 3d 3e 09 52 30 20  |re_MiscOp.=>.R0 |
0001c2e0  3d 09 34 20 28 72 65 61  73 6f 6e 20 63 6f 64 65  |=.4 (reason code|
0001c2f0  29 0a 09 52 31 20 3d 09  64 72 69 76 65 0a 09 52  |)..R1 =.drive..R|
0001c300  38 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 46  |8 =.pointer to F|
0001c310  69 6c 65 43 6f 72 65 20  69 6e 73 74 61 6e 63 65  |ileCore instance|
0001c320  20 70 72 69 76 61 74 65  20 77 6f 72 64 0a 0a 3c  | private word..<|
0001c330  3d 09 52 35 20 3d 09 6d  69 6e 69 6d 75 6d 20 70  |=.R5 =.minimum p|
0001c340  6f 6c 6c 69 6e 67 20 70  65 72 69 6f 64 20 28 69  |olling period (i|
0001c350  6e 20 63 65 6e 74 69 73  65 63 6f 6e 64 73 29 2c  |n centiseconds),|
0001c360  20 6f 72 20 2d 31 20 69  66 20 63 68 61 6e 67 65  | or -1 if change|
0001c370  64 20 64 6f 65 73 6e 27  74 20 77 6f 72 6b 0a 09  |d doesn't work..|
0001c380  52 36 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R6 =.pointer to |
0001c390  6d 65 64 69 61 20 74 79  70 65 20 73 74 72 69 6e  |media type strin|
0001c3a0  67 20 28 65 67 20 27 64  69 73 63 27 20 66 6f 72  |g (eg 'disc' for|
0001c3b0  20 41 44 46 53 0a 0a 54  68 69 73 20 63 61 6c 6c  | ADFS..This call|
0001c3c0  20 69 6e 66 6f 72 6d 73  20 46 69 6c 65 43 6f 72  | informs FileCor|
0001c3d0  65 20 6f 66 20 74 68 65  20 6d 69 6e 69 6d 75 6d  |e of the minimum|
0001c3e0  20 70 65 72 69 6f 64 20  62 65 74 77 65 65 6e 20  | period between |
0001c3f0  70 6f 6c 6c 69 6e 67 20  66 6f 72 20 64 69 73 63  |polling for disc|
0001c400  20 69 6e 73 65 72 74 69  6f 6e 20 75 6e 64 65 72  | insertion under|
0001c410  20 74 68 65 20 67 69 76  65 6e 20 66 69 6c 69 6e  | the given filin|
0001c420  67 20 73 79 73 74 65 6d  2e 20 54 68 69 73 20 69  |g system. This i|
0001c430  73 20 73 6f 20 74 68 61  74 20 64 72 69 76 65 20  |s so that drive |
0001c440  6c 69 67 68 74 73 20 64  6f 6e 27 74 20 72 65 6d  |lights don't rem|
0001c450  61 69 6e 20 63 6f 6e 74  69 6e 6f 75 73 6c 79 20  |ain continously |
0001c460  69 6c 6c 75 6d 69 6e 61  74 65 64 2e 0a 0a 54 68  |illuminated...Th|
0001c470  65 20 76 61 6c 75 65 73  20 61 72 65 20 72 65 2d  |e values are re-|
0001c480  65 78 70 6f 72 74 65 64  20 62 79 20 46 69 6c 65  |exported by File|
0001c490  43 6f 72 65 20 69 6e 20  74 68 65 20 55 70 43 61  |Core in the UpCa|
0001c4a0  6c 6c 73 20 3c 27 4d 65  64 69 61 20 6e 6f 74 20  |lls <'Media not |
0001c4b0  70 72 65 73 65 6e 74 27  3d 3e 4f 53 5f 55 70 43  |present'=>OS_UpC|
0001c4c0  61 6c 6c 31 3e 20 61 6e  64 20 3c 27 4d 65 64 69  |all1> and <'Medi|
0001c4d0  61 20 6e 6f 74 20 6b 6e  6f 77 6e 27 3d 3e 4f 53  |a not known'=>OS|
0001c4e0  5f 55 70 43 61 6c 6c 32  3e 2e 20 54 68 65 20 76  |_UpCall2>. The v|
0001c4f0  61 6c 75 65 20 61 70 70  6c 69 65 73 20 74 6f 20  |alue applies to |
0001c500  61 6c 6c 20 64 72 69 76  65 73 20 72 61 74 68 65  |all drives rathe|
0001c510  72 20 74 68 61 6e 20 61  20 70 61 72 74 69 63 75  |r than a particu|
0001c520  6c 61 72 20 64 72 69 76  65 2e 00 00 44 41 54 41  |lar drive...DATA|
0001c530  1c 01 00 00 46 69 6c 65  43 6f 72 65 5f 4d 69 73  |....FileCore_Mis|
0001c540  63 4f 70 20 36 0a 23 50  61 72 65 6e 74 20 46 69  |cOp 6.#Parent Fi|
0001c550  6c 65 43 6f 72 65 5f 4d  69 73 63 4f 70 0a 3d 3e  |leCore_MiscOp.=>|
0001c560  09 52 30 20 3d 09 36 20  28 72 65 61 73 6f 6e 20  |.R0 =.6 (reason |
0001c570  63 6f 64 65 29 0a 09 52  38 20 3d 09 70 6f 69 6e  |code)..R8 =.poin|
0001c580  74 65 72 20 74 6f 20 46  69 6c 65 43 6f 72 65 20  |ter to FileCore |
0001c590  69 6e 73 74 61 6e 63 65  20 70 72 69 76 61 74 65  |instance private|
0001c5a0  20 77 6f 72 64 0a 0a 3c  3d 09 52 30 20 3d 09 70  | word..<=.R0 =.p|
0001c5b0  6f 69 6e 74 65 72 20 74  6f 20 3c 46 69 6c 65 43  |ointer to <FileC|
0001c5c0  6f 72 65 5f 43 72 65 61  74 65 3e 20 62 6c 6f 63  |ore_Create> bloc|
0001c5d0  6b 2c 20 77 69 74 68 20  61 64 64 72 65 73 73 65  |k, with addresse|
0001c5e0  73 20 69 6e 20 70 6c 61  63 65 20 6f 66 20 6f 66  |s in place of of|
0001c5f0  66 73 65 74 73 0a 0a 54  68 69 73 20 63 61 6c 6c  |fsets..This call|
0001c600  20 72 65 61 64 73 20 74  68 65 20 46 69 6c 65 43  | reads the FileC|
0001c610  6f 72 65 5f 43 72 65 61  74 65 20 62 6c 6f 63 6b  |ore_Create block|
0001c620  20 75 73 65 64 20 74 6f  20 69 6e 69 74 69 61 6c  | used to initial|
0001c630  69 73 65 20 74 68 69 73  20 66 69 6c 69 6e 67 20  |ise this filing |
0001c640  73 79 73 74 65 6d 2e 0a  44 41 54 41 d8 00 00 00  |system..DATA....|
0001c650  46 69 6c 65 43 6f 72 65  5f 4d 69 73 63 4f 70 20  |FileCore_MiscOp |
0001c660  37 0a 23 50 61 72 65 6e  74 20 46 69 6c 65 43 6f  |7.#Parent FileCo|
0001c670  72 65 5f 4d 69 73 63 4f  70 0a 3d 3e 09 52 30 20  |re_MiscOp.=>.R0 |
0001c680  3d 09 37 20 28 72 65 61  73 6f 6e 20 63 6f 64 65  |=.7 (reason code|
0001c690  29 0a 09 52 31 20 3d 09  64 72 69 76 65 20 6e 75  |)..R1 =.drive nu|
0001c6a0  6d 62 65 72 0a 09 52 38  20 3d 09 70 6f 69 6e 74  |mber..R8 =.point|
0001c6b0  65 72 20 74 6f 20 46 69  6c 65 43 6f 72 65 20 69  |er to FileCore i|
0001c6c0  6e 73 74 61 6e 63 65 20  70 72 69 76 61 74 65 20  |nstance private |
0001c6d0  77 6f 72 64 0a 0a 3c 3d  09 52 30 20 3d 09 66 6c  |word..<=.R0 =.fl|
0001c6e0  61 67 2c 20 62 30 20 73  65 74 3a 20 64 72 69 76  |ag, b0 set: driv|
0001c6f0  65 20 6c 6f 63 6b 65 64  0a 0a 54 68 69 73 20 63  |e locked..This c|
0001c700  61 6c 6c 20 72 65 61 64  20 66 6c 61 67 73 20 61  |all read flags a|
0001c710  62 6f 75 74 20 74 68 65  20 64 72 69 76 65 2e 0a  |bout the drive..|
0001c720  44 41 54 41 e3 01 00 00  46 69 6c 65 43 6f 72 65  |DATA....FileCore|
0001c730  5f 4d 69 73 63 4f 70 20  35 0a 23 50 61 72 65 6e  |_MiscOp 5.#Paren|
0001c740  74 20 46 69 6c 65 43 6f  72 65 5f 4d 69 73 63 4f  |t FileCore_MiscO|
0001c750  70 0a 3d 3e 09 52 30 20  3d 09 35 20 28 72 65 61  |p.=>.R0 =.5 (rea|
0001c760  73 6f 6e 20 63 6f 64 65  29 0a 09 52 31 20 3d 09  |son code)..R1 =.|
0001c770  64 72 69 76 65 2c 20 62  69 74 20 33 31 20 73 65  |drive, bit 31 se|
0001c780  74 20 69 66 20 74 72 79  69 6e 67 20 74 6f 20 66  |t if trying to f|
0001c790  69 6e 64 20 61 20 64 69  63 0a 09 52 34 20 3d 09  |ind a dic..R4 =.|
0001c7a0  69 74 65 72 61 74 69 6f  6e 20 63 6f 75 6e 74 2c  |iteration count,|
0001c7b0  20 69 66 20 62 69 74 20  33 31 20 6f 66 20 52 31  | if bit 31 of R1|
0001c7c0  20 73 65 74 0a 09 52 35  20 3d 09 74 69 6d 65 6f  | set..R5 =.timeo|
0001c7d0  75 74 20 70 65 72 69 6f  64 2c 20 69 66 20 62 69  |ut period, if bi|
0001c7e0  74 20 33 31 20 6f 66 20  52 31 20 73 65 74 0a 09  |t 31 of R1 set..|
0001c7f0  52 38 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R8 =.pointer to |
0001c800  46 69 6c 65 43 6f 72 65  20 69 6e 73 74 61 6e 63  |FileCore instanc|
0001c810  65 20 70 72 69 76 61 74  65 20 77 6f 72 64 0a 0a  |e private word..|
0001c820  54 68 69 73 20 63 61 6c  6c 20 63 61 75 73 65 73  |This call causes|
0001c830  20 61 20 46 69 6c 65 43  6f 72 65 20 73 79 73 74  | a FileCore syst|
0001c840  65 6d 20 74 6f 20 65 6a  65 63 74 20 61 20 64 69  |em to eject a di|
0001c850  73 63 2e 0a 0a 3c 27 4d  65 64 69 61 20 6e 6f 74  |sc...<'Media not|
0001c860  20 70 72 65 73 65 6e 74  27 3d 3e 4f 53 5f 55 70  | present'=>OS_Up|
0001c870  43 61 6c 6c 31 3e 20 61  6e 64 20 3c 27 4d 65 64  |Call1> and <'Med|
0001c880  69 61 20 6e 6f 74 20 6b  6e 6f 77 6e 27 3d 3e 4f  |ia not known'=>O|
0001c890  53 5f 55 70 43 61 6c 6c  32 3e 20 77 69 6c 6c 20  |S_UpCall2> will |
0001c8a0  63 61 75 73 65 20 62 69  74 20 33 31 20 74 6f 20  |cause bit 31 to |
0001c8b0  62 65 20 73 65 74 2c 20  69 6e 64 69 63 61 74 69  |be set, indicati|
0001c8c0  6e 67 20 74 68 61 74 20  79 6f 75 20 73 68 6f 75  |ng that you shou|
0001c8d0  6c 64 20 63 68 6f 6f 73  65 20 61 20 73 75 69 74  |ld choose a suit|
0001c8e0  61 62 6c 65 20 64 72 69  76 65 20 74 6f 20 65 6a  |able drive to ej|
0001c8f0  65 63 74 20 74 68 65 20  64 69 73 63 20 66 72 6f  |ect the disc fro|
0001c900  6d 2e 0a 00 44 49 52 24  64 01 00 00 64 01 00 00  |m...DIR$d...d...|
0001c910  68 ca 01 00 48 ff ff ff  ed cd 9b 22 f7 02 00 00  |h...H......"....|
0001c920  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0001c930  60 cd 01 00 47 fd ff ff  82 a8 9f ce 3b 04 00 00  |`...G.......;...|
0001c940  13 00 00 00 00 00 00 00  5f 66 6c 61 67 73 00 00  |........_flags..|
0001c950  9c d1 01 00 48 fd ff ff  5d a3 5d 25 41 01 00 00  |....H...].]%A...|
0001c960  13 00 00 00 00 00 00 00  30 00 00 00 e0 d2 01 00  |........0.......|
0001c970  48 fd ff ff 92 99 5d 25  71 01 00 00 13 00 00 00  |H.....]%q.......|
0001c980  00 00 00 00 31 00 00 00  54 d4 01 00 47 fd ff ff  |....1...T...G...|
0001c990  90 8e a0 ce 95 00 00 00  13 00 00 00 00 00 00 00  |................|
0001c9a0  31 35 00 00 ec d4 01 00  47 fd ff ff 2c 8b a0 ce  |15......G...,...|
0001c9b0  37 01 00 00 13 00 00 00  00 00 00 00 32 00 00 00  |7...........2...|
0001c9c0  24 d6 01 00 47 fd ff ff  dd b5 9f ce 20 05 00 00  |$...G....... ...|
0001c9d0  13 00 00 00 00 00 00 00  33 00 00 00 44 db 01 00  |........3...D...|
0001c9e0  47 fd ff ff 25 74 a0 ce  83 02 00 00 13 00 00 00  |G...%t..........|
0001c9f0  00 00 00 00 34 00 00 00  c8 dd 01 00 47 fd ff ff  |....4.......G...|
0001ca00  4f 69 a0 ce be 00 00 00  13 00 00 00 00 00 00 00  |Oi..............|
0001ca10  35 00 00 00 88 de 01 00  47 fd ff ff 4f 66 a0 ce  |5.......G...Of..|
0001ca20  95 00 00 00 13 00 00 00  00 00 00 00 36 00 00 00  |............6...|
0001ca30  20 df 01 00 47 fd ff ff  b5 62 a0 ce 26 01 00 00  | ...G....b..&...|
0001ca40  13 00 00 00 00 00 00 00  37 2d 38 00 48 e0 01 00  |........7-8.H...|
0001ca50  48 fd ff ff e2 aa 5d 25  0b 03 00 00 13 00 00 00  |H.....]%........|
0001ca60  00 00 00 00 39 00 00 00  44 41 54 41 f7 02 00 00  |....9...DATA....|
0001ca70  46 69 6c 65 43 6f 72 65  5f 44 69 73 63 4f 70 20  |FileCore_DiscOp |
0001ca80  20 28 26 34 30 35 34 30  29 0a 23 50 72 65 66 69  | (&40540).#Prefi|
0001ca90  78 20 46 69 6c 65 43 6f  72 65 5f 44 69 73 63 4f  |x FileCore_DiscO|
0001caa0  70 5f 0a 23 50 61 72 65  6e 74 20 46 69 6c 65 43  |p_.#Parent FileC|
0001cab0  6f 72 65 5f 0a 23 20 47  65 72 70 68 3e 20 49 27  |ore_.# Gerph> I'|
0001cac0  76 65 20 72 65 6f 72 67  61 6e 69 73 65 64 20 74  |ve reorganised t|
0001cad0  68 69 73 20 70 61 67 65  2c 20 27 63 6f 73 20 69  |his page, 'cos i|
0001cae0  74 20 6c 6f 6f 6b 65 64  20 27 61 77 6b 77 61 72  |t looked 'awkwar|
0001caf0  64 27 20 62 65 66 6f 72  65 0a 3d 3e 09 52 31 20  |d' before.=>.R1 |
0001cb00  3d 09 72 65 61 73 6f 6e  73 20 61 6e 64 20 3c 66  |=.reasons and <f|
0001cb10  6c 61 67 73 3e 0a 09 20  09 20 20 30 09 3c 56 65  |lags>.. .  0.<Ve|
0001cb20  72 69 66 79 3d 3e 46 69  6c 65 43 6f 72 65 5f 44  |rify=>FileCore_D|
0001cb30  69 73 63 4f 70 30 3e 0a  09 20 09 20 20 31 09 3c  |iscOp0>.. .  1.<|
0001cb40  52 65 61 64 20 73 65 63  74 6f 72 73 3d 3e 46 69  |Read sectors=>Fi|
0001cb50  6c 65 43 6f 72 65 5f 44  69 73 63 4f 70 31 3e 0a  |leCore_DiscOp1>.|
0001cb60  09 20 09 20 20 32 09 3c  57 72 69 74 65 20 73 65  |. .  2.<Write se|
0001cb70  63 74 6f 72 73 3d 3e 46  69 6c 65 43 6f 72 65 5f  |ctors=>FileCore_|
0001cb80  44 69 73 63 4f 70 32 3e  0a 09 20 09 20 20 33 09  |DiscOp2>.. .  3.|
0001cb90  3c 52 65 61 64 20 74 72  61 63 6b 2f 49 64 3d 3e  |<Read track/Id=>|
0001cba0  46 69 6c 65 43 6f 72 65  5f 44 69 73 63 4f 70 33  |FileCore_DiscOp3|
0001cbb0  3e 0a 09 20 09 20 20 34  09 3c 57 72 69 74 65 2f  |>.. .  4.<Write/|
0001cbc0  66 6f 72 6d 61 74 20 74  72 61 63 6b 3d 3e 46 69  |format track=>Fi|
0001cbd0  6c 65 43 6f 72 65 5f 44  69 73 63 4f 70 34 3e 0a  |leCore_DiscOp4>.|
0001cbe0  09 20 09 20 20 35 09 3c  53 65 65 6b 3d 3e 46 69  |. .  5.<Seek=>Fi|
0001cbf0  6c 65 43 6f 72 65 5f 44  69 73 63 4f 70 35 3e 0a  |leCore_DiscOp5>.|
0001cc00  09 20 09 20 20 36 09 3c  52 65 73 74 6f 72 65 3d  |. .  6.<Restore=|
0001cc10  3e 46 69 6c 65 43 6f 72  65 5f 44 69 73 63 4f 70  |>FileCore_DiscOp|
0001cc20  36 3e 0a 09 20 09 20 20  37 09 3c 53 74 65 70 20  |6>.. .  7.<Step |
0001cc30  69 6e 3d 3e 46 69 6c 65  43 6f 72 65 5f 44 69 73  |in=>FileCore_Dis|
0001cc40  63 4f 70 37 2d 38 3e 0a  09 20 09 20 20 38 09 3c  |cOp7-8>.. .  8.<|
0001cc50  53 74 65 70 20 6f 75 74  3d 3e 46 69 6c 65 43 6f  |Step out=>FileCo|
0001cc60  72 65 5f 44 69 73 63 4f  70 37 2d 38 3e 0a 09 20  |re_DiscOp7-8>.. |
0001cc70  09 20 20 39 09 3c 52 65  61 64 20 73 65 63 74 6f  |.  9.<Read secto|
0001cc80  72 73 20 76 69 61 20 63  61 63 68 65 3d 3e 46 69  |rs via cache=>Fi|
0001cc90  6c 65 43 6f 72 65 5f 44  69 73 63 4f 70 39 3e 0a  |leCore_DiscOp9>.|
0001cca0  09 20 09 20 20 31 35 09  3c 53 70 65 63 69 66 79  |. .  15.<Specify|
0001ccb0  20 3f 3d 3e 46 69 6c 65  43 6f 72 65 5f 44 69 73  | ?=>FileCore_Dis|
0001ccc0  63 4f 70 31 35 3e 0a 0a  3c 3d 09 52 30 20 3d 09  |cOp15>..<=.R0 =.|
0001ccd0  30 20 69 66 20 6e 6f 20  65 72 72 6f 72 2c 20 3c  |0 if no error, <|
0001cce0  65 72 72 6f 72 20 6e 75  6d 62 65 72 3d 3e 46 69  |error number=>Fi|
0001ccf0  6c 65 43 6f 72 65 5f 45  72 72 6f 72 73 3e 20 61  |leCore_Errors> a|
0001cd00  6e 64 20 56 53 20 6f 74  68 65 72 77 69 73 65 0a  |nd VS otherwise.|
0001cd10  09 4e 2c 20 5a 20 61 6e  64 20 43 20 70 72 65 73  |.N, Z and C pres|
0001cd20  65 72 76 65 64 0a 0a 54  68 69 73 20 53 57 49 20  |erved..This SWI |
0001cd30  70 65 72 66 6f 72 6d 73  20 76 61 72 69 6f 75 73  |performs various|
0001cd40  20 6c 6f 77 2d 6c 65 76  65 6c 20 61 63 63 65 73  | low-level acces|
0001cd50  73 65 73 20 6f 6e 20 61  20 64 69 73 63 2e 0a 00  |ses on a disc...|
0001cd60  44 41 54 41 3b 04 00 00  46 69 6c 65 43 6f 72 65  |DATA;...FileCore|
0001cd70  5f 44 69 73 63 4f 70 20  66 6c 61 67 73 0a 23 50  |_DiscOp flags.#P|
0001cd80  61 72 65 6e 74 20 46 69  6c 65 43 6f 72 65 5f 44  |arent FileCore_D|
0001cd90  69 73 63 4f 70 0a 42 69  74 09 4d 65 61 6e 69 6e  |iscOp.Bit.Meanin|
0001cda0  67 0a 23 4c 69 6e 65 0a  34 09 47 69 76 65 6e 20  |g.#Line.4.Given |
0001cdb0  61 6c 74 65 72 6e 61 74  69 76 65 20 64 65 66 65  |alternative defe|
0001cdc0  63 74 20 6c 69 73 74 0a  35 09 47 69 76 65 6e 20  |ct list.5.Given |
0001cdd0  3c 73 65 63 74 6f 72 20  6c 69 73 74 3d 3e 2e 73  |<sector list=>.s|
0001cde0  65 63 6c 69 73 74 3e 0a  36 09 49 67 6e 6f 72 65  |eclist>.6.Ignore|
0001cdf0  20 65 73 63 61 70 65 0a  37 09 49 67 6e 6f 72 65  | escape.7.Ignore|
0001ce00  20 74 69 6d 65 6f 75 74  0a 38 2d 33 31 09 50 6f  | timeout.8-31.Po|
0001ce10  69 6e 74 65 72 20 74 6f  20 3c 61 6c 74 65 72 6e  |inter to <altern|
0001ce20  61 74 69 76 65 20 72 65  63 6f 72 64 3d 3e 46 69  |ative record=>Fi|
0001ce30  6c 65 43 6f 72 65 5f 44  69 73 63 3e 20 28 73 68  |leCore_Disc> (sh|
0001ce40  69 66 74 65 64 20 64 6f  77 6e 20 74 77 69 63 65  |ifted down twice|
0001ce50  29 0a 0a 4e 6f 74 65 20  74 68 61 74 20 74 68 65  |)..Note that the|
0001ce60  20 61 6c 74 65 72 6e 61  74 69 76 65 20 72 65 63  | alternative rec|
0001ce70  6f 72 64 20 69 73 20 f7  20 34 20 73 6f 20 74 68  |ord is . 4 so th|
0001ce80  61 74 20 69 74 73 20 4c  53 42 20 69 73 20 61 63  |at its LSB is ac|
0001ce90  74 75 61 6c 6c 79 20 62  69 74 20 36 2c 20 62 75  |tually bit 6, bu|
0001cea0  74 20 62 65 63 61 75 73  65 20 69 74 20 6d 75 73  |t because it mus|
0001ceb0  74 20 62 65 20 77 6f 72  64 20 61 6c 69 67 6e 65  |t be word aligne|
0001cec0  64 20 74 68 65 20 72 65  61 6c 20 4c 53 42 20 69  |d the real LSB i|
0001ced0  73 20 62 69 74 20 38 2e  0a 23 53 75 62 70 61 67  |s bit 8..#Subpag|
0001cee0  65 20 73 65 63 6c 69 73  74 0a 55 73 65 20 73 65  |e seclist.Use se|
0001cef0  63 74 6f 72 20 6c 69 73  74 0a 57 68 65 6e 20 62  |ctor list.When b|
0001cf00  69 74 20 35 20 69 73 20  73 65 74 2c 20 74 68 65  |it 5 is set, the|
0001cf10  20 6d 65 61 6e 69 6e 67  20 6f 66 20 52 33 20 28  | meaning of R3 (|
0001cf20  6d 65 6d 6f 72 79 20 61  64 64 72 65 73 73 29 20  |memory address) |
0001cf30  69 73 20 61 6c 74 65 72  65 64 2e 20 49 74 20 64  |is altered. It d|
0001cf40  6f 65 73 6e 27 74 20 70  6f 69 6e 74 20 74 6f 20  |oesn't point to |
0001cf50  74 68 65 20 61 72 65 61  20 6f 66 20 52 41 4d 20  |the area of RAM |
0001cf60  74 6f 20 6f 72 20 66 72  6f 6d 20 77 68 69 63 68  |to or from which|
0001cf70  20 74 68 65 20 64 69 73  63 20 64 61 74 61 20 69  | the disc data i|
0001cf80  73 20 74 6f 20 62 65 20  74 72 61 6e 73 66 65 72  |s to be transfer|
0001cf90  72 65 64 2e 20 49 6e 73  74 65 61 64 2c 20 69 74  |red. Instead, it|
0001cfa0  20 70 6f 69 6e 74 73 20  74 6f 20 61 20 77 6f 72  | points to a wor|
0001cfb0  64 2d 61 6c 69 67 6e 65  64 20 6c 69 73 74 20 6f  |d-aligned list o|
0001cfc0  66 20 6d 65 6d 6f 72 79  20 61 64 64 72 65 73 73  |f memory address|
0001cfd0  2f 6c 65 6e 67 74 68 20  70 61 69 72 73 2e 20 41  |/length pairs. A|
0001cfe0  6c 6c 20 62 75 74 20 74  68 65 20 6c 61 73 74 20  |ll but the last |
0001cff0  6f 66 20 74 68 65 73 65  20 6c 65 6e 67 74 68 73  |of these lengths|
0001d000  20 6d 75 73 74 20 62 65  20 61 20 6d 75 6c 74 69  | must be a multi|
0001d010  70 6c 65 20 6f 66 20 74  68 65 20 73 65 63 74 6f  |ple of the secto|
0001d020  72 20 73 69 7a 65 2e 20  54 68 65 73 65 20 77 6f  |r size. These wo|
0001d030  72 64 2d 70 61 69 72 73  20 61 72 65 20 75 73 65  |rd-pairs are use|
0001d040  64 20 66 6f 72 20 74 68  65 20 74 72 61 6e 73 66  |d for the transf|
0001d050  65 72 20 75 6e 74 69 6c  20 74 68 65 20 74 6f 74  |er until the tot|
0001d060  61 6c 20 6e 75 6d 62 65  72 20 6f 66 20 62 79 74  |al number of byt|
0001d070  65 73 20 67 69 76 65 6e  20 69 6e 20 52 34 20 68  |es given in R4 h|
0001d080  61 73 20 62 65 65 6e 20  74 72 61 6e 73 66 65 72  |as been transfer|
0001d090  72 65 64 2e 0a 0a 4f 6e  20 65 78 69 74 2c 20 52  |red...On exit, R|
0001d0a0  33 20 70 6f 69 6e 74 73  20 74 6f 20 74 68 65 20  |3 points to the |
0001d0b0  66 69 72 73 74 20 70 61  69 72 20 77 68 69 63 68  |first pair which|
0001d0c0  20 77 61 73 6e 27 74 20  66 75 6c 6c 79 20 75 73  | wasn't fully us|
0001d0d0  65 64 2c 20 61 6e 64 20  74 68 69 73 20 70 61 69  |ed, and this pai|
0001d0e0  72 20 69 73 20 75 70 64  61 74 65 64 20 74 6f 20  |r is updated to |
0001d0f0  72 65 66 6c 65 63 74 20  74 68 65 20 6e 65 77 20  |reflect the new |
0001d100  73 74 61 72 74 20 61 64  64 72 65 73 73 2f 62 79  |start address/by|
0001d110  74 65 73 20 72 65 6d 61  69 6e 69 6e 67 2c 20 73  |tes remaining, s|
0001d120  6f 20 74 68 61 74 20 61  20 73 75 62 73 65 71 75  |o that a subsequ|
0001d130  65 6e 74 20 63 61 6c 6c  20 77 6f 75 6c 64 20 63  |ent call would c|
0001d140  6f 6e 74 69 6e 75 65 20  66 72 6f 6d 20 77 68 65  |ontinue from whe|
0001d150  72 65 20 74 68 69 73 20  63 61 6c 6c 20 68 61 73  |re this call has|
0001d160  20 66 69 6e 69 73 68 65  64 2e 0a 0a 54 68 69 73  | finished...This|
0001d170  20 62 69 74 20 6d 61 79  20 6f 6e 6c 79 20 62 65  | bit may only be|
0001d180  20 73 65 74 20 66 6f 72  20 72 65 61 73 6f 6d 20  | set for reasom |
0001d190  63 6f 64 65 73 20 30 2d  32 2e 0a 00 44 41 54 41  |codes 0-2...DATA|
0001d1a0  41 01 00 00 46 69 6c 65  43 6f 72 65 5f 44 69 73  |A...FileCore_Dis|
0001d1b0  63 4f 70 20 30 0a 23 50  61 72 65 6e 74 20 46 69  |cOp 0.#Parent Fi|
0001d1c0  6c 65 43 6f 72 65 5f 44  69 73 63 4f 70 0a 3d 3e  |leCore_DiscOp.=>|
0001d1d0  09 52 31 20 3d 09 30 20  2b 20 3c 66 6c 61 67 73  |.R1 =.0 + <flags|
0001d1e0  3d 3e 46 69 6c 65 43 6f  72 65 5f 44 69 73 63 4f  |=>FileCore_DiscO|
0001d1f0  70 5f 66 6c 61 67 73 3e  0a 09 52 32 20 3d 09 3c  |p_flags>..R2 =.<|
0001d200  64 69 73 63 20 61 64 64  72 65 73 73 3d 3e 46 69  |disc address=>Fi|
0001d210  6c 65 43 6f 72 65 5f 64  69 73 63 61 64 64 72 65  |leCore_discaddre|
0001d220  73 73 3e 0a 09 52 34 20  3d 09 73 69 7a 65 20 74  |ss>..R4 =.size t|
0001d230  6f 20 76 65 72 69 66 79  0a 0a 3c 3d 09 52 32 20  |o verify..<=.R2 |
0001d240  3d 09 6e 65 78 74 20 64  69 73 63 20 61 64 64 72  |=.next disc addr|
0001d250  65 73 73 0a 09 52 34 20  3d 09 75 6e 76 65 72 69  |ess..R4 =.unveri|
0001d260  66 69 65 64 0a 0a 54 68  69 73 20 63 61 6c 6c 20  |fied..This call |
0001d270  69 73 20 75 73 65 64 20  74 6f 20 76 65 72 69 66  |is used to verif|
0001d280  79 20 73 65 63 74 6f 72  73 2e 0a 4e 6f 74 65 3a  |y sectors..Note:|
0001d290  20 46 6f 72 20 52 49 53  43 20 4f 53 20 33 2e 36  | For RISC OS 3.6|
0001d2a0  2c 20 74 68 65 20 76 61  6c 75 65 20 69 6e 20 52  |, the value in R|
0001d2b0  32 20 77 69 6c 6c 20 62  65 20 72 6f 75 6e 64 65  |2 will be rounde|
0001d2c0  64 20 64 6f 77 6e 20 74  6f 20 62 65 20 73 65 63  |d down to be sec|
0001d2d0  74 6f 72 20 61 6c 69 67  6e 65 64 2e 0a 00 00 00  |tor aligned.....|
0001d2e0  44 41 54 41 71 01 00 00  46 69 6c 65 43 6f 72 65  |DATAq...FileCore|
0001d2f0  5f 44 69 73 63 4f 70 20  31 0a 23 50 61 72 65 6e  |_DiscOp 1.#Paren|
0001d300  74 20 46 69 6c 65 43 6f  72 65 5f 44 69 73 63 4f  |t FileCore_DiscO|
0001d310  70 0a 3d 3e 09 52 31 20  3d 09 31 20 2b 20 3c 66  |p.=>.R1 =.1 + <f|
0001d320  6c 61 67 73 3d 3e 46 69  6c 65 43 6f 72 65 5f 44  |lags=>FileCore_D|
0001d330  69 73 63 4f 70 5f 66 6c  61 67 73 3e 0a 09 52 32  |iscOp_flags>..R2|
0001d340  20 3d 09 3c 64 69 73 63  20 61 64 64 72 65 73 73  | =.<disc address|
0001d350  3d 3e 46 69 6c 65 43 6f  72 65 5f 64 69 73 63 61  |=>FileCore_disca|
0001d360  64 64 72 65 73 73 3e 0a  09 52 33 20 3d 09 70 6f  |ddress>..R3 =.po|
0001d370  69 6e 74 65 72 20 74 6f  20 62 6c 6f 63 6b 20 74  |inter to block t|
0001d380  6f 20 72 65 61 64 20 69  6e 74 6f 0a 09 52 34 20  |o read into..R4 |
0001d390  3d 09 73 69 7a 65 0a 0a  3c 3d 09 52 32 20 3d 09  |=.size..<=.R2 =.|
0001d3a0  6e 65 78 74 20 64 69 73  63 20 61 64 64 72 65 73  |next disc addres|
0001d3b0  73 0a 09 52 33 20 3d 09  6e 65 78 74 20 66 72 65  |s..R3 =.next fre|
0001d3c0  65 20 61 64 64 72 65 73  73 0a 09 52 34 20 3d 09  |e address..R4 =.|
0001d3d0  75 6e 72 65 61 64 0a 0a  54 68 69 73 20 63 61 6c  |unread..This cal|
0001d3e0  6c 20 77 69 6c 6c 20 72  65 61 64 20 73 65 63 74  |l will read sect|
0001d3f0  6f 72 73 20 66 72 6f 6d  20 64 69 73 63 2e 0a 4e  |ors from disc..N|
0001d400  6f 74 65 3a 20 46 6f 72  20 52 49 53 43 20 4f 53  |ote: For RISC OS|
0001d410  20 33 2e 36 2c 20 74 68  65 20 76 61 6c 75 65 20  | 3.6, the value |
0001d420  69 6e 20 52 32 20 77 69  6c 6c 20 62 65 20 72 6f  |in R2 will be ro|
0001d430  75 6e 64 65 64 20 64 6f  77 6e 20 74 6f 20 62 65  |unded down to be|
0001d440  20 73 65 63 74 6f 72 20  61 6c 69 67 6e 65 64 2e  | sector aligned.|
0001d450  0a 00 00 00 44 41 54 41  95 00 00 00 46 69 6c 65  |....DATA....File|
0001d460  43 6f 72 65 5f 44 69 73  63 4f 70 20 31 35 0a 23  |Core_DiscOp 15.#|
0001d470  50 61 72 65 6e 74 20 46  69 6c 65 43 6f 72 65 5f  |Parent FileCore_|
0001d480  44 69 73 63 4f 70 0a 53  70 65 63 69 66 79 20 3f  |DiscOp.Specify ?|
0001d490  0a 0a 3d 3e 09 52 31 20  3d 09 31 35 20 2b 20 3c  |..=>.R1 =.15 + <|
0001d4a0  66 6c 61 67 73 3d 3e 46  69 6c 65 43 6f 72 65 5f  |flags=>FileCore_|
0001d4b0  44 69 73 63 4f 70 5f 66  6c 61 67 73 3e 0a 09 52  |DiscOp_flags>..R|
0001d4c0  32 20 3d 09 3c 64 69 73  63 20 61 64 64 72 65 73  |2 =.<disc addres|
0001d4d0  73 3d 3e 46 69 6c 65 43  6f 72 65 5f 64 69 73 63  |s=>FileCore_disc|
0001d4e0  61 64 64 72 65 73 73 3e  0a 00 00 00 44 41 54 41  |address>....DATA|
0001d4f0  37 01 00 00 46 69 6c 65  43 6f 72 65 5f 44 69 73  |7...FileCore_Dis|
0001d500  63 4f 70 20 32 0a 23 50  61 72 65 6e 74 20 46 69  |cOp 2.#Parent Fi|
0001d510  6c 65 43 6f 72 65 5f 44  69 73 63 4f 70 0a 3d 3e  |leCore_DiscOp.=>|
0001d520  09 52 31 20 3d 09 32 20  2b 20 3c 66 6c 61 67 73  |.R1 =.2 + <flags|
0001d530  3d 3e 46 69 6c 65 43 6f  72 65 5f 44 69 73 63 4f  |=>FileCore_DiscO|
0001d540  70 5f 66 6c 61 67 73 3e  0a 09 52 32 20 3d 09 3c  |p_flags>..R2 =.<|
0001d550  64 69 73 63 20 61 64 64  72 65 73 73 3d 3e 46 69  |disc address=>Fi|
0001d560  6c 65 43 6f 72 65 5f 64  69 73 63 61 64 64 72 65  |leCore_discaddre|
0001d570  73 73 3e 0a 09 52 33 20  3d 09 70 6f 69 6e 74 65  |ss>..R3 =.pointe|
0001d580  72 20 74 6f 20 62 6c 6f  63 6b 20 74 6f 20 77 72  |r to block to wr|
0001d590  69 74 65 20 66 72 6f 6d  0a 09 52 34 20 3d 09 73  |ite from..R4 =.s|
0001d5a0  69 7a 65 20 74 6f 20 77  72 69 74 65 0a 09 0a 3c  |ize to write...<|
0001d5b0  3d 09 52 32 20 3d 09 6e  65 78 74 20 64 69 73 63  |=.R2 =.next disc|
0001d5c0  20 61 64 64 72 65 73 73  0a 09 52 33 20 3d 09 6e  | address..R3 =.n|
0001d5d0  65 78 74 20 66 72 65 65  20 61 64 64 72 65 73 73  |ext free address|
0001d5e0  0a 09 52 34 20 3d 09 75  6e 77 72 69 74 74 65 6e  |..R4 =.unwritten|
0001d5f0  20 62 79 74 65 73 0a 0a  54 68 69 73 20 63 61 6c  | bytes..This cal|
0001d600  6c 20 69 73 20 75 73 65  64 20 74 6f 20 77 72 69  |l is used to wri|
0001d610  74 65 20 73 65 63 74 6f  72 73 20 74 6f 20 64 69  |te sectors to di|
0001d620  73 63 2e 00 44 41 54 41  20 05 00 00 46 69 6c 65  |sc..DATA ...File|
0001d630  43 6f 72 65 5f 44 69 73  63 4f 70 20 33 0a 23 50  |Core_DiscOp 3.#P|
0001d640  61 72 65 6e 74 20 46 69  6c 65 43 6f 72 65 5f 44  |arent FileCore_D|
0001d650  69 73 63 4f 70 0a 52 65  61 64 20 74 72 61 63 6b  |iscOp.Read track|
0001d660  20 28 66 72 6f 6d 20 66  6c 6f 70 70 79 29 20 6f  | (from floppy) o|
0001d670  72 20 69 64 20 28 66 72  6f 6d 20 68 61 72 64 20  |r id (from hard |
0001d680  64 69 73 63 29 0a 0a 3d  3e 09 52 31 20 3d 09 33  |disc)..=>.R1 =.3|
0001d690  20 2b 20 3c 66 6c 61 67  73 3d 3e 46 69 6c 65 43  | + <flags=>FileC|
0001d6a0  6f 72 65 5f 44 69 73 63  4f 70 5f 66 6c 61 67 73  |ore_DiscOp_flags|
0001d6b0  3e 0a 09 52 32 20 3d 09  3c 64 69 73 63 20 61 64  |>..R2 =.<disc ad|
0001d6c0  64 72 65 73 73 3d 3e 46  69 6c 65 43 6f 72 65 5f  |dress=>FileCore_|
0001d6d0  64 69 73 63 61 64 64 72  65 73 73 3e 0a 09 52 33  |discaddress>..R3|
0001d6e0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 62 6c  | =.pointer to bl|
0001d6f0  6f 63 6b 20 74 6f 20 72  65 61 64 20 69 6e 74 6f  |ock to read into|
0001d700  0a 0a 49 66 20 74 68 65  20 61 6c 74 65 72 6e 61  |..If the alterna|
0001d710  74 65 20 64 65 66 65 63  74 20 6c 69 73 74 20 6f  |te defect list o|
0001d720  70 74 69 6f 6e 20 62 69  74 20 28 62 69 74 20 34  |ption bit (bit 4|
0001d730  29 20 69 73 20 73 65 74  20 69 6e 20 52 31 20 6f  |) is set in R1 o|
0001d740  6e 20 65 6e 74 72 79 20  77 68 65 6e 20 72 65 61  |n entry when rea|
0001d750  64 69 6e 67 20 61 20 74  72 61 63 6b 2f 49 44 2c  |ding a track/ID,|
0001d760  20 74 68 65 6e 20 61 20  77 68 6f 6c 65 20 74 72  | then a whole tr|
0001d770  61 63 6b 27 73 20 77 6f  72 74 68 20 6f 66 20 49  |ack's worth of I|
0001d780  44 20 66 69 65 6c 64 73  20 69 73 20 72 65 61 64  |D fields is read|
0001d790  2e 20 54 68 69 73 20 75  73 61 67 65 20 69 73 6e  |. This usage isn|
0001d7a0  27 74 20 61 76 61 69 6c  61 62 6c 65 20 75 6e 64  |'t available und|
0001d7b0  65 72 20 52 49 53 43 20  4f 53 20 32 2e 0a 0a 54  |er RISC OS 2...T|
0001d7c0  68 65 20 63 61 6c 6c 20  72 65 61 64 73 20 34 20  |he call reads 4 |
0001d7d0  62 79 74 65 73 20 6f 66  20 73 65 63 74 6f 72 20  |bytes of sector |
0001d7e0  49 44 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 69  |ID information i|
0001d7f0  6e 74 6f 20 74 68 65 20  62 75 66 66 65 72 20 70  |nto the buffer p|
0001d800  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 52 33 20  |ointed to by R3 |
0001d810  66 6f 72 20 65 76 65 72  79 20 73 65 63 74 6f 72  |for every sector|
0001d820  20 6f 6e 20 74 68 65 20  74 72 61 63 6b 2e 20 54  | on the track. T|
0001d830  68 65 20 6f 72 64 65 72  20 6f 66 20 64 61 74 61  |he order of data|
0001d840  20 69 73 3a 0a 0a 23 69  6e 64 65 6e 74 20 32 0a  | is:..#indent 2.|
0001d850  43 79 6c 69 6e 64 65 72  0a 48 65 61 64 0a 53 65  |Cylinder.Head.Se|
0001d860  63 74 6f 72 20 6e 75 6d  62 65 72 0a 53 65 63 74  |ctor number.Sect|
0001d870  6f 72 20 73 69 7a 65 20  28 30 20 3d 20 31 32 38  |or size (0 = 128|
0001d880  3b 31 20 3d 20 32 35 36  2c 20 65 74 63 29 0a 23  |;1 = 256, etc).#|
0001d890  69 6e 64 65 6e 74 0a 0a  54 68 65 20 6f 70 65 72  |indent..The oper|
0001d8a0  61 74 69 6f 6e 20 69 73  20 74 65 72 6d 69 6e 61  |ation is termina|
0001d8b0  74 65 64 20 61 66 74 65  72 20 32 30 30 20 6d 53  |ted after 200 mS|
0001d8c0  20 28 31 20 72 65 76 6f  6c 75 74 69 6f 6e 29 0a  | (1 revolution).|
0001d8d0  0a 54 68 65 20 66 69 72  73 74 20 73 65 63 74 6f  |.The first secto|
0001d8e0  72 20 49 44 20 74 72 61  6e 73 66 65 72 72 65 64  |r ID transferred|
0001d8f0  20 77 69 6c 6c 20 6e 6f  72 6d 61 6c 6c 79 20 62  | will normally b|
0001d900  65 20 74 68 61 74 20 66  6f 6c 6c 6f 77 69 6e 67  |e that following|
0001d910  20 74 68 65 20 69 6e 64  65 78 20 6d 61 72 6b 20  | the index mark |
0001d920  28 69 74 20 6d 61 79 20  62 65 20 74 68 65 20 73  |(it may be the s|
0001d930  65 63 6f 6e 64 20 69 66  20 74 68 65 72 65 20 69  |econd if there i|
0001d940  73 20 61 62 6e 6f 72 6d  61 6c 20 69 6e 74 65 72  |s abnormal inter|
0001d950  75 70 74 20 6c 61 74 65  6e 63 79 20 66 72 6f 6d  |upt latency from|
0001d960  20 74 68 65 20 69 6e 64  65 78 20 70 75 6c 73 65  | the index pulse|
0001d970  20 69 6e 74 65 72 72 75  70 74 29 2e 20 54 68 65  | interrupt). The|
0001d980  20 66 69 72 73 74 20 74  77 6f 20 49 44 27 73 20  | first two ID's |
0001d990  72 65 61 64 20 6d 61 79  20 61 6c 73 6f 20 62 65  |read may also be|
0001d9a0  20 64 75 70 6c 69 63 61  74 65 64 20 61 74 20 74  | duplicated at t|
0001d9b0  68 65 20 62 75 66 66 65  72 20 65 6e 64 20 64 75  |he buffer end du|
0001d9c0  65 20 74 6f 20 69 6e 74  65 72 72 75 70 74 20 6c  |e to interrupt l|
0001d9d0  61 74 65 6e 63 79 2e 20  43 6f 6e 73 65 71 75 65  |atency. Conseque|
0001d9e0  6e 74 6c 79 20 74 68 65  20 62 75 66 66 65 72 20  |ntly the buffer |
0001d9f0  73 68 6f 75 6c 64 20 62  65 20 61 74 20 6c 65 61  |should be at lea|
0001da00  73 74 20 31 36 20 62 79  74 65 73 20 6c 6f 6e 67  |st 16 bytes long|
0001da10  65 72 20 74 68 61 6e 20  74 68 65 20 6d 61 78 69  |er than the maxi|
0001da20  6d 75 6d 20 6e 75 6d 62  65 72 20 6f 66 20 49 44  |mum number of ID|
0001da30  27 73 20 65 78 70 65 63  74 65 64 20 28 35 31 32  |'s expected (512|
0001da40  20 62 79 74 65 73 20 61  74 20 6d 6f 73 74 29 2e  | bytes at most).|
0001da50  0a 0a 54 68 65 20 64 69  73 63 20 72 65 63 6f 72  |..The disc recor|
0001da60  64 20 70 72 6f 76 69 64  65 64 20 69 73 20 75 70  |d provided is up|
0001da70  64 61 74 65 64 20 74 6f  20 72 65 74 75 72 6e 20  |dated to return |
0001da80  74 68 65 20 61 63 74 75  61 6c 20 6e 75 6d 62 65  |the actual numbe|
0001da90  72 20 6f 66 20 73 65 63  74 6f 72 73 20 70 65 72  |r of sectors per|
0001daa0  20 74 72 61 63 6b 20 66  6f 75 6e 64 20 28 61 74  | track found (at|
0001dab0  20 6f 66 66 73 65 74 20  31 29 2e 20 4e 6f 74 65  | offset 1). Note|
0001dac0  20 74 6f 20 75 73 65 20  74 68 69 73 20 6f 70 74  | to use this opt|
0001dad0  69 6f 6e 20 79 6f 75 20  4d 55 53 54 20 70 72 6f  |ion you MUST pro|
0001dae0  76 69 64 65 20 61 20 76  61 6c 69 64 20 64 65 66  |vide a valid def|
0001daf0  65 63 74 20 6c 69 73 74  2c 20 77 68 69 63 68 20  |ect list, which |
0001db00  61 74 20 61 20 6d 69 6e  69 6d 75 6d 20 69 73 20  |at a minimum is |
0001db10  61 20 77 6f 72 64 20 6f  66 20 26 32 30 30 30 30  |a word of &20000|
0001db20  30 30 30 20 66 6f 6c 6c  6f 77 69 6e 67 20 61 66  |000 following af|
0001db30  74 65 72 20 74 68 65 20  64 69 73 63 20 72 65 63  |ter the disc rec|
0001db40  6f 72 64 2e 44 41 54 41  83 02 00 00 46 69 6c 65  |ord.DATA....File|
0001db50  43 6f 72 65 5f 44 69 73  63 4f 70 20 34 0a 23 50  |Core_DiscOp 4.#P|
0001db60  61 72 65 6e 74 20 46 69  6c 65 43 6f 72 65 5f 44  |arent FileCore_D|
0001db70  69 73 63 4f 70 0a 3d 3e  09 52 31 20 3d 09 34 20  |iscOp.=>.R1 =.4 |
0001db80  2b 20 3c 66 6c 61 67 73  3d 3e 46 69 6c 65 43 6f  |+ <flags=>FileCo|
0001db90  72 65 5f 44 69 73 63 4f  70 5f 66 6c 61 67 73 3e  |re_DiscOp_flags>|
0001dba0  0a 09 52 32 20 3d 09 3c  64 69 73 63 20 61 64 64  |..R2 =.<disc add|
0001dbb0  72 65 73 73 3d 3e 46 69  6c 65 43 6f 72 65 5f 64  |ress=>FileCore_d|
0001dbc0  69 73 63 61 64 64 72 65  73 73 3e 0a 09 52 33 20  |iscaddress>..R3 |
0001dbd0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 62 6c 6f  |=.pointer to blo|
0001dbe0  63 6b 20 74 6f 20 77 72  69 74 65 20 6f 72 20 30  |ck to write or 0|
0001dbf0  20 74 6f 20 66 6f 72 6d  61 74 0a 09 52 34 20 3d  | to format..R4 =|
0001dc00  09 3c 66 6f 72 6d 61 74  20 62 6c 6f 63 6b 3d 3e  |.<format block=>|
0001dc10  46 69 6c 65 43 6f 72 65  5f 66 6f 72 6d 61 74 3e  |FileCore_format>|
0001dc20  0a 0a 54 68 69 73 20 63  61 6c 6c 20 69 73 20 75  |..This call is u|
0001dc30  73 65 64 20 74 6f 20 77  72 69 74 65 20 6f 72 20  |sed to write or |
0001dc40  66 6f 72 6d 61 74 20 74  72 61 63 6b 73 2e 0a 0a  |format tracks...|
0001dc50  49 66 20 52 33 3d 30 2c  20 74 68 69 73 20 63 61  |If R3=0, this ca|
0001dc60  6c 6c 20 66 6f 72 6d 61  74 73 20 61 20 74 72 61  |ll formats a tra|
0001dc70  63 6b 20 6f 66 20 74 68  65 20 73 70 65 63 69 66  |ck of the specif|
0001dc80  69 65 64 20 64 69 73 63  2c 20 61 6e 20 65 72 72  |ied disc, an err|
0001dc90  6f 72 20 69 73 20 67 65  6e 65 72 61 74 65 64 2c  |or is generated,|
0001dca0  20 69 66 20 74 68 65 20  73 70 65 63 69 66 69 65  | if the specifie|
0001dcb0  64 20 66 6f 72 6d 61 74  20 69 73 20 6e 6f 74 20  |d format is not |
0001dcc0  70 6f 73 73 69 62 6c 65  20 74 6f 20 67 65 6e 65  |possible to gene|
0001dcd0  72 61 74 65 2c 20 6f 72  20 69 66 20 74 68 65 20  |rate, or if the |
0001dce0  74 72 61 63 6b 20 72 65  71 75 65 73 74 65 64 20  |track requested |
0001dcf0  69 73 20 6f 75 74 73 69  64 65 20 74 68 65 20 76  |is outside the v|
0001dd00  61 6c 69 64 20 72 61 6e  67 65 2e 20 54 68 65 20  |alid range. The |
0001dd10  74 72 61 63 6b 73 20 61  72 65 20 6e 75 6d 62 65  |tracks are numbe|
0001dd20  72 65 64 20 66 72 6f 6d  20 30 20 74 6f 20 28 6e  |red from 0 to (n|
0001dd30  75 6d 62 65 72 20 6f 66  20 74 72 61 63 6b 73 29  |umber of tracks)|
0001dd40  2d 31 2e 20 54 68 65 20  6d 61 70 70 69 6e 67 20  |-1. The mapping |
0001dd50  6f 66 20 74 68 65 20 61  64 64 72 65 73 73 20 69  |of the address i|
0001dd60  73 20 63 6f 6e 74 72 6f  6c 6c 65 64 20 62 79 20  |s controlled by |
0001dd70  74 68 65 20 64 69 73 63  20 73 74 72 75 63 74 75  |the disc structu|
0001dd80  72 65 20 72 65 63 6f 72  64 2e 0a 0a 49 66 20 52  |re record...If R|
0001dd90  33 5c 3c 3e 30 20 74 68  65 6e 20 74 68 65 20 64  |3\<>0 then the d|
0001dda0  61 74 61 20 73 70 65 63  69 66 69 65 64 20 69 73  |ata specified is|
0001ddb0  20 77 72 69 74 74 65 6e  20 74 6f 20 74 68 65 20  | written to the |
0001ddc0  74 72 61 63 6b 2e 0a 00  44 41 54 41 be 00 00 00  |track...DATA....|
0001ddd0  46 69 6c 65 43 6f 72 65  5f 44 69 73 63 4f 70 20  |FileCore_DiscOp |
0001dde0  35 0a 23 50 61 72 65 6e  74 20 46 69 6c 65 43 6f  |5.#Parent FileCo|
0001ddf0  72 65 5f 44 69 73 63 4f  70 0a 53 65 65 6b 20 73  |re_DiscOp.Seek s|
0001de00  65 63 74 6f 72 0a 0a 3d  3e 09 52 31 20 3d 09 35  |ector..=>.R1 =.5|
0001de10  20 2b 20 3c 66 6c 61 67  73 3d 3e 46 69 6c 65 43  | + <flags=>FileC|
0001de20  6f 72 65 5f 44 69 73 63  4f 70 5f 66 6c 61 67 73  |ore_DiscOp_flags|
0001de30  3e 0a 09 52 32 20 3d 09  3c 64 69 73 63 20 61 64  |>..R2 =.<disc ad|
0001de40  64 72 65 73 73 3d 3e 46  69 6c 65 43 6f 72 65 5f  |dress=>FileCore_|
0001de50  64 69 73 63 61 64 64 72  65 73 73 3e 0a 0a 54 68  |discaddress>..Th|
0001de60  69 73 20 63 61 6c 6c 20  69 73 20 6f 6e 6c 79 20  |is call is only |
0001de70  75 73 65 64 20 74 6f 20  70 61 72 6b 20 74 68 65  |used to park the|
0001de80  20 64 69 73 63 2e 00 00  44 41 54 41 95 00 00 00  | disc...DATA....|
0001de90  46 69 6c 65 43 6f 72 65  5f 44 69 73 63 4f 70 20  |FileCore_DiscOp |
0001dea0  36 0a 23 50 61 72 65 6e  74 20 46 69 6c 65 43 6f  |6.#Parent FileCo|
0001deb0  72 65 5f 44 69 73 63 4f  70 0a 52 65 73 74 6f 72  |re_DiscOp.Restor|
0001dec0  65 20 3f 3f 3f 0a 0a 3d  3e 09 52 31 20 3d 09 36  |e ???..=>.R1 =.6|
0001ded0  20 2b 20 3c 66 6c 61 67  73 3d 3e 46 69 6c 65 43  | + <flags=>FileC|
0001dee0  6f 72 65 5f 44 69 73 63  4f 70 5f 66 6c 61 67 73  |ore_DiscOp_flags|
0001def0  3e 0a 09 52 32 20 3d 09  3c 64 69 73 63 20 61 64  |>..R2 =.<disc ad|
0001df00  64 72 65 73 73 3d 3e 46  69 6c 65 43 6f 72 65 5f  |dress=>FileCore_|
0001df10  64 69 73 63 61 64 64 72  65 73 73 3e 0a 00 00 00  |discaddress>....|
0001df20  44 41 54 41 26 01 00 00  46 69 6c 65 43 6f 72 65  |DATA&...FileCore|
0001df30  5f 44 69 73 63 4f 70 20  37 2c 38 0a 23 50 61 72  |_DiscOp 7,8.#Par|
0001df40  65 6e 74 20 46 69 6c 65  43 6f 72 65 5f 44 69 73  |ent FileCore_Dis|
0001df50  63 4f 70 0a 3d 3e 09 52  31 20 3d 09 37 20 6f 72  |cOp.=>.R1 =.7 or|
0001df60  20 38 20 2b 20 3c 66 6c  61 67 73 3d 3e 46 69 6c  | 8 + <flags=>Fil|
0001df70  65 43 6f 72 65 5f 44 69  73 63 4f 70 5f 66 6c 61  |eCore_DiscOp_fla|
0001df80  67 73 3e 0a 0a 54 68 69  73 20 63 61 6c 6c 20 69  |gs>..This call i|
0001df90  73 20 75 73 65 64 20 74  6f 20 73 74 65 70 20 69  |s used to step i|
0001dfa0  6e 20 6f 72 20 6f 75 74  20 62 79 20 61 20 74 72  |n or out by a tr|
0001dfb0  61 63 6b 2e 20 54 68 65  73 65 20 61 72 65 20 6f  |ack. These are o|
0001dfc0  6e 6c 79 20 73 75 70 70  6f 72 74 65 64 20 62 79  |nly supported by|
0001dfd0  20 31 37 37 32 20 64 69  73 63 20 63 6f 6e 74 72  | 1772 disc contr|
0001dfe0  6f 6c 6c 65 72 73 2c 20  65 67 20 74 68 6f 73 65  |ollers, eg those|
0001dff0  20 66 6f 75 6e 64 20 69  6e 20 70 72 65 2d 41 35  | found in pre-A5|
0001e000  30 30 30 20 6d 61 63 68  69 6e 65 73 2c 20 61 6e  |000 machines, an|
0001e010  64 20 73 68 6f 75 6c 64  20 6e 6f 74 20 62 65 20  |d should not be |
0001e020  75 73 65 64 20 73 6f 20  61 73 20 74 6f 20 6d 61  |used so as to ma|
0001e030  69 6e 74 61 69 6e 20 63  6f 6d 70 61 74 69 62 69  |intain compatibi|
0001e040  6c 69 74 79 2e 0a 00 00  44 41 54 41 0b 03 00 00  |lity....DATA....|
0001e050  46 69 6c 65 43 6f 72 65  5f 44 69 73 63 4f 70 20  |FileCore_DiscOp |
0001e060  39 0a 23 50 61 72 65 6e  74 20 46 69 6c 65 43 6f  |9.#Parent FileCo|
0001e070  72 65 5f 44 69 73 63 4f  70 0a 3d 3e 09 52 31 20  |re_DiscOp.=>.R1 |
0001e080  3d 09 39 20 2b 20 3c 66  6c 61 67 73 3d 3e 46 69  |=.9 + <flags=>Fi|
0001e090  6c 65 43 6f 72 65 5f 44  69 73 63 4f 70 5f 66 6c  |leCore_DiscOp_fl|
0001e0a0  61 67 73 3e 0a 09 52 32  20 3d 09 3c 64 69 73 63  |ags>..R2 =.<disc|
0001e0b0  20 61 64 64 72 65 73 73  3d 3e 46 69 6c 65 43 6f  | address=>FileCo|
0001e0c0  72 65 5f 64 69 73 63 61  64 64 72 65 73 73 3e 0a  |re_discaddress>.|
0001e0d0  09 52 33 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R3 =.pointer to|
0001e0e0  20 62 6c 6f 63 6b 20 74  6f 20 72 65 61 64 20 69  | block to read i|
0001e0f0  6e 74 6f 0a 09 52 34 20  3d 09 73 69 7a 65 20 74  |nto..R4 =.size t|
0001e100  6f 20 72 65 61 64 0a 09  52 36 20 3d 09 63 61 63  |o read..R6 =.cac|
0001e110  68 65 20 68 61 6e 64 6c  65 0a 0a 3c 3d 09 52 32  |he handle..<=.R2|
0001e120  20 3d 09 6e 65 78 74 20  64 69 73 63 20 61 64 64  | =.next disc add|
0001e130  72 65 73 73 0a 09 52 33  20 3d 09 6e 65 78 74 20  |ress..R3 =.next |
0001e140  66 72 65 65 20 61 64 64  72 65 73 73 0a 09 52 34  |free address..R4|
0001e150  20 3d 09 75 6e 72 65 61  64 20 62 79 74 65 73 0a  | =.unread bytes.|
0001e160  09 52 36 20 3d 09 63 61  63 68 65 20 68 61 6e 64  |.R6 =.cache hand|
0001e170  6c 65 0a 0a 54 68 69 73  20 72 65 61 73 6f 6e 20  |le..This reason |
0001e180  63 6f 64 65 20 72 65 61  64 73 20 73 65 63 74 6f  |code reads secto|
0001e190  72 73 20 76 69 61 20 61  20 63 61 63 68 65 20 68  |rs via a cache h|
0001e1a0  65 6c 64 20 69 6e 20 52  4d 41 2c 20 61 6e 64 20  |eld in RMA, and |
0001e1b0  69 73 6e 27 74 20 61 76  61 69 6c 61 62 6c 65 20  |isn't available |
0001e1c0  75 6e 64 65 72 20 52 49  53 43 20 4f 53 20 32 2e  |under RISC OS 2.|
0001e1d0  0a 0a 54 6f 20 73 74 61  72 74 20 61 20 73 65 71  |..To start a seq|
0001e1e0  75 65 6e 63 65 20 6f 66  20 74 68 65 73 65 20 6f  |uence of these o|
0001e1f0  70 65 72 61 74 69 6f 6e  73 2c 20 73 65 74 20 52  |perations, set R|
0001e200  36 20 28 63 61 63 68 65  20 68 61 6e 64 6c 65 29  |6 (cache handle)|
0001e210  20 74 6f 20 7a 65 72 6f  20 6f 6e 20 65 6e 74 72  | to zero on entr|
0001e220  79 2e 20 49 74 73 20 76  61 6c 75 65 20 77 69 6c  |y. Its value wil|
0001e230  6c 20 62 65 20 75 70 64  61 74 65 64 20 6f 6e 20  |l be updated on |
0001e240  65 78 69 74 2c 20 61 6e  64 20 73 75 62 73 65 71  |exit, and subseq|
0001e250  75 65 6e 74 20 63 61 6c  6c 73 20 73 68 6f 75 6c  |uent calls shoul|
0001e260  64 20 75 73 65 20 74 68  69 73 20 6e 65 77 20 76  |d use this new v|
0001e270  61 6c 75 65 73 2e 20 42  69 74 73 20 34 2d 37 20  |alues. Bits 4-7 |
0001e280  6f 66 20 52 31 20 73 68  6f 75 6c 64 20 62 65 20  |of R1 should be |
0001e290  7a 65 72 6f 2c 20 62 75  74 20 61 72 65 20 69 67  |zero, but are ig|
0001e2a0  6e 6f 72 65 64 20 69 66  20 73 65 74 2e 0a 0a 54  |nored if set...T|
0001e2b0  6f 20 64 69 73 63 61 72  64 20 74 68 65 20 63 61  |o discard the ca|
0001e2c0  63 68 65 20 6f 6e 63 65  20 66 69 6e 69 73 68 65  |che once finishe|
0001e2d0  64 2c 20 6a 75 73 74 20  63 61 6c 6c 20 3c 46 69  |d, just call <Fi|
0001e2e0  6c 65 43 6f 72 65 5f 44  69 73 63 61 72 64 52 65  |leCore_DiscardRe|
0001e2f0  61 64 53 65 63 74 6f 72  73 43 61 63 68 65 3e 2e  |adSectorsCache>.|
0001e300  0a 4e 6f 74 65 3a 20 46  6f 72 20 52 49 53 43 20  |.Note: For RISC |
0001e310  4f 53 20 33 2e 36 2c 20  74 68 65 20 76 61 6c 75  |OS 3.6, the valu|
0001e320  65 20 69 6e 20 52 32 20  77 69 6c 6c 20 62 65 20  |e in R2 will be |
0001e330  72 6f 75 6e 64 65 64 20  64 6f 77 6e 20 74 6f 20  |rounded down to |
0001e340  62 65 20 73 65 63 74 6f  72 20 61 6c 69 67 6e 65  |be sector aligne|
0001e350  64 2e 0a 00 44 49 52 24  f0 06 00 00 f0 06 00 00  |d...DIR$........|
0001e360  44 ea 01 00 48 fd ff ff  b5 0f 26 0c 82 02 00 00  |D...H.....&.....|
0001e370  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0001e380  c8 ec 01 00 47 ff ff ff  08 37 a9 cd d0 00 00 00  |....G....7......|
0001e390  13 00 00 00 00 00 00 00  43 61 63 68 65 41 64 64  |........CacheAdd|
0001e3a0  72 00 00 00 98 ed 01 00  48 ff ff ff ff 96 c5 26  |r.......H......&|
0001e3b0  43 01 00 00 13 00 00 00  00 00 00 00 43 61 72 65  |C...........Care|
0001e3c0  74 00 00 00 dc ee 01 00  48 ff ff ff ee 99 c5 26  |t.......H......&|
0001e3d0  62 01 00 00 13 00 00 00  00 00 00 00 43 68 61 72  |b...........Char|
0001e3e0  42 42 6f 78 00 00 00 00  40 f0 01 00 47 ff ff ff  |BBox....@...G...|
0001e3f0  94 7b d6 07 b4 00 00 00  13 00 00 00 00 00 00 00  |.{..............|
0001e400  43 6f 6e 76 65 72 74 74  6f 4f 53 00 f4 f0 01 00  |ConverttoOS.....|
0001e410  48 ff ff ff d6 27 26 0c  c6 00 00 00 13 00 00 00  |H....'&.........|
0001e420  00 00 00 00 43 6f 6e 76  65 72 74 74 6f 70 6f 69  |....Converttopoi|
0001e430  6e 74 73 00 bc f1 01 00  47 ff ff ff 41 3e a9 cd  |nts.....G...A>..|
0001e440  e5 00 00 00 13 00 00 00  00 00 00 00 43 75 72 72  |............Curr|
0001e450  65 6e 74 46 6f 6e 74 00  a4 f2 01 00 48 ff ff ff  |entFont.....H...|
0001e460  a7 35 26 0c cd 01 00 00  13 00 00 00 00 00 00 00  |.5&.............|
0001e470  46 69 6e 64 43 61 72 65  74 00 00 00 74 f4 01 00  |FindCaret...t...|
0001e480  48 ff ff ff 25 3d 26 0c  10 02 00 00 13 00 00 00  |H...%=&.........|
0001e490  00 00 00 00 46 69 6e 64  43 61 72 65 74 4a 00 00  |....FindCaretJ..|
0001e4a0  84 f6 01 00 48 ff ff ff  bd 4a 26 0c 16 02 00 00  |....H....J&.....|
0001e4b0  13 00 00 00 00 00 00 00  46 69 6e 64 46 6f 6e 74  |........FindFont|
0001e4c0  00 00 00 00 9c f8 01 00  47 ff ff ff 1d 64 a9 cd  |........G....d..|
0001e4d0  1f 01 00 00 13 00 00 00  00 00 00 00 46 75 74 75  |............Futu|
0001e4e0  72 65 46 6f 6e 74 00 00  bc f9 01 00 48 ff ff ff  |reFont......H...|
0001e4f0  d3 95 26 0c df 04 00 00  13 00 00 00 00 00 00 00  |..&.............|
0001e500  4c 69 73 74 46 6f 6e 74  73 00 00 00 9c fe 01 00  |ListFonts.......|
0001e510  47 ff ff ff 79 f8 b8 cd  95 00 00 00 13 00 00 00  |G...y...........|
0001e520  00 00 00 00 4c 6f 73 65  46 6f 6e 74 00 00 00 00  |....LoseFont....|
0001e530  34 ff 01 00 48 ff ff ff  b3 9d c5 26 4f 04 00 00  |4...H......&O...|
0001e540  13 00 00 00 00 00 00 00  70 61 69 6e 74 00 00 00  |........paint...|
0001e550  84 03 02 00 48 fd ff ff  11 6d d5 10 e9 03 00 00  |....H....m......|
0001e560  13 00 00 00 00 00 00 00  70 61 69 6e 74 31 00 00  |........paint1..|
0001e570  70 07 02 00 45 fd ff ff  8b 21 e4 ff ef 00 00 00  |p...E....!......|
0001e580  13 00 00 00 00 00 00 00  70 61 69 6e 74 32 00 00  |........paint2..|
0001e590  60 08 02 00 47 ff ff ff  3b fe b8 cd 85 00 00 00  |`...G...;.......|
0001e5a0  13 00 00 00 00 00 00 00  52 65 61 64 43 6f 6c 6f  |........ReadColo|
0001e5b0  75 72 54 61 62 6c 65 00  e8 08 02 00 47 ff ff ff  |urTable.....G...|
0001e5c0  40 74 a9 cd 03 01 00 00  13 00 00 00 00 00 00 00  |@t..............|
0001e5d0  52 65 61 64 44 65 66 6e  00 00 00 00 ec 09 02 00  |ReadDefn........|
0001e5e0  47 ff ff ff a4 00 b9 cd  0a 01 00 00 13 00 00 00  |G...............|
0001e5f0  00 00 00 00 52 65 61 64  49 6e 66 6f 00 00 00 00  |....ReadInfo....|
0001e600  f8 0a 02 00 47 ff ff ff  87 61 d6 07 e4 00 00 00  |....G....a......|
0001e610  13 00 00 00 00 00 00 00  52 65 61 64 53 63 61 6c  |........ReadScal|
0001e620  65 46 61 63 74 6f 72 00  dc 0b 02 00 47 ff ff ff  |eFactor.....G...|
0001e630  ea 02 b9 cd 65 00 00 00  13 00 00 00 00 00 00 00  |....e...........|
0001e640  53 65 74 46 6f 6e 74 00  44 0c 02 00 47 ff ff ff  |SetFont.D...G...|
0001e650  87 06 b9 cd f0 00 00 00  13 00 00 00 00 00 00 00  |................|
0001e660  53 65 74 46 6f 6e 74 43  6f 6c 6f 75 72 73 00 00  |SetFontColours..|
0001e670  34 0d 02 00 48 ff ff ff  36 4f 27 0c 6b 02 00 00  |4...H...6O'.k...|
0001e680  13 00 00 00 00 00 00 00  53 65 74 50 61 6c 65 74  |........SetPalet|
0001e690  74 65 00 00 a0 0f 02 00  47 ff ff ff b8 0c b9 cd  |te......G.......|
0001e6a0  e2 00 00 00 13 00 00 00  00 00 00 00 53 65 74 53  |............SetS|
0001e6b0  63 61 6c 65 46 61 63 74  6f 72 00 00 84 10 02 00  |caleFactor......|
0001e6c0  48 ff ff ff 34 5b 27 0c  b0 01 00 00 13 00 00 00  |H...4['.........|
0001e6d0  00 00 00 00 53 74 72 69  6e 67 42 42 6f 78 00 00  |....StringBBox..|
0001e6e0  34 12 02 00 47 ff ff ff  08 9a b6 cd 46 02 00 00  |4...G.......F...|
0001e6f0  13 00 00 00 00 00 00 00  53 74 72 69 6e 67 57 69  |........StringWi|
0001e700  64 74 68 00 7c 14 02 00  48 ff ff ff 60 6d 27 0c  |dth.|...H...`m'.|
0001e710  0b 01 00 00 13 00 00 00  00 00 00 00 55 6e 43 61  |............UnCa|
0001e720  63 68 65 46 69 6c 65 00  88 15 02 00 48 ff ff ff  |cheFile.....H...|
0001e730  b2 11 52 10 73 0a 00 00  13 00 00 00 00 00 00 00  |..R.s...........|
0001e740  53 63 61 6e 53 74 72 69  6e 67 00 00 fc 1f 02 00  |ScanString......|
0001e750  48 fd ff ff 08 78 d5 10  05 03 00 00 13 00 00 00  |H....x..........|
0001e760  00 00 00 00 69 64 65 6e  74 69 66 69 65 72 00 00  |....identifier..|
0001e770  04 23 02 00 48 fd ff ff  f3 3f d5 10 05 01 00 00  |.#..H....?......|
0001e780  13 00 00 00 00 00 00 00  6d 61 74 72 69 78 00 00  |........matrix..|
0001e790  0c 24 02 00 48 ff ff ff  e9 f1 dd 09 53 01 00 00  |.$..H.......S...|
0001e7a0  13 00 00 00 00 00 00 00  52 65 61 64 54 68 72 65  |........ReadThre|
0001e7b0  73 68 6f 6c 64 73 00 00  60 25 02 00 48 ff ff ff  |sholds..`%..H...|
0001e7c0  c2 23 ef 09 f8 00 00 00  13 00 00 00 00 00 00 00  |.#..............|
0001e7d0  53 65 74 54 68 72 65 73  68 6f 6c 64 73 00 00 00  |SetThresholds...|
0001e7e0  58 26 02 00 48 ff ff ff  6b c1 e0 09 92 01 00 00  |X&..H...k.......|
0001e7f0  13 00 00 00 00 00 00 00  52 65 61 64 46 6f 6e 74  |........ReadFont|
0001e800  4d 61 78 00 ec 27 02 00  48 ff ff ff 3b 8d e1 09  |Max..'..H...;...|
0001e810  fe 00 00 00 13 00 00 00  00 00 00 00 52 65 61 64  |............Read|
0001e820  46 6f 6e 74 50 72 65 66  69 78 00 00 ec 28 02 00  |FontPrefix...(..|
0001e830  48 ff ff ff 79 a1 c5 26  06 0a 00 00 13 00 00 00  |H...y..&........|
0001e840  00 00 00 00 72 65 61 64  66 6f 6e 74 6d 65 74 72  |....readfontmetr|
0001e850  69 63 73 00 f4 32 02 00  48 ff ff ff 2a 4c ef 09  |ics..2..H...*L..|
0001e860  9f 00 00 00 13 00 00 00  00 00 00 00 53 65 74 43  |............SetC|
0001e870  6f 6c 6f 75 72 54 61 62  6c 65 00 00 94 33 02 00  |olourTable...3..|
0001e880  48 ff ff ff d3 72 f0 09  5d 02 00 00 13 00 00 00  |H....r..].......|
0001e890  00 00 00 00 52 65 61 64  45 6e 63 6f 64 69 6e 67  |....ReadEncoding|
0001e8a0  46 69 6c 65 6e 61 6d 65  00 00 00 00 f4 35 02 00  |Filename.....5..|
0001e8b0  48 ff ff ff 49 9d 27 0c  80 02 00 00 13 00 00 00  |H...I.'.........|
0001e8c0  00 00 00 00 41 70 70 6c  79 46 69 65 6c 64 73 00  |....ApplyFields.|
0001e8d0  74 38 02 00 48 ff ff ff  f3 cf ef 09 79 01 00 00  |t8..H.......y...|
0001e8e0  13 00 00 00 00 00 00 00  43 75 72 72 65 6e 74 52  |........CurrentR|
0001e8f0  47 42 00 00 f0 39 02 00  48 ff ff ff a0 18 f5 09  |GB...9..H.......|
0001e900  b2 01 00 00 13 00 00 00  00 00 00 00 46 69 6e 64  |............Find|
0001e910  46 69 65 6c 64 00 00 00  a4 3b 02 00 48 ff ff ff  |Field....;..H...|
0001e920  77 ef ef 09 c9 01 00 00  13 00 00 00 00 00 00 00  |w...............|
0001e930  46 75 74 75 72 65 52 47  42 00 00 00 70 3d 02 00  |FutureRGB...p=..|
0001e940  48 ff ff ff bc 7e ef 09  d2 04 00 00 13 00 00 00  |H....~..........|
0001e950  00 00 00 00 44 65 63 6f  64 65 4d 65 6e 75 00 00  |....DecodeMenu..|
0001e960  44 42 02 00 48 ff ff ff  5d 48 e0 09 15 02 00 00  |DB..H...]H......|
0001e970  13 00 00 00 00 00 00 00  4d 61 6b 65 42 69 74 6d  |........MakeBitm|
0001e980  61 70 00 00 5c 44 02 00  48 ff ff ff 74 3b e1 09  |ap..\D..H...t;..|
0001e990  9d 01 00 00 13 00 00 00  00 00 00 00 53 65 74 46  |............SetF|
0001e9a0  6f 6e 74 4d 61 78 00 00  fc 45 02 00 48 fd ff ff  |ontMax...E..H...|
0001e9b0  a6 00 df 09 ce 02 00 00  13 00 00 00 00 00 00 00  |................|
0001e9c0  74 68 72 65 73 68 6f 6c  64 73 00 00 cc 48 02 00  |thresholds...H..|
0001e9d0  48 ff ff ff bd 0a f5 09  f8 01 00 00 13 00 00 00  |H...............|
0001e9e0  00 00 00 00 4c 6f 6f 6b  75 70 46 6f 6e 74 00 00  |....LookupFont..|
0001e9f0  c4 4a 02 00 48 ff ff ff  52 3f 6a 1a 87 03 00 00  |.J..H...R?j.....|
0001ea00  13 00 00 00 00 00 00 00  73 77 69 74 63 68 6f 75  |........switchou|
0001ea10  74 70 75 74 74 6f 62 75  66 66 65 72 00 00 00 00  |tputtobuffer....|
0001ea20  4c 4e 02 00 48 fd ff ff  da 97 b3 26 47 03 00 00  |LN..H......&G...|
0001ea30  13 00 00 00 00 00 00 00  70 61 69 6e 74 66 6c 61  |........paintfla|
0001ea40  67 73 00 00 44 41 54 41  82 02 00 00 46 6f 6e 74  |gs..DATA....Font|
0001ea50  0a 23 50 61 72 65 6e 74  20 21 52 6f 6f 74 0a 23  |.#Parent !Root.#|
0001ea60  50 72 65 66 69 78 20 46  6f 6e 74 5f 0a 23 54 61  |Prefix Font_.#Ta|
0001ea70  62 6c 65 20 43 6f 6c 75  6d 6e 73 20 33 0a 3c 41  |ble Columns 3.<A|
0001ea80  70 70 6c 79 46 69 65 6c  64 73 3e 0a 3c 43 61 63  |pplyFields>.<Cac|
0001ea90  68 65 41 64 64 72 3e 0a  3c 43 61 72 65 74 3e 0a  |heAddr>.<Caret>.|
0001eaa0  3c 43 68 61 72 42 42 6f  78 3e 0a 3c 43 6f 6e 76  |<CharBBox>.<Conv|
0001eab0  65 72 74 74 6f 4f 53 3e  0a 3c 43 6f 6e 76 65 72  |erttoOS>.<Conver|
0001eac0  74 74 6f 70 6f 69 6e 74  73 3e 0a 3c 43 75 72 72  |ttopoints>.<Curr|
0001ead0  65 6e 74 46 6f 6e 74 3e  0a 3c 43 75 72 72 65 6e  |entFont>.<Curren|
0001eae0  74 52 47 42 3e 0a 3c 44  65 63 6f 64 65 4d 65 6e  |tRGB>.<DecodeMen|
0001eaf0  75 3e 0a 3c 46 69 6e 64  43 61 72 65 74 3e 0a 3c  |u>.<FindCaret>.<|
0001eb00  46 69 6e 64 43 61 72 65  74 4a 3e 0a 3c 46 69 6e  |FindCaretJ>.<Fin|
0001eb10  64 46 69 65 6c 64 3e 0a  3c 46 69 6e 64 46 6f 6e  |dField>.<FindFon|
0001eb20  74 3e 0a 3c 46 75 74 75  72 65 46 6f 6e 74 3e 0a  |t>.<FutureFont>.|
0001eb30  3c 46 75 74 75 72 65 52  47 42 3e 0a 3c 4c 69 73  |<FutureRGB>.<Lis|
0001eb40  74 46 6f 6e 74 73 3e 0a  3c 4c 6f 6f 6b 75 70 46  |tFonts>.<LookupF|
0001eb50  6f 6e 74 3e 0a 3c 4c 6f  73 65 46 6f 6e 74 3e 0a  |ont>.<LoseFont>.|
0001eb60  3c 4d 61 6b 65 42 69 74  6d 61 70 3e 0a 3c 50 61  |<MakeBitmap>.<Pa|
0001eb70  69 6e 74 3e 0a 3c 52 65  61 64 43 6f 6c 6f 75 72  |int>.<ReadColour|
0001eb80  54 61 62 6c 65 3e 0a 3c  52 65 61 64 44 65 66 6e  |Table>.<ReadDefn|
0001eb90  3e 0a 3c 52 65 61 64 45  6e 63 6f 64 69 6e 67 46  |>.<ReadEncodingF|
0001eba0  69 6c 65 6e 61 6d 65 3e  0a 3c 52 65 61 64 46 6f  |ilename>.<ReadFo|
0001ebb0  6e 74 4d 61 78 3e 0a 3c  52 65 61 64 46 6f 6e 74  |ntMax>.<ReadFont|
0001ebc0  4d 65 74 72 69 63 73 3e  0a 3c 52 65 61 64 46 6f  |Metrics>.<ReadFo|
0001ebd0  6e 74 50 72 65 66 69 78  3e 0a 3c 52 65 61 64 49  |ntPrefix>.<ReadI|
0001ebe0  6e 66 6f 3e 0a 3c 52 65  61 64 53 63 61 6c 65 46  |nfo>.<ReadScaleF|
0001ebf0  61 63 74 6f 72 3e 0a 3c  52 65 61 64 54 68 72 65  |actor>.<ReadThre|
0001ec00  73 68 6f 6c 64 73 3e 0a  3c 53 63 61 6e 53 74 72  |sholds>.<ScanStr|
0001ec10  69 6e 67 3e 0a 3c 53 65  74 43 6f 6c 6f 75 72 54  |ing>.<SetColourT|
0001ec20  61 62 6c 65 3e 0a 3c 53  65 74 46 6f 6e 74 3e 0a  |able>.<SetFont>.|
0001ec30  3c 53 65 74 46 6f 6e 74  43 6f 6c 6f 75 72 73 3e  |<SetFontColours>|
0001ec40  0a 3c 53 65 74 46 6f 6e  74 4d 61 78 3e 0a 3c 53  |.<SetFontMax>.<S|
0001ec50  65 74 50 61 6c 65 74 74  65 3e 0a 3c 53 65 74 53  |etPalette>.<SetS|
0001ec60  63 61 6c 65 46 61 63 74  6f 72 3e 0a 3c 53 65 74  |caleFactor>.<Set|
0001ec70  54 68 72 65 73 68 6f 6c  64 73 3e 0a 3c 53 74 72  |Thresholds>.<Str|
0001ec80  69 6e 67 42 42 6f 78 3e  0a 3c 53 74 72 69 6e 67  |ingBBox>.<String|
0001ec90  57 69 64 74 68 3e 0a 3c  53 77 69 74 63 68 4f 75  |Width>.<SwitchOu|
0001eca0  74 70 75 74 54 6f 42 75  66 66 65 72 3e 0a 3c 55  |tputToBuffer>.<U|
0001ecb0  6e 43 61 63 68 65 46 69  6c 65 3e 0a 23 45 6e 64  |nCacheFile>.#End|
0001ecc0  54 61 62 6c 65 0a 00 00  44 41 54 41 d0 00 00 00  |Table...DATA....|
0001ecd0  46 6f 6e 74 5f 43 61 63  68 65 41 64 64 72 20 20  |Font_CacheAddr  |
0001ece0  28 26 34 30 30 38 30 29  0a 23 50 61 72 65 6e 74  |(&40080).#Parent|
0001ecf0  20 46 6f 6e 74 5f 0a 3c  3d 09 52 30 20 3d 09 76  | Font_.<=.R0 =.v|
0001ed00  65 72 73 69 6f 6e 20 6e  75 6d 62 65 72 20 2a 20  |ersion number * |
0001ed10  31 30 30 0a 09 52 31 20  3d 09 73 69 7a 65 20 6f  |100..R1 =.size o|
0001ed20  66 20 66 6f 6e 74 20 63  61 63 68 65 0a 09 52 32  |f font cache..R2|
0001ed30  20 3d 09 62 79 74 65 73  20 75 73 65 64 0a 0a 54  | =.bytes used..T|
0001ed40  68 69 73 20 53 57 49 20  72 65 74 75 72 6e 73 20  |his SWI returns |
0001ed50  76 65 72 73 69 6f 6e 20  6e 75 6d 62 65 72 20 6f  |version number o|
0001ed60  66 20 74 68 65 20 66 6f  6e 74 20 6d 6f 64 75 6c  |f the font modul|
0001ed70  65 2c 20 61 6e 64 20 69  6e 66 6f 72 6d 61 74 69  |e, and informati|
0001ed80  6f 6e 20 61 62 6f 75 74  20 74 68 65 20 66 6f 6e  |on about the fon|
0001ed90  74 20 63 61 63 68 65 2e  44 41 54 41 43 01 00 00  |t cache.DATAC...|
0001eda0  46 6f 6e 74 5f 43 61 72  65 74 20 20 28 26 34 30  |Font_Caret  (&40|
0001edb0  30 38 37 29 0a 23 50 61  72 65 6e 74 20 46 6f 6e  |087).#Parent Fon|
0001edc0  74 5f 0a 3d 3e 09 52 30  20 3d 09 63 6f 6c 6f 75  |t_.=>.R0 =.colou|
0001edd0  72 0a 09 52 31 20 3d 09  68 65 69 67 68 74 20 28  |r..R1 =.height (|
0001ede0  4f 53 29 0a 09 52 32 20  3d 09 3c 66 6c 61 67 73  |OS)..R2 =.<flags|
0001edf0  3d 3e 66 6f 6e 74 5f 70  61 69 6e 74 66 6c 61 67  |=>font_paintflag|
0001ee00  73 3e 2c 20 6f 6e 6c 79  20 62 69 74 20 34 20 75  |s>, only bit 4 u|
0001ee10  73 65 64 0a 09 52 33 20  3d 09 78 20 63 6f 6f 72  |sed..R3 =.x coor|
0001ee20  64 0a 09 52 34 20 3d 09  79 20 63 6f 6f 72 64 0a  |d..R4 =.y coord.|
0001ee30  0a 54 68 69 73 20 53 57  49 20 64 72 61 77 73 20  |.This SWI draws |
0001ee40  61 20 63 61 72 65 74 20  61 74 20 74 68 65 20 67  |a caret at the g|
0001ee50  69 76 65 6e 20 70 6f 73  69 74 69 6f 6e 2e 20 54  |iven position. T|
0001ee60  68 65 20 63 6f 6c 6f 75  72 20 69 73 20 45 4f 52  |he colour is EOR|
0001ee70  65 64 20 6f 6e 74 6f 20  74 68 65 20 73 63 72 65  |ed onto the scre|
0001ee80  65 6e 2c 20 73 6f 20 74  6f 20 67 65 74 20 61 20  |en, so to get a |
0001ee90  73 70 65 63 69 66 69 63  20 63 6f 6c 6f 75 72 2c  |specific colour,|
0001eea0  20 79 6f 75 20 68 61 76  65 20 74 6f 20 74 61 6b  | you have to tak|
0001eeb0  65 20 74 68 65 20 62 61  63 6b 67 72 6f 75 6e 64  |e the background|
0001eec0  20 63 6f 6c 6f 75 72 20  69 6e 74 6f 20 63 6f 6e  | colour into con|
0001eed0  73 69 64 65 72 61 74 69  6f 6e 2e 00 44 41 54 41  |sideration..DATA|
0001eee0  62 01 00 00 46 6f 6e 74  5f 43 68 61 72 42 42 6f  |b...Font_CharBBo|
0001eef0  78 20 20 28 26 34 30 30  38 45 29 0a 23 50 61 72  |x  (&4008E).#Par|
0001ef00  65 6e 74 20 46 6f 6e 74  5f 0a 3d 3e 09 52 30 20  |ent Font_.=>.R0 |
0001ef10  3d 09 66 6f 6e 74 20 68  61 6e 64 6c 65 0a 09 52  |=.font handle..R|
0001ef20  31 20 3d 09 63 68 61 72  61 63 74 65 72 0a 09 52  |1 =.character..R|
0001ef30  32 20 3d 09 3c 66 6c 61  67 73 3d 3e 66 6f 6e 74  |2 =.<flags=>font|
0001ef40  5f 70 61 69 6e 74 66 6c  61 67 73 3e 20 28 6f 6e  |_paintflags> (on|
0001ef50  6c 79 20 62 69 74 20 34  20 6d 61 74 74 65 72 73  |ly bit 4 matters|
0001ef60  29 0a 0a 3c 3d 09 52 31  20 3d 09 6d 69 6e 20 78  |)..<=.R1 =.min x|
0001ef70  20 69 6e 63 6c 0a 09 52  32 20 3d 09 6d 69 6e 20  | incl..R2 =.min |
0001ef80  79 20 69 6e 63 6c 0a 09  52 33 20 3d 09 6d 61 78  |y incl..R3 =.max|
0001ef90  20 78 20 65 78 63 6c 0a  09 52 34 20 3d 09 6d 61  | x excl..R4 =.ma|
0001efa0  78 20 79 20 65 78 63 6c  0a 0a 54 68 69 73 20 53  |x y excl..This S|
0001efb0  57 49 20 72 65 74 75 72  6e 73 20 74 68 65 20 62  |WI returns the b|
0001efc0  6f 75 6e 64 69 6e 67 20  62 6f 78 20 66 6f 72 20  |ounding box for |
0001efd0  74 68 65 20 67 69 76 65  6e 20 63 68 61 72 61 63  |the given charac|
0001efe0  74 65 72 20 6f 66 20 74  68 65 20 67 69 76 65 6e  |ter of the given|
0001eff0  20 66 6f 6e 74 2e 20 54  68 65 20 62 6f 75 6e 64  | font. The bound|
0001f000  69 6e 67 20 62 6f 78 20  69 73 20 74 68 65 20 73  |ing box is the s|
0001f010  6d 61 6c 6c 65 73 74 20  62 6f 78 20 6e 65 63 63  |mallest box necc|
0001f020  65 73 73 61 72 79 20 74  6f 20 63 6f 76 65 72 20  |essary to cover |
0001f030  74 68 65 20 63 68 61 72  61 63 74 65 72 2e 00 00  |the character...|
0001f040  44 41 54 41 b4 00 00 00  46 6f 6e 74 5f 43 6f 6e  |DATA....Font_Con|
0001f050  76 65 72 74 74 6f 4f 53  20 20 28 26 34 30 30 38  |verttoOS  (&4008|
0001f060  38 29 0a 23 50 61 72 65  6e 74 20 46 6f 6e 74 5f  |8).#Parent Font_|
0001f070  0a 3d 3e 09 52 31 20 3d  09 78 20 6d 69 6c 6c 69  |.=>.R1 =.x milli|
0001f080  70 6f 69 6e 74 73 0a 09  52 32 20 3d 09 79 20 6d  |points..R2 =.y m|
0001f090  69 6c 6c 69 70 6f 69 6e  74 73 0a 0a 3c 3d 09 52  |illipoints..<=.R|
0001f0a0  31 20 3d 09 78 20 4f 53  0a 09 52 32 20 3d 09 79  |1 =.x OS..R2 =.y|
0001f0b0  20 4f 53 0a 0a 54 68 69  73 20 53 57 49 20 63 6f  | OS..This SWI co|
0001f0c0  6e 76 65 72 74 73 20 74  68 65 20 63 6f 6f 72 64  |nverts the coord|
0001f0d0  69 6e 61 74 65 73 20 66  72 6f 6d 20 6d 69 6c 6c  |inates from mill|
0001f0e0  69 70 6f 69 6e 74 73 20  74 6f 20 4f 53 20 75 6e  |ipoints to OS un|
0001f0f0  69 74 73 2e 44 41 54 41  c6 00 00 00 46 6f 6e 74  |its.DATA....Font|
0001f100  5f 43 6f 6e 76 65 72 74  74 6f 70 6f 69 6e 74 73  |_Converttopoints|
0001f110  20 20 28 26 34 30 30 38  39 29 0a 23 50 61 72 65  |  (&40089).#Pare|
0001f120  6e 74 20 46 6f 6e 74 5f  0a 3d 3e 09 52 31 20 3d  |nt Font_.=>.R1 =|
0001f130  09 78 20 4f 53 0a 09 52  32 20 3d 09 79 20 4f 53  |.x OS..R2 =.y OS|
0001f140  0a 0a 3c 3d 09 52 30 20  63 6f 72 72 75 70 74 65  |..<=.R0 corrupte|
0001f150  64 0a 09 52 31 20 3d 09  78 20 6d 69 6c 6c 69 70  |d..R1 =.x millip|
0001f160  6f 69 6e 74 73 0a 09 52  32 20 3d 09 79 20 6d 69  |oints..R2 =.y mi|
0001f170  6c 6c 69 70 6f 69 6e 74  73 0a 0a 54 68 69 73 20  |llipoints..This |
0001f180  53 57 49 20 63 6f 6e 76  65 72 74 73 20 74 68 65  |SWI converts the|
0001f190  20 63 6f 6f 72 64 69 6e  61 74 65 73 20 66 72 6f  | coordinates fro|
0001f1a0  6d 20 4f 53 20 75 6e 69  74 73 20 74 6f 20 6d 69  |m OS units to mi|
0001f1b0  6c 6c 69 70 6f 69 6e 74  73 2e 00 00 44 41 54 41  |llipoints...DATA|
0001f1c0  e5 00 00 00 46 6f 6e 74  5f 43 75 72 72 65 6e 74  |....Font_Current|
0001f1d0  46 6f 6e 74 20 20 28 26  34 30 30 38 42 29 0a 23  |Font  (&4008B).#|
0001f1e0  50 61 72 65 6e 74 20 46  6f 6e 74 5f 0a 3c 3d 09  |Parent Font_.<=.|
0001f1f0  52 30 20 3d 09 66 6f 6e  74 20 68 61 6e 64 6c 65  |R0 =.font handle|
0001f200  0a 09 52 31 20 3d 09 62  61 63 6b 67 72 6f 75 6e  |..R1 =.backgroun|
0001f210  64 20 63 6f 6c 6f 75 72  0a 09 52 32 20 3d 09 66  |d colour..R2 =.f|
0001f220  6f 72 65 67 72 6f 75 6e  64 20 63 6f 6c 6f 75 72  |oreground colour|
0001f230  0a 09 52 33 20 3d 09 3c  66 6f 72 65 67 72 6f 75  |..R3 =.<foregrou|
0001f240  6e 64 20 63 6f 6c 6f 75  72 20 6f 66 66 73 65 74  |nd colour offset|
0001f250  3d 3e 66 6f 6e 74 5f 70  61 69 6e 74 32 3e 0a 0a  |=>font_paint2>..|
0001f260  54 68 69 73 20 53 57 49  20 72 65 74 75 72 6e 73  |This SWI returns|
0001f270  20 74 68 65 20 63 75 72  72 65 6e 74 20 63 6f 6c  | the current col|
0001f280  6f 75 72 20 73 65 74 74  69 6e 67 73 20 6f 66 20  |our settings of |
0001f290  74 68 65 20 66 6f 6e 74  20 6d 61 6e 61 67 65 72  |the font manager|
0001f2a0  2e 00 00 00 44 41 54 41  cd 01 00 00 46 6f 6e 74  |....DATA....Font|
0001f2b0  5f 46 69 6e 64 43 61 72  65 74 20 20 28 26 34 30  |_FindCaret  (&40|
0001f2c0  30 38 44 29 0a 23 50 61  72 65 6e 74 20 46 6f 6e  |08D).#Parent Fon|
0001f2d0  74 5f 0a 3d 3e 09 52 31  20 3d 09 70 6f 69 6e 74  |t_.=>.R1 =.point|
0001f2e0  65 72 20 74 6f 20 73 74  72 69 6e 67 0a 09 52 32  |er to string..R2|
0001f2f0  20 3d 09 78 20 6f 66 66  73 65 74 20 69 6e 20 6d  | =.x offset in m|
0001f300  69 6c 6c 69 70 6f 69 6e  74 73 0a 09 52 33 20 3d  |illipoints..R3 =|
0001f310  09 79 20 6f 66 66 73 65  74 20 69 6e 20 6d 69 6c  |.y offset in mil|
0001f320  6c 69 70 6f 69 6e 74 73  0a 0a 3c 3d 09 52 31 20  |lipoints..<=.R1 |
0001f330  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 63 6c 6f  |=.pointer to clo|
0001f340  73 65 73 74 20 63 68 61  72 0a 09 52 32 20 3d 09  |sest char..R2 =.|
0001f350  77 69 64 74 68 20 6f 66  20 73 74 72 69 6e 67 0a  |width of string.|
0001f360  09 52 33 20 3d 09 68 65  69 67 68 74 20 6f 66 20  |.R3 =.height of |
0001f370  73 74 72 69 6e 67 0a 09  52 34 20 3d 09 6c 65 6e  |string..R4 =.len|
0001f380  67 74 68 20 6f 66 20 73  74 72 69 6e 67 0a 09 52  |gth of string..R|
0001f390  35 20 3d 09 69 6e 64 65  78 20 6f 66 20 63 6c 6f  |5 =.index of clo|
0001f3a0  73 65 73 74 20 63 68 61  72 0a 0a 54 68 69 73 20  |sest char..This |
0001f3b0  53 57 49 20 72 65 74 75  72 6e 73 20 69 6e 66 6f  |SWI returns info|
0001f3c0  20 61 62 6f 75 74 20 77  68 69 63 68 20 63 68 61  | about which cha|
0001f3d0  72 20 69 73 20 63 6c 6f  73 65 73 74 20 74 6f 20  |r is closest to |
0001f3e0  74 68 65 20 67 69 76 65  6e 20 6f 66 66 73 65 74  |the given offset|
0001f3f0  2e 20 54 6f 20 66 69 6e  64 20 74 68 69 73 20 69  |. To find this i|
0001f400  6e 20 61 20 6a 75 73 74  69 66 69 65 64 20 73 74  |n a justified st|
0001f410  72 69 6e 67 2c 20 75 73  65 20 3c 46 6f 6e 74 5f  |ring, use <Font_|
0001f420  46 69 6e 64 43 61 72 65  74 4a 3e 2e 0a 0a 49 6e  |FindCaretJ>...In|
0001f430  20 52 49 53 43 20 4f 53  20 33 20 61 6e 64 20 6c  | RISC OS 3 and l|
0001f440  61 74 65 72 20 69 74 20  69 73 20 72 65 63 6f 6d  |ater it is recom|
0001f450  6d 65 6e 64 65 64 20 74  6f 20 75 73 65 20 3c 46  |mended to use <F|
0001f460  6f 6e 74 5f 53 63 61 6e  53 74 72 69 6e 67 3e 2e  |ont_ScanString>.|
0001f470  0a 00 00 00 44 41 54 41  10 02 00 00 46 6f 6e 74  |....DATA....Font|
0001f480  5f 46 69 6e 64 43 61 72  65 74 4a 20 20 28 26 34  |_FindCaretJ  (&4|
0001f490  30 30 39 36 29 0a 23 50  61 72 65 6e 74 20 46 6f  |0096).#Parent Fo|
0001f4a0  6e 74 5f 0a 3d 3e 09 52  31 20 3d 09 70 6f 69 6e  |nt_.=>.R1 =.poin|
0001f4b0  74 65 72 20 74 6f 20 73  74 72 69 6e 67 0a 09 52  |ter to string..R|
0001f4c0  32 20 3d 09 78 20 6f 66  66 73 65 74 20 69 6e 20  |2 =.x offset in |
0001f4d0  6d 69 6c 6c 69 70 6f 69  6e 74 73 0a 09 52 33 20  |millipoints..R3 |
0001f4e0  3d 09 79 20 6f 66 66 73  65 74 20 69 6e 20 6d 69  |=.y offset in mi|
0001f4f0  6c 6c 69 70 6f 69 6e 74  73 0a 09 52 34 20 3d 09  |llipoints..R4 =.|
0001f500  78 20 6a 75 73 74 69 66  69 63 61 74 69 6f 6e 20  |x justification |
0001f510  6f 66 66 73 65 74 0a 09  52 35 20 3d 09 79 20 6a  |offset..R5 =.y j|
0001f520  75 73 74 69 66 69 63 61  74 69 6f 6e 20 6f 66 66  |ustification off|
0001f530  73 65 74 0a 0a 3c 3d 09  52 31 20 3d 09 70 6f 69  |set..<=.R1 =.poi|
0001f540  6e 74 65 72 20 74 6f 20  63 6c 6f 73 65 73 74 20  |nter to closest |
0001f550  63 68 61 72 0a 09 52 32  20 3d 09 77 69 64 74 68  |char..R2 =.width|
0001f560  20 6f 66 20 73 74 72 69  6e 67 0a 09 52 33 20 3d  | of string..R3 =|
0001f570  09 68 65 69 67 68 74 20  6f 66 20 73 74 72 69 6e  |.height of strin|
0001f580  67 0a 09 52 34 20 3d 09  6c 65 6e 67 74 68 20 6f  |g..R4 =.length o|
0001f590  66 20 73 74 72 69 6e 67  0a 09 52 35 20 3d 09 69  |f string..R5 =.i|
0001f5a0  6e 64 65 78 20 6f 66 20  63 6c 6f 73 65 73 74 20  |ndex of closest |
0001f5b0  63 68 61 72 0a 0a 54 68  69 73 20 53 57 49 20 72  |char..This SWI r|
0001f5c0  65 74 75 72 6e 73 20 69  6e 66 6f 20 61 62 6f 75  |eturns info abou|
0001f5d0  74 20 77 68 69 63 68 20  63 68 61 72 20 69 73 20  |t which char is |
0001f5e0  63 6c 6f 73 65 73 74 20  74 6f 20 74 68 65 20 67  |closest to the g|
0001f5f0  69 76 65 6e 20 6f 66 66  73 65 74 2e 20 54 68 65  |iven offset. The|
0001f600  20 73 75 70 70 6c 69 65  64 20 6a 75 73 74 69 66  | supplied justif|
0001f610  69 63 61 74 69 6f 6e 20  69 73 20 64 69 76 69 64  |ication is divid|
0001f620  65 64 20 6f 6e 20 61 6c  6c 20 73 70 61 63 65 73  |ed on all spaces|
0001f630  20 69 6e 20 74 68 65 20  73 74 72 69 6e 67 2e 0a  | in the string..|
0001f640  0a 49 6e 20 52 49 53 43  20 4f 53 20 33 20 61 6e  |.In RISC OS 3 an|
0001f650  64 20 6c 61 74 65 72 20  69 74 20 69 73 20 72 65  |d later it is re|
0001f660  63 6f 6d 6d 65 6e 64 65  64 20 74 6f 20 75 73 65  |commended to use|
0001f670  20 3c 46 6f 6e 74 5f 53  63 61 6e 53 74 72 69 6e  | <Font_ScanStrin|
0001f680  67 3e 2e 0a 44 41 54 41  16 02 00 00 46 6f 6e 74  |g>..DATA....Font|
0001f690  5f 46 69 6e 64 46 6f 6e  74 20 20 28 26 34 30 30  |_FindFont  (&400|
0001f6a0  38 31 29 0a 23 50 61 72  65 6e 74 20 46 6f 6e 74  |81).#Parent Font|
0001f6b0  5f 0a 3d 3e 09 52 31 20  3d 09 70 6f 69 6e 74 65  |_.=>.R1 =.pointe|
0001f6c0  72 20 74 6f 20 63 74 72  6c 20 74 65 72 6d 69 6e  |r to ctrl termin|
0001f6d0  61 74 65 64 20 66 6f 6e  74 20 6e 61 6d 65 2e 0a  |ated font name..|
0001f6e0  09 52 32 20 3d 09 78 20  70 6f 69 6e 74 73 20 2a  |.R2 =.x points *|
0001f6f0  20 31 36 0a 09 52 33 20  3d 09 79 20 70 6f 69 6e  | 16..R3 =.y poin|
0001f700  74 73 20 2a 20 31 36 0a  09 52 34 20 3d 09 78 20  |ts * 16..R4 =.x |
0001f710  64 70 69 2c 20 6f 72 20  30 20 66 6f 72 20 64 65  |dpi, or 0 for de|
0001f720  66 61 75 6c 74 0a 09 52  35 20 3d 09 79 20 64 70  |fault..R5 =.y dp|
0001f730  69 2c 20 6f 72 20 30 20  66 6f 72 20 64 65 66 61  |i, or 0 for defa|
0001f740  75 6c 74 0a 0a 3c 3d 09  52 30 20 3d 09 66 6f 6e  |ult..<=.R0 =.fon|
0001f750  74 20 68 61 6e 64 6c 65  0a 09 52 34 20 3d 09 78  |t handle..R4 =.x|
0001f760  20 64 70 69 0a 09 52 35  20 3d 09 79 20 64 70 69  | dpi..R5 =.y dpi|
0001f770  0a 0a 54 68 69 73 20 53  57 49 20 72 65 74 75 72  |..This SWI retur|
0001f780  6e 73 20 61 20 68 61 6e  64 6c 65 20 66 6f 72 20  |ns a handle for |
0001f790  74 68 65 20 67 69 76 65  6e 20 66 6f 6e 74 20 6e  |the given font n|
0001f7a0  61 6d 65 2e 20 54 68 65  20 66 6f 6e 74 20 69 73  |ame. The font is|
0001f7b0  20 61 6c 73 6f 20 73 65  74 20 61 73 20 63 75 72  | also set as cur|
0001f7c0  72 65 6e 74 20 66 6f 6e  74 2e 20 57 68 65 6e 20  |rent font. When |
0001f7d0  79 6f 75 20 6e 6f 20 6c  6f 6e 67 65 72 20 6e 65  |you no longer ne|
0001f7e0  65 64 20 74 68 65 20 66  6f 6e 74 2c 20 75 73 65  |ed the font, use|
0001f7f0  20 3c 46 6f 6e 74 5f 4c  6f 73 65 46 6f 6e 74 3e  | <Font_LoseFont>|
0001f800  2e 20 49 66 20 52 31 20  70 6f 69 6e 74 73 20 74  |. If R1 points t|
0001f810  6f 20 61 20 73 74 72 69  6e 67 20 63 6f 6e 74 61  |o a string conta|
0001f820  69 6e 69 6e 67 20 6e 6f  20 27 5c 5c 27 20 63 68  |ining no '\\' ch|
0001f830  61 72 61 63 74 65 72 73  20 69 74 20 69 73 20 61  |aracters it is a|
0001f840  73 73 75 6d 65 64 20 74  6f 20 62 65 20 61 20 66  |ssumed to be a f|
0001f850  6f 6e 74 20 6e 61 6d 65  2e 20 4f 74 68 65 72 77  |ont name. Otherw|
0001f860  69 73 65 20 69 74 20 69  73 20 74 72 65 61 74 65  |ise it is treate|
0001f870  64 20 61 73 20 61 20 3c  66 6f 6e 74 20 69 64 65  |d as a <font ide|
0001f880  6e 74 69 66 69 65 72 3d  3e 46 6f 6e 74 5f 69 64  |ntifier=>Font_id|
0001f890  65 6e 74 69 66 69 65 72  3e 2e 00 00 44 41 54 41  |entifier>...DATA|
0001f8a0  1f 01 00 00 46 6f 6e 74  5f 46 75 74 75 72 65 46  |....Font_FutureF|
0001f8b0  6f 6e 74 20 20 28 26 34  30 30 38 43 29 0a 23 50  |ont  (&4008C).#P|
0001f8c0  61 72 65 6e 74 20 46 6f  6e 74 5f 0a 3c 3d 09 52  |arent Font_.<=.R|
0001f8d0  30 20 3d 09 66 6f 6e 74  20 68 61 6e 64 6c 65 0a  |0 =.font handle.|
0001f8e0  09 52 31 20 3d 09 62 61  63 6b 67 72 6f 75 6e 64  |.R1 =.background|
0001f8f0  20 63 6f 6c 6f 75 72 0a  09 52 32 20 3d 09 66 6f  | colour..R2 =.fo|
0001f900  72 65 67 72 6f 75 6e 64  20 63 6f 6c 6f 75 72 0a  |reground colour.|
0001f910  09 52 33 20 3d 09 3c 66  6f 72 65 67 72 6f 75 6e  |.R3 =.<foregroun|
0001f920  64 20 63 6f 6c 6f 75 72  20 6f 66 66 73 65 74 3d  |d colour offset=|
0001f930  3e 66 6f 6e 74 5f 70 61  69 6e 74 32 3e 0a 0a 54  |>font_paint2>..T|
0001f940  68 69 73 20 53 57 49 20  72 65 74 75 72 6e 73 20  |his SWI returns |
0001f950  77 68 61 74 20 74 68 65  20 73 74 61 74 65 20 61  |what the state a|
0001f960  66 74 65 72 20 74 68 65  20 6e 65 78 74 20 63 61  |fter the next ca|
0001f970  6c 6c 20 74 6f 20 3c 46  6f 6e 74 5f 50 61 69 6e  |ll to <Font_Pain|
0001f980  74 3e 20 77 6f 75 6c 64  20 62 65 2e 20 59 6f 75  |t> would be. You|
0001f990  20 6d 75 73 74 20 66 69  72 73 74 20 68 61 76 65  | must first have|
0001f9a0  20 63 61 6c 6c 65 64 20  3c 46 6f 6e 74 5f 53 74  | called <Font_St|
0001f9b0  72 69 6e 67 57 69 64 74  68 3e 2e 00 44 41 54 41  |ringWidth>..DATA|
0001f9c0  df 04 00 00 46 6f 6e 74  5f 4c 69 73 74 46 6f 6e  |....Font_ListFon|
0001f9d0  74 73 20 20 28 26 34 30  30 39 31 29 0a 23 50 61  |ts  (&40091).#Pa|
0001f9e0  72 65 6e 74 20 46 6f 6e  74 5f 0a 3d 3e 09 52 31  |rent Font_.=>.R1|
0001f9f0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 34 30  | =.pointer to 40|
0001fa00  2d 62 79 74 65 20 62 75  66 66 65 72 0a 09 52 32  |-byte buffer..R2|
0001fa10  20 3d 09 63 6f 75 6e 74  2c 20 6f 72 20 30 20 66  | =.count, or 0 f|
0001fa20  6f 72 20 66 69 72 73 74  20 63 61 6c 6c 0a 09 52  |or first call..R|
0001fa30  33 20 3d 09 70 61 74 68  20 73 74 72 69 6e 67 2c  |3 =.path string,|
0001fa40  20 6f 72 20 2d 31 20 66  6f 72 20 46 6f 6e 74 24  | or -1 for Font$|
0001fa50  50 61 74 68 0a 0a 3c 3d  09 52 32 20 3d 09 63 6f  |Path..<=.R2 =.co|
0001fa60  75 6e 74 2c 20 6f 72 20  2d 31 20 69 66 20 6e 6f  |unt, or -1 if no|
0001fa70  20 6d 6f 72 65 0a 0a 7b  2a 7d 4f 72 7b 2a 7d 20  | more..{*}Or{*} |
0001fa80  3a 0a 3d 3e 09 52 31 20  3d 09 70 6f 69 6e 74 65  |:.=>.R1 =.pointe|
0001fa90  72 20 74 6f 20 62 75 66  66 65 72 20 66 6f 72 20  |r to buffer for |
0001faa0  69 64 65 6e 74 69 66 69  65 72 2c 20 6f 72 20 66  |identifier, or f|
0001fab0  6f 6e 74 20 6d 65 6e 75  0a 09 52 32 20 3d 09 63  |ont menu..R2 =.c|
0001fac0  6f 75 6e 74 65 72 20 61  6e 64 20 3c 66 6c 61 67  |ounter and <flag|
0001fad0  73 3d 3e 2e 66 6c 61 67  73 3e 0a 09 52 33 20 3d  |s=>.flags>..R3 =|
0001fae0  09 73 69 7a 65 20 6f 66  20 62 75 66 66 65 72 20  |.size of buffer |
0001faf0  69 6e 20 52 31 0a 09 52  34 20 3d 09 70 6f 69 6e  |in R1..R4 =.poin|
0001fb00  74 65 72 20 74 6f 20 62  75 66 66 65 72 20 66 6f  |ter to buffer fo|
0001fb10  72 20 66 6f 6e 74 20 6e  61 6d 65 2c 20 6f 72 20  |r font name, or |
0001fb20  69 6e 64 69 72 65 63 74  65 64 20 64 61 74 61 0a  |indirected data.|
0001fb30  09 52 35 20 3d 09 73 69  7a 65 20 6f 66 20 62 75  |.R5 =.size of bu|
0001fb40  66 66 65 72 20 69 6e 20  52 34 0a 09 52 36 20 3d  |ffer in R4..R6 =|
0001fb50  09 70 6f 69 6e 74 65 72  20 74 6f 20 69 64 65 6e  |.pointer to iden|
0001fb60  74 69 66 69 65 72 20 74  6f 20 74 69 63 6b 2c 20  |tifier to tick, |
0001fb70  6f 72 20 30 20 66 6f 72  20 6e 6f 6e 65 2c 20 6f  |or 0 for none, o|
0001fb80  72 20 31 20 66 6f 72 20  27 53 79 73 74 65 6d 20  |r 1 for 'System |
0001fb90  66 6f 6e 74 27 0a 3c 3d  09 52 32 20 3d 09 6e 65  |font'.<=.R2 =.ne|
0001fba0  77 20 63 6f 75 6e 74 65  72 2c 20 6f 72 20 2d 31  |w counter, or -1|
0001fbb0  20 69 66 20 6e 6f 20 6d  6f 72 65 0a 09 52 33 20  | if no more..R3 |
0001fbc0  3d 09 72 65 71 75 69 72  65 64 20 73 69 7a 65 20  |=.required size |
0001fbd0  6f 66 20 62 75 66 66 65  72 20 69 6e 20 52 31 20  |of buffer in R1 |
0001fbe0  69 66 20 52 31 20 3d 20  30 2c 0a 09 20 09 6f 72  |if R1 = 0,.. .or|
0001fbf0  20 30 20 69 66 20 62 75  69 6c 64 69 6e 67 20 61  | 0 if building a|
0001fc00  20 6d 65 6e 75 20 61 6e  64 20 74 68 65 20 6d 65  | menu and the me|
0001fc10  6e 75 20 69 73 20 6e 75  6c 6c 0a 09 20 09 6f 74  |nu is null.. .ot|
0001fc20  68 65 72 77 69 73 65 20  74 68 65 20 6c 65 6e 67  |herwise the leng|
0001fc30  74 68 20 6f 66 20 64 61  74 61 20 70 6c 61 63 65  |th of data place|
0001fc40  64 20 69 6e 20 74 68 65  20 62 75 66 66 65 72 0a  |d in the buffer.|
0001fc50  09 52 35 20 3d 09 72 65  71 75 69 72 65 64 20 73  |.R5 =.required s|
0001fc60  69 7a 65 20 6f 66 20 62  75 66 66 65 72 20 69 6e  |ize of buffer in|
0001fc70  20 52 34 20 69 66 20 52  34 20 3d 20 30 2c 0a 09  | R4 if R4 = 0,..|
0001fc80  20 09 6f 74 68 65 72 77  69 73 65 20 74 68 65 20  | .otherwise the |
0001fc90  6c 65 6e 67 74 68 20 6f  66 20 64 61 74 61 20 70  |length of data p|
0001fca0  6c 61 63 65 64 20 69 6e  20 74 68 65 20 62 75 66  |laced in the buf|
0001fcb0  66 65 72 0a 0a 54 68 69  73 20 53 57 49 20 72 65  |fer..This SWI re|
0001fcc0  74 75 72 6e 73 2c 20 6f  6e 65 20 61 74 20 61 20  |turns, one at a |
0001fcd0  74 69 6d 65 2c 20 74 68  65 20 66 6f 6e 74 73 20  |time, the fonts |
0001fce0  66 6f 75 6e 64 20 77 69  74 68 20 74 68 65 20 67  |found with the g|
0001fcf0  69 76 65 6e 20 70 61 74  68 2c 20 6f 72 20 61 20  |iven path, or a |
0001fd00  66 6f 6e 74 20 6d 65 6e  75 2e 0a 23 53 75 62 70  |font menu..#Subp|
0001fd10  61 67 65 20 66 6c 61 67  73 0a 46 6f 6e 74 5f 4c  |age flags.Font_L|
0001fd20  69 73 74 46 6f 6e 74 73  20 66 6c 61 67 73 0a 62  |istFonts flags.b|
0001fd30  69 74 09 6d 65 61 6e 69  6e 67 20 69 66 20 73 65  |it.meaning if se|
0001fd40  74 0a 23 4c 69 6e 65 0a  30 2d 31 35 09 63 6f 75  |t.#Line.0-15.cou|
0001fd50  6e 74 65 72 2c 20 73 68  6f 75 6c 64 20 62 65 20  |nter, should be |
0001fd60  30 20 6f 6e 20 66 69 72  73 74 20 63 61 6c 6c 0a  |0 on first call.|
0001fd70  31 36 09 72 65 74 75 72  6e 20 66 6f 6e 74 20 69  |16.return font i|
0001fd80  64 65 6e 74 69 66 69 65  72 20 69 6e 20 52 31 0a  |dentifier in R1.|
0001fd90  31 37 09 72 65 74 75 72  6e 20 6c 6f 63 61 6c 20  |17.return local |
0001fda0  6e 61 6d 65 20 69 6e 20  52 34 0a 31 38 09 74 65  |name in R4.18.te|
0001fdb0  72 6d 69 6e 61 74 65 20  77 69 74 68 20 31 33 20  |rminate with 13 |
0001fdc0  72 61 74 68 65 72 20 74  68 61 6e 20 30 0a 31 39  |rather than 0.19|
0001fdd0  09 72 65 74 75 72 6e 20  6d 65 6e 75 20 64 65 66  |.return menu def|
0001fde0  69 6e 69 74 69 6f 6e 20  69 6e 20 52 31 2c 20 61  |inition in R1, a|
0001fdf0  6e 64 20 69 6e 64 69 72  65 63 74 65 64 20 64 61  |nd indirected da|
0001fe00  74 61 20 69 6e 20 52 34  0a 32 30 09 70 6c 61 63  |ta in R4.20.plac|
0001fe10  65 20 27 53 79 73 74 65  6d 20 66 6f 6e 74 27 20  |e 'System font' |
0001fe20  61 74 20 68 65 61 64 20  6f 66 20 6d 65 6e 75 0a  |at head of menu.|
0001fe30  32 31 09 74 69 63 6b 20  66 6f 6e 74 20 69 6e 20  |21.tick font in |
0001fe40  52 36 2c 20 61 6e 64 20  69 74 73 20 70 61 72 65  |R6, and its pare|
0001fe50  6e 74 0a 32 32 09 72 65  74 75 72 6e 20 6c 69 73  |nt.22.return lis|
0001fe60  74 20 6f 66 20 65 6e 63  6f 64 69 6e 67 73 20 72  |t of encodings r|
0001fe70  61 74 68 65 72 20 74 68  61 6e 20 66 6f 6e 74 73  |ather than fonts|
0001fe80  0a 32 33 2d 33 31 09 72  65 73 65 72 76 65 64 2c  |.23-31.reserved,|
0001fe90  20 6d 75 73 74 20 62 65  20 30 0a 00 44 41 54 41  | must be 0..DATA|
0001fea0  95 00 00 00 46 6f 6e 74  5f 4c 6f 73 65 46 6f 6e  |....Font_LoseFon|
0001feb0  74 20 20 28 26 34 30 30  38 32 29 0a 23 50 61 72  |t  (&40082).#Par|
0001fec0  65 6e 74 20 46 6f 6e 74  5f 0a 3d 3e 09 52 30 20  |ent Font_.=>.R0 |
0001fed0  3d 09 66 6f 6e 74 20 68  61 6e 64 6c 65 0a 0a 54  |=.font handle..T|
0001fee0  68 69 73 20 53 57 49 20  74 65 6c 6c 73 20 74 68  |his SWI tells th|
0001fef0  65 20 66 6f 6e 74 20 6d  61 6e 61 67 65 72 20 74  |e font manager t|
0001ff00  68 61 74 20 74 68 65 20  66 6f 6e 74 20 69 73 20  |hat the font is |
0001ff10  6e 6f 20 6c 6f 6e 67 65  72 20 6e 65 65 64 65 64  |no longer needed|
0001ff20  20 62 79 20 79 6f 75 72  20 70 72 6f 67 72 61 6d  | by your program|
0001ff30  2e 00 00 00 44 41 54 41  4f 04 00 00 46 6f 6e 74  |....DATAO...Font|
0001ff40  5f 50 61 69 6e 74 20 20  28 26 34 30 30 38 36 29  |_Paint  (&40086)|
0001ff50  0a 23 50 61 72 65 6e 74  20 46 6f 6e 74 5f 0a 3d  |.#Parent Font_.=|
0001ff60  3e 09 52 30 20 3d 09 46  6f 6e 74 20 68 61 6e 64  |>.R0 =.Font hand|
0001ff70  6c 65 20 28 69 66 20 61  70 70 6c 69 63 61 62 6c  |le (if applicabl|
0001ff80  65 29 0a 09 52 31 20 3d  09 3c 53 74 72 69 6e 67  |e)..R1 =.<String|
0001ff90  3d 3e 66 6f 6e 74 5f 70  61 69 6e 74 31 3e 0a 09  |=>font_paint1>..|
0001ffa0  52 32 20 3d 09 3c 46 6c  61 67 73 3d 3e 66 6f 6e  |R2 =.<Flags=>fon|
0001ffb0  74 5f 70 61 69 6e 74 66  6c 61 67 73 3e 0a 09 52  |t_paintflags>..R|
0001ffc0  33 20 3d 09 78 0a 09 52  34 20 3d 09 79 0a 09 52  |3 =.x..R4 =.y..R|
0001ffd0  35 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |5 =.pointer to <|
0001ffe0  62 6c 6f 63 6b 3d 3e 2e  62 6c 6f 63 6b 3e 20 28  |block=>.block> (|
0001fff0  69 66 20 61 70 70 6c 69  63 61 62 6c 65 29 0a 09  |if applicable)..|
00020000  52 36 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R6 =.pointer to |
00020010  3c 74 72 61 6e 73 66 6f  72 6d 61 74 69 6f 6e 20  |<transformation |
00020020  6d 61 74 72 69 78 3d 3e  46 6f 6e 74 5f 6d 61 74  |matrix=>Font_mat|
00020030  72 69 78 3e 20 28 69 66  20 61 70 70 6c 69 63 61  |rix> (if applica|
00020040  62 6c 65 29 0a 09 52 37  20 3d 09 4c 65 6e 67 74  |ble)..R7 =.Lengt|
00020050  68 20 28 69 66 20 61 70  70 6c 69 63 61 62 6c 65  |h (if applicable|
00020060  29 0a 0a 54 68 69 73 20  53 57 49 20 70 61 69 6e  |)..This SWI pain|
00020070  74 73 20 61 20 73 74 72  69 6e 67 20 74 6f 20 74  |ts a string to t|
00020080  68 65 20 73 63 72 65 65  6e 20 75 73 69 6e 67 20  |he screen using |
00020090  74 68 65 20 63 75 72 72  65 6e 74 6c 79 20 73 65  |the currently se|
000200a0  6c 65 63 74 65 64 20 66  6f 6e 74 2c 20 6f 72 20  |lected font, or |
000200b0  61 20 73 70 65 63 69 66  69 63 20 66 6f 6e 74 20  |a specific font |
000200c0  69 66 20 66 6c 61 67 73  20 69 6e 64 69 63 61 74  |if flags indicat|
000200d0  65 20 73 6f 2e 0a 0a 4e  6f 74 65 3a 20 55 6e 64  |e so...Note: Und|
000200e0  65 72 6c 69 6e 65 20 61  6e 64 20 72 75 62 6f 75  |erline and rubou|
000200f0  74 20 64 6f 20 6e 6f 74  20 77 6f 72 6b 20 75 6e  |t do not work un|
00020100  6c 65 73 73 20 74 72 61  6e 73 66 6f 72 6d 65 64  |less transformed|
00020110  20 78 2d 61 78 69 73 20  69 73 20 70 61 72 61 6c  | x-axis is paral|
00020120  6c 65 6c 20 28 6e 6f 74  20 61 6e 74 69 2d 70 61  |lel (not anti-pa|
00020130  72 61 6c 6c 65 6c 29 20  74 6f 20 6f 75 74 70 75  |rallel) to outpu|
00020140  74 20 78 2d 61 78 69 73  2e 0a 23 20 47 65 72 70  |t x-axis..# Gerp|
00020150  68 3e 20 44 6f 20 79 6f  75 20 6d 65 61 6e 20 70  |h> Do you mean p|
00020160  65 72 70 65 6e 64 69 63  75 6c 61 72 20 77 68 65  |erpendicular whe|
00020170  6e 20 79 6f 75 20 73 61  79 20 61 6e 74 69 2d 70  |n you say anti-p|
00020180  61 72 61 6c 6c 65 6c 20  3f 0a 23 73 75 62 70 61  |arallel ?.#subpa|
00020190  67 65 20 62 6c 6f 63 6b  0a 46 6f 6e 74 5f 50 61  |ge block.Font_Pa|
000201a0  69 6e 74 20 62 6c 6f 63  6b 0a 4f 66 66 73 65 74  |int block.Offset|
000201b0  09 43 6f 6e 74 65 6e 74  73 0a 23 4c 69 6e 65 0a  |.Contents.#Line.|
000201c0  30 09 61 64 64 69 74 69  6f 6e 61 6c 20 78 20 6f  |0.additional x o|
000201d0  66 66 73 65 74 20 66 6f  72 20 73 70 61 63 65 73  |ffset for spaces|
000201e0  0a 34 09 61 64 64 69 74  69 6f 6e 61 6c 20 79 20  |.4.additional y |
000201f0  6f 66 66 73 65 74 20 66  6f 72 20 73 70 61 63 65  |offset for space|
00020200  73 0a 38 09 61 64 64 69  74 69 6f 6e 61 6c 20 78  |s.8.additional x|
00020210  20 6f 66 66 73 65 74 20  66 6f 72 20 65 61 63 68  | offset for each|
00020220  20 6c 65 74 74 65 72 0a  31 32 09 61 64 64 69 74  | letter.12.addit|
00020230  69 6f 6e 61 6c 20 79 20  6f 66 66 73 65 74 20 66  |ional y offset f|
00020240  6f 72 20 65 61 63 68 20  6c 65 74 74 65 72 0a 31  |or each letter.1|
00020250  36 09 78 20 63 6f 6f 72  64 69 6e 61 74 65 20 66  |6.x coordinate f|
00020260  6f 72 20 62 6f 74 74 6f  6d 20 6c 65 66 74 20 6f  |or bottom left o|
00020270  66 20 72 75 62 6f 75 74  20 62 6f 78 20 28 69 6e  |f rubout box (in|
00020280  63 6c 75 73 69 76 65 29  0a 32 30 09 79 20 63 6f  |clusive).20.y co|
00020290  6f 72 64 69 6e 61 74 65  20 66 6f 72 20 62 6f 74  |ordinate for bot|
000202a0  74 6f 6d 20 6c 65 66 74  20 6f 66 20 72 75 62 6f  |tom left of rubo|
000202b0  75 74 20 62 6f 78 20 28  69 6e 63 6c 75 73 69 76  |ut box (inclusiv|
000202c0  65 29 0a 32 34 09 78 20  63 6f 6f 72 64 69 6e 61  |e).24.x coordina|
000202d0  74 65 20 66 6f 72 20 74  6f 70 20 72 69 67 68 74  |te for top right|
000202e0  20 6f 66 20 72 75 62 6f  75 74 20 62 6f 78 20 28  | of rubout box (|
000202f0  65 78 63 6c 75 73 69 76  65 29 0a 32 38 09 79 20  |exclusive).28.y |
00020300  63 6f 6f 72 64 69 6e 61  74 65 20 66 6f 72 20 74  |coordinate for t|
00020310  6f 70 20 72 69 67 68 74  20 6f 66 20 72 75 62 6f  |op right of rubo|
00020320  75 74 20 62 6f 78 20 28  65 78 63 6c 75 73 69 76  |ut box (exclusiv|
00020330  65 29 0a 0a 54 68 65 73  65 20 76 61 6c 75 65 73  |e)..These values|
00020340  20 61 72 65 20 69 6e 20  6d 69 6c 6c 69 70 6f 69  | are in millipoi|
00020350  6e 74 73 20 28 3c 62 69  74 20 34 20 6f 66 20 52  |nts (<bit 4 of R|
00020360  32 3d 3e 66 6f 6e 74 5f  70 61 69 6e 74 66 6c 61  |2=>font_paintfla|
00020370  67 73 3e 20 6d 75 73 74  20 62 65 20 63 6c 65 61  |gs> must be clea|
00020380  72 29 0a 00 44 41 54 41  e9 03 00 00 53 70 65 63  |r)..DATA....Spec|
00020390  69 61 6c 20 63 68 61 72  61 63 74 65 72 73 0a 23  |ial characters.#|
000203a0  50 61 72 65 6e 74 20 46  6f 6e 74 5f 50 61 69 6e  |Parent Font_Pain|
000203b0  74 0a 53 6f 6d 65 20 63  6f 6e 74 72 6f 6c 20 63  |t.Some control c|
000203c0  68 61 72 61 63 74 65 72  73 20 68 61 76 65 20 73  |haracters have s|
000203d0  70 65 63 69 61 6c 20 6d  65 61 6e 69 6e 67 73 20  |pecial meanings |
000203e0  3a 0a 0a 20 39 09 64 78  20 6c 6f 77 2c 6d 69 64  |:.. 9.dx low,mid|
000203f0  64 6c 65 2c 68 69 67 68  09 09 3a 09 4d 6f 76 65  |dle,high..:.Move|
00020400  20 70 72 69 6e 74 20 70  6f 73 69 74 69 6f 6e 20  | print position |
00020410  68 6f 72 69 7a 6f 6e 74  61 6c 6c 79 0a 20 31 31  |horizontally. 11|
00020420  09 64 79 20 6c 6f 77 2c  6d 69 64 64 6c 65 2c 68  |.dy low,middle,h|
00020430  69 67 68 09 09 3a 09 4d  6f 76 65 20 70 72 69 6e  |igh..:.Move prin|
00020440  74 20 70 6f 73 69 74 69  6f 6e 20 76 65 72 74 69  |t position verti|
00020450  63 61 6c 6c 79 0a 20 31  37 09 63 6f 6c 6f 75 72  |cally. 17.colour|
00020460  09 09 09 09 3a 09 53 65  74 20 66 6f 6e 74 20 63  |....:.Set font c|
00020470  6f 6c 6f 75 72 20 28 2b  26 38 30 20 66 6f 72 20  |olour (+&80 for |
00020480  62 61 63 6b 67 72 6f 75  6e 64 29 0a 20 31 38 09  |background). 18.|
00020490  62 61 63 6b 67 72 6f 75  6e 64 2c 20 66 6f 72 65  |background, fore|
000204a0  67 72 6f 75 6e 64 2c 20  6f 66 66 73 65 74 09 3a  |ground, offset.:|
000204b0  09 53 65 65 20 3c 46 6f  6e 74 5f 53 65 74 46 6f  |.See <Font_SetFo|
000204c0  6e 74 43 6f 6c 6f 75 72  73 3e 0a 20 31 39 09 62  |ntColours>. 19.b|
000204d0  61 63 6b 67 72 6f 75 6e  64 2c 20 66 6f 72 65 67  |ackground, foreg|
000204e0  72 6f 75 6e 64 2c 20 6f  66 66 73 65 74 09 3a 09  |round, offset.:.|
000204f0  53 65 65 20 3c 43 6f 6c  6f 75 72 54 72 61 6e 73  |See <ColourTrans|
00020500  5f 53 65 74 46 6f 6e 74  43 6f 6c 6f 75 72 73 3e  |_SetFontColours>|
00020510  0a 20 32 31 09 63 6f 6d  6d 65 6e 74 20 73 74 72  |. 21.comment str|
00020520  69 6e 67 2c 20 63 74 72  6c 20 74 65 72 6d 69 6e  |ing, ctrl termin|
00020530  61 74 65 64 0a 20 32 35  09 75 6e 64 65 72 6c 69  |ated. 25.underli|
00020540  6e 65 20 70 6f 73 2c 20  74 68 69 63 6b 6e 65 73  |ne pos, thicknes|
00020550  73 09 3a 09 54 75 72 6e  20 75 6e 64 65 72 6c 69  |s.:.Turn underli|
00020560  6e 65 20 6f 6e 2f 6f 66  66 0a 20 32 36 09 66 6f  |ne on/off. 26.fo|
00020570  6e 74 20 68 61 6e 64 6c  65 09 09 09 3a 09 53 65  |nt handle...:.Se|
00020580  65 20 3c 46 6f 6e 74 5f  53 65 74 46 6f 6e 74 3e  |e <Font_SetFont>|
00020590  0a 20 32 37 09 41 4c 49  47 4e 3b 20 61 2c 20 62  |. 27.ALIGN; a, b|
000205a0  2c 20 63 2c 20 64 2c 20  65 2c 20 66 09 09 3a 09  |, c, d, e, f..:.|
000205b0  46 75 6c 6c 20 3c 74 72  61 6e 73 66 6f 72 6d 20  |Full <transform |
000205c0  6d 61 74 72 69 78 3d 3e  66 6f 6e 74 5f 6d 61 74  |matrix=>font_mat|
000205d0  72 69 78 3e 0a 20 32 38  09 41 4c 49 47 4e 3b 20  |rix>. 28.ALIGN; |
000205e0  61 2c 20 62 2c 20 63 2c  20 64 09 09 3a 09 3c 54  |a, b, c, d..:.<T|
000205f0  72 61 6e 73 66 6f 72 6d  20 6d 61 74 72 69 78 3d  |ransform matrix=|
00020600  3e 66 6f 6e 74 5f 6d 61  74 72 69 78 3e 20 77 69  |>font_matrix> wi|
00020610  74 68 20 30 20 74 72 61  6e 73 6c 61 74 69 6f 6e  |th 0 translation|
00020620  0a 20 0a 23 74 61 62 20  61 6c 69 67 6e 20 72 69  |. .#tab align ri|
00020630  67 68 74 0a 39 2c 31 31  09 54 68 65 20 33 20 62  |ght.9,11.The 3 b|
00020640  79 74 65 20 70 72 69 6e  74 2d 70 6f 73 69 74 69  |yte print-positi|
00020650  6f 6e 20 69 73 20 67 69  76 65 6e 20 69 6e 20 6d  |on is given in m|
00020660  69 6c 6c 69 70 6f 69 6e  74 73 0a 32 35 09 70 6f  |illipoints.25.po|
00020670  73 20 26 20 74 68 69 63  6b 6e 65 73 73 20 69 73  |s & thickness is|
00020680  20 67 69 76 65 6e 20 69  6e 20 31 2f 32 35 36 74  | given in 1/256t|
00020690  68 20 6f 66 20 63 75 72  72 65 6e 74 20 66 6f 6e  |h of current fon|
000206a0  74 20 73 69 7a 65 20 2d  20 70 6f 73 20 69 73 20  |t size - pos is |
000206b0  73 69 67 6e 20 65 78 74  65 6e 64 65 64 2c 20 74  |sign extended, t|
000206c0  68 69 63 6b 6e 65 73 73  20 69 73 20 75 6e 73 69  |hickness is unsi|
000206d0  67 6e 65 64 2e 20 53 65  74 20 74 68 69 63 6b 6e  |gned. Set thickn|
000206e0  65 73 73 20 74 6f 20 30  20 74 6f 20 74 75 72 6e  |ess to 0 to turn|
000206f0  20 6f 66 66 20 75 6e 64  65 72 6c 69 6e 69 6e 67  | off underlining|
00020700  2e 20 0a 32 37 2c 32 38  09 54 68 65 20 63 6f 64  |. .27,28.The cod|
00020710  65 20 6d 75 73 74 20 62  65 20 66 6f 6c 6c 6f 77  |e must be follow|
00020720  65 64 20 62 79 20 30 2d  33 20 6e 75 6c 6c 20 62  |ed by 0-3 null b|
00020730  79 74 65 73 20 74 6f 20  77 6f 72 64 20 61 6c 69  |ytes to word ali|
00020740  67 6e 20 74 68 65 20 3c  74 72 61 6e 73 66 6f 72  |gn the <transfor|
00020750  6d 61 74 69 6f 6e 20 6d  61 74 72 69 78 3d 3e 46  |mation matrix=>F|
00020760  6f 6e 74 5f 6d 61 74 72  69 78 3e 2e 0a 00 00 00  |ont_matrix>.....|
00020770  44 41 54 41 ef 00 00 00  43 6f 6c 6f 75 72 20 6f  |DATA....Colour o|
00020780  66 66 73 65 74 0a 54 68  69 73 20 69 73 20 74 68  |ffset.This is th|
00020790  65 20 6e 75 6d 62 65 72  20 6f 66 20 63 6f 6c 6f  |e number of colo|
000207a0  75 72 73 20 74 68 61 74  20 69 73 20 75 73 65 64  |urs that is used|
000207b0  20 77 68 65 6e 20 61 6e  74 69 20 61 6c 69 61 73  | when anti alias|
000207c0  69 6e 67 2e 20 54 68 65  20 63 6f 6c 6f 75 72 73  |ing. The colours|
000207d0  20 75 73 65 64 20 77 69  6c 6c 20 62 65 20 66 72  | used will be fr|
000207e0  6f 6d 20 5c 3c 66 6f 72  65 67 72 6f 75 6e 64 3e  |om \<foreground>|
000207f0  20 74 6f 20 5c 3c 66 6f  72 65 67 72 6f 75 6e 64  | to \<foreground|
00020800  3e 20 2b 20 5c 3c 6f 66  66 73 65 74 3e 2e 20 54  |> + \<offset>. T|
00020810  68 65 20 6f 66 66 73 65  74 20 63 61 6e 20 62 65  |he offset can be|
00020820  20 66 72 6f 6d 20 2d 31  34 20 74 6f 20 31 34 2e  | from -14 to 14.|
00020830  20 49 66 20 6f 66 66 73  65 74 20 69 73 20 30 2c  | If offset is 0,|
00020840  20 74 68 65 6e 20 6e 6f  20 61 6e 74 69 2d 61 6c  | then no anti-al|
00020850  69 61 73 69 6e 67 20 69  73 20 64 6f 6e 65 2e 00  |iasing is done..|
00020860  44 41 54 41 85 00 00 00  46 6f 6e 74 5f 52 65 61  |DATA....Font_Rea|
00020870  64 43 6f 6c 6f 75 72 54  61 62 6c 65 20 28 26 34  |dColourTable (&4|
00020880  30 30 39 38 29 0a 23 50  61 72 65 6e 74 20 46 6f  |0098).#Parent Fo|
00020890  6e 74 5f 0a 3d 3e 09 52  31 20 3d 09 31 36 2d 62  |nt_.=>.R1 =.16-b|
000208a0  79 74 65 20 62 75 66 66  65 72 0a 0a 54 68 69 73  |yte buffer..This|
000208b0  20 53 57 49 20 72 65 74  75 72 6e 73 20 74 68 65  | SWI returns the|
000208c0  20 31 36 20 63 6f 6c 6f  75 72 73 20 75 73 65 64  | 16 colours used|
000208d0  20 74 6f 20 64 6f 20 61  6e 74 69 2d 61 6c 69 61  | to do anti-alia|
000208e0  73 69 6e 67 2e 00 00 00  44 41 54 41 03 01 00 00  |sing....DATA....|
000208f0  46 6f 6e 74 5f 52 65 61  64 44 65 66 6e 20 20 28  |Font_ReadDefn  (|
00020900  26 34 30 30 38 33 29 0a  23 50 61 72 65 6e 74 20  |&40083).#Parent |
00020910  46 6f 6e 74 5f 0a 3d 3e  09 52 30 20 3d 09 66 6f  |Font_.=>.R0 =.fo|
00020920  6e 74 20 68 61 6e 64 6c  65 0a 09 52 31 20 3d 09  |nt handle..R1 =.|
00020930  70 6f 69 6e 74 65 72 20  74 6f 20 62 75 66 66 65  |pointer to buffe|
00020940  72 20 66 6f 72 20 66 6f  6e 74 20 6e 61 6d 65 0a  |r for font name.|
00020950  0a 3c 3d 09 52 32 20 3d  09 78 20 70 6f 69 6e 74  |.<=.R2 =.x point|
00020960  73 20 2a 20 31 36 0a 09  52 33 20 3d 09 79 20 70  |s * 16..R3 =.y p|
00020970  6f 69 6e 74 73 20 2a 20  31 36 0a 09 52 34 20 3d  |oints * 16..R4 =|
00020980  09 78 20 64 70 69 0a 09  52 35 20 3d 09 79 20 64  |.x dpi..R5 =.y d|
00020990  70 69 0a 09 52 36 20 3d  09 61 67 65 20 6f 66 20  |pi..R6 =.age of |
000209a0  66 6f 6e 74 0a 09 52 37  20 3d 09 75 73 61 67 65  |font..R7 =.usage|
000209b0  20 63 6f 75 6e 74 0a 0a  54 68 69 73 20 53 57 49  | count..This SWI|
000209c0  20 72 65 74 75 72 6e 73  20 69 6e 66 6f 72 6d 61  | returns informa|
000209d0  74 69 6f 6e 20 61 62 6f  75 74 20 74 68 65 20 67  |tion about the g|
000209e0  69 76 65 6e 20 66 6f 6e  74 2e 0a 00 44 41 54 41  |iven font...DATA|
000209f0  0a 01 00 00 46 6f 6e 74  5f 52 65 61 64 49 6e 66  |....Font_ReadInf|
00020a00  6f 20 20 28 26 34 30 30  38 34 29 0a 23 50 61 72  |o  (&40084).#Par|
00020a10  65 6e 74 20 46 6f 6e 74  5f 0a 3d 3e 09 52 30 20  |ent Font_.=>.R0 |
00020a20  3d 09 66 6f 6e 74 20 68  61 6e 64 6c 65 0a 3c 3d  |=.font handle.<=|
00020a30  09 52 31 20 3d 09 6d 69  6e 20 78 2c 20 69 6e 63  |.R1 =.min x, inc|
00020a40  6c 75 73 69 76 65 0a 09  52 32 20 3d 09 6d 69 6e  |lusive..R2 =.min|
00020a50  20 79 2c 20 69 6e 63 6c  75 73 69 76 65 0a 09 52  | y, inclusive..R|
00020a60  33 20 3d 09 6d 61 78 20  78 2c 20 65 78 63 6c 75  |3 =.max x, exclu|
00020a70  73 69 76 65 0a 09 52 34  20 3d 09 6d 61 78 20 79  |sive..R4 =.max y|
00020a80  2c 20 65 78 63 6c 75 73  69 76 65 0a 0a 54 68 69  |, exclusive..Thi|
00020a90  73 20 53 57 49 20 72 65  74 75 72 6e 73 2c 20 69  |s SWI returns, i|
00020aa0  6e 20 4f 53 20 75 6e 69  74 73 2c 20 74 68 65 20  |n OS units, the |
00020ab0  73 6d 61 6c 6c 65 73 74  20 70 6f 73 73 69 62 6c  |smallest possibl|
00020ac0  65 20 62 6f 78 20 6e 65  65 64 65 64 20 74 6f 20  |e box needed to |
00020ad0  63 6f 76 65 72 20 61 6e  79 20 63 68 61 72 61 63  |cover any charac|
00020ae0  74 65 72 20 69 6e 20 74  68 65 20 67 69 76 65 6e  |ter in the given|
00020af0  20 66 6f 6e 74 2e 00 00  44 41 54 41 e4 00 00 00  | font...DATA....|
00020b00  46 6f 6e 74 5f 52 65 61  64 53 63 61 6c 65 46 61  |Font_ReadScaleFa|
00020b10  63 74 6f 72 20 20 28 26  34 30 30 38 46 29 0a 23  |ctor  (&4008F).#|
00020b20  50 61 72 65 6e 74 20 46  6f 6e 74 5f 0a 3c 3d 09  |Parent Font_.<=.|
00020b30  52 31 20 3d 09 78 20 73  63 61 6c 65 20 66 61 63  |R1 =.x scale fac|
00020b40  74 6f 72 0a 09 52 32 20  3d 09 79 20 73 63 61 6c  |tor..R2 =.y scal|
00020b50  65 20 66 61 63 74 6f 72  0a 0a 54 68 69 73 20 53  |e factor..This S|
00020b60  57 49 20 72 65 74 75 72  6e 73 20 74 68 65 20 76  |WI returns the v|
00020b70  61 6c 75 65 73 20 75 73  65 64 20 77 68 65 6e 20  |alues used when |
00020b80  63 6f 6e 76 65 72 74 69  6e 67 20 62 65 74 77 65  |converting betwe|
00020b90  65 6e 20 4f 53 20 63 6f  6f 72 64 69 6e 61 74 65  |en OS coordinate|
00020ba0  73 20 61 6e 64 0a 6d 69  6c 6c 69 70 6f 69 6e 74  |s and.millipoint|
00020bb0  73 2e 20 54 6f 20 73 65  74 20 76 61 6c 75 65 73  |s. To set values|
00020bc0  2c 20 75 73 65 20 3c 46  6f 6e 74 5f 53 65 74 53  |, use <Font_SetS|
00020bd0  63 61 6c 65 46 61 63 74  6f 72 3e 2e 44 41 54 41  |caleFactor>.DATA|
00020be0  65 00 00 00 46 6f 6e 74  5f 53 65 74 46 6f 6e 74  |e...Font_SetFont|
00020bf0  20 20 28 26 34 30 30 38  41 29 0a 23 50 61 72 65  |  (&4008A).#Pare|
00020c00  6e 74 20 46 6f 6e 74 5f  0a 3d 3e 09 52 30 20 3d  |nt Font_.=>.R0 =|
00020c10  09 6e 65 77 20 66 6f 6e  74 20 68 61 6e 64 6c 65  |.new font handle|
00020c20  0a 0a 54 68 69 73 20 53  57 49 20 73 65 74 73 20  |..This SWI sets |
00020c30  74 68 65 20 63 75 72 72  65 6e 74 20 66 6f 6e 74  |the current font|
00020c40  2e 00 00 00 44 41 54 41  f0 00 00 00 46 6f 6e 74  |....DATA....Font|
00020c50  5f 53 65 74 46 6f 6e 74  43 6f 6c 6f 75 72 73 20  |_SetFontColours |
00020c60  20 28 26 34 30 30 39 32  29 0a 23 50 61 72 65 6e  | (&40092).#Paren|
00020c70  74 20 46 6f 6e 74 5f 0a  3d 3e 09 52 30 20 3d 09  |t Font_.=>.R0 =.|
00020c80  66 6f 6e 74 20 68 61 6e  64 6c 65 20 28 30 20 66  |font handle (0 f|
00020c90  6f 72 20 63 75 72 72 65  6e 74 29 0a 09 52 31 20  |or current)..R1 |
00020ca0  3d 09 62 61 63 6b 67 72  6f 75 6e 64 20 63 6f 6c  |=.background col|
00020cb0  6f 75 72 0a 09 52 32 20  3d 09 66 6f 72 65 67 72  |our..R2 =.foregr|
00020cc0  6f 75 6e 64 20 63 6f 6c  6f 75 72 0a 09 52 33 20  |ound colour..R3 |
00020cd0  3d 09 3c 66 6f 72 65 67  72 6f 75 6e 64 20 63 6f  |=.<foreground co|
00020ce0  6c 6f 75 72 20 6f 66 66  73 65 74 3d 3e 66 6f 6e  |lour offset=>fon|
00020cf0  74 5f 70 61 69 6e 74 32  3e 0a 0a 54 68 69 73 20  |t_paint2>..This |
00020d00  53 57 49 20 73 65 74 73  20 74 68 65 20 66 6f 6e  |SWI sets the fon|
00020d10  74 20 63 6f 6c 6f 75 72  73 20 61 6e 64 2c 20 6f  |t colours and, o|
00020d20  70 74 69 6f 6e 61 6c 6c  79 2c 20 74 68 65 20 66  |ptionally, the f|
00020d30  6f 6e 74 2e 44 41 54 41  6b 02 00 00 46 6f 6e 74  |ont.DATAk...Font|
00020d40  5f 53 65 74 50 61 6c 65  74 74 65 20 20 28 26 34  |_SetPalette  (&4|
00020d50  30 30 39 33 29 0a 23 50  61 72 65 6e 74 20 46 6f  |0093).#Parent Fo|
00020d60  6e 74 5f 0a 3d 3e 09 52  31 20 3d 09 62 61 63 6b  |nt_.=>.R1 =.back|
00020d70  67 72 6f 75 6e 64 20 6c  6f 67 69 63 61 6c 20 63  |ground logical c|
00020d80  6f 6c 6f 75 72 0a 09 52  32 20 3d 09 66 6f 72 65  |olour..R2 =.fore|
00020d90  67 72 6f 75 6e 64 20 6c  6f 67 69 63 61 6c 20 63  |ground logical c|
00020da0  6f 6c 6f 75 72 0a 09 52  33 20 3d 09 66 6f 72 65  |olour..R3 =.fore|
00020db0  67 72 6f 75 6e 64 20 63  6f 6c 6f 75 72 20 6f 66  |ground colour of|
00020dc0  66 73 65 74 0a 09 52 34  20 3d 09 62 61 63 6b 67  |fset..R4 =.backg|
00020dd0  72 6f 75 6e 64 20 70 68  79 73 69 63 61 6c 20 63  |round physical c|
00020de0  6f 6c 6f 75 72 0a 09 52  35 20 3d 09 66 6f 72 65  |olour..R5 =.fore|
00020df0  67 72 6f 75 6e 64 20 70  68 79 73 69 63 61 6c 20  |ground physical |
00020e00  63 6f 6c 6f 75 72 0a 09  52 36 20 3d 09 26 36 35  |colour..R6 =.&65|
00020e10  37 35 37 32 35 34 20 28  27 54 72 75 65 27 29 20  |757254 ('True') |
00020e20  74 6f 20 75 73 65 20 32  34 20 62 69 74 20 63 6f  |to use 24 bit co|
00020e30  6c 6f 75 72 73 20 69 6e  20 52 34 2c 52 35 0a 0a  |lours in R4,R5..|
00020e40  54 68 69 73 20 53 57 49  20 69 73 20 75 73 65 64  |This SWI is used|
00020e50  20 74 6f 20 73 65 74 20  74 68 65 20 61 6e 74 69  | to set the anti|
00020e60  2d 61 6c 69 61 73 20 70  61 6c 65 74 74 65 2e 20  |-alias palette. |
00020e70  59 6f 75 20 73 68 6f 75  6c 64 20 2a 6e 6f 74 2a  |You should *not*|
00020e80  20 75 73 65 20 74 68 69  73 20 69 66 20 79 6f 75  | use this if you|
00020e90  27 72 65 20 72 75 6e 6e  69 6e 67 20 69 6e 20 74  |'re running in t|
00020ea0  68 65 20 64 65 73 6b 74  6f 70 2e 20 49 6e 73 74  |he desktop. Inst|
00020eb0  65 61 64 20 79 6f 75 20  73 68 6f 75 6c 64 20 75  |ead you should u|
00020ec0  73 65 20 3c 57 69 6d 70  5f 53 65 74 46 6f 6e 74  |se <Wimp_SetFont|
00020ed0  43 6f 6c 6f 75 72 73 3d  3e 57 69 6d 70 3a 57 69  |Colours=>Wimp:Wi|
00020ee0  6d 70 5f 53 65 74 46 6f  6e 74 43 6f 6c 6f 75 72  |mp_SetFontColour|
00020ef0  73 3e 20 6f 72 20 3c 43  6f 6c 6f 75 72 54 72 61  |s> or <ColourTra|
00020f00  6e 73 5f 53 65 74 46 6f  6e 74 43 6f 6c 6f 75 72  |ns_SetFontColour|
00020f10  73 3e 2e 0a 0a 4f 6e 20  52 49 53 43 20 4f 53 20  |s>...On RISC OS |
00020f20  33 20 61 6e 64 20 6c 61  74 65 72 2c 20 69 66 20  |3 and later, if |
00020f30  52 36 20 21 3d 20 27 54  72 75 65 27 20 74 68 65  |R6 != 'True' the|
00020f40  6e 20 52 34 2c 52 35 20  68 61 76 65 20 74 68 65  |n R4,R5 have the|
00020f50  69 72 20 74 6f 70 20 6e  69 62 62 6c 65 73 20 63  |ir top nibbles c|
00020f60  6f 70 69 65 64 20 74 6f  20 74 68 65 69 72 20 62  |opied to their b|
00020f70  6f 74 74 6f 6d 20 6e 69  62 62 6c 65 73 2c 20 73  |ottom nibbles, s|
00020f80  6f 20 26 31 32 33 34 35  36 37 38 20 62 65 63 6f  |o &12345678 beco|
00020f90  6d 65 73 20 26 31 31 33  33 35 35 30 30 2e 0a 00  |mes &11335500...|
00020fa0  44 41 54 41 e2 00 00 00  46 6f 6e 74 5f 53 65 74  |DATA....Font_Set|
00020fb0  53 63 61 6c 65 46 61 63  74 6f 72 20 20 28 26 34  |ScaleFactor  (&4|
00020fc0  30 30 39 30 29 0a 23 50  61 72 65 6e 74 20 46 6f  |0090).#Parent Fo|
00020fd0  6e 74 5f 0a 3d 3e 09 52  31 20 3d 09 78 20 73 63  |nt_.=>.R1 =.x sc|
00020fe0  61 6c 65 20 66 61 63 74  6f 72 0a 09 52 32 20 3d  |ale factor..R2 =|
00020ff0  09 79 20 73 63 61 6c 65  20 66 61 63 74 6f 72 0a  |.y scale factor.|
00021000  0a 54 68 69 73 20 53 57  49 20 73 65 74 73 20 74  |.This SWI sets t|
00021010  68 65 20 76 61 6c 75 65  73 20 75 73 65 64 20 77  |he values used w|
00021020  68 65 6e 20 63 6f 6e 76  65 72 74 69 6e 67 20 62  |hen converting b|
00021030  65 74 77 65 65 6e 20 4f  53 20 63 6f 6f 72 64 69  |etween OS coordi|
00021040  6e 61 74 65 73 20 61 6e  64 20 6d 69 6c 6c 69 70  |nates and millip|
00021050  6f 69 6e 74 73 2e 20 54  6f 20 72 65 61 64 20 76  |oints. To read v|
00021060  61 6c 75 65 73 2c 20 75  73 65 20 3c 46 6f 6e 74  |alues, use <Font|
00021070  5f 52 65 61 64 53 63 61  6c 65 46 61 63 74 6f 72  |_ReadScaleFactor|
00021080  3e 2e 00 00 44 41 54 41  b0 01 00 00 46 6f 6e 74  |>...DATA....Font|
00021090  5f 53 74 72 69 6e 67 42  42 6f 78 20 20 28 26 34  |_StringBBox  (&4|
000210a0  30 30 39 37 29 0a 23 50  61 72 65 6e 74 20 46 6f  |0097).#Parent Fo|
000210b0  6e 74 5f 0a 3d 3e 09 52  31 20 3d 09 70 6f 69 6e  |nt_.=>.R1 =.poin|
000210c0  74 65 72 20 74 6f 20 73  74 72 69 6e 67 0a 3c 3d  |ter to string.<=|
000210d0  09 52 31 20 3d 09 6d 69  6e 20 78 2c 20 69 6e 63  |.R1 =.min x, inc|
000210e0  6c 75 73 69 76 65 0a 09  52 32 20 3d 09 6d 69 6e  |lusive..R2 =.min|
000210f0  20 79 2c 20 69 6e 63 6c  75 73 69 76 65 0a 09 52  | y, inclusive..R|
00021100  33 20 3d 09 6d 61 78 20  78 2c 20 65 78 63 6c 75  |3 =.max x, exclu|
00021110  73 69 76 65 0a 09 52 34  20 3d 09 6d 61 78 20 79  |sive..R4 =.max y|
00021120  2c 20 65 78 63 6c 75 73  69 76 65 0a 0a 54 68 69  |, exclusive..Thi|
00021130  73 20 53 57 49 20 72 65  74 75 72 6e 73 20 74 68  |s SWI returns th|
00021140  65 20 73 6d 61 6c 6c 65  73 74 20 70 6f 73 73 69  |e smallest possi|
00021150  62 6c 65 20 62 6f 78 20  74 68 61 74 20 63 6f 76  |ble box that cov|
00021160  65 72 73 20 74 68 65 20  77 68 6f 6c 65 20 73 74  |ers the whole st|
00021170  72 69 6e 67 2e 20 54 68  65 20 62 6f 78 20 69 73  |ring. The box is|
00021180  20 72 65 74 75 72 6e 65  64 20 69 6e 20 6d 69 6c  | returned in mil|
00021190  6c 69 70 6f 69 6e 74 73  2e 20 54 68 69 73 20 63  |lipoints. This c|
000211a0  61 6c 6c 20 63 61 6e 20  6e 6f 74 2c 20 64 75 65  |all can not, due|
000211b0  20 74 6f 20 72 6f 75 6e  64 69 6e 67 20 61 6e 64  | to rounding and|
000211c0  20 61 6e 74 69 2d 61 6c  69 61 73 69 6e 67 2c 20  | anti-aliasing, |
000211d0  62 65 20 75 73 65 64 20  74 6f 20 66 69 6e 64 20  |be used to find |
000211e0  73 69 7a 65 20 6f 6e 20  73 63 72 65 65 6e 2e 0a  |size on screen..|
000211f0  0a 49 6e 20 52 49 53 43  20 4f 53 20 33 20 61 6e  |.In RISC OS 3 an|
00021200  64 20 6c 61 74 65 72 20  69 74 20 69 73 20 72 65  |d later it is re|
00021210  63 6f 6d 6d 65 6e 64 65  64 20 74 6f 20 75 73 65  |commended to use|
00021220  20 3c 46 6f 6e 74 5f 53  63 61 6e 53 74 72 69 6e  | <Font_ScanStrin|
00021230  67 3e 2e 0a 44 41 54 41  46 02 00 00 46 6f 6e 74  |g>..DATAF...Font|
00021240  5f 53 74 72 69 6e 67 57  69 64 74 68 20 20 28 26  |_StringWidth  (&|
00021250  34 30 30 38 35 29 0a 23  50 61 72 65 6e 74 20 46  |40085).#Parent F|
00021260  6f 6e 74 5f 0a 3d 3e 09  52 31 20 3d 09 70 6f 69  |ont_.=>.R1 =.poi|
00021270  6e 74 65 72 20 74 6f 20  3c 73 74 72 69 6e 67 3d  |nter to <string=|
00021280  3e 66 6f 6e 74 5f 70 61  69 6e 74 31 3e 0a 09 52  |>font_paint1>..R|
00021290  32 20 3d 09 6d 61 78 20  77 69 64 74 68 20 69 6e  |2 =.max width in|
000212a0  20 6d 69 6c 6c 69 70 6f  69 6e 74 73 0a 09 52 33  | millipoints..R3|
000212b0  20 3d 09 6d 61 78 20 68  65 69 67 68 74 20 69 6e  | =.max height in|
000212c0  20 6d 69 6c 6c 69 70 6f  69 6e 74 73 0a 09 52 34  | millipoints..R4|
000212d0  20 3d 09 73 70 6c 69 74  20 63 68 61 72 61 63 74  | =.split charact|
000212e0  65 72 20 28 6f 72 20 2d  31 29 0a 09 52 35 20 3d  |er (or -1)..R5 =|
000212f0  09 6d 61 78 20 73 74 72  69 6e 67 20 6c 65 6e 67  |.max string leng|
00021300  74 68 0a 0a 3c 3d 09 52  31 20 3d 09 70 6f 69 6e  |th..<=.R1 =.poin|
00021310  74 65 72 20 74 6f 20 77  68 65 72 65 20 73 63 61  |ter to where sca|
00021320  6e 20 65 6e 64 65 64 2e  0a 09 52 32 20 3d 09 77  |n ended...R2 =.w|
00021330  69 64 74 68 20 6f 66 20  73 63 61 6e 6e 65 64 20  |idth of scanned |
00021340  73 74 72 69 6e 67 2e 0a  09 52 33 20 3d 09 68 65  |string...R3 =.he|
00021350  69 67 68 74 20 6f 66 20  73 63 61 6e 6e 65 64 20  |ight of scanned |
00021360  73 74 72 69 6e 67 2e 0a  09 52 34 20 3d 09 6e 75  |string...R4 =.nu|
00021370  6d 62 65 72 20 6f 66 20  73 70 6c 69 74 20 63 68  |mber of split ch|
00021380  61 72 73 20 66 6f 75 6e  64 0a 09 52 35 20 3d 09  |ars found..R5 =.|
00021390  6c 65 6e 67 74 68 20 6f  66 20 73 63 61 6e 6e 65  |length of scanne|
000213a0  64 20 73 74 72 69 6e 67  2e 0a 0a 54 68 69 73 20  |d string...This |
000213b0  53 57 49 20 63 61 6c 63  75 6c 61 74 65 73 20 68  |SWI calculates h|
000213c0  6f 77 20 77 69 64 65 20  61 20 73 74 72 69 6e 67  |ow wide a string|
000213d0  20 77 6f 75 6c 64 20 62  65 20 75 6e 64 65 72 20  | would be under |
000213e0  74 68 65 20 67 69 76 65  6e 20 6c 69 6d 69 74 73  |the given limits|
000213f0  2e 20 41 66 74 65 72 20  74 68 69 73 20 53 57 49  |. After this SWI|
00021400  2c 20 79 6f 75 20 63 61  6e 20 63 61 6c 6c 20 3c  |, you can call <|
00021410  46 6f 6e 74 5f 46 75 74  75 72 65 46 6f 6e 74 3e  |Font_FutureFont>|
00021420  20 74 6f 20 66 69 6e 64  20 6f 75 74 20 77 68 61  | to find out wha|
00021430  74 20 74 68 65 20 63 75  72 72 65 6e 74 20 66 6f  |t the current fo|
00021440  6e 74 20 77 6f 75 6c 64  20 62 65 20 61 66 74 65  |nt would be afte|
00021450  72 20 61 20 63 61 6c 6c  20 74 6f 20 3c 46 6f 6e  |r a call to <Fon|
00021460  74 5f 50 61 69 6e 74 3e  20 77 69 74 68 20 74 68  |t_Paint> with th|
00021470  69 73 20 73 74 72 69 6e  67 2e 00 00 44 41 54 41  |is string...DATA|
00021480  0b 01 00 00 46 6f 6e 74  5f 55 6e 43 61 63 68 65  |....Font_UnCache|
00021490  46 69 6c 65 20 20 28 26  34 30 30 39 41 29 0a 23  |File  (&4009A).#|
000214a0  50 61 72 65 6e 74 20 46  6f 6e 74 5f 0a 3d 3e 09  |Parent Font_.=>.|
000214b0  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
000214c0  66 75 6c 6c 20 66 69 6c  65 6e 61 6d 65 0a 09 52  |full filename..R|
000214d0  32 20 3d 09 72 65 63 61  63 68 65 20 66 6c 61 67  |2 =.recache flag|
000214e0  0a 0a 54 68 69 73 20 53  57 49 20 65 69 74 68 65  |..This SWI eithe|
000214f0  72 20 63 61 63 68 65 73  20 6f 72 20 75 6e 63 61  |r caches or unca|
00021500  63 68 65 73 20 61 20 66  6f 6e 74 2e 20 54 68 69  |ches a font. Thi|
00021510  73 20 69 73 20 75 73 65  64 20 77 68 65 6e 20 74  |s is used when t|
00021520  68 65 20 66 6f 6e 74 20  66 69 6c 65 20 69 73 20  |he font file is |
00021530  61 6c 74 65 72 65 64 2e  20 59 6f 75 20 73 68 6f  |altered. You sho|
00021540  75 6c 64 20 63 61 6c 6c  20 77 69 74 68 20 52 32  |uld call with R2|
00021550  20 3d 20 30 2c 20 74 68  65 6e 20 72 65 70 6c 61  | = 0, then repla|
00021560  63 65 20 74 68 65 20 6f  6c 64 20 66 69 6c 65 2c  |ce the old file,|
00021570  20 74 68 65 6e 20 63 61  6c 6c 20 77 69 74 68 20  | then call with |
00021580  52 32 20 3d 20 31 2e 00  44 41 54 41 73 0a 00 00  |R2 = 1..DATAs...|
00021590  46 6f 6e 74 5f 53 63 61  6e 53 74 72 69 6e 67 20  |Font_ScanString |
000215a0  20 28 26 34 30 30 41 31  29 0a 23 50 61 72 65 6e  | (&400A1).#Paren|
000215b0  74 20 46 6f 6e 74 5f 0a  3d 3e 09 52 30 20 3d 09  |t Font_.=>.R0 =.|
000215c0  69 6e 69 74 69 61 6c 20  66 6f 6e 74 20 68 61 6e  |initial font han|
000215d0  64 6c 65 2c 20 30 20 66  6f 72 20 63 75 72 72 65  |dle, 0 for curre|
000215e0  6e 74 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |nt..R1 =.pointer|
000215f0  20 74 6f 20 73 74 72 69  6e 67 0a 09 52 32 20 3d  | to string..R2 =|
00021600  09 3c 66 6c 61 67 73 3d  3e 2e 66 6c 61 67 73 3e  |.<flags=>.flags>|
00021610  0a 09 52 33 2c 34 20 3d  09 28 78 2c 79 29 20 6f  |..R3,4 =.(x,y) o|
00021620  66 20 6d 6f 75 73 65 20  63 6c 69 63 6b 2c 20 6f  |f mouse click, o|
00021630  72 20 6d 61 78 20 77 2c  68 20 6f 66 20 73 74 72  |r max w,h of str|
00021640  69 6e 67 0a 09 52 35 20  3d 09 70 6f 69 6e 74 65  |ing..R5 =.pointe|
00021650  72 20 74 6f 20 3c 62 6c  6f 63 6b 20 68 6f 6c 64  |r to <block hold|
00021660  69 6e 67 20 73 70 61 63  69 6e 67 2c 20 73 70 6c  |ing spacing, spl|
00021670  69 74 20 26 20 62 6f 75  6e 64 69 6e 67 20 62 6f  |it & bounding bo|
00021680  78 3d 3e 2e 62 6c 6f 63  6b 3e 0a 09 52 36 20 3d  |x=>.block>..R6 =|
00021690  09 3c 74 72 61 6e 73 66  6f 72 6d 61 74 69 6f 6e  |.<transformation|
000216a0  20 6d 61 74 72 69 78 3d  3e 46 6f 6e 74 5f 6d 61  | matrix=>Font_ma|
000216b0  74 72 69 78 3e 0a 09 52  37 20 3d 09 6c 65 6e 67  |trix>..R7 =.leng|
000216c0  74 68 20 6f 66 20 73 74  72 69 6e 67 0a 0a 3c 3d  |th of string..<=|
000216d0  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
000216e0  20 77 68 65 72 65 20 74  68 65 20 73 63 61 6e 20  | where the scan |
000216f0  65 6e 64 65 64 0a 09 52  33 2c 34 20 3d 09 28 78  |ended..R3,4 =.(x|
00021700  2c 79 29 20 6f 66 20 77  68 65 72 65 20 74 68 65  |,y) of where the|
00021710  20 73 63 61 6e 20 65 6e  64 65 64 0a 09 52 37 20  | scan ended..R7 |
00021720  3d 09 6e 75 6d 62 65 72  20 6f 66 20 73 70 6c 69  |=.number of spli|
00021730  74 20 63 68 61 72 73 20  69 6e 20 73 63 61 6e 6e  |t chars in scann|
00021740  65 64 20 70 61 72 74 20  6f 66 20 73 74 72 69 6e  |ed part of strin|
00021750  67 2e 0a 0a 54 68 69 73  20 53 57 49 20 69 73 20  |g...This SWI is |
00021760  75 73 65 64 20 74 6f 20  66 69 6e 64 20 76 61 72  |used to find var|
00021770  69 6f 75 73 20 69 6e 66  6f 20 6f 6e 20 61 20 73  |ious info on a s|
00021780  74 72 69 6e 67 20 3a 0a  0a 23 54 61 62 0a 09 8f  |tring :..#Tab...|
00021790  09 48 6f 77 20 77 69 64  65 20 69 73 20 61 20 73  |.How wide is a s|
000217a0  74 72 69 6e 67 3f 0a 09  20 09 55 73 65 20 6c 61  |tring?.. .Use la|
000217b0  72 67 65 20 76 61 6c 75  65 73 20 66 6f 72 20 52  |rge values for R|
000217c0  33 2c 34 20 61 6e 64 20  6e 6f 20 73 70 6c 69 74  |3,4 and no split|
000217d0  20 63 68 61 72 61 63 74  65 72 0a 09 8f 09 47 69  | character....Gi|
000217e0  76 65 6e 20 61 20 77 69  64 74 68 2c 20 68 6f 77  |ven a width, how|
000217f0  20 6d 75 63 68 20 6f 66  20 61 20 73 74 72 69 6e  | much of a strin|
00021800  67 20 77 69 6c 6c 20 66  69 74 3f 0a 41 4e 44 09  |g will fit?.AND.|
00021810  8f 09 41 64 64 72 65 73  73 20 6f 66 20 61 20 6d  |..Address of a m|
00021820  6f 75 73 65 20 63 6c 69  63 6b 3f 0a 09 20 09 55  |ouse click?.. .U|
00021830  73 65 20 63 6f 72 72 65  63 74 20 77 69 64 74 68  |se correct width|
00021840  20 69 6e 20 52 33 2c 6c  61 72 67 65 20 76 61 6c  | in R3,large val|
00021850  75 65 20 69 6e 20 52 34  20 61 6e 64 20 28 69 66  |ue in R4 and (if|
00021860  20 6e 65 65 64 65 64 29  20 61 20 73 70 6c 69 74  | needed) a split|
00021870  20 63 68 61 72 20 69 6e  20 74 68 65 20 62 75 66  | char in the buf|
00021880  66 65 72 20 61 74 20 52  35 0a 09 8f 09 47 72 61  |fer at R5....Gra|
00021890  70 68 69 63 61 6c 20 70  6f 73 69 74 69 6f 6e 20  |phical position |
000218a0  6f 66 20 61 20 63 61 72  65 74 3f 0a 09 20 09 53  |of a caret?.. .S|
000218b0  65 74 20 52 37 20 74 6f  20 6f 66 66 73 65 74 20  |et R7 to offset |
000218c0  69 6e 74 6f 20 73 74 72  69 6e 67 2c 20 75 73 65  |into string, use|
000218d0  20 68 75 67 65 20 76 61  6c 75 65 73 20 66 6f 72  | huge values for|
000218e0  20 52 33 2c 34 2c 20 61  6e 64 20 6e 6f 20 73 70  | R3,4, and no sp|
000218f0  6c 69 74 0a 0a 52 65 67  69 73 74 65 72 73 20 30  |lit..Registers 0|
00021900  2c 35 2c 36 20 61 6e 64  20 37 20 61 72 65 20 6f  |,5,6 and 7 are o|
00021910  6e 6c 79 20 75 73 65 64  20 69 66 20 62 69 74 73  |nly used if bits|
00021920  20 38 2c 35 2c 36 20 61  6e 64 20 37 20 61 72 65  | 8,5,6 and 7 are|
00021930  20 73 65 74 20 69 6e 20  52 32 0a 0a 49 66 20 62  | set in R2..If b|
00021940  69 74 20 38 20 6f 66 20  52 32 20 69 73 20 63 6c  |it 8 of R2 is cl|
00021950  65 61 72 20 74 68 65 6e  20 74 68 65 20 63 75 72  |ear then the cur|
00021960  72 65 6e 74 20 66 6f 6e  74 20 77 69 6c 6c 20 62  |rent font will b|
00021970  65 20 61 73 73 75 6d 65  64 2e 20 54 68 69 73 20  |e assumed. This |
00021980  63 61 6c 6c 20 2a 64 6f  65 73 20 6e 6f 74 2a 20  |call *does not* |
00021990  61 6c 74 65 72 20 63 75  72 72 65 6e 74 20 66 6f  |alter current fo|
000219a0  6e 74 2c 20 73 6f 20 69  66 20 79 6f 75 20 61 72  |nt, so if you ar|
000219b0  65 20 73 63 61 6e 6e 69  6e 67 20 73 65 76 65 72  |e scanning sever|
000219c0  61 6c 20 73 65 71 75 65  6e 74 69 61 6c 20 6c 69  |al sequential li|
000219d0  6e 65 73 2c 20 61 6e 64  20 74 68 65 73 65 20 63  |nes, and these c|
000219e0  61 6e 20 63 6f 6e 74 61  69 6e 20 66 6f 6e 74 20  |an contain font |
000219f0  73 68 69 66 74 73 2c 20  79 6f 75 20 73 68 6f 75  |shifts, you shou|
00021a00  6c 64 20 63 61 6c 6c 20  3c 46 6f 6e 74 5f 46 75  |ld call <Font_Fu|
00021a10  74 75 72 65 46 6f 6e 74  3e 20 74 6f 20 66 69 6e  |tureFont> to fin|
00021a20  64 20 77 68 69 63 68 20  66 6f 6e 74 20 68 61 6e  |d which font han|
00021a30  64 6c 65 20 74 6f 20 70  61 73 73 20 69 6e 20 52  |dle to pass in R|
00021a40  30 20 74 68 65 20 6e 65  78 74 20 74 69 6d 65 2e  |0 the next time.|
00021a50  0a 0a 49 66 20 62 69 74  20 32 30 20 6f 66 20 52  |..If bit 20 of R|
00021a60  32 20 69 73 20 73 65 74  20 62 75 74 20 74 68 65  |2 is set but the|
00021a70  72 65 20 69 73 20 6e 6f  20 73 70 6c 69 74 20 63  |re is no split c|
00021a80  68 61 72 61 63 74 65 72  2c 20 74 68 65 6e 20 52  |haracter, then R|
00021a90  37 20 77 69 6c 6c 20 62  65 20 75 73 65 64 20 74  |7 will be used t|
00021aa0  6f 20 72 65 74 75 72 6e  20 74 68 65 20 6e 75 6d  |o return the num|
00021ab0  62 65 72 20 6f 66 20 6e  6f 6e 2d 63 6f 6e 74 72  |ber of non-contr|
00021ac0  6f 6c 20 63 68 61 72 61  63 74 65 72 73 20 28 63  |ol characters (c|
00021ad0  6f 64 65 73 20 33 32 20  6f 72 20 67 72 65 61 74  |odes 32 or great|
00021ae0  65 72 20 61 6e 64 20 6e  6f 74 20 77 69 74 68 69  |er and not withi|
00021af0  6e 20 61 20 63 6f 6e 74  72 6f 6c 20 73 65 71 75  |n a control sequ|
00021b00  65 6e 63 65 29 0a 0a 55  6e 6c 69 6b 65 20 3c 46  |ence)..Unlike <F|
00021b10  6f 6e 74 5f 50 61 69 6e  74 3e 2c 20 74 68 69 73  |ont_Paint>, this|
00021b20  20 63 61 6c 6c 20 6f 6e  6c 79 20 61 6c 6c 6f 77  | call only allow|
00021b30  73 20 6d 69 6c 6c 69 70  6f 69 6e 74 73 20 66 6f  |s millipoints fo|
00021b40  72 20 61 6c 6c 20 63 6f  6f 72 64 69 6e 61 74 65  |r all coordinate|
00021b50  73 2e 20 43 6f 6e 76 65  72 74 20 74 6f 2f 66 72  |s. Convert to/fr|
00021b60  6f 6d 20 4f 53 20 75 6e  69 74 73 20 62 79 20 64  |om OS units by d|
00021b70  69 76 69 64 69 6e 67 2f  6d 75 6c 74 69 70 6c 79  |ividing/multiply|
00021b80  69 6e 67 20 62 79 20 34  30 30 2e 20 28 49 6e 73  |ing by 400. (Ins|
00021b90  74 65 61 64 20 6f 66 20  64 69 76 69 64 69 6e 67  |tead of dividing|
00021ba0  2c 20 79 6f 75 20 63 61  6e 20 6d 75 6c 74 69 70  |, you can multip|
00021bb0  6c 79 20 62 79 20 28 31  5c 3c 5c 3c 31 38 20 2f  |ly by (1\<\<18 /|
00021bc0  20 34 30 30 29 20 61 6e  64 20 74 68 65 6e 20 73  | 400) and then s|
00021bd0  68 69 66 74 20 64 6f 77  6e 20 31 38 20 74 6f 20  |hift down 18 to |
00021be0  67 65 74 20 61 6e 20 61  70 70 72 6f 78 69 6d 61  |get an approxima|
00021bf0  74 65 20 61 6e 73 77 65  72 29 0a 23 0a 23 53 75  |te answer).#.#Su|
00021c00  62 70 61 67 65 20 66 6c  61 67 73 0a 46 6f 6e 74  |bpage flags.Font|
00021c10  5f 53 63 61 6e 53 74 72  69 6e 67 20 66 6c 61 67  |_ScanString flag|
00021c20  73 0a 42 69 74 09 4d 65  61 6e 69 6e 67 20 69 66  |s.Bit.Meaning if|
00021c30  20 73 65 74 0a 23 4c 69  6e 65 0a 30 2d 34 09 30  | set.#Line.0-4.0|
00021c40  20 28 72 65 73 65 72 76  65 64 29 0a 35 09 52 35  | (reserved).5.R5|
00021c50  20 69 73 20 70 6f 69 6e  74 65 72 20 74 6f 20 3c  | is pointer to <|
00021c60  62 6c 6f 63 6b 3d 3e 2e  62 6c 6f 63 6b 3e 0a 36  |block=>.block>.6|
00021c70  09 52 36 20 69 73 20 70  6f 69 6e 74 65 72 20 74  |.R6 is pointer t|
00021c80  6f 20 3c 74 72 61 6e 73  66 6f 72 6d 61 74 69 6f  |o <transformatio|
00021c90  6e 20 6d 61 74 72 69 78  3d 3e 46 6f 6e 74 5f 6d  |n matrix=>Font_m|
00021ca0  61 74 72 69 78 3e 0a 37  09 52 37 20 69 73 20 6c  |atrix>.7.R7 is l|
00021cb0  65 6e 67 74 68 20 6f 66  20 73 74 72 69 6e 67 0a  |ength of string.|
00021cc0  38 09 52 30 20 69 73 20  69 6e 69 74 69 61 6c 20  |8.R0 is initial |
00021cd0  66 6f 6e 74 20 68 61 6e  64 6c 65 0a 39 09 70 65  |font handle.9.pe|
00021ce0  72 66 6f 72 6d 20 6b 65  72 6e 69 6e 67 0a 31 30  |rform kerning.10|
00021cf0  09 77 72 69 74 69 6e 67  20 64 69 72 65 63 74 69  |.writing directi|
00021d00  6f 6e 20 69 73 20 52 69  67 68 74 20 74 6f 20 4c  |on is Right to L|
00021d10  65 66 74 0a 31 31 2d 31  36 09 30 20 28 72 65 73  |eft.11-16.0 (res|
00021d20  65 72 76 65 64 29 0a 31  37 09 72 65 74 75 72 6e  |erved).17.return|
00021d30  20 6e 65 61 72 65 73 74  20 63 61 72 65 74 20 70  | nearest caret p|
00021d40  6f 73 69 74 69 6f 6e 20  28 49 66 20 78 20 6f 66  |osition (If x of|
00021d50  66 73 65 74 20 69 73 20  6c 65 73 73 20 74 68 61  |fset is less tha|
00021d60  6e 20 68 61 6c 66 20 77  61 79 20 74 68 72 6f 75  |n half way throu|
00021d70  67 68 20 61 20 63 68 61  72 2c 20 77 65 20 64 6f  |gh a char, we do|
00021d80  6e 27 74 20 69 6e 63 6c  75 64 65 20 74 68 69 73  |n't include this|
00021d90  20 63 68 61 72 29 0a 31  38 09 72 65 74 75 72 6e  | char).18.return|
00021da0  20 62 6f 75 6e 64 69 6e  67 20 62 6f 78 20 69 6e  | bounding box in|
00021db0  20 52 35 20 28 62 69 74  20 35 20 6d 75 73 74 20  | R5 (bit 5 must |
00021dc0  61 6c 73 6f 20 62 65 20  73 65 74 29 0a 31 39 09  |also be set).19.|
00021dd0  72 65 74 75 72 6e 20 75  70 64 61 74 65 64 20 6d  |return updated m|
00021de0  61 74 72 69 78 20 69 6e  20 52 36 20 28 62 69 74  |atrix in R6 (bit|
00021df0  20 36 20 6d 75 73 74 20  61 6c 73 6f 20 62 65 20  | 6 must also be |
00021e00  73 65 74 29 0a 32 30 09  72 65 74 75 72 6e 20 6e  |set).20.return n|
00021e10  75 6d 62 65 72 20 6f 66  20 73 70 6c 69 74 20 63  |umber of split c|
00021e20  68 61 72 73 20 69 6e 20  52 37 20 28 62 69 74 20  |hars in R7 (bit |
00021e30  37 20 6d 75 73 74 20 61  6c 73 6f 20 62 65 20 73  |7 must also be s|
00021e40  65 74 29 0a 32 31 2d 33  31 09 30 20 28 72 65 73  |et).21-31.0 (res|
00021e50  65 72 76 65 64 29 0a 23  73 75 62 70 61 67 65 20  |erved).#subpage |
00021e60  62 6c 6f 63 6b 0a 46 6f  6e 74 5f 53 63 61 6e 53  |block.Font_ScanS|
00021e70  74 72 69 6e 67 20 62 6c  6f 63 6b 0a 4f 66 66 73  |tring block.Offs|
00021e80  65 74 09 43 6f 6e 74 65  6e 74 73 0a 23 4c 69 6e  |et.Contents.#Lin|
00021e90  65 0a 30 09 61 64 64 69  74 69 6f 6e 61 6c 20 78  |e.0.additional x|
00021ea0  20 6f 66 66 73 65 74 20  66 6f 72 20 73 70 61 63  | offset for spac|
00021eb0  65 73 0a 34 09 61 64 64  69 74 69 6f 6e 61 6c 20  |es.4.additional |
00021ec0  79 20 6f 66 66 73 65 74  20 66 6f 72 20 73 70 61  |y offset for spa|
00021ed0  63 65 73 0a 38 09 61 64  64 69 74 69 6f 6e 61 6c  |ces.8.additional|
00021ee0  20 78 20 6f 66 66 73 65  74 20 66 6f 72 20 65 61  | x offset for ea|
00021ef0  63 68 20 6c 65 74 74 65  72 0a 31 32 09 61 64 64  |ch letter.12.add|
00021f00  69 74 69 6f 6e 61 6c 20  79 20 6f 66 66 73 65 74  |itional y offset|
00021f10  20 66 6f 72 20 65 61 63  68 20 6c 65 74 74 65 72  | for each letter|
00021f20  0a 31 36 09 73 70 6c 69  74 20 63 68 61 72 61 63  |.16.split charac|
00021f30  74 65 72 20 28 6f 72 20  2d 31 20 66 6f 72 20 6e  |ter (or -1 for n|
00021f40  6f 6e 65 29 0a 32 30 09  72 65 74 75 72 6e 73 20  |one).20.returns |
00021f50  6c 65 66 74 20 6f 66 20  62 6f 75 6e 64 69 6e 67  |left of bounding|
00021f60  20 62 6f 78 20 28 69 66  20 62 31 38 20 73 65 74  | box (if b18 set|
00021f70  29 0a 32 34 09 72 65 74  75 72 6e 73 20 62 6f 74  |).24.returns bot|
00021f80  74 6f 6d 20 6f 66 20 62  6f 75 6e 64 69 6e 67 20  |tom of bounding |
00021f90  62 6f 78 20 28 69 66 20  62 31 38 20 73 65 74 29  |box (if b18 set)|
00021fa0  0a 32 38 09 72 65 74 75  72 6e 73 20 72 69 67 68  |.28.returns righ|
00021fb0  74 20 6f 66 20 62 6f 75  6e 64 69 6e 67 20 62 6f  |t of bounding bo|
00021fc0  78 20 28 69 66 20 62 31  38 20 73 65 74 29 0a 33  |x (if b18 set).3|
00021fd0  32 09 72 65 74 75 72 6e  73 20 74 6f 70 20 6f 66  |2.returns top of|
00021fe0  20 62 6f 75 6e 64 69 6e  67 20 62 6f 78 20 28 69  | bounding box (i|
00021ff0  66 20 62 31 38 20 73 65  74 29 0a 00 44 41 54 41  |f b18 set)..DATA|
00022000  05 03 00 00 46 6f 6e 74  20 69 64 65 6e 74 69 66  |....Font identif|
00022010  69 65 72 20 73 74 72 69  6e 67 73 0a 23 50 61 72  |ier strings.#Par|
00022020  65 6e 74 20 46 6f 6e 74  5f 46 69 6e 64 46 6f 6e  |ent Font_FindFon|
00022030  74 0a 49 66 20 74 68 65  20 73 74 72 69 6e 67 20  |t.If the string |
00022040  64 6f 65 73 20 6e 6f 74  20 73 74 61 72 74 20 77  |does not start w|
00022050  69 74 68 20 27 5c 5c 27  20 69 74 20 69 73 20 61  |ith '\\' it is a|
00022060  73 73 75 6d 65 64 20 74  6f 20 62 65 20 61 20 66  |ssumed to be a f|
00022070  6f 6e 74 20 6e 61 6d 65  20 28 7b 2f 7d 69 2e 65  |ont name ({/}i.e|
00022080  2e 7b 2f 7d 20 5c 5c 46  20 69 73 20 69 6d 70 6c  |.{/} \\F is impl|
00022090  69 63 69 74 6c 79 20 70  72 65 70 65 6e 64 65 64  |icitly prepended|
000220a0  29 2e 20 54 68 65 20 69  64 65 6e 74 69 66 65 72  |). The identifer|
000220b0  20 73 74 72 69 6e 67 20  63 6f 6e 73 69 73 74 73  | string consists|
000220c0  20 6f 66 20 61 20 73 65  72 69 65 73 20 6f 66 20  | of a series of |
000220d0  71 75 61 6c 69 66 69 65  72 73 2f 76 61 6c 75 65  |qualifiers/value|
000220e0  20 70 61 69 72 73 3a 0a  0a 23 74 61 62 0a 51 75  | pairs:..#tab.Qu|
000220f0  61 6c 69 66 69 65 72 09  4d 65 61 6e 69 6e 67 0a  |alifier.Meaning.|
00022100  23 4c 69 6e 65 0a 5c 5c  46 09 09 66 6f 6e 74 20  |#Line.\\F..font |
00022110  69 64 65 6e 74 69 66 69  65 72 20 28 52 49 53 43  |identifier (RISC|
00022120  20 4f 53 20 32 20 6f 6c  64 20 73 74 79 6c 65 20  | OS 2 old style |
00022130  66 6f 6e 74 20 6e 61 6d  65 29 20 73 70 61 63 65  |font name) space|
00022140  2f 63 6f 6e 74 72 6f 6c  20 74 65 72 6d 69 6e 61  |/control termina|
00022150  74 65 64 0a 5c 5c 66 09  09 74 65 72 72 69 74 6f  |ted.\\f..territo|
00022160  72 79 20 6e 75 6d 62 65  72 2c 20 73 70 61 63 65  |ry number, space|
00022170  2c 20 66 6f 6e 74 20 6e  61 6d 65 20 28 69 6e 20  |, font name (in |
00022180  74 68 65 20 63 75 72 72  65 6e 74 20 74 65 72 72  |the current terr|
00022190  69 74 6f 72 79 27 73 a0  6c 61 6e 67 75 61 67 65  |itory's.language|
000221a0  20 61 6e 64 20 61 6c 70  68 61 62 65 74 29 20 63  | and alphabet) c|
000221b0  6f 6e 74 72 6f 6c 20 74  65 72 6d 69 6e 61 74 65  |ontrol terminate|
000221c0  64 0a 5c 5c 45 09 09 65  6e 63 6f 64 69 6e 67 20  |d.\\E..encoding |
000221d0  69 64 65 6e 74 69 66 69  65 72 20 63 6f 6e 74 72  |identifier contr|
000221e0  6f 6c 20 74 65 72 6d 69  6e 61 74 65 64 0a 5c 5c  |ol terminated.\\|
000221f0  65 09 09 74 65 72 72 69  74 6f 72 79 20 6e 75 6d  |e..territory num|
00022200  62 65 72 2c 20 73 70 61  63 65 2c 20 65 6e 63 6f  |ber, space, enco|
00022210  64 69 6e 67 20 6e 61 6d  65 20 63 6f 6e 74 72 6f  |ding name contro|
00022220  6c 20 74 65 72 6d 69 6e  61 74 65 64 0a 5c 5c 4d  |l terminated.\\M|
00022230  09 09 3c 74 72 61 6e 73  66 6f 72 6d 61 74 69 6f  |..<transformatio|
00022240  6e 20 6d 61 74 72 69 78  3d 3e 66 6f 6e 74 5f 6d  |n matrix=>font_m|
00022250  61 74 72 69 78 3e 2c 20  36 20 31 2f 31 30 30 30  |atrix>, 6 1/1000|
00022260  74 68 20 65 6d 20 76 61  6c 75 65 73 20 61 73 20  |th em values as |
00022270  2a 64 65 63 69 6d 61 6c  2a 20 73 69 67 6e 65 64  |*decimal* signed|
00022280  20 69 6e 74 65 67 65 72  73 2c 20 61 6c 6c 20 7b  | integers, all {|
00022290  2a 7d 36 7b 2a 7d 20 66  6f 6c 6c 6f 77 65 64 20  |*}6{*} followed |
000222a0  62 79 20 61 20 73 70 61  63 65 2e 20 54 68 65 20  |by a space. The |
000222b0  66 69 72 73 74 20 34 20  61 72 65 20 61 63 74 75  |first 4 are actu|
000222c0  61 6c 6c 79 20 69 6e 74  65 72 70 72 65 74 65 64  |ally interpreted|
000222d0  20 61 73 20 66 69 78 65  64 20 70 6f 69 6e 74 20  | as fixed point |
000222e0  66 72 61 63 74 69 6f 6e  73 20 6f 66 20 74 68 65  |fractions of the|
000222f0  20 66 6f 72 6d 20 26 58  58 58 58 b7 58 58 58 58  | form &XXXX.XXXX|
00022300  2e 00 00 00 44 41 54 41  05 01 00 00 46 6f 6e 74  |....DATA....Font|
00022310  20 74 72 61 6e 73 66 6f  72 6d 61 74 69 6f 6e 20  | transformation |
00022320  6d 61 74 72 69 63 65 73  0a 54 68 65 73 65 20 61  |matrices.These a|
00022330  72 65 20 73 74 61 6e 64  61 72 64 20 27 44 72 61  |re standard 'Dra|
00022340  77 27 20 3c 74 72 61 6e  73 66 6f 72 6d 61 74 69  |w' <transformati|
00022350  6f 6e 20 6d 61 74 72 69  63 65 73 3d 3e 44 72 61  |on matrices=>Dra|
00022360  77 5f 74 72 61 6e 73 66  6f 72 6d 3e 2e 0a 0a 49  |w_transform>...I|
00022370  66 20 61 20 63 61 6c 6c  20 64 6f 65 73 20 6e 6f  |f a call does no|
00022380  74 20 6e 65 65 64 20 74  68 65 20 74 72 61 6e 73  |t need the trans|
00022390  6c 61 74 69 6f 6e 20 76  61 6c 75 65 73 20 73 70  |lation values sp|
000223a0  65 63 69 66 69 65 64 20  28 7b 2f 7d 65 2e 67 2e  |ecified ({/}e.g.|
000223b0  7b 2f 7d 20 74 68 65 20  63 6f 6e 74 72 6f 6c 20  |{/} the control |
000223c0  63 6f 64 65 20 32 38 20  69 6e 20 3c 46 6f 6e 74  |code 28 in <Font|
000223d0  5f 50 61 69 6e 74 3e 29  20 74 68 65 6e 20 69 74  |_Paint>) then it|
000223e0  20 77 69 6c 6c 20 75 73  65 20 30 20 66 6f 72 20  | will use 0 for |
000223f0  62 6f 74 68 20 74 72 61  6e 73 6c 61 74 69 6f 6e  |both translation|
00022400  20 76 61 6c 75 65 73 2e  0a 00 00 00 44 41 54 41  | values.....DATA|
00022410  53 01 00 00 46 6f 6e 74  5f 52 65 61 64 54 68 72  |S...Font_ReadThr|
00022420  65 73 68 6f 6c 64 73 20  20 28 26 34 30 30 39 34  |esholds  (&40094|
00022430  29 0a 23 50 61 72 65 6e  74 20 46 6f 6e 74 5f 0a  |).#Parent Font_.|
00022440  3d 3e 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |=>.R1 =.pointer |
00022450  74 6f 20 3c 72 65 73 75  6c 74 20 62 75 66 66 65  |to <result buffe|
00022460  72 3d 3e 46 6f 6e 74 5f  74 68 72 65 73 68 6f 6c  |r=>Font_threshol|
00022470  64 73 3e 0a 0a 54 68 69  73 20 53 57 49 20 72 65  |ds>..This SWI re|
00022480  61 64 73 20 74 68 65 20  74 68 72 65 73 68 6f 6c  |ads the threshol|
00022490  64 20 76 61 6c 75 65 73  20 75 73 65 64 20 62 79  |d values used by|
000224a0  20 74 68 65 20 46 6f 6e  74 20 4d 61 6e 61 67 65  | the Font Manage|
000224b0  72 20 77 68 65 6e 20 70  61 69 6e 74 69 6e 67 2e  |r when painting.|
000224c0  20 54 68 65 20 6c 65 6e  67 74 68 20 6f 66 20 74  | The length of t|
000224d0  61 62 6c 65 20 72 65 71  75 69 72 65 64 20 69 73  |able required is|
000224e0  20 6f 6e 65 20 62 79 74  65 20 66 6f 72 20 65 61  | one byte for ea|
000224f0  63 68 20 6c 6f 67 69 63  61 6c 20 63 6f 6c 6f 75  |ch logical colou|
00022500  72 20 75 73 65 64 20 28  7b 2f 7d 69 2e 65 2e 7b  |r used ({/}i.e.{|
00022510  2f 7d 20 33 20 2b 20 41  42 53 28 66 6f 72 65 67  |/} 3 + ABS(foreg|
00022520  72 6f 75 6e 64 20 63 6f  6c 6f 75 72 20 6f 66 66  |round colour off|
00022530  73 65 74 29 20 77 68 69  63 68 20 63 61 6e 20 62  |set) which can b|
00022540  65 20 72 65 61 64 20 77  69 74 68 20 3c 46 6f 6e  |e read with <Fon|
00022550  74 5f 43 75 72 72 65 6e  74 46 6f 6e 74 3e 29 00  |t_CurrentFont>).|
00022560  44 41 54 41 f8 00 00 00  46 6f 6e 74 5f 53 65 74  |DATA....Font_Set|
00022570  54 68 72 65 73 68 6f 6c  64 73 20 20 28 26 34 30  |Thresholds  (&40|
00022580  30 39 35 29 0a 23 50 61  72 65 6e 74 20 46 6f 6e  |095).#Parent Fon|
00022590  74 5f 0a 3d 3e 09 52 31  20 3d 09 70 6f 69 6e 74  |t_.=>.R1 =.point|
000225a0  65 72 20 74 6f 20 3c 74  68 72 65 73 68 6f 6c 64  |er to <threshold|
000225b0  20 64 61 74 61 3d 3e 46  6f 6e 74 5f 74 68 72 65  | data=>Font_thre|
000225c0  73 68 6f 6c 64 73 3e 0a  0a 54 68 69 73 20 53 57  |sholds>..This SW|
000225d0  49 20 73 65 74 73 20 74  68 65 20 74 68 72 65 73  |I sets the thres|
000225e0  68 6f 6c 64 20 76 61 6c  75 65 73 20 75 73 65 64  |hold values used|
000225f0  20 62 79 20 74 68 65 20  46 6f 6e 74 20 4d 61 6e  | by the Font Man|
00022600  61 67 65 72 20 77 68 65  6e 20 70 61 69 6e 74 69  |ager when painti|
00022610  6e 67 2e 20 54 68 69 73  20 69 73 20 75 6e 6c 69  |ng. This is unli|
00022620  6b 65 6c 79 20 74 6f 20  62 65 20 6e 65 65 64 65  |kely to be neede|
00022630  64 2c 20 62 65 63 61 75  73 65 20 74 68 65 20 64  |d, because the d|
00022640  65 66 61 75 6c 74 20 73  68 6f 75 6c 64 20 77 6f  |efault should wo|
00022650  72 6b 20 77 65 6c 6c 2e  44 41 54 41 92 01 00 00  |rk well.DATA....|
00022660  46 6f 6e 74 5f 52 65 61  64 46 6f 6e 74 4d 61 78  |Font_ReadFontMax|
00022670  20 20 28 26 34 30 30 39  43 29 0a 23 50 61 72 65  |  (&4009C).#Pare|
00022680  6e 74 20 46 6f 6e 74 5f  0a 3c 3d 09 52 30 20 3d  |nt Font_.<=.R0 =|
00022690  09 46 6f 6e 74 4d 61 78  09 09 69 6e 20 62 79 74  |.FontMax..in byt|
000226a0  65 73 0a 09 52 31 20 3d  09 46 6f 6e 74 4d 61 78  |es..R1 =.FontMax|
000226b0  31 09 69 6e 20 70 6f 69  6e 74 73 0a 09 52 32 20  |1.in points..R2 |
000226c0  3d 09 46 6f 6e 74 4d 61  78 32 09 69 6e 20 70 6f  |=.FontMax2.in po|
000226d0  69 6e 74 73 0a 09 52 33  20 3d 09 46 6f 6e 74 4d  |ints..R3 =.FontM|
000226e0  61 78 33 09 69 6e 20 70  6f 69 6e 74 73 0a 09 52  |ax3.in points..R|
000226f0  34 20 3d 09 46 6f 6e 74  4d 61 78 34 09 69 6e 20  |4 =.FontMax4.in |
00022700  70 6f 69 6e 74 73 0a 09  52 35 20 3d 09 46 6f 6e  |points..R5 =.Fon|
00022710  74 4d 61 78 35 09 69 6e  20 70 6f 69 6e 74 73 0a  |tMax5.in points.|
00022720  09 52 36 20 3d 09 70 6f  73 73 69 62 6c 79 20 63  |.R6 =.possibly c|
00022730  6f 72 72 75 70 74 65 64  0a 09 52 37 20 3d 09 70  |orrupted..R7 =.p|
00022740  6f 73 73 69 62 6c 79 20  63 6f 72 72 75 70 74 65  |ossibly corrupte|
00022750  64 0a 0a 54 68 69 73 20  53 57 49 20 72 65 61 64  |d..This SWI read|
00022760  73 20 74 68 65 20 63 75  72 72 65 6e 74 20 46 6f  |s the current Fo|
00022770  6e 74 4d 61 78 20 61 6e  64 20 46 6f 6e 74 4d 61  |ntMax and FontMa|
00022780  78 31 20 2d 20 46 6f 6e  74 4d 61 78 35 20 28 6e  |x1 - FontMax5 (n|
00022790  6f 74 20 74 68 65 20 63  6f 6e 66 69 67 75 72 65  |ot the configure|
000227a0  64 20 76 61 6c 75 65 73  29 2e a0 54 68 65 20 76  |d values)..The v|
000227b0  61 6c 75 65 73 20 69 6e  20 52 31 2d 52 35 20 73  |alues in R1-R5 s|
000227c0  68 6f 75 6c 64 20 62 65  20 69 6e 20 70 69 78 65  |hould be in pixe|
000227d0  73 20 2a 20 37 32 20 2a  20 31 36 20 66 6f 72 20  |s * 72 * 16 for |
000227e0  52 49 53 43 20 4f 53 20  32 2e 00 00 44 41 54 41  |RISC OS 2...DATA|
000227f0  fe 00 00 00 46 6f 6e 74  5f 52 65 61 64 46 6f 6e  |....Font_ReadFon|
00022800  74 50 72 65 66 69 78 20  20 28 26 34 30 30 39 44  |tPrefix  (&4009D|
00022810  29 0a 23 50 61 72 65 6e  74 20 46 6f 6e 74 5f 0a  |).#Parent Font_.|
00022820  3d 3e 09 52 30 20 3d 09  66 6f 6e 74 20 68 61 6e  |=>.R0 =.font han|
00022830  64 6c 65 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |dle..R1 =.pointe|
00022840  72 20 74 6f 20 62 75 66  66 65 72 0a 09 52 32 20  |r to buffer..R2 |
00022850  3d 09 6c 65 6e 67 74 68  20 6f 66 20 62 75 66 66  |=.length of buff|
00022860  65 72 0a 3c 3d 09 52 30  20 3d 09 70 72 65 73 65  |er.<=.R0 =.prese|
00022870  72 76 65 64 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |rved..R1 =.point|
00022880  65 72 20 74 6f 20 74 65  72 6d 69 6e 61 74 69 6e  |er to terminatin|
00022890  67 20 30 20 69 6e 20 62  75 66 66 65 72 0a 09 52  |g 0 in buffer..R|
000228a0  32 20 3d 09 66 72 65 65  20 62 79 74 65 73 20 69  |2 =.free bytes i|
000228b0  6e 20 62 75 66 66 65 72  0a 0a 54 68 69 73 20 53  |n buffer..This S|
000228c0  57 49 20 72 65 74 75 72  6e 73 20 74 68 65 20 66  |WI returns the f|
000228d0  75 6c 6c 20 70 61 74 68  20 74 6f 20 74 68 65 20  |ull path to the |
000228e0  66 6f 6e 74 20 64 61 74  61 2e 00 00 44 41 54 41  |font data...DATA|
000228f0  06 0a 00 00 46 6f 6e 74  5f 52 65 61 64 46 6f 6e  |....Font_ReadFon|
00022900  74 4d 65 74 72 69 63 73  20 20 28 26 34 30 30 39  |tMetrics  (&4009|
00022910  46 29 0a 23 50 61 72 65  6e 74 20 46 6f 6e 74 5f  |F).#Parent Font_|
00022920  0a 3d 3e 09 52 30 20 3d  09 66 6f 6e 74 20 68 61  |.=>.R0 =.font ha|
00022930  6e 64 6c 65 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |ndle..R1 =.point|
00022940  65 72 20 74 6f 20 62 75  66 66 65 72 20 66 6f 72  |er to buffer for|
00022950  20 3c 62 6f 75 6e 64 69  6e 67 20 62 6f 78 3d 3e  | <bounding box=>|
00022960  73 77 69 5f 62 62 6f 78  3e 20 61 72 72 61 79 2c  |swi_bbox> array,|
00022970  20 6f 72 20 30 20 74 6f  20 72 65 61 64 20 73 69  | or 0 to read si|
00022980  7a 65 0a 09 52 32 20 3d  09 70 6f 69 6e 74 65 72  |ze..R2 =.pointer|
00022990  20 74 6f 20 62 75 66 66  65 72 20 66 6f 72 20 78  | to buffer for x|
000229a0  20 77 69 64 74 68 20 64  61 74 61 2c 20 6f 72 20  | width data, or |
000229b0  30 20 74 6f 20 72 65 61  64 20 73 69 7a 65 0a 09  |0 to read size..|
000229c0  52 33 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R3 =.pointer to |
000229d0  62 75 66 66 65 72 20 66  6f 72 20 79 20 77 69 64  |buffer for y wid|
000229e0  74 68 20 64 61 74 61 2c  20 6f 72 20 30 20 74 6f  |th data, or 0 to|
000229f0  20 72 65 61 64 20 73 69  7a 65 0a 09 52 34 20 3d  | read size..R4 =|
00022a00  09 70 6f 69 6e 74 65 72  20 74 6f 20 62 75 66 66  |.pointer to buff|
00022a10  65 72 20 66 6f 72 20 6d  69 73 63 20 64 61 74 61  |er for misc data|
00022a20  2c 20 6f 72 20 30 20 74  6f 20 72 65 61 64 20 73  |, or 0 to read s|
00022a30  69 7a 65 0a 09 52 35 20  3d 09 70 6f 69 6e 74 65  |ize..R5 =.pointe|
00022a40  72 20 74 6f 20 62 75 66  66 65 72 20 66 6f 72 20  |r to buffer for |
00022a50  6b 65 72 6e 69 6e 67 20  64 61 74 61 2c 20 6f 72  |kerning data, or|
00022a60  20 30 20 74 6f 20 72 65  61 64 20 73 69 7a 65 0a  | 0 to read size.|
00022a70  09 52 36 20 3d 09 30 0a  09 52 37 20 3d 09 30 0a  |.R6 =.0..R7 =.0.|
00022a80  0a 3c 3d 09 52 30 20 3d  09 3c 66 69 6c 65 20 66  |.<=.R0 =.<file f|
00022a90  6c 61 67 73 3d 3e 2e 66  6c 61 67 73 3e 0a 09 52  |lags=>.flags>..R|
00022aa0  31 20 3d 09 73 69 7a 65  20 6f 66 20 62 6f 75 6e  |1 =.size of boun|
00022ab0  64 69 6e 67 20 62 6f 78  20 64 61 74 61 2c 20 6f  |ding box data, o|
00022ac0  72 20 30 20 69 66 20 6e  6f 74 20 69 6e 20 66 69  |r 0 if not in fi|
00022ad0  6c 65 0a 09 52 32 20 3d  09 73 69 7a 65 20 6f 66  |le..R2 =.size of|
00022ae0  20 78 20 77 69 64 74 68  20 64 61 74 61 2c 20 6f  | x width data, o|
00022af0  72 20 30 20 69 66 20 6e  6f 74 20 69 6e 20 66 69  |r 0 if not in fi|
00022b00  6c 65 0a 09 52 33 20 3d  09 73 69 7a 65 20 6f 66  |le..R3 =.size of|
00022b10  20 79 20 77 69 64 74 68  20 64 61 74 61 2c 20 6f  | y width data, o|
00022b20  72 20 30 20 69 66 20 6e  6f 74 20 69 6e 20 66 69  |r 0 if not in fi|
00022b30  6c 65 0a 09 52 34 20 3d  09 73 69 7a 65 20 6f 66  |le..R4 =.size of|
00022b40  20 3c 6d 69 73 63 20 64  61 74 61 3d 3e 2e 6d 69  | <misc data=>.mi|
00022b50  73 63 3e 2c 20 6f 72 20  30 20 69 66 20 6e 6f 74  |sc>, or 0 if not|
00022b60  20 69 6e 20 66 69 6c 65  0a 09 52 35 20 3d 09 73  | in file..R5 =.s|
00022b70  69 7a 65 20 6f 66 20 3c  6b 65 72 6e 69 6e 67 20  |ize of <kerning |
00022b80  64 61 74 61 3d 3e 2e 6b  65 72 6e 3e 2c 20 6f 72  |data=>.kern>, or|
00022b90  20 30 20 69 66 20 6e 6f  74 20 69 6e 20 66 69 6c  | 0 if not in fil|
00022ba0  65 0a 09 52 36 20 3d 09  70 6f 73 73 69 62 6c 79  |e..R6 =.possibly|
00022bb0  20 63 6f 72 72 75 70 74  65 64 0a 09 52 37 20 3d  | corrupted..R7 =|
00022bc0  09 70 6f 73 73 69 62 6c  79 20 63 6f 72 72 75 70  |.possibly corrup|
00022bd0  74 65 64 0a 0a 54 68 69  73 20 53 57 49 20 72 65  |ted..This SWI re|
00022be0  61 64 73 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |ads information |
00022bf0  69 6e 20 74 68 65 20 66  6f 6e 74 27 73 20 49 6e  |in the font's In|
00022c00  74 4d 65 74 72 69 63 73  20 66 69 6c 65 2e 20 43  |tMetrics file. C|
00022c10  75 72 72 65 6e 74 6c 79  20 69 74 20 69 73 20 6e  |urrently it is n|
00022c20  6f 74 20 70 65 72 6d 69  74 74 65 64 20 6f 6e 20  |ot permitted on |
00022c30  66 6f 6e 74 73 20 77 68  69 63 68 20 68 61 76 65  |fonts which have|
00022c40  20 68 61 64 20 61 20 74  72 61 6e 73 66 6f 72 6d  | had a transform|
00022c50  61 74 69 6f 6e 20 6d 61  74 72 69 78 20 61 70 70  |ation matrix app|
00022c60  6c 69 65 64 2e 20 41 6c  6c 20 76 61 6c 75 65 73  |lied. All values|
00022c70  20 61 72 65 20 73 69 67  6e 65 64 20 6d 69 6c 6c  | are signed mill|
00022c80  69 70 6f 69 6e 74 73 2c  20 75 6e 6c 65 73 73 20  |ipoints, unless |
00022c90  73 70 65 63 69 66 69 63  6c 79 20 73 74 61 74 65  |specificly state|
00022ca0  64 2e 0a 0a 57 69 64 74  68 20 64 61 74 61 20 69  |d...Width data i|
00022cb0  73 20 61 6e 20 61 72 72  61 79 20 6f 66 20 32 35  |s an array of 25|
00022cc0  36 20 77 6f 72 64 73 2c  20 62 6f 75 6e 64 69 6e  |6 words, boundin|
00022cd0  67 20 62 6f 78 20 64 61  74 61 20 61 6e 20 61 72  |g box data an ar|
00022ce0  72 61 79 20 6f 66 20 32  35 36 20 2a 20 34 20 77  |ray of 256 * 4 w|
00022cf0  6f 72 64 73 20 28 78 30  2c 20 79 30 2c 20 78 31  |ords (x0, y0, x1|
00022d00  2c 20 79 31 29 2e 0a 23  20 47 65 72 70 68 3e 20  |, y1)..# Gerph> |
00022d10  49 73 20 74 68 69 73 20  73 74 69 6c 6c 20 74 72  |Is this still tr|
00022d20  75 65 20 6f 66 20 66 6f  6e 74 73 20 77 69 74 68  |ue of fonts with|
00022d30  20 3e 20 32 35 36 20 63  68 61 72 61 63 74 65 72  | > 256 character|
00022d40  73 20 69 6e 20 74 68 65  6d 20 3f 0a 23 53 75 62  |s in them ?.#Sub|
00022d50  70 61 67 65 20 66 6c 61  67 73 0a 46 69 6c 65 20  |page flags.File |
00022d60  66 6c 61 67 73 0a 31 09  6b 65 72 6e 20 70 61 69  |flags.1.kern pai|
00022d70  72 73 20 64 6f 6e 27 74  20 68 61 76 65 20 78 20  |rs don't have x |
00022d80  6f 66 66 73 65 74 73 0a  32 09 6b 65 72 6e 20 70  |offsets.2.kern p|
00022d90  61 69 72 73 20 64 6f 6e  27 74 20 68 61 76 65 20  |airs don't have |
00022da0  79 20 6f 66 66 73 65 74  73 0a 33 09 3e 32 35 35  |y offsets.3.>255|
00022db0  20 6b 65 72 6e 20 70 61  69 72 73 20 70 72 65 73  | kern pairs pres|
00022dc0  65 6e 74 0a 30 2c 34 2d  33 31 09 75 6e 64 65 66  |ent.0,4-31.undef|
00022dd0  69 6e 65 64 20 28 72 65  73 65 72 76 65 64 29 0a  |ined (reserved).|
00022de0  23 53 75 62 70 61 67 65  20 6d 69 73 63 0a 4d 69  |#Subpage misc.Mi|
00022df0  73 63 65 6c 61 6e 65 6f  75 73 20 49 6e 74 4d 65  |scelaneous IntMe|
00022e00  74 72 69 63 73 20 64 61  74 61 0a 4f 66 66 73 65  |trics data.Offse|
00022e10  74 09 56 61 6c 75 65 0a  23 4c 69 6e 65 0a 4d 61  |t.Value.#Line.Ma|
00022e20  78 69 6d 75 6d 20 62 6f  75 6e 64 69 6e 67 20 62  |ximum bounding b|
00022e30  6f 78 0a 30 09 78 30 0a  32 09 79 30 0a 34 09 78  |ox.0.x0.2.y0.4.x|
00022e40  31 0a 36 09 79 31 0a 0a  38 09 64 65 66 61 75 6c  |1.6.y1..8.defaul|
00022e50  74 20 78 20 6f 66 66 73  65 74 0a 31 30 09 64 65  |t x offset.10.de|
00022e60  66 61 75 6c 74 20 79 20  6f 66 66 73 65 74 0a 31  |fault y offset.1|
00022e70  32 09 69 74 61 6c 69 63  20 68 2d 6f 66 66 73 65  |2.italic h-offse|
00022e80  74 20 70 65 72 20 65 6d  20 28 2d 31 30 30 30 20  |t per em (-1000 |
00022e90  2a 20 54 41 4e 20 28 69  74 61 6c 69 63 20 61 6e  |* TAN (italic an|
00022ea0  67 6c 65 29 29 0a 31 34  09 75 6e 64 65 72 6c 69  |gle)).14.underli|
00022eb0  6e 65 20 70 6f 73 69 74  69 6f 6e 20 28 31 2f 32  |ne position (1/2|
00022ec0  35 36 20 65 6d 29 0a 31  35 09 75 6e 64 65 72 6c  |56 em).15.underl|
00022ed0  69 6e 65 20 74 68 69 63  6b 6e 65 73 73 20 28 31  |ine thickness (1|
00022ee0  2f 32 35 36 20 65 6d 2c  20 75 6e 73 69 67 6e 65  |/256 em, unsigne|
00022ef0  64 29 0a 31 36 09 63 61  70 20 68 65 69 67 68 74  |d).16.cap height|
00022f00  0a 31 38 09 58 20 68 65  69 67 68 74 0a 32 30 09  |.18.X height.20.|
00022f10  64 65 73 63 65 6e 64 65  72 0a 32 32 09 61 73 63  |descender.22.asc|
00022f20  65 6e 64 65 72 0a 32 34  09 30 20 28 72 65 73 65  |ender.24.0 (rese|
00022f30  72 76 65 64 29 0a 23 53  75 62 70 61 67 65 20 6b  |rved).#Subpage k|
00022f40  65 72 6e 0a 4b 65 72 6e  69 6e 67 20 64 61 74 61  |ern.Kerning data|
00022f50  0a 4b 65 72 6e 69 6e 67  20 69 6e 66 6f 72 6d 61  |.Kerning informa|
00022f60  74 69 6f 6e 20 69 73 20  66 6f 75 6e 64 20 62 79  |tion is found by|
00022f70  20 68 61 73 68 20 74 61  62 6c 65 20 6c 6f 6f 6b  | hash table look|
00022f80  75 70 2c 20 75 73 69 6e  67 20 74 68 65 20 66 75  |up, using the fu|
00022f90  6e 63 74 69 6f 6e 0a 20  20 20 20 68 61 73 68 20  |nction.    hash |
00022fa0  74 61 62 6c 65 20 69 6e  64 65 78 20 3d 20 28 66  |table index = (f|
00022fb0  69 72 73 74 20 6c 65 74  74 65 72 29 20 45 4f 52  |irst letter) EOR|
00022fc0  20 28 73 65 63 6f 6e 64  20 6c 65 74 74 65 72 20  | (second letter |
00022fd0  52 4f 52 20 34 29 0a 54  68 65 20 73 65 63 6f 6e  |ROR 4).The secon|
00022fe0  64 20 6c 65 74 74 65 72  20 63 61 6e 20 62 65 20  |d letter can be |
00022ff0  63 61 6c 63 75 6c 61 74  65 64 20 62 79 0a 20 20  |calculated by.  |
00023000  20 20 73 65 63 6f 6e 64  20 6c 65 74 74 65 72 20  |  second letter |
00023010  3d 20 28 66 69 72 73 74  20 6c 65 74 74 65 72 20  |= (first letter |
00023020  45 4f 52 20 68 61 73 68  20 74 61 62 6c 65 20 69  |EOR hash table i|
00023030  6e 64 65 78 29 20 52 4f  52 20 34 0a 77 68 65 72  |ndex) ROR 4.wher|
00023040  65 20 62 6f 74 68 20 72  6f 74 61 74 65 73 20 61  |e both rotates a|
00023050  72 65 20 70 65 72 66 6f  6d 65 64 20 38 20 62 69  |re perfomed 8 bi|
00023060  74 73 20 6f 6e 6c 79 2e  0a 0a 44 61 74 61 20 69  |ts only...Data i|
00023070  73 20 73 74 6f 72 65 64  20 61 73 20 3a 0a 0a 53  |s stored as :..S|
00023080  69 7a 65 09 56 61 6c 75  65 0a 23 4c 69 6e 65 0a  |ize.Value.#Line.|
00023090  32 35 36 20 2a 20 34 09  68 61 73 68 20 74 61 62  |256 * 4.hash tab|
000230a0  6c 65 20 6f 66 20 6f 66  66 73 65 74 73 20 74 6f  |le of offsets to|
000230b0  20 66 69 72 73 74 20 6b  65 72 6e 20 70 61 69 72  | first kern pair|
000230c0  20 77 69 74 68 20 74 68  69 73 20 68 61 73 68 20  | with this hash |
000230d0  76 61 6c 75 65 0a 34 09  6f 66 66 73 65 74 20 6f  |value.4.offset o|
000230e0  66 20 65 6e 64 20 6f 66  20 61 6c 6c 20 70 61 69  |f end of all pai|
000230f0  72 73 0a 34 09 66 6c 61  67 73 20 2d 20 6d 65 61  |rs.4.flags - mea|
00023100  6e 69 6e 67 20 77 68 65  6e 20 62 69 74 73 20 73  |ning when bits s|
00023110  65 74 3a 0a 09 30 09 6e  6f 20 62 6f 75 6e 64 69  |et:..0.no boundi|
00023120  6e 67 20 62 6f 78 65 73  0a 09 31 09 6e 6f 20 78  |ng boxes..1.no x|
00023130  20 6f 66 66 73 65 74 73  0a 09 32 09 6e 6f 20 79  | offsets..2.no y|
00023140  20 6f 66 66 73 65 74 73  0a 09 33 31 09 27 73 68  | offsets..31.'sh|
00023150  6f 72 74 27 20 6b 65 72  6e 20 70 61 69 72 73 0a  |ort' kern pairs.|
00023160  09 33 2d 33 30 09 75 6e  64 65 66 69 6e 65 64 20  |.3-30.undefined |
00023170  28 72 65 73 65 72 76 65  64 29 0a 3f 09 6b 65 72  |(reserved).?.ker|
00023180  6e 20 70 61 69 72 20 64  61 74 61 20 28 73 74 6f  |n pair data (sto|
00023190  72 65 64 20 63 6f 6e 73  65 63 75 74 69 76 65 6c  |red consecutivel|
000231a0  79 2c 20 69 6e 20 68 61  73 68 20 66 75 6e 63 74  |y, in hash funct|
000231b0  69 6f 6e 20 6f 72 64 65  72 29 0a 0a 4b 65 72 6e  |ion order)..Kern|
000231c0  20 70 61 69 72 20 64 61  74 61 20 69 73 20 73 74  | pair data is st|
000231d0  6f 72 65 64 20 61 73 20  3a 0a 0a 53 69 7a 65 09  |ored as :..Size.|
000231e0  56 61 6c 75 65 0a 23 4c  69 6e 65 0a 34 09 66 69  |Value.#Line.4.fi|
000231f0  72 73 74 20 6c 65 74 74  65 72 20 6f 66 20 6b 65  |rst letter of ke|
00023200  72 6e 20 70 61 69 72 0a  34 09 78 20 6f 66 66 73  |rn pair.4.x offs|
00023210  65 74 20 28 69 66 20 66  6c 61 67 20 62 69 74 20  |et (if flag bit |
00023220  31 20 63 6c 65 61 72 29  0a 34 09 79 20 6f 66 66  |1 clear).4.y off|
00023230  73 65 74 20 28 69 66 20  66 6c 61 67 20 62 69 74  |set (if flag bit|
00023240  20 31 20 63 6c 65 61 72  29 0a 0a 49 66 20 62 69  | 1 clear)..If bi|
00023250  74 20 33 31 20 6f 66 20  74 68 65 20 66 6c 61 67  |t 31 of the flag|
00023260  73 20 69 73 20 73 65 74  2c 20 74 68 65 20 6b 65  |s is set, the ke|
00023270  72 6e 20 64 61 74 61 20  69 73 20 63 6f 6d 70 72  |rn data is compr|
00023280  65 73 73 65 64 20 62 79  20 63 6f 6d 62 69 6e 69  |essed by combini|
00023290  6e 67 20 74 68 65 20 66  69 72 73 74 20 74 77 6f  |ng the first two|
000232a0  20 28 6f 72 20 6f 6e 6c  79 20 74 77 6f 29 20 77  | (or only two) w|
000232b0  6f 72 64 73 3a 0a 0a 62  69 74 73 20 30 2d 37 09  |ords:..bits 0-7.|
000232c0  66 69 72 73 74 20 6c 65  74 74 65 72 20 6f 66 20  |first letter of |
000232d0  6b 65 72 6e 20 70 61 69  72 0a 62 69 74 73 20 38  |kern pair.bits 8|
000232e0  2d 33 31 09 78 20 6f 72  20 79 20 6f 66 66 73 65  |-31.x or y offse|
000232f0  74 0a 00 00 44 41 54 41  9f 00 00 00 46 6f 6e 74  |t...DATA....Font|
00023300  5f 53 65 74 43 6f 6c 6f  75 72 54 61 62 6c 65 20  |_SetColourTable |
00023310  20 28 26 34 30 30 41 32  29 0a 23 50 61 72 65 6e  | (&400A2).#Paren|
00023320  74 20 46 6f 6e 74 5f 0a  46 6f 72 20 69 6e 74 65  |t Font_.For inte|
00023330  72 6e 61 6c 20 75 73 65  20 62 79 20 43 6f 6c 6f  |rnal use by Colo|
00023340  75 72 54 72 61 6e 73 20  6f 6e 6c 79 2e 0a 55 73  |urTrans only..Us|
00023350  65 20 3c 43 6f 6c 6f 75  72 54 72 61 6e 73 5f 53  |e <ColourTrans_S|
00023360  65 74 46 6f 6e 74 43 6f  6c 6f 75 72 73 3e 20 6f  |etFontColours> o|
00023370  72 20 3c 46 6f 6e 74 5f  50 61 69 6e 74 3e 20 63  |r <Font_Paint> c|
00023380  6f 6e 74 72 6f 6c 20 73  65 71 75 65 6e 63 65 20  |ontrol sequence |
00023390  31 39 2e 00 44 41 54 41  5d 02 00 00 46 6f 6e 74  |19..DATA]...Font|
000233a0  5f 52 65 61 64 45 6e 63  6f 64 69 6e 67 46 69 6c  |_ReadEncodingFil|
000233b0  65 6e 61 6d 65 20 20 28  26 34 30 30 41 35 29 0a  |ename  (&400A5).|
000233c0  23 50 61 72 65 6e 74 20  46 6f 6e 74 5f 0a 3d 3e  |#Parent Font_.=>|
000233d0  09 52 30 20 3d 09 66 6f  6e 74 20 68 61 6e 64 6c  |.R0 =.font handl|
000233e0  65 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |e..R1 =.pointer |
000233f0  74 6f 20 62 75 66 66 65  72 0a 09 52 32 20 3d 09  |to buffer..R2 =.|
00023400  6c 65 6e 67 74 68 20 6f  66 20 62 75 66 66 65 72  |length of buffer|
00023410  0a 3c 3d 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |.<=.R0 =.pointer|
00023420  20 74 6f 20 65 6e 63 6f  64 69 6e 67 20 66 69 6c  | to encoding fil|
00023430  65 6e 61 6d 65 20 28 69  6e 20 62 75 66 66 65 72  |ename (in buffer|
00023440  29 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |)..R1 =.pointer |
00023450  74 6f 20 74 65 72 6d 69  6e 61 74 69 6e 67 20 30  |to terminating 0|
00023460  20 69 6e 20 62 75 66 66  65 72 0a 09 52 32 20 3d  | in buffer..R2 =|
00023470  09 66 72 65 65 20 62 79  74 65 73 20 69 6e 20 62  |.free bytes in b|
00023480  75 66 66 65 72 0a 0a 54  68 69 73 20 53 57 49 20  |uffer..This SWI |
00023490  72 65 74 75 72 6e 73 20  74 68 65 20 66 69 6c 65  |returns the file|
000234a0  6e 61 6d 65 20 6f 66 20  74 68 65 20 65 6e 63 6f  |name of the enco|
000234b0  64 69 6e 67 20 66 69 6c  65 2c 20 70 72 69 6d 61  |ding file, prima|
000234c0  72 69 6c 79 20 6f 66 20  75 73 65 20 74 6f 20 50  |rily of use to P|
000234d0  44 72 69 76 65 72 50 53  2e 20 54 68 65 20 66 6f  |DriverPS. The fo|
000234e0  6e 74 20 6d 61 6e 61 67  65 72 20 6f 6e 6c 79 20  |nt manager only |
000234f0  75 73 65 73 20 70 75 62  6c 69 63 20 65 6e 63 6f  |uses public enco|
00023500  64 69 6e 67 20 66 69 6c  65 73 20 77 69 74 68 20  |ding files with |
00023510  6e 61 6d 65 73 20 6f 66  20 74 68 65 20 66 6f 72  |names of the for|
00023520  6d 0a 20 20 20 20 7b 2f  7d 66 6f 6e 74 5f 70 72  |m.    {/}font_pr|
00023530  65 66 69 78 2e 7b 2f 7d  45 6e 63 6f 64 69 6e 67  |efix.{/}Encoding|
00023540  73 7b 2f 7d 2e 65 6e 63  6f 64 69 6e 67 7b 2f 7d  |s{/}.encoding{/}|
00023550  0a 50 44 72 69 76 65 72  50 53 20 75 73 65 73 20  |.PDriverPS uses |
00023560  74 68 65 20 70 72 69 76  61 74 65 20 65 6e 63 6f  |the private enco|
00023570  64 69 6e 67 20 66 69 6c  65 73 20 77 69 74 68 20  |ding files with |
00023580  6e 61 6d 65 73 20 6f 66  20 74 68 65 20 66 6f 72  |names of the for|
00023590  6d 0a 20 20 20 20 7b 2f  7d 66 6f 6e 74 5f 70 72  |m.    {/}font_pr|
000235a0  65 66 69 78 2e 66 6f 6e  74 5f 6e 61 6d 65 7b 2f  |efix.font_name{/|
000235b0  7d 45 6e 63 6f 64 69 6e  67 0a 74 6f 20 66 69 6e  |}Encoding.to fin|
000235c0  64 20 74 68 65 20 50 6f  73 74 53 63 72 69 70 74  |d the PostScript|
000235d0  20 6e 61 6d 65 73 20 6f  66 20 74 68 65 20 66 6f  | names of the fo|
000235e0  6e 74 27 73 20 63 68 61  72 61 63 74 65 72 73 2e  |nt's characters.|
000235f0  0a 00 00 00 44 41 54 41  80 02 00 00 46 6f 6e 74  |....DATA....Font|
00023600  5f 41 70 70 6c 79 46 69  65 6c 64 73 20 20 28 26  |_ApplyFields  (&|
00023610  34 30 30 41 37 29 0a 23  50 61 72 65 6e 74 20 46  |400A7).#Parent F|
00023620  6f 6e 74 5f 0a 3d 3e 09  52 30 20 3d 09 70 6f 69  |ont_.=>.R0 =.poi|
00023630  6e 74 65 72 20 74 6f 20  6f 72 69 67 69 6e 61 6c  |nter to original|
00023640  20 3c 66 6f 6e 74 20 69  64 65 6e 74 69 66 69 65  | <font identifie|
00023650  72 3d 3e 46 6f 6e 74 5f  69 64 65 6e 74 69 66 69  |r=>Font_identifi|
00023660  65 72 3e 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |er>..R1 =.pointe|
00023670  72 20 74 6f 20 66 69 65  6c 64 73 20 74 6f 20 61  |r to fields to a|
00023680  64 64 20 28 69 6e 20 66  6f 6e 74 20 69 64 65 6e  |dd (in font iden|
00023690  74 69 66 69 65 72 20 66  6f 72 6d 61 74 29 0a 09  |tifier format)..|
000236a0  52 32 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R2 =.pointer to |
000236b0  6f 75 70 75 74 20 62 75  66 66 65 72 20 28 30 20  |ouput buffer (0 |
000236c0  74 6f 20 72 65 74 75 72  6e 20 73 69 7a 65 29 0a  |to return size).|
000236d0  09 52 33 20 3d 09 73 69  7a 65 20 6f 66 20 6f 75  |.R3 =.size of ou|
000236e0  74 70 75 74 20 62 75 66  66 65 72 0a 0a 3c 3d 09  |tput buffer..<=.|
000236f0  52 30 2d 52 32 20 70 72  65 73 65 72 76 65 64 0a  |R0-R2 preserved.|
00023700  09 52 33 20 3d 09 66 72  65 65 20 73 70 61 63 65  |.R3 =.free space|
00023710  20 72 65 6d 61 69 6e 69  6e 67 20 69 6e 20 6f 75  | remaining in ou|
00023720  74 70 75 74 20 62 75 66  66 65 72 20 6f 72 20 73  |tput buffer or s|
00023730  69 7a 65 20 6f 66 20 62  75 66 66 65 72 20 6e 65  |ize of buffer ne|
00023740  65 64 65 64 0a 0a 54 68  69 73 20 53 57 49 20 6d  |eded..This SWI m|
00023750  65 72 67 65 73 20 6e 65  77 20 66 69 65 6c 64 73  |erges new fields|
00023760  20 69 6e 74 6f 20 61 6e  20 66 6f 6e 74 20 69 64  | into an font id|
00023770  65 6e 74 69 66 69 65 72  2c 20 72 65 70 6c 61 63  |entifier, replac|
00023780  69 6e 67 20 74 68 65 20  76 61 6c 75 65 73 20 6f  |ing the values o|
00023790  66 20 61 6e 79 20 65 78  69 73 74 69 6e 67 20 66  |f any existing f|
000237a0  69 65 6c 64 73 20 61 6c  73 6f 20 64 65 66 69 6e  |ields also defin|
000237b0  65 64 20 69 6e 20 74 68  65 20 66 69 65 6c 64 73  |ed in the fields|
000237c0  20 74 6f 20 61 64 64 2e  20 42 79 20 61 64 64 69  | to add. By addi|
000237d0  6e 67 20 6e 75 6c 6c 20  66 69 65 6c 64 73 20 79  |ng null fields y|
000237e0  6f 75 20 63 61 6e 20 64  65 6c 65 74 65 20 61 6e  |ou can delete an|
000237f0  20 65 78 69 73 74 69 6e  67 20 66 69 65 6c 64 2e  | existing field.|
00023800  20 46 69 65 6c 64 73 20  6e 6f 74 20 70 72 65 73  | Fields not pres|
00023810  65 6e 74 20 69 6e 20 6f  72 69 67 69 6e 61 6c 20  |ent in original |
00023820  69 64 65 6e 74 69 66 69  65 72 20 61 72 65 20 70  |identifier are p|
00023830  6c 61 63 65 64 20 69 6e  20 74 68 65 20 72 65 73  |laced in the res|
00023840  75 6c 74 20 61 66 74 65  72 20 66 69 65 6c 64 73  |ult after fields|
00023850  20 70 72 65 73 65 6e 74  20 69 6e 20 74 68 65 20  | present in the |
00023860  6f 72 69 67 69 6e 61 6c  20 69 64 65 6e 74 69 66  |original identif|
00023870  69 65 72 2e 44 41 54 41  79 01 00 00 46 6f 6e 74  |ier.DATAy...Font|
00023880  5f 43 75 72 72 65 6e 74  52 47 42 20 20 28 26 34  |_CurrentRGB  (&4|
00023890  30 30 41 33 29 0a 23 50  61 72 65 6e 74 20 46 6f  |00A3).#Parent Fo|
000238a0  6e 74 5f 0a 3c 3d 09 52  30 20 3d 09 66 6f 6e 74  |nt_.<=.R0 =.font|
000238b0  20 68 61 6e 64 6c 65 0a  09 52 31 20 3d 09 62 61  | handle..R1 =.ba|
000238c0  63 6b 67 72 6f 75 6e 64  20 63 6f 6c 6f 75 72 09  |ckground colour.|
000238d0  28 26 42 42 47 47 52 52  30 30 29 0a 09 52 32 20  |(&BBGGRR00)..R2 |
000238e0  3d 09 66 6f 72 65 67 72  6f 75 6e 64 20 63 6f 6c  |=.foreground col|
000238f0  6f 75 72 09 28 26 42 42  47 47 52 52 30 30 29 0a  |our.(&BBGGRR00).|
00023900  09 52 33 20 3d 09 6d 61  78 69 6d 75 6d 20 63 6f  |.R3 =.maximum co|
00023910  6c 6f 75 72 20 6f 66 66  73 65 74 20 28 30 20 2d  |lour offset (0 -|
00023920  3e 20 6d 6f 6e 6f 2c 20  6f 74 68 65 72 77 69 73  |> mono, otherwis|
00023930  65 20 61 6e 74 69 2d 61  6c 69 61 73 65 64 29 0a  |e anti-aliased).|
00023940  0a 54 68 69 73 20 53 57  49 20 72 65 74 75 72 6e  |.This SWI return|
00023950  73 20 74 68 65 20 63 75  72 72 65 6e 74 20 63 6f  |s the current co|
00023960  6c 6f 75 72 20 73 65 74  74 69 6e 67 73 20 61 74  |lour settings at|
00023970  65 72 20 63 61 6c 6c 69  6e 67 20 3c 46 6f 6e 74  |er calling <Font|
00023980  5f 50 61 69 6e 74 3e 2e  20 49 66 20 74 68 65 20  |_Paint>. If the |
00023990  63 6f 6c 6f 75 72 73 20  77 65 72 65 20 6e 6f 74  |colours were not|
000239a0  20 73 65 74 20 75 73 69  6e 67 20 52 47 42 20 76  | set using RGB v|
000239b0  61 6c 75 65 73 20 69 74  20 77 69 6c 6c 20 67 65  |alues it will ge|
000239c0  6e 65 72 61 74 65 20 74  68 65 20 65 72 72 6f 72  |nerate the error|
000239d0  20 27 55 6e 64 65 66 69  6e 65 64 20 52 47 42 20  | 'Undefined RGB |
000239e0  66 6f 6e 74 20 63 6f 6c  6f 75 72 73 27 00 00 00  |font colours'...|
000239f0  44 41 54 41 b2 01 00 00  46 6f 6e 74 5f 46 69 6e  |DATA....Font_Fin|
00023a00  64 46 69 65 6c 64 20 20  28 26 34 30 30 41 36 29  |dField  (&400A6)|
00023a10  0a 23 50 61 72 65 6e 74  20 46 6f 6e 74 5f 0a 3d  |.#Parent Font_.=|
00023a20  3e 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |>.R1 =.pointer t|
00023a30  6f 20 3c 66 6f 6e 74 20  69 64 65 6e 74 69 66 69  |o <font identifi|
00023a40  65 72 3d 3e 46 6f 6e 74  5f 69 64 65 6e 74 69 66  |er=>Font_identif|
00023a50  69 65 72 3e 0a 09 52 32  20 3d 09 63 68 61 72 61  |ier>..R2 =.chara|
00023a60  63 74 65 72 20 63 6f 64  65 20 6f 66 20 72 65 71  |cter code of req|
00023a70  75 69 72 65 64 20 71 75  61 6c 69 66 65 72 0a 3c  |uired qualifer.<|
00023a80  3d 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |=.R1 =.pointer t|
00023a90  6f 20 76 61 6c 75 65 20  66 6f 6c 6c 6f 77 69 6e  |o value followin|
00023aa0  67 20 71 75 61 6c 69 66  65 72 20 77 69 74 68 69  |g qualifer withi|
00023ab0  6e 20 73 74 72 69 6e 67  20 28 69 66 20 70 72 65  |n string (if pre|
00023ac0  73 65 6e 74 2c 20 65 6c  73 65 20 70 72 65 73 65  |sent, else prese|
00023ad0  72 76 65 64 29 0a 09 52  32 20 3d 09 30 20 69 66  |rved)..R2 =.0 if|
00023ae0  20 66 69 65 6c 64 20 6e  6f 74 20 70 72 65 73 65  | field not prese|
00023af0  6e 74 2c 20 6f 74 68 65  72 77 69 73 65 20 70 72  |nt, otherwise pr|
00023b00  65 73 65 72 76 65 64 0a  0a 54 68 69 73 20 53 57  |eserved..This SW|
00023b10  49 20 72 65 74 75 72 6e  73 20 61 20 70 6f 69 6e  |I returns a poin|
00023b20  74 65 72 20 74 6f 20 74  68 65 20 73 70 65 63 69  |ter to the speci|
00023b30  66 65 64 20 66 69 65 6c  64 20 77 69 74 68 20 74  |fed field with t|
00023b40  68 65 20 66 6f 6e 74 20  73 74 72 69 6e 67 2e 20  |he font string. |
00023b50  4e 6f 74 65 20 74 68 61  74 20 74 68 65 20 46 20  |Note that the F |
00023b60  66 69 65 6c 64 20 69 73  20 73 70 61 63 65 20 74  |field is space t|
00023b70  65 72 6d 69 6e 61 74 65  64 2c 20 61 6c 6c 20 6f  |erminated, all o|
00023b80  74 68 65 72 73 20 61 72  65 20 63 6f 6e 74 72 6f  |thers are contro|
00023b90  6c 2d 63 68 61 72 20 74  65 72 6d 69 6e 61 74 65  |l-char terminate|
00023ba0  64 2e 00 00 44 41 54 41  c9 01 00 00 46 6f 6e 74  |d...DATA....Font|
00023bb0  5f 46 75 74 75 72 65 52  47 42 20 20 28 26 34 30  |_FutureRGB  (&40|
00023bc0  30 41 34 29 0a 23 50 61  72 65 6e 74 20 46 6f 6e  |0A4).#Parent Fon|
00023bd0  74 5f 0a 3c 3d 09 52 30  20 3d 09 66 6f 6e 74 20  |t_.<=.R0 =.font |
00023be0  68 61 6e 64 6c 65 0a 09  52 31 20 3d 09 62 61 63  |handle..R1 =.bac|
00023bf0  6b 67 72 6f 75 6e 64 20  63 6f 6c 6f 75 72 09 28  |kground colour.(|
00023c00  26 42 42 47 47 52 52 30  30 29 0a 09 52 32 20 3d  |&BBGGRR00)..R2 =|
00023c10  09 66 6f 72 65 67 72 6f  75 6e 64 20 63 6f 6c 6f  |.foreground colo|
00023c20  75 72 09 28 26 42 42 47  47 52 52 30 30 29 0a 09  |ur.(&BBGGRR00)..|
00023c30  52 33 20 3d 09 6d 61 78  69 6d 75 6d 20 63 6f 6c  |R3 =.maximum col|
00023c40  6f 75 72 20 6f 66 66 73  65 74 20 28 30 20 2d 3e  |our offset (0 ->|
00023c50  20 6d 6f 6e 6f 2c 20 6f  74 68 65 72 77 69 73 65  | mono, otherwise|
00023c60  20 61 6e 74 69 2d 61 6c  69 61 73 65 64 29 0a 0a  | anti-aliased)..|
00023c70  54 68 69 73 20 53 57 49  20 72 65 74 75 72 6e 73  |This SWI returns|
00023c80  20 74 68 65 20 63 75 72  72 65 6e 74 20 63 6f 6c  | the current col|
00023c90  6f 75 72 20 73 65 74 74  69 6e 67 73 20 61 74 65  |our settings ate|
00023ca0  72 20 63 61 6c 6c 69 6e  67 20 3c 46 6f 6e 74 5f  |r calling <Font_|
00023cb0  53 63 61 6e 53 74 72 69  6e 67 3e 2c 20 3c 46 6f  |ScanString>, <Fo|
00023cc0  6e 74 5f 53 74 72 69 6e  67 57 69 64 74 68 3e 2c  |nt_StringWidth>,|
00023cd0  20 3c 46 6f 6e 74 5f 53  74 72 69 6e 67 42 42 6f  | <Font_StringBBo|
00023ce0  78 3e 2c 20 3c 46 6f 6e  74 5f 46 69 6e 64 43 61  |x>, <Font_FindCa|
00023cf0  72 65 74 3e 2c 20 3c 46  6f 6e 74 5f 46 69 6e 64  |ret>, <Font_Find|
00023d00  43 61 72 65 74 4a 3e 2e  20 49 66 20 74 68 65 20  |CaretJ>. If the |
00023d10  63 6f 6c 6f 75 72 73 20  77 65 72 65 20 6e 6f 74  |colours were not|
00023d20  20 73 65 74 20 75 73 69  6e 67 20 52 47 42 20 76  | set using RGB v|
00023d30  61 6c 75 65 73 20 69 74  20 77 69 6c 6c 20 67 65  |alues it will ge|
00023d40  6e 65 72 61 74 65 20 74  68 65 20 65 72 72 6f 72  |nerate the error|
00023d50  20 27 55 6e 64 65 66 69  6e 65 64 20 52 47 42 20  | 'Undefined RGB |
00023d60  66 6f 6e 74 20 63 6f 6c  6f 75 72 73 27 00 00 00  |font colours'...|
00023d70  44 41 54 41 d2 04 00 00  46 6f 6e 74 5f 44 65 63  |DATA....Font_Dec|
00023d80  6f 64 65 4d 65 6e 75 20  20 28 26 34 30 30 41 30  |odeMenu  (&400A0|
00023d90  29 0a 23 50 61 72 65 6e  74 20 46 6f 6e 74 5f 0a  |).#Parent Font_.|
00023da0  3d 3e 09 52 30 20 3d 09  62 69 74 20 30 09 73 65  |=>.R0 =.bit 0.se|
00023db0  74 20 66 6f 72 20 65 6e  63 6f 64 69 6e 67 20 6d  |t for encoding m|
00023dc0  65 6e 75 2c 20 63 6c 65  61 72 20 66 6f 72 20 66  |enu, clear for f|
00023dd0  6f 6e 74 20 6d 65 6e 75  0a 09 20 09 62 69 74 73  |ont menu.. .bits|
00023de0  20 31 2d 33 31 09 30 20  28 72 65 73 65 72 76 65  | 1-31.0 (reserve|
00023df0  64 29 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |d)..R1 =.pointer|
00023e00  20 74 6f 20 6d 65 6e 75  20 64 65 66 69 6e 69 74  | to menu definit|
00023e10  69 6f 6e 20 66 72 6f 6d  20 3c 46 6f 6e 74 5f 4c  |ion from <Font_L|
00023e20  69 73 74 46 6f 6e 74 73  3e 0a 09 52 32 20 3d 09  |istFonts>..R2 =.|
00023e30  70 6f 69 6e 74 65 72 20  74 6f 20 6d 65 6e 75 20  |pointer to menu |
00023e40  73 65 6c 65 63 74 69 6f  6e 73 20 66 72 6f 6d 20  |selections from |
00023e50  3c 57 69 6d 70 5f 50 6f  6c 6c 20 39 3d 3e 57 69  |<Wimp_Poll 9=>Wi|
00023e60  6d 70 3a 57 69 6d 70 5f  50 6f 6c 6c 39 3e 20 0a  |mp:Wimp_Poll9> .|
00023e70  09 52 33 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R3 =.pointer to|
00023e80  20 62 75 66 66 65 72 20  28 6f 72 20 30 20 74 6f  | buffer (or 0 to|
00023e90  20 72 65 74 75 72 6e 20  73 69 7a 65 20 6e 65 65  | return size nee|
00023ea0  64 65 64 29 0a 09 52 34  20 3d 09 73 69 7a 65 20  |ded)..R4 =.size |
00023eb0  6f 66 20 62 75 66 66 65  72 20 28 75 6e 6c 65 73  |of buffer (unles|
00023ec0  73 20 52 33 20 69 73 20  30 29 0a 0a 3c 3d 09 52  |s R3 is 0)..<=.R|
00023ed0  30 20 3d 09 70 72 65 73  65 72 76 65 64 0a 09 52  |0 =.preserved..R|
00023ee0  31 20 3d 09 70 72 65 73  65 72 76 65 64 0a 09 52  |1 =.preserved..R|
00023ef0  32 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 72  |2 =.pointer to r|
00023f00  65 73 74 20 6f 66 20 6d  65 6e 75 20 73 65 6c 65  |est of menu sele|
00023f10  6c 65 63 74 69 6f 6e 73  0a 09 52 33 20 3d 09 70  |lections..R3 =.p|
00023f20  72 65 73 65 72 76 65 64  0a 09 52 34 20 3d 09 73  |reserved..R4 =.s|
00023f30  69 7a 65 20 6f 66 20 62  75 66 66 65 72 20 72 65  |ize of buffer re|
00023f40  71 75 69 72 65 64 20 28  30 20 6d 65 61 6e 73 20  |quired (0 means |
00023f50  6e 6f 20 66 6f 6e 74 20  73 65 6c 65 63 74 65 64  |no font selected|
00023f60  2c 20 2a 6f 72 2a 20 73  79 73 74 65 6d 20 66 6f  |, *or* system fo|
00023f70  6e 74 20 73 65 6c 65 63  74 65 64 20 2d 20 63 68  |nt selected - ch|
00023f80  65 63 6b 20 74 68 65 20  77 6f 72 64 20 61 74 20  |eck the word at |
00023f90  52 32 20 62 65 66 6f 72  65 20 63 61 6c 6c 69 6e  |R2 before callin|
00023fa0  67 29 0a 0a 23 74 61 62  0a 54 68 69 73 20 53 57  |g)..#tab.This SW|
00023fb0  49 20 64 65 63 6f 64 65  73 20 74 68 65 20 66 6f  |I decodes the fo|
00023fc0  6e 74 20 6f 72 20 65 6e  63 6f 64 69 6e 67 20 6d  |nt or encoding m|
00023fd0  65 6e 75 2c 20 72 65 74  75 72 6e 69 6e 67 20 61  |enu, returning a|
00023fe0  20 73 74 72 69 6e 67 20  77 69 74 68 20 61 20 66  | string with a f|
00023ff0  6f 72 6d 61 74 20 64 65  70 65 6e 64 65 6e 74 20  |ormat dependent |
00024000  6f 6e 20 77 68 65 74 68  65 72 20 74 68 65 20 66  |on whether the f|
00024010  6f 6e 74 2f 65 6e 63 6f  64 69 6e 67 20 6e 61 6d  |ont/encoding nam|
00024020  65 73 20 77 65 72 65 20  73 70 65 63 69 66 65 64  |es were specifed|
00024030  20 69 6e 20 61 20 4d 65  73 73 61 67 65 73 7b 2f  | in a Messages{/|
00024040  7d 6e 7b 2f 7d 20 66 69  6c 65 20 69 6e 20 74 68  |}n{/} file in th|
00024050  65 20 66 6f 6e 74 20 64  69 72 65 63 74 6f 72 79  |e font directory|
00024060  2e 20 49 66 20 6e 6f 20  4d 65 73 73 61 67 65 73  |. If no Messages|
00024070  7b 2f 7d 6e 7b 2f 7d 20  66 69 6c 65 20 77 61 73  |{/}n{/} file was|
00024080  20 66 6f 75 6e 64 20 28  61 6e 64 20 68 65 6e 63  | found (and henc|
00024090  65 20 74 68 65 20 66 6f  6e 74 20 6d 61 6e 61 67  |e the font manag|
000240a0  65 72 20 68 61 73 20 66  6f 75 6e 64 20 74 68 65  |er has found the|
000240b0  20 66 6f 6e 74 20 6e 61  6d 65 73 20 62 79 20 73  | font names by s|
000240c0  63 61 6e 6e 69 6e 67 20  74 68 65 20 64 69 72 65  |canning the dire|
000240d0  63 74 6f 72 79 20 74 72  65 65 29 20 74 68 65 20  |ctory tree) the |
000240e0  6e 61 6d 65 20 66 69 65  6c 64 20 69 73 20 61 62  |name field is ab|
000240f0  73 65 6e 74 2e 0a 0a 4d  65 73 73 61 67 65 73 20  |sent...Messages |
00024100  66 69 6c 65 20 68 6f 6c  64 73 09 52 65 74 75 72  |file holds.Retur|
00024110  6e 65 64 20 73 74 72 69  6e 67 0a 23 6c 69 6e 65  |ned string.#line|
00024120  0a 46 6f 6e 74 20 69 64  2c 20 6e 6f 20 6e 61 6d  |.Font id, no nam|
00024130  65 09 5c 5c 46 66 6f 6e  74 5f 69 64 0a 46 6f 6e  |e.\\Ffont_id.Fon|
00024140  74 20 69 64 2c 20 6e 61  6d 65 09 09 5c 5c 46 66  |t id, name..\\Ff|
00024150  6f 6e 74 5f 69 64 5c 5c  66 74 65 72 72 69 74 6f  |ont_id\\fterrito|
00024160  72 79 20 66 6f 6e 74 6e  61 6d 65 0a 45 6e 63 6f  |ry fontname.Enco|
00024170  64 69 6e 67 2c 20 6e 6f  20 6e 61 6d 65 09 5c 5c  |ding, no name.\\|
00024180  45 65 6e 63 6f 64 69 6e  67 0a 45 6e 63 6f 64 69  |Eencoding.Encodi|
00024190  6e 67 2c 20 6e 61 6d 65  09 09 5c 5c 45 65 6e 63  |ng, name..\\Eenc|
000241a0  6f 64 69 6e 67 5c 5c 65  74 65 72 72 69 74 6f 72  |oding\\eterritor|
000241b0  79 20 65 6e 63 6f 64 69  6e 67 20 6e 61 6d 65 0a  |y encoding name.|
000241c0  0a 45 78 70 65 72 69 6d  65 6e 74 61 74 69 6f 6e  |.Experimentation|
000241d0  20 73 75 67 67 65 73 74  73 20 74 68 61 74 20 70  | suggests that p|
000241e0  61 73 73 69 6e 67 20 69  6e 20 61 20 73 65 6c 65  |assing in a sele|
000241f0  63 74 69 6f 6e 20 62 6c  6f 63 6b 20 70 6f 69 6e  |ction block poin|
00024200  74 69 6e 67 20 61 74 20  53 79 73 74 65 6d 20 46  |ting at System F|
00024210  6f 6e 74 20 77 69 6c 6c  20 67 65 6e 65 72 61 74  |ont will generat|
00024220  65 20 61 6e 20 65 72 72  6f 72 2c 20 72 61 74 68  |e an error, rath|
00024230  65 72 20 74 68 61 6e 20  73 65 74 20 52 34 20 3d  |er than set R4 =|
00024240  20 30 00 00 44 41 54 41  15 02 00 00 46 6f 6e 74  | 0..DATA....Font|
00024250  5f 4d 61 6b 65 42 69 74  6d 61 70 20 20 28 26 34  |_MakeBitmap  (&4|
00024260  30 30 39 39 29 0a 23 50  61 72 65 6e 74 20 46 6f  |0099).#Parent Fo|
00024270  6e 74 5f 0a 3d 3e 09 52  31 20 3d 09 66 6f 6e 74  |nt_.=>.R1 =.font|
00024280  20 68 61 6e 64 6c 65 2c  20 6f 72 20 70 6f 69 6e  | handle, or poin|
00024290  74 65 72 20 74 6f 20 69  64 65 6e 74 69 66 69 65  |ter to identifie|
000242a0  72 0a 09 52 32 20 3d 09  78 20 70 6f 69 6e 74 73  |r..R2 =.x points|
000242b0  20 2a 20 31 36 0a 09 52  33 20 3d 09 79 20 70 6f  | * 16..R3 =.y po|
000242c0  69 6e 74 73 20 2a 20 31  36 0a 09 52 34 20 3d 09  |ints * 16..R4 =.|
000242d0  78 20 64 70 69 0a 09 52  35 20 3d 09 79 20 64 70  |x dpi..R5 =.y dp|
000242e0  69 0a 09 52 36 20 3d 09  3c 66 6c 61 67 73 3d 3e  |i..R6 =.<flags=>|
000242f0  2e 66 6c 61 67 73 3e 0a  0a 54 68 69 73 20 53 57  |.flags>..This SW|
00024300  49 20 63 72 65 61 74 65  73 20 61 20 62 69 74 6d  |I creates a bitm|
00024310  61 70 20 66 69 6c 65 20  73 74 6f 72 65 64 20 69  |ap file stored i|
00024320  6e 20 74 68 65 20 66 6f  6e 74 27 73 20 64 69 72  |n the font's dir|
00024330  65 63 74 6f 72 79 2c 20  73 70 65 65 64 69 6e 67  |ectory, speeding|
00024340  20 75 70 20 63 61 63 68  69 6e 67 2c 20 65 73 70  | up caching, esp|
00024350  65 63 69 61 6c 6c 79 20  66 6f 72 20 73 75 62 70  |ecially for subp|
00024360  69 78 65 6c 20 70 6f 73  69 74 69 6f 6e 69 6e 67  |ixel positioning|
00024370  2e 0a 23 53 75 62 70 61  67 65 20 66 6c 61 67 73  |..#Subpage flags|
00024380  0a 4d 65 61 6e 69 6e 67  20 6f 66 20 62 69 74 73  |.Meaning of bits|
00024390  20 69 6e 20 52 32 20 77  68 65 6e 20 73 65 74 0a  | in R2 when set.|
000243a0  30 09 31 20 3d 20 66 39  39 39 39 78 39 39 39 39  |0.1 = f9999x9999|
000243b0  20 28 34 20 62 70 70 29  2c 20 30 20 3d 20 62 39  | (4 bpp), 0 = b9|
000243c0  39 39 39 78 39 39 39 39  20 28 31 20 62 70 70 29  |999x9999 (1 bpp)|
000243d0  0a 31 09 70 65 72 66 6f  72 6d 20 68 6f 72 69 7a  |.1.perform horiz|
000243e0  6f 6e 74 61 6c 20 73 75  62 70 69 78 65 6c 20 70  |ontal subpixel p|
000243f0  6f 73 69 74 69 6f 6e 69  6e 67 2e 0a 32 09 70 65  |ositioning..2.pe|
00024400  72 66 6f 72 6d 20 76 65  72 74 69 63 61 6c 20 73  |rform vertical s|
00024410  75 62 70 69 78 65 6c 20  70 6f 73 69 74 69 6f 6e  |ubpixel position|
00024420  69 6e 67 2e 0a 33 09 64  65 6c 65 74 65 20 6f 6c  |ing..3.delete ol|
00024430  64 20 66 69 6c 65 20 28  64 6f 20 6e 6f 74 20 72  |d file (do not r|
00024440  65 70 6c 61 63 65 29 0a  34 2d 33 31 09 30 20 28  |eplace).4-31.0 (|
00024450  72 65 73 65 72 76 65 64  29 00 00 00 44 41 54 41  |reserved)...DATA|
00024460  9d 01 00 00 46 6f 6e 74  5f 53 65 74 46 6f 6e 74  |....Font_SetFont|
00024470  4d 61 78 20 20 28 26 34  30 30 39 42 29 0a 23 50  |Max  (&4009B).#P|
00024480  61 72 65 6e 74 20 46 6f  6e 74 5f 0a 3d 3e 09 52  |arent Font_.=>.R|
00024490  30 20 3d 09 6e 65 77 20  46 6f 6e 74 4d 61 78 09  |0 =.new FontMax.|
000244a0  69 6e 20 62 79 74 65 73  0a 09 52 31 20 3d 09 6e  |in bytes..R1 =.n|
000244b0  65 77 20 46 6f 6e 74 4d  61 78 31 09 69 6e 20 70  |ew FontMax1.in p|
000244c0  6f 69 6e 74 73 0a 09 52  32 20 3d 09 6e 65 77 20  |oints..R2 =.new |
000244d0  46 6f 6e 74 4d 61 78 32  09 69 6e 20 70 6f 69 6e  |FontMax2.in poin|
000244e0  74 73 0a 09 52 33 20 3d  09 6e 65 77 20 46 6f 6e  |ts..R3 =.new Fon|
000244f0  74 4d 61 78 33 09 69 6e  20 70 6f 69 6e 74 73 0a  |tMax3.in points.|
00024500  09 52 34 20 3d 09 6e 65  77 20 46 6f 6e 74 4d 61  |.R4 =.new FontMa|
00024510  78 34 09 69 6e 20 70 6f  69 6e 74 73 0a 09 52 35  |x4.in points..R5|
00024520  20 3d 09 6e 65 77 20 46  6f 6e 74 4d 61 78 35 09  | =.new FontMax5.|
00024530  69 6e 20 70 6f 69 6e 74  73 0a 09 52 36 20 3d 09  |in points..R6 =.|
00024540  30 09 09 72 65 73 65 72  76 65 64 0a 09 52 37 20  |0..reserved..R7 |
00024550  3d 09 30 09 09 72 65 73  65 72 76 65 64 0a 0a 54  |=.0..reserved..T|
00024560  68 69 73 20 53 57 49 20  73 65 74 73 20 74 68 65  |his SWI sets the|
00024570  20 63 75 72 72 65 6e 74  20 46 6f 6e 74 4d 61 78  | current FontMax|
00024580  20 61 6e 64 20 46 6f 6e  74 4d 61 78 31 20 2d 20  | and FontMax1 - |
00024590  46 6f 6e 74 4d 61 78 35  20 28 62 75 74 20 6e 6f  |FontMax5 (but no|
000245a0  74 20 74 68 65 20 63 6f  6e 66 69 67 75 72 65 64  |t the configured|
000245b0  20 76 61 6c 75 65 73 29  2e a0 54 68 65 20 76 61  | values)..The va|
000245c0  6c 75 65 73 20 69 6e 20  52 31 2d 52 35 20 73 68  |lues in R1-R5 sh|
000245d0  6f 75 6c 64 20 62 65 20  69 6e 20 70 69 78 65 73  |ould be in pixes|
000245e0  20 2a 20 37 32 20 2a 20  31 36 20 66 6f 72 20 52  | * 72 * 16 for R|
000245f0  49 53 43 20 4f 53 20 32  2e 00 00 00 44 41 54 41  |ISC OS 2....DATA|
00024600  ce 02 00 00 46 6f 6e 74  20 74 68 72 65 73 68 6f  |....Font thresho|
00024610  6c 64 73 0a 46 6f 6e 74  20 74 68 72 65 73 68 6f  |lds.Font thresho|
00024620  6c 64 73 20 61 72 65 20  75 73 65 64 20 62 79 20  |lds are used by |
00024630  74 68 65 20 46 6f 6e 74  20 4d 61 6e 61 67 65 72  |the Font Manager|
00024640  20 74 6f 20 63 6f 6e 76  65 72 74 20 66 72 6f 6d  | to convert from|
00024650  20 74 68 65 20 31 36 20  61 6e 74 69 2d 61 6c 69  | the 16 anti-ali|
00024660  61 73 20 6c 65 76 65 6c  73 20 69 6e 20 74 68 65  |as levels in the|
00024670  20 66 6f 6e 74 20 64 65  66 69 6e 69 74 69 6f 6e  | font definition|
00024680  20 74 6f 20 74 68 65 20  6c 6f 67 69 63 61 6c 20  | to the logical |
00024690  63 6f 6c 6f 75 72 73 20  61 76 61 69 6c 61 62 6c  |colours availabl|
000246a0  65 2e 20 54 68 65 79 20  61 72 65 20 72 65 61 64  |e. They are read|
000246b0  20 61 6e 64 20 73 65 74  20 75 73 69 6e 67 20 61  | and set using a|
000246c0  20 74 61 62 6c 65 20 6f  66 20 74 68 65 20 66 6f  | table of the fo|
000246d0  72 6d 3a 0a 0a 4f 66 66  73 65 74 09 43 6f 6e 74  |rm:..Offset.Cont|
000246e0  65 6e 74 73 0a 23 4c 69  6e 65 0a 30 09 46 6f 72  |ents.#Line.0.For|
000246f0  65 67 72 6f 75 6e 64 20  63 6f 6c 6f 75 72 20 6f  |eground colour o|
00024700  66 66 73 65 74 0a 31 09  31 73 74 20 74 68 72 65  |ffset.1.1st thre|
00024710  73 68 6f 6c 64 20 76 61  6c 75 65 0a 32 09 32 6e  |shold value.2.2n|
00024720  64 0a 33 09 2e 2e 2e 0a  6e 09 26 46 46 0a 0a 46  |d.3.....n.&FF..F|
00024730  6f 72 20 65 78 61 6d 70  6c 65 20 69 6e 20 61 20  |or example in a |
00024740  31 36 20 63 6f 6c 6f 75  72 20 6d 6f 64 65 20 69  |16 colour mode i|
00024750  6e 20 74 68 65 20 57 69  6d 70 2c 20 62 61 63 6b  |n the Wimp, back|
00024760  67 72 6f 75 6e 64 20 69  73 20 30 2c 20 66 6f 72  |ground is 0, for|
00024770  65 67 72 6f 75 6e 64 20  69 73 20 31 2c 20 66 6f  |eground is 1, fo|
00024780  72 65 67 72 6f 75 6e 64  20 63 6f 6c 6f 75 72 20  |reground colour |
00024790  6f 66 66 73 65 74 20 69  73 20 36 2c 20 67 69 76  |offset is 6, giv|
000247a0  69 6e 67 20 74 68 65 20  74 61 62 6c 65 3a 0a 0a  |ing the table:..|
000247b0  30 09 36 0a 31 09 32 0a  32 09 34 0a 33 09 36 0a  |0.6.1.2.2.4.3.6.|
000247c0  34 09 38 0a 35 09 31 30  0a 36 09 31 32 0a 37 09  |4.8.5.10.6.12.7.|
000247d0  31 34 0a 38 09 26 46 46  0a 23 74 61 62 0a 54 68  |14.8.&FF.#tab.Th|
000247e0  69 73 20 63 61 75 73 65  73 20 74 68 65 20 6d 61  |is causes the ma|
000247f0  70 70 69 6e 67 20 66 72  6f 6d 20 74 68 65 20 31  |pping from the 1|
00024800  36 20 63 6f 6c 6f 75 72  73 20 74 68 65 20 66 6f  |6 colours the fo|
00024810  6e 74 20 69 73 20 64 65  66 69 6e 65 64 20 69 6e  |nt is defined in|
00024820  20 74 6f 20 74 68 65 20  38 20 61 76 61 69 6c 61  | to the 8 availa|
00024830  62 6c 65 3a 0a 0a 09 49  6e 09 4f 75 74 09 54 68  |ble:...In.Out.Th|
00024840  72 65 73 68 6f 6c 64 0a  09 20 20 30 09 30 0a 09  |reshold..  0.0..|
00024850  20 20 31 09 30 0a 09 20  20 32 09 31 09 20 20 32  |  1.0..  2.1.  2|
00024860  0a 09 20 20 33 09 31 0a  09 20 20 34 09 32 09 20  |..  3.1..  4.2. |
00024870  20 34 0a 09 20 20 35 09  32 0a 09 20 20 36 09 33  | 4..  5.2..  6.3|
00024880  09 20 20 36 0a 09 20 20  37 09 33 0a 09 20 20 38  |.  6..  7.3..  8|
00024890  09 34 09 20 20 38 0a 09  20 20 39 09 34 0a 09 31  |.4.  8..  9.4..1|
000248a0  30 09 35 09 31 30 0a 09  31 31 09 35 0a 09 31 32  |0.5.10..11.5..12|
000248b0  09 36 09 31 32 0a 09 31  33 09 36 0a 09 31 34 09  |.6.12..13.6..14.|
000248c0  37 09 31 34 0a 09 31 35  09 37 00 00 44 41 54 41  |7.14..15.7..DATA|
000248d0  f8 01 00 00 46 6f 6e 74  5f 4c 6f 6f 6b 75 70 46  |....Font_LookupF|
000248e0  6f 6e 74 20 20 28 26 34  30 30 41 38 29 0a 23 50  |ont  (&400A8).#P|
000248f0  61 72 65 6e 74 20 46 6f  6e 74 5f 0a 3d 3e 09 52  |arent Font_.=>.R|
00024900  30 20 3d 09 66 6f 6e 74  20 68 61 6e 64 6c 65 20  |0 =.font handle |
00024910  28 30 20 66 6f 72 20 63  75 72 72 65 6e 74 20 68  |(0 for current h|
00024920  61 6e 64 6c 65 29 0a 09  52 31 20 3d 09 30 0a 09  |andle)..R1 =.0..|
00024930  52 32 20 3d 09 30 0a 3c  3d 09 52 30 20 3d 09 70  |R2 =.0.<=.R0 =.p|
00024940  72 65 73 65 72 76 65 64  0a 09 52 31 20 3d 09 70  |reserved..R1 =.p|
00024950  72 65 73 65 72 76 65 64  0a 09 52 32 20 3d 09 63  |reserved..R2 =.c|
00024960  68 61 72 61 63 74 65 72  69 73 74 69 63 73 20 6f  |haracteristics o|
00024970  66 20 66 6f 6e 74 0a 09  52 33 20 3d 09 63 6f 72  |f font..R3 =.cor|
00024980  72 75 70 74 65 64 0a 09  52 34 20 3d 09 63 6f 72  |rupted..R4 =.cor|
00024990  72 75 70 74 65 64 0a 09  52 35 20 3d 09 63 6f 72  |rupted..R5 =.cor|
000249a0  72 75 70 74 65 64 0a 09  52 36 20 3d 09 63 6f 72  |rupted..R6 =.cor|
000249b0  72 75 70 74 65 64 0a 09  52 37 20 3d 09 63 6f 72  |rupted..R7 =.cor|
000249c0  72 75 70 74 65 64 0a 0a  54 68 69 73 20 53 57 49  |rupted..This SWI|
000249d0  20 72 65 74 75 72 6e 73  20 69 6e 66 6f 72 6d 61  | returns informa|
000249e0  74 69 6f 6e 20 61 62 6f  75 74 20 61 20 66 6f 6e  |tion about a fon|
000249f0  74 20 61 73 20 61 20 62  69 74 6d 61 70 20 69 6e  |t as a bitmap in|
00024a00  20 52 32 2e 0a 0a 23 74  61 62 0a 62 69 74 09 6d  | R2...#tab.bit.m|
00024a10  65 61 6e 69 6e 67 20 77  68 65 6e 20 73 65 74 0a  |eaning when set.|
00024a20  23 6c 69 6e 65 0a 30 09  66 6f 6e 74 20 69 73 20  |#line.0.font is |
00024a30  6f 6c 64 20 62 69 74 6d  61 70 20 66 6f 72 6d 61  |old bitmap forma|
00024a40  74 20 28 27 78 39 30 79  34 35 27 29 0a 31 09 66  |t ('x90y45').1.f|
00024a50  6f 6e 74 20 69 73 20 69  6e 20 52 4f 4d 0a 38 09  |ont is in ROM.8.|
00024a60  66 6f 6e 74 20 69 73 20  6d 6f 6e 6f 63 68 72 6f  |font is monochro|
00024a70  6d 65 20 6f 6e 6c 79 0a  39 09 66 6f 6e 74 20 69  |me only.9.font i|
00024a80  73 20 66 69 6c 6c 65 64  20 6e 6f 6e 2d 7a 65 72  |s filled non-zer|
00024a90  6f 20 28 72 61 74 68 65  72 20 74 68 61 6e 20 65  |o (rather than e|
00024aa0  76 65 6e 2d 6f 64 64 29  0a 32 2d 37 2c 31 30 2d  |ven-odd).2-7,10-|
00024ab0  33 31 09 69 67 6e 6f 72  65 20 28 72 65 73 65 72  |31.ignore (reser|
00024ac0  76 65 64 29 44 41 54 41  87 03 00 00 46 6f 6e 74  |ved)DATA....Font|
00024ad0  5f 53 77 69 74 63 68 4f  75 74 70 75 74 54 6f 42  |_SwitchOutputToB|
00024ae0  75 66 66 65 72 20 20 28  26 34 30 30 39 45 29 0a  |uffer  (&4009E).|
00024af0  23 50 61 72 65 6e 74 20  46 6f 6e 74 5f 0a 3d 3e  |#Parent Font_.=>|
00024b00  09 52 30 20 3d 09 3c 66  6c 61 67 73 3d 3e 2e 66  |.R0 =.<flags=>.f|
00024b10  6c 61 67 73 3e 20 69 66  20 52 31 20 3e 30 2c 20  |lags> if R1 >0, |
00024b20  65 6c 73 65 20 30 0a 09  52 31 20 3d 09 70 6f 69  |else 0..R1 =.poi|
00024b30  6e 74 65 72 20 74 6f 20  77 6f 72 64 20 61 6c 69  |nter to word ali|
00024b40  67 6e 65 64 20 62 75 66  66 65 72 20 6f 72 0a 09  |gned buffer or..|
00024b50  20 09 38 09 74 6f 20 63  6f 75 6e 74 20 62 75 66  | .8.to count buf|
00024b60  66 65 72 20 73 70 61 63  65 20 6e 65 65 64 65 64  |fer space needed|
00024b70  0a 09 20 09 30 09 74 6f  20 73 77 69 74 63 68 20  |.. .0.to switch |
00024b80  74 6f 20 6e 6f 72 6d 61  6c 20 6f 75 74 70 75 74  |to normal output|
00024b90  0a 09 20 09 2d 31 09 74  6f 20 72 65 61 64 20 73  |.. .-1.to read s|
00024ba0  74 61 74 65 0a 3c 3d 09  52 30 20 3d 09 70 72 65  |tate.<=.R0 =.pre|
00024bb0  76 69 6f 75 73 20 66 6c  61 67 73 0a 09 52 31 20  |vious flags..R1 |
00024bc0  3d 09 70 72 65 76 69 6f  75 73 20 62 75 66 66 65  |=.previous buffe|
00024bd0  72 20 70 6f 69 6e 74 65  72 20 2b 20 73 69 7a 65  |r pointer + size|
00024be0  20 6e 65 65 64 65 64 20  62 79 20 44 72 61 77 20  | needed by Draw |
00024bf0  66 69 6c 65 20 73 74 72  75 63 74 75 72 65 2e 0a  |file structure..|
00024c00  0a 54 68 69 73 20 53 57  49 20 61 6c 6c 6f 77 73  |.This SWI allows|
00024c10  20 63 61 6c 6c 73 20 74  6f 20 3c 46 6f 6e 74 5f  | calls to <Font_|
00024c20  50 61 69 6e 74 3e 20 74  6f 20 62 65 20 72 65 64  |Paint> to be red|
00024c30  69 72 65 63 74 65 64 20  74 6f 20 62 75 69 6c 64  |irected to build|
00024c40  20 3c 44 72 61 77 20 66  69 6c 65 3d 3e 44 72 61  | <Draw file=>Dra|
00024c50  77 46 69 6c 65 5f 66 6f  72 6d 61 74 3e 20 6f 62  |wFile_format> ob|
00024c60  6a 65 63 74 73 20 69 6e  20 74 68 65 20 73 75 70  |jects in the sup|
00024c70  70 6c 69 65 64 20 62 75  66 66 65 72 2e 20 52 31  |plied buffer. R1|
00024c80  20 72 65 74 75 72 6e 65  64 20 70 6f 69 6e 74 73  | returned points|
00024c90  20 61 74 20 74 68 65 20  30 20 74 65 72 6d 69 6e  | at the 0 termin|
00024ca0  61 74 6f 72 20 28 69 74  20 61 6e 64 20 74 68 65  |ator (it and the|
00024cb0  20 6e 65 77 20 73 69 7a  65 20 72 65 6d 61 69 6e  | new size remain|
00024cc0  69 6e 67 20 61 72 65 20  6e 6f 74 20 63 6f 75 6e  |ing are not coun|
00024cd0  74 65 64 20 69 6e 20 74  68 65 20 64 61 74 61 20  |ted in the data |
00024ce0  67 65 6e 65 72 61 74 65  64 29 2e 20 45 61 63 68  |generated). Each|
00024cf0  20 6c 65 74 74 65 72 20  69 73 20 63 6f 6e 76 65  | letter is conve|
00024d00  72 74 65 64 20 74 6f 20  61 20 66 69 6c 6c 65 64  |rted to a filled|
00024d10  20 70 61 74 68 20 6f 62  6a 65 63 74 2c 20 61 73  | path object, as|
00024d20  20 61 72 65 20 72 75 62  6f 75 74 20 62 6f 78 28  | are rubout box(|
00024d30  65 73 29 20 61 6e 64 20  75 6e 64 65 72 6c 69 6e  |es) and underlin|
00024d40  69 6e 67 2e 20 42 65 66  6f 72 65 20 63 61 6c 6c  |ing. Before call|
00024d50  69 6e 67 20 74 68 65 20  62 75 66 66 65 72 20 73  |ing the buffer s|
00024d60  68 6f 75 6c 64 20 62 65  0a 0a 4f 66 66 73 65 74  |hould be..Offset|
00024d70  09 43 6f 6e 74 65 6e 74  73 0a 23 4c 69 6e 65 0a  |.Contents.#Line.|
00024d80  30 09 30 0a 34 09 73 69  7a 65 20 72 65 6d 61 69  |0.0.4.size remai|
00024d90  6e 69 6e 67 20 28 62 79  74 65 73 29 0a 23 53 75  |ning (bytes).#Su|
00024da0  62 70 61 67 65 20 66 6c  61 67 73 0a 4d 65 61 6e  |bpage flags.Mean|
00024db0  69 6e 67 20 6f 66 20 62  69 74 73 20 69 6e 20 52  |ing of bits in R|
00024dc0  30 20 77 68 65 6e 20 73  65 74 0a 30 09 55 70 64  |0 when set.0.Upd|
00024dd0  61 74 65 20 52 31 20 62  75 74 20 64 6f 6e 27 74  |ate R1 but don't|
00024de0  20 61 63 74 75 61 6c 6c  79 20 73 74 6f 72 65 20  | actually store |
00024df0  61 6e 79 74 68 69 6e 67  0a 31 09 41 70 70 6c 79  |anything.1.Apply|
00024e00  20 68 69 6e 74 73 0a 34  09 47 65 6e 65 72 61 74  | hints.4.Generat|
00024e10  65 20 65 72 72 6f 72 20  69 66 20 62 69 74 6d 61  |e error if bitma|
00024e20  70 70 65 64 20 63 68 61  72 61 63 74 65 72 73 20  |pped characters |
00024e30  66 6f 75 6e 64 0a 32 2c  33 2c 35 2d 33 31 09 30  |found.2,3,5-31.0|
00024e40  20 28 72 65 73 65 72 76  65 64 29 00 44 41 54 41  | (reserved).DATA|
00024e50  47 03 00 00 46 6f 6e 74  5f 50 61 69 6e 74 20 46  |G...Font_Paint F|
00024e60  6c 61 67 73 0a 23 50 61  72 65 6e 74 20 46 6f 6e  |lags.#Parent Fon|
00024e70  74 5f 50 61 69 6e 74 0a  62 69 74 09 6d 65 61 6e  |t_Paint.bit.mean|
00024e80  69 6e 67 0a 23 4c 69 6e  65 0a 30 09 31 20 3d 20  |ing.#Line.0.1 = |
00024e90  6a 75 73 74 69 66 79 20  73 70 65 63 69 66 65 64  |justify specifed|
00024ea0  20 62 79 20 67 72 61 70  68 69 63 73 20 63 75 72  | by graphics cur|
00024eb0  73 6f 72 2c 20 30 20 3d  20 6e 6f 74 20 6a 75 73  |sor, 0 = not jus|
00024ec0  74 69 66 69 65 64 0a 31  09 31 20 3d 20 72 75 62  |tified.1.1 = rub|
00024ed0  2d 6f 75 74 20 62 6f 78  20 73 70 65 63 69 66 65  |-out box specife|
00024ee0  64 20 62 79 20 67 72 61  70 68 69 63 73 20 63 75  |d by graphics cu|
00024ef0  72 73 6f 2c 20 30 20 3d  20 64 6f 6e 27 74 20 72  |rso, 0 = don't r|
00024f00  75 62 2d 6f 75 74 0a 34  09 31 20 3d 20 78 20 61  |ub-out.4.1 = x a|
00024f10  6e 64 20 79 20 61 72 65  20 69 6e 20 4f 53 2c 20  |nd y are in OS, |
00024f20  30 20 3d 20 6d 69 6c 6c  69 70 6f 69 6e 74 73 0a  |0 = millipoints.|
00024f30  35 09 6a 75 73 74 69 66  79 20 26 20 72 75 62 2d  |5.justify & rub-|
00024f40  6f 75 74 20 73 70 65 63  69 66 65 64 20 62 79 20  |out specifed by |
00024f50  62 6c 6f 63 6b 20 69 6e  20 52 35 20 28 62 69 74  |block in R5 (bit|
00024f60  20 34 20 6d 75 73 74 20  62 65 20 63 6c 65 61 72  | 4 must be clear|
00024f70  29 2c 20 30 20 3d 20 75  73 65 20 66 6c 61 67 73  |), 0 = use flags|
00024f80  20 69 6e 20 62 69 74 73  20 30 2c 31 0a 36 09 3c  | in bits 0,1.6.<|
00024f90  54 72 61 6e 73 66 6f 72  6d 61 74 69 6f 6e 20 6d  |Transformation m|
00024fa0  61 74 72 69 78 3d 3e 46  6f 6e 74 5f 6d 61 74 72  |atrix=>Font_matr|
00024fb0  69 78 3e 20 73 70 65 63  69 66 65 64 20 62 79 20  |ix> specifed by |
00024fc0  52 36 20 28 62 69 74 20  34 20 6d 75 73 74 20 62  |R6 (bit 4 must b|
00024fd0  65 20 63 6c 65 61 72 29  0a 37 09 47 69 76 65 6e  |e clear).7.Given|
00024fe0  20 73 74 72 69 6e 67 20  6c 65 6e 67 74 68 0a 38  | string length.8|
00024ff0  09 47 69 76 65 6e 20 66  6f 6e 74 0a 39 09 4b 65  |.Given font.9.Ke|
00025000  72 6e 0a 31 30 09 52 69  67 68 74 20 74 6f 20 6c  |rn.10.Right to l|
00025010  65 66 74 0a 31 37 09 52  65 74 75 72 6e 20 63 61  |eft.17.Return ca|
00025020  72 65 74 20 70 6f 73 69  74 69 6f 6e 0a 31 38 09  |ret position.18.|
00025030  52 65 74 75 72 6e 20 62  6f 75 6e 64 69 6e 67 20  |Return bounding |
00025040  62 6f 78 0a 31 39 09 52  65 74 75 72 6e 20 6d 61  |box.19.Return ma|
00025050  74 72 69 78 0a 32 30 09  52 65 74 75 72 6e 20 73  |trix.20.Return s|
00025060  70 6c 69 74 20 63 6f 75  6e 74 0a 4f 74 68 65 72  |plit count.Other|
00025070  73 09 52 65 73 65 72 76  65 64 2c 20 6d 75 73 74  |s.Reserved, must|
00025080  20 62 65 20 7a 65 72 6f  0a 0a 52 49 53 43 20 4f  | be zero..RISC O|
00025090  53 20 32 20 6f 6e 6c 79  20 72 65 63 6f 67 6e 69  |S 2 only recogni|
000250a0  73 65 73 20 66 6c 61 67  73 20 69 6e 20 62 69 74  |ses flags in bit|
000250b0  73 20 30 2c 31 2c 34 0a  0a 54 6f 20 73 70 65 63  |s 0,1,4..To spec|
000250c0  69 66 79 20 6a 75 73 74  69 66 79 20 75 73 69 6e  |ify justify usin|
000250d0  67 20 74 68 65 20 67 72  61 70 68 69 63 73 20 63  |g the graphics c|
000250e0  75 72 73 6f 72 2c 20 66  69 72 73 74 20 6d 6f 76  |ursor, first mov|
000250f0  65 20 74 6f 20 72 69 67  68 74 20 73 69 64 65 2e  |e to right side.|
00025100  20 54 6f 20 73 70 65 63  69 66 79 20 61 20 72 75  | To specify a ru|
00025110  62 2d 6f 75 74 20 62 6f  78 20 75 73 69 6e 67 20  |b-out box using |
00025120  74 68 65 20 67 72 61 70  68 69 63 73 20 63 75 72  |the graphics cur|
00025130  73 6f 72 2c 20 66 69 72  73 74 20 6d 6f 76 65 20  |sor, first move |
00025140  74 6f 20 6c 6f 77 65 72  20 6c 65 66 74 20 61 6e  |to lower left an|
00025150  64 20 74 68 65 6e 20 74  6f 20 75 70 70 65 72 20  |d then to upper |
00025160  72 69 67 68 74 20 6f 66  20 62 6f 78 2e 0a 0a 49  |right of box...I|
00025170  66 20 62 6f 74 68 2c 20  74 68 65 6e 20 64 6f 20  |f both, then do |
00025180  6a 75 73 74 69 66 79 20  6d 6f 76 65 20 6c 61 73  |justify move las|
00025190  74 2e 0a 00 44 49 52 24  08 01 00 00 08 01 00 00  |t...DIR$........|
000251a0  9c 52 02 00 48 fd ff ff  bc db 28 0c 6c 00 00 00  |.R..H.....(.l...|
000251b0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000251c0  08 53 02 00 47 ff ff ff  6b 99 a9 cd dc 00 00 00  |.S..G...k.......|
000251d0  13 00 00 00 00 00 00 00  4c 45 44 73 00 00 00 00  |........LEDs....|
000251e0  e4 53 02 00 47 ff ff ff  99 a7 b6 cd ee 00 00 00  |.S..G...........|
000251f0  13 00 00 00 00 00 00 00  4f 66 66 00 d4 54 02 00  |........Off..T..|
00025200  47 ff ff ff 38 e2 7b c2  c6 00 00 00 13 00 00 00  |G...8.{.........|
00025210  00 00 00 00 4f 6e 00 00  9c 55 02 00 47 ff ff ff  |....On...U..G...|
00025220  59 19 b9 cd ca 00 00 00  13 00 00 00 00 00 00 00  |Y...............|
00025230  50 65 72 63 65 6e 74 61  67 65 00 00 68 56 02 00  |Percentage..hV..|
00025240  47 ff ff ff 1e a9 b6 cd  93 00 00 00 13 00 00 00  |G...............|
00025250  00 00 00 00 53 6d 61 73  68 00 00 00 fc 56 02 00  |....Smash....V..|
00025260  47 ff ff ff 06 1c b9 cd  0c 01 00 00 13 00 00 00  |G...............|
00025270  00 00 00 00 53 74 61 72  74 00 00 00 08 58 02 00  |....Start....X..|
00025280  48 ff ff ff 25 04 f8 0c  a6 01 00 00 13 00 00 00  |H...%...........|
00025290  00 00 00 00 43 6f 6c 6f  75 72 73 00 44 41 54 41  |....Colours.DATA|
000252a0  6c 00 00 00 48 6f 75 72  67 6c 61 73 73 0a 23 50  |l...Hourglass.#P|
000252b0  61 72 65 6e 74 20 21 52  6f 6f 74 0a 23 50 72 65  |arent !Root.#Pre|
000252c0  66 69 78 20 48 6f 75 72  67 6c 61 73 73 5f 0a 3c  |fix Hourglass_.<|
000252d0  43 6f 6c 6f 75 72 73 3e  0a 3c 4c 45 44 73 3e 0a  |Colours>.<LEDs>.|
000252e0  3c 4f 66 66 3e 0a 3c 4f  6e 3e 0a 3c 50 65 72 63  |<Off>.<On>.<Perc|
000252f0  65 6e 74 61 67 65 3e 0a  3c 53 6d 61 73 68 3e 0a  |entage>.<Smash>.|
00025300  3c 53 74 61 72 74 3e 0a  44 41 54 41 dc 00 00 00  |<Start>.DATA....|
00025310  48 6f 75 72 67 6c 61 73  73 5f 4c 45 44 73 20 20  |Hourglass_LEDs  |
00025320  28 26 34 30 36 43 35 29  0a 23 50 61 72 65 6e 74  |(&406C5).#Parent|
00025330  20 48 6f 75 72 67 6c 61  73 73 5f 0a 3d 3e 09 52  | Hourglass_.=>.R|
00025340  30 20 3d 09 45 4f 52 20  77 6f 72 64 0a 09 52 31  |0 =.EOR word..R1|
00025350  20 3d 09 41 4e 44 20 77  6f 72 64 0a 3c 3d 09 52  | =.AND word.<=.R|
00025360  30 20 3d 09 6f 6c 64 20  4c 45 44 20 77 6f 72 64  |0 =.old LED word|
00025370  0a 0a 54 68 69 73 20 53  57 49 20 63 6f 6e 74 72  |..This SWI contr|
00025380  6f 6c 73 20 74 68 65 20  61 70 70 65 61 72 61 6e  |ols the appearan|
00025390  63 65 20 6f 66 20 74 77  6f 20 4c 45 44 73 2e 20  |ce of two LEDs. |
000253a0  42 69 74 20 30 20 63 6f  6e 74 72 6f 6c 73 20 74  |Bit 0 controls t|
000253b0  68 65 20 4c 45 44 20 61  62 6f 76 65 20 74 68 65  |he LED above the|
000253c0  20 68 6f 75 72 67 6c 61  73 73 2c 20 61 6e 64 20  | hourglass, and |
000253d0  62 69 74 20 31 20 74 68  65 20 6f 6e 65 20 62 65  |bit 1 the one be|
000253e0  6c 6f 77 2e 44 41 54 41  ee 00 00 00 48 6f 75 72  |low.DATA....Hour|
000253f0  67 6c 61 73 73 5f 4f 66  66 20 20 28 26 34 30 36  |glass_Off  (&406|
00025400  43 31 29 0a 23 50 61 72  65 6e 74 20 48 6f 75 72  |C1).#Parent Hour|
00025410  67 6c 61 73 73 5f 0a 54  68 69 73 20 64 65 63 72  |glass_.This decr|
00025420  65 61 73 65 73 20 74 68  65 20 63 6f 75 6e 74 20  |eases the count |
00025430  6f 66 20 74 69 6d 65 73  20 74 68 65 20 68 6f 75  |of times the hou|
00025440  72 67 6c 61 73 73 20 68  61 73 20 62 65 65 6e 20  |rglass has been |
00025450  74 75 72 6e 65 64 20 6f  6e 20 77 69 74 68 20 3c  |turned on with <|
00025460  48 6f 75 72 67 6c 61 73  73 5f 4f 6e 3e 20 6f 72  |Hourglass_On> or|
00025470  20 3c 48 6f 75 72 67 6c  61 73 73 5f 53 74 61 72  | <Hourglass_Star|
00025480  74 3e 2c 20 61 6e 64 20  74 75 72 6e 73 20 69 74  |t>, and turns it|
00025490  20 6f 66 66 20 77 68 65  6e 20 69 74 20 72 65 61  | off when it rea|
000254a0  63 68 65 73 20 7a 65 72  6f 2e 20 54 6f 20 66 6f  |ches zero. To fo|
000254b0  72 63 65 20 69 74 20 6f  66 66 2c 20 75 73 65 20  |rce it off, use |
000254c0  3c 48 6f 75 72 67 6c 61  73 73 5f 53 6d 61 73 68  |<Hourglass_Smash|
000254d0  3e 2e 00 00 44 41 54 41  c6 00 00 00 48 6f 75 72  |>...DATA....Hour|
000254e0  67 6c 61 73 73 5f 4f 6e  20 20 28 26 34 30 36 43  |glass_On  (&406C|
000254f0  30 29 0a 23 50 61 72 65  6e 74 20 48 6f 75 72 67  |0).#Parent Hourg|
00025500  6c 61 73 73 5f 0a 54 68  69 73 20 73 68 65 64 75  |lass_.This shedu|
00025510  6c 65 73 20 74 68 65 20  68 6f 75 72 67 6c 61 73  |les the hourglas|
00025520  73 20 74 6f 20 61 70 70  65 61 72 20 61 66 74 65  |s to appear afte|
00025530  72 20 31 2f 33 20 73 65  63 6f 6e 64 2e 20 54 6f  |r 1/3 second. To|
00025540  20 74 75 72 6e 20 6f 66  66 20 61 67 61 69 6e 2c  | turn off again,|
00025550  20 75 73 65 20 3c 48 6f  75 72 67 6c 61 73 73 5f  | use <Hourglass_|
00025560  4f 66 66 3e 2e 20 54 6f  20 64 65 63 69 64 65 20  |Off>. To decide |
00025570  74 68 65 20 64 65 6c 61  79 20 79 6f 75 72 73 65  |the delay yourse|
00025580  6c 66 2c 20 75 73 65 20  3c 48 6f 75 72 67 6c 61  |lf, use <Hourgla|
00025590  73 73 5f 53 74 61 72 74  3e 2e 00 00 44 41 54 41  |ss_Start>...DATA|
000255a0  ca 00 00 00 48 6f 75 72  67 6c 61 73 73 5f 50 65  |....Hourglass_Pe|
000255b0  72 63 65 6e 74 61 67 65  20 20 28 26 34 30 36 43  |rcentage  (&406C|
000255c0  34 29 0a 23 50 61 72 65  6e 74 20 48 6f 75 72 67  |4).#Parent Hourg|
000255d0  6c 61 73 73 5f 0a 3d 3e  09 52 30 20 3d 09 70 65  |lass_.=>.R0 =.pe|
000255e0  72 63 65 6e 74 61 67 65  0a 0a 54 68 69 73 20 53  |rcentage..This S|
000255f0  57 49 20 64 69 73 70 6c  61 79 73 20 61 20 70 65  |WI displays a pe|
00025600  72 63 65 6e 74 61 67 65  20 62 65 6c 6f 77 20 74  |rcentage below t|
00025610  68 65 20 68 6f 75 72 67  6c 61 73 73 20 69 66 20  |he hourglass if |
00025620  52 30 20 69 73 20 69 6e  20 74 68 65 20 72 61 6e  |R0 is in the ran|
00025630  67 65 20 30 20 74 6f 20  39 39 2c 20 6f 74 68 65  |ge 0 to 99, othe|
00025640  72 77 69 73 65 20 69 74  20 74 75 72 6e 73 20 70  |rwise it turns p|
00025650  65 72 63 65 6e 74 61 67  65 20 64 69 73 70 6c 61  |ercentage displa|
00025660  79 20 6f 66 66 2e 00 00  44 41 54 41 93 00 00 00  |y off...DATA....|
00025670  48 6f 75 72 67 6c 61 73  73 5f 53 6d 61 73 68 20  |Hourglass_Smash |
00025680  20 28 26 34 30 36 43 32  29 0a 23 50 61 72 65 6e  | (&406C2).#Paren|
00025690  74 20 48 6f 75 72 67 6c  61 73 73 5f 0a 54 68 69  |t Hourglass_.Thi|
000256a0  73 20 53 57 49 20 74 75  72 6e 73 20 74 68 65 20  |s SWI turns the |
000256b0  68 6f 75 72 67 6c 61 73  73 20 6f 66 66 20 69 6d  |hourglass off im|
000256c0  6d 65 64 69 61 74 65 6c  79 2e 20 4e 6f 72 6d 61  |mediately. Norma|
000256d0  6c 6c 79 20 79 6f 75 20  73 68 6f 75 6c 64 20 75  |lly you should u|
000256e0  73 65 20 3c 48 6f 75 72  67 6c 61 73 73 5f 4f 66  |se <Hourglass_Of|
000256f0  66 3e 20 69 6e 73 74 65  61 64 2e 00 44 41 54 41  |f> instead..DATA|
00025700  0c 01 00 00 48 6f 75 72  67 6c 61 73 73 5f 53 74  |....Hourglass_St|
00025710  61 72 74 20 20 28 26 34  30 36 43 33 29 0a 23 50  |art  (&406C3).#P|
00025720  61 72 65 6e 74 20 48 6f  75 72 67 6c 61 73 73 5f  |arent Hourglass_|
00025730  0a 3d 3e 09 52 30 20 3d  09 63 65 6e 74 69 2d 73  |.=>.R0 =.centi-s|
00025740  65 63 6f 6e 64 73 20 62  65 66 6f 72 65 20 73 74  |econds before st|
00025750  61 72 74 75 70 0a 0a 54  68 69 73 20 53 57 49 20  |artup..This SWI |
00025760  73 68 65 64 75 6c 65 73  20 74 68 65 20 68 6f 75  |shedules the hou|
00025770  72 67 6c 61 73 73 20 74  6f 20 61 70 70 65 61 72  |rglass to appear|
00025780  20 61 66 74 65 72 20 74  68 65 20 67 69 76 65 6e  | after the given|
00025790  20 64 65 6c 61 79 2e 20  54 6f 20 74 75 72 6e 20  | delay. To turn |
000257a0  6f 66 66 20 61 67 61 69  6e 2c 20 75 73 65 20 3c  |off again, use <|
000257b0  48 6f 75 72 67 6c 61 73  73 5f 4f 66 66 3e 2e 20  |Hourglass_Off>. |
000257c0  41 20 64 65 6c 61 79 20  6f 66 20 30 20 77 69 6c  |A delay of 0 wil|
000257d0  6c 20 73 75 70 70 72 65  73 73 20 74 68 65 20 68  |l suppress the h|
000257e0  6f 75 72 67 6c 61 73 73  20 75 6e 74 69 6c 20 79  |ourglass until y|
000257f0  6f 75 20 63 61 6c 6c 20  3c 48 6f 75 72 67 6c 61  |ou call <Hourgla|
00025800  73 73 5f 4f 66 66 3e 2e  44 41 54 41 a6 01 00 00  |ss_Off>.DATA....|
00025810  48 6f 75 72 67 6c 61 73  73 5f 43 6f 6c 6f 75 72  |Hourglass_Colour|
00025820  73 20 20 28 26 34 30 36  43 36 29 0a 23 50 61 72  |s  (&406C6).#Par|
00025830  65 6e 74 20 48 6f 75 72  67 6c 61 73 73 5f 0a 3d  |ent Hourglass_.=|
00025840  3e 09 52 30 20 3d 09 6e  65 77 20 63 6f 6c 6f 75  |>.R0 =.new colou|
00025850  72 20 31 0a 09 52 31 20  3d 09 6e 65 77 20 63 6f  |r 1..R1 =.new co|
00025860  6c 6f 75 72 20 33 0a 3c  3d 09 52 30 20 3d 09 6f  |lour 3.<=.R0 =.o|
00025870  6c 64 2f 63 75 72 72 65  6e 74 20 63 6f 6c 6f 75  |ld/current colou|
00025880  72 20 31 0a 09 52 31 20  3d 09 6f 6c 64 2f 63 75  |r 1..R1 =.old/cu|
00025890  72 72 65 6e 74 20 63 6f  6c 6f 75 72 20 33 0a 0a  |rrent colour 3..|
000258a0  54 68 69 73 20 53 57 49  20 73 65 74 73 20 6f 72  |This SWI sets or|
000258b0  20 72 65 61 64 73 20 74  68 65 20 63 6f 6c 6f 75  | reads the colou|
000258c0  72 73 20 6f 66 20 74 68  65 20 68 6f 75 72 67 6c  |rs of the hourgl|
000258d0  61 73 73 2e 20 54 6f 20  72 65 61 64 20 74 68 65  |ass. To read the|
000258e0  20 65 78 69 73 74 69 6e  67 20 76 61 6c 75 65 20  | existing value |
000258f0  77 69 74 68 6f 75 74 20  63 68 61 6e 67 69 6e 67  |without changing|
00025900  20 69 74 2c 20 73 70 65  63 69 66 79 20 74 68 65  | it, specify the|
00025910  20 63 6f 6c 6f 75 72 20  61 73 20 2d 31 2e 20 54  | colour as -1. T|
00025920  6f 20 63 68 61 6e 67 65  20 74 68 65 20 63 6f 6c  |o change the col|
00025930  6f 75 72 2c 20 73 70 65  63 69 66 79 20 69 74 20  |our, specify it |
00025940  61 73 20 26 30 30 42 42  47 47 52 52 20 28 69 74  |as &00BBGGRR (it|
00025950  27 73 20 2a 64 69 66 66  65 72 65 6e 74 2a 20 74  |'s *different* t|
00025960  6f 20 74 68 65 20 43 6f  6c 6f 75 72 54 72 61 6e  |o the ColourTran|
00025970  73 20 70 61 6c 65 74 74  65 20 65 6e 74 72 69 65  |s palette entrie|
00025980  73 29 2e 0a 0a 43 6f 6c  6f 75 72 20 31 20 64 65  |s)...Colour 1 de|
00025990  66 61 75 6c 74 20 69 73  20 63 79 61 6e 2c 20 63  |fault is cyan, c|
000259a0  6f 6c 6f 75 72 20 33 20  62 6c 75 65 2e 0a 00 00  |olour 3 blue....|
000259b0  44 49 52 24 4c 00 00 00  4c 00 00 00 fc 59 02 00  |DIR$L...L....Y..|
000259c0  48 fd ff ff 44 bb 1a 0b  30 00 00 00 13 00 00 00  |H...D...0.......|
000259d0  00 00 00 00 21 52 6f 6f  74 00 00 00 2c 5a 02 00  |....!Root...,Z..|
000259e0  48 ff ff ff 00 08 29 0c  e7 00 00 00 13 00 00 00  |H.....).........|
000259f0  00 00 00 00 43 6f 6e 74  72 6f 6c 00 44 41 54 41  |....Control.DATA|
00025a00  30 00 00 00 49 49 43 0a  23 50 61 72 65 6e 74 20  |0...IIC.#Parent |
00025a10  21 52 6f 6f 74 0a 23 50  72 65 66 69 78 20 49 49  |!Root.#Prefix II|
00025a20  43 5f 0a 3c 43 6f 6e 74  72 6f 6c 3e 44 41 54 41  |C_.<Control>DATA|
00025a30  e7 00 00 00 49 49 43 5f  43 6f 6e 74 72 6f 6c 20  |....IIC_Control |
00025a40  20 28 26 32 34 30 29 0a  23 50 61 72 65 6e 74 20  | (&240).#Parent |
00025a50  49 49 43 5f 0a 3d 3e 09  52 30 20 3d 09 64 65 76  |IIC_.=>.R0 =.dev|
00025a60  69 63 65 20 61 64 64 72  65 73 73 2c 20 28 62 69  |ice address, (bi|
00025a70  74 20 30 20 73 65 74 20  74 6f 20 72 65 61 64 2c  |t 0 set to read,|
00025a80  20 63 6c 65 61 72 20 74  6f 20 77 72 69 74 65 29  | clear to write)|
00025a90  0a 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
00025aa0  6f 20 62 6c 6f 63 6b 0a  09 52 32 20 3d 09 73 69  |o block..R2 =.si|
00025ab0  7a 65 20 6f 66 20 62 6c  6f 63 6b 20 28 62 79 74  |ze of block (byt|
00025ac0  65 73 29 0a 0a 52 65 61  64 73 20 66 72 6f 6d 20  |es)..Reads from |
00025ad0  6f 72 20 77 72 69 74 65  73 20 74 6f 20 74 68 65  |or writes to the|
00025ae0  20 73 70 65 63 69 66 69  65 64 20 49 49 43 20 64  | specified IIC d|
00025af0  65 76 69 63 65 20 28 7b  2f 7d 65 2e 67 2e 7b 2f  |evice ({/}e.g.{/|
00025b00  7d 20 74 68 65 20 63 6c  6f 63 6b 20 63 68 69 70  |} the clock chip|
00025b10  29 2e 0a 00 44 49 52 24  2c 00 00 00 2c 00 00 00  |)...DIR$,...,...|
00025b20  40 5b 02 00 47 fd ff ff  a4 0d 84 82 50 00 00 00  |@[..G.......P...|
00025b30  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00025b40  44 41 54 41 50 00 00 00  46 53 4c 6f 63 6b 0a 23  |DATAP...FSLock.#|
00025b50  50 61 72 65 6e 74 20 21  52 6f 6f 74 0a 23 50 72  |Parent !Root.#Pr|
00025b60  65 66 69 78 20 46 53 4c  6f 63 6b 5f 0a 23 54 61  |efix FSLock_.#Ta|
00025b70  62 6c 65 20 43 6f 6c 75  6d 6e 73 20 32 0a 56 65  |ble Columns 2.Ve|
00025b80  72 73 69 6f 6e 0a 23 45  6e 64 54 61 62 6c 65 0a  |rsion.#EndTable.|
00025b90  44 49 52 24 d8 01 00 00  d8 01 00 00 68 5d 02 00  |DIR$........h]..|
00025ba0  48 fd ff ff b0 ad c4 0f  84 01 00 00 13 00 00 00  |H...............|
00025bb0  00 00 00 00 69 64 65 6e  74 00 00 00 ec 5e 02 00  |....ident....^..|
00025bc0  48 fd ff ff 20 bc ce 22  22 03 00 00 13 00 00 00  |H... .."".......|
00025bd0  00 00 00 00 69 6e 66 6f  77 6f 72 64 00 00 00 00  |....infoword....|
00025be0  10 62 02 00 48 fd ff ff  ac 30 e7 27 12 02 00 00  |.b..H....0.'....|
00025bf0  13 00 00 00 00 00 00 00  6c 6f 61 64 65 78 65 63  |........loadexec|
00025c00  00 00 00 00 24 64 02 00  48 fd ff ff 06 f8 d9 1b  |....$d..H.......|
00025c10  63 02 00 00 13 00 00 00  00 00 00 00 6f 62 6a 61  |c...........obja|
00025c20  74 74 72 00 88 66 02 00  48 fd ff ff 56 55 aa 20  |ttr..f..H...VU. |
00025c30  0d 02 00 00 13 00 00 00  00 00 00 00 6f 62 6a 74  |............objt|
00025c40  79 70 65 00 98 68 02 00  47 fd ff ff 5f f8 41 20  |ype..h..G..._.A |
00025c50  8a 02 00 00 13 00 00 00  00 00 00 00 69 6d 61 67  |............imag|
00025c60  65 5f 69 6e 66 6f 62 6c  6f 63 6b 00 24 6b 02 00  |e_infoblock.$k..|
00025c70  47 fd ff ff 3c b5 3d 20  79 00 00 00 13 00 00 00  |G...<.= y.......|
00025c80  00 00 00 00 69 6d 61 67  65 5f 69 6e 66 6f 77 6f  |....image_infowo|
00025c90  72 64 00 00 a0 6b 02 00  48 fd ff ff bb 76 cc 22  |rd...k..H....v."|
00025ca0  14 03 00 00 03 00 00 00  00 00 00 00 69 6e 66 6f  |............info|
00025cb0  62 6c 6f 63 6b 00 00 00  b4 6e 02 00 47 fd ff ff  |block....n..G...|
00025cc0  d9 57 35 cd cb 00 00 00  03 00 00 00 00 00 00 00  |.W5.............|
00025cd0  65 78 74 72 61 5f 69 6e  66 6f 77 6f 72 64 00 00  |extra_infoword..|
00025ce0  80 6f 02 00 48 fd ff ff  16 28 65 26 6e 01 00 00  |.o..H....(e&n...|
00025cf0  13 00 00 00 00 00 00 00  6f 70 74 73 00 00 00 00  |........opts....|
00025d00  f0 70 02 00 48 fd ff ff  a7 03 80 20 08 01 00 00  |.p..H...... ....|
00025d10  13 00 00 00 00 00 00 00  6f 70 74 34 00 00 00 00  |........opt4....|
00025d20  f8 71 02 00 48 fd ff ff  0a 22 65 26 1d 01 00 00  |.q..H...."e&....|
00025d30  13 00 00 00 00 00 00 00  6f 70 74 31 00 00 00 00  |........opt1....|
00025d40  18 73 02 00 48 fd ff ff  99 4d 69 26 9c 01 00 00  |.s..H....Mi&....|
00025d50  13 00 00 00 00 00 00 00  61 63 63 65 73 73 5f 73  |........access_s|
00025d60  74 72 69 6e 67 00 00 00  44 41 54 41 84 01 00 00  |tring...DATA....|
00025d70  46 69 6c 69 6e 67 20 53  79 73 74 65 6d 20 6e 75  |Filing System nu|
00025d80  6d 62 65 72 73 0a 23 54  61 62 6c 65 20 43 6f 6c  |mbers.#Table Col|
00025d90  75 6d 6e 73 20 32 0a 30  20 20 20 4e 6f 6e 65 0a  |umns 2.0   None.|
00025da0  33 20 20 20 52 4f 4d 46  53 0a 35 20 20 20 4e 65  |3   ROMFS.5   Ne|
00025db0  74 46 53 0a 38 20 20 20  41 44 46 53 0a 31 32 20  |tFS.8   ADFS.12 |
00025dc0  20 4e 65 74 50 72 69 6e  74 0a 31 33 20 20 4e 75  | NetPrint.13  Nu|
00025dd0  6c 6c 0a 31 34 20 20 50  72 69 6e 74 65 72 0a 31  |ll.14  Printer.1|
00025de0  35 20 20 53 65 72 69 61  6c 0a 31 37 20 20 56 44  |5  Serial.17  VD|
00025df0  55 0a 31 38 20 20 52 61  77 56 44 55 0a 31 39 20  |U.18  RawVDU.19 |
00025e00  20 4b 62 64 0a 32 30 20  20 52 61 77 4b 62 64 0a  | Kbd.20  RawKbd.|
00025e10  32 31 20 20 44 65 73 6b  46 53 0a 32 32 20 20 43  |21  DeskFS.22  C|
00025e20  2e 43 2e 20 52 6f 6d 46  53 0a 32 33 20 20 52 61  |.C. RomFS.23  Ra|
00025e30  6d 46 53 0a 32 34 20 20  52 49 53 43 69 58 46 53  |mFS.24  RISCiXFS|
00025e40  0a 32 35 20 20 53 74 72  65 61 6d 65 72 0a 32 36  |.25  Streamer.26|
00025e50  20 20 53 43 53 49 0a 32  37 20 20 44 69 67 69 74  |  SCSI.27  Digit|
00025e60  69 73 65 72 0a 32 38 20  20 53 63 61 6e 6e 65 72  |iser.28  Scanner|
00025e70  0a 32 39 20 20 4d 75 6c  74 69 46 53 0a 33 33 20  |.29  MultiFS.33 |
00025e80  20 4e 46 53 0a 33 37 20  20 43 44 46 53 0a 34 33  | NFS.37  CDFS.43|
00025e90  20 20 44 4f 53 46 53 0a  34 36 20 20 52 65 73 6f  |  DOSFS.46  Reso|
00025ea0  75 72 63 65 46 53 0a 34  37 20 20 50 69 70 65 46  |urceFS.47  PipeF|
00025eb0  53 0a 35 33 20 20 44 65  76 69 63 65 46 53 0a 35  |S.53  DeviceFS.5|
00025ec0  34 20 20 50 61 72 61 6c  6c 65 6c 0a 35 36 20 20  |4  Parallel.56  |
00025ed0  41 72 63 46 53 0a 39 39  20 20 53 68 61 72 65 46  |ArcFS.99  ShareF|
00025ee0  53 0a 23 45 6e 64 54 61  62 6c 65 0a 44 41 54 41  |S.#EndTable.DATA|
00025ef0  22 03 00 00 46 69 6c 69  6e 67 20 73 79 73 74 65  |"...Filing syste|
00025f00  6d 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 20 77 6f  |m information wo|
00025f10  72 64 0a 42 69 74 09 4d  65 61 6e 69 6e 67 0a 23  |rd.Bit.Meaning.#|
00025f20  4c 69 6e 65 0a 33 31 09  53 70 65 63 69 61 6c 20  |Line.31.Special |
00025f30  66 69 65 6c 64 73 20 73  75 70 70 6f 72 74 65 64  |fields supported|
00025f40  0a 33 30 09 53 74 72 65  61 6d 73 20 61 72 65 20  |.30.Streams are |
00025f50  69 6e 74 65 72 61 63 74  69 76 65 0a 32 39 09 4e  |interactive.29.N|
00025f60  75 6c 6c 2d 6c 65 6e 67  74 68 20 66 69 6c 65 6e  |ull-length filen|
00025f70  61 6d 65 73 20 73 75 70  70 6f 72 74 65 64 0a 32  |ames supported.2|
00025f80  38 09 46 69 6c 65 20 6d  75 73 74 20 62 65 20 6f  |8.File must be o|
00025f90  70 65 6e 65 64 0a 32 37  09 54 65 6c 6c 20 46 53  |pened.27.Tell FS|
00025fa0  20 77 68 65 6e 20 66 6c  75 73 68 69 6e 67 0a 32  | when flushing.2|
00025fb0  36 09 46 53 20 73 75 70  70 6f 72 74 73 20 3c 46  |6.FS supports <F|
00025fc0  53 45 6e 74 72 79 5f 46  69 6c 65 20 39 3d 3e 46  |SEntry_File 9=>F|
00025fd0  53 45 6e 74 72 79 5f 46  69 6c 65 39 3e 0a 32 35  |SEntry_File9>.25|
00025fe0  09 46 53 20 73 75 70 70  6f 72 74 73 20 3c 46 53  |.FS supports <FS|
00025ff0  45 6e 74 72 79 5f 46 75  6e 63 20 32 30 3d 3e 46  |Entry_Func 20=>F|
00026000  53 45 6e 74 72 79 5f 46  75 6e 63 32 30 3e 0a 32  |SEntry_Func20>.2|
00026010  34 09 46 53 20 73 75 70  70 6f 72 74 73 20 3c 46  |4.FS supports <F|
00026020  53 45 6e 74 72 79 5f 46  75 6e 63 20 31 38 3d 3e  |SEntry_Func 18=>|
00026030  46 53 45 6e 74 72 79 5f  46 75 6e 63 31 38 3e 0a  |FSEntry_Func18>.|
00026040  32 33 09 46 53 20 73 75  70 70 6f 72 74 73 20 69  |23.FS supports i|
00026050  6d 61 67 65 20 66 69 6c  69 6e 67 20 73 79 73 74  |mage filing syst|
00026060  65 6d 20 65 78 74 65 6e  73 69 6f 6e 73 0a 32 32  |em extensions.22|
00026070  09 50 61 73 73 20 26 20  61 6e 64 20 25 20 77 68  |.Pass & and % wh|
00026080  65 72 65 20 61 70 70 72  6f 70 72 69 61 74 65 0a  |ere appropriate.|
00026090  32 31 09 44 69 72 65 63  74 6f 72 69 65 73 20 6e  |21.Directories n|
000260a0  6f 74 20 72 65 71 75 69  72 65 64 0a 32 30 09 55  |ot required.20.U|
000260b0  73 65 20 4f 70 65 6e 2f  47 65 74 42 79 74 65 73  |se Open/GetBytes|
000260c0  2f 43 6c 6f 73 65 20 69  6e 73 74 65 61 64 20 6f  |/Close instead o|
000260d0  66 20 3c 46 53 45 6e 74  72 79 5f 46 69 6c 65 20  |f <FSEntry_File |
000260e0  32 35 35 3d 3e 46 53 45  6e 74 72 79 5f 46 69 6c  |255=>FSEntry_Fil|
000260f0  65 32 35 35 3e 0a 31 39  09 55 73 65 20 4f 70 65  |e255>.19.Use Ope|
00026100  6e 2f 50 75 74 42 79 74  65 73 2f 43 6c 6f 73 65  |n/PutBytes/Close|
00026110  20 69 6e 73 74 65 61 64  20 6f 66 20 3c 46 53 45  | instead of <FSE|
00026120  6e 74 72 79 5f 46 69 6c  65 20 30 3d 3e 46 53 45  |ntry_File 0=>FSE|
00026130  6e 74 72 79 5f 46 69 6c  65 30 3e 0a 31 38 09 55  |ntry_File0>.18.U|
00026140  73 65 20 3c 46 53 45 6e  74 72 79 5f 46 75 6e 63  |se <FSEntry_Func|
00026150  20 39 3d 3e 46 53 45 6e  74 72 79 5f 46 75 6e 63  | 9=>FSEntry_Func|
00026160  39 3e 20 69 6e 73 74 65  61 64 20 6f 66 20 3c 46  |9> instead of <F|
00026170  53 45 6e 74 72 79 5f 46  69 6c 65 3e 0a 31 37 09  |SEntry_File>.17.|
00026180  45 78 74 72 61 20 46 53  20 69 6e 66 6f 72 6d 61  |Extra FS informa|
00026190  74 69 6f 6e 20 77 6f 72  64 20 70 72 65 73 65 6e  |tion word presen|
000261a0  74 0a 31 36 09 46 53 20  69 73 20 72 65 61 64 2d  |t.16.FS is read-|
000261b0  6f 6e 6c 79 0a 38 2d 31  35 09 6e 75 6d 62 65 72  |only.8-15.number|
000261c0  20 6f 66 20 66 69 6c 65  73 2c 20 6f 72 20 30 20  | of files, or 0 |
000261d0  69 66 20 6e 6f 20 6c 69  6d 69 74 69 6e 67 20 66  |if no limiting f|
000261e0  61 63 74 6f 72 0a 30 2d  37 09 3c 46 53 20 69 64  |actor.0-7.<FS id|
000261f0  65 6e 74 69 66 69 63 61  74 69 6f 6e 20 6e 6f 2e  |entification no.|
00026200  3d 3e 66 73 79 73 5f 69  64 65 6e 74 3e 0a 00 00  |=>fsys_ident>...|
00026210  44 41 54 41 12 02 00 00  4c 6f 61 64 20 61 6e 64  |DATA....Load and|
00026220  20 45 78 65 63 20 61 64  64 72 65 73 73 0a 23 50  | Exec address.#P|
00026230  61 72 65 6e 74 20 4f 53  5f 46 69 6c 65 35 0a 49  |arent OS_File5.I|
00026240  66 20 61 6c 6c 20 31 32  20 75 70 70 65 72 20 62  |f all 12 upper b|
00026250  69 74 73 20 6f 66 20 74  68 65 20 6c 6f 61 64 20  |its of the load |
00026260  61 64 64 72 65 73 73 20  61 72 65 20 73 65 74 20  |address are set |
00026270  3a 0a 0a 4c 6f 61 64 20  61 64 64 72 09 09 45 78  |:..Load addr..Ex|
00026280  65 63 20 61 64 64 72 0a  23 4c 69 6e 65 0a 23 20  |ec addr.#Line.# |
00026290  4e 3e 20 48 6d 6d 2e 20  49 74 20 73 65 65 6d 73  |N> Hmm. It seems|
000262a0  20 49 20 6e 65 65 64 20  32 20 7b 66 43 6f 64 65  | I need 2 {fCode|
000262b0  7d 20 77 68 65 6e 20 49  20 75 73 65 20 61 20 74  |} when I use a t|
000262c0  61 62 0a 23 20 47 65 72  70 68 3e 20 48 6d 6d 2e  |ab.# Gerph> Hmm.|
000262d0  20 54 68 61 74 27 73 20  62 65 63 61 75 73 65 20  | That's because |
000262e0  65 61 63 68 20 70 61 72  74 20 6f 66 20 61 20 74  |each part of a t|
000262f0  61 62 62 65 64 20 62 6c  6f 63 6b 20 0a 23 20 63  |abbed block .# c|
00026300  61 6e 20 68 61 76 65 20  69 74 73 20 6f 77 6e 20  |an have its own |
00026310  73 74 79 6c 65 2c 20 62  75 74 20 79 6f 75 20 63  |style, but you c|
00026320  61 6e 27 74 20 75 73 65  20 69 74 20 68 65 72 65  |an't use it here|
00026330  2c 0a 23 20 62 65 63 61  75 73 65 20 79 6f 75 20  |,.# because you |
00026340  77 61 6e 74 20 74 68 65  20 68 65 61 64 69 6e 67  |want the heading|
00026350  73 20 69 6e 20 61 20 64  69 66 66 65 72 65 6e 74  |s in a different|
00026360  20 73 74 79 6c 65 0a 7b  66 43 6f 64 65 7d 7b 2a  | style.{fCode}{*|
00026370  7d 46 46 46 7b 2a 7d 74  74 74 63 63 7b 66 7d 09  |}FFF{*}tttcc{f}.|
00026380  7b 66 43 6f 64 65 7d 64  64 64 64 64 64 64 64 7b  |{fCode}dddddddd{|
00026390  66 7d 0a 0a 7b 66 43 6f  64 65 7d 74 74 74 7b 66  |f}..{fCode}ttt{f|
000263a0  7d 20 69 73 20 3c 66 69  6c 65 74 79 70 65 3d 3e  |} is <filetype=>|
000263b0  46 69 6c 65 74 79 70 65  73 3a 21 52 6f 6f 74 3e  |Filetypes:!Root>|
000263c0  0a 7b 66 43 6f 64 65 7d  63 63 64 64 64 64 64 64  |.{fCode}ccdddddd|
000263d0  64 64 7b 66 7d 20 69 73  20 64 61 74 65 0a 0a 6f  |dd{f} is date..o|
000263e0  74 68 65 72 77 69 73 65  20 6c 6f 61 64 20 61 6e  |therwise load an|
000263f0  64 20 65 78 65 63 20 61  64 64 72 65 73 73 20 61  |d exec address a|
00026400  72 65 20 65 78 61 63 74  6c 79 20 77 68 61 74 20  |re exactly what |
00026410  74 68 65 79 20 63 6c 61  69 6d 20 74 6f 20 62 65  |they claim to be|
00026420  2e 0a 00 00 44 41 54 41  63 02 00 00 46 69 6c 65  |....DATAc...File|
00026430  20 41 74 74 72 69 62 75  74 65 73 0a 42 69 74 09  | Attributes.Bit.|
00026440  4d 65 61 6e 69 6e 67 20  77 68 65 6e 20 73 65 74  |Meaning when set|
00026450  0a 23 4c 69 6e 65 0a 30  09 52 65 61 64 20 61 63  |.#Line.0.Read ac|
00026460  63 65 73 73 20 66 6f 72  20 79 6f 75 0a 31 09 57  |cess for you.1.W|
00026470  72 69 74 65 20 61 63 63  65 73 73 20 66 6f 72 20  |rite access for |
00026480  79 6f 75 0a 32 09 2d 0a  33 09 4c 6f 63 6b 65 64  |you.2.-.3.Locked|
00026490  0a 34 09 52 65 61 64 20  61 63 63 65 73 73 20 66  |.4.Read access f|
000264a0  6f 72 20 6f 74 68 65 72  73 0a 35 09 57 72 69 74  |or others.5.Writ|
000264b0  65 20 61 63 63 65 73 73  20 66 6f 72 20 6f 74 68  |e access for oth|
000264c0  65 72 73 0a 36 09 48 69  64 64 65 6e 20 28 46 69  |ers.6.Hidden (Fi|
000264d0  6c 65 72 2b 29 0a 37 09  41 70 70 6c 69 63 61 74  |ler+).7.Applicat|
000264e0  69 6f 6e 20 28 46 69 6c  65 72 2b 29 0a 0a 49 66  |ion (Filer+)..If|
000264f0  20 62 6f 74 68 20 36 20  26 20 37 20 73 65 74 20  | both 6 & 7 set |
00026500  74 68 65 6e 20 66 69 6c  65 20 69 73 20 73 75 70  |then file is sup|
00026510  65 72 20 68 69 64 64 65  6e 2e 20 54 68 65 20 74  |er hidden. The t|
00026520  6f 70 20 32 34 20 62 69  74 73 20 61 72 65 20 66  |op 24 bits are f|
00026530  69 6c 69 6e 67 20 73 79  73 74 65 6d 20 64 65 70  |iling system dep|
00026540  65 6e 64 61 6e 74 20 2d  20 3c 4e 65 74 46 53 3d  |endant - <NetFS=|
00026550  3e 4e 65 74 46 53 5f 74  69 6d 65 62 6c 6f 63 6b  |>NetFS_timeblock|
00026560  3e 20 75 73 65 73 20 74  68 65 6d 20 74 6f 20 73  |> uses them to s|
00026570  74 6f 72 65 20 74 68 65  20 64 61 74 65 2e 0a 0a  |tore the date...|
00026580  42 69 74 20 32 20 77 61  73 20 75 73 65 64 20 66  |Bit 2 was used f|
00026590  6f 72 20 27 4f 77 6e 65  72 20 65 78 65 63 75 74  |or 'Owner execut|
000265a0  65 20 6f 6e 6c 79 27 20  28 42 42 43 20 41 44 46  |e only' (BBC ADF|
000265b0  53 29 2c 20 77 68 69 63  68 20 6d 65 61 6e 73 20  |S), which means |
000265c0  74 68 61 74 20 74 68 65  20 66 69 6c 65 20 63 6f  |that the file co|
000265d0  75 6c 64 20 6f 6e 6c 79  20 62 65 20 72 75 6e 2c  |uld only be run,|
000265e0  20 6e 6f 74 20 6c 6f 61  64 65 64 2e 20 41 72 63  | not loaded. Arc|
000265f0  68 69 6d 65 64 65 73 20  41 44 46 53 20 69 67 6e  |himedes ADFS ign|
00026600  6f 72 65 73 20 74 68 69  73 2c 20 61 6e 64 20 63  |ores this, and c|
00026610  6c 65 61 72 73 20 74 68  65 20 62 69 74 20 6f 6e  |lears the bit on|
00026620  20 73 61 76 65 2c 20 77  68 69 63 68 20 61 6c 6c  | save, which all|
00026630  6f 77 73 20 74 68 69 73  20 73 65 74 74 69 6e 67  |ows this setting|
00026640  20 74 6f 20 62 65 20 63  69 72 63 75 6d 76 65 6e  | to be circumven|
00026650  74 65 64 2e 20 53 4a 20  52 65 73 65 61 72 63 68  |ted. SJ Research|
00026660  20 66 69 6c 65 73 65 72  76 65 72 73 20 75 73 65  | fileservers use|
00026670  64 20 62 69 74 20 32 20  66 6f 72 20 27 50 72 69  |d bit 2 for 'Pri|
00026680  76 61 74 65 27 2e 0a 00  44 41 54 41 0d 02 00 00  |vate'...DATA....|
00026690  4f 62 6a 65 63 74 20 74  79 70 65 73 0a 23 50 61  |Object types.#Pa|
000266a0  72 65 6e 74 20 4f 53 5f  46 69 6c 65 20 35 0a 23  |rent OS_File 5.#|
000266b0  20 4e 6f 74 20 73 75 72  65 20 69 66 20 74 68 69  | Not sure if thi|
000266c0  73 20 69 73 20 74 68 65  20 77 6f 72 6c 64 27 73  |s is the world's|
000266d0  20 62 65 73 74 20 70 61  72 65 6e 74 20 66 6f 72  | best parent for|
000266e0  20 74 68 69 73 20 70 61  67 65 2e 0a 23 20 48 6d  | this page..# Hm|
000266f0  6d 2e 2e 2e 20 49 27 6c  6c 20 6c 69 76 65 20 77  |m... I'll live w|
00026700  69 74 68 20 69 74 20 3a  2d 29 0a 54 79 70 65 09  |ith it :-).Type.|
00026710  4d 65 61 6e 69 6e 67 0a  23 4c 69 6e 65 0a 30 09  |Meaning.#Line.0.|
00026720  4f 62 6a 65 63 74 20 6e  6f 74 20 66 6f 75 6e 64  |Object not found|
00026730  0a 31 09 46 69 6c 65 0a  32 09 44 69 72 65 63 74  |.1.File.2.Direct|
00026740  6f 72 79 0a 33 09 49 6d  61 67 65 0a 0a 49 6d 61  |ory.3.Image..Ima|
00026750  67 65 20 66 69 6c 65 73  20 6f 6e 6c 79 20 65 78  |ge files only ex|
00026760  69 73 74 20 75 6e 64 65  72 20 52 49 53 43 20 4f  |ist under RISC O|
00026770  53 20 33 2e 20 54 68 65  79 20 61 72 65 20 74 79  |S 3. They are ty|
00026780  70 65 64 20 66 69 6c 65  73 20 77 68 69 63 68 20  |ped files which |
00026790  63 61 6e 20 62 65 20 61  63 63 65 73 73 65 64 20  |can be accessed |
000267a0  61 73 20 6e 6f 72 6d 61  6c 20 64 69 72 65 63 74  |as normal direct|
000267b0  6f 72 69 65 73 2c 20 61  6e 64 20 74 68 65 72 65  |ories, and there|
000267c0  66 6f 72 65 20 68 61 76  65 20 71 75 61 6c 69 74  |fore have qualit|
000267d0  69 65 73 20 6f 66 20 62  6f 74 68 20 66 69 6c 65  |ies of both file|
000267e0  73 20 61 6e 64 20 64 69  72 65 63 74 6f 72 69 65  |s and directorie|
000267f0  73 2e 20 49 6d 61 67 65  73 20 6d 61 79 20 62 65  |s. Images may be|
00026800  20 6c 6f 63 6b 65 64 20  74 6f 20 70 72 65 76 65  | locked to preve|
00026810  6e 74 20 6d 6f 64 69 66  69 63 61 74 69 6f 6e 20  |nt modification |
00026820  6f 66 20 74 68 65 69 72  20 65 6e 74 69 72 65 20  |of their entire |
00026830  63 6f 6e 74 65 6e 74 73  2c 20 61 6e 64 20 64 65  |contents, and de|
00026840  6c 65 74 69 6f 6e 20 77  69 6c 6c 20 64 65 6c 65  |letion will dele|
00026850  74 65 20 74 68 65 20 77  68 6f 6c 65 20 74 72 65  |te the whole tre|
00026860  65 20 77 69 74 68 6f 75  74 20 63 68 65 63 6b 69  |e without checki|
00026870  6e 67 20 66 6f 72 20 6c  6f 63 6b 65 64 20 66 69  |ng for locked fi|
00026880  6c 65 73 20 77 69 74 68  69 6e 20 74 68 65 20 74  |les within the t|
00026890  72 65 65 2e 0a 00 00 00  44 41 54 41 8a 02 00 00  |ree.....DATA....|
000268a0  49 6d 61 67 65 46 53 20  69 6e 66 6f 72 6d 61 74  |ImageFS informat|
000268b0  69 6f 6e 20 62 6c 6f 63  6b 0a 23 66 0a 23 20 54  |ion block.#f.# T|
000268c0  68 65 20 6c 69 6e 65 20  61 62 6f 76 65 20 4d 55  |he line above MU|
000268d0  53 54 20 62 65 20 70 72  65 73 65 6e 74 20 74 6f  |ST be present to|
000268e0  20 61 6c 6c 6f 77 20 49  6d 61 67 65 45 6e 74 72  | allow ImageEntr|
000268f0  79 5f 21 72 6f 6f 74 20  74 6f 20 77 6f 72 6b 0a  |y_!root to work.|
00026900  4f 66 66 73 65 74 09 43  6f 6e 74 65 6e 74 73 0a  |Offset.Contents.|
00026910  23 4c 69 6e 65 0a 26 30  30 09 49 6d 61 67 65 46  |#Line.&00.ImageF|
00026920  53 20 3c 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 77  |S <information w|
00026930  6f 72 64 3d 3e 66 73 79  73 5f 69 6d 61 67 65 5f  |ord=>fsys_image_|
00026940  69 6e 66 6f 77 6f 72 64  3e 0a 26 30 34 09 49 6d  |infoword>.&04.Im|
00026950  61 67 65 46 53 20 3c 66  69 6c 65 74 79 70 65 3d  |ageFS <filetype=|
00026960  3e 46 69 6c 65 74 79 70  65 73 3a 21 52 6f 6f 74  |>Filetypes:!Root|
00026970  3e 0a 26 30 38 09 4f 66  66 73 65 74 20 6f 66 20  |>.&08.Offset of |
00026980  72 6f 75 74 69 6e 65 20  74 6f 20 6f 70 65 6e 20  |routine to open |
00026990  66 69 6c 65 73 09 09 3c  49 6d 61 67 65 45 6e 74  |files..<ImageEnt|
000269a0  72 79 5f 4f 70 65 6e 3e  0a 26 30 43 09 4f 66 66  |ry_Open>.&0C.Off|
000269b0  73 65 74 20 6f 66 20 72  6f 75 74 69 6e 65 20 74  |set of routine t|
000269c0  6f 20 67 65 74 20 62 79  74 65 73 09 09 3c 49 6d  |o get bytes..<Im|
000269d0  61 67 65 45 6e 74 72 79  5f 47 65 74 42 79 74 65  |ageEntry_GetByte|
000269e0  73 3e 0a 26 31 30 09 4f  66 66 73 65 74 20 6f 66  |s>.&10.Offset of|
000269f0  20 72 6f 75 74 69 6e 65  20 74 6f 20 70 75 74 20  | routine to put |
00026a00  62 79 74 65 73 09 09 3c  49 6d 61 67 65 45 6e 74  |bytes..<ImageEnt|
00026a10  72 79 5f 50 75 74 42 79  74 65 73 3e 0a 26 31 34  |ry_PutBytes>.&14|
00026a20  09 4f 66 66 73 65 74 20  6f 66 20 72 6f 75 74 69  |.Offset of routi|
00026a30  6e 65 20 74 6f 20 63 6f  6e 74 72 6f 6c 20 6f 70  |ne to control op|
00026a40  65 6e 20 66 69 6c 65 73  09 3c 49 6d 61 67 65 45  |en files.<ImageE|
00026a50  6e 74 72 79 5f 41 72 67  73 3e 0a 26 31 38 09 4f  |ntry_Args>.&18.O|
00026a60  66 66 73 65 74 20 6f 66  20 72 6f 75 74 69 6e 65  |ffset of routine|
00026a70  20 74 6f 20 63 6c 6f 73  65 20 6f 70 65 6e 20 66  | to close open f|
00026a80  69 6c 65 73 09 3c 49 6d  61 67 65 45 6e 74 72 79  |iles.<ImageEntry|
00026a90  5f 43 6c 6f 73 65 3e 0a  26 31 43 09 4f 66 66 73  |_Close>.&1C.Offs|
00026aa0  65 74 20 6f 66 20 72 6f  75 74 69 6e 65 20 74 6f  |et of routine to|
00026ab0  20 64 6f 20 66 69 6c 65  20 6f 70 65 72 61 74 69  | do file operati|
00026ac0  6f 6e 73 09 3c 49 6d 61  67 65 45 6e 74 72 79 5f  |ons.<ImageEntry_|
00026ad0  46 69 6c 65 3e 0a 26 32  30 09 28 6e 6f 74 68 69  |File>.&20.(nothi|
00026ae0  6e 67 20 3f 29 0a 26 32  34 09 4f 66 66 73 65 74  |ng ?).&24.Offset|
00026af0  20 6f 66 20 72 6f 75 74  69 6e 65 20 74 6f 20 64  | of routine to d|
00026b00  6f 20 46 53 20 6f 70 65  72 61 74 69 6f 6e 73 09  |o FS operations.|
00026b10  3c 49 6d 61 67 65 45 6e  74 72 79 5f 46 75 6e 63  |<ImageEntry_Func|
00026b20  3e 0a 00 00 44 41 54 41  79 00 00 00 49 6d 61 67  |>...DATAy...Imag|
00026b30  65 20 46 53 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  |e FS information|
00026b40  20 77 6f 72 64 0a 42 69  74 09 4d 65 61 6e 69 6e  | word.Bit.Meanin|
00026b50  67 0a 23 4c 69 6e 65 0a  32 37 09 54 65 6c 6c 20  |g.#Line.27.Tell |
00026b60  46 53 20 77 68 65 6e 20  66 6c 75 73 68 69 6e 67  |FS when flushing|
00026b70  20 62 75 66 66 65 72 73  0a 0a 41 6c 6c 20 6f 74  | buffers..All ot|
00026b80  68 65 72 73 20 72 65 73  65 72 76 65 64 20 61 6e  |hers reserved an|
00026b90  64 20 6d 75 73 74 20 62  65 20 30 2e 0a 00 00 00  |d must be 0.....|
00026ba0  44 41 54 41 14 03 00 00  46 53 20 69 6e 66 6f 72  |DATA....FS infor|
00026bb0  6d 61 74 69 6f 6e 20 62  6c 6f 63 6b 0a 23 66 0a  |mation block.#f.|
00026bc0  23 20 54 68 65 20 6c 69  6e 65 20 61 62 6f 76 65  |# The line above|
00026bd0  20 4d 55 53 54 20 62 65  20 70 72 65 73 65 6e 74  | MUST be present|
00026be0  20 74 6f 20 61 6c 6c 6f  77 20 46 53 45 6e 74 72  | to allow FSEntr|
00026bf0  79 5f 21 72 6f 6f 74 20  74 6f 20 77 6f 72 6b 0a  |y_!root to work.|
00026c00  4f 66 66 73 65 74 09 43  6f 6e 74 65 6e 74 73 0a  |Offset.Contents.|
00026c10  23 4c 69 6e 65 0a 26 30  30 09 4f 66 66 73 65 74  |#Line.&00.Offset|
00026c20  20 6f 66 20 66 69 6c 69  6e 67 20 73 79 73 74 65  | of filing syste|
00026c30  6d 20 6e 61 6d 65 0a 26  30 34 09 4f 66 66 73 65  |m name.&04.Offse|
00026c40  74 20 6f 66 20 66 69 6c  69 6e 67 20 73 79 73 74  |t of filing syst|
00026c50  65 6d 20 73 74 61 72 74  75 70 20 74 65 78 74 2c  |em startup text,|
00026c60  20 6f 72 20 2d 31 20 74  6f 20 75 73 65 20 3c 46  | or -1 to use <F|
00026c70  53 45 6e 74 72 79 5f 46  75 6e 63 20 31 37 3d 3e  |SEntry_Func 17=>|
00026c80  46 53 45 6e 74 72 79 5f  46 75 6e 63 31 37 3e 0a  |FSEntry_Func17>.|
00026c90  26 30 38 09 4f 66 66 73  65 74 20 6f 66 20 72 6f  |&08.Offset of ro|
00026ca0  75 74 69 6e 65 20 74 6f  20 6f 70 65 6e 20 66 69  |utine to open fi|
00026cb0  6c 65 73 09 09 3c 46 53  45 6e 74 72 79 5f 4f 70  |les..<FSEntry_Op|
00026cc0  65 6e 3e 0a 26 30 43 09  4f 66 66 73 65 74 20 6f  |en>.&0C.Offset o|
00026cd0  66 20 72 6f 75 74 69 6e  65 20 74 6f 20 67 65 74  |f routine to get|
00026ce0  20 62 79 74 65 73 09 09  3c 46 53 45 6e 74 72 79  | bytes..<FSEntry|
00026cf0  5f 47 65 74 42 79 74 65  73 3e 0a 26 31 30 09 4f  |_GetBytes>.&10.O|
00026d00  66 66 73 65 74 20 6f 66  20 72 6f 75 74 69 6e 65  |ffset of routine|
00026d10  20 74 6f 20 70 75 74 20  62 79 74 65 73 09 09 3c  | to put bytes..<|
00026d20  46 53 45 6e 74 72 79 5f  50 75 74 42 79 74 65 73  |FSEntry_PutBytes|
00026d30  3e 0a 26 31 34 09 4f 66  66 73 65 74 20 6f 66 20  |>.&14.Offset of |
00026d40  72 6f 75 74 69 6e 65 20  74 6f 20 63 6f 6e 74 72  |routine to contr|
00026d50  6f 6c 20 6f 70 65 6e 20  66 69 6c 65 73 09 3c 46  |ol open files.<F|
00026d60  53 45 6e 74 72 79 5f 41  72 67 73 3e 0a 26 31 38  |SEntry_Args>.&18|
00026d70  09 4f 66 66 73 65 74 20  6f 66 20 72 6f 75 74 69  |.Offset of routi|
00026d80  6e 65 20 74 6f 20 63 6c  6f 73 65 20 6f 70 65 6e  |ne to close open|
00026d90  20 66 69 6c 65 73 09 3c  46 53 45 6e 74 72 79 5f  | files.<FSEntry_|
00026da0  43 6c 6f 73 65 3e 0a 26  31 43 09 4f 66 66 73 65  |Close>.&1C.Offse|
00026db0  74 20 6f 66 20 72 6f 75  74 69 6e 65 20 74 6f 20  |t of routine to |
00026dc0  64 6f 20 66 69 6c 65 20  6f 70 65 72 61 74 69 6f  |do file operatio|
00026dd0  6e 73 09 3c 46 53 45 6e  74 72 79 5f 46 69 6c 65  |ns.<FSEntry_File|
00026de0  3e 0a 26 32 30 09 46 53  20 3c 69 6e 66 6f 72 6d  |>.&20.FS <inform|
00026df0  61 74 69 6f 6e 20 77 6f  72 64 3d 3e 66 73 79 73  |ation word=>fsys|
00026e00  5f 69 6e 66 6f 77 6f 72  64 3e 0a 26 32 34 09 4f  |_infoword>.&24.O|
00026e10  66 66 73 65 74 20 6f 66  20 72 6f 75 74 69 6e 65  |ffset of routine|
00026e20  20 74 6f 20 64 6f 20 46  53 20 6f 70 65 72 61 74  | to do FS operat|
00026e30  69 6f 6e 73 09 3c 46 53  45 6e 74 72 79 5f 46 75  |ions.<FSEntry_Fu|
00026e40  6e 63 3e 0a 26 32 38 09  4f 66 66 73 65 74 20 6f  |nc>.&28.Offset o|
00026e50  66 20 72 6f 75 74 69 6e  65 20 74 6f 20 64 6f 20  |f routine to do |
00026e60  47 42 50 42 20 6f 70 65  72 61 74 69 6f 6e 73 09  |GBPB operations.|
00026e70  3c 46 53 45 6e 74 72 79  5f 47 42 50 42 3e 0a 26  |<FSEntry_GBPB>.&|
00026e80  32 43 09 45 78 74 72 61  20 46 53 20 3c 69 6e 66  |2C.Extra FS <inf|
00026e90  6f 72 6d 61 74 69 6f 6e  20 77 6f 72 64 3d 3e 66  |ormation word=>f|
00026ea0  73 79 73 5f 65 78 74 72  61 5f 69 6e 66 6f 77 6f  |sys_extra_infowo|
00026eb0  72 64 3e 0a 44 41 54 41  cb 00 00 00 45 78 74 72  |rd>.DATA....Extr|
00026ec0  61 20 66 69 6c 69 6e 67  20 73 79 73 74 65 6d 20  |a filing system |
00026ed0  69 6e 66 6f 72 6d 61 74  69 6f 6e 20 77 6f 72 64  |information word|
00026ee0  0a 23 50 61 72 65 6e 74  20 46 53 45 6e 74 72 79  |.#Parent FSEntry|
00026ef0  5f 0a 42 69 74 09 4d 65  61 6e 69 6e 67 0a 23 4c  |_.Bit.Meaning.#L|
00026f00  69 6e 65 0a 30 09 46 53  20 73 75 70 70 6f 72 74  |ine.0.FS support|
00026f10  73 20 46 53 45 6e 74 72  79 5f 46 75 6e 63 20 33  |s FSEntry_Func 3|
00026f20  34 0a 31 09 46 53 20 73  68 6f 75 6c 64 20 62 65  |4.1.FS should be|
00026f30  20 63 61 6c 6c 65 64 20  74 6f 20 64 6f 20 2a 43  | called to do *C|
00026f40  61 74 0a 32 09 46 53 20  73 68 6f 75 6c 64 20 62  |at.2.FS should b|
00026f50  65 20 63 61 6c 6c 65 64  20 74 6f 20 64 6f 20 2a  |e called to do *|
00026f60  45 78 0a 33 2d 33 31 09  52 65 73 65 72 76 65 64  |Ex.3-31.Reserved|
00026f70  2c 20 6d 75 73 74 20 62  65 20 7a 65 72 6f 0a 00  |, must be zero..|
00026f80  44 41 54 41 6e 01 00 00  4f 70 74 69 6f 6e 73 0a  |DATAn...Options.|
00026f90  23 50 61 72 65 6e 74 20  4f 53 5f 46 53 43 6f 6e  |#Parent OS_FSCon|
00026fa0  74 72 6f 6c 31 30 0a 4f  70 74 69 6f 6e 09 53 65  |trol10.Option.Se|
00026fb0  74 20 70 65 72 09 09 4d  65 61 6e 69 6e 67 0a 23  |t per..Meaning.#|
00026fc0  4c 69 6e 65 0a 30 09 77  68 6f 6c 65 20 6d 61 63  |Line.0.whole mac|
00026fd0  68 69 6e 65 09 72 65 73  65 74 20 61 6c 6c 20 66  |hine.reset all f|
00026fe0  69 6c 69 6e 67 20 73 79  73 74 65 6d 73 20 74 6f  |iling systems to|
00026ff0  20 64 65 66 61 75 6c 74  73 0a 31 09 66 69 6c 69  | defaults.1.fili|
00027000  6e 67 20 73 79 73 74 65  6d 09 3c 46 69 6c 69 6e  |ng system.<Filin|
00027010  67 20 73 79 73 74 65 6d  20 6d 65 73 73 61 67 65  |g system message|
00027020  73 3d 3e 66 73 79 73 5f  6f 70 74 31 3e 20 6f 6e  |s=>fsys_opt1> on|
00027030  20 6c 6f 61 64 69 6e 67  2c 20 73 61 76 69 6e 67  | loading, saving|
00027040  2c 20 63 72 65 61 74 69  6e 67 0a 34 09 64 69 73  |, creating.4.dis|
00027050  63 09 09 3c 42 6f 6f 74  20 61 63 74 69 6f 6e 3d  |c..<Boot action=|
00027060  3e 66 73 79 73 5f 6f 70  74 34 3e 0a 0a 4f 70 74  |>fsys_opt4>..Opt|
00027070  69 6f 6e 73 20 32 20 26  20 33 20 72 65 6c 61 74  |ions 2 & 3 relat|
00027080  65 20 74 6f 20 74 68 65  20 42 42 43 20 6d 69 63  |e to the BBC mic|
00027090  72 6f 2c 20 72 65 70 65  63 74 69 76 65 6c 79 20  |ro, repectively |
000270a0  61 63 74 69 6f 6e 20 74  6f 20 74 61 6b 65 20 6f  |action to take o|
000270b0  6e 20 64 65 74 65 63 74  69 6e 67 20 74 61 70 65  |n detecting tape|
000270c0  20 65 72 72 6f 72 73 2c  20 61 6e 64 20 73 65 74  | errors, and set|
000270d0  74 69 6e 67 20 74 68 65  20 74 61 70 65 20 69 6e  |ting the tape in|
000270e0  74 65 72 62 6c 6f 63 6b  20 67 61 70 2e 0a 00 00  |terblock gap....|
000270f0  44 41 54 41 08 01 00 00  46 69 6c 69 6e 67 20 73  |DATA....Filing s|
00027100  79 73 74 65 6d 20 4f 70  74 69 6f 6e 20 34 0a 23  |ystem Option 4.#|
00027110  50 61 72 65 6e 74 20 66  73 79 73 5f 6f 70 74 73  |Parent fsys_opts|
00027120  0a 4f 70 74 69 6f 6e 20  34 20 69 73 20 73 65 74  |.Option 4 is set|
00027130  20 73 65 70 61 72 61 74  65 6c 79 20 66 6f 72 20  | separately for |
00027140  65 61 63 68 20 64 69 73  63 2e 20 54 68 65 20 62  |each disc. The b|
00027150  6f 6f 74 20 22 66 69 6c  65 22 20 28 69 74 20 63  |oot "file" (it c|
00027160  61 6e 20 62 65 20 61 6e  20 61 70 70 6c 69 63 61  |an be an applica|
00027170  74 69 6f 6e 29 20 69 73  20 66 61 6c 6c 65 64 20  |tion) is falled |
00027180  22 21 42 6f 6f 74 22 20  6f 6e 20 6d 6f 73 74 20  |"!Boot" on most |
00027190  66 69 6c 69 6e 67 20 73  79 73 74 65 6d 73 2e 0a  |filing systems..|
000271a0  0a 56 61 6c 75 65 09 42  6f 6f 74 20 6f 70 74 69  |.Value.Boot opti|
000271b0  6f 6e 0a 23 4c 69 6e 65  0a 30 09 6e 6f 20 62 6f  |on.#Line.0.no bo|
000271c0  6f 74 0a 31 09 2a 4c 6f  61 64 20 62 6f 6f 74 20  |ot.1.*Load boot |
000271d0  66 69 6c 65 0a 32 09 2a  52 75 6e 20 62 6f 6f 74  |file.2.*Run boot|
000271e0  20 66 69 6c 65 0a 33 09  2a 45 78 65 63 20 62 6f  | file.3.*Exec bo|
000271f0  6f 74 20 66 69 6c 65 0a  44 41 54 41 1d 01 00 00  |ot file.DATA....|
00027200  46 69 6c 69 6e 67 20 73  79 73 74 65 6d 20 4f 70  |Filing system Op|
00027210  74 69 6f 6e 20 31 0a 23  50 61 72 65 6e 74 20 66  |tion 1.#Parent f|
00027220  73 79 73 5f 6f 70 74 73  0a 4f 70 74 69 6f 6e 20  |sys_opts.Option |
00027230  31 20 69 73 20 73 65 74  20 73 65 70 61 72 61 74  |1 is set separat|
00027240  65 6c 79 20 66 6f 72 20  65 61 63 68 20 66 69 6c  |ely for each fil|
00027250  69 6e 67 20 73 79 73 74  65 6d 2e 20 49 74 20 64  |ing system. It d|
00027260  6f 65 73 6e 27 74 20 77  6f 72 6b 20 77 65 6c 6c  |oesn't work well|
00027270  20 75 6e 64 65 72 20 52  49 53 43 20 4f 53 20 33  | under RISC OS 3|
00027280  2e 0a 0a 56 61 6c 75 65  09 49 74 65 6d 73 20 70  |...Value.Items p|
00027290  72 69 6e 74 65 64 0a 23  4c 69 6e 65 0a 30 09 6e  |rinted.#Line.0.n|
000272a0  6f 74 68 69 6e 67 0a 31  09 66 69 6c 65 6e 61 6d  |othing.1.filenam|
000272b0  65 0a 32 09 66 69 6c 65  6e 61 6d 65 2c 20 68 65  |e.2.filename, he|
000272c0  78 20 61 64 64 72 65 73  73 20 61 6e 64 20 6c 65  |x address and le|
000272d0  6e 67 74 68 0a 33 09 66  69 6c 65 6e 61 6d 65 2c  |ngth.3.filename,|
000272e0  20 28 64 61 74 65 73 74  61 6d 70 20 61 6e 64 20  | (datestamp and |
000272f0  6c 65 6e 67 74 68 29 20  6f 72 20 28 6c 6f 61 64  |length) or (load|
00027300  20 61 6e 64 20 65 78 65  63 20 61 64 64 72 65 73  | and exec addres|
00027310  73 65 73 29 0a 00 00 00  44 41 54 41 9c 01 00 00  |ses)....DATA....|
00027320  41 63 63 65 73 73 20 41  74 74 72 69 62 75 74 65  |Access Attribute|
00027330  20 53 74 72 69 6e 67 0a  23 20 57 61 73 20 4f 53  | String.# Was OS|
00027340  5f 61 63 63 65 73 73 5f  73 74 72 69 6e 67 0a 23  |_access_string.#|
00027350  50 61 72 65 6e 74 20 46  53 45 6e 74 72 79 5f 46  |Parent FSEntry_F|
00027360  75 6e 63 39 0a 54 68 69  73 20 73 74 72 69 6e 67  |unc9.This string|
00027370  20 69 73 20 74 68 65 20  73 61 6d 65 20 61 73 20  | is the same as |
00027380  75 73 65 64 20 62 79 20  74 68 65 20 7b 66 43 6f  |used by the {fCo|
00027390  64 65 7d 2a 41 63 63 65  73 73 7b 66 7d 20 63 6f  |de}*Access{f} co|
000273a0  6d 6d 61 6e 64 2c 20 6f  66 20 74 68 65 20 66 6f  |mmand, of the fo|
000273b0  72 6d 0a 0a 20 20 4c 57  52 2f 77 72 0a 0a 4c 09  |rm..  LWR/wr..L.|
000273c0  6c 6f 63 6b 65 64 20 61  67 61 69 6e 73 74 20 64  |locked against d|
000273d0  65 6c 65 74 69 6f 6e 0a  57 09 6f 77 6e 65 72 20  |eletion.W.owner |
000273e0  77 72 69 74 65 20 70 65  72 6d 69 73 73 69 6f 6e  |write permission|
000273f0  0a 52 09 6f 77 6e 65 72  20 72 65 61 64 20 70 65  |.R.owner read pe|
00027400  72 6d 69 73 73 69 6f 6e  0a 77 09 70 75 62 6c 69  |rmission.w.publi|
00027410  63 20 77 72 69 74 65 20  70 65 72 6d 69 73 73 69  |c write permissi|
00027420  6f 6e 0a 72 09 70 75 62  6c 69 63 20 72 65 61 64  |on.r.public read|
00027430  20 70 65 72 6d 69 73 73  69 6f 6e 0a 0a 43 61 73  | permission..Cas|
00027440  65 20 61 6e 64 20 6f 72  64 65 72 20 77 69 74 68  |e and order with|
00027450  69 6e 20 73 65 63 74 69  6f 6e 73 20 69 73 20 69  |in sections is i|
00027460  6e 73 69 67 6e 69 66 69  63 61 6e 74 20 2d 20 6f  |nsignificant - o|
00027470  77 6e 65 72 20 70 65 72  6d 69 73 73 69 6f 6e 73  |wner permissions|
00027480  20 6f 63 63 75 72 20 62  65 66 6f 72 65 20 74 68  | occur before th|
00027490  65 20 27 2f 27 2c 20 70  75 62 6c 69 63 20 70 65  |e '/', public pe|
000274a0  72 6d 69 73 73 69 6f 6e  73 20 61 66 74 65 72 20  |rmissions after |
000274b0  69 74 2e 0a 44 49 52 24  d4 01 00 00 d4 01 00 00  |it..DIR$........|
000274c0  88 76 02 00 48 fd ff ff  6d 61 d9 15 c2 00 00 00  |.v..H...ma......|
000274d0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000274e0  4c 77 02 00 47 ff ff ff  f2 1f b9 cd b1 00 00 00  |Lw..G...........|
000274f0  13 00 00 00 00 00 00 00  43 6c 6f 73 65 46 69 6c  |........CloseFil|
00027500  65 00 00 00 00 78 02 00  47 ff ff ff aa 9c a9 cd  |e....x..G.......|
00027510  03 01 00 00 13 00 00 00  00 00 00 00 46 69 6c 65  |............File|
00027520  49 6e 66 6f 00 00 00 00  04 79 02 00 48 ff ff ff  |Info.....y..H...|
00027530  61 a8 47 13 8e 04 00 00  13 00 00 00 00 00 00 00  |a.G.............|
00027540  4c 6f 6f 6b 75 70 00 00  94 7d 02 00 48 ff ff ff  |Lookup...}..H...|
00027550  46 f7 45 13 86 03 00 00  13 00 00 00 00 00 00 00  |F.E.............|
00027560  4d 61 6b 65 4d 65 6e 75  73 00 00 00 1c 81 02 00  |MakeMenus.......|
00027570  47 fd ff ff b8 b9 b6 cd  b4 01 00 00 13 00 00 00  |G...............|
00027580  00 00 00 00 6d 65 6e 75  64 65 66 00 d0 82 02 00  |....menudef.....|
00027590  48 ff ff ff 59 d2 45 13  17 04 00 00 13 00 00 00  |H...Y.E.........|
000275a0  00 00 00 00 6f 70 65 6e  66 69 6c 65 00 00 00 00  |....openfile....|
000275b0  e8 86 02 00 45 fd ff ff  ec 38 e5 ff 84 00 00 00  |....E....8......|
000275c0  13 00 00 00 00 00 00 00  74 6f 6b 65 6e 00 00 00  |........token...|
000275d0  6c 87 02 00 48 ff ff ff  6a a0 47 13 82 02 00 00  |l...H...j.G.....|
000275e0  13 00 00 00 00 00 00 00  47 53 4c 6f 6f 6b 75 70  |........GSLookup|
000275f0  00 00 00 00 f0 89 02 00  48 ff ff ff 1a 81 46 13  |........H.....F.|
00027600  8b 02 00 00 13 00 00 00  00 00 00 00 45 6e 75 6d  |............Enum|
00027610  65 72 61 74 65 54 6f 6b  65 6e 73 00 7c 8c 02 00  |erateTokens.|...|
00027620  48 ff ff ff 37 de d8 15  fb 00 00 00 13 00 00 00  |H...7...........|
00027630  00 00 00 00 43 6f 70 79  45 72 72 6f 72 00 00 00  |....CopyError...|
00027640  78 8d 02 00 48 ff ff ff  52 16 fa 18 86 04 00 00  |x...H...R.......|
00027650  13 00 00 00 00 00 00 00  45 72 72 6f 72 4c 6f 6f  |........ErrorLoo|
00027660  6b 75 70 00 00 92 02 00  48 fd ff ff ef 10 fa 18  |kup.....H.......|
00027670  c4 00 00 00 13 00 00 00  00 00 00 00 65 72 72 6f  |............erro|
00027680  72 62 6c 6f 63 6b 00 00  44 41 54 41 c2 00 00 00  |rblock..DATA....|
00027690  4d 65 73 73 61 67 65 54  72 61 6e 73 0a 23 50 61  |MessageTrans.#Pa|
000276a0  72 65 6e 74 20 21 52 6f  6f 74 0a 23 50 72 65 66  |rent !Root.#Pref|
000276b0  69 78 20 4d 65 73 73 61  67 65 54 72 61 6e 73 5f  |ix MessageTrans_|
000276c0  0a 23 74 61 62 6c 65 20  63 6f 6c 75 6d 6e 73 20  |.#table columns |
000276d0  33 0a 3c 43 6c 6f 73 65  46 69 6c 65 3e 0a 3c 43  |3.<CloseFile>.<C|
000276e0  6f 70 79 45 72 72 6f 72  3e 0a 3c 45 6e 75 6d 65  |opyError>.<Enume|
000276f0  72 61 74 65 54 6f 6b 65  6e 73 3e 0a 3c 45 72 72  |rateTokens>.<Err|
00027700  6f 72 4c 6f 6f 6b 75 70  3e 0a 3c 46 69 6c 65 49  |orLookup>.<FileI|
00027710  6e 66 6f 3e 0a 3c 47 53  4c 6f 6f 6b 75 70 3e 0a  |nfo>.<GSLookup>.|
00027720  3c 4c 6f 6f 6b 75 70 3e  0a 3c 4d 61 6b 65 4d 65  |<Lookup>.<MakeMe|
00027730  6e 75 73 3e 0a 3c 4f 70  65 6e 46 69 6c 65 3e 0a  |nus>.<OpenFile>.|
00027740  23 65 6e 64 74 61 62 6c  65 0a 00 00 44 41 54 41  |#endtable...DATA|
00027750  b1 00 00 00 4d 65 73 73  61 67 65 54 72 61 6e 73  |....MessageTrans|
00027760  5f 43 6c 6f 73 65 46 69  6c 65 20 20 28 26 34 31  |_CloseFile  (&41|
00027770  35 30 34 29 0a 23 50 61  72 65 6e 74 20 4d 65 73  |504).#Parent Mes|
00027780  73 61 67 65 54 72 61 6e  73 5f 0a 3d 3e 09 52 30  |sageTrans_.=>.R0|
00027790  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 34 2d  | =.pointer to 4-|
000277a0  77 6f 72 64 20 64 61 74  61 20 73 74 72 75 63 74  |word data struct|
000277b0  75 72 65 0a 0a 54 68 69  73 20 53 57 49 20 63 6c  |ure..This SWI cl|
000277c0  6f 73 65 73 20 74 68 65  20 66 69 6c 65 20 70 72  |oses the file pr|
000277d0  65 76 69 6f 75 73 6c 79  20 6f 70 65 6e 65 64 20  |eviously opened |
000277e0  77 69 74 68 20 3c 4d 65  73 73 61 67 65 54 72 61  |with <MessageTra|
000277f0  6e 73 5f 4f 70 65 6e 46  69 6c 65 3e 2e 00 00 00  |ns_OpenFile>....|
00027800  44 41 54 41 03 01 00 00  4d 65 73 73 61 67 65 54  |DATA....MessageT|
00027810  72 61 6e 73 5f 46 69 6c  65 49 6e 66 6f 20 20 28  |rans_FileInfo  (|
00027820  26 34 31 35 30 30 29 0a  23 50 61 72 65 6e 74 20  |&41500).#Parent |
00027830  4d 65 73 73 61 67 65 54  72 61 6e 73 5f 0a 3d 3e  |MessageTrans_.=>|
00027840  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
00027850  20 66 69 6c 65 6e 61 6d  65 0a 3c 3d 09 52 30 20  | filename.<=.R0 |
00027860  3d 09 62 69 74 20 30 20  73 65 74 20 69 66 20 68  |=.bit 0 set if h|
00027870  65 6c 64 20 69 6e 20 6d  65 6d 6f 72 79 0a 09 52  |eld in memory..R|
00027880  32 20 3d 09 73 69 7a 65  20 6f 66 20 62 75 66 66  |2 =.size of buff|
00027890  65 72 20 6e 65 65 64 65  64 0a 09 0a 52 65 74 75  |er needed...Retu|
000278a0  72 6e 73 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |rns information |
000278b0  61 62 6f 75 74 20 74 68  65 20 73 69 7a 65 20 72  |about the size r|
000278c0  65 71 75 69 72 65 64 20  74 6f 20 68 6f 6c 64 20  |equired to hold |
000278d0  61 20 6d 65 73 73 61 67  65 20 66 69 6c 65 20 62  |a message file b|
000278e0  65 66 6f 72 65 20 3c 4d  65 73 73 61 67 65 54 72  |efore <MessageTr|
000278f0  61 6e 73 5f 4f 70 65 6e  46 69 6c 65 3e 20 75 73  |ans_OpenFile> us|
00027900  65 64 2e 00 44 41 54 41  8e 04 00 00 4d 65 73 73  |ed..DATA....Mess|
00027910  61 67 65 54 72 61 6e 73  5f 4c 6f 6f 6b 75 70 20  |ageTrans_Lookup |
00027920  20 28 26 34 31 35 30 32  29 0a 23 50 61 72 65 6e  | (&41502).#Paren|
00027930  74 20 4d 65 73 73 61 67  65 54 72 61 6e 73 5f 0a  |t MessageTrans_.|
00027940  3d 3e 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |=>.R0 =.pointer |
00027950  74 6f 20 34 2d 77 6f 72  64 20 64 61 74 61 20 73  |to 4-word data s|
00027960  74 72 75 63 74 75 72 65  2c 20 6f 72 20 30 20 66  |tructure, or 0 f|
00027970  6f 72 20 67 6c 6f 62 61  6c 20 6d 65 73 73 61 67  |or global messag|
00027980  65 73 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |es..R1 =.pointer|
00027990  20 74 6f 20 3c 54 6f 6b  65 6e 3d 3e 6d 65 73 73  | to <Token=>mess|
000279a0  61 67 65 74 72 61 6e 73  5f 74 6f 6b 65 6e 3e 0a  |agetrans_token>.|
000279b0  09 52 32 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R2 =.pointer to|
000279c0  20 62 75 66 66 65 72 0a  09 52 33 20 3d 09 62 75  | buffer..R3 =.bu|
000279d0  66 66 65 72 20 73 69 7a  65 0a 09 52 34 20 3d 09  |ffer size..R4 =.|
000279e0  70 6f 69 6e 74 65 72 20  74 6f 20 70 61 72 61 6d  |pointer to param|
000279f0  65 74 65 72 20 30 2c 20  6f 72 20 30 20 69 66 20  |eter 0, or 0 if |
00027a00  6e 6f 6e 65 0a 09 52 35  20 3d 09 70 6f 69 6e 74  |none..R5 =.point|
00027a10  65 72 20 74 6f 20 70 61  72 61 6d 65 74 65 72 20  |er to parameter |
00027a20  31 2c 20 6f 72 20 30 20  69 66 20 6e 6f 6e 65 0a  |1, or 0 if none.|
00027a30  09 52 36 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R6 =.pointer to|
00027a40  20 70 61 72 61 6d 65 74  65 72 20 32 2c 20 6f 72  | parameter 2, or|
00027a50  20 30 20 69 66 20 6e 6f  6e 65 0a 09 52 37 20 3d  | 0 if none..R7 =|
00027a60  09 70 6f 69 6e 74 65 72  20 74 6f 20 70 61 72 61  |.pointer to para|
00027a70  6d 65 74 65 72 20 33 2c  20 6f 72 20 30 20 69 66  |meter 3, or 0 if|
00027a80  20 6e 6f 6e 65 0a 3c 3d  09 52 31 20 3d 09 70 6f  | none.<=.R1 =.po|
00027a90  69 6e 74 65 72 20 74 6f  20 74 6f 6b 65 6e 2d 74  |inter to token-t|
00027aa0  65 72 6d 69 6e 61 74 6f  72 0a 09 52 32 20 3d 09  |erminator..R2 =.|
00027ab0  72 65 73 75 6c 74 20 73  74 72 69 6e 67 0a 09 52  |result string..R|
00027ac0  33 20 3d 09 73 69 7a 65  20 6f 66 20 72 65 73 75  |3 =.size of resu|
00027ad0  6c 74 0a 0a 54 68 69 73  20 53 57 49 20 6c 6f 6f  |lt..This SWI loo|
00027ae0  6b 73 20 75 70 20 74 68  65 20 74 6f 6b 65 6e 20  |ks up the token |
00027af0  6f 6e 20 74 68 65 20 6d  65 73 73 61 67 65 20 66  |on the message f|
00027b00  69 6c 65 2e 20 49 66 20  52 32 20 3d 20 30 20 6f  |ile. If R2 = 0 o|
00027b10  6e 20 65 6e 74 72 79 2c  20 79 6f 75 27 6c 6c 20  |n entry, you'll |
00027b20  67 65 74 20 61 20 70 6f  69 6e 74 65 72 20 74 6f  |get a pointer to|
00027b30  20 61 20 72 65 61 64 2d  6f 6e 6c 79 20 73 74 72  | a read-only str|
00027b40  69 6e 67 2c 20 61 6e 64  20 6e 6f 20 70 61 72 61  |ing, and no para|
00027b50  6d 65 74 65 72 20 73 75  62 73 74 69 74 75 74 69  |meter substituti|
00027b60  6f 6e 20 77 69 6c 6c 20  62 65 20 64 6f 6e 65 2c  |on will be done,|
00027b70  20 61 6c 73 6f 20 74 68  65 20 73 74 72 69 6e 67  | also the string|
00027b80  20 77 69 6c 6c 20 62 65  20 74 65 72 6d 69 6e 61  | will be termina|
00027b90  74 65 64 20 62 79 20 31  30 2c 20 61 6e 64 20 6e  |ted by 10, and n|
00027ba0  6f 74 20 30 2e 20 49 66  20 52 32 20 21 3d 20 30  |ot 0. If R2 != 0|
00027bb0  2c 20 25 30 20 74 6f 20  25 33 20 69 6e 20 74 68  |, %0 to %3 in th|
00027bc0  65 20 73 74 72 69 6e 67  20 77 69 6c 6c 20 62 65  |e string will be|
00027bd0  20 72 65 70 6c 61 63 65  64 20 62 79 20 74 68 65  | replaced by the|
00027be0  20 73 74 72 69 6e 67 73  20 69 6e 20 52 34 20 74  | strings in R4 t|
00027bf0  6f 20 52 37 2e 20 50 72  69 6f 72 20 74 6f 20 74  |o R7. Prior to t|
00027c00  68 69 73 20 63 61 6c 6c  2c 20 79 6f 75 20 6d 75  |his call, you mu|
00027c10  73 74 20 68 61 76 65 20  63 61 6c 6c 65 64 20 3c  |st have called <|
00027c20  4d 65 73 73 61 67 65 54  72 61 6e 73 5f 4f 70 65  |MessageTrans_Ope|
00027c30  6e 46 69 6c 65 3e 2e 0a  0a 49 66 20 74 68 65 20  |nFile>...If the |
00027c40  74 6f 6b 65 6e 20 69 73  20 6e 6f 74 20 66 6f 75  |token is not fou|
00027c50  6e 64 20 69 6e 20 74 68  65 20 6d 65 73 73 61 67  |nd in the messag|
00027c60  65 20 66 69 6c 65 20 73  70 65 63 69 66 69 65 64  |e file specified|
00027c70  2c 20 69 74 20 77 69 6c  6c 20 62 65 20 73 65 61  |, it will be sea|
00027c80  72 63 68 65 64 20 66 6f  72 20 69 6e 20 74 68 65  |rched for in the|
00027c90  20 67 6c 6f 62 61 6c 20  6d 65 73 73 61 67 65 20  | global message |
00027ca0  66 69 6c 65 2e 20 49 66  20 52 32 20 3d 20 30 20  |file. If R2 = 0 |
00027cb0  6f 6e 20 65 6e 74 72 79  20 61 6e 64 20 74 68 65  |on entry and the|
00027cc0  20 66 69 6c 65 20 69 73  20 6e 6f 74 20 73 74 6f  | file is not sto|
00027cd0  72 65 64 20 69 6e 20 79  6f 75 72 20 6f 77 6e 20  |red in your own |
00027ce0  77 6f 72 6b 73 70 61 63  65 2c 20 74 68 65 6e 20  |workspace, then |
00027cf0  74 68 65 20 70 6f 69 6e  74 65 72 20 77 69 6c 6c  |the pointer will|
00027d00  20 62 65 63 6f 6d 65 20  69 6e 76 61 6c 69 64 20  | become invalid |
00027d10  61 66 74 65 72 20 3c 53  65 72 76 69 63 65 5f 4d  |after <Service_M|
00027d20  65 73 73 61 67 65 46 69  6c 65 43 6c 6f 73 65 64  |essageFileClosed|
00027d30  3d 3e 73 65 72 76 69 63  65 5f 35 45 3e 20 69 73  |=>service_5E> is|
00027d40  20 69 73 73 75 65 64 20  2d 20 79 6f 75 72 20 61  | issued - your a|
00027d50  70 70 6c 69 63 61 74 69  6f 6e 20 6d 75 73 74 20  |pplication must |
00027d60  74 72 61 70 20 74 68 69  73 20 73 65 72 76 69 63  |trap this servic|
00027d70  65 20 63 61 6c 6c 20 73  6f 20 69 74 20 63 61 6e  |e call so it can|
00027d80  20 72 65 2d 72 65 61 64  20 70 6f 69 6e 74 65 72  | re-read pointer|
00027d90  73 2e 00 00 44 41 54 41  86 03 00 00 4d 65 73 73  |s...DATA....Mess|
00027da0  61 67 65 54 72 61 6e 73  5f 4d 61 6b 65 4d 65 6e  |ageTrans_MakeMen|
00027db0  75 73 20 20 28 26 34 31  35 30 33 29 0a 23 50 61  |us  (&41503).#Pa|
00027dc0  72 65 6e 74 20 4d 65 73  73 61 67 65 54 72 61 6e  |rent MessageTran|
00027dd0  73 5f 0a 3d 3e 09 52 30  20 3d 09 70 6f 69 6e 74  |s_.=>.R0 =.point|
00027de0  65 72 20 74 6f 20 64 61  74 61 20 73 74 72 75 63  |er to data struc|
00027df0  74 75 72 65 0a 09 52 31  20 3d 09 3c 6d 65 6e 75  |ture..R1 =.<menu|
00027e00  20 64 65 66 69 6e 69 74  69 6f 6e 3d 3e 6d 65 73  | definition=>mes|
00027e10  73 61 67 65 74 72 61 6e  73 5f 6d 65 6e 75 64 65  |sagetrans_menude|
00027e20  66 3e 0a 09 52 32 20 3d  09 70 6f 69 6e 74 65 72  |f>..R2 =.pointer|
00027e30  20 74 6f 20 64 65 73 74  69 6e 61 74 69 6f 6e 20  | to destination |
00027e40  62 75 66 66 65 72 0a 09  52 33 20 3d 09 53 69 7a  |buffer..R3 =.Siz|
00027e50  65 20 6f 66 20 62 75 66  66 65 72 0a 3c 3d 09 52  |e of buffer.<=.R|
00027e60  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 6d  |1 =.pointer to m|
00027e70  65 6e 75 20 64 61 74 61  0a 09 52 32 20 3d 09 70  |enu data..R2 =.p|
00027e80  6f 69 6e 74 65 72 20 75  70 64 61 74 65 64 20 74  |ointer updated t|
00027e90  6f 20 65 6e 64 20 6f 66  20 64 61 74 61 20 69 6e  |o end of data in|
00027ea0  20 62 75 66 66 65 72 0a  09 52 33 20 3d 09 62 79  | buffer..R3 =.by|
00027eb0  74 65 73 20 72 65 6d 61  69 6e 69 6e 67 20 69 6e  |tes remaining in|
00027ec0  20 62 75 66 66 65 72 0a  0a 54 68 69 73 20 53 57  | buffer..This SW|
00027ed0  49 20 63 72 65 61 74 65  73 20 61 20 6d 65 6e 75  |I creates a menu|
00027ee0  20 73 74 72 75 63 74 75  72 65 20 66 72 6f 6d 20  | structure from |
00027ef0  61 20 73 6b 65 6c 65 74  6f 6e 20 6d 65 6e 75 20  |a skeleton menu |
00027f00  6f 66 20 74 6f 6b 65 6e  73 2e 20 49 66 20 74 68  |of tokens. If th|
00027f10  65 20 6d 65 6e 75 20 69  74 65 6d 20 69 73 20 77  |e menu item is w|
00027f20  72 69 74 65 61 62 6c 65  20 61 6e 64 20 69 6e 64  |riteable and ind|
00027f30  69 72 65 63 74 65 64 2c  20 74 68 65 20 63 6f 72  |irected, the cor|
00027f40  72 65 73 70 6f 6e 64 69  6e 67 20 33 20 77 6f 72  |responding 3 wor|
00027f50  64 73 20 69 6e 20 74 68  65 20 64 65 73 74 69 6e  |ds in the destin|
00027f60  61 74 69 6f 6e 20 62 75  66 66 65 72 20 73 68 6f  |ation buffer sho|
00027f70  75 6c 64 20 62 65 20 73  65 74 20 74 6f 20 63 6f  |uld be set to co|
00027f80  72 72 65 63 74 20 76 61  6c 75 65 73 20 2a 62 65  |rrect values *be|
00027f90  66 6f 72 65 2a 20 63 61  6c 6c 69 6e 67 20 74 68  |fore* calling th|
00027fa0  69 73 20 53 57 49 2e 20  49 66 20 74 68 65 20 6d  |is SWI. If the m|
00027fb0  65 6e 75 20 69 74 65 6d  20 69 73 20 69 6e 64 69  |enu item is indi|
00027fc0  72 65 63 74 65 64 20 61  6e 64 20 6e 6f 74 20 77  |rected and not w|
00027fd0  72 69 74 65 61 62 6c 65  20 74 68 65 6e 20 61 20  |riteable then a |
00027fe0  70 6f 69 6e 74 65 72 20  69 6e 74 6f 20 74 68 65  |pointer into the|
00027ff0  20 6d 65 73 73 61 67 65  20 66 69 6c 65 20 77 69  | message file wi|
00028000  6c 6c 20 62 65 20 73 74  6f 72 65 64 20 69 6e 20  |ll be stored in |
00028010  74 68 65 20 6d 65 6e 75  20 73 74 72 75 63 74 75  |the menu structu|
00028020  72 65 20 63 72 65 61 74  65 64 2e 20 49 66 20 74  |re created. If t|
00028030  68 65 20 6d 65 73 73 61  67 65 20 66 69 6c 65 20  |he message file |
00028040  69 73 20 68 65 6c 64 20  69 6e 20 52 4d 41 20 74  |is held in RMA t|
00028050  68 69 73 20 70 6f 69 6e  74 65 72 20 28 61 6e 64  |his pointer (and|
00028060  20 68 65 6e 63 65 20 74  68 65 20 6d 65 6e 75 20  | hence the menu |
00028070  73 74 72 75 63 74 75 72  65 29 20 77 69 6c 6c 20  |structure) will |
00028080  62 65 63 6f 6d 65 20 69  6e 76 61 6c 69 64 20 61  |become invalid a|
00028090  66 74 65 72 20 3c 53 65  72 76 69 63 65 5f 4d 65  |fter <Service_Me|
000280a0  73 73 61 67 65 46 69 6c  65 43 6c 6f 73 65 64 3d  |ssageFileClosed=|
000280b0  3e 73 65 72 76 69 63 65  5f 35 45 3e 20 69 73 20  |>service_5E> is |
000280c0  69 73 73 75 65 64 20 2d  20 79 6f 75 72 20 61 70  |issued - your ap|
000280d0  70 6c 69 63 61 74 69 6f  6e 20 6d 75 73 74 20 74  |plication must t|
000280e0  72 61 70 20 74 68 69 73  20 73 65 72 76 69 63 65  |rap this service|
000280f0  20 63 61 6c 6c 20 61 6e  64 20 64 65 6c 65 74 65  | call and delete|
00028100  20 74 68 65 20 6d 65 6e  75 20 69 66 20 69 74 20  | the menu if it |
00028110  69 73 20 69 73 73 75 65  64 2e 00 00 44 41 54 41  |is issued...DATA|
00028120  b4 01 00 00 4d 65 6e 75  20 64 65 66 69 6e 69 74  |....Menu definit|
00028130  69 6f 6e 0a 30 09 54 6f  6b 65 6e 20 66 6f 72 20  |ion.0.Token for |
00028140  6d 65 6e 75 20 74 69 74  6c 65 2c 20 6f 72 20 6e  |menu title, or n|
00028150  75 6c 6c 20 66 6f 72 20  6e 6f 20 6d 6f 72 65 0a  |ull for no more.|
00028160  0a 6e 09 36 20 62 79 74  65 73 20 3a 0a 09 20 20  |.n.6 bytes :..  |
00028170  6d 65 6e 75 20 74 69 74  6c 65 20 66 6f 72 65 67  |menu title foreg|
00028180  72 6f 75 6e 64 20 61 6e  64 20 66 72 61 6d 65 20  |round and frame |
00028190  63 6f 6c 6f 75 72 0a 09  20 20 6d 65 6e 75 20 74  |colour..  menu t|
000281a0  69 74 6c 65 20 62 61 63  6b 67 72 6f 75 6e 64 20  |itle background |
000281b0  63 6f 6c 6f 75 72 0a 09  20 20 6d 65 6e 75 20 77  |colour..  menu w|
000281c0  6f 72 6b 20 61 72 65 61  20 66 6f 72 65 67 72 6f  |ork area foregro|
000281d0  75 6e 64 20 63 6f 6c 6f  75 72 0a 09 20 20 6d 65  |und colour..  me|
000281e0  6e 75 20 77 6f 72 6b 20  61 72 65 61 20 62 61 63  |nu work area bac|
000281f0  6b 67 72 6f 75 6e 64 20  63 6f 6c 6f 75 72 0a 09  |kground colour..|
00028200  20 20 68 65 69 67 68 74  20 6f 66 20 6d 65 6e 75  |  height of menu|
00028210  20 69 74 65 6d 73 0a 09  20 20 67 61 70 20 62 65  | items..  gap be|
00028220  74 77 65 65 6e 20 69 74  65 6d 73 0a 0a 6e 2b 36  |tween items..n+6|
00028230  09 6d 20 6d 65 6e 75 20  69 74 65 6d 73 20 3a 0a  |.m menu items :.|
00028240  09 20 20 54 6f 6b 65 6e  20 66 6f 72 20 6d 65 6e  |.  Token for men|
00028250  75 20 69 74 65 6d 0a 09  20 20 57 6f 72 64 2d 61  |u item..  Word-a|
00028260  6c 69 67 6e 0a 09 20 20  33 20 57 6f 72 64 73 20  |lign..  3 Words |
00028270  3a 0a 09 20 20 20 20 4d  65 6e 75 20 66 6c 61 67  |:..    Menu flag|
00028280  73 20 28 62 69 74 20 37  20 73 65 74 20 66 6f 72  |s (bit 7 set for|
00028290  20 6c 61 73 74 20 69 74  65 6d 29 0a 09 20 20 20  | last item)..   |
000282a0  20 4f 66 66 73 65 74 20  74 6f 20 73 75 62 6d 65  | Offset to subme|
000282b0  6e 75 20 28 20 30 20 66  6f 72 20 6e 6f 6e 65 29  |nu ( 0 for none)|
000282c0  0a 09 20 20 20 20 49 63  6f 6e 20 66 6c 61 67 73  |..    Icon flags|
000282d0  44 41 54 41 17 04 00 00  4d 65 73 73 61 67 65 54  |DATA....MessageT|
000282e0  72 61 6e 73 5f 4f 70 65  6e 46 69 6c 65 20 20 28  |rans_OpenFile  (|
000282f0  26 34 31 35 30 31 29 0a  23 50 61 72 65 6e 74 20  |&41501).#Parent |
00028300  4d 65 73 73 61 67 65 54  72 61 6e 73 5f 0a 3d 3e  |MessageTrans_.=>|
00028310  09 52 30 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R0 =.pointer to|
00028320  20 34 2d 77 6f 72 64 20  64 61 74 61 20 73 74 72  | 4-word data str|
00028330  75 63 74 75 72 65 0a 09  52 31 20 3d 09 70 6f 69  |ucture..R1 =.poi|
00028340  6e 74 65 72 20 74 6f 20  66 69 6c 65 6e 61 6d 65  |nter to filename|
00028350  0a 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R2 =.pointer t|
00028360  6f 20 62 75 66 66 65 72  20 66 6f 72 20 66 69 6c  |o buffer for fil|
00028370  65 20 64 61 74 61 2c 20  6f 72 20 30 20 74 6f 20  |e data, or 0 to |
00028380  75 73 65 20 52 4d 41 0a  0a 54 68 69 73 20 53 57  |use RMA..This SW|
00028390  49 20 6f 70 65 6e 73 20  61 20 6d 65 73 73 61 67  |I opens a messag|
000283a0  65 2d 66 69 6c 65 2e 20  49 66 20 52 32 20 3d 20  |e-file. If R2 = |
000283b0  30 2c 20 74 68 65 6e 20  74 68 65 20 64 61 74 61  |0, then the data|
000283c0  2d 73 74 72 75 63 74 75  72 65 20 69 6e 20 52 30  |-structure in R0|
000283d0  20 61 6e 64 20 74 68 65  20 66 69 6c 65 6e 61 6d  | and the filenam|
000283e0  65 20 69 6e 20 52 31 20  62 6f 74 68 20 6d 75 73  |e in R1 both mus|
000283f0  74 20 62 65 20 69 6e 20  74 68 65 20 52 4d 41 2e  |t be in the RMA.|
00028400  0a 0a 41 6e 20 61 70 70  6c 69 63 61 74 69 6f 6e  |..An application|
00028410  20 6d 61 79 20 64 65 63  69 64 65 20 74 68 61 74  | may decide that|
00028420  20 69 74 20 77 6f 75 6c  64 20 6c 69 6b 65 20 74  | it would like t|
00028430  6f 20 62 75 66 66 65 72  20 74 68 65 20 66 69 6c  |o buffer the fil|
00028440  65 20 69 6e 20 69 74 73  20 6f 77 6e 20 77 6f 72  |e in its own wor|
00028450  6b 73 70 61 63 65 20 28  72 61 74 68 65 72 20 74  |kspace (rather t|
00028460  68 61 6e 20 74 68 65 20  52 4d 41 29 20 69 66 20  |han the RMA) if |
00028470  69 74 20 6e 65 65 64 73  20 74 6f 20 62 65 20 6c  |it needs to be l|
00028480  6f 61 64 65 64 2c 20 6f  72 20 75 73 65 20 74 68  |oaded, or use th|
00028490  65 20 66 69 6c 65 20 64  69 72 65 63 74 6c 79 20  |e file directly |
000284a0  69 66 20 69 74 20 69 73  20 61 6c 72 65 61 64 79  |if it is already|
000284b0  20 69 6e 20 6d 65 6d 6f  72 79 2e 20 20 54 6f 20  | in memory.  To |
000284c0  64 6f 20 74 68 69 73 3a  0a 0a 23 66 43 6f 64 65  |do this:..#fCode|
000284d0  0a 23 49 6e 64 65 6e 74  20 34 0a 23 57 72 61 70  |.#Indent 4.#Wrap|
000284e0  20 6f 66 66 0a 53 59 53  20 22 3c 4d 65 73 73 61  | off.SYS "<Messa|
000284f0  67 65 54 72 61 6e 73 5f  46 69 6c 65 49 6e 66 6f  |geTrans_FileInfo|
00028500  3e 22 2c 2c 66 69 6c 65  6e 61 6d 65 24 20 54 4f  |>",,filename$ TO|
00028510  20 66 6c 61 67 73 25 2c  2c 73 69 7a 65 25 0a 49  | flags%,,size%.I|
00028520  46 20 66 6c 61 67 73 25  20 41 4e 44 20 31 20 54  |F flags% AND 1 T|
00028530  48 45 4e 20 62 75 66 66  65 72 25 3d 30 20 45 4c  |HEN buffer%=0 EL|
00028540  53 45 20 62 75 66 66 65  72 25 3d 46 4e 61 6c 6c  |SE buffer%=FNall|
00028550  6f 63 28 73 69 7a 65 25  29 0a 53 59 53 20 22 3c  |oc(size%).SYS "<|
00028560  4f 53 5f 4d 6f 64 75 6c  65 3e 22 2c 36 2c 2c 2c  |OS_Module>",6,,,|
00028570  31 37 2b 4c 45 4e 66 69  6c 65 6e 61 6d 65 24 20  |17+LENfilename$ |
00028580  54 4f 20 2c 2c 66 69 6c  65 64 65 73 63 25 0a 24  |TO ,,filedesc%.$|
00028590  28 66 69 6c 65 64 65 73  63 25 2b 31 36 29 3d 66  |(filedesc%+16)=f|
000285a0  69 6c 65 6e 61 6d 65 24  0a 53 59 53 20 22 4d 65  |ilename$.SYS "Me|
000285b0  73 73 61 67 65 54 72 61  6e 73 5f 4f 70 65 6e 46  |ssageTrans_OpenF|
000285c0  69 6c 65 22 2c 66 69 6c  65 64 65 73 63 25 2c 66  |ile",filedesc%,f|
000285d0  69 6c 65 64 65 73 63 25  2b 31 36 2c 62 75 66 66  |iledesc%+16,buff|
000285e0  65 72 25 0a 23 57 72 61  70 0a 23 66 0a 23 49 6e  |er%.#Wrap.#f.#In|
000285f0  64 65 6e 74 0a 0a 77 68  65 72 65 20 46 4e 61 6c  |dent..where FNal|
00028600  6c 6f 63 28 29 20 61 6c  6c 6f 63 61 74 65 73 20  |loc() allocates |
00028610  61 20 62 75 66 66 65 72  20 6f 66 20 61 20 67 69  |a buffer of a gi|
00028620  76 65 6e 20 73 69 7a 65  2c 20 62 79 20 75 73 69  |ven size, by usi|
00028630  6e 67 20 74 68 65 20 3c  57 69 6d 70 5f 53 6c 6f  |ng the <Wimp_Slo|
00028640  74 53 69 7a 65 3d 3e 57  69 6d 70 3a 57 69 6d 70  |tSize=>Wimp:Wimp|
00028650  5f 53 6c 6f 74 53 69 7a  65 3e 20 6f 72 20 22 45  |_SlotSize> or "E|
00028660  4e 44 3d 22 20 63 6f 6d  6d 61 6e 64 2e 20 20 4e  |ND=" command.  N|
00028670  6f 74 65 20 74 68 61 74  20 69 6e 20 66 61 63 74  |ote that in fact|
00028680  20 74 68 65 20 66 69 6c  65 6e 61 6d 65 20 61 6e  | the filename an|
00028690  64 20 66 69 6c 65 20 64  65 73 63 72 69 70 74 6f  |d file descripto|
000286a0  72 20 6f 6e 6c 79 20 6e  65 65 64 20 74 6f 20 62  |r only need to b|
000286b0  65 20 69 6e 20 74 68 65  20 52 4d 41 20 69 66 20  |e in the RMA if |
000286c0  52 32 3d 30 20 6f 6e 20  65 6e 74 72 79 20 74 6f  |R2=0 on entry to|
000286d0  20 4d 65 73 73 61 67 65  54 72 61 6e 73 5f 4f 70  | MessageTrans_Op|
000286e0  65 6e 46 69 6c 65 2e 00  44 41 54 41 84 00 00 00  |enFile..DATA....|
000286f0  54 6f 6b 65 6e 0a 54 6f  6b 65 6e 20 69 73 20 74  |Token.Token is t|
00028700  65 72 6d 69 6e 61 74 65  64 20 62 79 20 61 6e 79  |erminated by any|
00028710  20 63 6f 6e 74 72 6f 6c  20 63 68 61 72 2c 20 73  | control char, s|
00028720  70 61 63 65 2c 20 22 2c  22 20 6f 72 20 22 29 22  |pace, "," or ")"|
00028730  2e 0a 49 74 20 63 61 6e  20 61 6c 73 6f 20 62 65  |..It can also be|
00028740  20 6f 66 20 74 68 65 20  66 6f 72 6d 20 74 6f 6b  | of the form tok|
00028750  65 6e 3a 64 65 66 61 75  6c 74 20 74 65 72 6d 69  |en:default termi|
00028760  6e 61 74 65 64 20 62 79  20 5c 5c 30 44 41 54 41  |nated by \\0DATA|
00028770  82 02 00 00 4d 65 73 73  61 67 65 54 72 61 6e 73  |....MessageTrans|
00028780  5f 47 53 4c 6f 6f 6b 75  70 20 20 28 26 34 31 35  |_GSLookup  (&415|
00028790  30 37 29 0a 23 50 61 72  65 6e 74 20 4d 65 73 73  |07).#Parent Mess|
000287a0  61 67 65 54 72 61 6e 73  5f 0a 3d 3e 09 52 30 20  |ageTrans_.=>.R0 |
000287b0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 34 2d 77  |=.pointer to 4-w|
000287c0  6f 72 64 20 64 61 74 61  20 73 74 72 75 63 74 75  |ord data structu|
000287d0  72 65 2c 20 6f 72 20 30  20 66 6f 72 20 67 6c 6f  |re, or 0 for glo|
000287e0  62 61 6c 20 6d 65 73 73  61 67 65 73 0a 09 52 31  |bal messages..R1|
000287f0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 3c 54  | =.pointer to <T|
00028800  6f 6b 65 6e 3d 3e 6d 65  73 73 61 67 65 74 72 61  |oken=>messagetra|
00028810  6e 73 5f 74 6f 6b 65 6e  3e 0a 09 52 32 20 3d 09  |ns_token>..R2 =.|
00028820  70 6f 69 6e 74 65 72 20  74 6f 20 62 75 66 66 65  |pointer to buffe|
00028830  72 0a 09 52 33 20 3d 09  62 75 66 66 65 72 20 73  |r..R3 =.buffer s|
00028840  69 7a 65 0a 09 52 34 20  3d 09 70 6f 69 6e 74 65  |ize..R4 =.pointe|
00028850  72 20 74 6f 20 70 61 72  61 6d 65 74 65 72 20 30  |r to parameter 0|
00028860  2c 20 6f 72 20 30 20 69  66 20 6e 6f 6e 65 0a 09  |, or 0 if none..|
00028870  52 35 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R5 =.pointer to |
00028880  70 61 72 61 6d 65 74 65  72 20 31 2c 20 6f 72 20  |parameter 1, or |
00028890  30 20 69 66 20 6e 6f 6e  65 0a 09 52 36 20 3d 09  |0 if none..R6 =.|
000288a0  70 6f 69 6e 74 65 72 20  74 6f 20 70 61 72 61 6d  |pointer to param|
000288b0  65 74 65 72 20 32 2c 20  6f 72 20 30 20 69 66 20  |eter 2, or 0 if |
000288c0  6e 6f 6e 65 0a 09 52 37  20 3d 09 70 6f 69 6e 74  |none..R7 =.point|
000288d0  65 72 20 74 6f 20 70 61  72 61 6d 65 74 65 72 20  |er to parameter |
000288e0  33 2c 20 6f 72 20 30 20  69 66 20 6e 6f 6e 65 0a  |3, or 0 if none.|
000288f0  3c 3d 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |<=.R1 =.pointer |
00028900  74 6f 20 74 6f 6b 65 6e  2d 74 65 72 6d 69 6e 61  |to token-termina|
00028910  74 6f 72 0a 09 52 32 20  3d 09 72 65 73 75 6c 74  |tor..R2 =.result|
00028920  20 73 74 72 69 6e 67 0a  09 52 33 20 3d 09 73 69  | string..R3 =.si|
00028930  7a 65 20 6f 66 20 72 65  73 75 6c 74 0a 0a 54 68  |ze of result..Th|
00028940  69 73 20 53 57 49 20 69  73 20 6c 69 6b 65 20 3c  |is SWI is like <|
00028950  4d 65 73 73 61 67 65 54  72 61 6e 73 5f 4c 6f 6f  |MessageTrans_Loo|
00028960  6b 55 70 3e 20 65 78 63  65 70 74 20 74 68 61 74  |kUp> except that|
00028970  20 74 68 65 20 72 65 73  75 6c 74 20 69 73 20 74  | the result is t|
00028980  68 65 6e 20 3c 47 53 54  72 61 6e 73 27 64 3d 3e  |hen <GSTrans'd=>|
00028990  4f 53 5f 47 53 54 72 61  6e 73 3e 20 62 65 66 6f  |OS_GSTrans> befo|
000289a0  72 65 20 72 65 74 75 72  6e 2e 20 49 66 20 52 32  |re return. If R2|
000289b0  20 3d 20 30 20 6f 6e 20  65 6e 74 72 79 20 74 68  | = 0 on entry th|
000289c0  69 73 20 63 61 6c 6c 20  69 73 20 69 64 65 6e 74  |is call is ident|
000289d0  69 63 61 6c 20 74 6f 20  3c 4d 65 73 73 61 67 65  |ical to <Message|
000289e0  54 72 61 6e 73 5f 4c 6f  6f 6b 55 70 3e 2e 00 00  |Trans_LookUp>...|
000289f0  44 41 54 41 8b 02 00 00  4d 65 73 73 61 67 65 54  |DATA....MessageT|
00028a00  72 61 6e 73 5f 45 6e 75  6d 65 72 61 74 65 54 6f  |rans_EnumerateTo|
00028a10  6b 65 6e 73 20 20 28 26  34 31 35 30 35 29 0a 23  |kens  (&41505).#|
00028a20  50 61 72 65 6e 74 20 4d  65 73 73 61 67 65 54 72  |Parent MessageTr|
00028a30  61 6e 73 5f 0a 3d 3e 09  52 30 20 3d 09 70 6f 69  |ans_.=>.R0 =.poi|
00028a40  6e 74 65 72 20 74 6f 20  34 2d 77 6f 72 64 20 64  |nter to 4-word d|
00028a50  61 74 61 20 73 74 72 75  63 74 75 72 65 20 28 6e  |ata structure (n|
00028a60  6f 74 20 30 29 0a 09 52  31 20 3d 09 70 6f 69 6e  |ot 0)..R1 =.poin|
00028a70  74 65 72 20 74 6f 20 74  6f 6b 65 6e 20 28 70 6f  |ter to token (po|
00028a80  73 73 69 62 6c 79 20 3c  77 69 6c 64 63 61 72 64  |ssibly <wildcard|
00028a90  65 64 3d 3e 2e 77 69 6c  64 63 61 72 64 3e 29 0a  |ed=>.wildcard>).|
00028aa0  09 52 32 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R2 =.pointer to|
00028ab0  20 62 75 66 66 65 72 20  66 6f 72 20 72 65 73 75  | buffer for resu|
00028ac0  6c 74 0a 09 52 33 20 3d  09 73 69 7a 65 20 6f 66  |lt..R3 =.size of|
00028ad0  20 62 75 66 66 65 72 0a  09 52 34 20 3d 09 69 6e  | buffer..R4 =.in|
00028ae0  64 65 78 20 28 30 20 66  6f 72 20 66 69 72 73 74  |dex (0 for first|
00028af0  20 74 69 6d 65 29 0a 3c  3d 09 52 30 2c 20 52 31  | time).<=.R0, R1|
00028b00  20 70 72 65 73 65 72 76  65 64 0a 09 52 32 20 3d  | preserved..R2 =|
00028b10  09 30 20 69 66 20 6e 6f  20 6d 6f 72 65 20 6d 61  |.0 if no more ma|
00028b20  74 63 68 69 6e 67 20 74  6f 6b 65 6e 73 2c 20 65  |tching tokens, e|
00028b30  6c 73 65 20 70 72 65 73  65 72 76 65 64 0a 09 52  |lse preserved..R|
00028b40  33 20 3d 09 6c 65 6e 67  74 68 20 6f 66 20 72 65  |3 =.length of re|
00028b50  73 75 6c 74 20 65 78 63  6c 75 64 69 6e 67 20 74  |sult excluding t|
00028b60  65 72 6d 69 6e 61 74 6f  72 0a 09 52 34 20 3d 09  |erminator..R4 =.|
00028b70  6e 65 78 74 20 69 6e 64  65 78 0a 0a 54 68 69 73  |next index..This|
00028b80  20 53 57 49 20 6c 6f 6f  6b 73 20 75 70 20 2a 74  | SWI looks up *t|
00028b90  6f 6b 65 6e 73 2a 20 74  68 61 74 20 6d 61 74 63  |okens* that matc|
00028ba0  68 20 74 68 65 20 67 69  76 65 6e 20 77 69 6c 64  |h the given wild|
00028bb0  63 61 72 64 65 64 20 74  6f 6b 65 6e 20 73 70 65  |carded token spe|
00028bc0  63 69 66 69 63 61 74 69  6f 6e 2e 20 54 68 65 20  |cification. The |
00028bd0  74 6f 6b 65 6e 20 72 65  74 75 72 6e 65 64 20 69  |token returned i|
00028be0  6e 20 74 68 65 20 62 75  66 66 65 72 20 68 61 73  |n the buffer has|
00028bf0  20 74 68 65 20 73 61 6d  65 20 74 65 72 6d 69 6e  | the same termin|
00028c00  61 74 6f 72 20 61 73 20  74 68 65 20 77 69 6c 64  |ator as the wild|
00028c10  63 61 72 64 20 69 6e 20  52 31 2e 0a 23 73 75 62  |card in R1..#sub|
00028c20  70 61 67 65 20 77 69 6c  64 63 61 72 64 0a 4d 65  |page wildcard.Me|
00028c30  73 73 61 67 65 54 72 61  6e 73 20 74 6f 6b 65 6e  |ssageTrans token|
00028c40  20 77 69 6c 64 63 61 72  64 73 0a 3f 09 6d 61 74  | wildcards.?.mat|
00028c50  63 68 20 31 20 63 68 61  72 61 63 74 65 72 0a 2a  |ch 1 character.*|
00028c60  09 6d 61 74 63 68 20 30  20 6f 72 20 6d 6f 72 65  |.match 0 or more|
00028c70  20 63 68 61 72 61 63 74  65 72 73 00 44 41 54 41  | characters.DATA|
00028c80  fb 00 00 00 4d 65 73 73  61 67 65 54 72 61 6e 73  |....MessageTrans|
00028c90  5f 43 6f 70 79 45 72 72  6f 72 20 20 28 26 34 31  |_CopyError  (&41|
00028ca0  35 30 38 29 0a 23 50 61  72 65 6e 74 20 4d 65 73  |508).#Parent Mes|
00028cb0  73 61 67 65 54 72 61 6e  73 5f 0a 3d 3e 09 52 30  |sageTrans_.=>.R0|
00028cc0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 3c 65  | =.pointer to <e|
00028cd0  72 72 6f 72 20 62 6c 6f  63 6b 3d 3e 73 77 69 5f  |rror block=>swi_|
00028ce0  65 72 72 6f 72 62 6c 6f  63 6b 3e 0a 3c 3d 09 52  |errorblock>.<=.R|
00028cf0  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 65  |0 =.pointer to e|
00028d00  72 72 6f 72 20 62 75 66  66 65 72 20 75 73 65 64  |rror buffer used|
00028d10  0a 0a 54 68 69 73 20 63  61 6c 6c 20 63 6f 70 69  |..This call copi|
00028d20  65 73 20 61 6e 20 65 72  72 6f 72 20 6d 65 73 73  |es an error mess|
00028d30  61 67 65 20 74 6f 20 6f  6e 65 20 6f 66 20 74 68  |age to one of th|
00028d40  65 20 69 6e 74 65 72 6e  61 6c 20 62 75 66 66 65  |e internal buffe|
00028d50  72 73 20 75 73 65 64 20  62 79 20 3c 4d 65 73 73  |rs used by <Mess|
00028d60  61 67 65 54 72 61 6e 73  5f 45 72 72 6f 72 4c 6f  |ageTrans_ErrorLo|
00028d70  6f 6b 75 70 3e 2e 0a 00  44 41 54 41 86 04 00 00  |okup>...DATA....|
00028d80  4d 65 73 73 61 67 65 54  72 61 6e 73 5f 45 72 72  |MessageTrans_Err|
00028d90  6f 72 4c 6f 6f 6b 75 70  20 20 28 26 34 31 35 30  |orLookup  (&4150|
00028da0  36 29 0a 23 50 61 72 65  6e 74 20 4d 65 73 73 61  |6).#Parent Messa|
00028db0  67 65 54 72 61 6e 73 5f  0a 3d 3e 09 52 7b 2a 7d  |geTrans_.=>.R{*}|
00028dc0  30 7b 2a 7d 20 3d 09 70  6f 69 6e 74 65 72 20 74  |0{*} =.pointer t|
00028dd0  6f 20 3c 65 72 72 6f 72  20 62 6c 6f 63 6b 3d 3e  |o <error block=>|
00028de0  4d 65 73 73 61 67 65 54  72 61 6e 73 5f 65 72 72  |MessageTrans_err|
00028df0  6f 72 62 6c 6f 63 6b 3e  0a 09 52 7b 2a 7d 31 7b  |orblock>..R{*}1{|
00028e00  2a 7d 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |*} =.pointer to |
00028e10  34 2d 77 6f 72 64 20 64  61 74 61 20 73 74 72 75  |4-word data stru|
00028e20  63 74 75 72 65 2c 20 6f  72 20 30 20 66 6f 72 20  |cture, or 0 for |
00028e30  67 6c 6f 62 61 6c 20 6d  65 73 73 61 67 65 73 0a  |global messages.|
00028e40  09 52 32 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R2 =.pointer to|
00028e50  20 62 75 66 66 65 72 20  66 6f 72 20 72 65 73 75  | buffer for resu|
00028e60  6c 74 20 28 30 20 74 6f  20 75 73 65 20 69 6e 74  |lt (0 to use int|
00028e70  65 72 6e 61 6c 20 62 75  66 66 65 72 29 0a 09 52  |ernal buffer)..R|
00028e80  33 20 3d 09 62 75 66 66  65 72 20 73 69 7a 65 0a  |3 =.buffer size.|
00028e90  09 52 34 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R4 =.pointer to|
00028ea0  20 70 61 72 61 6d 65 74  65 72 20 30 2c 20 6f 72  | parameter 0, or|
00028eb0  20 30 20 69 66 20 6e 6f  6e 65 0a 09 52 35 20 3d  | 0 if none..R5 =|
00028ec0  09 70 6f 69 6e 74 65 72  20 74 6f 20 70 61 72 61  |.pointer to para|
00028ed0  6d 65 74 65 72 20 31 2c  20 6f 72 20 30 20 69 66  |meter 1, or 0 if|
00028ee0  20 6e 6f 6e 65 0a 09 52  36 20 3d 09 70 6f 69 6e  | none..R6 =.poin|
00028ef0  74 65 72 20 74 6f 20 70  61 72 61 6d 65 74 65 72  |ter to parameter|
00028f00  20 32 2c 20 6f 72 20 30  20 69 66 20 6e 6f 6e 65  | 2, or 0 if none|
00028f10  0a 09 52 37 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R7 =.pointer t|
00028f20  6f 20 70 61 72 61 6d 65  74 65 72 20 33 2c 20 6f  |o parameter 3, o|
00028f30  72 20 30 20 69 66 20 6e  6f 6e 65 0a 3c 3d 09 52  |r 0 if none.<=.R|
00028f40  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 65  |0 =.pointer to e|
00028f50  72 72 6f 72 20 62 75 66  66 65 72 20 75 73 65 64  |rror buffer used|
00028f60  0a 09 56 20 73 65 74 0a  0a 54 68 69 73 20 53 57  |..V set..This SW|
00028f70  49 20 69 73 20 6c 69 6b  65 20 3c 4d 65 73 73 61  |I is like <Messa|
00028f80  67 65 54 72 61 6e 73 5f  4c 6f 6f 6b 75 70 3e 20  |geTrans_Lookup> |
00028f90  65 78 63 65 70 74 20 74  68 61 74 20 69 74 20 69  |except that it i|
00028fa0  73 20 70 61 73 73 65 64  20 61 20 74 6f 6b 65 6e  |s passed a token|
00028fb0  20 69 6e 20 61 6e 20 65  72 72 6f 72 20 62 6c 6f  | in an error blo|
00028fc0  63 6b 20 69 6e 20 7b 2a  7d 52 30 7b 2a 7d 2e 20  |ck in {*}R0{*}. |
00028fd0  54 68 65 20 64 61 74 61  20 73 74 72 75 63 74 75  |The data structu|
00028fe0  72 65 20 69 73 20 69 6e  20 7b 2a 7d 52 31 7b 2a  |re is in {*}R1{*|
00028ff0  7d 2c 20 6e 6f 74 20 52  30 2e 20 49 66 20 74 68  |}, not R0. If th|
00029000  65 20 74 6f 6b 65 6e 20  69 73 20 6e 6f 74 20 66  |e token is not f|
00029010  6f 75 6e 64 20 69 6e 20  74 68 65 20 6d 65 73 73  |ound in the mess|
00029020  61 67 65 20 66 69 6c 65  20 73 70 65 63 69 66 69  |age file specifi|
00029030  65 64 2c 20 69 74 20 77  69 6c 6c 20 62 65 20 73  |ed, it will be s|
00029040  65 61 72 63 68 65 64 20  66 6f 72 20 69 6e 20 74  |earched for in t|
00029050  68 65 20 67 6c 6f 62 61  6c 20 6d 65 73 73 61 67  |he global messag|
00029060  65 20 66 69 6c 65 2e 20  49 66 20 52 32 20 3d 20  |e file. If R2 = |
00029070  30 20 6f 6e 20 65 6e 74  72 79 20 4d 65 73 73 61  |0 on entry Messa|
00029080  67 65 54 72 61 6e 73 20  77 69 6c 6c 20 75 73 65  |geTrans will use|
00029090  20 61 6e 20 69 6e 74 65  72 6e 61 6c 20 62 75 66  | an internal buf|
000290a0  66 65 72 2e 20 54 68 65  72 65 20 61 72 65 20 32  |fer. There are 2|
000290b0  20 66 6f 72 20 63 61 6c  6c 73 20 66 72 6f 6d 20  | for calls from |
000290c0  49 52 51 20 72 6f 75 74  69 6e 65 73 2c 20 61 6e  |IRQ routines, an|
000290d0  64 20 31 30 20 66 6f 72  20 66 6f 72 67 72 6f 75  |d 10 for forgrou|
000290e0  6e 64 20 70 72 6f 63 65  73 73 65 73 2c 20 77 68  |nd processes, wh|
000290f0  69 63 68 20 69 74 20 63  79 63 6c 65 73 20 74 68  |ich it cycles th|
00029100  72 6f 75 67 68 2e 0a 0a  54 6f 20 63 68 65 63 6b  |rough...To check|
00029110  20 74 68 61 74 20 79 6f  75 72 20 65 72 72 6f 72  | that your error|
00029120  20 6d 65 73 73 61 67 65  20 77 61 73 20 6c 6f 6f  | message was loo|
00029130  6b 65 64 20 75 70 20 28  72 61 74 68 65 72 20 74  |ked up (rather t|
00029140  68 61 6e 20 4d 65 73 73  61 67 65 54 72 61 6e 73  |han MessageTrans|
00029150  20 69 74 73 65 6c 66 20  72 65 70 6f 72 74 69 6e  | itself reportin|
00029160  67 20 61 6e 20 65 72 72  6f 72 29 20 76 65 72 69  |g an error) veri|
00029170  66 79 20 74 68 61 74 20  74 68 65 20 65 72 72 6f  |fy that the erro|
00029180  72 20 6e 75 6d 62 65 72  20 69 6e 20 74 68 65 20  |r number in the |
00029190  72 65 74 75 72 6e 65 64  20 62 6c 6f 63 6b 20 69  |returned block i|
000291a0  73 20 74 68 65 20 73 61  6d 65 20 61 73 20 74 68  |s the same as th|
000291b0  61 74 20 70 61 73 73 65  64 20 69 6e 2e 0a 23 20  |at passed in..# |
000291c0  44 6f 65 73 20 74 68 69  73 20 6d 65 61 6e 20 74  |Does this mean t|
000291d0  68 61 74 20 31 31 20 74  61 73 6b 77 69 6e 64 6f  |hat 11 taskwindo|
000291e0  77 73 20 63 61 6e 20 68  61 76 65 20 61 20 72 61  |ws can have a ra|
000291f0  63 65 20 63 6f 6e 64 69  74 69 6f 6e 3f 0a 00 00  |ce condition?...|
00029200  44 41 54 41 c4 00 00 00  4d 65 73 73 61 67 65 54  |DATA....MessageT|
00029210  72 61 6e 73 5f 45 72 72  6f 72 4c 6f 6f 6b 75 70  |rans_ErrorLookup|
00029220  20 62 6c 6f 63 6b 0a 23  50 61 72 65 6e 74 20 4d  | block.#Parent M|
00029230  65 73 73 61 67 65 54 72  61 6e 73 5f 45 72 72 6f  |essageTrans_Erro|
00029240  72 4c 6f 6f 6b 75 70 0a  4f 66 66 73 65 74 09 56  |rLookup.Offset.V|
00029250  61 6c 75 65 0a 23 6c 69  6e 65 0a 30 09 45 72 72  |alue.#line.0.Err|
00029260  6f 72 20 6e 75 6d 62 65  72 20 28 61 73 20 69 6e  |or number (as in|
00029270  20 61 20 3c 53 57 49 20  65 72 72 6f 72 20 62 6c  | a <SWI error bl|
00029280  6f 63 6b 3d 3e 73 77 69  5f 65 72 72 6f 72 62 6c  |ock=>swi_errorbl|
00029290  6f 63 6b 3e 29 0a 34 09  6e 75 6c 6c 20 74 65 72  |ock>).4.null ter|
000292a0  6d 69 6e 61 74 65 64 20  3c 54 6f 6b 65 6e 3d 3e  |minated <Token=>|
000292b0  6d 65 73 73 61 67 65 74  72 61 6e 73 5f 74 6f 6b  |messagetrans_tok|
000292c0  65 6e 3e 0a 44 49 52 24  4c 00 00 00 4c 00 00 00  |en>.DIR$L...L...|
000292d0  10 93 02 00 48 fd ff ff  1f d5 28 0c 3f 00 00 00  |....H.....(.?...|
000292e0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000292f0  50 93 02 00 48 ff ff ff  65 53 6d 27 dc 00 00 00  |P...H...eSm'....|
00029300  13 00 00 00 00 00 00 00  56 65 72 73 69 6f 6e 00  |........Version.|
00029310  44 41 54 41 3f 00 00 00  46 50 45 6d 75 6c 61 74  |DATA?...FPEmulat|
00029320  6f 72 0a 23 50 61 72 65  6e 74 20 21 52 6f 6f 74  |or.#Parent !Root|
00029330  0a 23 50 72 65 66 69 78  20 46 50 45 6d 75 6c 61  |.#Prefix FPEmula|
00029340  74 6f 72 5f 0a 3c 56 65  72 73 69 6f 6e 3e 0a 00  |tor_.<Version>..|
00029350  44 41 54 41 dc 00 00 00  46 50 45 6d 75 6c 61 74  |DATA....FPEmulat|
00029360  6f 72 5f 56 65 72 73 69  6f 6e 20 20 28 26 34 30  |or_Version  (&40|
00029370  34 38 30 29 0a 23 50 61  72 65 6e 74 20 46 50 45  |480).#Parent FPE|
00029380  6d 75 6c 61 74 6f 72 5f  0a 3c 3d 09 52 30 20 3d  |mulator_.<=.R0 =|
00029390  09 76 65 72 73 69 6f 6e  20 6f 66 20 46 50 45 6d  |.version of FPEm|
000293a0  75 6c 61 74 6f 72 20 2a  20 31 30 30 0a 0a 54 68  |ulator * 100..Th|
000293b0  69 73 20 53 57 49 20 72  65 74 75 72 6e 73 20 74  |is SWI returns t|
000293c0  68 65 20 76 65 72 73 69  6f 6e 20 6f 66 20 74 68  |he version of th|
000293d0  65 20 66 6c 6f 61 74 69  6e 67 20 70 6f 69 6e 74  |e floating point|
000293e0  20 65 6d 75 6c 61 74 6f  72 20 69 6e 20 75 73 65  | emulator in use|
000293f0  2e 0a 0a 23 74 61 62 0a  4e 6f 74 65 3a 09 54 68  |...#tab.Note:.Th|
00029400  65 20 50 52 4d 73 20 69  6e 63 6f 72 72 65 63 74  |e PRMs incorrect|
00029410  6c 79 20 63 6c 61 69 6d  20 74 68 69 73 20 74 6f  |ly claim this to|
00029420  20 62 65 20 69 6e 20 42  43 44 2e 0a 44 49 52 24  | be in BCD..DIR$|
00029430  b4 02 00 00 b4 02 00 00  e0 96 02 00 47 ff ff ff  |............G...|
00029440  23 cf 3e 20 ce 02 00 00  13 00 00 00 00 00 00 00  |#.> ............|
00029450  4f 70 65 6e 00 00 00 00  b0 99 02 00 47 ff ff ff  |Open........G...|
00029460  cf 1d 41 20 df 00 00 00  13 00 00 00 00 00 00 00  |..A ............|
00029470  43 6c 6f 73 65 00 00 00  90 9a 02 00 47 fd ff ff  |Close.......G...|
00029480  14 d4 41 20 19 01 00 00  13 00 00 00 00 00 00 00  |..A ............|
00029490  21 52 6f 6f 74 00 00 00  ac 9b 02 00 48 ff ff ff  |!Root.......H...|
000294a0  69 9f 82 20 8a 03 00 00  13 00 00 00 00 00 00 00  |i.. ............|
000294b0  46 75 6e 63 00 00 00 00  38 9f 02 00 48 fd ff ff  |Func....8...H...|
000294c0  9f 09 68 26 ed 00 00 00  13 00 00 00 00 00 00 00  |..h&............|
000294d0  46 75 6e 63 38 00 00 00  28 a0 02 00 48 fd ff ff  |Func8...(...H...|
000294e0  09 f8 80 2b d4 00 00 00  13 01 00 00 00 00 00 00  |...+............|
000294f0  41 72 67 73 00 00 00 00  84 aa 02 00 48 fd ff ff  |Args........H...|
00029500  bd f8 80 2b f0 00 00 00  13 01 00 00 00 00 00 00  |...+............|
00029510  46 69 6c 65 00 00 00 00  14 b8 02 00 48 fd ff ff  |File........H...|
00029520  48 15 b0 26 17 04 00 00  03 00 00 00 00 00 00 00  |H..&............|
00029530  46 75 6e 63 31 34 00 00  2c bc 02 00 48 fd ff ff  |Func14..,...H...|
00029540  93 19 b0 26 1f 03 00 00  03 00 00 00 00 00 00 00  |...&............|
00029550  66 75 6e 63 31 35 00 00  4c bf 02 00 48 fd ff ff  |func15..L...H...|
00029560  0f 14 84 20 31 02 00 00  03 00 00 00 00 00 00 00  |... 1...........|
00029570  46 75 6e 63 32 31 00 00  80 c1 02 00 48 fd ff ff  |Func21......H...|
00029580  0f 0f 85 20 4f 01 00 00  03 00 00 00 00 00 00 00  |... O...........|
00029590  46 75 6e 63 32 32 00 00  d0 c2 02 00 48 fd ff ff  |Func22......H...|
000295a0  95 5c 84 20 80 01 00 00  03 00 00 00 00 00 00 00  |.\. ............|
000295b0  46 75 6e 63 32 35 00 00  50 c4 02 00 48 fd ff ff  |Func25..P...H...|
000295c0  01 03 85 20 e3 00 00 00  03 00 00 00 00 00 00 00  |... ............|
000295d0  46 75 6e 63 32 36 00 00  34 c5 02 00 48 fd ff ff  |Func26..4...H...|
000295e0  a5 05 85 20 34 01 00 00  03 00 00 00 00 00 00 00  |... 4...........|
000295f0  46 75 6e 63 32 37 00 00  68 c6 02 00 48 fd ff ff  |Func27..h...H...|
00029600  71 06 85 20 35 01 00 00  03 00 00 00 00 00 00 00  |q.. 5...........|
00029610  46 75 6e 63 32 38 00 00  a0 c7 02 00 48 fd ff ff  |Func28......H...|
00029620  12 07 85 20 ba 01 00 00  03 00 00 00 00 00 00 00  |... ............|
00029630  46 75 6e 63 32 39 00 00  5c c9 02 00 48 fd ff ff  |Func29..\...H...|
00029640  dd 0f 85 20 6b 01 00 00  03 00 00 00 00 00 00 00  |... k...........|
00029650  46 75 6e 63 33 30 00 00  c8 ca 02 00 48 fd ff ff  |Func30......H...|
00029660  ae 08 85 20 37 01 00 00  03 00 00 00 00 00 00 00  |... 7...........|
00029670  46 75 6e 63 33 31 00 00  00 cc 02 00 48 fd ff ff  |Func31......H...|
00029680  7e ff 67 26 62 01 00 00  03 00 00 00 00 00 00 00  |~.g&b...........|
00029690  46 75 6e 63 33 32 00 00  64 cd 02 00 48 ff ff ff  |Func32..d...H...|
000296a0  1c 52 a0 1b de 01 00 00  13 00 00 00 00 00 00 00  |.R..............|
000296b0  47 65 74 42 79 74 65 73  00 00 00 00 44 cf 02 00  |GetBytes....D...|
000296c0  48 ff ff ff a6 5d a0 1b  4f 01 00 00 13 00 00 00  |H....]..O.......|
000296d0  00 00 00 00 50 75 74 42  79 74 65 73 00 00 00 00  |....PutBytes....|
000296e0  44 41 54 41 ce 02 00 00  49 6d 61 67 65 45 6e 74  |DATA....ImageEnt|
000296f0  72 79 5f 4f 70 65 6e 0a  23 50 61 72 65 6e 74 20  |ry_Open.#Parent |
00029700  49 6d 61 67 65 45 6e 74  72 79 5f 0a 3d 3e 09 52  |ImageEntry_.=>.R|
00029710  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 66  |1 =.pointer to f|
00029720  69 6c 65 6e 61 6d 65 0a  09 52 33 20 3d 09 46 69  |ilename..R3 =.Fi|
00029730  6c 65 53 77 69 74 63 68  20 66 69 6c 65 20 68 61  |leSwitch file ha|
00029740  6e 64 6c 65 20 77 68 69  63 68 20 77 69 6c 6c 20  |ndle which will |
00029750  62 65 20 61 6c 6c 6f 63  61 74 65 64 0a 09 52 36  |be allocated..R6|
00029760  20 3d 09 66 69 6c 65 20  68 61 6e 64 6c 65 20 6f  | =.file handle o|
00029770  66 20 69 6d 61 67 65 20  63 6f 6e 74 61 69 6e 69  |f image containi|
00029780  6e 67 20 6f 62 6a 65 63  74 0a 0a 3c 3d 09 52 30  |ng object..<=.R0|
00029790  20 3d 09 3c 66 69 6c 65  20 69 6e 66 6f 72 6d 61  | =.<file informa|
000297a0  74 69 6f 6e 20 77 6f 72  64 3d 3e 2e 66 69 6c 65  |tion word=>.file|
000297b0  69 6e 66 6f 3e 0a 09 52  31 20 3d 09 69 6e 74 65  |info>..R1 =.inte|
000297c0  72 6e 61 6c 20 66 69 6c  65 20 68 61 6e 64 6c 65  |rnal file handle|
000297d0  2c 20 6f 72 20 30 20 69  66 20 75 6e 61 62 6c 65  |, or 0 if unable|
000297e0  20 74 6f 20 6f 70 65 6e  0a 09 52 32 20 3d 09 62  | to open..R2 =.b|
000297f0  75 66 66 65 72 20 66 6f  72 20 46 69 6c 65 53 77  |uffer for FileSw|
00029800  69 74 63 68 20 74 6f 20  75 73 65 20 28 70 6f 77  |itch to use (pow|
00029810  65 72 73 20 6f 66 20 32  20 66 72 6f 6d 20 36 34  |ers of 2 from 64|
00029820  20 74 6f 20 31 30 32 34  29 0a 09 52 33 20 3d 09  | to 1024)..R3 =.|
00029830  66 69 6c 65 20 65 78 74  65 6e 74 0a 09 52 34 20  |file extent..R4 |
00029840  3d 09 73 70 61 63 65 20  61 6c 6c 6f 63 61 74 65  |=.space allocate|
00029850  64 20 74 6f 20 66 69 6c  65 20 28 6d 75 6c 74 69  |d to file (multi|
00029860  70 6c 65 20 6f 66 20 52  32 29 0a 09 0a 54 68 69  |ple of R2)...Thi|
00029870  73 20 65 6e 74 72 79 20  70 6f 69 6e 74 20 69 73  |s entry point is|
00029880  20 63 61 6c 6c 65 64 20  77 68 65 6e 20 61 6e 20  | called when an |
00029890  61 74 74 65 6d 70 74 20  69 73 20 6d 61 64 65 20  |attempt is made |
000298a0  74 6f 20 61 63 63 65 73  73 20 61 20 66 69 6c 65  |to access a file|
000298b0  20 69 6e 73 69 64 65 20  61 6e 20 69 6d 61 67 65  | inside an image|
000298c0  2e 20 54 68 65 20 69 6e  74 65 72 6e 61 6c 20 66  |. The internal f|
000298d0  69 6c 65 20 68 61 6e 64  6c 65 20 77 69 6c 6c 20  |ile handle will |
000298e0  62 65 20 72 65 66 65 72  72 65 64 20 74 6f 20 62  |be referred to b|
000298f0  79 20 46 69 6c 65 53 77  69 74 63 68 20 69 6e 20  |y FileSwitch in |
00029900  73 75 62 73 65 71 75 65  6e 74 20 66 69 6c 65 20  |subsequent file |
00029910  61 63 63 65 73 73 65 73  20 69 66 20 74 68 65 20  |accesses if the |
00029920  66 69 6c 65 20 77 61 73  20 73 75 63 63 65 73 73  |file was success|
00029930  66 75 6c 6c 79 20 6f 70  65 6e 65 64 2e 0a 23 0a  |fully opened..#.|
00029940  23 53 75 62 70 61 67 65  20 66 69 6c 65 69 6e 66  |#Subpage fileinf|
00029950  6f 0a 46 69 6c 65 20 69  6e 66 6f 72 6d 61 74 69  |o.File informati|
00029960  6f 6e 20 77 6f 72 64 20  28 69 6d 61 67 65 73 29  |on word (images)|
00029970  0a 42 69 74 09 4d 65 61  6e 69 6e 67 0a 23 4c 69  |.Bit.Meaning.#Li|
00029980  6e 65 0a 33 31 09 57 72  69 74 65 73 20 61 72 65  |ne.31.Writes are|
00029990  20 61 6c 6c 6f 77 65 64  0a 33 30 09 52 65 61 64  | allowed.30.Read|
000299a0  73 20 61 72 65 20 61 6c  6c 6f 77 65 64 0a 00 00  |s are allowed...|
000299b0  44 41 54 41 df 00 00 00  49 6d 61 67 65 45 6e 74  |DATA....ImageEnt|
000299c0  72 79 5f 43 6c 6f 73 65  0a 23 50 61 72 65 6e 74  |ry_Close.#Parent|
000299d0  20 49 6d 61 67 65 45 6e  74 72 79 5f 0a 3d 3e 09  | ImageEntry_.=>.|
000299e0  52 31 20 3d 09 69 6e 74  65 72 6e 61 6c 20 66 69  |R1 =.internal fi|
000299f0  6c 65 20 68 61 6e 64 6c  65 20 72 65 74 75 72 6e  |le handle return|
00029a00  65 64 20 62 79 20 3c 49  6d 61 67 65 45 6e 74 72  |ed by <ImageEntr|
00029a10  79 5f 4f 70 65 6e 3e 0a  09 52 32 20 3d 09 6e 65  |y_Open>..R2 =.ne|
00029a20  77 20 6c 6f 61 64 20 61  64 64 72 65 73 73 20 6f  |w load address o|
00029a30  66 20 66 69 6c 65 0a 09  52 33 20 3d 09 6e 65 77  |f file..R3 =.new|
00029a40  20 65 78 65 63 20 61 64  64 72 65 73 73 20 6f 66  | exec address of|
00029a50  20 66 69 6c 65 0a 0a 54  68 69 73 20 65 6e 74 72  | file..This entr|
00029a60  79 20 70 6f 69 6e 74 20  69 73 20 63 61 6c 6c 65  |y point is calle|
00029a70  64 20 77 68 65 6e 20 66  69 6c 65 73 20 61 72 65  |d when files are|
00029a80  20 62 65 69 6e 67 20 63  6c 6f 73 65 64 2e 0a 00  | being closed...|
00029a90  44 41 54 41 19 01 00 00  49 6d 61 67 65 45 6e 74  |DATA....ImageEnt|
00029aa0  72 79 20 2d 20 49 6d 61  67 65 20 66 69 6c 69 6e  |ry - Image filin|
00029ab0  67 20 73 79 73 74 65 6d  20 65 6e 74 72 79 20 70  |g system entry p|
00029ac0  6f 69 6e 74 73 0a 23 20  54 68 69 73 20 70 61 67  |oints.# This pag|
00029ad0  65 0a 23 50 61 72 65 6e  74 20 21 52 6f 6f 74 0a  |e.#Parent !Root.|
00029ae0  49 6d 61 67 65 20 66 69  6c 69 6e 67 20 73 79 73  |Image filing sys|
00029af0  74 65 6d 20 65 6e 74 72  79 20 70 6f 69 6e 74 73  |tem entry points|
00029b00  20 61 72 65 20 64 65 66  69 6e 65 64 20 62 79 20  | are defined by |
00029b10  74 68 65 20 69 6d 61 67  65 20 66 69 6c 69 6e 67  |the image filing|
00029b20  20 73 79 73 74 65 6d 20  69 6e 66 6f 72 6d 61 74  | system informat|
00029b30  69 6f 6e 20 62 6c 6f 63  6b 20 3a 0a 0a 23 66 48  |ion block :..#fH|
00029b40  34 0a 23 49 6e 63 6c 75  64 65 20 66 73 79 73 5f  |4.#Include fsys_|
00029b50  69 6d 61 67 65 5f 69 6e  66 6f 62 6c 6f 63 6b 0a  |image_infoblock.|
00029b60  0a 54 6f 20 63 72 65 61  74 65 20 61 6e 20 69 6d  |.To create an im|
00029b70  61 67 65 20 66 69 6c 69  6e 67 20 73 79 73 74 65  |age filing syste|
00029b80  6d 2c 20 75 73 65 20 3c  4f 53 5f 46 53 43 6f 6e  |m, use <OS_FSCon|
00029b90  74 72 6f 6c 20 33 35 3d  3e 4f 53 5f 46 53 43 6f  |trol 35=>OS_FSCo|
00029ba0  6e 74 72 6f 6c 33 35 3e  2e 00 00 00 44 41 54 41  |ntrol35>....DATA|
00029bb0  8a 03 00 00 49 6d 61 67  65 45 6e 74 72 79 5f 46  |....ImageEntry_F|
00029bc0  75 6e 63 0a 23 50 61 72  65 6e 74 20 49 6d 61 67  |unc.#Parent Imag|
00029bd0  65 45 6e 74 72 79 5f 0a  3d 3e 09 52 30 20 3d 09  |eEntry_.=>.R0 =.|
00029be0  3c 72 65 61 73 6f 6e 20  63 6f 64 65 3d 3e 2e 72  |<reason code=>.r|
00029bf0  65 61 73 6f 6e 3e 0a 09  52 31 20 3d 09 70 6f 69  |eason>..R1 =.poi|
00029c00  6e 74 65 72 20 74 6f 20  66 69 6c 65 6e 61 6d 65  |nter to filename|
00029c10  0a 09 6f 74 68 65 72 73  20 64 65 70 65 6e 64 61  |..others dependa|
00029c20  6e 74 20 6f 6e 20 63 61  6c 6c 0a 0a 54 68 69 73  |nt on call..This|
00029c30  20 65 6e 74 72 79 20 70  6f 69 6e 74 20 69 73 20  | entry point is |
00029c40  63 61 6c 6c 65 64 20 66  6f 72 20 6f 70 65 72 61  |called for opera|
00029c50  74 69 6f 6e 73 20 6f 6e  20 74 68 65 20 66 69 6c  |tions on the fil|
00029c60  69 6e 67 20 73 79 73 74  65 6d 20 69 6e 20 67 65  |ing system in ge|
00029c70  6e 65 72 61 6c 2e 0a 23  0a 23 53 75 62 70 61 67  |neral..#.#Subpag|
00029c80  65 20 72 65 61 73 6f 6e  0a 49 6d 61 67 65 45 6e  |e reason.ImageEn|
00029c90  74 72 79 5f 46 75 6e 63  20 72 65 61 73 6f 6e 20  |try_Func reason |
00029ca0  63 6f 64 65 73 0a 52 65  61 73 6f 6e 09 4d 65 61  |codes.Reason.Mea|
00029cb0  6e 69 6e 67 0a 23 4c 69  6e 65 0a 38 09 3c 52 65  |ning.#Line.8.<Re|
00029cc0  6e 61 6d 65 20 6f 62 6a  65 63 74 3d 3e 49 6d 61  |name object=>Ima|
00029cd0  67 65 45 6e 74 72 79 5f  46 75 6e 63 38 3e 0a 31  |geEntry_Func8>.1|
00029ce0  34 09 3c 52 65 61 64 20  64 69 72 65 63 74 6f 72  |4.<Read director|
00029cf0  79 20 65 6e 74 72 69 65  73 3d 3e 49 6d 61 67 65  |y entries=>Image|
00029d00  45 6e 74 72 79 5f 46 75  6e 63 31 34 3e 0a 31 35  |Entry_Func14>.15|
00029d10  09 3c 52 65 61 64 20 64  69 72 65 63 74 6f 72 79  |.<Read directory|
00029d20  20 65 6e 74 72 69 65 73  20 61 6e 64 20 69 6e 66  | entries and inf|
00029d30  6f 3d 3e 49 6d 61 67 65  45 6e 74 72 79 5f 46 75  |o=>ImageEntry_Fu|
00029d40  6e 63 31 35 3e 0a 32 31  09 3c 4e 6f 74 69 66 69  |nc15>.21.<Notifi|
00029d50  63 61 74 69 6f 6e 20 6f  66 20 61 20 6e 65 77 20  |cation of a new |
00029d60  69 6d 61 67 65 3d 3e 49  6d 61 67 65 45 6e 74 72  |image=>ImageEntr|
00029d70  79 5f 46 75 6e 63 32 31  3e 0a 32 32 09 3c 4e 6f  |y_Func21>.22.<No|
00029d80  74 69 66 69 63 61 74 69  6f 6e 20 6f 66 20 69 6d  |tification of im|
00029d90  61 67 65 20 66 69 6c 65  20 63 6c 6f 73 69 6e 67  |age file closing|
00029da0  3d 3e 49 6d 61 67 65 45  6e 74 72 79 5f 46 75 6e  |=>ImageEntry_Fun|
00029db0  63 32 32 3e 0a 32 35 09  3c 52 65 61 64 20 64 65  |c22>.25.<Read de|
00029dc0  66 65 63 74 20 6c 69 73  74 3d 3e 49 6d 61 67 65  |fect list=>Image|
00029dd0  45 6e 74 72 79 5f 46 75  6e 63 32 35 3e 0a 32 36  |Entry_Func25>.26|
00029de0  09 3c 41 64 64 20 61 20  64 65 66 65 63 74 3d 3e  |.<Add a defect=>|
00029df0  49 6d 61 67 65 45 6e 74  72 79 5f 46 75 6e 63 32  |ImageEntry_Func2|
00029e00  36 3e 0a 32 37 09 3c 52  65 61 64 20 62 6f 6f 74  |6>.27.<Read boot|
00029e10  20 6f 70 74 69 6f 6e 3d  3e 49 6d 61 67 65 45 6e  | option=>ImageEn|
00029e20  74 72 79 5f 46 75 6e 63  32 37 3e 0a 32 38 09 3c  |try_Func27>.28.<|
00029e30  57 72 69 74 65 20 62 6f  6f 74 20 6f 70 74 69 6f  |Write boot optio|
00029e40  6e 3d 3e 49 6d 61 67 65  45 6e 74 72 79 5f 46 75  |n=>ImageEntry_Fu|
00029e50  6e 63 32 38 3e 0a 32 39  09 3c 52 65 61 64 20 75  |nc28>.29.<Read u|
00029e60  73 65 64 20 73 70 61 63  65 20 6d 61 70 3d 3e 49  |sed space map=>I|
00029e70  6d 61 67 65 45 6e 74 72  79 5f 46 75 6e 63 32 39  |mageEntry_Func29|
00029e80  3e 0a 33 30 09 3c 52 65  61 64 20 66 72 65 65 20  |>.30.<Read free |
00029e90  73 70 61 63 65 20 6d 61  70 3d 3e 49 6d 61 67 65  |space map=>Image|
00029ea0  45 6e 74 72 79 5f 46 75  6e 63 33 30 3e 0a 33 31  |Entry_Func30>.31|
00029eb0  09 3c 4e 61 6d 65 20 69  6d 61 67 65 3d 3e 49 6d  |.<Name image=>Im|
00029ec0  61 67 65 45 6e 74 72 79  5f 46 75 6e 63 33 31 3e  |ageEntry_Func31>|
00029ed0  0a 33 32 09 3c 53 74 61  6d 70 20 69 6d 61 67 65  |.32.<Stamp image|
00029ee0  3d 3e 49 6d 61 67 65 45  6e 74 72 79 5f 46 75 6e  |=>ImageEntry_Fun|
00029ef0  63 33 32 3e 0a 0a 4f 74  68 65 72 20 72 65 61 73  |c32>..Other reas|
00029f00  6f 6e 73 20 61 72 65 20  6e 6f 74 20 75 73 65 64  |ons are not used|
00029f10  20 66 6f 72 20 49 6d 61  67 65 45 6e 74 72 79 20  | for ImageEntry |
00029f20  63 61 6c 6c 73 20 28 46  53 45 6e 74 72 79 20 6f  |calls (FSEntry o|
00029f30  6e 6c 79 29 2e 0a 00 00  44 41 54 41 ed 00 00 00  |nly)....DATA....|
00029f40  49 6d 61 67 65 45 6e 74  72 79 5f 46 75 6e 63 20  |ImageEntry_Func |
00029f50  38 0a 23 50 61 72 65 6e  74 20 49 6d 61 67 65 45  |8.#Parent ImageE|
00029f60  6e 74 72 79 5f 46 75 6e  63 0a 3d 3e 09 52 30 20  |ntry_Func.=>.R0 |
00029f70  3d 09 38 20 28 52 65 6e  61 6d 65 20 6f 62 6a 65  |=.8 (Rename obje|
00029f80  63 74 29 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |ct)..R1 =.pointe|
00029f90  72 20 74 6f 20 6f 72 69  67 69 6e 61 6c 20 66 69  |r to original fi|
00029fa0  6c 65 6e 61 6d 65 0a 09  52 32 20 3d 09 70 6f 69  |lename..R2 =.poi|
00029fb0  6e 74 65 72 20 74 6f 20  6e 65 77 20 66 69 6c 65  |nter to new file|
00029fc0  6e 61 6d 65 0a 09 52 36  20 3d 09 3c 69 6d 61 67  |name..R6 =.<imag|
00029fd0  65 20 66 69 6c 69 6e 67  20 73 79 73 74 65 6d 27  |e filing system'|
00029fe0  73 20 68 61 6e 64 6c 65  3d 3e 49 6d 61 67 65 45  |s handle=>ImageE|
00029ff0  6e 74 72 79 5f 46 75 6e  63 32 31 3e 0a 0a 54 68  |ntry_Func21>..Th|
0002a000  69 73 20 63 61 6c 6c 20  69 73 20 6d 61 64 65 20  |is call is made |
0002a010  74 6f 20 72 65 6e 61 6d  65 20 61 6e 20 6f 62 6a  |to rename an obj|
0002a020  65 63 74 2e 0a 00 00 00  44 49 52 24 d4 00 00 00  |ect.....DIR$....|
0002a030  d4 00 00 00 fc a0 02 00  47 ff ff ff 40 15 42 20  |........G...@.B |
0002a040  68 02 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |h...........!Roo|
0002a050  74 00 00 00 64 a3 02 00  48 fd ff ff 81 0b 12 0e  |t...d...H.......|
0002a060  32 01 00 00 13 00 00 00  00 00 00 00 33 00 00 00  |2...........3...|
0002a070  98 a4 02 00 47 fd ff ff  fc 32 40 20 e6 00 00 00  |....G....2@ ....|
0002a080  13 00 00 00 00 00 00 00  34 00 00 00 80 a5 02 00  |........4.......|
0002a090  47 fd ff ff 12 e8 40 20  bc 01 00 00 13 00 00 00  |G.....@ ........|
0002a0a0  00 00 00 00 36 00 00 00  3c a7 02 00 47 fd ff ff  |....6...<...G...|
0002a0b0  dc 9f 40 20 47 01 00 00  13 00 00 00 00 00 00 00  |..@ G...........|
0002a0c0  37 00 00 00 84 a8 02 00  47 fd ff ff ac b1 40 20  |7.......G.....@ |
0002a0d0  ea 00 00 00 13 00 00 00  00 00 00 00 38 00 00 00  |............8...|
0002a0e0  70 a9 02 00 47 fd ff ff  f8 d2 40 20 11 01 00 00  |p...G.....@ ....|
0002a0f0  13 00 00 00 00 00 00 00  39 00 00 00 44 41 54 41  |........9...DATA|
0002a100  68 02 00 00 49 6d 61 67  65 45 6e 74 72 79 5f 41  |h...ImageEntry_A|
0002a110  72 67 73 0a 23 50 61 72  65 6e 74 20 49 6d 61 67  |rgs.#Parent Imag|
0002a120  65 45 6e 74 72 79 5f 0a  3d 3e 09 52 30 20 3d 09  |eEntry_.=>.R0 =.|
0002a130  3c 72 65 61 73 6f 6e 20  63 6f 64 65 3d 3e 2e 72  |<reason code=>.r|
0002a140  65 61 73 6f 6e 3e 0a 09  52 31 20 3d 09 69 6e 74  |eason>..R1 =.int|
0002a150  65 72 6e 61 6c 20 66 69  6c 65 20 68 61 6e 64 6c  |ernal file handl|
0002a160  65 20 72 65 74 75 72 6e  65 64 20 62 79 20 3c 49  |e returned by <I|
0002a170  6d 61 67 65 45 6e 74 72  79 5f 4f 70 65 6e 3e 0a  |mageEntry_Open>.|
0002a180  09 6f 74 68 65 72 73 20  64 65 70 65 6e 64 61 6e  |.others dependan|
0002a190  74 20 6f 6e 20 63 61 6c  6c 0a 0a 54 68 69 73 20  |t on call..This |
0002a1a0  65 6e 74 72 79 20 70 6f  69 6e 74 20 69 73 20 63  |entry point is c|
0002a1b0  61 6c 6c 65 64 20 77 68  65 6e 20 63 6f 6e 74 72  |alled when contr|
0002a1c0  6f 6c 20 6f 70 65 72 61  74 69 6f 6e 73 20 61 72  |ol operations ar|
0002a1d0  65 20 70 65 72 66 6f 72  6d 65 64 20 6f 6e 20 6f  |e performed on o|
0002a1e0  70 65 6e 20 66 69 6c 65  73 2e 0a 23 0a 23 53 75  |pen files..#.#Su|
0002a1f0  62 70 61 67 65 20 72 65  61 73 6f 6e 0a 49 6d 61  |bpage reason.Ima|
0002a200  67 65 45 6e 74 72 79 5f  41 72 67 73 20 72 65 61  |geEntry_Args rea|
0002a210  73 6f 6e 20 63 6f 64 65  73 0a 52 65 61 73 6f 6e  |son codes.Reason|
0002a220  09 4d 65 61 6e 69 6e 67  0a 23 4c 69 6e 65 0a 33  |.Meaning.#Line.3|
0002a230  09 3c 57 72 69 74 65 20  66 69 6c 65 20 65 78 74  |.<Write file ext|
0002a240  65 6e 74 3d 3e 49 6d 61  67 65 45 6e 74 72 79 5f  |ent=>ImageEntry_|
0002a250  41 72 67 73 33 3e 0a 34  09 3c 52 65 61 64 20 73  |Args3>.4.<Read s|
0002a260  69 7a 65 20 61 6c 6c 6f  63 61 74 65 64 20 74 6f  |ize allocated to|
0002a270  20 66 69 6c 65 3d 3e 49  6d 61 67 65 45 6e 74 72  | file=>ImageEntr|
0002a280  79 5f 41 72 67 73 34 3e  0a 36 09 3c 46 6c 75 73  |y_Args4>.6.<Flus|
0002a290  68 20 6d 6f 64 69 66 69  65 64 20 64 61 74 61 3d  |h modified data=|
0002a2a0  3e 49 6d 61 67 65 45 6e  74 72 79 5f 41 72 67 73  |>ImageEntry_Args|
0002a2b0  36 3e 0a 37 09 3c 45 6e  73 75 72 65 20 66 69 6c  |6>.7.<Ensure fil|
0002a2c0  65 20 73 69 7a 65 3d 3e  49 6d 61 67 65 45 6e 74  |e size=>ImageEnt|
0002a2d0  72 79 5f 41 72 67 73 37  3e 0a 38 09 3c 5a 65 72  |ry_Args7>.8.<Zer|
0002a2e0  6f 20 70 61 64 20 66 69  6c 65 3d 3e 49 6d 61 67  |o pad file=>Imag|
0002a2f0  65 45 6e 74 72 79 5f 41  72 67 73 38 3e 0a 39 09  |eEntry_Args8>.9.|
0002a300  3c 52 65 61 64 20 64 61  74 61 73 74 61 6d 70 3d  |<Read datastamp=|
0002a310  3e 49 6d 61 67 65 45 6e  74 72 79 5f 41 72 67 73  |>ImageEntry_Args|
0002a320  39 3e 0a 0a 4f 74 68 65  72 20 72 65 61 73 6f 6e  |9>..Other reason|
0002a330  73 20 61 72 65 20 6e 6f  74 20 75 73 65 64 20 66  |s are not used f|
0002a340  6f 72 20 49 6d 61 67 65  45 6e 74 72 79 20 63 61  |or ImageEntry ca|
0002a350  6c 6c 73 20 28 46 53 45  6e 74 72 79 20 6f 6e 6c  |lls (FSEntry onl|
0002a360  79 29 2e 0a 44 41 54 41  32 01 00 00 49 6d 61 67  |y)..DATA2...Imag|
0002a370  65 45 6e 74 72 79 5f 41  72 67 73 20 33 0a 3d 3e  |eEntry_Args 3.=>|
0002a380  09 52 30 20 3d 09 33 20  28 57 72 69 74 65 20 66  |.R0 =.3 (Write f|
0002a390  69 6c 65 20 65 78 74 65  6e 74 29 0a 09 52 31 20  |ile extent)..R1 |
0002a3a0  3d 09 69 6e 74 65 72 6e  61 6c 20 66 69 6c 65 20  |=.internal file |
0002a3b0  68 61 6e 64 6c 65 20 72  65 74 75 72 6e 65 64 20  |handle returned |
0002a3c0  62 79 20 3c 49 6d 61 67  65 45 6e 74 72 79 5f 4f  |by <ImageEntry_O|
0002a3d0  70 65 6e 3e 0a 09 52 32  20 3d 09 6e 65 77 20 66  |pen>..R2 =.new f|
0002a3e0  69 6c 65 20 65 78 74 65  6e 74 0a 0a 54 68 69 73  |ile extent..This|
0002a3f0  20 63 61 6c 6c 20 69 73  20 6d 61 64 65 20 77 68  | call is made wh|
0002a400  65 6e 20 46 69 6c 65 53  77 69 74 63 68 20 6e 65  |en FileSwitch ne|
0002a410  65 64 73 20 74 6f 20 65  78 74 65 6e 64 20 61 20  |eds to extend a |
0002a420  66 69 6c 65 20 62 65 79  6f 6e 64 20 69 74 73 20  |file beyond its |
0002a430  63 75 72 72 65 6e 74 20  6c 65 6e 67 74 68 2e 20  |current length. |
0002a440  4f 6e 20 73 79 73 74 65  6d 73 20 77 69 74 68 20  |On systems with |
0002a450  6e 6f 20 63 6f 6e 63 65  70 74 20 6f 66 20 65 78  |no concept of ex|
0002a460  74 65 6e 74 73 20 28 65  67 20 73 74 72 65 61 6d  |tents (eg stream|
0002a470  73 29 20 74 68 69 73 20  73 68 6f 75 6c 64 20 2a  |s) this should *|
0002a480  6e 6f 74 2a 20 72 65 74  75 72 6e 20 61 6e 20 65  |not* return an e|
0002a490  72 72 6f 72 2e 0a 00 00  44 41 54 41 e6 00 00 00  |rror....DATA....|
0002a4a0  49 6d 61 67 65 45 6e 74  72 79 5f 41 72 67 73 20  |ImageEntry_Args |
0002a4b0  34 0a 3d 3e 09 52 30 20  3d 09 34 20 28 52 65 61  |4.=>.R0 =.4 (Rea|
0002a4c0  64 20 73 70 61 63 65 20  61 6c 6c 6f 63 61 74 65  |d space allocate|
0002a4d0  64 29 0a 09 52 31 20 3d  09 69 6e 74 65 72 6e 61  |d)..R1 =.interna|
0002a4e0  6c 20 66 69 6c 65 20 68  61 6e 64 6c 65 20 72 65  |l file handle re|
0002a4f0  74 75 72 6e 65 64 20 62  79 20 3c 49 6d 61 67 65  |turned by <Image|
0002a500  45 6e 74 72 79 5f 4f 70  65 6e 3e 0a 3c 3d 09 52  |Entry_Open>.<=.R|
0002a510  32 20 3d 09 73 69 7a 65  20 61 6c 6c 6f 63 61 74  |2 =.size allocat|
0002a520  65 64 20 74 6f 20 74 68  65 20 66 69 6c 65 0a 0a  |ed to the file..|
0002a530  54 68 69 73 20 63 61 6c  6c 20 69 73 20 6d 61 64  |This call is mad|
0002a540  65 20 77 68 65 6e 20 46  69 6c 65 53 77 69 74 63  |e when FileSwitc|
0002a550  68 20 77 69 73 68 65 73  20 74 6f 20 66 69 6e 64  |h wishes to find|
0002a560  20 74 68 65 20 61 63 74  75 61 6c 20 6c 65 6e 67  | the actual leng|
0002a570  74 68 20 6f 66 20 61 20  66 69 6c 65 2e 0a 00 00  |th of a file....|
0002a580  44 41 54 41 bc 01 00 00  49 6d 61 67 65 45 6e 74  |DATA....ImageEnt|
0002a590  72 79 5f 41 72 67 73 20  36 0a 3d 3e 09 52 30 20  |ry_Args 6.=>.R0 |
0002a5a0  3d 09 36 20 28 46 6c 75  73 68 20 6d 6f 64 69 66  |=.6 (Flush modif|
0002a5b0  69 65 64 20 64 61 74 61  29 0a 09 52 31 20 3d 09  |ied data)..R1 =.|
0002a5c0  69 6e 74 65 72 6e 61 6c  20 66 69 6c 65 20 68 61  |internal file ha|
0002a5d0  6e 64 6c 65 20 72 65 74  75 72 6e 65 64 20 62 79  |ndle returned by|
0002a5e0  20 3c 49 6d 61 67 65 45  6e 74 72 79 5f 4f 70 65  | <ImageEntry_Ope|
0002a5f0  6e 3e 0a 3c 3d 09 52 32  20 3d 09 6c 6f 61 64 20  |n>.<=.R2 =.load |
0002a600  61 64 64 72 65 73 73 20  6f 66 20 66 69 6c 65 2c  |address of file,|
0002a610  20 6f 72 20 30 20 69 66  20 6e 6f 74 20 70 6f 73  | or 0 if not pos|
0002a620  73 69 62 6c 65 0a 09 52  33 20 3d 09 65 78 65 63  |sible..R3 =.exec|
0002a630  20 61 64 64 72 65 73 73  20 6f 66 20 66 69 6c 65  | address of file|
0002a640  2c 20 6f 72 20 30 20 69  66 20 6e 6f 74 20 70 6f  |, or 0 if not po|
0002a650  73 73 69 62 6c 65 0a 0a  54 68 69 73 20 63 61 6c  |ssible..This cal|
0002a660  6c 20 69 73 20 6d 61 64  65 20 77 68 65 6e 20 46  |l is made when F|
0002a670  69 6c 65 53 77 69 74 63  68 20 77 61 6e 74 73 20  |ileSwitch wants |
0002a680  79 6f 75 20 74 6f 20 73  74 6f 72 65 20 61 6c 6c  |you to store all|
0002a690  20 63 61 63 68 65 64 20  64 61 74 61 2e 20 54 68  | cached data. Th|
0002a6a0  69 73 20 77 69 6c 6c 20  6f 6e 6c 79 20 62 65 20  |is will only be |
0002a6b0  63 61 6c 6c 65 64 20 69  66 20 62 69 74 20 32 37  |called if bit 27|
0002a6c0  20 6f 66 20 74 68 65 20  3c 69 6e 66 6f 72 6d 61  | of the <informa|
0002a6d0  74 69 6f 6e 20 77 6f 72  64 3d 3e 66 73 79 73 5f  |tion word=>fsys_|
0002a6e0  69 6d 61 67 65 5f 69 6e  66 6f 77 6f 72 64 3e 20  |image_infoword> |
0002a6f0  69 73 20 73 65 74 2e 0a  0a 54 68 65 20 6c 6f 61  |is set...The loa|
0002a700  64 20 61 6e 64 20 65 78  65 63 20 61 64 64 72 65  |d and exec addre|
0002a710  73 73 65 73 20 61 72 65  20 75 73 65 64 20 66 6f  |sses are used fo|
0002a720  72 20 70 75 72 70 6f 73  65 73 20 6f 66 20 64 61  |r purposes of da|
0002a730  74 65 20 73 74 61 6d 70  69 6e 67 2e 44 41 54 41  |te stamping.DATA|
0002a740  47 01 00 00 49 6d 61 67  65 45 6e 74 72 79 5f 41  |G...ImageEntry_A|
0002a750  72 67 73 20 37 0a 3d 3e  09 52 30 20 3d 09 37 20  |rgs 7.=>.R0 =.7 |
0002a760  28 45 6e 73 75 72 65 20  66 69 6c 65 20 73 69 7a  |(Ensure file siz|
0002a770  65 29 0a 09 52 31 20 3d  09 69 6e 74 65 72 6e 61  |e)..R1 =.interna|
0002a780  6c 20 66 69 6c 65 20 68  61 6e 64 6c 65 20 72 65  |l file handle re|
0002a790  74 75 72 6e 65 64 20 62  79 20 3c 49 6d 61 67 65  |turned by <Image|
0002a7a0  45 6e 74 72 79 5f 4f 70  65 6e 3e 0a 09 52 32 20  |Entry_Open>..R2 |
0002a7b0  3d 09 73 69 7a 65 20 6f  66 20 66 69 6c 65 0a 3c  |=.size of file.<|
0002a7c0  3d 09 52 32 20 3d 09 73  69 7a 65 20 61 63 74 75  |=.R2 =.size actu|
0002a7d0  61 6c 6c 79 20 65 6e 73  75 72 65 64 0a 0a 54 68  |ally ensured..Th|
0002a7e0  69 73 20 63 61 6c 6c 20  69 73 20 6d 61 64 65 20  |is call is made |
0002a7f0  74 6f 20 65 6e 73 75 72  65 20 74 68 61 74 20 61  |to ensure that a|
0002a800  20 66 69 6c 65 20 69 73  20 6f 66 20 61 20 70 61  | file is of a pa|
0002a810  72 74 69 63 75 6c 61 72  20 73 69 7a 65 2e 20 53  |rticular size. S|
0002a820  70 61 63 65 20 73 68 6f  75 6c 64 20 62 65 20 72  |pace should be r|
0002a830  65 73 65 72 76 65 64 2c  20 62 75 74 20 69 74 20  |eserved, but it |
0002a840  69 73 20 6e 6f 74 20 72  65 71 75 69 72 65 64 20  |is not required |
0002a850  74 6f 20 62 65 20 69 6e  69 74 69 61 6c 69 73 65  |to be initialise|
0002a860  64 2e 20 54 68 69 73 20  69 73 20 6d 65 61 6e 69  |d. This is meani|
0002a870  6e 67 6c 65 73 73 20 6f  6e 20 73 74 72 65 61 6d  |ngless on stream|
0002a880  73 2e 0a 00 44 41 54 41  ea 00 00 00 49 6d 61 67  |s...DATA....Imag|
0002a890  65 45 6e 74 72 79 5f 41  72 67 73 20 38 0a 3d 3e  |eEntry_Args 8.=>|
0002a8a0  09 52 30 20 3d 09 38 20  28 5a 65 72 6f 20 70 61  |.R0 =.8 (Zero pa|
0002a8b0  64 20 66 69 6c 65 29 0a  09 52 31 20 3d 09 69 6e  |d file)..R1 =.in|
0002a8c0  74 65 72 6e 61 6c 20 66  69 6c 65 20 68 61 6e 64  |ternal file hand|
0002a8d0  6c 65 20 72 65 74 75 72  6e 65 64 20 62 79 20 3c  |le returned by <|
0002a8e0  49 6d 61 67 65 45 6e 74  72 79 5f 4f 70 65 6e 3e  |ImageEntry_Open>|
0002a8f0  0a 09 52 32 20 3d 09 6f  66 66 73 65 74 20 61 74  |..R2 =.offset at|
0002a900  20 77 68 69 63 68 20 74  6f 20 77 72 69 74 65 0a  | which to write.|
0002a910  09 52 33 20 3d 09 6e 75  6d 62 65 72 20 6f 66 20  |.R3 =.number of |
0002a920  62 79 74 65 73 20 74 6f  20 77 72 69 74 65 0a 0a  |bytes to write..|
0002a930  54 68 69 73 20 63 61 6c  6c 20 69 73 20 6d 61 64  |This call is mad|
0002a940  65 20 74 6f 20 70 61 64  20 61 20 66 69 6c 65 20  |e to pad a file |
0002a950  77 69 74 68 20 7a 65 72  6f 65 73 20 74 6f 20 69  |with zeroes to i|
0002a960  6e 69 74 69 61 6c 69 73  65 20 69 74 2e 0a 00 00  |nitialise it....|
0002a970  44 41 54 41 11 01 00 00  49 6d 61 67 65 45 6e 74  |DATA....ImageEnt|
0002a980  72 79 5f 41 72 67 73 20  39 0a 3d 3e 09 52 30 20  |ry_Args 9.=>.R0 |
0002a990  3d 09 39 20 28 52 65 61  64 20 66 69 6c 65 20 64  |=.9 (Read file d|
0002a9a0  61 74 65 73 74 61 6d 70  29 0a 09 52 31 20 3d 09  |atestamp)..R1 =.|
0002a9b0  69 6e 74 65 72 6e 61 6c  20 66 69 6c 65 20 68 61  |internal file ha|
0002a9c0  6e 64 6c 65 20 72 65 74  75 72 6e 65 64 20 62 79  |ndle returned by|
0002a9d0  20 3c 49 6d 61 67 65 45  6e 74 72 79 5f 4f 70 65  | <ImageEntry_Ope|
0002a9e0  6e 3e 0a 3c 3d 09 52 32  20 3d 09 6c 6f 61 64 20  |n>.<=.R2 =.load |
0002a9f0  61 64 64 72 65 73 73 20  6f 66 20 66 69 6c 65 2c  |address of file,|
0002aa00  20 6f 72 20 30 20 69 66  20 6e 6f 74 20 70 6f 73  | or 0 if not pos|
0002aa10  73 69 62 6c 65 0a 09 52  33 20 3d 09 65 78 65 63  |sible..R3 =.exec|
0002aa20  20 61 64 64 72 65 73 73  20 6f 66 20 66 69 6c 65  | address of file|
0002aa30  2c 20 6f 72 20 30 20 69  66 20 6e 6f 74 20 70 6f  |, or 0 if not po|
0002aa40  73 73 69 62 6c 65 0a 0a  54 68 69 73 20 63 61 6c  |ssible..This cal|
0002aa50  6c 20 69 73 20 6d 61 64  65 20 74 6f 20 72 65 61  |l is made to rea|
0002aa60  64 20 74 68 65 20 64 61  74 65 73 74 61 6d 70 20  |d the datestamp |
0002aa70  6f 66 20 61 6e 20 6f 70  65 6e 20 66 69 6c 65 2e  |of an open file.|
0002aa80  0a 00 00 00 44 49 52 24  f0 00 00 00 f0 00 00 00  |....DIR$........|
0002aa90  74 ab 02 00 47 ff ff ff  35 a3 77 29 57 02 00 00  |t...G...5.w)W...|
0002aaa0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0002aab0  cc ad 02 00 47 fd ff ff  a4 08 9a cd c4 01 00 00  |....G...........|
0002aac0  13 00 00 00 00 00 00 00  30 00 00 00 90 af 02 00  |........0.......|
0002aad0  48 fd ff ff 49 55 67 26  5c 01 00 00 13 00 00 00  |H...IUg&\.......|
0002aae0  00 00 00 00 31 00 00 00  ec b0 02 00 48 fd ff ff  |....1.......H...|
0002aaf0  cc 59 67 26 cf 01 00 00  13 00 00 00 00 00 00 00  |.Yg&............|
0002ab00  35 00 00 00 bc b2 02 00  48 fd ff ff 9b 5b 67 26  |5.......H....[g&|
0002ab10  61 01 00 00 13 00 00 00  00 00 00 00 36 00 00 00  |a...........6...|
0002ab20  20 b4 02 00 48 fd ff ff  dc 65 67 26 8f 01 00 00  | ...H....eg&....|
0002ab30  13 00 00 00 00 00 00 00  37 00 00 00 b0 b5 02 00  |........7.......|
0002ab40  48 fd ff ff 1b 69 67 26  7e 01 00 00 13 00 00 00  |H....ig&~.......|
0002ab50  00 00 00 00 38 00 00 00  30 b7 02 00 48 fd ff ff  |....8...0...H...|
0002ab60  56 57 67 26 e1 00 00 00  13 00 00 00 00 00 00 00  |VWg&............|
0002ab70  31 30 00 00 44 41 54 41  57 02 00 00 49 6d 61 67  |10..DATAW...Imag|
0002ab80  65 45 6e 74 72 79 5f 46  69 6c 65 0a 23 50 61 72  |eEntry_File.#Par|
0002ab90  65 6e 74 20 49 6d 61 67  65 45 6e 74 72 79 5f 0a  |ent ImageEntry_.|
0002aba0  3d 3e 09 52 30 20 3d 09  3c 72 65 61 73 6f 6e 20  |=>.R0 =.<reason |
0002abb0  63 6f 64 65 3d 3e 2e 72  65 61 73 6f 6e 3e 0a 09  |code=>.reason>..|
0002abc0  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
0002abd0  66 69 6c 65 6e 61 6d 65  0a 09 6f 74 68 65 72 73  |filename..others|
0002abe0  20 64 65 70 65 6e 64 61  6e 74 20 6f 6e 20 63 61  | dependant on ca|
0002abf0  6c 6c 0a 0a 54 68 69 73  20 65 6e 74 72 79 20 70  |ll..This entry p|
0002ac00  6f 69 6e 74 20 69 73 20  63 61 6c 6c 65 64 20 66  |oint is called f|
0002ac10  6f 72 20 6f 70 65 72 61  74 69 6f 6e 73 20 6f 6e  |or operations on|
0002ac20  20 77 68 6f 6c 65 20 66  69 6c 65 73 2e 0a 23 0a  | whole files..#.|
0002ac30  23 53 75 62 70 61 67 65  20 72 65 61 73 6f 6e 0a  |#Subpage reason.|
0002ac40  49 6d 61 67 65 45 6e 74  72 79 5f 46 69 6c 65 20  |ImageEntry_File |
0002ac50  72 65 61 73 6f 6e 20 63  6f 64 65 73 0a 52 65 61  |reason codes.Rea|
0002ac60  73 6f 6e 09 4d 65 61 6e  69 6e 67 0a 23 4c 69 6e  |son.Meaning.#Lin|
0002ac70  65 0a 30 09 3c 53 61 76  65 20 66 69 6c 65 3d 3e  |e.0.<Save file=>|
0002ac80  49 6d 61 67 65 45 6e 74  72 79 5f 46 69 6c 65 30  |ImageEntry_File0|
0002ac90  3e 0a 31 09 3c 57 72 69  74 65 20 63 61 74 61 6c  |>.1.<Write catal|
0002aca0  6f 67 75 65 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  |ogue information|
0002acb0  3d 3e 49 6d 61 67 65 45  6e 74 72 79 5f 46 69 6c  |=>ImageEntry_Fil|
0002acc0  65 31 3e 0a 35 09 3c 52  65 61 64 20 63 61 74 61  |e1>.5.<Read cata|
0002acd0  6c 6f 67 75 65 20 69 6e  66 6f 72 6d 61 74 69 6f  |logue informatio|
0002ace0  6e 3d 3e 49 6d 61 67 65  45 6e 74 72 79 5f 46 69  |n=>ImageEntry_Fi|
0002acf0  6c 65 35 3e 0a 36 09 3c  44 65 6c 65 74 65 20 6f  |le5>.6.<Delete o|
0002ad00  62 6a 65 63 74 3d 3e 49  6d 61 67 65 45 6e 74 72  |bject=>ImageEntr|
0002ad10  79 5f 46 69 6c 65 36 3e  0a 37 09 3c 43 72 65 61  |y_File6>.7.<Crea|
0002ad20  74 65 20 66 69 6c 65 3d  3e 49 6d 61 67 65 45 6e  |te file=>ImageEn|
0002ad30  74 72 79 5f 46 69 6c 65  37 3e 0a 38 09 3c 43 72  |try_File7>.8.<Cr|
0002ad40  65 61 74 65 20 64 69 72  65 63 74 6f 72 79 3d 3e  |eate directory=>|
0002ad50  49 6d 61 67 65 45 6e 74  72 79 5f 46 69 6c 65 38  |ImageEntry_File8|
0002ad60  3e 0a 31 30 09 3c 52 65  61 64 20 62 6c 6f 63 6b  |>.10.<Read block|
0002ad70  20 73 69 7a 65 3d 3e 49  6d 61 67 65 45 6e 74 72  | size=>ImageEntr|
0002ad80  79 5f 46 69 6c 65 31 30  3e 0a 0a 4f 74 68 65 72  |y_File10>..Other|
0002ad90  20 72 65 61 73 6f 6e 73  20 61 72 65 20 6e 6f 74  | reasons are not|
0002ada0  20 75 73 65 64 20 66 6f  72 20 49 6d 61 67 65 45  | used for ImageE|
0002adb0  6e 74 72 79 20 63 61 6c  6c 73 20 28 46 53 45 6e  |ntry calls (FSEn|
0002adc0  74 72 79 20 6f 6e 6c 79  29 2e 0a 00 44 41 54 41  |try only)...DATA|
0002add0  c4 01 00 00 49 6d 61 67  65 45 6e 74 72 79 5f 46  |....ImageEntry_F|
0002ade0  69 6c 65 20 30 0a 23 50  61 72 65 6e 74 20 49 6d  |ile 0.#Parent Im|
0002adf0  61 67 65 45 6e 74 72 79  5f 46 69 6c 65 0a 3d 3e  |ageEntry_File.=>|
0002ae00  09 52 30 20 3d 09 30 20  28 53 61 76 65 20 66 69  |.R0 =.0 (Save fi|
0002ae10  6c 65 29 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |le)..R1 =.pointe|
0002ae20  72 20 74 6f 20 66 69 6c  65 6e 61 6d 65 0a 09 52  |r to filename..R|
0002ae30  32 20 3d 09 3c 6c 6f 61  64 20 61 64 64 72 65 73  |2 =.<load addres|
0002ae40  73 3d 3e 66 73 79 73 5f  6c 6f 61 64 65 78 65 63  |s=>fsys_loadexec|
0002ae50  3e 20 6f 66 20 66 69 6c  65 0a 09 52 33 20 3d 09  |> of file..R3 =.|
0002ae60  3c 65 78 65 63 20 61 64  64 72 65 73 73 3d 3e 66  |<exec address=>f|
0002ae70  73 79 73 5f 6c 6f 61 64  65 78 65 63 3e 20 6f 66  |sys_loadexec> of|
0002ae80  20 66 69 6c 65 0a 09 52  34 20 3d 09 70 6f 69 6e  | file..R4 =.poin|
0002ae90  74 65 72 20 74 6f 20 73  74 61 72 74 20 6f 66 20  |ter to start of |
0002aea0  62 75 66 66 65 72 0a 09  52 35 20 3d 09 70 6f 69  |buffer..R5 =.poi|
0002aeb0  6e 74 65 72 20 74 6f 20  62 79 74 65 20 61 66 74  |nter to byte aft|
0002aec0  65 72 20 65 6e 64 20 6f  66 20 62 75 66 66 65 72  |er end of buffer|
0002aed0  0a 09 52 36 20 3d 09 68  61 6e 64 6c 65 20 6f 66  |..R6 =.handle of|
0002aee0  20 69 6d 61 67 65 20 66  69 6c 65 0a 3c 3d 09 52  | image file.<=.R|
0002aef0  36 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 6c  |6 =.pointer to l|
0002af00  65 61 66 6e 61 6d 65 20  66 6f 72 20 70 72 69 6e  |eafname for prin|
0002af10  74 69 6e 67 20 2a 4f 50  54 20 31 20 69 6e 66 6f  |ting *OPT 1 info|
0002af20  0a 0a 54 68 69 73 20 63  61 6c 6c 20 69 73 20 6d  |..This call is m|
0002af30  61 64 65 20 74 6f 20 73  61 76 65 20 61 20 62 6c  |ade to save a bl|
0002af40  6f 63 6b 20 6f 66 20 6d  65 6d 6f 72 79 20 61 73  |ock of memory as|
0002af50  20 61 20 66 69 6c 65 2e  20 54 68 65 20 62 75 66  | a file. The buf|
0002af60  66 65 72 20 69 6e 20 77  68 69 63 68 20 52 36 20  |fer in which R6 |
0002af70  65 78 69 73 74 73 20 6e  65 65 64 20 6e 6f 74 20  |exists need not |
0002af80  65 78 69 73 74 20 66 6f  72 20 6c 6f 6e 67 2e 0a  |exist for long..|
0002af90  44 41 54 41 5c 01 00 00  49 6d 61 67 65 45 6e 74  |DATA\...ImageEnt|
0002afa0  72 79 5f 46 69 6c 65 20  31 0a 23 50 61 72 65 6e  |ry_File 1.#Paren|
0002afb0  74 20 49 6d 61 67 65 45  6e 74 72 79 5f 46 69 6c  |t ImageEntry_Fil|
0002afc0  65 0a 3d 3e 09 52 30 20  3d 09 31 20 28 57 72 69  |e.=>.R0 =.1 (Wri|
0002afd0  74 65 20 63 61 74 61 6c  6f 67 75 65 20 69 6e 66  |te catalogue inf|
0002afe0  6f 72 6d 61 74 69 6f 6e  29 0a 09 52 31 20 3d 09  |ormation)..R1 =.|
0002aff0  70 6f 69 6e 74 65 72 20  74 6f 20 66 69 6c 65 6e  |pointer to filen|
0002b000  61 6d 65 0a 09 52 32 20  3d 09 3c 6c 6f 61 64 20  |ame..R2 =.<load |
0002b010  61 64 64 72 65 73 73 3d  3e 66 73 79 73 5f 6c 6f  |address=>fsys_lo|
0002b020  61 64 65 78 65 63 3e 20  6f 66 20 66 69 6c 65 0a  |adexec> of file.|
0002b030  09 52 33 20 3d 09 3c 65  78 65 63 20 61 64 64 72  |.R3 =.<exec addr|
0002b040  65 73 73 3d 3e 66 73 79  73 5f 6c 6f 61 64 65 78  |ess=>fsys_loadex|
0002b050  65 63 3e 20 6f 66 20 66  69 6c 65 0a 09 52 34 20  |ec> of file..R4 |
0002b060  3d 09 6e 65 77 20 3c 61  74 74 72 69 62 75 74 65  |=.new <attribute|
0002b070  73 3d 3e 66 73 79 73 5f  6f 62 6a 61 74 74 72 3e  |s=>fsys_objattr>|
0002b080  20 6f 66 20 66 69 6c 65  0a 09 52 36 20 3d 09 68  | of file..R6 =.h|
0002b090  61 6e 64 6c 65 20 6f 66  20 69 6d 61 67 65 20 66  |andle of image f|
0002b0a0  69 6c 65 0a 0a 54 68 69  73 20 63 61 6c 6c 20 69  |ile..This call i|
0002b0b0  73 20 6d 61 64 65 20 74  6f 20 73 65 74 20 74 68  |s made to set th|
0002b0c0  65 20 63 61 74 61 6c 6f  67 75 65 20 69 6e 66 6f  |e catalogue info|
0002b0d0  72 6d 61 74 69 6f 6e 20  61 62 6f 75 74 20 61 20  |rmation about a |
0002b0e0  67 69 76 65 6e 20 66 69  6c 65 2e 0a 44 41 54 41  |given file..DATA|
0002b0f0  cf 01 00 00 49 6d 61 67  65 45 6e 74 72 79 5f 46  |....ImageEntry_F|
0002b100  69 6c 65 20 35 0a 23 50  61 72 65 6e 74 20 49 6d  |ile 5.#Parent Im|
0002b110  61 67 65 45 6e 74 72 79  5f 46 69 6c 65 0a 3d 3e  |ageEntry_File.=>|
0002b120  09 52 30 20 3d 09 35 20  28 52 65 61 64 20 63 61  |.R0 =.5 (Read ca|
0002b130  74 61 6c 6f 67 75 65 20  69 6e 66 6f 72 6d 61 74  |talogue informat|
0002b140  69 6f 6e 29 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |ion)..R1 =.point|
0002b150  65 72 20 74 6f 20 66 69  6c 65 6e 61 6d 65 0a 09  |er to filename..|
0002b160  52 36 20 3d 09 68 61 6e  64 6c 65 20 6f 66 20 69  |R6 =.handle of i|
0002b170  6d 61 67 65 20 66 69 6c  65 0a 0a 3c 3d 09 52 30  |mage file..<=.R0|
0002b180  20 3d 09 3c 6f 62 6a 65  63 74 20 74 79 70 65 3d  | =.<object type=|
0002b190  3e 66 73 79 73 5f 6f 62  6a 74 79 70 65 3e 0a 09  |>fsys_objtype>..|
0002b1a0  52 32 20 3d 09 3c 6c 6f  61 64 20 61 64 64 72 65  |R2 =.<load addre|
0002b1b0  73 73 3d 3e 66 73 79 73  5f 6c 6f 61 64 65 78 65  |ss=>fsys_loadexe|
0002b1c0  63 3e 20 6f 66 20 66 69  6c 65 0a 09 52 33 20 3d  |c> of file..R3 =|
0002b1d0  09 3c 65 78 65 63 20 61  64 64 72 65 73 73 3d 3e  |.<exec address=>|
0002b1e0  66 73 79 73 5f 6c 6f 61  64 65 78 65 63 3e 20 6f  |fsys_loadexec> o|
0002b1f0  66 20 66 69 6c 65 0a 09  52 34 20 3d 09 6c 65 6e  |f file..R4 =.len|
0002b200  67 74 68 20 6f 66 20 66  69 6c 65 0a 09 52 35 20  |gth of file..R5 |
0002b210  3d 09 3c 61 74 74 72 69  62 75 74 65 73 3d 3e 66  |=.<attributes=>f|
0002b220  73 79 73 5f 6f 62 6a 61  74 74 72 3e 20 6f 66 20  |sys_objattr> of |
0002b230  66 69 6c 65 0a 09 52 36  20 70 72 65 73 65 72 76  |file..R6 preserv|
0002b240  65 64 0a 0a 54 68 69 73  20 63 61 6c 6c 20 69 73  |ed..This call is|
0002b250  20 6d 61 64 65 20 74 6f  20 72 65 61 64 20 74 68  | made to read th|
0002b260  65 20 63 61 74 61 6c 6f  67 75 65 20 69 6e 66 6f  |e catalogue info|
0002b270  72 6d 61 74 69 6f 6e 20  61 62 6f 75 74 20 61 20  |rmation about a |
0002b280  67 69 76 65 6e 20 66 69  6c 65 2e 0a 0a 54 68 65  |given file...The|
0002b290  20 6f 62 6a 65 63 74 20  74 79 70 65 20 27 49 6d  | object type 'Im|
0002b2a0  61 67 65 27 20 6d 75 73  74 20 6e 6f 74 20 62 65  |age' must not be|
0002b2b0  20 72 65 74 75 72 6e 65  64 2e 0a 00 44 41 54 41  | returned...DATA|
0002b2c0  61 01 00 00 49 6d 61 67  65 45 6e 74 72 79 5f 46  |a...ImageEntry_F|
0002b2d0  69 6c 65 20 36 0a 23 50  61 72 65 6e 74 20 49 6d  |ile 6.#Parent Im|
0002b2e0  61 67 65 45 6e 74 72 79  5f 46 69 6c 65 0a 3d 3e  |ageEntry_File.=>|
0002b2f0  09 52 30 20 3d 09 36 20  28 44 65 6c 65 74 65 20  |.R0 =.6 (Delete |
0002b300  6f 62 6a 65 63 74 29 0a  09 52 31 20 3d 09 70 6f  |object)..R1 =.po|
0002b310  69 6e 74 65 72 20 74 6f  20 66 69 6c 65 6e 61 6d  |inter to filenam|
0002b320  65 0a 09 52 36 20 3d 09  68 61 6e 64 6c 65 20 6f  |e..R6 =.handle o|
0002b330  66 20 69 6d 61 67 65 20  66 69 6c 65 0a 0a 3c 3d  |f image file..<=|
0002b340  09 52 30 20 3d 09 3c 6f  62 6a 65 63 74 20 74 79  |.R0 =.<object ty|
0002b350  70 65 3d 3e 66 73 79 73  5f 6f 62 6a 74 79 70 65  |pe=>fsys_objtype|
0002b360  3e 0a 09 52 32 20 3d 09  3c 6c 6f 61 64 20 61 64  |>..R2 =.<load ad|
0002b370  64 72 65 73 73 3d 3e 66  73 79 73 5f 6c 6f 61 64  |dress=>fsys_load|
0002b380  65 78 65 63 3e 20 6f 66  20 66 69 6c 65 0a 09 52  |exec> of file..R|
0002b390  33 20 3d 09 3c 65 78 65  63 20 61 64 64 72 65 73  |3 =.<exec addres|
0002b3a0  73 3d 3e 66 73 79 73 5f  6c 6f 61 64 65 78 65 63  |s=>fsys_loadexec|
0002b3b0  3e 20 6f 66 20 66 69 6c  65 0a 09 52 34 20 3d 09  |> of file..R4 =.|
0002b3c0  6c 65 6e 67 74 68 20 6f  66 20 66 69 6c 65 0a 09  |length of file..|
0002b3d0  52 35 20 3d 09 3c 61 74  74 72 69 62 75 74 65 73  |R5 =.<attributes|
0002b3e0  3d 3e 66 73 79 73 5f 6f  62 6a 61 74 74 72 3e 20  |=>fsys_objattr> |
0002b3f0  6f 66 20 66 69 6c 65 0a  0a 54 68 69 73 20 63 61  |of file..This ca|
0002b400  6c 6c 20 69 73 20 6d 61  64 65 20 74 6f 20 64 65  |ll is made to de|
0002b410  6c 65 74 65 20 61 20 66  69 6c 65 2e 0a 00 00 00  |lete a file.....|
0002b420  44 41 54 41 8f 01 00 00  49 6d 61 67 65 45 6e 74  |DATA....ImageEnt|
0002b430  72 79 5f 46 69 6c 65 20  37 0a 23 50 61 72 65 6e  |ry_File 7.#Paren|
0002b440  74 20 49 6d 61 67 65 45  6e 74 72 79 5f 46 69 6c  |t ImageEntry_Fil|
0002b450  65 0a 3d 3e 09 52 30 20  3d 09 37 20 28 43 72 65  |e.=>.R0 =.7 (Cre|
0002b460  61 74 65 20 66 69 6c 65  29 0a 09 52 31 20 3d 09  |ate file)..R1 =.|
0002b470  70 6f 69 6e 74 65 72 20  74 6f 20 66 69 6c 65 6e  |pointer to filen|
0002b480  61 6d 65 0a 09 52 32 20  3d 09 3c 6c 6f 61 64 20  |ame..R2 =.<load |
0002b490  61 64 64 72 65 73 73 3d  3e 66 73 79 73 5f 6c 6f  |address=>fsys_lo|
0002b4a0  61 64 65 78 65 63 3e 20  6f 66 20 66 69 6c 65 0a  |adexec> of file.|
0002b4b0  09 52 33 20 3d 09 3c 65  78 65 63 20 61 64 64 72  |.R3 =.<exec addr|
0002b4c0  65 73 73 3d 3e 66 73 79  73 5f 6c 6f 61 64 65 78  |ess=>fsys_loadex|
0002b4d0  65 63 3e 20 6f 66 20 66  69 6c 65 0a 09 52 34 20  |ec> of file..R4 |
0002b4e0  3d 09 73 74 61 72 74 20  61 64 64 72 65 73 73 20  |=.start address |
0002b4f0  69 6e 20 6d 65 6d 6f 72  79 0a 09 52 35 20 3d 09  |in memory..R5 =.|
0002b500  62 79 74 65 20 61 66 74  65 72 20 65 6e 64 20 61  |byte after end a|
0002b510  64 64 72 65 73 73 20 69  6e 20 6d 65 6d 6f 72 79  |ddress in memory|
0002b520  0a 09 52 36 20 3d 09 68  61 6e 64 6c 65 20 6f 66  |..R6 =.handle of|
0002b530  20 69 6d 61 67 65 20 66  69 6c 65 0a 0a 54 68 69  | image file..Thi|
0002b540  73 20 63 61 6c 6c 20 69  73 20 6d 61 64 65 20 74  |s call is made t|
0002b550  6f 20 63 72 65 61 74 65  20 61 20 66 69 6c 65 2e  |o create a file.|
0002b560  20 52 34 20 61 6e 64 20  52 35 20 61 72 65 20 75  | R4 and R5 are u|
0002b570  73 65 64 20 74 6f 20 63  61 6c 63 75 6c 61 74 65  |sed to calculate|
0002b580  20 74 68 65 20 6c 65 6e  67 74 68 20 6f 66 20 74  | the length of t|
0002b590  68 65 20 66 69 6c 65 20  61 6e 64 20 6e 6f 20 64  |he file and no d|
0002b5a0  61 74 61 20 69 73 20 73  74 6f 72 65 64 2e 0a 00  |ata is stored...|
0002b5b0  44 41 54 41 7e 01 00 00  49 6d 61 67 65 45 6e 74  |DATA~...ImageEnt|
0002b5c0  72 79 5f 46 69 6c 65 20  38 0a 23 50 61 72 65 6e  |ry_File 8.#Paren|
0002b5d0  74 20 49 6d 61 67 65 45  6e 74 72 79 5f 46 69 6c  |t ImageEntry_Fil|
0002b5e0  65 0a 3d 3e 09 52 30 20  3d 09 38 20 28 43 72 65  |e.=>.R0 =.8 (Cre|
0002b5f0  61 74 65 20 64 69 72 65  63 74 6f 72 79 29 0a 09  |ate directory)..|
0002b600  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
0002b610  66 69 6c 65 6e 61 6d 65  0a 09 52 32 20 3d 09 3c  |filename..R2 =.<|
0002b620  6c 6f 61 64 20 61 64 64  72 65 73 73 3d 3e 66 73  |load address=>fs|
0002b630  79 73 5f 6c 6f 61 64 65  78 65 63 3e 20 6f 66 20  |ys_loadexec> of |
0002b640  66 69 6c 65 0a 09 52 33  20 3d 09 3c 65 78 65 63  |file..R3 =.<exec|
0002b650  20 61 64 64 72 65 73 73  3d 3e 66 73 79 73 5f 6c  | address=>fsys_l|
0002b660  6f 61 64 65 78 65 63 3e  20 6f 66 20 66 69 6c 65  |oadexec> of file|
0002b670  0a 09 52 34 20 3d 09 6e  75 6d 62 65 72 20 6f 66  |..R4 =.number of|
0002b680  20 65 6e 74 72 69 65 73  2c 20 6f 72 20 30 20 66  | entries, or 0 f|
0002b690  6f 72 20 64 65 66 61 75  6c 74 0a 09 52 36 20 3d  |or default..R6 =|
0002b6a0  09 68 61 6e 64 6c 65 20  6f 66 20 69 6d 61 67 65  |.handle of image|
0002b6b0  20 66 69 6c 65 0a 0a 54  68 69 73 20 63 61 6c 6c  | file..This call|
0002b6c0  20 69 73 20 6d 61 64 65  20 74 6f 20 63 72 65 61  | is made to crea|
0002b6d0  74 65 20 61 20 64 69 72  65 63 74 6f 72 79 2e 20  |te a directory. |
0002b6e0  52 34 20 61 6e 64 20 52  35 20 61 72 65 20 75 73  |R4 and R5 are us|
0002b6f0  65 64 20 74 6f 20 63 61  6c 63 75 6c 61 74 65 20  |ed to calculate |
0002b700  74 68 65 20 6c 65 6e 67  74 68 20 6f 66 20 74 68  |the length of th|
0002b710  65 20 66 69 6c 65 20 61  6e 64 20 6e 6f 20 64 61  |e file and no da|
0002b720  74 61 20 69 73 20 73 74  6f 72 65 64 2e 0a 00 00  |ta is stored....|
0002b730  44 41 54 41 e1 00 00 00  49 6d 61 67 65 45 6e 74  |DATA....ImageEnt|
0002b740  72 79 5f 46 69 6c 65 20  31 30 0a 23 50 61 72 65  |ry_File 10.#Pare|
0002b750  6e 74 20 49 6d 61 67 65  45 6e 74 72 79 5f 46 69  |nt ImageEntry_Fi|
0002b760  6c 65 0a 3d 3e 09 52 30  20 3d 09 31 30 20 28 52  |le.=>.R0 =.10 (R|
0002b770  65 61 64 20 62 6c 6f 63  6b 20 73 69 7a 65 29 0a  |ead block size).|
0002b780  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
0002b790  20 66 69 6c 65 6e 61 6d  65 0a 3c 3d 09 52 32 20  | filename.<=.R2 |
0002b7a0  3d 09 6e 61 74 75 72 61  6c 20 62 6c 6f 63 6b 20  |=.natural block |
0002b7b0  73 69 7a 65 20 6f 66 20  66 69 6c 65 0a 0a 54 68  |size of file..Th|
0002b7c0  69 73 20 63 61 6c 6c 20  69 73 20 6d 61 64 65 20  |is call is made |
0002b7d0  74 6f 20 72 65 61 64 20  74 68 65 20 6e 61 74 75  |to read the natu|
0002b7e0  72 61 6c 20 62 6c 6f 63  6b 20 73 69 7a 65 20 6f  |ral block size o|
0002b7f0  66 20 61 20 66 69 6c 65  2c 20 73 65 65 20 3c 49  |f a file, see <I|
0002b800  6d 61 67 65 45 6e 74 72  79 5f 4f 70 65 6e 3e 2e  |mageEntry_Open>.|
0002b810  0a 00 00 00 44 41 54 41  17 04 00 00 49 6d 61 67  |....DATA....Imag|
0002b820  65 45 6e 74 72 79 5f 46  75 6e 63 20 31 34 0a 23  |eEntry_Func 14.#|
0002b830  50 61 72 65 6e 74 20 49  6d 61 67 65 45 6e 74 72  |Parent ImageEntr|
0002b840  79 5f 46 75 6e 63 0a 3d  3e 09 52 30 20 3d 09 31  |y_Func.=>.R0 =.1|
0002b850  34 20 28 52 65 61 64 20  64 69 72 65 63 74 6f 72  |4 (Read director|
0002b860  79 20 65 6e 74 72 69 65  73 29 0a 09 52 31 20 3d  |y entries)..R1 =|
0002b870  09 70 6f 69 6e 74 65 72  20 74 6f 20 28 77 69 6c  |.pointer to (wil|
0002b880  63 61 72 64 65 64 29 20  64 69 72 65 63 74 6f 72  |carded) director|
0002b890  79 20 6e 61 6d 65 0a 09  52 32 20 3d 09 70 6f 69  |y name..R2 =.poi|
0002b8a0  6e 74 65 72 20 74 6f 20  62 75 66 66 65 72 0a 09  |nter to buffer..|
0002b8b0  52 33 20 3d 09 6e 75 6d  62 65 72 20 6f 66 20 6f  |R3 =.number of o|
0002b8c0  62 6a 65 63 74 73 20 74  6f 20 72 65 61 64 0a 09  |bjects to read..|
0002b8d0  52 34 20 3d 09 77 68 65  72 65 20 74 6f 20 73 74  |R4 =.where to st|
0002b8e0  61 72 74 2c 20 30 20 66  6f 72 20 66 69 72 73 74  |art, 0 for first|
0002b8f0  20 74 69 6d 65 0a 09 52  35 20 3d 09 6c 65 6e 67  | time..R5 =.leng|
0002b900  74 68 20 6f 66 20 62 75  66 66 65 72 0a 09 52 36  |th of buffer..R6|
0002b910  20 3d 09 3c 69 6d 61 67  65 20 66 69 6c 69 6e 67  | =.<image filing|
0002b920  20 73 79 73 74 65 6d 27  73 20 68 61 6e 64 6c 65  | system's handle|
0002b930  3d 3e 49 6d 61 67 65 45  6e 74 72 79 5f 46 75 6e  |=>ImageEntry_Fun|
0002b940  63 32 31 3e 0a 0a 3c 3d  09 52 33 20 3d 09 6e 75  |c21>..<=.R3 =.nu|
0002b950  6d 62 65 72 20 6f 66 20  6f 62 6a 65 63 74 73 20  |mber of objects |
0002b960  72 65 61 64 0a 09 52 34  20 3d 09 77 68 65 72 65  |read..R4 =.where|
0002b970  20 74 6f 20 63 6f 6e 74  69 6e 75 65 2c 20 6f 72  | to continue, or|
0002b980  20 2d 31 20 66 6f 72 20  6e 6f 20 6d 6f 72 65 0a  | -1 for no more.|
0002b990  0a 54 68 69 73 20 63 61  6c 6c 20 73 68 6f 75 6c  |.This call shoul|
0002b9a0  64 20 66 69 6c 6c 20 74  68 65 20 62 75 66 66 65  |d fill the buffe|
0002b9b0  72 20 69 6e 20 52 32 20  77 69 74 68 20 6e 75 6c  |r in R2 with nul|
0002b9c0  6c 20 74 65 72 6d 69 6e  61 74 65 64 20 6c 65 61  |l terminated lea|
0002b9d0  66 20 6e 61 6d 65 73 20  6f 66 20 65 6e 74 72 69  |f names of entri|
0002b9e0  65 73 20 69 6e 20 74 68  65 20 73 70 65 63 69 66  |es in the specif|
0002b9f0  69 65 64 20 64 69 72 65  63 74 6f 72 79 2c 20 6f  |ied directory, o|
0002ba00  72 20 74 68 65 20 63 75  72 72 65 6e 74 20 64 69  |r the current di|
0002ba10  72 65 63 74 6f 72 79 20  69 66 20 74 68 65 20 6e  |rectory if the n|
0002ba20  61 6d 65 20 69 73 20 6e  75 6c 6c 2e 20 54 68 65  |ame is null. The|
0002ba30  20 6c 65 6e 67 74 68 20  6f 66 20 74 68 65 20 62  | length of the b|
0002ba40  75 66 66 65 72 20 76 61  6c 69 64 61 74 65 64 20  |uffer validated |
0002ba50  64 65 70 65 6e 64 73 20  6f 6e 20 77 68 69 63 68  |depends on which|
0002ba60  20 4f 53 5f 47 42 50 42  20 53 57 49 20 63 61 75  | OS_GBPB SWI cau|
0002ba70  73 65 73 20 74 68 69 73  20 63 61 6c 6c 3a 0a 0a  |ses this call:..|
0002ba80  23 54 61 62 0a 3c 4f 53  5f 47 42 50 42 20 38 3d  |#Tab.<OS_GBPB 8=|
0002ba90  3e 4f 53 5f 47 42 50 42  38 3e 09 31 31 20 2a 20  |>OS_GBPB8>.11 * |
0002baa0  52 33 20 62 79 74 65 73  0a 3c 4f 53 5f 47 42 50  |R3 bytes.<OS_GBP|
0002bab0  42 20 39 3d 3e 4f 53 5f  47 42 50 42 39 3e 09 52  |B 9=>OS_GBPB9>.R|
0002bac0  35 20 62 79 74 65 73 0a  0a 61 6e 64 20 74 68 65  |5 bytes..and the|
0002bad0  72 65 20 69 73 20 6e 6f  20 77 61 79 20 74 6f 20  |re is no way to |
0002bae0  74 65 6c 6c 20 77 68 69  63 68 20 69 73 20 74 68  |tell which is th|
0002baf0  65 20 63 61 73 65 2e 20  3a 2d 28 0a 0a 4f 6e 6c  |e case. :-(..Onl|
0002bb00  79 20 63 6f 75 6e 74 20  6c 65 61 66 20 6e 61 6d  |y count leaf nam|
0002bb10  65 73 20 74 68 61 74 20  66 69 74 20 63 6f 6d 70  |es that fit comp|
0002bb20  6c 65 74 65 6c 79 20 69  6e 74 6f 20 74 68 65 20  |letely into the |
0002bb30  62 75 66 66 65 72 2e 20  52 65 74 75 72 6e 20 61  |buffer. Return a|
0002bb40  6e 20 65 72 72 6f 72 20  69 66 20 74 68 65 20 63  |n error if the c|
0002bb50  61 74 61 6c 6f 67 65 64  20 6f 62 6a 65 63 74 20  |ataloged object |
0002bb60  69 73 20 6e 6f 74 20 66  6f 75 6e 64 20 6f 72 20  |is not found or |
0002bb70  61 20 66 69 6c 65 2c 20  62 75 74 20 72 65 74 75  |a file, but retu|
0002bb80  72 6e 20 76 61 6c 69 64  20 77 69 74 68 20 52 33  |rn valid with R3|
0002bb90  3d 30 2c 20 52 34 5c 3c  3e 31 20 66 6f 72 20 62  |=0, R4\<>1 for b|
0002bba0  75 66 66 65 72 20 6f 76  65 72 66 6c 6f 77 20 6f  |uffer overflow o|
0002bbb0  72 20 6d 6f 72 65 20 6e  61 6d 65 73 20 74 6f 20  |r more names to |
0002bbc0  72 65 61 64 2c 20 52 33  3d 30 2c 52 34 3d 2d 31  |read, R3=0,R4=-1|
0002bbd0  20 69 66 20 74 68 65 20  70 72 65 76 69 6f 75 73  | if the previous|
0002bbe0  20 63 61 6c 6c 20 64 69  64 6e 27 74 20 64 65 74  | call didn't det|
0002bbf0  65 63 74 20 74 68 65 20  65 6e 64 20 62 75 74 20  |ect the end but |
0002bc00  79 6f 75 20 6e 6f 77 20  66 69 6e 64 20 74 68 61  |you now find tha|
0002bc10  74 20 74 68 65 72 65 20  61 72 65 20 6e 6f 20 6d  |t there are no m|
0002bc20  6f 72 65 20 6e 61 6d 65  73 2e 0a 00 44 41 54 41  |ore names...DATA|
0002bc30  1f 03 00 00 49 6d 61 67  65 45 6e 74 72 79 5f 46  |....ImageEntry_F|
0002bc40  75 6e 63 20 31 35 0a 23  50 61 72 65 6e 74 20 49  |unc 15.#Parent I|
0002bc50  6d 61 67 65 45 6e 74 72  79 5f 46 75 6e 63 0a 3d  |mageEntry_Func.=|
0002bc60  3e 09 52 30 20 3d 09 31  35 20 28 52 65 61 64 20  |>.R0 =.15 (Read |
0002bc70  64 69 72 65 63 74 6f 72  79 20 65 6e 74 72 69 65  |directory entrie|
0002bc80  73 20 61 6e 64 20 69 6e  66 6f 72 6d 61 74 69 6f  |s and informatio|
0002bc90  6e 29 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |n)..R1 =.pointer|
0002bca0  20 74 6f 20 28 77 69 6c  63 61 72 64 65 64 29 20  | to (wilcarded) |
0002bcb0  64 69 72 65 63 74 6f 72  79 20 6e 61 6d 65 0a 09  |directory name..|
0002bcc0  52 32 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R2 =.pointer to |
0002bcd0  62 75 66 66 65 72 0a 09  52 33 20 3d 09 6e 75 6d  |buffer..R3 =.num|
0002bce0  62 65 72 20 6f 66 20 6f  62 6a 65 63 74 73 20 74  |ber of objects t|
0002bcf0  6f 20 72 65 61 64 0a 09  52 34 20 3d 09 77 68 65  |o read..R4 =.whe|
0002bd00  72 65 20 74 6f 20 73 74  61 72 74 2c 20 30 20 66  |re to start, 0 f|
0002bd10  6f 72 20 66 69 72 73 74  20 74 69 6d 65 0a 09 52  |or first time..R|
0002bd20  35 20 3d 09 6c 65 6e 67  74 68 20 6f 66 20 62 75  |5 =.length of bu|
0002bd30  66 66 65 72 0a 09 52 36  20 3d 09 3c 69 6d 61 67  |ffer..R6 =.<imag|
0002bd40  65 20 66 69 6c 69 6e 67  20 73 79 73 74 65 6d 27  |e filing system'|
0002bd50  73 20 68 61 6e 64 6c 65  3d 3e 49 6d 61 67 65 45  |s handle=>ImageE|
0002bd60  6e 74 72 79 5f 46 75 6e  63 32 31 3e 0a 0a 3c 3d  |ntry_Func21>..<=|
0002bd70  09 52 33 20 3d 09 6e 75  6d 62 65 72 20 6f 66 20  |.R3 =.number of |
0002bd80  6f 62 6a 65 63 74 73 20  72 65 61 64 0a 09 52 34  |objects read..R4|
0002bd90  20 3d 09 77 68 65 72 65  20 74 6f 20 63 6f 6e 74  | =.where to cont|
0002bda0  69 6e 75 65 2c 20 6f 72  20 2d 31 20 66 6f 72 20  |inue, or -1 for |
0002bdb0  6e 6f 20 6d 6f 72 65 0a  0a 54 68 69 73 20 63 61  |no more..This ca|
0002bdc0  6c 6c 20 73 68 6f 75 6c  64 20 66 69 6c 6c 20 74  |ll should fill t|
0002bdd0  68 65 20 62 75 66 66 65  72 20 69 6e 20 52 32 20  |he buffer in R2 |
0002bde0  77 69 74 68 20 65 6e 74  72 69 65 73 20 69 6e 20  |with entries in |
0002bdf0  3c 4f 53 5f 47 42 50 42  20 31 30 20 66 6f 72 6d  |<OS_GBPB 10 form|
0002be00  61 74 3d 3e 4f 53 5f 47  42 50 42 31 30 62 75 66  |at=>OS_GBPB10buf|
0002be10  66 65 72 3e 2e 0a 0a 4f  6e 6c 79 20 63 6f 75 6e  |fer>...Only coun|
0002be20  74 20 6c 65 61 66 20 6e  61 6d 65 73 20 74 68 61  |t leaf names tha|
0002be30  74 20 77 69 6c 6c 20 66  69 74 20 63 6f 6d 70 6c  |t will fit compl|
0002be40  65 74 65 6c 79 20 69 6e  74 6f 20 74 68 65 20 62  |etely into the b|
0002be50  75 66 66 65 72 2e 20 52  65 74 75 72 6e 20 61 6e  |uffer. Return an|
0002be60  20 65 72 72 6f 72 20 69  66 20 74 68 65 20 63 61  | error if the ca|
0002be70  74 61 6c 6f 67 65 64 20  6f 62 6a 65 63 74 20 69  |taloged object i|
0002be80  73 20 6e 6f 74 20 66 6f  75 6e 64 20 6f 72 20 61  |s not found or a|
0002be90  20 66 69 6c 65 2c 20 62  75 74 20 72 65 74 75 72  | file, but retur|
0002bea0  6e 20 76 61 6c 69 64 20  77 69 74 68 20 52 33 3d  |n valid with R3=|
0002beb0  30 2c 20 52 34 5c 3c 3e  31 20 66 6f 72 20 62 75  |0, R4\<>1 for bu|
0002bec0  66 66 65 72 20 6f 76 65  72 66 6c 6f 77 20 6f 72  |ffer overflow or|
0002bed0  20 6d 6f 72 65 20 6e 61  6d 65 73 20 74 6f 20 72  | more names to r|
0002bee0  65 61 64 2c 20 52 33 3d  30 2c 20 52 34 3d 2d 31  |ead, R3=0, R4=-1|
0002bef0  20 69 66 20 74 68 65 20  70 72 65 76 69 6f 75 73  | if the previous|
0002bf00  20 63 61 6c 6c 20 64 69  64 6e 27 74 20 64 65 74  | call didn't det|
0002bf10  65 63 74 20 74 68 65 20  65 6e 64 20 62 75 74 20  |ect the end but |
0002bf20  79 6f 75 20 6e 6f 77 20  66 69 6e 64 20 74 68 61  |you now find tha|
0002bf30  74 20 74 68 65 72 65 20  61 72 65 20 6e 6f 20 6d  |t there are no m|
0002bf40  6f 72 65 20 6e 61 6d 65  73 2e 0a 00 44 41 54 41  |ore names...DATA|
0002bf50  31 02 00 00 49 6d 61 67  65 45 6e 74 72 79 5f 46  |1...ImageEntry_F|
0002bf60  75 6e 63 20 32 31 0a 23  50 61 72 65 6e 74 20 49  |unc 21.#Parent I|
0002bf70  6d 61 67 65 45 6e 74 72  79 5f 46 75 6e 63 0a 3d  |mageEntry_Func.=|
0002bf80  3e 09 52 30 20 3d 09 32  31 20 28 4e 6f 74 69 66  |>.R0 =.21 (Notif|
0002bf90  69 63 61 74 69 6f 6e 20  6f 66 20 6e 65 77 20 69  |ication of new i|
0002bfa0  6d 61 67 65 29 0a 09 52  31 20 3d 09 66 69 6c 65  |mage)..R1 =.file|
0002bfb0  73 77 69 74 63 68 20 68  61 6e 64 6c 65 20 66 6f  |switch handle fo|
0002bfc0  72 20 74 68 65 20 66 69  6c 65 0a 09 52 32 20 3d  |r the file..R2 =|
0002bfd0  09 62 75 66 66 65 72 20  73 69 7a 65 20 66 6f 72  |.buffer size for|
0002bfe0  20 66 69 6c 65 2c 20 6f  72 20 30 20 69 66 20 75  | file, or 0 if u|
0002bff0  6b 6e 6f 77 6e 0a 0a 3c  3d 09 52 31 20 3d 09 69  |known..<=.R1 =.i|
0002c000  6d 61 67 65 20 66 69 6c  69 6e 67 20 73 79 73 74  |mage filing syst|
0002c010  65 6d 27 73 20 68 61 6e  64 6c 65 20 66 6f 72 20  |em's handle for |
0002c020  69 6d 61 67 65 0a 0a 54  68 69 73 20 63 61 6c 6c  |image..This call|
0002c030  20 69 73 20 6d 61 64 65  20 74 6f 20 6e 6f 74 69  | is made to noti|
0002c040  66 79 20 79 6f 75 72 20  66 69 6c 69 6e 67 20 73  |fy your filing s|
0002c050  79 73 74 65 6d 20 74 68  61 74 20 46 69 6c 65 53  |ystem that FileS|
0002c060  77 69 74 63 68 20 77 6f  75 6c 64 20 6c 69 6b 65  |witch would like|
0002c070  20 69 74 20 74 6f 20 68  61 6e 64 6c 65 20 61 20  | it to handle a |
0002c080  6e 65 77 20 69 6d 61 67  65 2e 20 54 68 65 20 69  |new image. The i|
0002c090  6d 61 67 65 20 73 68 6f  75 6c 64 20 62 65 20 6d  |mage should be m|
0002c0a0  61 72 6b 65 64 20 61 73  20 27 73 74 61 6d 70 20  |arked as 'stamp |
0002c0b0  6f 6e 20 6e 65 78 74 20  75 70 64 61 74 65 27 20  |on next update' |
0002c0c0  28 75 73 65 20 3c 4f 53  5f 41 72 67 73 20 38 3d  |(use <OS_Args 8=|
0002c0d0  3e 4f 53 5f 41 72 67 73  30 30 38 3e 20 74 6f 20  |>OS_Args008> to |
0002c0e0  69 6e 66 6f 72 6d 20 74  68 65 20 68 6f 73 74 20  |inform the host |
0002c0f0  66 69 6c 69 6e 67 20 73  79 73 74 65 6d 20 77 68  |filing system wh|
0002c100  65 6e 65 76 65 72 20 69  74 20 61 6e 64 20 69 74  |enever it and it|
0002c110  73 20 3c 63 79 63 6c 65  20 49 44 3d 3e 46 69 6c  |s <cycle ID=>Fil|
0002c120  65 43 6f 72 65 5f 63 79  63 6c 65 69 64 3e 20 61  |eCore_cycleid> a|
0002c130  72 65 20 75 70 64 61 74  65 64 29 2e 20 54 68 65  |re updated). The|
0002c140  20 62 75 66 66 65 72 20  73 69 7a 65 20 73 68 6f  | buffer size sho|
0002c150  75 6c 64 20 62 65 20 74  72 65 61 74 65 64 20 61  |uld be treated a|
0002c160  73 20 61 20 68 69 6e 74  20 74 6f 20 74 68 65 20  |s a hint to the |
0002c170  73 65 63 74 6f 72 20 73  69 7a 65 2e 0a 00 00 00  |sector size.....|
0002c180  44 41 54 41 4f 01 00 00  49 6d 61 67 65 45 6e 74  |DATAO...ImageEnt|
0002c190  72 79 5f 46 75 6e 63 20  32 32 0a 23 50 61 72 65  |ry_Func 22.#Pare|
0002c1a0  6e 74 20 49 6d 61 67 65  45 6e 74 72 79 5f 46 75  |nt ImageEntry_Fu|
0002c1b0  6e 63 0a 3d 3e 09 52 30  20 3d 09 32 32 20 28 4e  |nc.=>.R0 =.22 (N|
0002c1c0  6f 74 69 66 69 63 61 74  69 6f 6e 20 6f 66 20 69  |otification of i|
0002c1d0  6d 61 67 65 20 63 6c 6f  73 75 72 65 29 0a 09 52  |mage closure)..R|
0002c1e0  31 20 3d 09 3c 69 6d 61  67 65 20 66 69 6c 69 6e  |1 =.<image filin|
0002c1f0  67 20 73 79 73 74 65 6d  27 73 20 68 61 6e 64 6c  |g system's handl|
0002c200  65 3d 3e 49 6d 61 67 65  45 6e 74 72 79 5f 46 75  |e=>ImageEntry_Fu|
0002c210  6e 63 32 31 3e 0a 0a 54  68 69 73 20 63 61 6c 6c  |nc21>..This call|
0002c220  20 69 73 20 6d 61 64 65  20 74 6f 20 6e 6f 74 69  | is made to noti|
0002c230  66 79 20 79 6f 75 72 20  66 69 6c 69 6e 67 20 73  |fy your filing s|
0002c240  79 73 74 65 6d 20 74 68  61 74 20 46 69 6c 65 53  |ystem that FileS|
0002c250  77 69 74 63 68 20 69 73  20 61 62 6f 75 74 20 74  |witch is about t|
0002c260  6f 20 63 6c 6f 73 65 20  74 68 65 20 69 6d 61 67  |o close the imag|
0002c270  65 2e 20 41 6c 6c 20 66  69 6c 65 73 20 77 69 6c  |e. All files wil|
0002c280  6c 20 61 6c 72 65 61 64  79 20 62 65 20 63 6c 6f  |l already be clo|
0002c290  73 65 64 20 2d 20 74 68  69 73 20 63 61 6c 6c 20  |sed - this call |
0002c2a0  69 73 20 6d 61 64 65 20  74 6f 20 61 6c 6c 6f 77  |is made to allow|
0002c2b0  20 79 6f 75 20 74 6f 20  77 72 69 74 65 20 6f 75  | you to write ou|
0002c2c0  74 20 63 61 63 68 65 64  20 64 61 74 61 2e 0a 00  |t cached data...|
0002c2d0  44 41 54 41 80 01 00 00  49 6d 61 67 65 45 6e 74  |DATA....ImageEnt|
0002c2e0  72 79 5f 46 75 6e 63 20  32 35 0a 23 50 61 72 65  |ry_Func 25.#Pare|
0002c2f0  6e 74 20 49 6d 61 67 65  45 6e 74 72 79 5f 46 75  |nt ImageEntry_Fu|
0002c300  6e 63 0a 3d 3e 09 52 30  20 3d 09 32 35 20 28 52  |nc.=>.R0 =.25 (R|
0002c310  65 61 64 20 64 65 66 65  63 74 20 6c 69 73 74 29  |ead defect list)|
0002c320  0a 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R2 =.pointer t|
0002c330  6f 20 62 75 66 66 65 72  0a 09 52 35 20 3d 09 6c  |o buffer..R5 =.l|
0002c340  65 6e 67 74 68 20 6f 66  20 62 75 66 66 65 72 0a  |ength of buffer.|
0002c350  09 52 36 20 3d 09 3c 69  6d 61 67 65 20 66 69 6c  |.R6 =.<image fil|
0002c360  69 6e 67 20 73 79 73 74  65 6d 27 73 20 68 61 6e  |ing system's han|
0002c370  64 6c 65 3d 3e 49 6d 61  67 65 45 6e 74 72 79 5f  |dle=>ImageEntry_|
0002c380  46 75 6e 63 32 31 3e 0a  0a 54 68 69 73 20 63 61  |Func21>..This ca|
0002c390  6c 6c 20 66 69 6c 6c 73  20 74 68 65 20 62 75 66  |ll fills the buf|
0002c3a0  66 65 72 20 77 69 74 68  20 74 68 65 20 64 65 66  |fer with the def|
0002c3b0  65 63 74 20 6c 69 73 74  20 6f 66 20 61 6e 20 69  |ect list of an i|
0002c3c0  6d 61 67 65 2e 20 54 68  65 20 62 75 66 66 65 72  |mage. The buffer|
0002c3d0  20 69 73 20 66 69 6c 6c  65 64 20 77 69 74 68 20  | is filled with |
0002c3e0  77 6f 72 64 73 20 67 69  76 69 6e 67 20 62 79 74  |words giving byt|
0002c3f0  65 20 6f 66 66 73 65 74  73 20 6f 66 20 64 65 66  |e offsets of def|
0002c400  65 63 74 73 2c 20 74 65  72 6d 69 6e 61 74 65 64  |ects, terminated|
0002c410  20 62 79 20 26 32 30 30  30 30 30 30 30 2e 20 49  | by &20000000. I|
0002c420  74 20 69 6d 70 6c 65 6d  65 6e 74 73 20 3c 4f 53  |t implements <OS|
0002c430  5f 46 53 43 6f 6e 74 72  6f 6c 20 34 31 3d 3e 4f  |_FSControl 41=>O|
0002c440  53 5f 46 53 43 6f 6e 74  72 6f 6c 34 31 3e 2e 0a  |S_FSControl41>..|
0002c450  44 41 54 41 e3 00 00 00  49 6d 61 67 65 45 6e 74  |DATA....ImageEnt|
0002c460  72 79 5f 46 75 6e 63 20  32 36 0a 23 50 61 72 65  |ry_Func 26.#Pare|
0002c470  6e 74 20 49 6d 61 67 65  45 6e 74 72 79 5f 46 75  |nt ImageEntry_Fu|
0002c480  6e 63 0a 3d 3e 09 52 30  20 3d 09 32 36 20 28 41  |nc.=>.R0 =.26 (A|
0002c490  64 64 20 61 20 64 65 66  65 63 74 29 0a 09 52 32  |dd a defect)..R2|
0002c4a0  20 3d 09 62 79 74 65 20  6f 66 66 73 65 74 20 74  | =.byte offset t|
0002c4b0  6f 20 73 74 61 72 74 20  6f 66 20 64 65 66 65 63  |o start of defec|
0002c4c0  74 0a 09 52 36 20 3d 09  3c 69 6d 61 67 65 20 66  |t..R6 =.<image f|
0002c4d0  69 6c 69 6e 67 20 73 79  73 74 65 6d 27 73 20 68  |iling system's h|
0002c4e0  61 6e 64 6c 65 3d 3e 49  6d 61 67 65 45 6e 74 72  |andle=>ImageEntr|
0002c4f0  79 5f 46 75 6e 63 32 31  3e 0a 0a 54 68 69 73 20  |y_Func21>..This |
0002c500  63 61 6c 6c 20 69 6d 70  6c 65 6d 65 6e 74 73 20  |call implements |
0002c510  3c 4f 53 5f 46 53 43 6f  6e 74 72 6f 6c 20 34 32  |<OS_FSControl 42|
0002c520  3d 3e 4f 53 5f 46 53 43  6f 6e 74 72 6f 6c 34 32  |=>OS_FSControl42|
0002c530  3e 2e 0a 00 44 41 54 41  34 01 00 00 49 6d 61 67  |>...DATA4...Imag|
0002c540  65 45 6e 74 72 79 5f 46  75 6e 63 20 32 37 0a 23  |eEntry_Func 27.#|
0002c550  50 61 72 65 6e 74 20 49  6d 61 67 65 45 6e 74 72  |Parent ImageEntr|
0002c560  79 5f 46 75 6e 63 0a 3d  3e 09 52 30 20 3d 09 32  |y_Func.=>.R0 =.2|
0002c570  37 20 28 52 65 61 64 20  62 6f 6f 74 20 6f 70 74  |7 (Read boot opt|
0002c580  69 6f 6e 29 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |ion)..R1 =.point|
0002c590  65 72 20 74 6f 20 6e 61  6d 65 20 6f 66 20 61 6e  |er to name of an|
0002c5a0  79 20 6f 62 6a 65 63 74  20 6f 6e 20 69 6d 61 67  |y object on imag|
0002c5b0  65 0a 09 52 36 20 3d 09  3c 69 6d 61 67 65 20 66  |e..R6 =.<image f|
0002c5c0  69 6c 69 6e 67 20 73 79  73 74 65 6d 27 73 20 68  |iling system's h|
0002c5d0  61 6e 64 6c 65 3d 3e 49  6d 61 67 65 45 6e 74 72  |andle=>ImageEntr|
0002c5e0  79 5f 46 75 6e 63 32 31  3e 0a 0a 3c 3d 09 52 32  |y_Func21>..<=.R2|
0002c5f0  20 3d 09 3c 62 6f 6f 74  20 6f 70 74 69 6f 6e 3d  | =.<boot option=|
0002c600  3e 66 73 79 73 5f 6f 70  74 34 3e 0a 0a 54 68 69  |>fsys_opt4>..Thi|
0002c610  73 20 63 61 6c 6c 20 72  65 61 64 73 20 74 68 65  |s call reads the|
0002c620  20 62 6f 6f 74 20 6f 70  74 69 6f 6e 20 6f 66 20  | boot option of |
0002c630  61 20 64 69 73 63 2c 20  69 6d 70 6c 65 6d 65 6e  |a disc, implemen|
0002c640  74 69 6e 67 20 3c 4f 53  5f 46 53 43 6f 6e 74 72  |ting <OS_FSContr|
0002c650  6f 6c 20 34 37 3d 3e 4f  53 5f 46 53 43 6f 6e 74  |ol 47=>OS_FSCont|
0002c660  72 6f 6c 34 37 3e 2e 0a  44 41 54 41 35 01 00 00  |rol47>..DATA5...|
0002c670  49 6d 61 67 65 45 6e 74  72 79 5f 46 75 6e 63 20  |ImageEntry_Func |
0002c680  32 38 0a 23 50 61 72 65  6e 74 20 49 6d 61 67 65  |28.#Parent Image|
0002c690  45 6e 74 72 79 5f 46 75  6e 63 0a 3d 3e 09 52 30  |Entry_Func.=>.R0|
0002c6a0  20 3d 09 32 38 20 28 57  72 69 74 65 20 62 6f 6f  | =.28 (Write boo|
0002c6b0  74 20 6f 70 74 69 6f 6e  29 0a 09 52 31 20 3d 09  |t option)..R1 =.|
0002c6c0  70 6f 69 6e 74 65 72 20  74 6f 20 6e 61 6d 65 20  |pointer to name |
0002c6d0  6f 66 20 61 6e 79 20 6f  62 6a 65 63 74 20 6f 6e  |of any object on|
0002c6e0  20 69 6d 61 67 65 0a 09  52 32 20 3d 09 6e 65 77  | image..R2 =.new|
0002c6f0  20 3c 62 6f 6f 74 20 6f  70 74 69 6f 6e 3d 3e 66  | <boot option=>f|
0002c700  73 79 73 5f 6f 70 74 34  3e 0a 09 52 36 20 3d 09  |sys_opt4>..R6 =.|
0002c710  3c 69 6d 61 67 65 20 66  69 6c 69 6e 67 20 73 79  |<image filing sy|
0002c720  73 74 65 6d 27 73 20 68  61 6e 64 6c 65 3d 3e 49  |stem's handle=>I|
0002c730  6d 61 67 65 45 6e 74 72  79 5f 46 75 6e 63 32 31  |mageEntry_Func21|
0002c740  3e 0a 0a 54 68 69 73 20  63 61 6c 6c 20 73 65 74  |>..This call set|
0002c750  73 20 74 68 65 20 62 6f  6f 74 20 6f 70 74 69 6f  |s the boot optio|
0002c760  6e 20 6f 66 20 61 20 64  69 73 63 2c 20 69 6d 70  |n of a disc, imp|
0002c770  6c 65 6d 65 6e 74 69 6e  67 20 3c 4f 53 5f 46 53  |lementing <OS_FS|
0002c780  43 6f 6e 74 72 6f 6c 20  34 38 3d 3e 4f 53 5f 46  |Control 48=>OS_F|
0002c790  53 43 6f 6e 74 72 6f 6c  34 37 3e 2e 0a 00 00 00  |SControl47>.....|
0002c7a0  44 41 54 41 ba 01 00 00  49 6d 61 67 65 45 6e 74  |DATA....ImageEnt|
0002c7b0  72 79 5f 46 75 6e 63 20  32 39 0a 23 50 61 72 65  |ry_Func 29.#Pare|
0002c7c0  6e 74 20 49 6d 61 67 65  45 6e 74 72 79 5f 46 75  |nt ImageEntry_Fu|
0002c7d0  6e 63 0a 3d 3e 09 52 30  20 3d 09 32 39 20 28 52  |nc.=>.R0 =.29 (R|
0002c7e0  65 61 64 20 75 73 65 64  20 73 70 61 63 65 20 6d  |ead used space m|
0002c7f0  61 70 29 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |ap)..R1 =.pointe|
0002c800  72 20 74 6f 20 6e 61 6d  65 20 6f 66 20 61 6e 79  |r to name of any|
0002c810  20 6f 62 6a 65 63 74 20  6f 6e 20 69 6d 61 67 65  | object on image|
0002c820  0a 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R2 =.pointer t|
0002c830  6f 20 62 75 66 66 65 72  0a 09 52 35 20 3d 09 73  |o buffer..R5 =.s|
0002c840  69 7a 65 20 6f 66 20 62  75 66 66 65 72 0a 09 52  |ize of buffer..R|
0002c850  36 20 3d 09 3c 69 6d 61  67 65 20 66 69 6c 69 6e  |6 =.<image filin|
0002c860  67 20 73 79 73 74 65 6d  27 73 20 68 61 6e 64 6c  |g system's handl|
0002c870  65 3d 3e 49 6d 61 67 65  45 6e 74 72 79 5f 46 75  |e=>ImageEntry_Fu|
0002c880  6e 63 32 31 3e 0a 0a 54  68 69 73 20 63 61 6c 6c  |nc21>..This call|
0002c890  20 72 65 61 64 73 20 74  68 65 20 75 73 65 64 20  | reads the used |
0002c8a0  73 70 61 63 65 20 6d 61  70 20 6f 66 20 61 6e 20  |space map of an |
0002c8b0  69 6d 61 67 65 2c 20 69  6d 70 6c 65 6d 65 6e 74  |image, implement|
0002c8c0  69 6e 67 20 3c 4f 53 5f  46 53 43 6f 6e 74 72 6f  |ing <OS_FSContro|
0002c8d0  6c 20 34 36 3d 3e 4f 53  5f 46 53 43 6f 6e 74 72  |l 46=>OS_FSContr|
0002c8e0  6f 6c 34 36 3e 2e 20 54  68 65 20 62 75 66 66 65  |ol46>. The buffe|
0002c8f0  72 20 69 73 20 70 72 65  2d 66 69 6c 6c 65 64 20  |r is pre-filled |
0002c900  77 69 74 68 20 30 73 20  2d 20 79 6f 75 20 6d 75  |with 0s - you mu|
0002c910  73 74 20 66 69 6c 6c 20  69 74 20 77 69 74 68 20  |st fill it with |
0002c920  31 73 20 66 6f 72 20 75  73 65 64 20 62 6c 6f 63  |1s for used bloc|
0002c930  6b 73 2c 20 74 6f 20 74  68 65 20 6c 69 6d 69 74  |ks, to the limit|
0002c940  20 6f 66 20 74 68 65 20  69 6d 61 67 65 2f 74 68  | of the image/th|
0002c950  65 20 62 75 66 66 65 72  2e 0a 00 00 44 41 54 41  |e buffer....DATA|
0002c960  6b 01 00 00 49 6d 61 67  65 45 6e 74 72 79 5f 46  |k...ImageEntry_F|
0002c970  75 6e 63 20 33 30 0a 23  50 61 72 65 6e 74 20 49  |unc 30.#Parent I|
0002c980  6d 61 67 65 45 6e 74 72  79 5f 46 75 6e 63 0a 3d  |mageEntry_Func.=|
0002c990  3e 09 52 30 20 3d 09 33  30 20 28 52 65 61 64 20  |>.R0 =.30 (Read |
0002c9a0  66 72 65 65 20 73 70 61  63 65 29 0a 09 52 31 20  |free space)..R1 |
0002c9b0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 6e 61 6d  |=.pointer to nam|
0002c9c0  65 20 6f 66 20 61 6e 79  20 6f 62 6a 65 63 74 20  |e of any object |
0002c9d0  6f 6e 20 69 6d 61 67 65  0a 09 52 36 20 3d 09 3c  |on image..R6 =.<|
0002c9e0  69 6d 61 67 65 20 66 69  6c 69 6e 67 20 73 79 73  |image filing sys|
0002c9f0  74 65 6d 27 73 20 68 61  6e 64 6c 65 3d 3e 49 6d  |tem's handle=>Im|
0002ca00  61 67 65 45 6e 74 72 79  5f 46 75 6e 63 32 31 3e  |ageEntry_Func21>|
0002ca10  0a 0a 3c 3d 09 52 30 20  3d 09 66 72 65 65 20 73  |..<=.R0 =.free s|
0002ca20  70 61 63 65 0a 09 52 31  20 3d 09 73 69 7a 65 20  |pace..R1 =.size |
0002ca30  6f 66 20 6c 61 72 67 65  73 74 20 6f 62 6a 65 63  |of largest objec|
0002ca40  74 20 74 68 61 74 20 63  61 6e 20 62 65 20 63 72  |t that can be cr|
0002ca50  65 61 74 65 64 2e 0a 09  52 32 20 3d 09 73 69 7a  |eated...R2 =.siz|
0002ca60  65 20 6f 66 20 64 69 73  63 0a 0a 54 68 69 73 20  |e of disc..This |
0002ca70  63 61 6c 6c 20 72 65 61  64 73 20 74 68 65 20 66  |call reads the f|
0002ca80  72 65 65 20 73 70 61 63  65 20 6f 66 20 61 6e 20  |ree space of an |
0002ca90  69 6d 61 67 65 2c 20 69  6d 70 6c 65 6d 65 6e 74  |image, implement|
0002caa0  69 6e 67 20 3c 4f 53 5f  46 53 43 6f 6e 74 72 6f  |ing <OS_FSContro|
0002cab0  6c 20 34 39 3d 3e 4f 53  5f 46 53 43 6f 6e 74 72  |l 49=>OS_FSContr|
0002cac0  6f 6c 34 39 3e 2e 0a 00  44 41 54 41 37 01 00 00  |ol49>...DATA7...|
0002cad0  49 6d 61 67 65 45 6e 74  72 79 5f 46 75 6e 63 20  |ImageEntry_Func |
0002cae0  33 31 0a 23 50 61 72 65  6e 74 20 49 6d 61 67 65  |31.#Parent Image|
0002caf0  45 6e 74 72 79 5f 46 75  6e 63 0a 3d 3e 09 52 30  |Entry_Func.=>.R0|
0002cb00  20 3d 09 33 31 20 28 4e  61 6d 65 20 69 6d 61 67  | =.31 (Name imag|
0002cb10  65 29 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |e)..R1 =.pointer|
0002cb20  20 74 6f 20 6e 61 6d 65  20 6f 66 20 61 6e 79 20  | to name of any |
0002cb30  6f 62 6a 65 63 74 20 6f  6e 20 69 6d 61 67 65 0a  |object on image.|
0002cb40  09 52 32 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R2 =.pointer to|
0002cb50  20 6e 65 77 20 2a 64 69  73 63 20 6e 61 6d 65 2a  | new *disc name*|
0002cb60  20 66 6f 72 20 69 6d 61  67 65 0a 09 52 36 20 3d  | for image..R6 =|
0002cb70  09 3c 69 6d 61 67 65 20  66 69 6c 69 6e 67 20 73  |.<image filing s|
0002cb80  79 73 74 65 6d 27 73 20  68 61 6e 64 6c 65 3d 3e  |ystem's handle=>|
0002cb90  49 6d 61 67 65 45 6e 74  72 79 5f 46 75 6e 63 32  |ImageEntry_Func2|
0002cba0  31 3e 0a 0a 54 68 69 73  20 63 61 6c 6c 20 73 65  |1>..This call se|
0002cbb0  74 73 20 74 68 65 20 64  69 73 63 20 6e 61 6d 65  |ts the disc name|
0002cbc0  20 66 6f 72 20 61 6e 20  69 6d 61 67 65 2c 20 69  | for an image, i|
0002cbd0  6d 70 6c 65 6d 65 6e 74  69 6e 67 20 3c 4f 53 5f  |mplementing <OS_|
0002cbe0  46 53 43 6f 6e 74 72 6f  6c 20 35 30 3d 3e 4f 53  |FSControl 50=>OS|
0002cbf0  5f 46 53 43 6f 6e 74 72  6f 6c 35 30 3e 2e 0a 00  |_FSControl50>...|
0002cc00  44 41 54 41 62 01 00 00  49 6d 61 67 65 45 6e 74  |DATAb...ImageEnt|
0002cc10  72 79 5f 46 75 6e 63 20  33 32 0a 23 50 61 72 65  |ry_Func 32.#Pare|
0002cc20  6e 74 20 49 6d 61 67 65  45 6e 74 72 79 5f 46 75  |nt ImageEntry_Fu|
0002cc30  6e 63 0a 3d 3e 09 52 30  20 3d 09 33 32 20 28 53  |nc.=>.R0 =.32 (S|
0002cc40  74 61 6d 70 20 69 6d 61  67 65 29 0a 09 52 31 20  |tamp image)..R1 |
0002cc50  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 6e 61 6d  |=.pointer to nam|
0002cc60  65 20 6f 66 20 61 6e 79  20 6f 62 6a 65 63 74 20  |e of any object |
0002cc70  6f 6e 20 69 6d 61 67 65  0a 09 52 32 20 3d 09 30  |on image..R2 =.0|
0002cc80  20 28 73 74 61 6d 70 20  77 68 65 6e 20 75 70 64  | (stamp when upd|
0002cc90  61 74 65 64 29 0a 09 20  09 31 20 28 73 74 61 6d  |ated).. .1 (stam|
0002cca0  70 20 6e 6f 77 29 0a 09  52 36 20 3d 09 3c 69 6d  |p now)..R6 =.<im|
0002ccb0  61 67 65 20 66 69 6c 69  6e 67 20 73 79 73 74 65  |age filing syste|
0002ccc0  6d 27 73 20 68 61 6e 64  6c 65 3d 3e 49 6d 61 67  |m's handle=>Imag|
0002ccd0  65 45 6e 74 72 79 5f 46  75 6e 63 32 31 3e 0a 0a  |eEntry_Func21>..|
0002cce0  54 68 69 73 20 63 61 6c  6c 20 72 65 71 75 65 73  |This call reques|
0002ccf0  74 73 20 74 68 61 74 20  74 68 65 20 3c 63 79 63  |ts that the <cyc|
0002cd00  6c 65 20 49 44 3d 3e 46  69 6c 65 43 6f 72 65 5f  |le ID=>FileCore_|
0002cd10  63 79 63 6c 65 69 64 3e  20 6f 66 20 74 68 65 20  |cycleid> of the |
0002cd20  69 6d 61 67 65 20 62 65  20 75 70 64 61 74 65 64  |image be updated|
0002cd30  2c 20 69 6d 70 6c 65 6d  65 6e 74 69 6e 67 20 3c  |, implementing <|
0002cd40  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 35 31 3d  |OS_FSControl 51=|
0002cd50  3e 4f 53 5f 46 53 43 6f  6e 74 72 6f 6c 35 31 3e  |>OS_FSControl51>|
0002cd60  2e 0a 00 00 44 41 54 41  de 01 00 00 49 6d 61 67  |....DATA....Imag|
0002cd70  65 45 6e 74 72 79 5f 47  65 74 42 79 74 65 73 0a  |eEntry_GetBytes.|
0002cd80  23 50 61 72 65 6e 74 20  49 6d 61 67 65 45 6e 74  |#Parent ImageEnt|
0002cd90  72 79 5f 0a 3d 3e 09 52  31 20 3d 09 69 6e 74 65  |ry_.=>.R1 =.inte|
0002cda0  72 6e 61 6c 20 66 69 6c  65 20 68 61 6e 64 6c 65  |rnal file handle|
0002cdb0  20 72 65 74 75 72 6e 65  64 20 62 79 20 3c 49 6d  | returned by <Im|
0002cdc0  61 67 65 45 6e 74 72 79  5f 4f 70 65 6e 3e 0a 09  |ageEntry_Open>..|
0002cdd0  52 32 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R2 =.pointer to |
0002cde0  62 75 66 66 65 72 20 74  6f 20 72 65 61 64 20 69  |buffer to read i|
0002cdf0  6e 74 6f 0a 09 52 33 20  3d 09 6c 65 6e 67 74 68  |nto..R3 =.length|
0002ce00  20 74 6f 20 72 65 61 64  0a 09 52 34 20 3d 09 6f  | to read..R4 =.o|
0002ce10  66 66 73 65 74 20 66 72  6f 6d 20 77 68 69 63 68  |ffset from which|
0002ce20  20 74 6f 20 72 65 61 64  0a 3c 3d 09 61 6c 6c 20  | to read.<=.all |
0002ce30  70 72 65 73 65 72 76 65  64 0a 0a 54 68 69 73 20  |preserved..This |
0002ce40  65 6e 74 72 79 20 70 6f  69 6e 74 20 69 73 20 63  |entry point is c|
0002ce50  61 6c 6c 65 64 20 77 68  65 6e 20 64 61 74 61 20  |alled when data |
0002ce60  69 73 20 6e 65 65 64 65  64 20 74 6f 20 62 65 20  |is needed to be |
0002ce70  72 65 61 64 20 66 72 6f  6d 20 61 20 66 69 6c 65  |read from a file|
0002ce80  20 66 6f 72 20 77 68 69  63 68 20 46 69 6c 65 53  | for which FileS|
0002ce90  77 69 74 63 68 20 68 61  73 20 6e 6f 20 62 75 66  |witch has no buf|
0002cea0  66 65 72 65 64 20 64 61  74 61 2e 20 54 68 69 73  |fered data. This|
0002ceb0  20 77 69 6c 6c 20 6e 6f  74 20 62 65 20 70 65 72  | will not be per|
0002cec0  66 6f 72 6d 65 64 20 6f  6e 20 74 68 65 20 69 6e  |formed on the in|
0002ced0  69 74 69 61 6c 20 6f 70  65 6e 2c 20 62 75 74 20  |itial open, but |
0002cee0  6f 6e 6c 79 20 6f 6e 20  73 75 62 73 65 71 75 65  |only on subseque|
0002cef0  6e 74 20 61 63 63 65 73  73 20 74 6f 20 74 68 65  |nt access to the|
0002cf00  20 66 69 6c 65 2e 0a 0a  4d 65 6d 6f 72 79 20 61  | file...Memory a|
0002cf10  64 64 72 65 73 73 65 73  20 61 72 65 20 2a 6e 6f  |ddresses are *no|
0002cf20  74 2a 20 67 75 61 72 61  6e 74 65 65 64 20 74 6f  |t* guaranteed to|
0002cf30  20 62 65 20 77 6f 72 64  20 61 6c 69 67 6e 65 64  | be word aligned|
0002cf40  2e 0a 00 00 44 41 54 41  4f 01 00 00 49 6d 61 67  |....DATAO...Imag|
0002cf50  65 45 6e 74 72 79 5f 50  75 74 42 79 74 65 73 0a  |eEntry_PutBytes.|
0002cf60  23 50 61 72 65 6e 74 20  49 6d 61 67 65 45 6e 74  |#Parent ImageEnt|
0002cf70  72 79 5f 0a 3d 3e 09 52  31 20 3d 09 69 6e 74 65  |ry_.=>.R1 =.inte|
0002cf80  72 6e 61 6c 20 66 69 6c  65 20 68 61 6e 64 6c 65  |rnal file handle|
0002cf90  20 72 65 74 75 72 6e 65  64 20 62 79 20 3c 49 6d  | returned by <Im|
0002cfa0  61 67 65 45 6e 74 72 79  5f 4f 70 65 6e 3e 0a 09  |ageEntry_Open>..|
0002cfb0  52 32 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R2 =.pointer to |
0002cfc0  62 75 66 66 65 72 20 74  6f 20 77 72 69 74 65 20  |buffer to write |
0002cfd0  66 72 6f 6d 0a 09 52 33  20 3d 09 6c 65 6e 67 74  |from..R3 =.lengt|
0002cfe0  68 20 74 6f 20 77 72 69  74 65 0a 09 52 34 20 3d  |h to write..R4 =|
0002cff0  09 6f 66 66 73 65 74 20  61 74 20 77 68 69 63 68  |.offset at which|
0002d000  20 74 6f 20 77 72 69 74  65 0a 3c 3d 09 61 6c 6c  | to write.<=.all|
0002d010  20 70 72 65 73 65 72 76  65 64 0a 0a 54 68 69 73  | preserved..This|
0002d020  20 65 6e 74 72 79 20 70  6f 69 6e 74 20 69 73 20  | entry point is |
0002d030  63 61 6c 6c 65 64 20 77  68 65 6e 20 64 61 74 61  |called when data|
0002d040  20 69 73 20 77 72 69 74  74 65 6e 20 74 6f 20 61  | is written to a|
0002d050  6e 20 69 6d 61 67 65 2e  20 4d 65 6d 6f 72 79 20  |n image. Memory |
0002d060  61 64 64 72 65 73 73 65  73 20 61 72 65 20 2a 6e  |addresses are *n|
0002d070  6f 74 2a 20 67 75 61 72  61 6e 74 65 65 64 20 74  |ot* guaranteed t|
0002d080  6f 20 62 65 20 77 6f 72  64 20 61 6c 69 67 6e 65  |o be word aligne|
0002d090  64 2e 0a 00 44 49 52 24  b8 00 00 00 b8 00 00 00  |d...DIR$........|
0002d0a0  4c d1 02 00 48 fd ff ff  0c af d7 07 58 00 00 00  |L...H.......X...|
0002d0b0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0002d0c0  a4 d1 02 00 48 ff ff ff  59 fb 3e 11 ae 00 00 00  |....H...Y.>.....|
0002d0d0  13 00 00 00 00 00 00 00  44 65 73 63 72 69 62 65  |........Describe|
0002d0e0  44 69 73 63 00 00 00 00  54 d2 02 00 48 ff ff ff  |Disc....T...H...|
0002d0f0  82 f6 3e 11 a1 00 00 00  13 00 00 00 00 00 00 00  |..>.............|
0002d100  44 69 73 63 4f 70 00 00  f8 d2 02 00 48 ff ff ff  |DiscOp......H...|
0002d110  be 73 d2 08 a1 00 00 00  13 00 00 00 00 00 00 00  |.s..............|
0002d120  44 72 69 76 65 73 00 00  9c d3 02 00 48 ff ff ff  |Drives......H...|
0002d130  1d 75 d2 08 a7 00 00 00  13 00 00 00 00 00 00 00  |.u..............|
0002d140  46 72 65 65 53 70 61 63  65 00 00 00 44 41 54 41  |FreeSpace...DATA|
0002d150  58 00 00 00 52 61 6d 46  53 0a 23 50 72 65 66 69  |X...RamFS.#Prefi|
0002d160  78 20 52 61 6d 46 53 5f  0a 23 50 61 72 65 6e 74  |x RamFS_.#Parent|
0002d170  20 21 52 6f 6f 74 0a 3c  44 65 73 63 72 69 62 65  | !Root.<Describe|
0002d180  44 69 73 63 3e 0a 3c 44  69 73 63 4f 70 3e 0a 3c  |Disc>.<DiscOp>.<|
0002d190  44 72 69 76 65 73 3e 0a  3c 46 72 65 65 53 70 61  |Drives>.<FreeSpa|
0002d1a0  63 65 3e 0a 44 41 54 41  ae 00 00 00 52 61 6d 46  |ce>.DATA....RamF|
0002d1b0  53 5f 44 65 73 63 72 69  62 65 44 69 73 63 20 20  |S_DescribeDisc  |
0002d1c0  28 26 34 30 37 38 35 29  0a 23 50 61 72 65 6e 74  |(&40785).#Parent|
0002d1d0  20 52 61 6d 46 53 5f 0a  54 68 69 73 20 53 57 49  | RamFS_.This SWI|
0002d1e0  20 63 61 6c 6c 73 20 3c  46 69 6c 65 43 6f 72 65  | calls <FileCore|
0002d1f0  5f 44 65 73 63 72 69 62  65 44 69 73 63 3e 2c 20  |_DescribeDisc>, |
0002d200  61 66 74 65 72 20 66 69  72 73 74 20 73 65 74 74  |after first sett|
0002d210  69 6e 67 20 52 38 20 74  6f 20 70 6f 69 6e 74 20  |ing R8 to point |
0002d220  74 6f 20 74 68 65 20 46  69 6c 65 43 6f 72 65 20  |to the FileCore |
0002d230  69 6e 73 74 61 6e 63 65  20 70 72 69 76 61 74 65  |instance private|
0002d240  20 77 6f 72 64 20 66 6f  72 20 52 61 6d 46 53 2e  | word for RamFS.|
0002d250  20 0a 00 00 44 41 54 41  a1 00 00 00 52 61 6d 46  | ...DATA....RamF|
0002d260  53 5f 44 69 73 63 4f 70  20 20 28 26 34 30 37 38  |S_DiscOp  (&4078|
0002d270  30 29 0a 23 50 61 72 65  6e 74 20 52 61 6d 46 53  |0).#Parent RamFS|
0002d280  5f 0a 54 68 69 73 20 53  57 49 20 63 61 6c 6c 73  |_.This SWI calls|
0002d290  20 3c 46 69 6c 65 43 6f  72 65 5f 44 69 73 63 4f  | <FileCore_DiscO|
0002d2a0  70 3e 2c 20 61 66 74 65  72 20 66 69 72 73 74 20  |p>, after first |
0002d2b0  73 65 74 74 69 6e 67 20  52 38 20 74 6f 20 70 6f  |setting R8 to po|
0002d2c0  69 6e 74 20 74 6f 20 74  68 65 20 46 69 6c 65 43  |int to the FileC|
0002d2d0  6f 72 65 20 69 6e 73 74  61 6e 63 65 20 70 72 69  |ore instance pri|
0002d2e0  76 61 74 65 20 77 6f 72  64 20 66 6f 72 20 52 61  |vate word for Ra|
0002d2f0  6d 46 53 2e 0a 00 00 00  44 41 54 41 a1 00 00 00  |mFS.....DATA....|
0002d300  52 61 6d 46 53 5f 44 72  69 76 65 73 20 20 28 26  |RamFS_Drives  (&|
0002d310  34 30 37 38 32 29 0a 23  50 61 72 65 6e 74 20 52  |40782).#Parent R|
0002d320  61 6d 46 53 5f 0a 54 68  69 73 20 53 57 49 20 63  |amFS_.This SWI c|
0002d330  61 6c 6c 73 20 3c 46 69  6c 65 43 6f 72 65 5f 44  |alls <FileCore_D|
0002d340  72 69 76 65 73 3e 2c 20  61 66 74 65 72 20 66 69  |rives>, after fi|
0002d350  72 73 74 20 73 65 74 74  69 6e 67 20 52 38 20 74  |rst setting R8 t|
0002d360  6f 20 70 6f 69 6e 74 20  74 6f 20 74 68 65 20 46  |o point to the F|
0002d370  69 6c 65 43 6f 72 65 20  69 6e 73 74 61 6e 63 65  |ileCore instance|
0002d380  20 70 72 69 76 61 74 65  20 77 6f 72 64 20 66 6f  | private word fo|
0002d390  72 20 52 61 6d 46 53 2e  0a 00 00 00 44 41 54 41  |r RamFS.....DATA|
0002d3a0  a7 00 00 00 52 61 6d 46  53 5f 46 72 65 65 53 70  |....RamFS_FreeSp|
0002d3b0  61 63 65 20 20 28 26 34  30 37 38 33 29 0a 23 50  |ace  (&40783).#P|
0002d3c0  61 72 65 6e 74 20 52 61  6d 46 53 5f 0a 54 68 69  |arent RamFS_.Thi|
0002d3d0  73 20 53 57 49 20 63 61  6c 6c 73 20 3c 46 69 6c  |s SWI calls <Fil|
0002d3e0  65 43 6f 72 65 5f 46 72  65 65 53 70 61 63 65 3e  |eCore_FreeSpace>|
0002d3f0  2c 20 61 66 74 65 72 20  66 69 72 73 74 20 73 65  |, after first se|
0002d400  74 74 69 6e 67 20 52 38  20 74 6f 20 70 6f 69 6e  |tting R8 to poin|
0002d410  74 20 74 6f 20 74 68 65  20 46 69 6c 65 43 6f 72  |t to the FileCor|
0002d420  65 20 69 6e 73 74 61 6e  63 65 20 70 72 69 76 61  |e instance priva|
0002d430  74 65 20 77 6f 72 64 20  66 6f 72 20 52 61 6d 46  |te word for RamF|
0002d440  53 2e 0a 00 44 49 52 24  70 0a 00 00 70 0a 00 00  |S...DIR$p...p...|
0002d450  b4 de 02 00 48 fd ff ff  75 80 7a 2b 61 0c 00 00  |....H...u.z+a...|
0002d460  13 00 00 00 00 00 00 00  38 44 00 00 18 eb 02 00  |........8D......|
0002d470  48 fd ff ff 92 74 79 2b  a7 03 00 00 13 00 00 00  |H....ty+........|
0002d480  00 00 00 00 35 33 00 00  c0 ee 02 00 48 fd ff ff  |....53......H...|
0002d490  57 78 79 2b ee 02 00 00  13 00 00 00 00 00 00 00  |Wxy+............|
0002d4a0  42 37 00 00 b0 f1 02 00  48 fd ff ff a1 1e 79 2b  |B7......H.....y+|
0002d4b0  da 00 00 00 13 00 00 00  00 00 00 00 42 39 00 00  |............B9..|
0002d4c0  8c f2 02 00 48 fd ff ff  74 c1 79 2b 21 01 00 00  |....H...t.y+!...|
0002d4d0  13 00 00 00 00 00 00 00  37 43 00 00 b0 f3 02 00  |........7C......|
0002d4e0  48 fd ff ff b4 9e 75 18  67 06 00 00 33 00 00 00  |H.....u.g...3...|
0002d4f0  00 00 00 00 38 30 33 38  30 00 00 00 18 fa 02 00  |....80380.......|
0002d500  48 fd ff ff 23 46 79 2b  90 02 00 00 03 00 00 00  |H...#Fy+........|
0002d510  00 00 00 00 32 38 00 00  a8 fc 02 00 48 fd ff ff  |....28......H...|
0002d520  4b 49 79 2b 85 01 00 00  03 00 00 00 00 00 00 00  |KIy+............|
0002d530  32 39 00 00 30 fe 02 00  48 fd ff ff be 4c 79 2b  |29..0...H....Ly+|
0002d540  2a 03 00 00 03 00 00 00  00 00 00 00 32 61 00 00  |*...........2a..|
0002d550  5c 01 03 00 48 fd ff ff  7c 5e 79 2b a9 01 00 00  |\...H...|^y+....|
0002d560  03 00 00 00 00 00 00 00  34 32 00 00 08 03 03 00  |........42......|
0002d570  48 fd ff ff bb 0a 7a 2b  56 0f 00 00 03 00 00 00  |H.....z+V.......|
0002d580  00 00 00 00 69 6e 64 65  78 00 00 00 60 12 03 00  |....index...`...|
0002d590  48 fd ff ff 00 bb 79 2b  31 01 00 00 03 00 00 00  |H.....y+1.......|
0002d5a0  00 00 00 00 37 33 00 00  94 13 03 00 48 fd ff ff  |....73......H...|
0002d5b0  7b db 79 2b 58 02 00 00  03 00 00 00 00 00 00 00  |{.y+X...........|
0002d5c0  38 63 00 00 ec 15 03 00  48 fd ff ff 69 4f 7a 2b  |8c......H...iOz+|
0002d5d0  de 00 00 00 03 00 00 00  00 00 00 00 38 32 00 00  |............82..|
0002d5e0  cc 16 03 00 48 fd ff ff  f5 35 7a 2b 86 00 00 00  |....H....5z+....|
0002d5f0  03 00 00 00 00 00 00 00  34 38 00 00 54 17 03 00  |........48..T...|
0002d600  48 fd ff ff ab 79 79 2b  8b 00 00 00 03 00 00 00  |H....yy+........|
0002d610  00 00 00 00 35 36 00 00  e0 17 03 00 48 fd ff ff  |....56......H...|
0002d620  9a 94 79 2b 81 02 00 00  03 00 00 00 00 00 00 00  |..y+............|
0002d630  35 45 00 00 64 1a 03 00  48 fd ff ff 41 d8 79 2b  |5E..d...H...A.y+|
0002d640  92 00 00 00 03 00 00 00  00 00 00 00 38 33 00 00  |............83..|
0002d650  f8 1a 03 00 48 fd ff ff  82 da 79 2b 96 00 00 00  |....H.....y+....|
0002d660  03 00 00 00 00 00 00 00  38 34 00 00 90 1b 03 00  |........84......|
0002d670  48 fd ff ff 87 df 79 2b  f5 02 00 00 03 00 00 00  |H.....y+........|
0002d680  00 00 00 00 38 41 00 00  88 1e 03 00 48 fd ff ff  |....8A......H...|
0002d690  90 1f 7a 2b 98 00 00 00  03 00 00 00 00 00 00 00  |..z+............|
0002d6a0  38 42 00 00 20 1f 03 00  48 fd ff ff 04 8e 79 2b  |8B.. ...H.....y+|
0002d6b0  b8 00 00 00 03 00 00 00  00 00 00 00 35 42 00 00  |............5B..|
0002d6c0  d8 1f 03 00 48 fd ff ff  20 79 79 2b da 00 00 00  |....H... yy+....|
0002d6d0  03 00 00 00 00 00 00 00  35 35 00 00 b4 20 03 00  |........55... ..|
0002d6e0  48 fd ff ff 86 8b 79 2b  15 01 00 00 03 00 00 00  |H.....y+........|
0002d6f0  00 00 00 00 35 39 00 00  cc 21 03 00 48 fd ff ff  |....59...!..H...|
0002d700  e8 86 79 2b d0 00 00 00  03 00 00 00 00 00 00 00  |..y+............|
0002d710  35 61 00 00 9c 22 03 00  48 fd ff ff 20 95 79 2b  |5a..."..H... .y+|
0002d720  89 00 00 00 03 00 00 00  00 00 00 00 35 46 00 00  |............5F..|
0002d730  28 23 03 00 48 fd ff ff  72 97 79 2b d0 03 00 00  |(#..H...r.y+....|
0002d740  03 00 00 00 00 00 00 00  36 30 00 00 f8 26 03 00  |........60...&..|
0002d750  48 fd ff ff 0c 28 79 2b  0f 02 00 00 13 00 00 00  |H....(y+........|
0002d760  00 00 00 00 30 34 00 00  08 29 03 00 48 fd ff ff  |....04...)..H...|
0002d770  88 29 79 2b fb 00 00 00  13 00 00 00 00 00 00 00  |.)y+............|
0002d780  30 36 00 00 04 2a 03 00  48 fd ff ff 92 2f 79 2b  |06...*..H..../y+|
0002d790  a6 01 00 00 13 00 00 00  00 00 00 00 30 37 00 00  |............07..|
0002d7a0  ac 2b 03 00 48 fd ff ff  a3 33 79 2b 1d 01 00 00  |.+..H....3y+....|
0002d7b0  03 00 00 00 00 00 00 00  30 39 00 00 cc 2c 03 00  |........09...,..|
0002d7c0  48 fd ff ff a7 30 79 2b  3d 01 00 00 03 00 00 00  |H....0y+=.......|
0002d7d0  00 00 00 00 30 38 00 00  0c 2e 03 00 48 fd ff ff  |....08......H...|
0002d7e0  db 34 79 2b 39 01 00 00  13 00 00 00 00 00 00 00  |.4y+9...........|
0002d7f0  30 42 00 00 48 2f 03 00  48 fd ff ff de 35 79 2b  |0B..H/..H....5y+|
0002d800  6d 01 00 00 13 00 00 00  00 00 00 00 30 43 00 00  |m...........0C..|
0002d810  b8 30 03 00 48 fd ff ff  b4 43 79 2b e3 00 00 00  |.0..H....Cy+....|
0002d820  13 00 00 00 00 00 00 00  31 32 00 00 9c 31 03 00  |........12...1..|
0002d830  48 fd ff ff f8 44 79 2b  36 02 00 00 03 00 00 00  |H....Dy+6.......|
0002d840  00 00 00 00 32 37 00 00  d4 33 03 00 48 fd ff ff  |....27...3..H...|
0002d850  45 5c 79 2b 02 01 00 00  13 00 00 00 00 00 00 00  |E\y+............|
0002d860  34 30 00 00 d8 34 03 00  48 fd ff ff 39 83 6d 19  |40...4..H...9.m.|
0002d870  59 00 00 00 03 00 00 00  00 00 00 00 34 31 00 00  |Y...........41..|
0002d880  34 35 03 00 48 fd ff ff  27 5f 79 2b 2b 01 00 00  |45..H...'_y++...|
0002d890  13 00 00 00 00 00 00 00  34 34 00 00 60 36 03 00  |........44..`6..|
0002d8a0  48 fd ff ff 00 63 79 2b  f5 00 00 00 03 00 00 00  |H....cy+........|
0002d8b0  00 00 00 00 34 36 00 00  58 37 03 00 48 fd ff ff  |....46..X7..H...|
0002d8c0  38 64 79 2b c4 01 00 00  13 00 00 00 00 00 00 00  |8dy+............|
0002d8d0  34 37 00 00 1c 39 03 00  48 fd ff ff ba 69 79 2b  |47...9..H....iy+|
0002d8e0  0e 05 00 00 13 00 00 00  00 00 00 00 34 39 00 00  |............49..|
0002d8f0  2c 3e 03 00 48 fd ff ff  9c 6a 79 2b 40 01 00 00  |,>..H....jy+@...|
0002d900  13 00 00 00 00 00 00 00  34 41 00 00 6c 3f 03 00  |........4A..l?..|
0002d910  48 fd ff ff 7e 6b 79 2b  4f 05 00 00 13 00 00 00  |H...~ky+O.......|
0002d920  00 00 00 00 34 42 00 00  bc 44 03 00 48 fd ff ff  |....4B...D..H...|
0002d930  3f 6c 79 2b 46 01 00 00  13 00 00 00 00 00 00 00  |?ly+F...........|
0002d940  34 43 00 00 04 46 03 00  48 fd ff ff d8 6c 79 2b  |4C...F..H....ly+|
0002d950  e3 02 00 00 03 00 00 00  00 00 00 00 34 44 00 00  |............4D..|
0002d960  e8 48 03 00 48 fd ff ff  08 6e 79 2b 0a 01 00 00  |.H..H....ny+....|
0002d970  03 00 00 00 00 00 00 00  34 46 00 00 f4 49 03 00  |........4F...I..|
0002d980  48 fd ff ff 7c 6e 79 2b  51 06 00 00 13 00 00 00  |H...|ny+Q.......|
0002d990  00 00 00 00 35 30 00 00  48 50 03 00 48 fd ff ff  |....50..HP..H...|
0002d9a0  15 6f 79 2b dd 01 00 00  13 00 00 00 00 00 00 00  |.oy+............|
0002d9b0  35 31 00 00 28 52 03 00  48 fd ff ff b2 6f 79 2b  |51..(R..H....oy+|
0002d9c0  a8 02 00 00 03 00 00 00  00 00 00 00 35 32 00 00  |............52..|
0002d9d0  d0 54 03 00 48 fd ff ff  7b 76 79 2b 44 01 00 00  |.T..H...{vy+D...|
0002d9e0  03 00 00 00 00 00 00 00  35 34 00 00 14 56 03 00  |........54...V..|
0002d9f0  48 fd ff ff 7c 7a 79 2b  06 01 00 00 13 00 00 00  |H...|zy+........|
0002da00  00 00 00 00 35 37 00 00  1c 57 03 00 48 fd ff ff  |....57...W..H...|
0002da10  c8 8f 79 2b 1e 02 00 00  13 00 00 00 00 00 00 00  |..y+............|
0002da20  35 43 00 00 3c 59 03 00  48 fd ff ff ee 93 79 2b  |5C..<Y..H.....y+|
0002da30  a5 00 00 00 13 00 00 00  00 00 00 00 35 44 00 00  |............5D..|
0002da40  e4 59 03 00 48 fd ff ff  73 99 79 2b f4 00 00 00  |.Y..H...s.y+....|
0002da50  03 00 00 00 00 00 00 00  36 34 00 00 d8 5a 03 00  |........64...Z..|
0002da60  48 fd ff ff 85 9a 79 2b  dd 00 00 00 03 00 00 00  |H.....y+........|
0002da70  00 00 00 00 36 35 00 00  b8 5b 03 00 48 fd ff ff  |....65...[..H...|
0002da80  90 a4 79 2b 23 02 00 00  03 00 00 00 00 00 00 00  |..y+#...........|
0002da90  36 38 00 00 dc 5d 03 00  48 fd ff ff 54 aa 79 2b  |68...]..H...T.y+|
0002daa0  fe 05 00 00 03 00 00 00  00 00 00 00 36 41 00 00  |............6A..|
0002dab0  dc 63 03 00 48 fd ff ff  50 b4 79 2b d5 00 00 00  |.c..H...P.y+....|
0002dac0  03 00 00 00 00 00 00 00  36 45 00 00 b4 64 03 00  |........6E...d..|
0002dad0  48 fd ff ff e5 b4 79 2b  90 00 00 00 03 00 00 00  |H.....y+........|
0002dae0  00 00 00 00 36 46 00 00  44 65 03 00 48 fd ff ff  |....6F..De..H...|
0002daf0  b2 bb 79 2b f2 00 00 00  03 00 00 00 00 00 00 00  |..y+............|
0002db00  37 35 00 00 38 66 03 00  48 fd ff ff 18 bd 79 2b  |75..8f..H.....y+|
0002db10  cc 05 00 00 13 00 00 00  00 00 00 00 37 36 00 00  |............76..|
0002db20  04 6c 03 00 48 fd ff ff  eb bd 79 2b 77 04 00 00  |.l..H.....y+w...|
0002db30  03 00 00 00 00 00 00 00  37 38 00 00 7c 70 03 00  |........78..|p..|
0002db40  48 fd ff ff ce bf 79 2b  91 00 00 00 03 00 00 00  |H.....y+........|
0002db50  00 00 00 00 37 41 00 00  10 71 03 00 48 fd ff ff  |....7A...q..H...|
0002db60  8c c0 79 2b 15 01 00 00  03 00 00 00 00 00 00 00  |..y+............|
0002db70  37 42 00 00 28 72 03 00  48 fd ff ff e7 c2 79 2b  |7B..(r..H.....y+|
0002db80  36 01 00 00 03 00 00 00  00 00 00 00 37 44 00 00  |6...........7D..|
0002db90  60 73 03 00 48 fd ff ff  b7 c3 79 2b 4b 01 00 00  |`s..H.....y+K...|
0002dba0  13 00 00 00 00 00 00 00  37 45 00 00 ac 74 03 00  |........7E...t..|
0002dbb0  48 fd ff ff dc c4 79 2b  32 01 00 00 03 00 00 00  |H.....y+2.......|
0002dbc0  00 00 00 00 37 46 00 00  e0 75 03 00 48 fd ff ff  |....7F...u..H...|
0002dbd0  27 c7 79 2b 90 00 00 00  13 00 00 00 00 00 00 00  |'.y+............|
0002dbe0  38 30 00 00 70 76 03 00  48 fd ff ff 1b dc 79 2b  |80..pv..H.....y+|
0002dbf0  c8 00 00 00 13 00 00 00  00 00 00 00 38 35 00 00  |............85..|
0002dc00  38 77 03 00 48 fd ff ff  bd dc 79 2b 38 01 00 00  |8w..H.....y+8...|
0002dc10  13 00 00 00 00 00 00 00  38 36 00 00 70 78 03 00  |........86..px..|
0002dc20  48 fd ff ff 4b dd 79 2b  da 00 00 00 03 00 00 00  |H...K.y+........|
0002dc30  00 00 00 00 38 37 00 00  4c 79 03 00 48 fd ff ff  |....87..Ly..H...|
0002dc40  c9 dd 79 2b cb 00 00 00  03 00 00 00 00 00 00 00  |..y+............|
0002dc50  38 38 00 00 18 7a 03 00  48 fd ff ff 87 de 79 2b  |88...z..H.....y+|
0002dc60  b1 01 00 00 03 00 00 00  00 00 00 00 38 39 00 00  |............89..|
0002dc70  cc 7b 03 00 48 fd ff ff  fb ff 80 2b f0 00 00 00  |.{..H......+....|
0002dc80  13 01 00 00 00 00 00 00  34 33 00 00 ec 8c 03 00  |........43......|
0002dc90  48 fd ff ff 7a 41 79 2b  ba 03 00 00 03 00 00 00  |H...zAy+........|
0002dca0  00 00 00 00 31 31 00 00  a8 90 03 00 48 fd ff ff  |....11......H...|
0002dcb0  c2 5f 79 2b 27 01 00 00  03 00 00 00 00 00 00 00  |._y+'...........|
0002dcc0  34 35 00 00 d0 91 03 00  48 fd ff ff f2 39 79 2b  |45......H....9y+|
0002dcd0  f4 02 00 00 03 00 00 00  00 00 00 00 31 30 38 30  |............1080|
0002dce0  30 00 00 00 c4 94 03 00  48 fd ff ff f9 3a 79 2b  |0.......H....:y+|
0002dcf0  f1 02 00 00 03 00 00 00  00 00 00 00 31 30 38 30  |............1080|
0002dd00  31 00 00 00 b8 97 03 00  48 fd ff ff 1a 3f 79 2b  |1.......H....?y+|
0002dd10  b5 00 00 00 03 00 00 00  00 00 00 00 31 30 38 30  |............1080|
0002dd20  32 00 00 00 70 98 03 00  48 fd ff ff 0c d2 79 2b  |2...p...H.....y+|
0002dd30  15 03 00 00 03 00 00 00  00 00 00 00 38 31 00 00  |............81..|
0002dd40  88 9b 03 00 48 fd ff ff  1b 3d 7a 2b c0 00 00 00  |....H....=z+....|
0002dd50  03 00 00 00 00 00 00 00  34 45 00 00 48 9c 03 00  |........4E..H...|
0002dd60  48 fd ff ff 2f 9b 79 2b  e1 00 00 00 03 00 00 00  |H.../.y+........|
0002dd70  00 00 00 00 36 36 00 00  2c 9d 03 00 48 fd ff ff  |....66..,...H...|
0002dd80  b2 9b 79 2b 99 00 00 00  03 00 00 00 00 00 00 00  |..y+............|
0002dd90  36 37 00 00 c8 9d 03 00  48 fd ff ff 5b a9 79 2b  |67......H...[.y+|
0002dda0  ca 08 00 00 03 00 00 00  00 00 00 00 36 39 00 00  |............69..|
0002ddb0  94 a6 03 00 48 fd ff ff  8c ad 79 2b 27 03 00 00  |....H.....y+'...|
0002ddc0  03 00 00 00 00 00 00 00  36 42 00 00 bc a9 03 00  |........6B......|
0002ddd0  48 fd ff ff 85 b0 79 2b  09 02 00 00 03 00 00 00  |H.....y+........|
0002dde0  00 00 00 00 36 43 00 00  c8 ab 03 00 48 fd ff ff  |....6C......H...|
0002ddf0  ad b3 79 2b 4b 01 00 00  03 00 00 00 00 00 00 00  |..y+K...........|
0002de00  36 44 00 00 14 ad 03 00  48 fd ff ff 14 b6 79 2b  |6D......H.....y+|
0002de10  5b 01 00 00 03 00 00 00  00 00 00 00 37 30 00 00  |[...........70..|
0002de20  70 ae 03 00 48 fd ff ff  66 b7 79 2b f3 00 00 00  |p...H...f.y+....|
0002de30  03 00 00 00 00 00 00 00  37 31 00 00 64 af 03 00  |........71..d...|
0002de40  48 fd ff ff 16 ba 79 2b  29 01 00 00 03 00 00 00  |H.....y+).......|
0002de50  00 00 00 00 37 32 00 00  90 b0 03 00 48 fd ff ff  |....72......H...|
0002de60  1a bf 79 2b e5 01 00 00  03 00 00 00 00 00 00 00  |..y+............|
0002de70  37 39 00 00 78 b2 03 00  48 fd ff ff fb 60 79 2b  |79..x...H....`y+|
0002de80  ae 02 00 00 33 00 00 00  00 00 00 00 34 35 35 34  |....3.......4554|
0002de90  30 00 00 00 28 b5 03 00  48 fd ff ff a8 61 79 2b  |0...(...H....ay+|
0002dea0  5e 03 00 00 33 00 00 00  00 00 00 00 34 35 35 34  |^...3.......4554|
0002deb0  31 00 00 00 44 41 54 41  61 0c 00 00 53 65 72 76  |1...DATAa...Serv|
0002dec0  69 63 65 5f 45 6e 75 6d  65 72 61 74 65 53 63 72  |ice_EnumerateScr|
0002ded0  65 65 6e 4d 6f 64 65 73  20 28 26 38 44 29 0a 23  |eenModes (&8D).#|
0002dee0  70 61 72 65 6e 74 20 53  65 72 76 69 63 65 5f 69  |parent Service_i|
0002def0  6e 64 65 78 0a 3d 3e 09  52 31 20 3d 09 26 38 44  |ndex.=>.R1 =.&8D|
0002df00  20 28 73 65 72 76 69 63  65 20 6e 75 6d 62 65 72  | (service number|
0002df10  29 0a 09 52 32 20 3d 09  6e 75 6d 62 65 72 20 6f  |)..R2 =.number o|
0002df20  66 20 6d 6f 64 65 73 20  74 6f 20 73 6b 69 70 0a  |f modes to skip.|
0002df30  09 52 33 20 3d 09 6d 6f  6e 69 74 6f 72 20 74 79  |.R3 =.monitor ty|
0002df40  70 65 0a 09 52 34 20 3d  09 6d 65 6d 6f 72 79 20  |pe..R4 =.memory |
0002df50  62 61 6e 64 77 69 64 74  68 20 61 76 61 69 6c 61  |bandwidth availa|
0002df60  62 6c 65 20 28 69 6e 20  62 79 74 65 73 2f 73 65  |ble (in bytes/se|
0002df70  63 29 0a 09 52 35 20 3d  09 74 6f 74 61 6c 20 61  |c)..R5 =.total a|
0002df80  6d 6f 75 6e 74 20 6f 66  20 76 69 64 65 6f 20 52  |mount of video R|
0002df90  41 4d 20 69 6e 20 73 79  73 74 65 6d 20 28 69 6e  |AM in system (in|
0002dfa0  20 62 79 74 65 73 29 0a  09 52 36 20 3d 09 70 6f  | bytes)..R6 =.po|
0002dfb0  69 6e 74 65 72 20 74 6f  20 3c 62 6c 6f 63 6b 20  |inter to <block |
0002dfc0  74 6f 20 72 65 74 75 72  6e 20 64 61 74 61 3d 3e  |to return data=>|
0002dfd0  2e 62 6c 6f 63 6b 3e 2c  20 6f 72 20 30 20 74 6f  |.block>, or 0 to|
0002dfe0  20 6a 75 73 74 20 63 6f  75 6e 74 20 65 6e 74 72  | just count entr|
0002dff0  69 65 73 0a 09 52 37 20  3d 09 73 69 7a 65 20 6f  |ies..R7 =.size o|
0002e000  66 20 62 6c 6f 63 6b 20  28 69 6e 20 62 79 74 65  |f block (in byte|
0002e010  73 29 20 69 66 20 52 36  5c 3c 3e 30 2c 20 6f 72  |s) if R6\<>0, or|
0002e020  20 30 20 69 66 20 52 36  3d 30 0a 0a 3c 3d 09 52  | 0 if R6=0..<=.R|
0002e030  31 20 3d 09 30 20 69 66  20 63 6c 61 69 6d 65 64  |1 =.0 if claimed|
0002e040  20 28 66 75 72 74 68 65  72 20 76 61 6c 69 64 20  | (further valid |
0002e050  6d 6f 64 65 73 20 61 72  65 20 61 76 61 69 6c 61  |modes are availa|
0002e060  62 6c 65 2c 20 62 75 74  20 77 6f 75 6c 64 20 6e  |ble, but would n|
0002e070  6f 74 20 66 69 74 20 69  6e 20 74 68 65 20 62 6c  |ot fit in the bl|
0002e080  6f 63 6b 29 3b 20 65 6c  73 65 20 70 72 65 73 65  |ock); else prese|
0002e090  72 76 65 64 0a 09 52 32  20 3d 09 2d 28 6e 75 6d  |rved..R2 =.-(num|
0002e0a0  62 65 72 20 6f 66 20 6d  6f 64 65 73 20 66 69 6c  |ber of modes fil|
0002e0b0  6c 65 64 20 69 6e 29 0a  09 52 33 20 2d 20 52 35  |led in)..R3 - R5|
0002e0c0  20 70 72 65 73 65 72 76  65 64 0a 09 52 36 20 3d  | preserved..R6 =|
0002e0d0  09 70 6f 69 6e 74 65 72  20 74 6f 20 62 79 74 65  |.pointer to byte|
0002e0e0  20 61 66 74 65 72 20 6c  61 73 74 20 6f 6e 65 20  | after last one |
0002e0f0  66 69 6c 6c 65 64 20 69  6e 2c 20 6f 72 20 70 72  |filled in, or pr|
0002e100  65 73 65 72 76 65 64 20  69 66 20 30 20 6f 6e 20  |eserved if 0 on |
0002e110  65 6e 74 72 79 0a 09 52  37 20 3d 09 61 6d 6f 75  |entry..R7 =.amou|
0002e120  6e 74 20 6f 66 20 75 6e  75 73 65 64 20 73 70 61  |nt of unused spa|
0002e130  63 65 20 69 6e 20 62 6c  6f 63 6b 2c 20 6f 72 20  |ce in block, or |
0002e140  2d 28 61 6d 6f 75 6e 74  20 6f 66 20 73 70 61 63  |-(amount of spac|
0002e150  65 20 6e 65 65 64 20 69  6e 20 62 6c 6f 63 6b 29  |e need in block)|
0002e160  20 69 66 20 63 6f 75 6e  74 69 6e 67 0a 0a 54 68  | if counting..Th|
0002e170  69 73 20 73 65 72 76 69  63 65 20 65 6e 75 6d 65  |is service enume|
0002e180  72 61 74 65 73 20 74 68  65 20 61 76 61 69 6c 61  |rates the availa|
0002e190  62 6c 65 20 73 63 72 65  65 6e 20 6d 6f 64 65 73  |ble screen modes|
0002e1a0  2e 20 4d 6f 64 75 6c 65  73 20 72 65 74 75 72 6e  |. Modules return|
0002e1b0  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 20 6f 6e 20  | information on |
0002e1c0  61 6c 6c 20 6d 6f 64 65  73 20 74 68 65 79 20 70  |all modes they p|
0002e1d0  72 6f 76 69 64 65 20 74  68 61 74 20 77 6f 72 6b  |rovide that work|
0002e1e0  20 6f 6e 20 74 68 65 20  73 70 65 63 69 66 69 65  | on the specifie|
0002e1f0  64 20 6d 6f 6e 69 74 6f  72 20 74 79 70 65 20 61  |d monitor type a|
0002e200  6e 64 20 77 68 69 63 68  20 72 65 71 75 69 72 65  |nd which require|
0002e210  20 6e 6f 20 6d 6f 72 65  20 74 68 61 6e 20 74 68  | no more than th|
0002e220  65 20 73 70 65 63 69 66  69 65 64 20 6d 65 6d 6f  |e specified memo|
0002e230  72 79 20 62 61 6e 64 77  69 64 74 68 20 61 6e 64  |ry bandwidth and|
0002e240  20 76 69 64 65 6f 20 6d  65 6d 6f 72 79 2e 0a 0a  | video memory...|
0002e250  3c 4f 53 5f 53 63 72 65  65 6e 4d 6f 64 65 20 32  |<OS_ScreenMode 2|
0002e260  3d 3e 6f 73 5f 73 63 72  65 65 6e 6d 6f 64 65 32  |=>os_screenmode2|
0002e270  3e 20 70 72 6f 76 69 64  65 73 20 61 20 66 72 6f  |> provides a fro|
0002e280  6e 74 2d 65 6e 64 20 66  6f 72 20 61 70 70 6c 69  |nt-end for appli|
0002e290  63 61 74 69 6f 6e 73 3b  20 79 6f 75 20 73 68 6f  |cations; you sho|
0002e2a0  75 6c 64 20 75 73 65 20  69 74 20 72 61 74 68 65  |uld use it rathe|
0002e2b0  72 20 74 68 61 6e 20 69  73 73 75 69 6e 67 20 74  |r than issuing t|
0002e2c0  68 69 73 20 73 65 72 76  69 63 65 20 63 61 6c 6c  |his service call|
0002e2d0  20 79 6f 75 72 73 65 6c  66 2e 0a 0a 42 79 20 73  | yourself...By s|
0002e2e0  65 74 74 69 6e 67 20 52  36 20 61 6e 64 20 52 37  |etting R6 and R7|
0002e2f0  20 74 6f 20 7a 65 72 6f  2c 20 63 6c 69 65 6e 74  | to zero, client|
0002e300  73 20 63 61 6e 20 66 69  6e 64 20 74 68 65 20 61  |s can find the a|
0002e310  6d 6f 75 6e 74 20 6f 66  20 73 70 61 63 65 20 72  |mount of space r|
0002e320  65 71 75 69 72 65 64 20  74 6f 20 68 6f 6c 64 20  |equired to hold |
0002e330  61 6c 6c 20 74 68 65 20  72 65 74 75 72 6e 65 64  |all the returned|
0002e340  20 6d 6f 64 65 73 3b 20  74 68 65 79 20 63 61 6e  | modes; they can|
0002e350  20 74 68 65 6e 20 69 73  73 75 65 20 74 68 65 20  | then issue the |
0002e360  63 61 6c 6c 20 61 67 61  69 6e 20 74 6f 20 61 63  |call again to ac|
0002e370  74 75 61 6c 6c 79 20 72  65 61 64 20 74 68 65 20  |tually read the |
0002e380  69 6e 66 6f 72 6d 61 74  69 6f 6e 2e 20 41 6c 74  |information. Alt|
0002e390  65 72 6e 61 74 69 76 65  6c 79 2c 20 63 6c 69 65  |ernatively, clie|
0002e3a0  6e 74 73 20 63 61 6e 20  75 73 65 20 61 20 66 69  |nts can use a fi|
0002e3b0  78 65 64 20 73 69 7a 65  20 62 75 66 66 65 72 2c  |xed size buffer,|
0002e3c0  20 61 6e 64 20 72 65 70  65 61 74 65 64 6c 79 20  | and repeatedly |
0002e3d0  69 73 73 75 65 20 74 68  65 20 63 61 6c 6c 20 75  |issue the call u|
0002e3e0  6e 74 69 6c 20 69 74 20  69 73 20 6e 6f 20 6c 6f  |ntil it is no lo|
0002e3f0  6e 67 65 72 20 63 6c 61  69 6d 65 64 2e 0a 57 68  |nger claimed..Wh|
0002e400  65 6e 20 75 73 69 6e 67  20 74 68 69 73 20 6d 65  |en using this me|
0002e410  74 68 6f 64 2c 20 52 32  20 6f 6e 20 65 6e 74 72  |thod, R2 on entr|
0002e420  79 20 2d 20 74 68 65 20  6e 75 6d 62 65 72 20 6f  |y - the number o|
0002e430  66 20 6d 6f 64 65 73 20  74 6f 20 73 6b 69 70 20  |f modes to skip |
0002e440  74 68 69 73 20 69 74 65  72 61 74 69 6f 6e 20 2d  |this iteration -|
0002e450  20 73 68 6f 75 6c 64 20  62 65 20 73 65 74 20 74  | should be set t|
0002e460  6f 3a 20 28 70 72 65 76  69 6f 75 73 20 52 32 20  |o: (previous R2 |
0002e470  6f 6e 20 65 6e 74 72 79  29 20 2d 20 28 52 32 20  |on entry) - (R2 |
0002e480  6f 6e 20 65 78 69 74 29  0a 0a 43 6c 69 63 6b 20  |on exit)..Click |
0002e490  3c 68 65 72 65 3d 3e 2e  63 6f 64 69 6e 67 3e 20  |<here=>.coding> |
0002e4a0  66 6f 72 20 64 65 74 61  69 6c 73 20 61 62 6f 75  |for details abou|
0002e4b0  74 20 77 72 69 74 69 6e  67 20 65 78 74 65 6e 73  |t writing extens|
0002e4c0  69 6f 6e 20 6d 6f 64 75  6c 65 73 2e 0a 23 0a 23  |ion modules..#.#|
0002e4d0  73 75 62 70 61 67 65 20  62 6c 6f 63 6b 0a 45 6e  |subpage block.En|
0002e4e0  75 6d 65 72 61 74 65 20  73 63 72 65 65 6e 20 6d  |umerate screen m|
0002e4f0  6f 64 65 73 20 62 6c 6f  63 6b 0a 4f 66 66 73 65  |odes block.Offse|
0002e500  74 09 56 61 6c 75 65 0a  23 4c 69 6e 65 0a 30 09  |t.Value.#Line.0.|
0002e510  73 69 7a 65 20 6f 66 20  65 6e 74 72 79 20 69 6e  |size of entry in|
0002e520  20 62 79 74 65 73 20 28  32 34 20 66 6f 72 20 74  | bytes (24 for t|
0002e530  68 69 73 20 66 6f 72 6d  61 74 29 0a 34 09 3c 6d  |his format).4.<m|
0002e540  6f 64 65 20 70 72 6f 76  69 64 65 72 20 66 6c 61  |ode provider fla|
0002e550  67 73 3d 3e 2e 70 72 6f  76 69 64 65 72 66 6c 61  |gs=>.providerfla|
0002e560  67 73 3e 0a 38 09 78 2d  72 65 73 6f 6c 75 74 69  |gs>.8.x-resoluti|
0002e570  6f 6e 20 28 69 6e 20 70  69 78 65 6c 73 29 0a 31  |on (in pixels).1|
0002e580  32 09 79 2d 72 65 73 6f  6c 75 74 69 6f 6e 20 28  |2.y-resolution (|
0002e590  69 6e 20 70 69 78 65 6c  73 29 0a 31 36 09 70 69  |in pixels).16.pi|
0002e5a0  78 65 6c 20 64 65 70 74  68 20 28 61 73 20 69 6e  |xel depth (as in|
0002e5b0  20 6d 6f 64 65 20 73 65  6c 65 63 74 6f 72 29 0a  | mode selector).|
0002e5c0  32 30 09 66 72 61 6d 65  20 72 61 74 65 20 28 69  |20.frame rate (i|
0002e5d0  6e 20 48 7a 2c 20 74 6f  20 6e 65 61 72 65 73 74  |n Hz, to nearest|
0002e5e0  20 69 6e 74 65 67 65 72  29 0a 32 34 09 6d 6f 64  | integer).24.mod|
0002e5f0  65 20 6e 61 6d 65 2c 20  6e 75 6c 6c 20 74 65 72  |e name, null ter|
0002e600  6d 69 6e 61 74 65 64 2c  20 61 6e 64 20 74 68 65  |minated, and the|
0002e610  6e 20 70 61 64 64 65 64  20 77 69 74 68 20 6e 75  |n padded with nu|
0002e620  6c 6c 73 20 75 6e 74 69  6c 20 69 74 20 69 73 20  |lls until it is |
0002e630  77 6f 72 64 20 61 6c 69  67 6e 65 64 2e 20 28 46  |word aligned. (F|
0002e640  6f 72 20 75 6e 6e 61 6d  65 64 20 6d 6f 64 65 73  |or unnamed modes|
0002e650  20 74 68 69 73 20 77 69  6c 6c 20 73 69 6d 70 6c  | this will simpl|
0002e660  79 20 62 65 20 61 20 73  69 6e 67 6c 65 20 77 6f  |y be a single wo|
0002e670  72 64 20 77 68 6f 73 65  20 76 61 6c 75 65 20 69  |rd whose value i|
0002e680  73 20 30 29 2e 0a 23 0a  23 53 75 62 70 61 67 65  |s 0)..#.#Subpage|
0002e690  20 70 72 6f 76 69 64 65  72 66 6c 61 67 73 0a 4d  | providerflags.M|
0002e6a0  6f 64 65 20 70 72 6f 76  69 64 65 72 20 66 6c 61  |ode provider fla|
0002e6b0  67 73 0a 42 69 74 09 43  6f 6e 74 65 6e 74 73 0a  |gs.Bit.Contents.|
0002e6c0  30 09 31 0a 31 2d 37 09  6d 6f 64 65 20 69 6e 66  |0.1.1-7.mode inf|
0002e6d0  6f 20 66 6f 72 6d 61 74  20 73 70 65 63 69 66 69  |o format specifi|
0002e6e0  65 72 20 28 7a 65 72 6f  20 66 6f 72 20 74 68 69  |er (zero for thi|
0002e6f0  73 20 66 6f 72 6d 61 74  29 0a 38 2d 33 31 09 61  |s format).8-31.a|
0002e700  64 64 69 74 69 6f 6e 61  6c 20 6d 6f 64 65 20 69  |dditional mode i|
0002e710  6e 66 6f 20 66 6c 61 67  73 20 28 6d 75 73 74 20  |nfo flags (must |
0002e720  62 65 20 7a 65 72 6f 29  0a 0a 46 75 74 75 72 65  |be zero)..Future|
0002e730  20 6d 6f 64 75 6c 65 73  20 6d 61 79 20 75 73 65  | modules may use|
0002e740  20 64 69 66 66 65 72 65  6e 74 20 6d 6f 64 65 20  | different mode |
0002e750  69 6e 66 6f 20 66 6f 72  6d 61 74 73 2c 20 74 68  |info formats, th|
0002e760  65 72 65 66 6f 72 65 20  63 61 6c 6c 65 72 73 20  |erefore callers |
0002e770  73 68 6f 75 6c 64 20 63  68 65 63 6b 20 62 69 74  |should check bit|
0002e780  73 20 30 2d 37 20 6f 66  20 74 68 65 20 6d 6f 64  |s 0-7 of the mod|
0002e790  65 20 70 72 6f 76 69 64  65 72 20 66 6c 61 67 73  |e provider flags|
0002e7a0  20 62 65 66 6f 72 65 20  65 78 74 72 61 63 74 69  | before extracti|
0002e7b0  6e 67 20 74 68 65 20 6f  74 68 65 72 20 69 6e 66  |ng the other inf|
0002e7c0  6f 72 6d 61 74 69 6f 6e  20 69 6e 20 74 68 69 73  |ormation in this|
0002e7d0  20 62 6c 6f 63 6b 2e 20  49 66 20 74 68 65 20 63  | block. If the c|
0002e7e0  61 6c 6c 65 72 20 64 6f  65 73 6e 27 74 20 72 65  |aller doesn't re|
0002e7f0  63 6f 67 6e 69 73 65 20  74 68 65 20 6d 6f 64 65  |cognise the mode|
0002e800  20 69 6e 66 6f 20 66 6f  72 6d 61 74 20 66 6f 72  | info format for|
0002e810  20 61 6e 20 65 6e 74 72  79 2c 20 74 68 65 6e 20  | an entry, then |
0002e820  69 74 20 63 61 6e 20 73  6b 69 70 20 74 68 65 20  |it can skip the |
0002e830  65 6e 74 72 79 20 62 79  20 75 73 69 6e 67 20 74  |entry by using t|
0002e840  68 65 20 73 69 7a 65 20  66 69 65 6c 64 20 61 74  |he size field at|
0002e850  20 6f 66 66 73 65 74 20  30 2e 20 46 6f 72 20 66  | offset 0. For f|
0002e860  6f 72 6d 61 74 20 63 68  65 63 6b 69 6e 67 20 70  |ormat checking p|
0002e870  75 72 70 6f 73 65 73 2c  20 62 69 74 73 20 38 2d  |urposes, bits 8-|
0002e880  33 31 20 73 68 6f 75 6c  64 20 62 65 20 69 67 6e  |31 should be ign|
0002e890  6f 72 65 64 2e 0a 23 0a  23 53 75 62 70 61 67 65  |ored..#.#Subpage|
0002e8a0  20 63 6f 64 69 6e 67 0a  50 72 6f 76 69 64 69 6e  | coding.Providin|
0002e8b0  67 20 65 78 74 65 6e 73  69 6f 6e 20 73 63 72 65  |g extension scre|
0002e8c0  65 6e 20 6d 6f 64 65 73  0a 4d 6f 64 65 2d 70 72  |en modes.Mode-pr|
0002e8d0  6f 76 69 64 69 6e 67 20  6d 6f 64 75 6c 65 73 20  |oviding modules |
0002e8e0  74 68 61 74 20 77 69 73  68 20 74 6f 20 72 65 73  |that wish to res|
0002e8f0  70 6f 6e 64 20 74 6f 20  74 68 69 73 20 73 65 72  |pond to this ser|
0002e900  76 69 63 65 20 63 61 6c  6c 20 73 68 6f 75 6c 64  |vice call should|
0002e910  20 75 73 65 20 74 68 69  73 20 61 6c 67 6f 72 69  | use this algori|
0002e920  74 68 6d 3a 0a 0a 23 66  43 6f 64 65 0a 46 6f 72  |thm:..#fCode.For|
0002e930  20 65 61 63 68 20 6d 6f  64 65 20 74 68 61 74 20  | each mode that |
0002e940  74 68 65 79 20 77 61 6e  74 20 74 6f 20 72 65 74  |they want to ret|
0002e950  75 72 6e 0a 23 49 6e 64  65 6e 74 20 32 0a 49 66  |urn.#Indent 2.If|
0002e960  20 52 32 20 3e 20 30 20  54 68 65 6e 0a 23 49 6e  | R2 > 0 Then.#In|
0002e970  64 65 6e 74 20 34 0a 64  6f 20 6e 6f 74 68 69 6e  |dent 4.do nothin|
0002e980  67 2c 20 69 2e 65 2e 20  73 6b 69 70 20 69 74 0a  |g, i.e. skip it.|
0002e990  23 49 6e 64 65 6e 74 20  32 0a 45 6c 73 65 0a 23  |#Indent 2.Else.#|
0002e9a0  49 6e 64 65 6e 74 20 34  0a 49 66 20 52 36 5c 3c  |Indent 4.If R6\<|
0002e9b0  3e 30 20 54 68 65 6e 0a  23 49 6e 64 65 6e 74 20  |>0 Then.#Indent |
0002e9c0  36 0a 28 65 6e 75 6d 65  72 61 74 69 6f 6e 20 63  |6.(enumeration c|
0002e9d0  61 73 65 20 2d 20 66 69  6c 6c 69 6e 67 20 69 6e  |ase - filling in|
0002e9e0  20 62 6c 6f 63 6b 29 0a  49 66 20 52 37 20 3e 3d  | block).If R7 >=|
0002e9f0  20 65 6e 74 72 79 73 69  7a 65 20 54 68 65 6e 0a  | entrysize Then.|
0002ea00  23 49 6e 64 65 6e 74 20  38 0a 73 74 6f 72 65 20  |#Indent 8.store |
0002ea10  65 6e 74 72 79 20 61 74  20 52 36 0a 52 36 20 2b  |entry at R6.R6 +|
0002ea20  3d 20 65 6e 74 72 79 73  69 7a 65 0a 23 49 6e 64  |= entrysize.#Ind|
0002ea30  65 6e 74 20 36 0a 45 6c  73 65 0a 23 49 6e 64 65  |ent 6.Else.#Inde|
0002ea40  6e 74 20 38 0a 28 6e 6f  74 20 65 6e 6f 75 67 68  |nt 8.(not enough|
0002ea50  20 73 70 61 63 65 20 66  6f 72 20 6e 65 78 74 20  | space for next |
0002ea60  6d 6f 64 65 29 0a 52 31  20 3d 20 30 20 28 53 65  |mode).R1 = 0 (Se|
0002ea70  72 76 69 63 65 5f 53 65  72 76 69 63 65 64 29 0a  |rvice_Serviced).|
0002ea80  52 65 74 75 72 6e 20 28  73 65 72 76 69 63 65 20  |Return (service |
0002ea90  63 61 6c 6c 20 63 6c 61  69 6d 65 64 29 0a 23 49  |call claimed).#I|
0002eaa0  6e 64 65 6e 74 20 36 0a  45 6e 64 49 66 0a 23 49  |ndent 6.EndIf.#I|
0002eab0  6e 64 65 6e 74 20 34 0a  45 6e 64 49 66 0a 52 37  |ndent 4.EndIf.R7|
0002eac0  20 2d 3d 20 65 6e 74 72  79 73 69 7a 65 0a 23 49  | -= entrysize.#I|
0002ead0  6e 64 65 6e 74 20 32 0a  45 6e 64 49 66 0a 52 32  |ndent 2.EndIf.R2|
0002eae0  20 2d 3d 20 31 0a 23 49  6e 64 65 6e 74 20 30 0a  | -= 1.#Indent 0.|
0002eaf0  4e 65 78 74 0a 52 65 74  75 72 6e 20 28 73 65 72  |Next.Return (ser|
0002eb00  76 69 63 65 20 63 61 6c  6c 20 70 61 73 73 65 64  |vice call passed|
0002eb10  20 6f 6e 29 0a 00 00 00  44 41 54 41 a7 03 00 00  | on)....DATA....|
0002eb20  53 65 72 76 69 63 65 5f  57 69 6d 70 43 6c 6f 73  |Service_WimpClos|
0002eb30  65 44 6f 77 6e 20 28 26  35 33 29 0a 23 50 61 72  |eDown (&53).#Par|
0002eb40  65 6e 74 20 53 65 72 76  69 63 65 5f 69 6e 64 65  |ent Service_inde|
0002eb50  78 0a 3d 3e 09 52 30 20  3d 09 30 20 69 66 20 63  |x.=>.R0 =.0 if c|
0002eb60  6c 6f 73 69 6e 67 20 64  6f 77 6e 2c 20 6f 72 20  |losing down, or |
0002eb70  5c 3e 20 30 20 69 66 20  73 74 61 72 74 69 6e 67  |\> 0 if starting|
0002eb80  20 6e 65 77 20 74 61 73  6b 0a 09 52 31 20 3d 09  | new task..R1 =.|
0002eb90  26 35 33 20 28 73 65 72  76 69 63 65 20 6e 75 6d  |&53 (service num|
0002eba0  62 65 72 29 0a 09 52 32  20 3d 09 74 61 73 6b 20  |ber)..R2 =.task |
0002ebb0  68 61 6e 64 6c 65 0a 0a  3c 3d 09 52 30 20 70 72  |handle..<=.R0 pr|
0002ebc0  65 73 65 72 76 65 64 2c  20 6f 72 20 73 65 74 20  |eserved, or set |
0002ebd0  74 6f 20 3c 65 72 72 6f  72 20 62 6c 6f 63 6b 3d  |to <error block=|
0002ebe0  3e 73 77 69 5f 65 72 72  6f 72 62 6c 6f 63 6b 3e  |>swi_errorblock>|
0002ebf0  20 74 6f 20 73 74 6f 70  20 73 74 61 72 74 20 75  | to stop start u|
0002ec00  70 0a 0a 54 68 69 73 20  73 65 72 76 69 63 65 20  |p..This service |
0002ec10  69 73 20 63 61 6c 6c 65  64 20 77 68 65 6e 20 61  |is called when a|
0002ec20  20 74 61 73 6b 20 65 78  69 74 73 20 75 73 69 6e  | task exits usin|
0002ec30  67 20 3c 57 69 6d 70 5f  43 6c 6f 73 65 44 6f 77  |g <Wimp_CloseDow|
0002ec40  6e 3d 3e 57 69 6d 70 3a  57 69 6d 70 5f 43 6c 6f  |n=>Wimp:Wimp_Clo|
0002ec50  73 65 44 6f 77 6e 3e 2c  20 6f 72 20 77 68 65 6e  |seDown>, or when|
0002ec60  20 3c 57 69 6d 70 5f 49  6e 69 74 69 61 6c 69 73  | <Wimp_Initialis|
0002ec70  65 3d 3e 57 69 6d 70 3a  57 69 6d 70 5f 49 6e 69  |e=>Wimp:Wimp_Ini|
0002ec80  74 69 61 6c 69 73 65 3e  20 69 73 20 63 61 6c 6c  |tialise> is call|
0002ec90  65 64 20 66 72 6f 6d 20  77 69 74 68 69 6e 20 61  |ed from within a|
0002eca0  6e 20 74 61 73 6b 20 74  68 61 74 20 69 73 20 61  |n task that is a|
0002ecb0  6c 72 65 61 64 79 20 69  6e 69 74 69 61 6c 69 73  |lready initialis|
0002ecc0  65 64 2e 20 49 66 20 61  20 74 61 73 6b 20 65 78  |ed. If a task ex|
0002ecd0  69 74 73 20 77 69 74 68  6f 75 74 20 63 61 6c 6c  |its without call|
0002ece0  69 6e 67 20 57 69 6d 70  5f 43 6c 6f 73 65 44 6f  |ing Wimp_CloseDo|
0002ecf0  77 6e 2c 20 6f 72 20 69  66 20 61 6e 20 65 72 72  |wn, or if an err|
0002ed00  6f 72 20 6f 63 63 75 72  73 20 61 6e 64 20 74 68  |or occurs and th|
0002ed10  65 20 74 61 73 6b 20 64  6f 65 73 20 6e 6f 74 20  |e task does not |
0002ed20  74 72 61 70 20 69 74 20  74 68 65 6e 20 74 68 65  |trap it then the|
0002ed30  20 57 69 6d 70 20 77 69  6c 6c 20 63 61 6c 6c 20  | Wimp will call |
0002ed40  74 68 69 73 20 73 65 72  76 69 63 65 20 73 6f 20  |this service so |
0002ed50  74 68 61 74 20 69 74 20  73 74 69 6c 6c 20 68 61  |that it still ha|
0002ed60  73 20 61 20 63 68 61 6e  63 65 20 74 6f 20 73 68  |s a chance to sh|
0002ed70  75 74 20 61 6e 79 20 6a  6f 62 73 20 69 74 20 6d  |ut any jobs it m|
0002ed80  61 79 20 68 61 76 65 20  61 63 74 69 76 65 20 63  |ay have active c|
0002ed90  75 72 72 65 6e 74 6c 79  2e 0a 0a 49 66 20 74 68  |urrently...If th|
0002eda0  65 20 27 73 74 61 72 74  69 6e 67 20 74 61 73 6b  |e 'starting task|
0002edb0  27 20 66 6f 72 6d 20 6f  66 20 74 68 69 73 20 73  |' form of this s|
0002edc0  65 72 76 69 63 65 20 69  73 20 63 61 6c 6c 65 64  |ervice is called|
0002edd0  20 74 68 65 6e 20 74 68  65 20 75 73 75 61 6c 20  | then the usual |
0002ede0  72 65 73 70 6f 6e 73 65  20 69 73 20 74 6f 20 72  |response is to r|
0002edf0  65 74 75 72 6e 20 61 6e  20 65 72 72 6f 72 20 73  |eturn an error s|
0002ee00  69 6d 69 6c 61 72 20 74  6f 20 27 57 69 6d 70 20  |imilar to 'Wimp |
0002ee10  69 73 20 63 75 72 72 65  6e 74 6c 79 20 61 63 74  |is currently act|
0002ee20  69 76 65 27 20 28 74 68  65 20 63 6f 6d 6d 61 6e  |ive' (the comman|
0002ee30  64 20 6c 69 6e 65 20 64  6f 65 73 20 74 68 69 73  |d line does this|
0002ee40  29 20 69 6e 20 52 30 20  77 68 65 6e 20 72 65 74  |) in R0 when ret|
0002ee50  75 72 6e 69 6e 67 2e 0a  0a 54 68 65 20 44 44 45  |urning...The DDE|
0002ee60  55 74 69 6c 73 20 6d 6f  64 75 6c 65 20 75 73 65  |Utils module use|
0002ee70  73 20 74 68 69 73 20 73  65 72 76 69 63 65 20 74  |s this service t|
0002ee80  6f 20 74 72 61 70 20 77  68 65 6e 20 61 20 74 61  |o trap when a ta|
0002ee90  73 6b 20 66 6f 72 20 77  68 69 63 68 20 61 20 70  |sk for which a p|
0002eea0  72 65 66 69 78 20 68 61  73 20 62 65 65 6e 20 73  |refix has been s|
0002eeb0  65 74 20 69 73 20 65 78  69 74 69 6e 67 2e 0a 00  |et is exiting...|
0002eec0  44 41 54 41 ee 02 00 00  53 65 72 76 69 63 65 5f  |DATA....Service_|
0002eed0  55 4b 43 6f 6d 70 72 65  73 73 69 6f 6e 20 28 26  |UKCompression (&|
0002eee0  42 37 29 0a 23 50 61 72  65 6e 74 20 73 65 72 76  |B7).#Parent serv|
0002eef0  69 63 65 5f 69 6e 64 65  78 0a 3d 3e 09 52 30 20  |ice_index.=>.R0 |
0002ef00  3d 09 3c 73 75 62 2d 72  65 61 73 6f 6e 3d 3e 2e  |=.<sub-reason=>.|
0002ef10  73 75 62 72 65 61 73 6f  6e 3e 0a 09 52 31 20 3d  |subreason>..R1 =|
0002ef20  09 26 42 37 20 28 73 65  72 76 69 63 65 20 6e 75  |.&B7 (service nu|
0002ef30  6d 62 65 72 29 0a 09 52  32 20 3d 09 3c 6c 6f 61  |mber)..R2 =.<loa|
0002ef40  64 20 61 64 64 72 65 73  73 3d 3e 66 73 79 73 5f  |d address=>fsys_|
0002ef50  6c 6f 61 64 65 78 65 63  3e 0a 09 52 33 20 3d 09  |loadexec>..R3 =.|
0002ef60  73 69 7a 65 0a 09 52 34  20 3d 09 3c 65 78 65 63  |size..R4 =.<exec|
0002ef70  75 74 65 20 61 64 64 72  65 73 73 3d 3e 66 73 79  |ute address=>fsy|
0002ef80  73 5f 6c 6f 61 64 65 78  65 63 3e 0a 09 52 35 20  |s_loadexec>..R5 |
0002ef90  3d 09 66 69 6c 65 6e 61  6d 65 20 28 6e 6f 74 20  |=.filename (not |
0002efa0  63 61 6e 6f 6e 69 63 61  6c 69 73 65 64 29 0a 0a  |canonicalised)..|
0002efb0  3c 3d 09 52 31 20 3d 09  30 20 69 66 20 63 6c 61  |<=.R1 =.0 if cla|
0002efc0  69 6d 65 64 20 28 61 6c  6c 20 63 68 61 6e 67 65  |imed (all change|
0002efd0  73 20 68 61 76 65 20 62  65 65 6e 20 70 65 72 66  |s have been perf|
0002efe0  6f 72 6d 65 64 29 3b 20  65 6c 73 65 20 70 72 65  |ormed); else pre|
0002eff0  73 65 72 76 65 64 0a 09  52 33 20 3d 09 6e 65 77  |served..R3 =.new|
0002f000  20 73 69 7a 65 0a 09 52  34 20 3d 09 6e 65 77 20  | size..R4 =.new |
0002f010  65 78 65 63 75 74 65 20  61 64 64 72 65 73 73 0a  |execute address.|
0002f020  0a 54 68 69 73 20 73 65  72 76 69 63 65 20 69 73  |.This service is|
0002f030  20 75 73 65 64 20 74 6f  20 70 72 6f 76 69 64 65  | used to provide|
0002f040  20 70 61 74 63 68 65 73  20 66 6f 72 20 52 49 53  | patches for RIS|
0002f050  43 20 4f 53 20 33 2e 37  20 77 68 65 72 65 20 72  |C OS 3.7 where r|
0002f060  65 71 75 69 72 65 64 2e  20 49 74 20 69 73 20 63  |equired. It is c|
0002f070  61 6c 6c 65 64 20 77 68  65 6e 20 61 6e 20 3c 41  |alled when an <A|
0002f080  62 73 6f 6c 75 74 65 3d  3e 46 69 6c 65 54 79 70  |bsolute=>FileTyp|
0002f090  65 73 3a 46 46 38 3e 20  66 69 6c 65 20 69 73 20  |es:FF8> file is |
0002f0a0  72 75 6e 2e 20 4f 6e 6c  79 20 69 66 20 74 68 65  |run. Only if the|
0002f0b0  20 66 69 6c 65 20 64 6f  65 73 20 6e 6f 74 20 63  | file does not c|
0002f0c0  6f 6e 74 61 69 6e 20 61  6e 20 41 49 46 20 68 65  |ontain an AIF he|
0002f0d0  61 64 65 72 20 77 69 6c  6c 20 73 75 62 2d 72 65  |ader will sub-re|
0002f0e0  61 73 6f 6e 20 30 20 62  65 20 63 61 6c 6c 65 64  |ason 0 be called|
0002f0f0  2e 20 41 66 74 65 72 20  70 61 74 63 68 69 6e 67  |. After patching|
0002f100  20 3c 4f 53 5f 53 79 6e  63 68 72 6f 6e 69 73 65  | <OS_Synchronise|
0002f110  43 6f 64 65 41 72 65 61  73 3e 20 77 69 6c 6c 20  |CodeAreas> will |
0002f120  62 65 20 63 61 6c 6c 65  64 2e 0a 23 0a 23 53 75  |be called..#.#Su|
0002f130  62 50 61 67 65 20 73 75  62 72 65 61 73 6f 6e 0a  |bPage subreason.|
0002f140  55 4b 43 6f 6d 70 72 65  73 73 69 6f 6e 20 73 75  |UKCompression su|
0002f150  62 2d 72 65 61 73 6f 6e  73 0a 52 65 61 73 6f 6e  |b-reasons.Reason|
0002f160  09 4d 65 61 6e 69 6e 67  0a 23 4c 69 6e 65 0a 30  |.Meaning.#Line.0|
0002f170  09 46 69 72 73 74 20 70  61 73 73 20 2d 20 75 6e  |.First pass - un|
0002f180  73 71 75 65 65 7a 65 0a  31 09 53 65 63 6f 6e 64  |squeeze.1.Second|
0002f190  20 70 61 73 73 20 2d 20  70 61 74 63 68 0a 6f 74  | pass - patch.ot|
0002f1a0  68 65 72 73 09 72 65 73  65 72 76 65 64 0a 00 00  |hers.reserved...|
0002f1b0  44 41 54 41 da 00 00 00  53 65 72 76 69 63 65 5f  |DATA....Service_|
0002f1c0  4d 6f 64 75 6c 65 50 72  65 49 6e 69 74 20 28 26  |ModulePreInit (&|
0002f1d0  42 39 29 0a 23 50 61 72  65 6e 74 20 53 65 72 76  |B9).#Parent Serv|
0002f1e0  69 63 65 5f 69 6e 64 65  78 0a 3d 3e 09 52 30 20  |ice_index.=>.R0 |
0002f1f0  3d 09 6d 6f 64 75 6c 65  20 61 64 64 72 65 73 73  |=.module address|
0002f200  0a 09 52 31 20 3d 09 26  42 39 20 28 73 65 72 76  |..R1 =.&B9 (serv|
0002f210  69 63 65 20 6e 75 6d 62  65 72 29 0a 09 52 32 20  |ice number)..R2 |
0002f220  3d 09 6d 6f 64 75 6c 65  20 6c 65 6e 67 74 68 0a  |=.module length.|
0002f230  3c 3d 09 52 31 20 70 72  65 73 65 72 76 65 64 0a  |<=.R1 preserved.|
0002f240  0a 54 68 69 73 20 73 65  72 76 69 63 65 20 69 73  |.This service is|
0002f250  20 63 61 6c 6c 65 64 20  6a 75 73 74 20 62 65 66  | called just bef|
0002f260  6f 72 65 20 62 65 69 6e  67 20 69 6e 69 74 69 61  |ore being initia|
0002f270  6c 69 73 65 64 20 61 66  74 65 72 20 62 65 69 6e  |lised after bein|
0002f280  67 20 6c 6f 61 64 65 64  2e 0a 00 00 44 41 54 41  |g loaded....DATA|
0002f290  21 01 00 00 53 65 72 76  69 63 65 5f 44 65 73 6b  |!...Service_Desk|
0002f2a0  74 6f 70 57 65 6c 63 6f  6d 65 20 28 26 37 43 29  |topWelcome (&7C)|
0002f2b0  0a 23 50 61 72 65 6e 74  20 53 65 72 76 69 63 65  |.#Parent Service|
0002f2c0  5f 69 6e 64 65 78 0a 3d  3e 09 52 31 20 3d 09 26  |_index.=>.R1 =.&|
0002f2d0  37 43 20 28 73 65 72 76  69 63 65 20 6e 75 6d 62  |7C (service numb|
0002f2e0  65 72 29 0a 3c 3d 09 52  31 20 3d 09 30 20 74 6f  |er).<=.R1 =.0 to|
0002f2f0  20 63 6c 61 69 6d 2c 20  70 72 65 73 65 72 76 65  | claim, preserve|
0002f300  64 20 6f 74 68 65 72 77  69 73 65 0a 0a 54 68 69  |d otherwise..Thi|
0002f310  73 20 73 65 72 76 69 63  65 20 69 73 20 69 73 73  |s service is iss|
0002f320  75 65 64 20 62 79 20 74  68 65 20 27 44 65 73 6b  |ued by the 'Desk|
0002f330  74 6f 70 27 20 6d 6f 64  75 6c 65 20 62 65 66 6f  |top' module befo|
0002f340  72 65 20 69 74 20 64 69  73 70 6c 61 79 73 20 74  |re it displays t|
0002f350  68 65 20 73 74 61 72 74  75 70 20 62 61 6e 6e 65  |he startup banne|
0002f360  72 2e 20 49 66 20 74 68  65 20 73 65 72 76 69 63  |r. If the servic|
0002f370  65 20 69 73 20 63 6c 61  69 6d 65 64 20 74 68 65  |e is claimed the|
0002f380  6e 20 74 68 65 20 73 74  61 6e 64 61 72 64 20 62  |n the standard b|
0002f390  61 6e 6e 65 72 20 77 69  6c 6c 20 6e 6f 74 20 62  |anner will not b|
0002f3a0  65 20 64 69 73 70 6c 61  79 65 64 2e 0a 00 00 00  |e displayed.....|
0002f3b0  44 41 54 41 67 06 00 00  53 6f 75 6e 64 46 69 6c  |DATAg...SoundFil|
0002f3c0  65 5f 49 64 65 6e 74 69  66 79 53 6f 75 6e 64 46  |e_IdentifySoundF|
0002f3d0  69 6c 65 20 20 28 26 38  30 33 38 30 29 0a 23 50  |ile  (&80380).#P|
0002f3e0  61 72 65 6e 74 20 53 65  72 76 69 63 65 5f 69 6e  |arent Service_in|
0002f3f0  64 65 78 0a 3d 3e 09 52  30 20 3d 09 3c 72 65 61  |dex.=>.R0 =.<rea|
0002f400  73 6f 6e 20 63 6f 64 65  3d 3e 2e 72 65 61 73 6f  |son code=>.reaso|
0002f410  6e 73 3e 0a 09 52 31 20  3d 09 26 38 30 33 38 30  |ns>..R1 =.&80380|
0002f420  20 28 73 65 72 76 69 63  65 20 6e 75 6d 62 65 72  | (service number|
0002f430  29 0a 09 52 32 20 3d 09  73 6f 75 6e 64 20 73 74  |)..R2 =.sound st|
0002f440  72 65 61 6d 20 68 61 6e  64 6c 65 0a 09 52 34 20  |ream handle..R4 |
0002f450  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 3c 66 6f  |=.pointer to <fo|
0002f460  72 6d 61 74 20 62 6c 6f  63 6b 3d 3e 2e 66 6f 72  |rmat block=>.for|
0002f470  6d 61 74 62 6c 6b 3e 0a  3c 3d 09 52 30 20 3d 09  |matblk>.<=.R0 =.|
0002f480  30 2c 20 6f 72 20 65 72  72 6f 72 20 69 66 20 66  |0, or error if f|
0002f490  61 69 6c 65 64 20 69 66  20 72 65 63 6f 67 6e 69  |ailed if recogni|
0002f4a0  73 65 64 3b 20 70 72 65  73 65 72 76 65 64 20 6f  |sed; preserved o|
0002f4b0  74 68 65 72 77 69 73 65  0a 09 52 31 20 3d 09 30  |therwise..R1 =.0|
0002f4c0  20 69 66 20 72 65 63 6f  67 6e 69 73 65 64 3b 20  | if recognised; |
0002f4d0  70 72 65 73 65 72 76 65  64 20 6f 74 68 65 72 77  |preserved otherw|
0002f4e0  69 73 65 0a 09 52 34 20  3d 09 75 70 64 61 74 65  |ise..R4 =.update|
0002f4f0  64 20 62 6c 6f 63 6b 2c  20 69 66 20 72 65 63 6f  |d block, if reco|
0002f500  67 6e 69 73 65 64 0a 0a  54 68 69 73 20 73 65 72  |gnised..This ser|
0002f510  76 69 63 65 20 69 73 20  75 73 65 64 20 74 6f 20  |vice is used to |
0002f520  69 64 65 6e 74 69 66 79  20 74 68 65 20 73 74 79  |identify the sty|
0002f530  6c 65 20 6f 66 20 73 6f  75 6e 64 20 66 69 6c 65  |le of sound file|
0002f540  20 70 61 73 73 65 64 20  74 6f 20 69 74 20 66 72  | passed to it fr|
0002f550  6f 6d 20 69 74 73 20 68  65 61 64 65 72 2e 20 54  |om its header. T|
0002f560  68 65 20 73 65 72 76 69  63 65 20 61 6c 73 6f 20  |he service also |
0002f570  61 6c 6c 6f 77 73 20 79  6f 75 20 74 6f 20 70 72  |allows you to pr|
0002f580  6f 76 69 64 65 20 73 70  65 63 69 61 6c 20 64 65  |ovide special de|
0002f590  63 6f 64 69 6e 67 20 72  6f 75 74 69 6e 65 73 20  |coding routines |
0002f5a0  66 6f 72 20 69 74 2e 0a  23 53 75 62 70 61 67 65  |for it..#Subpage|
0002f5b0  20 72 65 61 73 6f 6e 73  0a 49 64 65 6e 74 69 66  | reasons.Identif|
0002f5c0  79 53 6f 75 6e 64 46 69  6c 65 20 72 65 61 73 6f  |ySoundFile reaso|
0002f5d0  6e 73 0a 52 65 61 73 6f  6e 09 4d 65 61 6e 69 6e  |ns.Reason.Meanin|
0002f5e0  67 0a 23 4c 69 6e 65 0a  30 09 46 69 6c 65 20 68  |g.#Line.0.File h|
0002f5f0  61 73 20 6e 6f 74 20 62  65 65 6e 20 69 64 65 6e  |as not been iden|
0002f600  74 69 66 69 65 64 0a 31  09 46 69 6c 65 20 69 73  |tified.1.File is|
0002f610  20 61 20 4d 69 63 72 6f  73 6f 66 74 20 57 41 56  | a Microsoft WAV|
0002f620  20 66 69 6c 65 20 6f 66  20 61 6e 20 75 6e 72 65  | file of an unre|
0002f630  63 6f 67 6e 69 73 65 64  20 66 6f 72 6d 61 74 0a  |cognised format.|
0002f640  6f 74 68 65 72 73 09 72  65 73 65 72 76 65 64 0a  |others.reserved.|
0002f650  23 53 75 62 70 61 67 65  20 66 6f 72 6d 61 74 66  |#Subpage formatf|
0002f660  6c 61 67 73 0a 53 6f 75  6e 64 46 69 6c 65 5f 49  |lags.SoundFile_I|
0002f670  64 65 6e 74 69 66 79 53  6f 75 6e 64 46 69 6c 65  |dentifySoundFile|
0002f680  20 66 6f 72 6d 61 74 20  66 6c 61 67 73 0a 42 69  | format flags.Bi|
0002f690  74 09 4d 65 61 6e 69 6e  67 20 69 66 20 73 65 74  |t.Meaning if set|
0002f6a0  0a 30 09 44 61 74 61 20  69 73 20 73 69 67 6e 65  |.0.Data is signe|
0002f6b0  64 0a 31 09 44 61 74 61  20 69 73 20 69 6e 20 73  |d.1.Data is in s|
0002f6c0  74 65 72 65 6f 0a 32 09  3f 0a 23 53 75 62 70 61  |tereo.2.?.#Subpa|
0002f6d0  67 65 20 66 6f 72 6d 61  74 62 6c 6b 0a 53 6f 75  |ge formatblk.Sou|
0002f6e0  6e 64 46 69 6c 65 5f 49  64 65 6e 74 69 66 79 53  |ndFile_IdentifyS|
0002f6f0  6f 75 6e 64 46 69 6c 65  20 62 6c 6f 63 6b 20 69  |oundFile block i|
0002f700  6e 20 72 34 0a 4f 66 66  73 65 74 09 43 6f 6e 74  |n r4.Offset.Cont|
0002f710  65 6e 74 73 0a 23 4c 69  6e 65 0a 30 09 3c 66 6c  |ents.#Line.0.<fl|
0002f720  61 67 73 3d 3e 2e 66 6f  72 6d 61 74 66 6c 61 67  |ags=>.formatflag|
0002f730  73 3e 0a 34 09 3c 46 69  6c 65 74 79 70 65 3d 3e  |s>.4.<Filetype=>|
0002f740  46 69 6c 65 74 79 70 65  73 3a 21 52 6f 6f 74 3e  |Filetypes:!Root>|
0002f750  0a 23 20 26 46 42 31 20  20 20 20 20 20 3d 20 77  |.# &FB1      = w|
0002f760  61 76 20 66 69 6c 65 0a  23 20 26 32 30 34 33 34  |av file.# &20434|
0002f770  46 35 36 20 3d 20 56 4f  43 0a 23 20 26 32 30 32  |F56 = VOC.# &202|
0002f780  30 35 35 34 31 20 3d 20  41 55 0a 23 20 26 35 38  |05541 = AU.# &58|
0002f790  35 36 34 33 32 38 20 3d  20 38 53 56 58 0a 23 20  |564328 = 8SVX.# |
0002f7a0  26 36 46 36 39 37 33 35  30 20 3d 20 50 73 69 6f  |&6F697350 = Psio|
0002f7b0  6e 0a 23 20 54 68 65 73  65 20 73 65 65 6d 20 74  |n.# These seem t|
0002f7c0  6f 20 62 65 20 73 70 61  63 65 20 70 61 73 73 65  |o be space passe|
0002f7d0  64 20 41 53 43 49 49 20  76 65 72 73 69 6f 6e 73  |d ASCII versions|
0002f7e0  20 6f 66 20 74 68 65 20  66 69 6c 65 74 79 70 65  | of the filetype|
0002f7f0  0a 38 09 62 69 74 73 20  70 65 72 20 73 61 6d 70  |.8.bits per samp|
0002f800  6c 65 0a 39 09 6e 75 6d  62 65 72 20 6f 66 20 63  |le.9.number of c|
0002f810  68 61 6e 6e 65 6c 73 0a  31 30 09 73 61 6d 70 6c  |hannels.10.sampl|
0002f820  65 20 70 65 72 69 6f 64  20 69 6e 20 6d 69 63 72  |e period in micr|
0002f830  6f 73 65 63 6f 6e 64 73  0a 31 31 09 69 6e 74 65  |oseconds.11.inte|
0002f840  72 6c 65 61 76 65 20 66  6f 72 6d 61 74 0a 31 32  |rleave format.12|
0002f850  09 3c 53 6f 75 6e 64 20  64 61 74 61 20 66 6f 72  |.<Sound data for|
0002f860  6d 61 74 3d 3e 2e 73 6f  75 6e 64 66 6f 72 6d 61  |mat=>.soundforma|
0002f870  74 73 3e 0a 31 36 09 53  61 6d 70 6c 65 20 72 61  |ts>.16.Sample ra|
0002f880  74 65 2c 20 73 68 69 66  74 65 64 20 75 70 20 31  |te, shifted up 1|
0002f890  30 0a 32 30 09 4e 75 6d  62 65 72 20 6f 66 20 73  |0.20.Number of s|
0002f8a0  61 6d 70 6c 65 73 0a 32  34 09 53 6f 75 6e 64 20  |amples.24.Sound |
0002f8b0  64 61 74 61 20 6f 66 66  73 65 74 20 69 6e 20 66  |data offset in f|
0002f8c0  69 6c 65 0a 32 38 09 53  6f 75 6e 64 20 64 61 74  |ile.28.Sound dat|
0002f8d0  61 20 6c 65 6e 67 74 68  0a 33 32 09 3f 0a 33 36  |a length.32.?.36|
0002f8e0  09 3f 0a 34 30 09 3f 0a  34 34 09 70 6f 69 6e 74  |.?.40.?.44.point|
0002f8f0  65 72 20 74 6f 20 73 6f  6d 65 74 68 69 6e 67 3f  |er to something?|
0002f900  0a 31 32 38 09 6e 61 6d  65 20 66 6f 72 20 73 6f  |.128.name for so|
0002f910  75 6e 64 20 66 6f 72 6d  61 74 0a 31 35 32 09 6e  |und format.152.n|
0002f920  61 6d 65 20 66 6f 72 20  63 6f 6d 70 72 65 73 73  |ame for compress|
0002f930  69 6f 6e 20 73 74 79 6c  65 0a 31 37 32 09 63 6f  |ion style.172.co|
0002f940  6d 6d 65 6e 74 73 20 3f  0a 23 20 23 53 75 62 70  |mments ?.# #Subp|
0002f950  61 67 65 20 62 6c 6f 63  6b 72 32 0a 23 20 53 6f  |age blockr2.# So|
0002f960  75 6e 64 46 69 6c 65 5f  53 6f 6d 65 74 68 69 6e  |undFile_Somethin|
0002f970  67 20 62 6c 6f 63 6b 20  69 6e 20 72 32 0a 23 20  |g block in r2.# |
0002f980  4f 66 66 73 65 74 09 43  6f 6e 74 65 6e 74 73 0a  |Offset.Contents.|
0002f990  23 20 23 4c 69 6e 65 0a  23 20 30 09 66 6c 61 67  |# #Line.# 0.flag|
0002f9a0  73 0a 23 20 34 09 63 75  72 72 65 6e 74 20 70 6f  |s.# 4.current po|
0002f9b0  73 69 74 69 6f 6e 20 69  6e 20 66 69 6c 65 0a 23  |sition in file.#|
0002f9c0  20 38 09 70 6f 69 6e 74  65 72 20 74 6f 20 66 69  | 8.pointer to fi|
0002f9d0  6c 65 20 62 75 66 66 65  72 0a 23 20 31 32 09 62  |le buffer.# 12.b|
0002f9e0  75 66 66 65 72 20 6c 65  6e 67 74 68 0a 23 20 31  |uffer length.# 1|
0002f9f0  36 09 66 69 6c 65 20 68  61 6e 64 6c 65 0a 23 20  |6.file handle.# |
0002fa00  32 30 09 70 6f 69 6e 74  65 72 20 74 6f 20 66 69  |20.pointer to fi|
0002fa10  6c 65 6e 61 6d 65 0a 00  44 41 54 41 90 02 00 00  |lename..DATA....|
0002fa20  53 65 72 76 69 63 65 5f  55 4b 43 6f 6e 66 69 67  |Service_UKConfig|
0002fa30  20 28 26 32 38 29 0a 23  50 61 72 65 6e 74 20 53  | (&28).#Parent S|
0002fa40  65 72 76 69 63 65 5f 69  6e 64 65 78 0a 3d 3e 09  |ervice_index.=>.|
0002fa50  52 30 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R0 =.pointer to |
0002fa60  63 6f 6d 6d 61 6e 64 20  74 61 69 6c 2c 20 6f 72  |command tail, or|
0002fa70  20 30 20 66 6f 72 20 73  79 6e 74 61 78 20 6c 69  | 0 for syntax li|
0002fa80  6e 65 0a 09 52 31 20 3d  09 26 32 38 20 28 73 65  |ne..R1 =.&28 (se|
0002fa90  72 76 69 63 65 20 6e 75  6d 62 65 72 29 0a 3c 3d  |rvice number).<=|
0002faa0  09 52 30 20 3d 09 3c 65  72 72 6f 72 20 63 6f 64  |.R0 =.<error cod|
0002fab0  65 3d 3e 2e 65 72 72 6f  72 73 3e 0a 09 52 31 20  |e=>.errors>..R1 |
0002fac0  3d 09 30 20 74 6f 20 63  6c 61 69 6d 20 28 6f 70  |=.0 to claim (op|
0002fad0  74 69 6f 6e 20 72 65 63  6f 67 6e 69 73 65 64 29  |tion recognised)|
0002fae0  2c 20 70 72 65 73 65 72  76 65 64 20 6f 74 68 65  |, preserved othe|
0002faf0  72 77 69 73 65 0a 0a 54  68 69 73 20 73 65 72 76  |rwise..This serv|
0002fb00  69 63 65 20 69 73 20 69  73 73 75 65 64 20 77 68  |ice is issued wh|
0002fb10  65 6e 20 61 20 2a 43 6f  6e 66 69 67 75 72 65 20  |en a *Configure |
0002fb20  63 6f 6d 6d 61 6e 64 20  69 73 20 69 73 73 75 65  |command is issue|
0002fb30  64 20 77 69 74 68 20 61  6e 20 75 6e 6b 6e 6f 77  |d with an unknow|
0002fb40  6e 20 70 61 72 61 6d 65  74 65 72 2e 20 59 6f 75  |n parameter. You|
0002fb50  20 73 68 6f 75 6c 64 20  75 73 65 20 74 68 65 20  | should use the |
0002fb60  3c 6d 6f 64 75 6c 65 20  63 6f 6d 6d 61 6e 64 20  |<module command |
0002fb70  74 61 62 6c 65 3d 3e 4f  53 5f 4d 6f 64 75 6c 65  |table=>OS_Module|
0002fb80  5f 43 6f 6d 54 61 62 6c  65 3e 20 74 6f 20 74 72  |_ComTable> to tr|
0002fb90  61 70 20 73 70 65 63 69  66 69 63 20 63 6f 6e 66  |ap specific conf|
0002fba0  69 67 75 72 65 20 6f 70  74 69 6f 6e 73 20 69 6e  |igure options in|
0002fbb0  20 70 72 65 66 65 72 65  6e 63 65 20 74 6f 20 74  | preference to t|
0002fbc0  68 69 73 20 73 65 72 76  69 63 65 2e 0a 23 53 75  |his service..#Su|
0002fbd0  62 70 61 67 65 20 65 72  72 6f 72 73 0a 55 4b 43  |bpage errors.UKC|
0002fbe0  6f 6e 66 69 67 20 65 72  72 6f 72 20 63 6f 64 65  |onfig error code|
0002fbf0  73 0a 43 6f 64 65 09 4d  65 61 6e 69 6e 67 0a 23  |s.Code.Meaning.#|
0002fc00  4c 69 6e 65 0a 5c 3c 30  09 6e 6f 20 65 72 72 6f  |Line.\<0.no erro|
0002fc10  72 0a 30 09 42 61 64 20  7b 66 43 6f 64 65 7d 2a  |r.0.Bad {fCode}*|
0002fc20  43 6f 6e 66 69 67 75 72  65 7b 66 7d 20 6f 70 74  |Configure{f} opt|
0002fc30  69 6f 6e 0a 31 09 4e 75  6d 65 72 69 63 20 70 61  |ion.1.Numeric pa|
0002fc40  72 61 6d 65 74 65 72 20  6e 65 65 64 65 64 0a 32  |rameter needed.2|
0002fc50  09 50 61 72 61 6d 65 74  65 72 20 74 6f 6f 20 6c  |.Parameter too l|
0002fc60  61 72 67 65 0a 33 09 54  6f 6f 20 6d 61 6e 79 20  |arge.3.Too many |
0002fc70  70 61 72 61 6d 65 74 65  72 73 0a 5c 3e 33 09 70  |parameters.\>3.p|
0002fc80  6f 69 6e 74 65 72 20 74  6f 20 3c 65 72 72 6f 72  |ointer to <error|
0002fc90  20 62 6c 6f 63 6b 3d 3e  73 77 69 5f 65 72 72 6f  | block=>swi_erro|
0002fca0  72 62 6c 6f 63 6b 3e 0a  44 41 54 41 85 01 00 00  |rblock>.DATA....|
0002fcb0  53 65 72 76 69 63 65 5f  55 4b 53 74 61 74 75 73  |Service_UKStatus|
0002fcc0  20 28 26 32 39 29 0a 23  50 61 72 65 6e 74 20 53  | (&29).#Parent S|
0002fcd0  65 72 76 69 63 65 5f 69  6e 64 65 78 0a 3d 3e 09  |ervice_index.=>.|
0002fce0  52 30 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R0 =.pointer to |
0002fcf0  63 6f 6d 6d 61 6e 64 20  74 61 69 6c 2c 20 6f 72  |command tail, or|
0002fd00  20 30 20 69 66 20 6e 6f  6e 65 20 67 69 76 65 6e  | 0 if none given|
0002fd10  0a 09 52 31 20 3d 09 26  32 39 20 28 73 65 72 76  |..R1 =.&29 (serv|
0002fd20  69 63 65 20 6e 75 6d 62  65 72 29 0a 3c 3d 09 52  |ice number).<=.R|
0002fd30  30 20 70 72 65 73 65 72  76 65 64 0a 09 52 31 20  |0 preserved..R1 |
0002fd40  3d 09 30 20 74 6f 20 63  6c 61 69 6d 20 28 6f 70  |=.0 to claim (op|
0002fd50  74 69 6f 6e 20 72 65 63  6f 67 6e 69 73 65 64 29  |tion recognised)|
0002fd60  2c 20 70 72 65 73 65 72  76 65 64 20 6f 74 68 65  |, preserved othe|
0002fd70  72 77 69 73 65 0a 0a 54  68 69 73 20 73 65 72 76  |rwise..This serv|
0002fd80  69 63 65 20 69 73 20 69  73 73 75 65 64 20 77 68  |ice is issued wh|
0002fd90  65 6e 20 61 20 2a 53 74  61 74 75 73 20 63 6f 6d  |en a *Status com|
0002fda0  6d 61 6e 64 20 69 73 20  69 73 73 75 65 64 2e 20  |mand is issued. |
0002fdb0  59 6f 75 20 73 68 6f 75  6c 64 20 75 73 65 20 74  |You should use t|
0002fdc0  68 65 20 3c 6d 6f 64 75  6c 65 20 63 6f 6d 6d 61  |he <module comma|
0002fdd0  6e 64 20 74 61 62 6c 65  3d 3e 4f 53 5f 4d 6f 64  |nd table=>OS_Mod|
0002fde0  75 6c 65 5f 43 6f 6d 54  61 62 6c 65 3e 20 74 6f  |ule_ComTable> to|
0002fdf0  20 74 72 61 70 20 73 70  65 63 69 66 69 63 20 73  | trap specific s|
0002fe00  74 61 74 75 73 20 6f 70  74 69 6f 6e 73 20 69 6e  |tatus options in|
0002fe10  20 70 72 65 66 65 72 65  6e 63 65 20 74 6f 20 74  | preference to t|
0002fe20  68 69 73 20 73 65 72 76  69 63 65 2e 0a 00 00 00  |his service.....|
0002fe30  44 41 54 41 2a 03 00 00  53 65 72 76 69 63 65 5f  |DATA*...Service_|
0002fe40  4e 65 77 41 70 70 6c 69  63 61 74 69 6f 6e 20 28  |NewApplication (|
0002fe50  26 32 41 29 0a 23 50 61  72 65 6e 74 20 53 65 72  |&2A).#Parent Ser|
0002fe60  76 69 63 65 5f 69 6e 64  65 78 0a 3d 3e 09 52 31  |vice_index.=>.R1|
0002fe70  20 3d 09 26 32 41 20 28  73 65 72 76 69 63 65 20  | =.&2A (service |
0002fe80  6e 75 6d 62 65 72 29 0a  3c 3d 09 52 31 20 3d 09  |number).<=.R1 =.|
0002fe90  30 20 74 6f 20 63 6c 61  69 6d 20 28 70 72 65 76  |0 to claim (prev|
0002fea0  65 6e 74 73 20 61 70 70  6c 69 63 61 74 69 6f 6e  |ents application|
0002feb0  20 73 74 61 72 74 69 6e  67 29 2c 20 70 72 65 73  | starting), pres|
0002fec0  65 72 76 65 64 20 6f 74  68 65 72 77 69 73 65 0a  |erved otherwise.|
0002fed0  0a 54 68 69 73 20 73 65  72 76 69 63 65 20 69 73  |.This service is|
0002fee0  20 69 73 73 75 65 64 20  77 68 65 6e 20 61 20 6e  | issued when a n|
0002fef0  65 77 20 61 70 70 6c 69  63 61 74 69 6f 6e 20 69  |ew application i|
0002ff00  73 20 61 62 6f 75 74 20  74 6f 20 62 65 20 73 74  |s about to be st|
0002ff10  61 72 74 65 64 2e 20 55  73 75 61 6c 6c 79 20 74  |arted. Usually t|
0002ff20  68 69 73 20 6f 63 63 75  72 73 20 61 66 74 65 72  |his occurs after|
0002ff30  20 61 20 2a 47 6f 2c 20  2a 52 4d 52 75 6e 20 6f  | a *Go, *RMRun o|
0002ff40  72 20 2a 52 75 6e 20 6f  70 65 72 61 74 69 6f 6e  |r *Run operation|
0002ff50  2e 20 49 66 20 79 6f 75  20 70 72 6f 76 69 64 65  |. If you provide|
0002ff60  20 3c 61 6e 6f 74 68 65  72 20 6d 65 61 6e 73 20  | <another means |
0002ff70  6f 66 20 73 74 61 72 74  69 6e 67 20 61 6e 20 61  |of starting an a|
0002ff80  70 70 6c 69 63 61 74 69  6f 6e 3d 3e 2e 61 6e 6f  |pplication=>.ano|
0002ff90  74 68 65 72 3e 20 74 68  61 74 20 64 6f 65 73 20  |ther> that does |
0002ffa0  6e 6f 74 20 69 6e 63 6c  75 64 65 20 6f 6e 65 20  |not include one |
0002ffb0  6f 66 20 74 68 65 73 65  20 79 6f 75 20 73 68 6f  |of these you sho|
0002ffc0  75 6c 64 20 69 73 73 75  65 20 74 68 69 73 20 53  |uld issue this S|
0002ffd0  65 72 76 69 63 65 20 61  6e 64 20 61 63 74 20 61  |ervice and act a|
0002ffe0  63 63 6f 72 64 69 6e 67  6c 79 2e 0a 23 53 75 62  |ccordingly..#Sub|
0002fff0  70 61 67 65 20 61 6e 6f  74 68 65 72 0a 4e 65 77  |page another.New|
00030000  41 70 70 6c 69 63 61 74  69 6f 6e 3a 20 41 6e 6f  |Application: Ano|
00030010  74 68 65 72 20 6d 65 61  6e 73 20 6f 66 20 73 74  |ther means of st|
00030020  61 72 74 69 6e 67 20 61  6e 20 61 70 70 6c 69 63  |arting an applic|
00030030  61 74 69 6f 6e 0a 57 68  69 6c 73 74 20 74 68 69  |ation.Whilst thi|
00030040  73 20 69 73 20 70 72 65  74 74 79 20 75 6e 6c 69  |s is pretty unli|
00030050  6b 65 6c 79 2c 20 69 74  20 6d 61 79 20 69 6e 20  |kely, it may in |
00030060  66 75 74 75 72 65 20 62  65 20 70 6f 73 73 69 62  |future be possib|
00030070  6c 65 20 74 6f 20 74 72  61 73 6d 69 74 20 79 6f  |le to trasmit yo|
00030080  75 72 20 61 70 70 6c 69  63 61 74 69 6f 6e 20 74  |ur application t|
00030090  6f 20 61 6e 6f 74 68 65  72 20 63 6f 6d 70 75 74  |o another comput|
000300a0  65 72 20 76 69 61 20 61  20 6e 65 74 77 6f 72 6b  |er via a network|
000300b0  20 6c 69 6e 6b 20 66 6f  72 20 65 78 65 63 75 74  | link for execut|
000300c0  69 6f 6e 2e 20 41 73 20  73 75 63 68 20 74 68 65  |ion. As such the|
000300d0  20 63 6f 64 65 20 77 6f  75 6c 64 20 68 61 76 65  | code would have|
000300e0  20 62 65 65 6e 20 65 78  65 63 75 74 65 64 20 64  | been executed d|
000300f0  69 72 65 63 74 6c 79 20  61 6e 64 20 6e 6f 74 20  |irectly and not |
00030100  74 68 72 6f 75 67 68 20  74 68 65 20 27 73 74 61  |through the 'sta|
00030110  6e 64 61 72 64 27 20 63  68 61 6e 6e 65 6c 73 2e  |ndard' channels.|
00030120  20 53 75 63 68 20 61 20  6d 65 74 68 6f 64 20 77  | Such a method w|
00030130  6f 75 6c 64 20 72 65 71  75 69 72 65 20 74 68 65  |ould require the|
00030140  20 75 73 65 20 6f 66 20  74 68 69 73 20 53 65 72  | use of this Ser|
00030150  76 69 63 65 20 63 61 6c  6c 2e 00 00 44 41 54 41  |vice call...DATA|
00030160  a9 01 00 00 53 65 72 76  69 63 65 5f 4c 6f 6f 6b  |....Service_Look|
00030170  75 70 46 69 6c 65 74 79  70 65 20 28 26 34 32 29  |upFiletype (&42)|
00030180  0a 23 50 61 72 65 6e 74  20 53 65 72 76 69 63 65  |.#Parent Service|
00030190  5f 49 6e 64 65 78 0a 3d  3e 09 52 31 20 3d 09 26  |_Index.=>.R1 =.&|
000301a0  34 32 20 28 73 65 72 76  69 63 65 20 6e 75 6d 62  |42 (service numb|
000301b0  65 72 29 0a 09 52 32 20  3d 09 3c 66 69 6c 65 74  |er)..R2 =.<filet|
000301c0  79 70 65 3d 3e 46 69 6c  65 74 79 70 65 73 3a 21  |ype=>Filetypes:!|
000301d0  52 6f 6f 74 3e 0a 3c 3d  09 52 31 20 3d 09 30 20  |Root>.<=.R1 =.0 |
000301e0  74 6f 20 63 6c 61 69 6d  20 28 66 69 6c 65 74 79  |to claim (filety|
000301f0  70 65 20 6b 6e 6f 77 6e  29 2c 20 70 72 65 73 65  |pe known), prese|
00030200  72 76 65 64 20 6f 74 68  65 72 77 69 73 65 0a 09  |rved otherwise..|
00030210  52 32 20 3d 09 66 69 72  73 74 20 66 6f 75 72 20  |R2 =.first four |
00030220  63 68 61 72 61 63 74 65  72 73 2c 20 69 66 20 6b  |characters, if k|
00030230  6e 6f 77 6e 0a 09 52 33  20 3d 09 6c 61 73 74 20  |nown..R3 =.last |
00030240  66 6f 75 6e 64 20 63 68  61 72 61 63 74 65 72 73  |found characters|
00030250  2c 20 69 66 20 6b 6e 6f  77 6e 0a 0a 54 68 69 73  |, if known..This|
00030260  20 73 65 72 76 69 63 65  20 69 73 20 69 73 73 75  | service is issu|
00030270  65 64 20 77 68 65 6e 20  61 20 66 69 6c 65 74 79  |ed when a filety|
00030280  70 65 20 6c 6f 6f 6b 75  70 20 69 6e 20 74 68 65  |pe lookup in the|
00030290  20 46 69 6c 65 24 54 79  70 65 5f 23 23 23 20 76  | File$Type_### v|
000302a0  61 72 69 61 62 6c 65 20  66 61 69 6c 73 2e 20 59  |ariable fails. Y|
000302b0  6f 75 20 70 72 6f 62 61  62 6c 79 20 73 68 6f 75  |ou probably shou|
000302c0  6c 64 6e 27 74 20 62 65  20 75 73 69 6e 67 20 74  |ldn't be using t|
000302d0  68 69 73 20 73 65 72 76  69 63 65 20 61 73 20 74  |his service as t|
000302e0  68 65 20 73 79 73 74 65  6d 20 76 61 72 69 61 62  |he system variab|
000302f0  6c 65 73 20 61 72 65 20  6d 6f 72 65 20 75 73 65  |les are more use|
00030300  66 75 6c 2e 0a 00 00 00  44 41 54 41 56 0f 00 00  |ful.....DATAV...|
00030310  53 65 72 76 69 63 65 20  63 61 6c 6c 73 0a 23 50  |Service calls.#P|
00030320  61 72 65 6e 74 20 4f 53  5f 0a 23 20 49 27 64 20  |arent OS_.# I'd |
00030330  6c 69 6b 65 20 74 6f 20  74 61 6b 65 20 74 68 69  |like to take thi|
00030340  73 20 6f 70 70 6f 72 74  75 6e 69 74 79 20 74 6f  |s opportunity to|
00030350  20 74 68 61 6e 6b 20 4e  69 63 68 6f 6c 61 73 20  | thank Nicholas |
00030360  43 6c 61 72 6b 20 66 6f  72 20 61 20 6c 61 72 67  |Clark for a larg|
00030370  65 20 6e 75 6d 62 65 72  0a 23 20 6f 66 20 74 68  |e number.# of th|
00030380  65 73 65 20 73 65 72 76  69 63 65 20 64 65 66 69  |ese service defi|
00030390  6e 69 74 69 6f 6e 73 2e  0a 23 54 61 62 6c 65 20  |nitions..#Table |
000303a0  43 6f 6c 75 6d 6e 73 20  33 0a 30 30 20 43 61 6c  |Columns 3.00 Cal|
000303b0  6c 20 63 6c 61 69 6d 65  64 0a 30 34 20 3c 55 6e  |l claimed.04 <Un|
000303c0  6b 6e 6f 77 6e 20 63 6f  6d 6d 61 6e 64 3d 3e 53  |known command=>S|
000303d0  65 72 76 69 63 65 5f 30  34 3e 0a 30 36 20 3c 45  |ervice_04>.06 <E|
000303e0  72 72 6f 72 20 68 61 73  20 6f 63 63 75 72 65 64  |rror has occured|
000303f0  3d 3e 53 65 72 76 69 63  65 5f 30 36 3e 0a 30 37  |=>Service_06>.07|
00030400  20 3c 55 6e 6b 6e 6f 77  6e 20 4f 53 5f 42 79 74  | <Unknown OS_Byt|
00030410  65 3d 3e 53 65 72 76 69  63 65 5f 30 37 3e 0a 30  |e=>Service_07>.0|
00030420  38 20 3c 55 6e 6b 6e 6f  77 6e 20 4f 53 5f 57 6f  |8 <Unknown OS_Wo|
00030430  72 64 3d 3e 53 65 72 76  69 63 65 5f 30 38 3e 0a  |rd=>Service_08>.|
00030440  30 39 20 3c 2a 48 65 6c  70 20 63 61 6c 6c 65 64  |09 <*Help called|
00030450  3d 3e 53 65 72 76 69 63  65 5f 30 39 3e 0a 30 42  |=>Service_09>.0B|
00030460  20 3c 52 65 6c 65 61 73  65 20 46 49 51 3d 3e 53  | <Release FIQ=>S|
00030470  65 72 76 69 63 65 5f 30  42 3e 0a 30 43 20 3c 43  |ervice_0B>.0C <C|
00030480  6c 61 69 6d 20 46 49 51  3d 3e 53 65 72 76 69 63  |laim FIQ=>Servic|
00030490  65 5f 30 43 3e 0a 31 31  20 3c 4d 45 4d 43 20 72  |e_0C>.11 <MEMC r|
000304a0  65 6d 61 70 20 77 61 72  6e 69 6e 67 3d 3e 53 65  |emap warning=>Se|
000304b0  72 76 69 63 65 5f 31 31  3e 0a 31 32 20 3c 53 74  |rvice_11>.12 <St|
000304c0  61 72 74 20 61 20 46 53  20 28 6f 6c 64 29 3d 3e  |art a FS (old)=>|
000304d0  53 65 72 76 69 63 65 5f  31 32 3e 0a 31 38 20 53  |Service_12>.18 S|
000304e0  65 72 76 69 63 65 5f 50  6f 73 74 48 65 6c 70 0a  |ervice_PostHelp.|
000304f0  32 37 20 3c 50 6f 73 74  2d 52 65 73 65 74 3d 3e  |27 <Post-Reset=>|
00030500  53 65 72 76 69 63 65 5f  32 37 3e 0a 32 38 20 3c  |Service_27>.28 <|
00030510  55 6e 6b 6e 6f 77 6e 20  2a 43 6f 6e 66 69 67 75  |Unknown *Configu|
00030520  72 65 3d 3e 53 65 72 76  69 63 65 5f 32 38 3e 0a  |re=>Service_28>.|
00030530  32 39 20 3c 55 6e 6b 6e  6f 77 6e 20 2a 53 74 61  |29 <Unknown *Sta|
00030540  74 75 73 3d 3e 53 65 72  76 69 63 65 5f 32 39 3e  |tus=>Service_29>|
00030550  0a 32 41 20 3c 4e 65 77  20 61 70 70 6c 69 63 61  |.2A <New applica|
00030560  74 69 6f 6e 3d 3e 53 65  72 76 69 63 65 5f 32 41  |tion=>Service_2A|
00030570  3e 0a 34 30 20 3c 46 53  20 72 65 2d 69 6e 69 74  |>.40 <FS re-init|
00030580  3d 3e 53 65 72 76 69 63  65 5f 34 30 3e 0a 34 31  |=>Service_40>.41|
00030590  20 3c 50 44 72 69 76 65  72 20 70 72 69 6e 74 3d  | <PDriver print=|
000305a0  3e 53 65 72 76 69 63 65  5f 34 31 3e 0a 34 32 20  |>Service_41>.42 |
000305b0  3c 4c 6f 6f 6b 75 70 20  66 69 6c 65 74 79 70 65  |<Lookup filetype|
000305c0  3d 3e 53 65 72 76 69 63  65 5f 34 32 3e 0a 34 33  |=>Service_42>.43|
000305d0  20 3c 49 6e 74 65 72 6e  61 74 69 6f 6e 61 6c 20  | <International |
000305e0  73 65 72 76 69 63 65 3d  3e 53 65 72 76 69 63 65  |service=>Service|
000305f0  5f 34 33 3e 0a 34 34 20  3c 4b 65 79 62 6f 61 72  |_43>.44 <Keyboar|
00030600  64 20 68 61 6e 64 6c 65  72 3d 3e 53 65 72 76 69  |d handler=>Servi|
00030610  63 65 5f 34 34 3e 0a 34  35 20 3c 50 72 65 2d 52  |ce_44>.45 <Pre-R|
00030620  65 73 65 74 3d 3e 53 65  72 76 69 63 65 5f 34 35  |eset=>Service_45|
00030630  3e 0a 34 36 20 3c 50 6f  73 74 2d 6d 6f 64 65 20  |>.46 <Post-mode |
00030640  63 68 61 6e 67 65 3d 3e  53 65 72 76 69 63 65 5f  |change=>Service_|
00030650  34 36 3e 0a 34 37 20 3c  43 6c 61 69 6d 20 62 61  |46>.47 <Claim ba|
00030660  63 6b 67 72 6f 75 6e 64  20 46 49 51 3d 3e 53 65  |ckground FIQ=>Se|
00030670  72 76 69 63 65 5f 34 37  3e 0a 34 38 20 3c 45 63  |rvice_47>.48 <Ec|
00030680  6f 6e 65 74 20 72 65 61  6c 6c 6f 63 61 74 65 20  |onet reallocate |
00030690  70 6f 72 74 73 3d 3e 53  65 72 76 69 63 65 5f 34  |ports=>Service_4|
000306a0  38 3e 0a 34 39 20 3c 53  74 61 72 74 20 57 69 6d  |8>.49 <Start Wim|
000306b0  70 3d 3e 53 65 72 76 69  63 65 5f 34 39 3e 0a 34  |p=>Service_49>.4|
000306c0  41 20 3c 53 74 61 72 74  65 64 20 57 69 6d 70 3d  |A <Started Wimp=|
000306d0  3e 53 65 72 76 69 63 65  5f 34 41 3e 0a 34 42 20  |>Service_4A>.4B |
000306e0  3c 53 74 61 72 74 20 46  69 6c 65 72 3d 3e 53 65  |<Start Filer=>Se|
000306f0  72 76 69 63 65 5f 34 42  3e 0a 34 43 20 3c 53 74  |rvice_4B>.4C <St|
00030700  61 72 74 65 64 20 46 69  6c 65 72 3d 3e 53 65 72  |arted Filer=>Ser|
00030710  76 69 63 65 5f 34 43 3e  0a 34 44 20 3c 50 72 65  |vice_4C>.4D <Pre|
00030720  2d 6d 6f 64 65 20 63 68  61 6e 67 65 3d 3e 53 65  |-mode change=>Se|
00030730  72 76 69 63 65 5f 34 44  3e 0a 34 45 20 3c 4d 65  |rvice_4D>.4E <Me|
00030740  6d 6f 72 79 20 4d 6f 76  65 64 3d 3e 53 65 72 76  |mory Moved=>Serv|
00030750  69 63 65 5f 34 45 3e 0a  34 46 20 3c 46 69 6c 65  |ice_4E>.4F <File|
00030760  72 20 69 73 20 64 79 69  6e 67 3d 3e 53 65 72 76  |r is dying=>Serv|
00030770  69 63 65 5f 34 46 3e 0a  35 30 20 3c 4d 6f 64 65  |ice_4F>.50 <Mode|
00030780  20 65 78 74 65 6e 73 69  6f 6e 3d 3e 53 65 72 76  | extension=>Serv|
00030790  69 63 65 5f 35 30 3e 0a  35 31 20 3c 4d 6f 64 65  |ice_50>.51 <Mode|
000307a0  20 74 72 61 6e 73 6c 61  74 69 6f 6e 3d 3e 53 65  | translation=>Se|
000307b0  72 76 69 63 65 5f 35 31  3e 0a 35 32 20 3c 4d 6f  |rvice_51>.52 <Mo|
000307c0  75 73 65 20 74 72 61 70  3d 3e 53 65 72 76 69 63  |use trap=>Servic|
000307d0  65 5f 35 32 3e 0a 35 33  20 3c 57 69 6d 70 5f 43  |e_52>.53 <Wimp_C|
000307e0  6c 6f 73 65 64 6f 77 6e  3d 3e 53 65 72 76 69 63  |losedown=>Servic|
000307f0  65 5f 35 33 3e 0a 35 34  20 3c 53 6f 75 6e 64 3d  |e_53>.54 <Sound=|
00030800  3e 53 65 72 76 69 63 65  5f 35 34 3e 0a 35 35 20  |>Service_54>.55 |
00030810  3c 2a 4c 6f 67 6f 6e 2f  2a 42 79 65 20 28 4e 65  |<*Logon/*Bye (Ne|
00030820  74 46 53 29 3d 3e 53 65  72 76 69 63 65 5f 35 35  |tFS)=>Service_55|
00030830  3e 0a 35 36 20 3c 45 63  6f 6e 65 74 20 64 79 69  |>.56 <Econet dyi|
00030840  6e 67 3d 3e 53 65 72 76  69 63 65 5f 35 36 3e 0a  |ng=>Service_56>.|
00030850  35 37 20 3c 57 69 6d 70  20 52 65 70 6f 72 74 45  |57 <Wimp ReportE|
00030860  72 72 6f 72 3d 3e 53 65  72 76 69 63 65 5f 35 37  |rror=>Service_57|
00030870  3e 0a 35 38 20 53 65 72  76 69 63 65 5f 4d 49 44  |>.58 Service_MID|
00030880  49 0a 35 39 20 3c 52 65  73 6f 75 72 63 65 46 53  |I.59 <ResourceFS|
00030890  20 73 74 61 72 74 65 64  3d 3e 53 65 72 76 69 63  | started=>Servic|
000308a0  65 5f 35 39 3e 0a 35 41  20 3c 52 65 73 6f 75 72  |e_59>.5A <Resour|
000308b0  63 65 46 53 20 64 79 69  6e 67 3d 3e 53 65 72 76  |ceFS dying=>Serv|
000308c0  69 63 65 5f 35 41 3e 0a  35 42 20 3c 43 6f 6c 6f  |ice_5A>.5B <Colo|
000308d0  75 72 54 72 61 6e 73 20  63 61 6c 69 62 72 61 74  |urTrans calibrat|
000308e0  69 6f 6e 20 63 68 61 6e  67 65 64 3d 3e 53 65 72  |ion changed=>Ser|
000308f0  76 69 63 65 5f 35 42 3e  0a 35 43 20 3c 57 69 6d  |vice_5B>.5C <Wim|
00030900  70 20 53 61 76 65 44 65  73 6b 74 6f 70 3d 3e 53  |p SaveDesktop=>S|
00030910  65 72 76 69 63 65 5f 35  43 3e 0a 35 44 20 3c 57  |ervice_5C>.5D <W|
00030920  69 6d 70 20 50 61 6c 65  74 74 65 3d 3e 53 65 72  |imp Palette=>Ser|
00030930  76 69 63 65 5f 35 44 3e  0a 35 45 20 3c 4d 65 73  |vice_5D>.5E <Mes|
00030940  73 61 67 65 54 72 61 6e  73 20 66 69 6c 65 20 63  |sageTrans file c|
00030950  6c 6f 73 65 64 3d 3e 53  65 72 76 69 63 65 5f 35  |losed=>Service_5|
00030960  45 3e 0a 35 46 20 3c 4e  65 74 46 53 20 64 79 69  |E>.5F <NetFS dyi|
00030970  6e 67 3d 3e 53 65 72 76  69 63 65 5f 35 46 3e 0a  |ng=>Service_5F>.|
00030980  36 30 20 3c 52 65 73 6f  75 72 63 65 46 53 20 73  |60 <ResourceFS s|
00030990  74 61 72 74 69 6e 67 3d  3e 53 65 72 76 69 63 65  |tarting=>Service|
000309a0  5f 36 30 3e 0a 36 34 20  3c 54 65 72 72 69 74 6f  |_60>.64 <Territo|
000309b0  72 79 4d 61 6e 61 67 65  72 20 4c 6f 61 64 65 64  |ryManager Loaded|
000309c0  3d 3e 53 65 72 76 69 63  65 5f 36 34 3e 0a 36 35  |=>Service_64>.65|
000309d0  20 3c 50 44 72 69 76 65  72 20 73 74 61 72 74 69  | <PDriver starti|
000309e0  6e 67 3d 3e 53 65 72 76  69 63 65 5f 36 35 3e 0a  |ng=>Service_65>.|
000309f0  36 36 20 3c 50 44 75 6d  70 65 72 20 73 74 61 72  |66 <PDumper star|
00030a00  74 69 6e 67 3d 3e 53 65  72 76 69 63 65 5f 36 36  |ting=>Service_66|
00030a10  3e 0a 36 37 20 3c 50 44  75 6d 70 65 72 20 64 79  |>.67 <PDumper dy|
00030a20  69 6e 67 3d 3e 53 65 72  76 69 63 65 5f 36 37 3e  |ing=>Service_67>|
00030a30  0a 36 38 20 3c 43 6c 6f  73 69 6e 67 20 66 69 6c  |.68 <Closing fil|
00030a40  65 73 3d 3e 53 65 72 76  69 63 65 5f 36 38 3e 0a  |es=>Service_68>.|
00030a50  36 39 20 3c 49 64 65 6e  74 69 66 79 20 64 69 73  |69 <Identify dis|
00030a60  63 3d 3e 53 65 72 76 69  63 65 5f 36 39 3e 0a 36  |c=>Service_69>.6|
00030a70  41 20 3c 46 69 6c 65 72  20 65 6e 75 6d 65 72 61  |A <Filer enumera|
00030a80  74 65 20 66 6f 72 6d 61  74 73 3d 3e 53 65 72 76  |te formats=>Serv|
00030a90  69 63 65 5f 36 41 3e 0a  36 42 20 3c 49 64 65 6e  |ice_6A>.6B <Iden|
00030aa0  74 69 66 79 20 66 6f 72  6d 61 74 3d 3e 53 65 72  |tify format=>Ser|
00030ab0  76 69 63 65 5f 36 42 3e  0a 36 43 20 3c 44 69 73  |vice_6B>.6C <Dis|
00030ac0  70 6c 61 79 20 66 6f 72  6d 61 74 20 68 65 6c 70  |play format help|
00030ad0  3d 3e 53 65 72 76 69 63  65 5f 36 43 3e 0a 36 44  |=>Service_6C>.6D|
00030ae0  20 3c 56 61 6c 69 64 61  74 65 20 41 64 64 72 65  | <Validate Addre|
00030af0  73 73 3d 3e 53 65 72 76  69 63 65 5f 36 44 3e 0a  |ss=>Service_6D>.|
00030b00  36 45 20 3c 46 6f 6e 74  73 20 63 68 61 6e 67 65  |6E <Fonts change|
00030b10  64 3d 3e 53 65 72 76 69  63 65 5f 36 65 3e 0a 36  |d=>Service_6e>.6|
00030b20  46 20 3c 42 75 66 66 65  72 20 73 74 61 72 74 69  |F <Buffer starti|
00030b30  6e 67 3d 3e 53 65 72 76  69 63 65 5f 36 66 3e 0a  |ng=>Service_6f>.|
00030b40  37 30 20 3c 44 65 76 69  63 65 46 53 20 73 74 61  |70 <DeviceFS sta|
00030b50  72 74 69 6e 67 3d 3e 53  65 72 76 69 63 65 5f 37  |rting=>Service_7|
00030b60  30 3e 0a 37 31 20 3c 44  65 76 69 63 65 46 53 20  |0>.71 <DeviceFS |
00030b70  64 79 69 6e 67 3d 3e 53  65 72 76 69 63 65 5f 37  |dying=>Service_7|
00030b80  31 3e 0a 37 32 20 3c 53  77 69 74 63 68 69 6e 67  |1>.72 <Switching|
00030b90  20 6f 75 74 70 75 74 20  74 6f 20 73 70 72 69 74  | output to sprit|
00030ba0  65 3d 3e 53 65 72 76 69  63 65 5f 37 32 3e 0a 37  |e=>Service_72>.7|
00030bb0  33 20 3c 50 6f 73 74 49  6e 69 74 3d 3e 53 65 72  |3 <PostInit=>Ser|
00030bc0  76 69 63 65 5f 37 33 3e  0a 37 35 20 3c 54 65 72  |vice_73>.75 <Ter|
00030bd0  72 69 74 6f 72 79 20 73  74 61 72 74 65 64 3d 3e  |ritory started=>|
00030be0  53 65 72 76 69 63 65 5f  37 35 3e 0a 37 36 20 3c  |Service_75>.76 <|
00030bf0  4d 6f 6e 69 74 6f 72 20  6c 65 61 64 20 74 72 61  |Monitor lead tra|
00030c00  6e 73 6c 61 74 69 6f 6e  3d 3e 53 65 72 76 69 63  |nslation=>Servic|
00030c10  65 5f 37 36 3e 0a 37 38  20 3c 50 44 72 69 76 65  |e_76>.78 <PDrive|
00030c20  72 20 47 65 74 4d 65 73  73 61 67 65 73 3d 3e 53  |r GetMessages=>S|
00030c30  65 72 76 69 63 65 5f 37  38 3e 0a 37 39 20 3c 44  |ervice_78>.79 <D|
00030c40  65 76 69 63 65 46 53 20  64 65 76 69 63 65 20 64  |eviceFS device d|
00030c50  65 61 64 3d 3e 53 65 72  76 69 63 65 5f 37 39 3e  |ead=>Service_79>|
00030c60  0a 37 41 20 3c 53 63 72  65 65 6e 20 62 6c 61 6e  |.7A <Screen blan|
00030c70  6b 65 64 3d 3e 53 65 72  76 69 63 65 5f 37 41 3e  |ked=>Service_7A>|
00030c80  0a 37 42 20 3c 53 63 72  65 65 6e 20 72 65 73 74  |.7B <Screen rest|
00030c90  6f 72 65 64 3d 3e 53 65  72 76 69 63 65 5f 37 42  |ored=>Service_7B|
00030ca0  3e 0a 37 43 20 3c 44 65  73 6b 74 6f 70 20 77 65  |>.7C <Desktop we|
00030cb0  6c 63 6f 6d 65 20 6d 65  73 73 61 67 65 3d 3e 53  |lcome message=>S|
00030cc0  65 72 76 69 63 65 5f 37  43 3e 0a 37 44 20 3c 44  |ervice_7C>.7D <D|
00030cd0  69 73 63 20 64 69 73 6d  6f 75 6e 74 65 64 3d 3e  |isc dismounted=>|
00030ce0  53 65 72 76 69 63 65 5f  37 44 3e 0a 37 45 20 3c  |Service_7D>.7E <|
00030cf0  53 68 75 74 64 6f 77 6e  3d 3e 53 65 72 76 69 63  |Shutdown=>Servic|
00030d00  65 5f 37 45 3e 0a 37 46  20 3c 50 44 72 69 76 65  |e_7E>.7F <PDrive|
00030d10  72 20 63 68 61 6e 67 65  64 3d 3e 53 65 72 76 69  |r changed=>Servi|
00030d20  63 65 5f 37 46 3e 0a 38  30 20 3c 53 68 75 74 64  |ce_7F>.80 <Shutd|
00030d30  6f 77 6e 20 43 6f 6d 70  6c 65 74 65 3d 3e 53 65  |own Complete=>Se|
00030d40  72 76 69 63 65 5f 38 30  3e 0a 38 31 20 3c 44 65  |rvice_80>.81 <De|
00030d50  76 69 63 65 46 53 20 63  6c 6f 73 65 20 72 65 71  |viceFS close req|
00030d60  75 65 73 74 3d 3e 53 65  72 76 69 63 65 5f 38 31  |uest=>Service_81|
00030d70  3e 0a 38 32 20 3c 43 6f  6c 6f 75 72 54 72 61 6e  |>.82 <ColourTran|
00030d80  73 20 69 6e 76 61 6c 69  64 61 74 65 20 63 61 63  |s invalidate cac|
00030d90  68 65 3d 3e 53 65 72 76  69 63 65 5f 38 32 3e 0a  |he=>Service_82>.|
00030da0  38 33 20 3c 45 63 6f 6e  65 74 20 70 72 6f 74 6f  |83 <Econet proto|
00030db0  63 6f 6c 20 64 79 69 6e  67 3d 3e 53 65 72 76 69  |col dying=>Servi|
00030dc0  63 65 5f 38 33 3e 0a 38  34 20 3c 45 63 6f 6e 65  |ce_83>.84 <Econe|
00030dd0  74 20 66 69 6e 64 20 6e  65 74 77 6f 72 6b 20 64  |t find network d|
00030de0  72 69 76 65 72 3d 3e 53  65 72 76 69 63 65 5f 38  |river=>Service_8|
00030df0  34 3e 0a 38 35 20 3c 57  69 6d 70 20 53 70 72 69  |4>.85 <Wimp Spri|
00030e00  74 65 73 4d 6f 76 65 64  3d 3e 53 65 72 76 69 63  |tesMoved=>Servic|
00030e10  65 5f 38 35 3e 0a 38 36  20 3c 57 69 6d 70 20 52  |e_85>.86 <Wimp R|
00030e20  65 67 69 73 74 65 72 46  69 6c 74 65 72 73 3d 3e  |egisterFilters=>|
00030e30  53 65 72 76 69 63 65 5f  38 36 3e 0a 38 37 20 3c  |Service_86>.87 <|
00030e40  46 69 6c 74 65 72 4d 61  6e 61 67 65 72 20 69 6e  |FilterManager in|
00030e50  73 74 61 6c 6c 65 64 3d  3e 53 65 72 76 69 63 65  |stalled=>Service|
00030e60  5f 38 37 3e 0a 38 38 20  3c 46 69 6c 74 65 72 4d  |_87>.88 <FilterM|
00030e70  61 6e 61 67 65 72 20 64  79 69 6e 67 3d 3e 53 65  |anager dying=>Se|
00030e80  72 76 69 63 65 5f 38 38  3e 0a 38 39 20 3c 4d 6f  |rvice_88>.89 <Mo|
00030e90  64 65 20 63 68 61 6e 67  69 6e 67 3d 3e 53 65 72  |de changing=>Ser|
00030ea0  76 69 63 65 5f 38 39 3e  0a 38 41 20 3c 50 6f 72  |vice_89>.8A <Por|
00030eb0  74 61 62 6c 65 3d 3e 53  65 72 76 69 63 65 5f 38  |table=>Service_8|
00030ec0  41 3e 0a 38 42 20 3c 4e  65 74 77 6f 72 6b 20 64  |A>.8B <Network d|
00030ed0  72 69 76 65 72 20 73 74  61 74 75 73 20 28 44 43  |river status (DC|
00030ee0  49 32 29 3d 3e 53 65 72  76 69 63 65 5f 38 42 3e  |I2)=>Service_8B>|
00030ef0  0a 38 43 20 3c 53 79 6e  74 61 78 20 65 72 72 6f  |.8C <Syntax erro|
00030f00  72 3d 3e 53 65 72 76 69  63 65 5f 38 43 3e 0a 38  |r=>Service_8C>.8|
00030f10  44 20 3c 45 6e 75 6d 65  72 61 74 65 20 73 63 72  |D <Enumerate scr|
00030f20  65 65 6e 20 6d 6f 64 65  73 3d 3e 53 65 72 76 69  |een modes=>Servi|
00030f30  63 65 5f 38 44 3e 0a 38  45 20 50 61 67 65 73 20  |ce_8D>.8E Pages |
00030f40  75 6e 73 61 66 65 0a 39  30 20 43 72 65 61 74 65  |unsafe.90 Create|
00030f50  64 20 64 79 6e 61 6d 69  63 20 61 72 65 61 0a 39  |d dynamic area.9|
00030f60  31 20 52 65 6d 6f 76 65  20 64 79 6e 61 6d 69 63  |1 Remove dynamic|
00030f70  20 61 72 65 61 0a 39 32  20 52 65 6e 75 6d 62 65  | area.92 Renumbe|
00030f80  72 20 64 79 6e 61 6d 69  63 20 61 72 65 61 0a 39  |r dynamic area.9|
00030f90  33 20 43 6f 6c 6f 75 72  20 70 69 63 6b 65 72 20  |3 Colour picker |
00030fa0  6c 6f 61 64 65 64 0a 39  42 20 45 6e 75 6d 65 72  |loaded.9B Enumer|
00030fb0  61 74 65 20 6e 65 74 77  6f 72 6b 20 64 72 69 76  |ate network driv|
00030fc0  65 72 73 0a 39 44 20 44  43 49 20 64 72 69 76 65  |ers.9D DCI drive|
00030fd0  72 20 73 74 61 74 75 73  0a 39 45 20 44 43 49 20  |r status.9E DCI |
00030fe0  66 72 61 6d 65 20 74 79  70 65 20 66 72 65 65 64  |frame type freed|
00030ff0  0a 39 46 20 44 43 49 20  50 72 6f 74 6f 63 6f 6c  |.9F DCI Protocol|
00031000  20 73 74 61 74 75 73 0a  41 37 20 3c 55 52 49 20  | status.A7 <URI |
00031010  6f 70 65 72 61 74 69 6f  6e 3d 3e 49 6e 65 74 53  |operation=>InetS|
00031020  57 49 73 3a 53 65 72 76  69 63 65 5f 41 37 3e 0a  |WIs:Service_A7>.|
00031030  42 37 20 3c 55 4b 43 6f  6d 70 72 65 73 73 69 6f  |B7 <UKCompressio|
00031040  6e 3d 3e 53 65 72 76 69  63 65 5f 42 37 3e 0a 42  |n=>Service_B7>.B|
00031050  39 20 3c 4d 6f 64 75 6c  65 50 72 65 49 6e 69 74  |9 <ModulePreInit|
00031060  3d 3e 53 65 72 76 69 63  65 5f 42 39 3e 0a 31 30  |=>Service_B9>.10|
00031070  38 30 30 20 3c 41 44 46  53 50 6f 64 75 6c 65 3d  |800 <ADFSPodule=|
00031080  3e 53 65 72 76 69 63 65  5f 31 30 38 30 30 3e 0a  |>Service_10800>.|
00031090  31 30 38 30 31 20 3c 41  44 46 53 50 6f 64 75 6c  |10801 <ADFSPodul|
000310a0  65 20 49 44 45 3d 3e 53  65 72 76 69 63 65 5f 31  |e IDE=>Service_1|
000310b0  30 38 30 31 3e 0a 31 30  38 30 32 20 3c 41 44 46  |0801>.10802 <ADF|
000310c0  53 50 6f 64 75 6c 65 20  49 44 45 20 64 79 69 6e  |SPodule IDE dyin|
000310d0  67 3d 3e 53 65 72 76 69  63 65 5f 31 30 38 30 32  |g=>Service_10802|
000310e0  3e 0a 34 30 30 43 30 20  57 69 6d 70 20 45 72 72  |>.400C0 Wimp Err|
000310f0  6f 72 53 74 61 72 74 69  6e 67 0a 34 30 30 43 31  |orStarting.400C1|
00031100  20 57 69 6d 70 20 45 72  72 6f 72 42 75 74 74 6f  | Wimp ErrorButto|
00031110  6e 50 72 65 73 73 65 64  0a 34 30 30 43 32 20 57  |nPressed.400C2 W|
00031120  69 6d 70 20 45 72 72 6f  72 45 6e 64 69 6e 67 0a  |imp ErrorEnding.|
00031130  34 35 35 34 30 20 3c 44  72 61 77 46 69 6c 65 20  |45540 <DrawFile |
00031140  4f 62 6a 65 63 74 52 65  6e 64 65 72 3d 3e 53 65  |ObjectRender=>Se|
00031150  72 76 69 63 65 5f 34 35  35 34 30 3e 0a 34 35 35  |rvice_45540>.455|
00031160  34 31 20 3c 44 72 61 77  46 69 6c 65 20 44 65 63  |41 <DrawFile Dec|
00031170  6c 61 72 65 46 6f 6e 74  73 3d 3e 53 65 72 76 69  |lareFonts=>Servi|
00031180  63 65 5f 34 35 35 34 31  3e 0a 38 30 33 38 30 20  |ce_45541>.80380 |
00031190  3c 53 6f 75 6e 64 46 69  6c 65 20 49 64 65 6e 74  |<SoundFile Ident|
000311a0  69 66 79 20 53 6f 75 6e  64 20 46 69 6c 65 3d 3e  |ify Sound File=>|
000311b0  53 65 72 76 69 63 65 5f  38 30 33 38 30 3e 0a 23  |Service_80380>.#|
000311c0  45 6e 64 54 61 62 6c 65  0a 23 20 39 42 20 3c 45  |EndTable.# 9B <E|
000311d0  6e 75 6d 65 72 61 74 65  20 6e 65 74 77 6f 72 6b  |numerate network|
000311e0  20 64 72 69 76 65 72 73  3d 3e 49 6e 65 74 53 57  | drivers=>InetSW|
000311f0  49 73 3a 53 65 72 76 69  63 65 5f 39 42 3e 0a 23  |Is:Service_9B>.#|
00031200  20 39 44 20 3c 44 43 49  20 64 72 69 76 65 72 20  | 9D <DCI driver |
00031210  73 74 61 74 75 73 3d 3e  49 6e 65 74 53 57 49 73  |status=>InetSWIs|
00031220  3a 53 65 72 76 69 63 65  5f 39 44 3e 0a 23 20 39  |:Service_9D>.# 9|
00031230  45 20 3c 44 43 49 20 66  72 61 6d 65 20 74 79 70  |E <DCI frame typ|
00031240  65 20 66 72 65 65 64 3d  3e 49 6e 65 74 53 57 49  |e freed=>InetSWI|
00031250  73 3a 53 65 72 76 69 63  65 5f 39 45 3e 0a 00 00  |s:Service_9E>...|
00031260  44 41 54 41 31 01 00 00  53 65 72 76 69 63 65 5f  |DATA1...Service_|
00031270  50 6f 73 74 49 6e 69 74  20 28 26 37 33 29 0a 23  |PostInit (&73).#|
00031280  50 61 72 65 6e 74 20 53  65 72 76 69 63 65 5f 69  |Parent Service_i|
00031290  6e 64 65 78 0a 3d 3e 09  52 31 20 3d 09 26 37 33  |ndex.=>.R1 =.&73|
000312a0  20 28 73 65 72 76 69 63  65 20 6e 75 6d 62 65 72  | (service number|
000312b0  29 0a 3c 3d 09 52 31 20  70 72 65 73 65 72 76 65  |).<=.R1 preserve|
000312c0  64 20 28 73 68 6f 75 6c  64 20 6e 65 76 65 72 20  |d (should never |
000312d0  62 65 20 63 6c 61 69 6d  65 64 29 0a 0a 54 68 69  |be claimed)..Thi|
000312e0  73 20 73 65 72 76 69 63  65 20 69 73 20 69 73 73  |s service is iss|
000312f0  75 65 64 20 61 66 74 65  72 20 61 6c 6c 20 74 68  |ued after all th|
00031300  65 20 52 4f 4d 20 6d 6f  64 75 6c 65 73 20 68 61  |e ROM modules ha|
00031310  76 65 20 62 65 65 6e 20  69 6e 69 74 69 61 6c 69  |ve been initiali|
00031320  73 65 64 2e 20 49 74 20  69 73 20 75 6e 6c 69 6b  |sed. It is unlik|
00031330  65 6c 79 20 74 68 61 74  20 79 6f 75 20 77 69 6c  |ely that you wil|
00031340  6c 20 62 65 20 61 62 6c  65 20 74 6f 20 75 73 65  |l be able to use|
00031350  20 74 68 69 73 20 73 65  72 76 69 63 65 20 75 6e  | this service un|
00031360  6c 65 73 73 20 79 6f 75  20 61 72 65 20 70 61 72  |less you are par|
00031370  74 20 6f 66 20 74 68 65  20 4f 53 20 6f 72 20 6c  |t of the OS or l|
00031380  69 76 65 20 6f 6e 20 61  20 50 6f 64 75 6c 65 2e  |ive on a Podule.|
00031390  0a 00 00 00 44 41 54 41  58 02 00 00 53 65 72 76  |....DATAX...Serv|
000313a0  69 63 65 5f 53 79 6e 74  61 78 45 72 72 6f 72 20  |ice_SyntaxError |
000313b0  28 26 38 43 29 0a 23 50  61 72 65 6e 74 20 53 65  |(&8C).#Parent Se|
000313c0  72 76 69 63 65 5f 49 6e  64 65 78 0a 3d 3e 09 52  |rvice_Index.=>.R|
000313d0  31 20 3d 09 26 38 43 20  28 73 65 72 76 69 63 65  |1 =.&8C (service|
000313e0  20 6e 75 6d 62 65 72 29  0a 09 52 32 20 3d 09 70  | number)..R2 =.p|
000313f0  6f 69 6e 74 65 72 20 74  6f 20 65 6e 74 72 79 20  |ointer to entry |
00031400  69 6e 20 3c 63 6f 6d 6d  61 6e 64 20 74 61 62 6c  |in <command tabl|
00031410  65 3d 3e 4f 53 5f 4d 6f  64 75 6c 65 5f 43 6f 6d  |e=>OS_Module_Com|
00031420  54 61 62 6c 65 3e 0a 09  52 33 20 3d 09 70 6f 69  |Table>..R3 =.poi|
00031430  6e 74 65 72 20 74 6f 20  62 61 73 65 20 6f 66 20  |nter to base of |
00031440  6d 6f 64 75 6c 65 0a 09  52 34 20 3d 09 70 6f 69  |module..R4 =.poi|
00031450  6e 74 65 72 20 74 6f 20  63 6f 6d 6d 61 6e 64 20  |nter to command |
00031460  73 74 72 69 6e 67 20 69  6e 20 6d 6f 64 75 6c 65  |string in module|
00031470  0a 3c 3d 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |.<=.R0 =.pointer|
00031480  20 74 6f 20 65 72 72 6f  72 20 62 6c 6f 63 6b 2c  | to error block,|
00031490  20 6f 72 20 70 72 65 73  65 72 76 65 64 20 74 6f  | or preserved to|
000314a0  20 70 61 73 73 20 6f 6e  0a 09 52 31 20 3d 09 30  | pass on..R1 =.0|
000314b0  20 74 6f 20 63 6c 61 69  6d 2c 20 70 72 65 73 65  | to claim, prese|
000314c0  72 76 65 64 20 6f 74 68  65 72 77 69 73 65 0a 09  |rved otherwise..|
000314d0  52 32 2d 52 34 20 70 72  65 73 65 72 76 65 64 0a  |R2-R4 preserved.|
000314e0  0a 54 68 69 73 20 73 65  72 76 69 63 65 20 69 73  |.This service is|
000314f0  20 69 73 73 75 65 64 20  62 65 66 6f 72 65 20 61  | issued before a|
00031500  20 73 79 6e 74 61 78 20  65 72 72 6f 72 20 69 73  | syntax error is|
00031510  20 72 65 74 75 72 6e 65  64 20 66 72 6f 6d 20 61  | returned from a|
00031520  20 2a 63 6f 6d 6d 61 6e  64 20 72 65 73 69 64 65  | *command reside|
00031530  6e 74 20 69 6e 20 61 20  6d 6f 64 75 6c 65 2c 20  |nt in a module, |
00031540  77 68 69 63 68 20 61 6c  6c 6f 77 73 20 61 20 6d  |which allows a m|
00031550  6f 64 75 6c 65 20 74 6f  20 6c 6f 63 61 6c 69 73  |odule to localis|
00031560  65 20 6d 65 73 73 61 67  65 73 20 66 6f 72 20 74  |e messages for t|
00031570  68 65 20 63 75 72 72 65  6e 74 20 74 65 72 69 74  |he current terit|
00031580  6f 72 79 2e 20 54 68 69  73 20 6d 69 67 68 74 20  |ory. This might |
00031590  62 65 20 74 68 65 20 77  61 79 20 69 6e 20 77 68  |be the way in wh|
000315a0  69 63 68 20 52 49 53 43  20 4f 53 20 33 2e 35 20  |ich RISC OS 3.5 |
000315b0  74 72 61 6e 73 6c 61 74  65 73 20 74 68 65 20 4d  |translates the M|
000315c0  65 73 73 61 67 65 54 72  61 6e 73 20 74 6f 6b 65  |essageTrans toke|
000315d0  6e 73 20 74 6f 20 66 6f  72 6d 20 61 20 76 61 6c  |ns to form a val|
000315e0  69 64 20 6d 65 73 73 61  67 65 2e 0a 44 41 54 41  |id message..DATA|
000315f0  de 00 00 00 53 65 72 76  69 63 65 5f 49 6e 76 61  |....Service_Inva|
00031600  6c 69 64 61 74 65 20 43  61 63 68 65 20 28 26 38  |lidate Cache (&8|
00031610  32 29 0a 23 50 61 72 65  6e 74 20 53 65 72 76 69  |2).#Parent Servi|
00031620  63 65 5f 49 6e 64 65 78  0a 3d 3e 09 52 31 20 3d  |ce_Index.=>.R1 =|
00031630  09 26 38 32 20 28 73 65  72 76 69 63 65 20 6e 75  |.&82 (service nu|
00031640  6d 62 65 72 29 0a 0a 54  68 69 73 20 73 65 72 76  |mber)..This serv|
00031650  69 63 65 20 69 73 20 69  73 73 75 65 64 20 62 79  |ice is issued by|
00031660  20 43 6f 6c 6f 75 72 54  72 61 6e 73 20 77 68 65  | ColourTrans whe|
00031670  6e 20 74 68 65 20 74 68  65 20 63 61 63 68 65 20  |n the the cache |
00031680  69 73 20 66 6c 75 73 68  65 64 20 62 79 20 43 6f  |is flushed by Co|
00031690  6c 6f 75 72 54 72 61 6e  73 2e 20 49 27 6d 20 6e  |lourTrans. I'm n|
000316a0  6f 74 20 73 75 72 65 20  77 68 65 6e 20 79 6f 75  |ot sure when you|
000316b0  20 6d 69 67 68 74 20 6e  65 65 64 20 74 6f 20 6b  | might need to k|
000316c0  6e 6f 77 20 74 68 69 73  2e 0a 00 00 44 41 54 41  |now this....DATA|
000316d0  86 00 00 00 53 65 72 76  69 63 65 5f 52 65 41 6c  |....Service_ReAl|
000316e0  6c 6f 63 74 65 50 6f 72  74 73 20 28 26 34 38 29  |loctePorts (&48)|
000316f0  0a 23 50 61 72 65 6e 74  20 53 65 72 76 69 63 65  |.#Parent Service|
00031700  5f 49 6e 64 65 78 0a 3d  3e 09 52 31 20 3d 09 26  |_Index.=>.R1 =.&|
00031710  34 38 20 28 73 65 72 76  69 63 65 20 6e 75 6d 62  |48 (service numb|
00031720  65 72 29 0a 0a 54 68 69  73 20 73 65 72 76 69 63  |er)..This servic|
00031730  65 20 69 73 20 69 73 73  75 65 64 20 77 68 65 6e  |e is issued when|
00031740  20 45 63 6f 6e 65 74 20  72 65 73 74 61 72 74 73  | Econet restarts|
00031750  2e 0a 00 00 44 41 54 41  8b 00 00 00 53 65 72 76  |....DATA....Serv|
00031760  69 63 65 5f 45 63 6f 6e  65 74 44 79 69 6e 67 20  |ice_EconetDying |
00031770  28 26 35 36 29 0a 23 50  61 72 65 6e 74 20 53 65  |(&56).#Parent Se|
00031780  72 76 69 63 65 5f 49 6e  64 65 78 0a 3d 3e 09 52  |rvice_Index.=>.R|
00031790  31 20 3d 09 26 35 36 20  28 73 65 72 76 69 63 65  |1 =.&56 (service|
000317a0  20 6e 75 6d 62 65 72 29  0a 0a 54 68 69 73 20 73  | number)..This s|
000317b0  65 72 76 69 63 65 20 69  73 20 69 73 73 75 65 64  |ervice is issued|
000317c0  20 77 68 65 6e 20 45 63  6f 6e 65 74 20 69 73 20  | when Econet is |
000317d0  61 62 6f 75 74 20 74 6f  20 71 75 69 74 2e 0a 00  |about to quit...|
000317e0  44 41 54 41 81 02 00 00  53 65 72 76 69 63 65 5f  |DATA....Service_|
000317f0  4d 65 73 73 61 67 65 46  69 6c 65 43 6c 6f 73 65  |MessageFileClose|
00031800  64 20 28 26 35 45 29 0a  23 50 61 72 65 6e 74 20  |d (&5E).#Parent |
00031810  53 65 72 76 69 63 65 5f  49 6e 64 65 78 0a 3d 3e  |Service_Index.=>|
00031820  09 52 31 20 3d 09 26 35  45 20 28 73 65 72 76 69  |.R1 =.&5E (servi|
00031830  63 65 20 6e 75 6d 62 65  72 29 0a 0a 54 68 69 73  |ce number)..This|
00031840  20 73 65 72 76 69 63 65  20 69 73 20 69 73 73 75  | service is issu|
00031850  65 64 20 62 79 20 4d 65  73 73 61 67 65 54 72 61  |ed by MessageTra|
00031860  6e 73 20 74 6f 20 77 61  72 6e 20 74 68 61 74 20  |ns to warn that |
00031870  61 6c 6c 20 66 69 6c 65  73 20 68 61 76 65 20 62  |all files have b|
00031880  65 65 6e 20 63 6c 6f 73  65 64 2e 20 49 74 20 69  |een closed. It i|
00031890  73 20 2a 6f 6e 6c 79 2a  20 6e 65 65 64 65 64 20  |s *only* needed |
000318a0  62 79 20 61 70 70 6c 69  63 61 74 69 6f 6e 73 20  |by applications |
000318b0  77 68 69 63 68 20 75 73  65 20 64 69 72 65 63 74  |which use direct|
000318c0  20 70 6f 69 6e 74 65 72  73 20 69 6e 74 6f 20 6d  | pointers into m|
000318d0  65 73 73 61 67 65 20 66  69 6c 65 73 20 2d 20 74  |essage files - t|
000318e0  68 65 79 20 6d 75 73 74  20 72 65 2d 6f 70 65 6e  |hey must re-open|
000318f0  20 6d 65 73 73 61 67 65  20 66 69 6c 65 73 20 77  | message files w|
00031900  69 74 68 20 3c 4d 65 73  73 61 67 65 54 72 61 6e  |ith <MessageTran|
00031910  73 5f 4f 70 65 6e 46 69  6c 65 3e 20 61 6e 64 20  |s_OpenFile> and |
00031920  72 65 63 61 63 68 65 20  70 6f 69 6e 74 65 72 73  |recache pointers|
00031930  2e 20 49 66 20 61 70 70  6c 69 63 61 74 69 6f 6e  |. If application|
00031940  73 20 61 72 65 20 75 73  69 6e 67 20 64 69 72 65  |s are using dire|
00031950  63 74 20 70 6f 69 6e 74  65 72 73 20 28 7b 2f 7d  |ct pointers ({/}|
00031960  65 2e 67 2e 7b 2f 7d 20  69 6e 64 69 72 65 63 74  |e.g.{/} indirect|
00031970  65 64 20 69 63 6f 6e 73  29 20 77 69 74 68 20 3c  |ed icons) with <|
00031980  4d 65 73 73 61 67 65 54  72 61 6e 73 5f 4d 61 6b  |MessageTrans_Mak|
00031990  65 4d 65 6e 75 73 3e 20  74 68 65 6e 20 74 68 65  |eMenus> then the|
000319a0  79 20 77 69 6c 6c 20 6e  65 65 64 20 74 6f 20 63  |y will need to c|
000319b0  6c 6f 73 65 20 6d 65 6e  75 73 20 61 6e 64 20 72  |lose menus and r|
000319c0  65 2d 6d 61 6b 65 20 74  68 65 6d 20 69 66 20 74  |e-make them if t|
000319d0  68 69 73 20 73 65 72 76  69 63 65 20 69 73 20 69  |his service is i|
000319e0  73 73 75 65 64 2e 20 55  73 65 20 3c 57 69 6d 70  |ssued. Use <Wimp|
000319f0  5f 47 65 74 4d 65 6e 75  53 74 61 74 65 3d 3e 57  |_GetMenuState=>W|
00031a00  69 6d 70 3a 57 69 6d 70  5f 47 65 74 4d 65 6e 75  |imp:Wimp_GetMenu|
00031a10  53 74 61 74 65 3e 20 74  6f 20 63 68 65 63 6b 20  |State> to check |
00031a20  77 68 65 74 68 65 72 20  79 6f 75 72 20 6f 77 6e  |whether your own|
00031a30  20 61 70 70 6c 69 63 61  74 69 6f 6e 27 73 20 6d  | application's m|
00031a40  65 6e 75 20 69 73 20 6f  70 65 6e 20 2d 20 63 6c  |enu is open - cl|
00031a50  6f 73 65 20 69 74 20 69  66 20 69 74 20 69 73 2e  |ose it if it is.|
00031a60  0a 00 00 00 44 41 54 41  92 00 00 00 53 65 72 76  |....DATA....Serv|
00031a70  69 63 65 5f 50 72 6f 74  6f 63 6f 6c 44 79 69 6e  |ice_ProtocolDyin|
00031a80  67 20 28 26 38 33 29 0a  23 50 61 72 65 6e 74 20  |g (&83).#Parent |
00031a90  53 65 72 76 69 63 65 5f  49 6e 64 65 78 0a 3d 3e  |Service_Index.=>|
00031aa0  09 52 31 20 3d 09 26 38  33 20 28 73 65 72 76 69  |.R1 =.&83 (servi|
00031ab0  63 65 20 6e 75 6d 62 65  72 29 0a 0a 54 68 69 73  |ce number)..This|
00031ac0  20 73 65 72 76 69 63 65  20 69 73 20 70 61 72 74  | service is part|
00031ad0  20 6f 66 20 74 68 65 20  41 55 4e 20 44 72 69 76  | of the AUN Driv|
00031ae0  65 72 20 43 6f 6e 74 72  6f 6c 20 49 6e 74 65 72  |er Control Inter|
00031af0  66 61 63 65 2e 0a 00 00  44 41 54 41 96 00 00 00  |face....DATA....|
00031b00  53 65 72 76 69 63 65 5f  46 69 6e 64 4e 65 74 77  |Service_FindNetw|
00031b10  6f 72 6b 44 72 69 76 65  72 20 28 26 38 34 29 0a  |orkDriver (&84).|
00031b20  23 50 61 72 65 6e 74 20  53 65 72 76 69 63 65 5f  |#Parent Service_|
00031b30  49 6e 64 65 78 0a 3d 3e  09 52 31 20 3d 09 26 38  |Index.=>.R1 =.&8|
00031b40  34 20 28 73 65 72 76 69  63 65 20 6e 75 6d 62 65  |4 (service numbe|
00031b50  72 29 0a 0a 54 68 69 73  20 73 65 72 76 69 63 65  |r)..This service|
00031b60  20 69 73 20 70 61 72 74  20 6f 66 20 74 68 65 20  | is part of the |
00031b70  41 55 4e 20 44 72 69 76  65 72 20 43 6f 6e 74 72  |AUN Driver Contr|
00031b80  6f 6c 20 49 6e 74 65 72  66 61 63 65 2e 0a 00 00  |ol Interface....|
00031b90  44 41 54 41 f5 02 00 00  53 65 72 76 69 63 65 5f  |DATA....Service_|
00031ba0  50 6f 72 74 61 62 6c 65  20 28 26 38 41 29 0a 23  |Portable (&8A).#|
00031bb0  50 61 72 65 6e 74 20 53  65 72 76 69 63 65 5f 69  |Parent Service_i|
00031bc0  6e 64 65 78 0a 3d 3e 09  52 31 20 3d 09 26 38 41  |ndex.=>.R1 =.&8A|
00031bd0  20 28 73 65 72 76 69 63  65 20 6e 75 6d 62 65 72  | (service number|
00031be0  29 0a 09 52 32 20 3d 09  30 09 70 6f 77 65 72 20  |)..R2 =.0.power |
00031bf0  75 70 0a 09 20 09 31 09  70 6f 77 65 72 20 64 6f  |up.. .1.power do|
00031c00  77 6e 0a 09 52 33 20 3d  09 3c 62 69 74 6d 61 73  |wn..R3 =.<bitmas|
00031c10  6b 3d 3e 2e 62 69 74 6d  61 73 6b 3e 20 6f 66 20  |k=>.bitmask> of |
00031c20  70 6f 72 74 73 20 77 68  69 63 68 20 77 69 6c 6c  |ports which will|
00031c30  20 62 65 20 70 6f 77 65  72 65 64 20 64 6f 77 6e  | be powered down|
00031c40  2f 68 61 76 65 20 62 65  65 6e 20 70 6f 77 65 72  |/have been power|
00031c50  65 64 20 75 70 0a 3c 3d  09 52 31 20 3d 09 26 38  |ed up.<=.R1 =.&8|
00031c60  41 20 28 64 6f 6e 27 74  20 63 6c 61 69 6d 2c 20  |A (don't claim, |
00031c70  75 6e 6c 65 73 73 20 52  33 20 3d 20 30 29 0a 09  |unless R3 = 0)..|
00031c80  52 32 20 70 72 65 73 65  72 76 65 64 0a 09 52 33  |R2 preserved..R3|
00031c90  20 3d 09 3c 62 69 74 6d  61 73 6b 3d 3e 2e 62 69  | =.<bitmask=>.bi|
00031ca0  74 6d 61 73 6b 3e 20 2d  20 73 65 74 20 62 69 74  |tmask> - set bit|
00031cb0  73 20 6d 65 61 6e 20 6e  6f 20 6f 62 6a 65 63 74  |s mean no object|
00031cc0  69 6f 6e 20 74 6f 20 70  6f 77 65 72 20 75 70 2f  |ion to power up/|
00031cd0  64 6f 77 6e 0a 0a 54 68  69 73 20 73 65 72 76 69  |down..This servi|
00031ce0  63 65 20 69 73 20 69 73  73 75 65 64 20 62 65 66  |ce is issued bef|
00031cf0  6f 72 65 20 70 6f 77 65  72 69 6e 67 20 64 6f 77  |ore powering dow|
00031d00  6e 2c 20 6f 72 20 61 66  74 65 72 20 70 6f 77 65  |n, or after powe|
00031d10  72 69 6e 67 20 75 70 20  63 65 72 74 61 69 6e 20  |ring up certain |
00031d20  68 61 72 64 77 61 72 65  2e 20 49 66 20 61 20 6d  |hardware. If a m|
00031d30  6f 64 75 6c 65 20 77 69  73 68 65 73 20 74 6f 20  |odule wishes to |
00031d40  70 72 65 76 65 6e 74 20  70 6f 77 65 72 20 64 6f  |prevent power do|
00031d50  77 6e 20 69 74 20 73 68  6f 75 6c 64 20 63 6c 65  |wn it should cle|
00031d60  61 72 20 74 68 65 20 61  70 70 72 6f 70 72 69 61  |ar the appropria|
00031d70  74 65 20 62 69 74 73 20  66 6f 72 20 74 68 61 74  |te bits for that|
00031d80  20 68 61 72 64 77 61 72  65 2e 20 49 66 20 74 68  | hardware. If th|
00031d90  69 73 20 72 65 73 75 6c  74 73 20 69 6e 20 52 33  |is results in R3|
00031da0  20 3d 20 30 2c 20 74 68  65 20 73 65 72 76 69 63  | = 0, the servic|
00031db0  65 20 73 68 6f 75 6c 64  20 62 65 20 63 6c 61 69  |e should be clai|
00031dc0  6d 65 64 20 74 6f 20 70  72 65 76 65 6e 74 20 69  |med to prevent i|
00031dd0  74 20 62 65 69 6e 67 20  6e 65 65 64 6c 65 73 73  |t being needless|
00031de0  6c 79 20 70 61 73 73 65  64 20 72 6f 75 6e 64 20  |ly passed round |
00031df0  72 65 6d 61 69 6e 69 6e  67 20 6d 6f 64 75 6c 65  |remaining module|
00031e00  73 2e 0a 23 53 75 62 50  61 67 65 20 62 69 74 6d  |s..#SubPage bitm|
00031e10  61 73 6b 0a 42 69 74 6d  61 73 6b 20 6f 66 20 70  |ask.Bitmask of p|
00031e20  6f 72 74 73 0a 42 69 74  09 48 61 72 64 77 61 72  |orts.Bit.Hardwar|
00031e30  65 0a 23 4c 69 6e 65 0a  30 09 45 63 6f 6e 65 74  |e.#Line.0.Econet|
00031e40  0a 33 09 53 65 72 69 61  6c 20 6f 73 63 69 6c 6c  |.3.Serial oscill|
00031e50  61 74 6f 72 20 61 6e 64  20 62 75 66 66 65 72 0a  |ator and buffer.|
00031e60  31 34 09 46 6c 6f 70 70  79 20 44 69 73 63 20 43  |14.Floppy Disc C|
00031e70  6f 6e 74 72 6f 6c 6c 65  72 20 6f 73 63 69 6c 6c  |ontroller oscill|
00031e80  61 74 6f 72 0a 00 00 00  44 41 54 41 98 00 00 00  |ator....DATA....|
00031e90  53 65 72 76 69 63 65 5f  4e 65 74 77 6f 72 6b 44  |Service_NetworkD|
00031ea0  72 69 76 65 72 53 74 61  74 75 73 20 28 26 38 42  |riverStatus (&8B|
00031eb0  29 0a 23 50 61 72 65 6e  74 20 53 65 72 76 69 63  |).#Parent Servic|
00031ec0  65 5f 49 6e 64 65 78 0a  3d 3e 09 52 31 20 3d 09  |e_Index.=>.R1 =.|
00031ed0  26 38 42 20 28 73 65 72  76 69 63 65 20 6e 75 6d  |&8B (service num|
00031ee0  62 65 72 29 0a 0a 54 68  69 73 20 73 65 72 76 69  |ber)..This servi|
00031ef0  63 65 20 69 73 20 70 61  72 74 20 6f 66 20 74 68  |ce is part of th|
00031f00  65 20 41 55 4e 20 44 72  69 76 65 72 20 43 6f 6e  |e AUN Driver Con|
00031f10  74 72 6f 6c 20 49 6e 74  65 72 66 61 63 65 2e 0a  |trol Interface..|
00031f20  44 41 54 41 b8 00 00 00  53 65 72 76 69 63 65 5f  |DATA....Service_|
00031f30  43 61 6c 69 62 72 61 74  69 6f 6e 43 68 61 6e 67  |CalibrationChang|
00031f40  65 64 20 28 26 35 42 29  0a 23 50 61 72 65 6e 74  |ed (&5B).#Parent|
00031f50  20 53 65 72 76 69 63 65  5f 49 6e 64 65 78 0a 3d  | Service_Index.=|
00031f60  3e 09 52 31 20 3d 09 26  35 41 20 28 73 65 72 76  |>.R1 =.&5A (serv|
00031f70  69 63 65 20 6e 75 6d 62  65 72 29 0a 0a 54 68 69  |ice number)..Thi|
00031f80  73 20 73 65 72 76 69 63  65 20 69 73 20 69 73 73  |s service is iss|
00031f90  75 65 64 20 62 79 20 43  6f 6c 6f 75 72 54 72 61  |ued by ColourTra|
00031fa0  6e 73 20 77 68 65 6e 20  74 68 65 20 3c 43 6f 6c  |ns when the <Col|
00031fb0  6f 75 72 54 72 61 6e 73  5f 53 65 74 43 61 6c 69  |ourTrans_SetCali|
00031fc0  62 72 61 74 69 6f 6e 3e  20 53 57 49 20 69 73 20  |bration> SWI is |
00031fd0  63 61 6c 6c 65 64 2e 0a  44 41 54 41 da 00 00 00  |called..DATA....|
00031fe0  53 65 72 76 69 63 65 5f  4e 65 74 46 53 20 28 26  |Service_NetFS (&|
00031ff0  35 35 29 0a 23 50 61 72  65 6e 74 20 53 65 72 76  |55).#Parent Serv|
00032000  69 63 65 5f 49 6e 64 65  78 0a 3d 3e 09 52 31 20  |ice_Index.=>.R1 |
00032010  3d 09 26 35 35 20 28 73  65 72 76 69 63 65 20 6e  |=.&55 (service n|
00032020  75 6d 62 65 72 29 0a 0a  54 68 69 73 20 73 65 72  |umber)..This ser|
00032030  76 69 63 65 20 69 73 20  69 73 73 75 65 64 20 62  |vice is issued b|
00032040  79 20 4e 65 74 46 53 20  74 6f 20 69 6e 66 6f 72  |y NetFS to infor|
00032050  6d 20 4e 65 74 46 69 6c  65 72 20 74 68 61 74 20  |m NetFiler that |
00032060  74 68 69 6e 67 73 20 6d  61 79 20 68 61 76 65 20  |things may have |
00032070  63 68 61 6e 67 65 64 20  28 7b 2f 7d 69 2e 65 2e  |changed ({/}i.e.|
00032080  7b 2f 7d 20 2a 4c 6f 67  6f 6e 2c 20 2a 42 79 65  |{/} *Logon, *Bye|
00032090  20 6f 72 20 2a 53 64 69  73 63 2f 2a 4d 6f 75 6e  | or *Sdisc/*Moun|
000320a0  74 20 68 61 73 20 6f 63  63 75 72 72 65 64 29 2e  |t has occurred).|
000320b0  0a 0a 00 00 44 41 54 41  15 01 00 00 53 65 72 76  |....DATA....Serv|
000320c0  69 63 65 5f 52 65 73 6f  75 72 63 65 46 53 53 74  |ice_ResourceFSSt|
000320d0  61 72 74 65 64 20 28 26  35 39 29 0a 23 50 61 72  |arted (&59).#Par|
000320e0  65 6e 74 20 53 65 72 76  69 63 65 5f 49 6e 64 65  |ent Service_Inde|
000320f0  78 0a 3d 3e 09 52 31 20  3d 09 26 35 39 20 28 73  |x.=>.R1 =.&59 (s|
00032100  65 72 76 69 63 65 20 6e  75 6d 62 65 72 29 0a 3c  |ervice number).<|
00032110  3d 09 52 31 20 70 72 65  73 65 72 76 65 64 20 28  |=.R1 preserved (|
00032120  64 6f 20 6e 6f 74 20 63  6c 61 69 6d 29 0a 0a 54  |do not claim)..T|
00032130  68 69 73 20 73 65 72 76  69 63 65 20 69 73 20 69  |his service is i|
00032140  73 73 75 65 64 20 77 68  65 6e 65 76 65 72 20 66  |ssued whenever f|
00032150  69 6c 65 73 20 61 72 65  20 61 64 64 65 64 20 6f  |iles are added o|
00032160  72 20 72 65 6d 6f 76 65  64 20 66 72 6f 6d 20 52  |r removed from R|
00032170  65 73 6f 75 72 63 65 46  53 2e 20 49 74 20 61 6c  |esourceFS. It al|
00032180  6c 6f 77 73 20 70 72 6f  67 72 61 6d 73 20 75 73  |lows programs us|
00032190  69 6e 67 20 66 69 6c 65  73 20 69 6e 20 52 65 73  |ing files in Res|
000321a0  6f 75 72 63 65 46 53 20  74 6f 20 63 68 65 63 6b  |ourceFS to check|
000321b0  20 69 66 20 74 68 69 6e  67 73 20 68 61 76 65 20  | if things have |
000321c0  63 68 61 6e 67 65 64 2e  0a 00 00 00 44 41 54 41  |changed.....DATA|
000321d0  d0 00 00 00 53 65 72 76  69 63 65 5f 52 65 73 6f  |....Service_Reso|
000321e0  75 72 63 65 46 53 44 79  69 6e 67 20 28 26 35 41  |urceFSDying (&5A|
000321f0  29 0a 23 50 61 72 65 6e  74 20 53 65 72 76 69 63  |).#Parent Servic|
00032200  65 5f 49 6e 64 65 78 0a  3d 3e 09 52 31 20 3d 09  |e_Index.=>.R1 =.|
00032210  26 35 41 20 28 73 65 72  76 69 63 65 20 6e 75 6d  |&5A (service num|
00032220  62 65 72 29 0a 3c 3d 09  52 31 20 70 72 65 73 65  |ber).<=.R1 prese|
00032230  72 76 65 64 20 28 64 6f  20 6e 6f 74 20 63 6c 61  |rved (do not cla|
00032240  69 6d 29 0a 0a 54 68 69  73 20 73 65 72 76 69 63  |im)..This servic|
00032250  65 20 69 73 20 69 73 73  75 65 64 20 62 79 20 52  |e is issued by R|
00032260  65 73 6f 75 72 63 65 46  53 20 6a 75 73 74 20 62  |esourceFS just b|
00032270  65 66 6f 72 65 20 69 74  20 72 65 6d 6f 76 65 73  |efore it removes|
00032280  20 69 74 73 65 6c 66 20  61 73 20 61 20 66 69 6c  | itself as a fil|
00032290  69 6e 67 20 73 79 73 74  65 6d 2e 0a 44 41 54 41  |ing system..DATA|
000322a0  89 00 00 00 53 65 72 76  69 63 65 5f 4e 65 74 46  |....Service_NetF|
000322b0  53 44 79 69 6e 67 20 28  26 35 46 29 0a 23 50 61  |SDying (&5F).#Pa|
000322c0  72 65 6e 74 20 53 65 72  76 69 63 65 5f 49 6e 64  |rent Service_Ind|
000322d0  65 78 0a 3d 3e 09 52 31  20 3d 09 26 35 46 20 28  |ex.=>.R1 =.&5F (|
000322e0  73 65 72 76 69 63 65 20  6e 75 6d 62 65 72 29 0a  |service number).|
000322f0  0a 54 68 69 73 20 73 65  72 76 69 63 65 20 69 73  |.This service is|
00032300  20 69 73 73 75 65 64 20  77 68 65 6e 20 4e 65 74  | issued when Net|
00032310  46 53 20 69 73 20 61 62  6f 75 74 20 74 6f 20 71  |FS is about to q|
00032320  75 69 74 2e 0a 00 00 00  44 41 54 41 d0 03 00 00  |uit.....DATA....|
00032330  53 65 72 76 69 63 65 5f  52 65 73 6f 75 72 63 65  |Service_Resource|
00032340  46 53 53 74 61 72 74 69  6e 67 20 28 26 36 30 29  |FSStarting (&60)|
00032350  0a 23 50 61 72 65 6e 74  20 53 65 72 76 69 63 65  |.#Parent Service|
00032360  5f 49 6e 64 65 78 0a 3d  3e 09 52 31 20 3d 09 26  |_Index.=>.R1 =.&|
00032370  36 30 20 28 73 65 72 76  69 63 65 20 6e 75 6d 62  |60 (service numb|
00032380  65 72 29 0a 09 52 32 20  3d 09 61 64 64 72 65 73  |er)..R2 =.addres|
00032390  73 20 74 6f 20 63 61 6c  6c 0a 09 52 33 20 3d 09  |s to call..R3 =.|
000323a0  77 6f 72 6b 73 70 61 63  65 20 66 6f 72 20 52 65  |workspace for Re|
000323b0  73 6f 75 72 63 65 46 53  0a 3c 3d 09 52 31 20 2d  |sourceFS.<=.R1 -|
000323c0  20 52 33 20 70 72 65 73  65 72 76 65 64 20 28 64  | R3 preserved (d|
000323d0  6f 20 6e 6f 74 20 63 6c  61 69 6d 29 0a 0a 54 68  |o not claim)..Th|
000323e0  69 73 20 73 65 72 76 69  63 65 20 69 73 20 69 73  |is service is is|
000323f0  73 75 65 64 20 62 79 20  52 65 73 6f 75 72 63 65  |sued by Resource|
00032400  46 53 20 77 68 65 6e 20  69 74 20 28 72 65 29 69  |FS when it (re)i|
00032410  6e 69 74 69 61 6c 69 73  65 73 2e 20 41 73 20 69  |nitialises. As i|
00032420  74 20 69 73 20 6e 6f 74  20 6c 69 6e 6b 65 64 20  |t is not linked |
00032430  69 6e 74 6f 20 74 68 65  20 6d 6f 64 75 6c 65 20  |into the module |
00032440  63 68 61 69 6e 20 61 74  20 74 68 69 73 20 70 6f  |chain at this po|
00032450  69 6e 74 2c 20 69 74 73  20 53 57 49 73 20 63 61  |int, its SWIs ca|
00032460  6e 6e 6f 74 20 62 65 20  63 61 6c 6c 65 64 2c 20  |nnot be called, |
00032470  73 6f 20 70 72 6f 67 72  61 6d 73 20 73 68 6f 75  |so programs shou|
00032480  6c 64 20 63 61 6c 6c 20  74 68 65 20 63 6f 64 65  |ld call the code|
00032490  20 61 64 64 72 65 73 73  65 64 20 62 79 20 52 32  | addressed by R2|
000324a0  20 64 69 72 65 63 74 6c  79 3a 0a 0a 23 77 72 61  | directly:..#wra|
000324b0  70 20 6f 66 66 0a 23 66  43 6f 64 65 0a 53 54 4d  |p off.#fCode.STM|
000324c0  46 44 20 20 20 73 70 21  2c 20 5c 7b 72 30 2c 20  |FD   sp!, \{r0, |
000324d0  6c 72 7d 0a 41 44 52 20  20 20 20 20 72 30 2c 20  |lr}.ADR     r0, |
000324e0  66 69 6c 65 73 20 20 20  20 20 20 20 3b 20 70 6f  |files       ; po|
000324f0  69 6e 74 65 72 20 74 6f  20 3c 72 65 73 6f 75 72  |inter to <resour|
00032500  63 65 20 66 69 6c 65 20  62 6c 6f 63 6b 3d 3e 52  |ce file block=>R|
00032510  65 73 6f 75 72 63 65 46  53 5f 66 69 6c 65 62 6c  |esourceFS_filebl|
00032520  6f 63 6b 3e 0a 4d 4f 56  20 20 20 20 20 6c 72 2c  |ock>.MOV     lr,|
00032530  20 70 63 20 20 20 20 20  20 20 20 20 20 3b 20 65  | pc          ; e|
00032540  6d 75 6c 61 74 65 20 42  4c 0a 4d 4f 56 20 20 20  |mulate BL.MOV   |
00032550  20 20 70 63 2c 20 72 32  20 20 20 20 20 20 20 20  |  pc, r2        |
00032560  20 20 3b 20 63 61 6c 6c  20 52 65 73 6f 75 72 63  |  ; call Resourc|
00032570  65 46 53 20 63 6f 64 65  0a 4c 44 4d 46 44 20 20  |eFS code.LDMFD  |
00032580  20 73 70 21 2c 20 5c 7b  72 30 2c 20 70 63 7d 5e  | sp!, \{r0, pc}^|
00032590  0a 23 77 72 61 70 0a 23  66 0a 0a 55 6e 6c 69 6b  |.#wrap.#f..Unlik|
000325a0  65 20 3c 52 65 73 6f 75  72 63 65 46 53 5f 52 65  |e <ResourceFS_Re|
000325b0  67 69 73 74 65 72 46 69  6c 65 73 3e 2c 20 74 68  |gisterFiles>, th|
000325c0  65 20 72 6f 75 74 69 6e  65 20 61 64 64 72 65 73  |e routine addres|
000325d0  73 65 64 20 62 79 20 52  32 20 64 6f 65 73 20 6e  |sed by R2 does n|
000325e0  6f 74 20 69 73 73 75 65  20 3c 53 65 72 76 69 63  |ot issue <Servic|
000325f0  65 5f 52 65 73 6f 75 72  63 65 46 53 53 74 61 72  |e_ResourceFSStar|
00032600  74 65 64 3d 3e 73 65 72  76 69 63 65 5f 35 39 3e  |ted=>service_59>|
00032610  20 66 6f 72 20 65 61 63  68 20 62 6c 6f 63 6b 20  | for each block |
00032620  72 65 67 69 73 74 65 72  65 64 2e 20 49 6e 73 74  |registered. Inst|
00032630  65 61 64 20 69 74 20 69  73 73 75 65 73 20 6f 6e  |ead it issues on|
00032640  65 20 3c 53 65 72 76 69  63 65 5f 52 65 73 6f 75  |e <Service_Resou|
00032650  72 63 65 46 53 53 74 61  72 74 65 64 3d 3e 73 65  |rceFSStarted=>se|
00032660  72 76 69 63 65 5f 35 39  3e 20 61 66 74 65 72 20  |rvice_59> after |
00032670  61 6c 6c 20 6d 6f 64 75  6c 65 73 20 68 61 76 65  |all modules have|
00032680  20 72 65 63 69 65 76 65  64 20 74 68 69 73 20 73  | recieved this s|
00032690  65 72 76 69 63 65 20 63  61 6c 6c 2e 0a 23 20 79  |ervice call..# y|
000326a0  65 61 68 2e 20 53 74 75  64 6c 65 79 43 61 70 73  |eah. StudleyCaps|
000326b0  20 52 75 6c 65 4f 4b 0a  23 20 45 78 61 63 74 6c  | RuleOK.# Exactl|
000326c0  79 20 68 6f 77 20 6d 61  6e 79 20 68 65 64 67 65  |y how many hedge|
000326d0  68 6f 67 73 20 68 61 76  65 20 79 6f 75 20 62 65  |hogs have you be|
000326e0  65 6e 20 73 6d 6f 6b 69  6e 67 20 74 6f 64 61 79  |en smoking today|
000326f0  2c 20 73 69 72 20 3f 0a  44 41 54 41 0f 02 00 00  |, sir ?.DATA....|
00032700  53 65 72 76 69 63 65 5f  55 4b 43 6f 6d 6d 61 6e  |Service_UKComman|
00032710  64 20 28 26 30 34 29 0a  23 50 61 72 65 6e 74 20  |d (&04).#Parent |
00032720  53 65 72 76 69 63 65 5f  69 6e 64 65 78 0a 3d 3e  |Service_index.=>|
00032730  09 52 30 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R0 =.pointer to|
00032740  20 63 6f 6d 6d 61 6e 64  0a 09 52 31 20 3d 09 26  | command..R1 =.&|
00032750  34 20 28 73 65 72 76 69  63 65 20 6e 75 6d 62 65  |4 (service numbe|
00032760  72 29 0a 3c 3d 09 52 30  20 26 20 52 31 20 70 72  |r).<=.R0 & R1 pr|
00032770  65 73 65 72 76 65 64 20  74 6f 20 70 61 73 73 20  |eserved to pass |
00032780  6f 6e 20 65 6c 73 65 0a  09 52 30 20 3d 09 30 20  |on else..R0 =.0 |
00032790  69 66 20 63 6f 6d 6d 61  6e 64 20 73 75 63 63 65  |if command succe|
000327a0  73 73 66 75 6c 2c 20 65  6c 73 65 20 70 6f 69 6e  |ssful, else poin|
000327b0  74 65 72 20 74 6f 20 65  72 72 6f 72 0a 09 52 31  |ter to error..R1|
000327c0  20 3d 09 30 20 28 74 6f  20 63 6c 61 69 6d 20 73  | =.0 (to claim s|
000327d0  65 72 76 69 63 65 29 0a  0a 54 68 69 73 20 73 65  |ervice)..This se|
000327e0  72 76 69 63 65 20 69 73  20 69 73 73 75 65 64 20  |rvice is issued |
000327f0  77 68 65 6e 20 61 20 63  6f 6d 6d 61 6e 64 20 69  |when a command i|
00032800  73 20 75 6e 6b 6e 6f 77  6e 2c 20 62 65 66 6f 72  |s unknown, befor|
00032810  65 20 74 68 65 20 66 69  6c 69 6e 67 20 73 79 73  |e the filing sys|
00032820  74 65 6d 20 75 73 20 63  61 6c 6c 65 64 20 74 6f  |tem us called to|
00032830  20 61 74 74 65 6d 70 74  20 74 6f 20 3c 72 75 6e  | attempt to <run|
00032840  3d 3e 4f 53 5f 46 53 43  6f 6e 74 72 6f 6c 34 3e  |=>OS_FSControl4>|
00032850  20 74 68 65 20 63 6f 6d  6d 61 6e 64 2e 20 4e 65  | the command. Ne|
00032860  74 46 53 20 75 73 65 73  20 74 68 69 73 20 73 65  |tFS uses this se|
00032870  72 76 69 63 65 20 74 6f  20 69 6d 70 6c 65 6d 65  |rvice to impleme|
00032880  6e 74 20 66 69 6c 65 20  73 65 72 76 65 72 20 63  |nt file server c|
00032890  6f 6d 6d 61 6e 64 73 2e  0a 0a 55 73 65 20 74 68  |ommands...Use th|
000328a0  65 20 3c 63 6f 6d 6d 61  6e 64 20 74 61 62 6c 65  |e <command table|
000328b0  3d 3e 4f 53 5f 4d 6f 64  75 6c 65 5f 43 6f 6d 54  |=>OS_Module_ComT|
000328c0  61 62 6c 65 3e 20 69 6e  20 61 20 52 65 6c 6f 63  |able> in a Reloc|
000328d0  61 74 61 62 6c 65 20 4d  6f 64 75 6c 65 20 69 66  |atable Module if|
000328e0  20 70 6f 73 73 69 62 6c  65 20 74 6f 20 69 6d 70  | possible to imp|
000328f0  6c 65 6d 65 6e 74 20 6e  65 77 20 2a 20 43 6f 6d  |lement new * Com|
00032900  6d 61 6e 64 73 2e 0a 00  44 41 54 41 fb 00 00 00  |mands...DATA....|
00032910  53 65 72 76 69 63 65 5f  45 72 72 6f 72 20 28 26  |Service_Error (&|
00032920  30 36 29 0a 23 50 61 72  65 6e 74 20 53 65 72 76  |06).#Parent Serv|
00032930  69 63 65 5f 69 6e 64 65  78 0a 3d 3e 09 52 30 20  |ice_index.=>.R0 |
00032940  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 3c 65 72  |=.pointer to <er|
00032950  72 6f 72 20 62 6c 6f 63  6b 3d 3e 73 77 69 5f 65  |ror block=>swi_e|
00032960  72 72 6f 72 62 6c 6f 63  6b 3e 0a 09 52 31 20 3d  |rrorblock>..R1 =|
00032970  09 26 36 20 28 73 65 72  76 69 63 65 20 6e 75 6d  |.&6 (service num|
00032980  62 65 72 29 0a 3c 3d 09  52 30 20 26 20 52 31 20  |ber).<=.R0 & R1 |
00032990  70 72 65 73 65 72 76 65  64 0a 0a 54 68 69 73 20  |preserved..This |
000329a0  73 65 72 76 69 63 65 20  69 73 20 69 73 73 75 65  |service is issue|
000329b0  64 20 61 66 74 65 72 20  61 6e 20 65 72 72 6f 72  |d after an error|
000329c0  2c 20 62 75 74 20 62 65  66 6f 72 65 20 74 68 65  |, but before the|
000329d0  20 65 72 72 6f 72 20 68  61 6e 64 6c 65 72 20 69  | error handler i|
000329e0  73 20 63 61 6c 6c 65 64  2e 20 59 6f 75 20 73 68  |s called. You sh|
000329f0  6f 75 6c 64 20 6e 6f 74  20 63 6c 61 69 6d 20 69  |ould not claim i|
00032a00  74 2e 0a 00 44 41 54 41  a6 01 00 00 53 65 72 76  |t...DATA....Serv|
00032a10  69 63 65 5f 55 4b 42 79  74 65 20 28 26 37 29 0a  |ice_UKByte (&7).|
00032a20  23 50 61 72 65 6e 74 20  53 65 72 76 69 63 65 5f  |#Parent Service_|
00032a30  49 6e 64 65 78 0a 3d 3e  09 52 30 20 3d 09 70 6f  |Index.=>.R0 =.po|
00032a40  69 6e 74 65 72 20 74 6f  20 3c 65 72 72 6f 72 20  |inter to <error |
00032a50  62 6c 6f 63 6b 3d 3e 73  77 69 5f 65 72 72 6f 72  |block=>swi_error|
00032a60  62 6c 6f 63 6b 3e 0a 09  52 31 20 3d 09 26 37 20  |block>..R1 =.&7 |
00032a70  28 73 65 72 76 69 63 65  20 6e 75 6d 62 65 72 29  |(service number)|
00032a80  0a 09 52 32 20 3d 09 3c  4f 53 5f 42 79 74 65 3e  |..R2 =.<OS_Byte>|
00032a90  20 6e 75 6d 62 65 72 0a  09 52 33 2c 52 34 20 3d  | number..R3,R4 =|
00032aa0  09 52 31 2c 52 32 20 70  61 73 73 65 64 20 74 6f  |.R1,R2 passed to|
00032ab0  20 4f 53 5f 42 79 74 65  0a 3c 3d 09 70 72 65 73  | OS_Byte.<=.pres|
00032ac0  65 72 76 65 20 61 6c 6c  20 72 65 67 69 73 65 72  |erve all regiser|
00032ad0  73 20 74 6f 20 70 61 73  73 20 6f 6e 2c 20 65 6c  |s to pass on, el|
00032ae0  73 65 0a 09 52 31 20 3d  09 30 20 28 63 6c 61 69  |se..R1 =.0 (clai|
00032af0  6d 20 73 65 72 76 69 63  65 29 0a 09 52 33 2c 52  |m service)..R3,R|
00032b00  34 20 3d 09 52 31 2c 52  32 20 74 6f 20 72 65 74  |4 =.R1,R2 to ret|
00032b10  75 72 6e 20 74 6f 20 63  61 6c 6c 65 72 0a 0a 54  |urn to caller..T|
00032b20  68 69 73 20 73 65 72 76  69 63 65 20 69 73 20 69  |his service is i|
00032b30  73 73 75 65 64 20 77 68  65 6e 20 61 6e 20 75 6e  |ssued when an un|
00032b40  6b 6e 6f 77 6e 20 4f 53  5f 42 79 74 65 20 63 6f  |known OS_Byte co|
00032b50  64 65 20 69 73 20 67 69  76 65 6e 2e 20 59 6f 75  |de is given. You|
00032b60  20 73 68 6f 75 6c 64 20  75 73 65 20 3c 42 79 74  | should use <Byt|
00032b70  65 56 3d 3e 56 65 63 74  6f 72 5f 69 6e 64 65 78  |eV=>Vector_index|
00032b80  3e 20 69 6e 20 70 72 65  66 65 72 65 6e 63 65 20  |> in preference |
00032b90  74 6f 20 74 72 61 70 70  69 6e 67 20 74 68 69 73  |to trapping this|
00032ba0  20 73 65 72 76 69 63 65  2e 0a 00 00 44 41 54 41  | service....DATA|
00032bb0  1d 01 00 00 53 65 72 76  69 63 65 5f 48 65 6c 70  |....Service_Help|
00032bc0  20 28 26 39 29 0a 23 50  61 72 65 6e 74 20 53 65  | (&9).#Parent Se|
00032bd0  72 76 69 63 65 5f 69 6e  64 65 78 0a 3d 3e 09 52  |rvice_index.=>.R|
00032be0  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 63  |0 =.pointer to c|
00032bf0  6f 6d 6d 61 6e 64 20 6c  69 6e 65 0a 09 52 31 20  |ommand line..R1 |
00032c00  3d 09 26 39 20 28 73 65  72 76 69 63 65 20 6e 75  |=.&9 (service nu|
00032c10  6d 62 65 72 29 0a 3c 3d  09 52 31 20 3d 09 30 20  |mber).<=.R1 =.0 |
00032c20  74 6f 20 63 6c 61 69 6d  2c 20 70 72 65 73 65 72  |to claim, preser|
00032c30  76 65 64 20 6f 74 68 65  72 77 69 73 65 0a 0a 54  |ved otherwise..T|
00032c40  68 69 73 20 73 65 72 76  69 63 65 20 69 73 20 69  |his service is i|
00032c50  73 73 75 65 64 20 77 68  65 6e 20 61 20 2a 48 65  |ssued when a *He|
00032c60  6c 70 20 63 6f 6d 6d 61  6e 64 20 69 73 20 69 73  |lp command is is|
00032c70  73 75 65 64 2e 20 59 6f  75 20 73 68 6f 75 6c 64  |sued. You should|
00032c80  20 6e 6f 74 20 63 6c 61  69 6d 20 74 68 69 73 20  | not claim this |
00032c90  75 6e 6c 65 73 73 20 79  6f 75 20 77 69 73 68 20  |unless you wish |
00032ca0  74 6f 20 61 75 67 6d 65  6e 74 20 6f 72 20 72 65  |to augment or re|
00032cb0  70 6c 61 63 65 20 74 68  65 20 2a 48 65 6c 70 20  |place the *Help |
00032cc0  63 6f 6d 6d 61 6e 64 2e  0a 00 00 00 44 41 54 41  |command.....DATA|
00032cd0  3d 01 00 00 53 65 72 76  69 63 65 5f 55 4b 57 6f  |=...Service_UKWo|
00032ce0  72 64 20 28 26 38 29 0a  23 50 61 72 65 6e 74 20  |rd (&8).#Parent |
00032cf0  53 65 72 76 69 63 65 5f  69 6e 64 65 78 0a 3d 3e  |Service_index.=>|
00032d00  09 52 31 20 3d 09 26 38  20 28 73 65 72 76 69 63  |.R1 =.&8 (servic|
00032d10  65 20 6e 75 6d 62 65 72  29 0a 09 52 32 20 3d 09  |e number)..R2 =.|
00032d20  3c 4f 53 5f 57 6f 72 64  3e 20 6e 75 6d 62 65 72  |<OS_Word> number|
00032d30  0a 09 52 33 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R3 =.pointer t|
00032d40  6f 20 4f 53 5f 57 6f 72  64 20 64 61 74 61 20 62  |o OS_Word data b|
00032d50  6c 6f 63 6b 0a 3c 3d 09  52 31 20 3d 09 30 20 74  |lock.<=.R1 =.0 t|
00032d60  6f 20 63 6c 61 69 6d 2c  20 70 72 65 73 65 72 76  |o claim, preserv|
00032d70  65 64 20 6f 74 68 65 72  77 69 73 65 0a 0a 54 68  |ed otherwise..Th|
00032d80  69 73 20 73 65 72 76 69  63 65 20 69 73 20 69 73  |is service is is|
00032d90  73 75 65 64 20 77 68 65  6e 20 61 6e 20 75 6e 6b  |sued when an unk|
00032da0  6e 6f 77 6e 20 4f 53 5f  57 6f 72 64 20 63 6f 64  |nown OS_Word cod|
00032db0  65 20 69 73 20 67 69 76  65 6e 2e 20 59 6f 75 20  |e is given. You |
00032dc0  73 68 6f 75 6c 64 20 75  73 65 20 3c 57 6f 72 64  |should use <Word|
00032dd0  56 3d 3e 56 65 63 74 6f  72 5f 69 6e 64 65 78 3e  |V=>Vector_index>|
00032de0  20 69 6e 20 70 72 65 66  65 72 65 6e 63 65 20 74  | in preference t|
00032df0  6f 20 74 72 61 70 70 69  6e 67 20 74 68 69 73 20  |o trapping this |
00032e00  73 65 72 76 69 63 65 2e  0a 00 00 00 44 41 54 41  |service.....DATA|
00032e10  39 01 00 00 53 65 72 76  69 63 65 5f 52 65 6c 65  |9...Service_Rele|
00032e20  61 73 65 46 49 51 20 28  26 42 29 0a 23 50 61 72  |aseFIQ (&B).#Par|
00032e30  65 6e 74 20 53 65 72 76  69 63 65 5f 69 6e 64 65  |ent Service_inde|
00032e40  78 0a 3d 3e 09 52 31 20  3d 09 26 42 20 28 73 65  |x.=>.R1 =.&B (se|
00032e50  72 76 69 63 65 20 6e 75  6d 62 65 72 29 0a 3c 3d  |rvice number).<=|
00032e60  09 52 31 20 3d 09 30 20  74 6f 20 63 6c 61 69 6d  |.R1 =.0 to claim|
00032e70  2c 20 70 72 65 73 65 72  76 65 64 20 74 6f 20 70  |, preserved to p|
00032e80  61 73 73 20 6f 6e 0a 0a  54 68 69 73 20 73 65 72  |ass on..This ser|
00032e90  76 69 63 65 20 6d 75 73  74 20 62 65 20 69 73 73  |vice must be iss|
00032ea0  75 65 64 20 62 79 20 61  20 6d 6f 64 75 6c 65 20  |ued by a module |
00032eb0  77 68 65 6e 20 69 74 20  72 65 6c 65 61 73 65 73  |when it releases|
00032ec0  20 74 68 65 20 46 49 51  20 68 61 72 64 77 61 72  | the FIQ hardwar|
00032ed0  65 20 76 65 63 74 6f 72  2e 20 49 66 20 79 6f 75  |e vector. If you|
00032ee0  20 77 69 73 68 20 74 6f  20 63 6c 61 69 6d 20 74  | wish to claim t|
00032ef0  68 65 20 46 49 51 20 69  6e 73 74 65 61 64 20 6f  |he FIQ instead o|
00032f00  66 20 74 68 65 20 64 65  66 61 75 6c 74 20 6f 77  |f the default ow|
00032f10  6e 65 72 20 28 45 63 6f  6e 65 74 20 6f 72 20 4b  |ner (Econet or K|
00032f20  65 72 6e 65 6c 29 20 79  6f 75 20 73 68 6f 75 6c  |ernel) you shoul|
00032f30  64 20 63 6c 61 69 6d 20  74 68 69 73 20 73 65 72  |d claim this ser|
00032f40  76 69 63 65 0a 00 00 00  44 41 54 41 6d 01 00 00  |vice....DATAm...|
00032f50  53 65 72 76 69 63 65 5f  43 6c 61 69 6d 46 49 51  |Service_ClaimFIQ|
00032f60  20 28 26 30 43 29 0a 23  50 61 72 65 6e 74 20 53  | (&0C).#Parent S|
00032f70  65 72 76 69 63 65 5f 49  6e 64 65 78 0a 3d 3e 09  |ervice_Index.=>.|
00032f80  52 31 20 3d 09 26 43 20  28 73 65 72 76 69 63 65  |R1 =.&C (service|
00032f90  20 6e 75 6d 62 65 72 29  0a 3c 3d 09 52 31 20 3d  | number).<=.R1 =|
00032fa0  09 30 20 74 6f 20 63 6c  61 69 6d 2c 20 6f 72 20  |.0 to claim, or |
00032fb0  70 72 65 73 65 72 76 65  64 20 74 6f 20 70 61 73  |preserved to pas|
00032fc0  73 20 6f 6e 0a 0a 54 68  69 73 20 73 65 72 76 69  |s on..This servi|
00032fd0  63 65 20 69 73 20 69 73  73 75 65 64 20 62 79 20  |ce is issued by |
00032fe0  61 20 6d 6f 64 75 6c 65  20 72 75 6e 6e 69 6e 67  |a module running|
00032ff0  20 61 73 20 61 20 66 6f  72 65 67 72 6f 75 6e 64  | as a foreground|
00033000  20 74 61 73 6b 20 28 6e  6f 74 20 49 52 51 29 20  | task (not IRQ) |
00033010  74 68 61 74 20 77 61 6e  74 73 20 74 6f 20 63 6c  |that wants to cl|
00033020  61 69 6d 20 74 68 65 20  46 49 51 20 68 61 72 64  |aim the FIQ hard|
00033030  77 61 72 65 20 76 65 63  74 6f 72 2e 20 49 66 20  |ware vector. If |
00033040  79 6f 75 20 61 72 65 20  74 68 65 20 63 75 72 72  |you are the curr|
00033050  65 6e 74 20 6f 77 6e 65  72 20 79 6f 75 20 6d 75  |ent owner you mu|
00033060  73 74 20 72 65 6c 65 61  73 65 20 74 68 65 20 76  |st release the v|
00033070  65 63 74 6f 72 20 61 73  20 73 6f 6f 6e 20 61 73  |ector as soon as|
00033080  20 70 6f 73 73 69 62 6c  65 2c 20 61 6e 64 20 73  | possible, and s|
00033090  69 67 6e 61 6c 20 74 68  69 73 20 62 79 20 63 6c  |ignal this by cl|
000330a0  61 69 6d 69 6e 67 20 74  68 69 73 20 73 65 72 76  |aiming this serv|
000330b0  69 63 65 2e 0a 00 00 00  44 41 54 41 e3 00 00 00  |ice.....DATA....|
000330c0  53 65 72 76 69 63 65 5f  53 74 61 72 74 55 70 20  |Service_StartUp |
000330d0  28 26 31 32 29 0a 23 50  61 72 65 6e 74 20 53 65  |(&12).#Parent Se|
000330e0  72 76 69 63 65 5f 69 6e  64 65 78 0a 3d 3e 09 52  |rvice_index.=>.R|
000330f0  31 20 3d 09 26 31 32 20  28 73 65 72 76 69 63 65  |1 =.&12 (service|
00033100  20 6e 75 6d 62 65 72 29  0a 09 52 32 20 3d 09 3c  | number)..R2 =.<|
00033110  66 69 6c 69 6e 67 20 73  79 73 74 65 6d 20 6e 75  |filing system nu|
00033120  6d 62 65 72 3d 3e 66 73  79 73 5f 69 64 65 6e 74  |mber=>fsys_ident|
00033130  3e 0a 0a 54 68 69 73 20  73 65 72 76 69 63 65 20  |>..This service |
00033140  69 73 20 74 68 65 20 6f  6c 64 20 77 61 79 20 6f  |is the old way o|
00033150  66 20 73 74 61 72 74 69  6e 67 20 61 20 66 69 6c  |f starting a fil|
00033160  69 6e 67 20 73 79 73 74  65 6d 2e 20 55 73 65 20  |ing system. Use |
00033170  3c 4f 53 5f 46 53 43 6f  6e 74 72 6f 6c 20 31 32  |<OS_FSControl 12|
00033180  3d 3e 4f 53 5f 46 53 43  6f 6e 74 72 6f 6c 31 32  |=>OS_FSControl12|
00033190  3e 20 69 6e 73 74 65 61  64 2e 0a 00 44 41 54 41  |> instead...DATA|
000331a0  36 02 00 00 53 65 72 76  69 63 65 5f 50 6f 73 74  |6...Service_Post|
000331b0  52 65 73 65 74 20 28 26  32 37 29 0a 23 50 61 72  |Reset (&27).#Par|
000331c0  65 6e 74 20 53 65 72 76  69 63 65 5f 49 6e 64 65  |ent Service_Inde|
000331d0  78 0a 3d 3e 09 52 31 20  3d 09 26 32 37 20 28 73  |x.=>.R1 =.&27 (s|
000331e0  65 72 76 69 63 65 20 6e  75 6d 62 65 72 29 0a 0a  |ervice number)..|
000331f0  54 68 69 73 20 73 65 72  76 69 63 65 20 69 73 20  |This service is |
00033200  69 73 73 75 65 64 20 61  74 20 74 68 65 20 65 6e  |issued at the en|
00033210  64 20 6f 66 20 61 20 6d  61 63 68 69 6e 65 20 72  |d of a machine r|
00033220  65 73 65 74 2e 20 47 65  6e 65 72 61 6c 20 6d 6f  |eset. General mo|
00033230  64 75 6c 65 20 74 61 73  6b 73 20 61 6e 64 20 66  |dule tasks and f|
00033240  69 6c 65 72 73 20 73 68  6f 75 6c 64 20 72 65 73  |ilers should res|
00033250  65 74 20 74 68 65 69 72  20 74 61 73 6b 68 61 6e  |et their taskhan|
00033260  64 6c 65 73 20 61 73 20  69 66 20 3c 53 65 72 76  |dles as if <Serv|
00033270  69 63 65 5f 53 74 61 72  74 65 64 57 69 6d 70 3d  |ice_StartedWimp=|
00033280  3e 53 65 72 76 69 63 65  5f 34 41 3e 20 6f 72 20  |>Service_4A> or |
00033290  3c 53 65 72 76 69 63 65  5f 53 74 61 72 74 65 64  |<Service_Started|
000332a0  46 69 6c 65 72 3d 3e 53  65 72 76 69 63 65 5f 34  |Filer=>Service_4|
000332b0  43 3e 20 68 61 64 20 62  65 65 6e 20 63 61 6c 6c  |C> had been call|
000332c0  65 64 2c 20 72 65 61 64  79 20 66 6f 72 20 3c 53  |ed, ready for <S|
000332d0  65 72 76 69 63 65 5f 53  74 61 72 74 57 69 6d 70  |ervice_StartWimp|
000332e0  3d 3e 53 65 72 76 69 63  65 5f 34 39 3e 20 6f 72  |=>Service_49> or|
000332f0  20 3c 53 65 72 76 69 63  65 5f 53 74 61 72 74 46  | <Service_StartF|
00033300  69 6c 65 72 3d 3e 53 65  72 76 69 63 65 5f 34 42  |iler=>Service_4B|
00033310  3e 2e 0a 0a 4d 65 73 73  61 67 65 54 72 61 6e 73  |>...MessageTrans|
00033320  20 64 6f 65 73 20 6e 6f  74 20 63 6c 6f 73 65 20  | does not close |
00033330  6d 65 73 73 61 67 65 20  66 69 6c 65 73 20 6f 6e  |message files on|
00033340  20 61 20 73 6f 66 74 20  72 65 73 65 74 20 2d 20  | a soft reset - |
00033350  69 66 20 79 6f 75 20 64  6f 20 6e 6f 74 20 77 61  |if you do not wa|
00033360  6e 74 20 79 6f 75 72 20  66 69 6c 65 73 20 74 6f  |nt your files to|
00033370  20 72 65 6d 61 69 6e 20  6f 70 65 6e 20 74 68 69  | remain open thi|
00033380  73 20 73 65 72 76 69 63  65 20 77 69 6c 6c 20 62  |s service will b|
00033390  65 20 75 73 65 66 75 6c  2e 0a 23 20 48 65 79 2c  |e useful..# Hey,|
000333a0  20 74 68 69 73 20 73 65  72 76 69 63 65 20 69 73  | this service is|
000333b0  20 64 65 74 61 69 6c 65  64 20 6f 6e 20 33 2d 36  | detailed on 3-6|
000333c0  39 2c 20 33 2d 37 32 20  61 6e 64 20 32 2d 34 39  |9, 3-72 and 2-49|
000333d0  32 0a 00 00 44 41 54 41  02 01 00 00 53 65 72 76  |2...DATA....Serv|
000333e0  69 63 65 5f 46 53 52 65  64 65 63 6c 61 72 65 20  |ice_FSRedeclare |
000333f0  28 26 34 30 29 0a 23 50  61 72 65 6e 74 20 53 65  |(&40).#Parent Se|
00033400  72 76 69 63 65 5f 69 6e  64 65 78 0a 3d 3e 09 52  |rvice_index.=>.R|
00033410  31 20 3d 09 26 34 30 20  28 73 65 72 76 69 63 65  |1 =.&40 (service|
00033420  20 6e 75 6d 62 65 72 29  0a 3c 3d 09 52 31 20 70  | number).<=.R1 p|
00033430  72 65 73 65 72 76 65 64  20 28 64 6f 20 6e 6f 74  |reserved (do not|
00033440  20 63 6c 61 69 6d 29 0a  0a 54 68 69 73 20 73 65  | claim)..This se|
00033450  72 76 69 63 65 20 69 73  20 63 61 6c 6c 65 64 20  |rvice is called |
00033460  77 68 65 6e 20 46 69 6c  65 53 77 69 74 63 68 20  |when FileSwitch |
00033470  72 65 2d 69 6e 69 74 69  6c 69 73 65 64 2e 20 46  |re-initilised. F|
00033480  69 6c 69 6e 67 20 73 79  73 74 65 6d 73 20 73 68  |iling systems sh|
00033490  6f 75 6c 64 20 63 61 6c  6c 20 3c 4f 53 5f 46 53  |ould call <OS_FS|
000334a0  43 6f 6e 74 72 6f 6c 20  31 32 3d 3e 4f 53 5f 46  |Control 12=>OS_F|
000334b0  53 43 6f 6e 74 72 6f 6c  31 32 3e 20 74 6f 20 72  |SControl12> to r|
000334c0  65 2d 64 65 63 6c 61 72  65 20 74 68 65 6d 73 65  |e-declare themse|
000334d0  6c 76 65 73 2e 0a 00 00  44 41 54 41 59 00 00 00  |lves....DATAY...|
000334e0  53 65 72 76 69 63 65 5f  50 72 69 6e 74 20 28 26  |Service_Print (&|
000334f0  34 31 29 0a 23 50 61 72  65 6e 74 20 53 65 72 76  |41).#Parent Serv|
00033500  69 63 65 5f 49 6e 64 65  78 0a 54 68 69 73 20 73  |ice_Index.This s|
00033510  65 72 76 69 63 65 20 69  73 20 66 6f 72 20 69 6e  |ervice is for in|
00033520  74 65 72 6e 61 6c 20 75  73 65 20 6f 6e 6c 79 2e  |ternal use only.|
00033530  0a 00 00 00 44 41 54 41  2b 01 00 00 53 65 72 76  |....DATA+...Serv|
00033540  69 63 65 5f 4b 65 79 48  61 6e 64 6c 65 72 20 28  |ice_KeyHandler (|
00033550  26 34 34 29 0a 23 50 61  72 65 6e 74 20 53 65 72  |&44).#Parent Ser|
00033560  76 69 63 65 5f 69 6e 64  65 78 0a 3d 3e 09 52 31  |vice_index.=>.R1|
00033570  20 3d 09 26 34 34 20 28  73 65 72 76 69 63 65 20  | =.&44 (service |
00033580  6e 75 6d 62 65 72 29 0a  09 52 32 20 3d 09 3c 6b  |number)..R2 =.<k|
00033590  65 79 62 6f 61 72 64 20  49 44 3d 3e 4f 53 5f 6b  |eyboard ID=>OS_k|
000335a0  65 79 62 6f 61 72 64 69  64 3e 0a 3c 3d 09 52 30  |eyboardid>.<=.R0|
000335b0  20 26 20 52 31 20 70 72  65 73 65 72 76 65 64 20  | & R1 preserved |
000335c0  28 64 6f 20 6e 6f 74 20  63 6c 61 69 6d 29 0a 0a  |(do not claim)..|
000335d0  54 68 69 73 20 73 65 72  76 69 63 65 20 69 73 20  |This service is |
000335e0  69 73 73 75 65 64 20 61  66 74 65 72 20 3c 4f 53  |issued after <OS|
000335f0  5f 49 6e 73 74 61 6c 6c  4b 65 79 48 61 6e 64 6c  |_InstallKeyHandl|
00033600  65 72 3e 20 69 73 20 63  61 6c 6c 65 64 2c 20 6f  |er> is called, o|
00033610  72 20 61 66 74 65 72 20  61 20 72 65 73 65 74 2c  |r after a reset,|
00033620  20 74 6f 20 69 6e 66 6f  72 6d 20 6b 65 79 62 6f  | to inform keybo|
00033630  61 72 64 20 68 61 6e 64  6c 65 72 73 20 77 68 61  |ard handlers wha|
00033640  74 20 73 6f 72 74 20 6f  66 20 6b 65 79 62 6f 61  |t sort of keyboa|
00033650  72 64 20 69 73 20 70 72  65 73 65 6e 74 2e 0a 00  |rd is present...|
00033660  44 41 54 41 f5 00 00 00  53 65 72 76 69 63 65 5f  |DATA....Service_|
00033670  4d 6f 64 65 43 68 61 6e  67 65 20 28 26 34 36 29  |ModeChange (&46)|
00033680  0a 23 50 61 72 65 6e 74  20 53 65 72 76 69 63 65  |.#Parent Service|
00033690  5f 49 6e 64 65 78 0a 3d  3e 09 52 31 20 3d 09 26  |_Index.=>.R1 =.&|
000336a0  34 36 20 28 73 65 72 76  69 63 65 20 6e 75 6d 62  |46 (service numb|
000336b0  65 72 29 0a 09 52 32 20  3d 09 3c 6d 6f 64 65 20  |er)..R2 =.<mode |
000336c0  6e 75 6d 62 65 72 3d 3e  56 44 55 3a 32 32 61 3e  |number=>VDU:22a>|
000336d0  0a 09 52 33 20 3d 09 3c  6d 6f 6e 69 74 6f 72 20  |..R3 =.<monitor |
000336e0  74 79 70 65 3d 3e 4f 53  5f 6d 6f 6e 69 74 6f 72  |type=>OS_monitor|
000336f0  74 79 70 65 73 3e 0a 3c  3d 09 52 31 2d 52 33 20  |types>.<=.R1-R3 |
00033700  70 72 65 73 65 72 76 65  64 20 28 64 6f 20 6e 6f  |preserved (do no|
00033710  74 20 63 6c 61 69 6d 29  0a 0a 54 68 69 73 20 73  |t claim)..This s|
00033720  65 72 76 69 63 65 20 69  73 20 69 73 73 75 65 64  |ervice is issued|
00033730  20 77 68 65 6e 20 61 20  6d 6f 64 65 20 63 68 61  | when a mode cha|
00033740  6e 67 65 20 68 61 73 20  74 61 6b 65 6e 20 70 6c  |nge has taken pl|
00033750  61 63 65 2e 0a 00 00 00  44 41 54 41 c4 01 00 00  |ace.....DATA....|
00033760  53 65 72 76 69 63 65 5f  43 6c 61 69 6d 46 49 51  |Service_ClaimFIQ|
00033770  69 6e 42 61 63 6b 67 72  6f 75 6e 64 20 28 26 34  |inBackground (&4|
00033780  37 29 0a 23 50 61 72 65  6e 74 20 53 65 72 76 69  |7).#Parent Servi|
00033790  63 65 5f 69 6e 64 65 78  0a 3d 3e 09 52 31 20 3d  |ce_index.=>.R1 =|
000337a0  09 26 34 37 20 28 73 65  72 76 69 63 65 20 6e 75  |.&47 (service nu|
000337b0  6d 62 65 72 29 0a 3c 3d  09 52 31 20 3d 09 30 20  |mber).<=.R1 =.0 |
000337c0  74 6f 20 63 6c 61 69 6d  2c 20 6f 72 20 70 72 65  |to claim, or pre|
000337d0  73 65 72 76 65 64 20 74  6f 20 70 61 73 73 20 6f  |served to pass o|
000337e0  6e 0a 0a 54 68 69 73 20  73 65 72 76 69 63 65 20  |n..This service |
000337f0  69 73 20 69 73 73 75 65  64 20 62 79 20 61 20 6d  |is issued by a m|
00033800  6f 64 75 6c 65 20 72 75  6e 6e 69 6e 67 20 61 73  |odule running as|
00033810  20 61 20 62 61 63 6b 72  6f 75 6e 64 20 74 61 73  | a backround tas|
00033820  6b 20 28 7b 2f 7d 69 2e  65 2e 7b 2f 7d 20 49 52  |k ({/}i.e.{/} IR|
00033830  51 29 20 74 68 61 74 20  77 61 6e 74 73 20 74 6f  |Q) that wants to|
00033840  20 63 6c 61 69 6d 20 74  68 65 20 46 49 51 20 68  | claim the FIQ h|
00033850  61 72 64 77 61 72 65 20  76 65 63 74 6f 72 2c 20  |ardware vector, |
00033860  6f 72 20 61 20 66 6f 72  65 67 72 6f 75 6e 64 20  |or a foreground |
00033870  74 61 73 6b 20 74 68 61  74 20 77 61 6e 74 73 20  |task that wants |
00033880  74 6f 20 70 6f 6c 6c 20  61 76 61 69 6c 61 62 69  |to poll availabi|
00033890  6c 69 74 79 20 6f 66 20  74 68 65 20 76 65 63 74  |lity of the vect|
000338a0  6f 72 2e 20 49 66 20 79  6f 75 20 61 72 65 20 74  |or. If you are t|
000338b0  68 65 20 63 75 72 72 65  6e 74 20 6f 77 6e 65 72  |he current owner|
000338c0  20 61 6e 64 20 77 69 73  68 20 74 6f 20 72 65 6c  | and wish to rel|
000338d0  65 61 73 65 20 74 68 65  20 76 65 63 74 6f 72 2c  |ease the vector,|
000338e0  20 79 6f 75 20 73 68 6f  75 6c 64 20 64 6f 20 73  | you should do s|
000338f0  6f 20 61 6e 64 20 73 69  67 6e 61 6c 20 74 68 69  |o and signal thi|
00033900  73 20 62 79 20 63 6c 61  69 6d 69 6e 67 20 74 68  |s by claiming th|
00033910  69 73 20 73 65 72 76 69  63 65 2e 0a 44 41 54 41  |is service..DATA|
00033920  0e 05 00 00 53 65 72 76  69 63 65 5f 53 74 61 72  |....Service_Star|
00033930  74 57 69 6d 70 20 28 26  34 39 29 0a 23 50 61 72  |tWimp (&49).#Par|
00033940  65 6e 74 20 53 65 72 76  69 63 65 5f 69 6e 64 65  |ent Service_inde|
00033950  78 0a 3d 3e 09 52 31 20  3d 09 26 34 39 20 28 73  |x.=>.R1 =.&49 (s|
00033960  65 72 76 69 63 65 20 6e  75 6d 62 65 72 29 0a 3c  |ervice number).<|
00033970  3d 09 52 30 20 26 20 52  31 20 70 72 65 73 65 72  |=.R0 & R1 preser|
00033980  76 65 64 20 74 6f 20 70  61 73 73 20 6f 6e 20 65  |ved to pass on e|
00033990  6c 73 65 0a 09 52 30 20  3d 09 70 6f 69 6e 74 65  |lse..R0 =.pointe|
000339a0  72 20 74 6f 20 63 6f 6d  6d 61 6e 64 20 74 6f 20  |r to command to |
000339b0  73 74 61 72 74 20 6d 6f  64 75 6c 65 0a 09 52 31  |start module..R1|
000339c0  20 3d 09 30 20 28 74 6f  20 63 6c 61 69 6d 20 73  | =.0 (to claim s|
000339d0  65 72 76 69 63 65 29 0a  0a 54 68 69 73 20 73 65  |ervice)..This se|
000339e0  72 76 69 63 65 20 69 73  20 69 73 73 75 65 64 20  |rvice is issued |
000339f0  62 79 20 74 68 65 20 57  69 6d 70 20 74 6f 20 73  |by the Wimp to s|
00033a00  74 61 72 74 20 75 70 20  72 65 73 69 64 65 6e 74  |tart up resident|
00033a10  20 6d 6f 64 75 6c 65 20  74 61 73 6b 73 20 62 79  | module tasks by|
00033a20  20 70 61 73 73 69 6e 67  20 74 68 65 20 72 65 74  | passing the ret|
00033a30  75 72 6e 65 64 20 63 6f  6d 6d 61 6e 64 20 74 6f  |urned command to|
00033a40  20 3c 57 69 6d 70 5f 53  74 61 72 74 54 61 73 6b  | <Wimp_StartTask|
00033a50  3d 3e 57 69 6d 70 3a 57  69 6d 70 5f 53 74 61 72  |=>Wimp:Wimp_Star|
00033a60  74 54 61 73 6b 3e 2e 20  4d 6f 64 75 6c 65 20 74  |tTask>. Module t|
00033a70  61 73 6b 73 20 77 68 69  63 68 20 77 69 73 68 20  |asks which wish |
00033a80  74 6f 20 73 74 61 72 74  20 73 68 6f 75 6c 64 20  |to start should |
00033a90  63 6c 61 69 6d 20 74 68  69 73 20 73 65 72 76 69  |claim this servi|
00033aa0  63 65 2c 20 70 61 73 73  69 6e 67 20 74 68 65 69  |ce, passing thei|
00033ab0  72 20 73 74 61 72 74 20  63 6f 6d 6d 61 6e 64 20  |r start command |
00033ac0  69 6e 20 52 30 2e 20 54  68 65 20 57 69 6d 70 20  |in R0. The Wimp |
00033ad0  77 69 6c 6c 20 72 65 2d  69 73 73 75 65 20 74 68  |will re-issue th|
00033ae0  69 73 20 73 65 72 76 69  63 65 20 75 6e 74 69 6c  |is service until|
00033af0  20 6e 6f 20 6d 6f 72 65  20 6d 6f 64 75 6c 65 73  | no more modules|
00033b00  20 63 6c 61 69 6d 20 69  74 2e 0a 0a 46 69 6c 65  | claim it...File|
00033b10  72 20 6d 6f 64 75 6c 65  20 74 61 73 6b 73 20 73  |r module tasks s|
00033b20  68 6f 75 6c 64 20 77 61  69 74 20 66 6f 72 20 3c  |hould wait for <|
00033b30  53 65 72 76 69 63 65 5f  53 74 61 72 74 46 69 6c  |Service_StartFil|
00033b40  65 72 3d 3e 53 65 72 76  69 63 65 5f 34 42 3e 20  |er=>Service_4B> |
00033b50  69 6e 73 74 65 61 64 2e  20 0a 0a 54 6f 20 70 72  |instead. ..To pr|
00033b60  65 76 65 6e 74 20 69 6e  66 69 6e 69 74 65 20 6c  |event infinite l|
00033b70  6f 6f 70 73 20 69 66 20  61 6e 20 65 72 72 6f 72  |oops if an error|
00033b80  20 6f 63 63 75 72 73 20  69 6e 20 73 74 61 72 74  | occurs in start|
00033b90  69 6e 67 20 61 20 74 61  73 6b 2c 20 6d 6f 64 75  |ing a task, modu|
00033ba0  6c 65 73 20 73 68 6f 75  6c 64 3a 0a 0a 31 09 73  |les should:..1.s|
00033bb0  65 74 20 74 68 65 69 72  20 74 61 73 6b 68 61 6e  |et their taskhan|
00033bc0  64 6c 65 20 74 6f 20 30  20 6f 6e 20 3c 69 6e 69  |dle to 0 on <ini|
00033bd0  74 69 61 6c 69 73 65 3d  3e 4f 53 5f 4d 6f 64 75  |tialise=>OS_Modu|
00033be0  6c 65 5f 69 6e 69 74 3e  2c 20 3c 53 65 72 76 69  |le_init>, <Servi|
00033bf0  63 65 5f 52 65 73 65 74  3d 3e 53 65 72 76 69 63  |ce_Reset=>Servic|
00033c00  65 5f 32 37 3e 20 6f 72  20 3c 53 65 72 76 69 63  |e_27> or <Servic|
00033c10  65 5f 53 74 61 72 74 65  64 57 69 6d 70 3d 3e 53  |e_StartedWimp=>S|
00033c20  65 72 76 69 63 65 5f 34  41 3e 0a 32 09 6f 6e 6c  |ervice_4A>.2.onl|
00033c30  79 20 63 6c 61 69 6d 20  74 68 69 73 20 73 65 72  |y claim this ser|
00033c40  76 69 63 65 20 69 66 20  74 68 65 69 72 20 74 61  |vice if their ta|
00033c50  73 6b 68 61 6e 64 6c 65  20 69 73 20 7a 65 72 6f  |skhandle is zero|
00033c60  20 28 7b 2f 7d 69 2e 65  2e 7b 2f 7d 20 74 68 65  | ({/}i.e.{/} the|
00033c70  79 20 61 72 65 20 6e 6f  74 20 61 6c 72 65 61 64  |y are not alread|
00033c80  79 20 72 75 6e 6e 69 6e  67 2c 20 61 6e 64 20 6e  |y running, and n|
00033c90  6f 74 20 61 74 74 65 6d  70 74 69 6e 67 20 74 6f  |ot attempting to|
00033ca0  20 72 65 2d 73 74 61 72  74 29 0a 33 09 73 65 74  | re-start).3.set|
00033cb0  20 74 68 65 69 72 20 74  61 73 6b 68 61 6e 64 6c  | their taskhandl|
00033cc0  65 20 74 6f 20 61 20 66  6c 61 67 20 76 61 6c 75  |e to a flag valu|
00033cd0  65 20 28 2d 31 29 20 77  68 65 6e 20 74 68 65 79  |e (-1) when they|
00033ce0  20 63 6c 61 69 6d 20 74  68 69 73 20 73 65 72 76  | claim this serv|
00033cf0  69 63 65 0a 34 61 09 73  65 74 20 74 68 65 69 72  |ice.4a.set their|
00033d00  20 74 61 73 6b 68 61 6e  64 6c 65 20 62 61 73 65  | taskhandle base|
00033d10  64 20 6f 6e 20 74 68 65  20 72 65 74 75 72 6e 20  |d on the return |
00033d20  72 65 73 75 6c 74 20 6f  66 20 3c 57 69 6d 70 5f  |result of <Wimp_|
00033d30  49 6e 69 74 69 61 6c 69  73 65 3d 3e 57 69 6d 70  |Initialise=>Wimp|
00033d40  3a 57 69 6d 70 5f 49 6e  69 74 69 61 6c 69 73 65  |:Wimp_Initialise|
00033d50  3e 20 69 66 20 74 68 65  69 72 20 63 6f 6d 6d 61  |> if their comma|
00033d60  6e 64 20 69 73 20 63 61  6c 6c 65 64 0a 34 62 09  |nd is called.4b.|
00033d70  6f 72 20 73 65 74 20 74  68 65 69 72 20 74 61 73  |or set their tas|
00033d80  6b 68 61 6e 64 6c 65 20  62 61 63 6b 20 74 6f 20  |khandle back to |
00033d90  30 20 6f 6e 20 3c 53 65  72 76 69 63 65 5f 53 74  |0 on <Service_St|
00033da0  61 72 74 65 64 57 69 6d  70 3d 3e 53 65 72 76 69  |artedWimp=>Servi|
00033db0  63 65 5f 34 41 3e 20 28  66 61 69 6c 65 64 20 74  |ce_4A> (failed t|
00033dc0  6f 20 69 6e 69 74 69 61  6c 69 73 65 29 0a 35 09  |o initialise).5.|
00033dd0  73 65 74 20 74 68 65 69  72 20 74 61 73 6b 68 61  |set their taskha|
00033de0  6e 64 6c 65 20 62 61 63  6b 20 74 6f 20 30 20 77  |ndle back to 0 w|
00033df0  68 65 6e 20 74 68 65 79  20 71 75 69 74 20 75 73  |hen they quit us|
00033e00  69 6e 67 20 3c 57 69 6d  70 5f 43 6c 6f 73 65 44  |ing <Wimp_CloseD|
00033e10  6f 77 6e 3d 3e 57 69 6d  70 3a 57 69 6d 70 5f 43  |own=>Wimp:Wimp_C|
00033e20  6c 6f 73 65 44 6f 77 6e  3e 0a 00 00 44 41 54 41  |loseDown>...DATA|
00033e30  40 01 00 00 53 65 72 76  69 63 65 5f 53 74 61 72  |@...Service_Star|
00033e40  74 65 64 57 69 6d 70 20  28 26 34 41 29 0a 23 50  |tedWimp (&4A).#P|
00033e50  61 72 65 6e 74 20 73 65  72 76 69 63 65 5f 69 6e  |arent service_in|
00033e60  64 65 78 0a 3d 3e 09 52  31 20 3d 09 26 34 41 20  |dex.=>.R1 =.&4A |
00033e70  28 73 65 72 76 69 63 65  20 6e 75 6d 62 65 72 29  |(service number)|
00033e80  0a 3c 3d 09 52 31 20 70  72 65 73 65 72 76 65 64  |.<=.R1 preserved|
00033e90  20 28 64 6f 20 6e 6f 74  20 63 6c 61 69 6d 29 0a  | (do not claim).|
00033ea0  0a 54 68 69 73 20 73 65  72 76 69 63 65 20 69 73  |.This service is|
00033eb0  20 69 73 73 75 65 64 20  62 79 20 74 68 65 20 64  | issued by the d|
00033ec0  65 73 6b 74 6f 70 20 61  66 74 65 72 20 72 65 73  |esktop after res|
00033ed0  69 64 65 6e 74 20 6d 6f  64 75 6c 65 20 74 61 73  |ident module tas|
00033ee0  6b 73 20 68 61 76 65 20  73 74 61 72 74 65 64 2c  |ks have started,|
00033ef0  20 74 6f 20 61 6c 6c 6f  77 20 74 61 73 6b 73 20  | to allow tasks |
00033f00  74 68 61 74 20 68 61 76  65 20 66 61 69 6c 65 64  |that have failed|
00033f10  20 74 6f 20 69 6e 69 74  69 61 6c 69 73 65 20 74  | to initialise t|
00033f20  6f 20 72 65 73 65 74 20  2d 20 73 65 65 20 3c 53  |o reset - see <S|
00033f30  65 72 76 69 63 65 5f 53  74 61 72 74 57 69 6d 70  |ervice_StartWimp|
00033f40  3d 3e 53 65 72 76 69 63  65 5f 34 39 3e 20 66 6f  |=>Service_49> fo|
00033f50  72 20 64 65 74 61 69 6c  73 20 6f 66 20 74 68 65  |r details of the|
00033f60  20 70 72 6f 63 65 64 75  72 65 2e 0a 44 41 54 41  | procedure..DATA|
00033f70  4f 05 00 00 53 65 72 76  69 63 65 5f 53 74 61 72  |O...Service_Star|
00033f80  74 46 69 6c 65 72 20 28  26 34 42 29 0a 23 50 61  |tFiler (&4B).#Pa|
00033f90  72 65 6e 74 20 53 65 72  76 69 63 65 5f 69 6e 64  |rent Service_ind|
00033fa0  65 78 0a 3d 3e 09 52 30  20 3d 09 74 61 73 6b 20  |ex.=>.R0 =.task |
00033fb0  68 61 6e 64 6c 65 20 6f  66 20 46 69 6c 65 72 0a  |handle of Filer.|
00033fc0  09 52 31 20 3d 09 26 34  39 20 28 73 65 72 76 69  |.R1 =.&49 (servi|
00033fd0  63 65 20 6e 75 6d 62 65  72 29 0a 3c 3d 09 52 30  |ce number).<=.R0|
00033fe0  20 26 20 52 31 20 70 72  65 73 65 72 76 65 64 20  | & R1 preserved |
00033ff0  74 6f 20 70 61 73 73 20  6f 6e 20 65 6c 73 65 0a  |to pass on else.|
00034000  3c 3d 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |<=.R0 =.pointer |
00034010  74 6f 20 63 6f 6d 6d 61  6e 64 20 74 6f 20 73 74  |to command to st|
00034020  61 72 74 20 6d 6f 64 75  6c 65 0a 09 52 31 20 3d  |art module..R1 =|
00034030  09 30 20 28 74 6f 20 63  6c 61 69 6d 20 73 65 72  |.0 (to claim ser|
00034040  76 69 63 65 29 0a 0a 54  68 69 73 20 73 65 72 76  |vice)..This serv|
00034050  69 63 65 20 69 73 20 69  73 73 75 65 64 20 62 79  |ice is issued by|
00034060  20 74 68 65 20 46 69 6c  65 72 20 74 6f 20 73 74  | the Filer to st|
00034070  61 72 74 20 75 70 20 72  65 73 69 64 65 6e 74 20  |art up resident |
00034080  66 69 6c 65 72 20 6d 6f  64 75 6c 65 20 74 61 73  |filer module tas|
00034090  6b 73 20 62 79 20 70 61  73 73 69 6e 67 20 74 68  |ks by passing th|
000340a0  65 20 72 65 74 75 72 6e  65 64 20 63 6f 6d 6d 61  |e returned comma|
000340b0  6e 64 20 74 6f 20 3c 57  69 6d 70 5f 53 74 61 72  |nd to <Wimp_Star|
000340c0  74 54 61 73 6b 3d 3e 57  69 6d 70 3a 57 69 6d 70  |tTask=>Wimp:Wimp|
000340d0  5f 53 74 61 72 74 54 61  73 6b 3e 2e 20 4d 6f 64  |_StartTask>. Mod|
000340e0  75 6c 65 20 74 61 73 6b  73 20 77 68 69 63 68 20  |ule tasks which |
000340f0  77 69 73 68 20 74 6f 20  73 74 61 72 74 20 73 68  |wish to start sh|
00034100  6f 75 6c 64 20 63 6c 61  69 6d 20 74 68 69 73 20  |ould claim this |
00034110  73 65 72 76 69 63 65 2c  20 70 61 73 73 69 6e 67  |service, passing|
00034120  20 74 68 65 69 72 20 73  74 61 72 74 20 63 6f 6d  | their start com|
00034130  6d 61 6e 64 20 69 6e 20  52 30 2e 20 54 68 65 20  |mand in R0. The |
00034140  46 69 6c 65 72 20 77 69  6c 6c 20 72 65 2d 69 73  |Filer will re-is|
00034150  73 75 65 20 74 68 69 73  20 73 65 72 76 69 63 65  |sue this service|
00034160  20 75 6e 74 69 6c 20 6e  6f 20 6d 6f 72 65 20 6d  | until no more m|
00034170  6f 64 75 6c 65 73 20 63  6c 61 69 6d 20 69 74 2e  |odules claim it.|
00034180  0a 0a 54 6f 20 70 72 65  76 65 6e 74 20 69 6e 66  |..To prevent inf|
00034190  69 6e 69 74 65 20 6c 6f  6f 70 73 20 69 66 20 61  |inite loops if a|
000341a0  6e 20 65 72 72 6f 72 20  6f 63 63 75 72 73 20 69  |n error occurs i|
000341b0  6e 20 73 74 61 72 74 69  6e 67 20 61 20 74 61 73  |n starting a tas|
000341c0  6b 2c 20 6d 6f 64 75 6c  65 73 20 73 68 6f 75 6c  |k, modules shoul|
000341d0  64 3a 0a 0a 31 09 73 65  74 20 74 68 65 69 72 20  |d:..1.set their |
000341e0  74 61 73 6b 68 61 6e 64  6c 65 20 74 6f 20 30 20  |taskhandle to 0 |
000341f0  6f 6e 20 3c 69 6e 69 74  69 61 6c 69 73 65 3d 3e  |on <initialise=>|
00034200  4f 53 5f 4d 6f 64 75 6c  65 5f 69 6e 69 74 3e 2c  |OS_Module_init>,|
00034210  20 3c 53 65 72 76 69 63  65 5f 52 65 73 65 74 3d  | <Service_Reset=|
00034220  3e 53 65 72 76 69 63 65  5f 32 37 3e 20 6f 72 20  |>Service_27> or |
00034230  3c 53 65 72 76 69 63 65  5f 53 74 61 72 74 65 64  |<Service_Started|
00034240  46 69 6c 65 72 3d 3e 53  65 72 76 69 63 65 5f 34  |Filer=>Service_4|
00034250  43 3e 0a 32 09 6f 6e 6c  79 20 63 6c 61 69 6d 20  |C>.2.only claim |
00034260  74 68 69 73 20 73 65 72  76 69 63 65 20 69 66 20  |this service if |
00034270  74 68 65 69 72 20 74 61  73 6b 68 61 6e 64 6c 65  |their taskhandle|
00034280  20 69 73 20 7a 65 72 6f  20 28 7b 2f 7d 69 2e 65  | is zero ({/}i.e|
00034290  2e 7b 2f 7d 20 74 68 65  79 20 61 72 65 20 6e 6f  |.{/} they are no|
000342a0  74 20 61 6c 72 65 61 64  79 20 72 75 6e 6e 69 6e  |t already runnin|
000342b0  67 2c 20 61 6e 64 20 6e  6f 74 20 61 74 74 65 6d  |g, and not attem|
000342c0  70 74 69 6e 67 20 74 6f  20 72 65 2d 73 74 61 72  |pting to re-star|
000342d0  74 29 0a 33 09 73 65 74  20 74 68 65 69 72 20 74  |t).3.set their t|
000342e0  61 73 6b 68 61 6e 64 6c  65 20 74 6f 20 61 20 66  |askhandle to a f|
000342f0  6c 61 67 20 76 61 6c 75  65 20 28 2d 31 29 20 77  |lag value (-1) w|
00034300  68 65 6e 20 74 68 65 79  20 63 6c 61 69 6d 20 74  |hen they claim t|
00034310  68 69 73 20 73 65 72 76  69 63 65 0a 34 61 09 73  |his service.4a.s|
00034320  65 74 20 74 68 65 69 72  20 74 61 73 6b 68 61 6e  |et their taskhan|
00034330  64 6c 65 20 62 61 73 65  64 20 6f 6e 20 74 68 65  |dle based on the|
00034340  20 72 65 74 75 72 6e 20  72 65 73 75 6c 74 20 6f  | return result o|
00034350  66 20 3c 57 69 6d 70 5f  49 6e 69 74 69 61 6c 69  |f <Wimp_Initiali|
00034360  73 65 3d 3e 57 69 6d 70  3a 57 69 6d 70 5f 49 6e  |se=>Wimp:Wimp_In|
00034370  69 74 69 61 6c 69 73 65  3e 20 69 66 20 74 68 65  |itialise> if the|
00034380  69 72 20 63 6f 6d 6d 61  6e 64 20 69 73 20 63 61  |ir command is ca|
00034390  6c 6c 65 64 0a 34 62 09  6f 72 20 73 65 74 20 74  |lled.4b.or set t|
000343a0  68 65 69 72 20 74 61 73  6b 68 61 6e 64 6c 65 20  |heir taskhandle |
000343b0  62 61 63 6b 20 74 6f 20  30 20 6f 6e 20 3c 53 65  |back to 0 on <Se|
000343c0  72 76 69 63 65 5f 53 74  61 72 74 65 64 46 69 6c  |rvice_StartedFil|
000343d0  65 72 3d 3e 53 65 72 76  69 63 65 5f 34 43 3e 20  |er=>Service_4C> |
000343e0  28 66 61 69 6c 65 64 20  74 6f 20 69 6e 69 74 69  |(failed to initi|
000343f0  61 6c 69 73 65 29 0a 35  09 73 65 74 20 74 68 65  |alise).5.set the|
00034400  69 72 20 74 61 73 6b 68  61 6e 64 6c 65 20 62 61  |ir taskhandle ba|
00034410  63 6b 20 74 6f 20 30 20  77 68 65 6e 20 74 68 65  |ck to 0 when the|
00034420  79 20 71 75 69 74 20 75  73 69 6e 67 20 3c 57 69  |y quit using <Wi|
00034430  6d 70 5f 43 6c 6f 73 65  44 6f 77 6e 3d 3e 57 69  |mp_CloseDown=>Wi|
00034440  6d 70 3a 57 69 6d 70 5f  43 6c 6f 73 65 44 6f 77  |mp:Wimp_CloseDow|
00034450  6e 3e 0a 0a 46 69 6c 65  72 20 74 61 73 6b 73 20  |n>..Filer tasks |
00034460  73 68 6f 75 6c 64 20 61  6c 73 6f 20 63 68 65 63  |should also chec|
00034470  6b 20 66 6f 72 20 3c 53  65 72 76 69 63 65 5f 46  |k for <Service_F|
00034480  69 6c 65 72 44 79 69 6e  67 3d 3e 53 65 72 76 69  |ilerDying=>Servi|
00034490  63 65 5f 34 46 3e 2c 20  61 6e 64 20 63 6c 6f 73  |ce_4F>, and clos|
000344a0  65 20 64 6f 77 6e 20 69  66 20 74 68 65 79 20 72  |e down if they r|
000344b0  65 63 69 65 76 65 20 69  74 2e 0a 00 44 41 54 41  |ecieve it...DATA|
000344c0  46 01 00 00 53 65 72 76  69 63 65 5f 53 74 61 72  |F...Service_Star|
000344d0  74 65 64 46 69 6c 65 72  20 28 26 34 43 29 0a 23  |tedFiler (&4C).#|
000344e0  50 61 72 65 6e 74 20 53  65 72 76 69 63 65 5f 69  |Parent Service_i|
000344f0  6e 64 65 78 0a 3d 3e 09  52 31 20 3d 09 26 34 43  |ndex.=>.R1 =.&4C|
00034500  20 28 73 65 72 76 69 63  65 20 6e 75 6d 62 65 72  | (service number|
00034510  29 0a 3c 3d 09 52 31 20  70 72 65 73 65 72 76 65  |).<=.R1 preserve|
00034520  64 20 28 64 6f 20 6e 6f  74 20 63 6c 61 69 6d 29  |d (do not claim)|
00034530  0a 0a 54 68 69 73 20 73  65 72 76 69 63 65 20 69  |..This service i|
00034540  73 20 69 73 73 75 65 64  20 62 79 20 74 68 65 20  |s issued by the |
00034550  46 69 6c 65 72 20 61 66  74 65 72 20 72 65 73 69  |Filer after resi|
00034560  64 65 6e 74 20 46 69 6c  65 72 20 6d 6f 64 75 6c  |dent Filer modul|
00034570  65 20 74 61 73 6b 73 20  68 61 76 65 20 73 74 61  |e tasks have sta|
00034580  72 74 65 64 2c 20 74 6f  20 61 6c 6c 6f 77 20 74  |rted, to allow t|
00034590  61 73 6b 73 20 74 68 61  74 20 68 61 76 65 20 66  |asks that have f|
000345a0  61 69 6c 65 64 20 74 6f  20 69 6e 69 74 69 61 6c  |ailed to initial|
000345b0  69 73 65 20 74 6f 20 72  65 73 65 74 20 2d 20 73  |ise to reset - s|
000345c0  65 65 20 3c 53 65 72 76  69 63 65 5f 53 74 61 72  |ee <Service_Star|
000345d0  74 46 69 6c 65 72 3d 3e  53 65 72 76 69 63 65 5f  |tFiler=>Service_|
000345e0  34 42 3e 20 66 6f 72 20  64 65 74 61 69 6c 73 20  |4B> for details |
000345f0  6f 66 20 74 68 65 20 70  72 6f 63 65 64 75 72 65  |of the procedure|
00034600  2e 0a 00 00 44 41 54 41  e3 02 00 00 53 65 72 76  |....DATA....Serv|
00034610  69 63 65 5f 50 72 65 4d  6f 64 65 43 68 61 6e 67  |ice_PreModeChang|
00034620  65 20 28 26 34 44 29 0a  23 50 61 72 65 6e 74 20  |e (&4D).#Parent |
00034630  53 65 72 76 69 63 65 5f  49 6e 64 65 78 0a 3d 3e  |Service_Index.=>|
00034640  09 52 31 20 3d 09 26 34  36 20 28 73 65 72 76 69  |.R1 =.&46 (servi|
00034650  63 65 20 6e 75 6d 62 65  72 29 0a 09 52 32 20 3d  |ce number)..R2 =|
00034660  09 3c 6d 6f 64 65 20 6e  75 6d 62 65 72 3d 3e 56  |.<mode number=>V|
00034670  44 55 3a 32 32 61 3e 0a  3c 3d 09 73 65 65 20 62  |DU:22a>.<=.see b|
00034680  65 6c 6f 77 0a 0a 54 68  69 73 20 73 65 72 76 69  |elow..This servi|
00034690  63 65 20 61 6c 6c 6f 77  73 20 61 20 6d 6f 64 75  |ce allows a modu|
000346a0  6c 65 20 74 6f 20 6f 62  6a 65 63 74 20 74 6f 20  |le to object to |
000346b0  61 20 6d 6f 64 65 20 63  68 61 6e 67 65 2c 20 6f  |a mode change, o|
000346c0  72 20 73 75 62 73 69 74  75 74 65 20 61 20 64 69  |r subsitute a di|
000346d0  66 66 65 72 65 6e 74 20  6d 6f 64 65 3a 0a 0a 7b  |fferent mode:..{|
000346e0  2a 7d 43 61 73 65 20 31  7b 2a 7d 20 2d 20 6d 6f  |*}Case 1{*} - mo|
000346f0  64 75 6c 65 20 68 61 73  20 6e 6f 20 6f 62 6a 65  |dule has no obje|
00034700  63 74 69 6f 6e 0a 0a 3c  3d 09 52 31 2c 52 32 20  |ction..<=.R1,R2 |
00034710  70 72 65 73 65 72 76 65  64 20 28 70 61 73 73 20  |preserved (pass |
00034720  6f 6e 29 0a 0a 7b 2a 7d  43 61 73 65 20 32 7b 2a  |on)..{*}Case 2{*|
00034730  7d 20 2d 20 6d 6f 64 75  6c 65 20 6f 62 6a 65 63  |} - module objec|
00034740  74 73 2c 20 61 6e 64 20  74 61 6b 65 73 20 61 6c  |ts, and takes al|
00034750  74 65 72 6e 61 74 69 76  65 20 61 63 74 69 6f 6e  |ternative action|
00034760  0a 0a 3c 3d 09 52 31 20  3d 09 30 20 28 63 6c 61  |..<=.R1 =.0 (cla|
00034770  69 6d 20 73 65 72 76 69  63 65 29 0a 09 52 32 20  |im service)..R2 |
00034780  3d 09 30 0a 0a 7b 2a 7d  43 61 73 65 20 33 7b 2a  |=.0..{*}Case 3{*|
00034790  7d 20 2d 20 6d 6f 64 75  6c 65 20 6f 62 6a 65 63  |} - module objec|
000347a0  74 73 2c 20 61 6e 64 20  72 65 74 75 72 6e 73 20  |ts, and returns |
000347b0  61 6e 20 65 72 72 6f 72  0a 0a 3c 3d 09 52 30 20  |an error..<=.R0 |
000347c0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 3c 65 72  |=.pointer to <er|
000347d0  72 6f 72 20 62 6c 6f 63  6b 3d 3e 73 77 69 5f 65  |ror block=>swi_e|
000347e0  72 72 6f 72 62 6c 6f 63  6b 3e 0a 09 52 31 20 3d  |rrorblock>..R1 =|
000347f0  09 30 20 28 63 6c 61 69  6d 20 73 65 72 76 69 63  |.0 (claim servic|
00034800  65 29 0a 0a 7b 2a 7d 43  61 73 65 20 34 7b 2a 7d  |e)..{*}Case 4{*}|
00034810  20 2d 20 6d 6f 64 75 6c  65 20 77 69 73 68 65 73  | - module wishes|
00034820  20 74 6f 20 73 75 62 73  69 74 75 74 65 20 61 6e  | to subsitute an|
00034830  20 61 6c 74 65 72 6e 61  74 69 76 65 20 6d 6f 64  | alternative mod|
00034840  65 0a 0a 3c 3d 09 52 31  20 3d 09 26 34 36 20 28  |e..<=.R1 =.&46 (|
00034850  73 65 72 76 69 63 65 20  6e 75 6d 62 65 72 29 20  |service number) |
00034860  2d 20 70 61 73 73 20 6f  6e 0a 09 52 32 20 3d 09  |- pass on..R2 =.|
00034870  6e 65 77 20 3c 6d 6f 64  65 20 6e 75 6d 62 65 72  |new <mode number|
00034880  3d 3e 56 44 55 3a 32 32  61 3e 0a 0a 3c 53 65 72  |=>VDU:22a>..<Ser|
00034890  76 69 63 65 5f 4d 6f 64  65 54 72 61 6e 73 6c 61  |vice_ModeTransla|
000348a0  74 69 6f 6e 3d 3e 53 65  72 76 69 63 65 5f 35 31  |tion=>Service_51|
000348b0  3e 20 6f 66 66 65 72 73  20 61 20 62 65 74 74 65  |> offers a bette|
000348c0  72 20 6d 65 74 68 6f 64  20 74 6f 20 73 75 70 70  |r method to supp|
000348d0  6f 72 74 20 6e 65 77 20  6d 6f 6e 69 74 6f 72 20  |ort new monitor |
000348e0  74 79 70 65 73 2e 0a 00  44 41 54 41 0a 01 00 00  |types...DATA....|
000348f0  53 65 72 76 69 63 65 5f  46 69 6c 65 72 44 79 69  |Service_FilerDyi|
00034900  6e 67 20 28 26 34 46 29  0a 23 50 61 72 65 6e 74  |ng (&4F).#Parent|
00034910  20 53 65 72 76 69 63 65  5f 49 6e 64 65 78 0a 3d  | Service_Index.=|
00034920  3e 09 52 31 20 3d 09 26  34 46 20 28 73 65 72 76  |>.R1 =.&4F (serv|
00034930  69 63 65 20 6e 75 6d 62  65 72 29 0a 0a 54 68 69  |ice number)..Thi|
00034940  73 20 73 65 72 76 69 63  65 20 69 73 20 69 73 73  |s service is iss|
00034950  75 65 64 20 77 68 65 6e  20 74 68 65 20 46 69 6c  |ued when the Fil|
00034960  65 72 20 74 61 73 6b 20  69 73 20 63 6c 6f 73 65  |er task is close|
00034970  64 20 64 6f 77 6e 2e 20  46 69 6c 65 72 20 6d 6f  |d down. Filer mo|
00034980  64 75 6c 65 20 74 61 73  6b 73 20 73 68 6f 75 6c  |dule tasks shoul|
00034990  64 20 63 6c 6f 73 65 20  64 6f 77 6e 20 69 6e 20  |d close down in |
000349a0  73 79 6d 70 61 74 68 79  20 77 68 65 6e 20 74 68  |sympathy when th|
000349b0  65 79 20 72 65 63 69 65  76 65 20 74 68 69 73 20  |ey recieve this |
000349c0  73 65 72 76 69 63 65 20  28 73 65 65 20 3c 53 65  |service (see <Se|
000349d0  72 76 69 63 65 5f 46 69  6c 65 72 53 74 61 72 74  |rvice_FilerStart|
000349e0  65 64 3d 3e 53 65 72 76  69 63 65 5f 34 42 3e 29  |ed=>Service_4B>)|
000349f0  2e 0a 00 00 44 41 54 41  51 06 00 00 53 65 72 76  |....DATAQ...Serv|
00034a00  69 63 65 5f 4d 6f 64 65  45 78 74 65 6e 73 69 6f  |ice_ModeExtensio|
00034a10  6e 20 28 26 35 30 29 0a  23 50 61 72 65 6e 74 20  |n (&50).#Parent |
00034a20  53 65 72 76 69 63 65 5f  69 6e 64 65 78 0a 3d 3e  |Service_index.=>|
00034a30  09 52 31 20 3d 09 26 35  30 20 28 73 65 72 76 69  |.R1 =.&50 (servi|
00034a40  63 65 20 6e 75 6d 62 65  72 29 0a 09 52 32 20 3d  |ce number)..R2 =|
00034a50  09 6d 6f 64 65 20 6e 75  6d 62 65 72 0a 09 52 33  |.mode number..R3|
00034a60  20 3d 09 3c 6d 6f 6e 69  74 6f 72 20 74 79 70 65  | =.<monitor type|
00034a70  3d 3e 4f 53 5f 6d 6f 6e  69 74 6f 72 74 79 70 65  |=>OS_monitortype|
00034a80  73 3e 20 6f 72 20 2d 31  20 66 6f 72 20 64 6f 6e  |s> or -1 for don|
00034a90  27 74 20 63 61 72 65 0a  3c 3d 09 52 31 2d 52 34  |'t care.<=.R1-R4|
00034aa0  20 70 72 65 73 65 72 76  65 64 20 74 6f 20 70 61  | preserved to pa|
00034ab0  73 73 20 6f 6e 20 65 6c  73 65 0a 3c 3d 09 52 31  |ss on else.<=.R1|
00034ac0  20 3d 09 30 20 28 74 6f  20 63 6c 61 69 6d 20 73  | =.0 (to claim s|
00034ad0  65 72 76 69 63 65 29 0a  09 52 32 20 70 72 65 73  |ervice)..R2 pres|
00034ae0  65 72 76 65 64 0a 09 52  33 20 3d 09 70 6f 69 6e  |erved..R3 =.poin|
00034af0  74 65 72 20 74 6f 20 3c  56 49 44 43 20 6c 69 73  |ter to <VIDC lis|
00034b00  74 3d 3e 2e 56 49 44 43  3e 0a 09 52 34 20 3d 09  |t=>.VIDC>..R4 =.|
00034b10  70 6f 69 6e 74 65 72 20  74 6f 20 3c 77 6f 72 6b  |pointer to <work|
00034b20  73 70 61 63 65 20 6c 69  73 74 3d 3e 2e 77 6f 72  |space list=>.wor|
00034b30  6b 73 70 61 63 65 3e 0a  0a 54 68 69 73 20 73 65  |kspace>..This se|
00034b40  72 76 69 63 65 20 69 73  20 69 73 73 75 65 64 20  |rvice is issued |
00034b50  77 68 65 6e 20 61 20 6d  6f 64 65 20 6e 75 6d 62  |when a mode numb|
00034b60  65 72 20 74 68 61 74 20  52 49 53 43 20 4f 53 20  |er that RISC OS |
00034b70  64 6f 65 73 20 6e 6f 74  20 70 72 6f 76 69 64 65  |does not provide|
00034b80  20 69 73 20 72 65 71 75  65 73 74 65 64 2e 20 4d  | is requested. M|
00034b90  6f 64 65 20 6e 75 6d 62  65 72 73 20 61 72 65 20  |ode numbers are |
00034ba0  61 6c 6c 6f 63 61 74 65  64 20 62 79 20 74 68 69  |allocated by thi|
00034bb0  73 20 73 63 68 65 6d 65  3a 0a 0a 4d 6f 64 65 09  |s scheme:..Mode.|
00034bc0  55 73 65 0a 23 4c 69 6e  65 0a 30 2d 36 33 09 3c  |Use.#Line.0-63.<|
00034bd0  52 49 53 43 20 4f 53 3d  3e 56 44 55 3a 32 32 61  |RISC OS=>VDU:22a|
00034be0  3e 0a 36 34 2d 39 35 09  54 68 69 72 64 20 70 61  |>.64-95.Third pa|
00034bf0  72 74 79 20 61 70 70 6c  69 63 61 74 69 6f 6e 73  |rty applications|
00034c00  20 28 61 6c 6c 6f 63 61  74 65 64 20 62 79 20 41  | (allocated by A|
00034c10  63 6f 72 6e 29 0a 39 36  2d 31 32 37 09 55 73 65  |corn).96-127.Use|
00034c20  72 20 64 65 66 69 6e 65  64 20 6d 6f 64 65 73 0a  |r defined modes.|
00034c30  0a 56 49 44 43 20 70 61  72 61 6d 65 74 65 72 73  |.VIDC parameters|
00034c40  20 6d 61 79 20 64 69 66  66 65 72 20 66 6f 72 20  | may differ for |
00034c50  74 68 65 20 73 61 6d 65  20 6d 6f 64 65 20 64 65  |the same mode de|
00034c60  70 65 6e 64 69 6e 67 20  6f 6e 20 6d 6f 6e 69 74  |pending on monit|
00034c70  6f 72 20 74 79 70 65 2c  20 62 75 74 20 77 6f 72  |or type, but wor|
00034c80  6b 73 70 61 63 65 20 70  61 72 61 6d 65 74 65 72  |kspace parameter|
00034c90  73 20 2a 6d 75 73 74 2a  20 62 65 20 63 6f 6e 73  |s *must* be cons|
00034ca0  74 61 6e 74 2e 0a 23 53  75 62 50 61 67 65 20 56  |tant..#SubPage V|
00034cb0  49 44 43 0a 56 49 44 43  20 6c 69 73 74 0a 56 49  |IDC.VIDC list.VI|
00034cc0  44 43 20 6c 69 73 74 20  66 6f 72 6d 61 74 20 30  |DC list format 0|
00034cd0  3a 0a 0a 53 69 7a 65 09  56 61 6c 75 65 0a 23 4c  |:..Size.Value.#L|
00034ce0  69 6e 65 0a 34 09 30 20  28 6c 69 73 74 20 66 6f  |ine.4.0 (list fo|
00034cf0  72 6d 61 74 29 0a 34 09  56 49 44 43 20 62 61 73  |rmat).4.VIDC bas|
00034d00  65 20 6d 6f 64 65 20 28  64 65 66 61 75 6c 74 20  |e mode (default |
00034d10  66 6f 72 20 70 61 72 61  6d 65 74 65 72 73 20 6e  |for parameters n|
00034d20  6f 74 20 65 78 70 6c 69  63 69 74 6c 79 20 73 70  |ot explicitly sp|
00034d30  65 63 69 66 69 65 64 29  0a 34 09 56 49 44 43 20  |ecified).4.VIDC |
00034d40  70 61 72 61 6d 65 74 65  72 0a 09 28 72 65 70 65  |parameter..(repe|
00034d50  61 74 29 0a 34 09 2d 31  20 28 74 65 72 6d 69 6e  |at).4.-1 (termin|
00034d60  61 74 6f 72 29 0a 0a 56  49 44 43 20 6c 69 73 74  |ator)..VIDC list|
00034d70  20 66 6f 72 6d 61 74 20  31 20 28 41 35 34 30 20  | format 1 (A540 |
00034d80  61 6e 64 20 6c 61 74 65  72 29 3a 0a 0a 53 69 7a  |and later):..Siz|
00034d90  65 09 56 61 6c 75 65 0a  23 4c 69 6e 65 0a 34 09  |e.Value.#Line.4.|
00034da0  31 20 28 6c 69 73 74 20  66 6f 72 6d 61 74 29 0a  |1 (list format).|
00034db0  34 09 56 49 44 43 20 62  61 73 65 20 6d 6f 64 65  |4.VIDC base mode|
00034dc0  20 28 64 65 66 61 75 6c  74 20 66 6f 72 20 70 61  | (default for pa|
00034dd0  72 61 6d 65 74 65 72 73  20 6e 6f 74 20 65 78 70  |rameters not exp|
00034de0  6c 69 63 69 74 6c 79 20  73 70 65 63 69 66 69 65  |licitly specifie|
00034df0  64 29 0a 34 09 56 49 44  43 20 70 61 72 61 6d 65  |d).4.VIDC parame|
00034e00  74 65 72 0a 09 28 72 65  70 65 61 74 29 0a 34 09  |ter..(repeat).4.|
00034e10  2d 31 20 28 74 65 72 6d  69 6e 61 74 6f 72 29 0a  |-1 (terminator).|
00034e20  34 09 3c 65 78 74 65 6e  64 65 64 20 70 61 72 61  |4.<extended para|
00034e30  6d 65 74 65 72 3d 3e 2e  65 78 74 65 6e 64 3e 0a  |meter=>.extend>.|
00034e40  09 28 72 65 70 65 61 74  29 0a 34 09 2d 31 20 28  |.(repeat).4.-1 (|
00034e50  74 65 72 6d 69 6e 61 74  6f 72 29 0a 23 53 75 62  |terminator).#Sub|
00034e60  50 61 67 65 20 65 78 74  65 6e 64 0a 56 49 44 43  |Page extend.VIDC|
00034e70  20 65 78 74 65 6e 64 65  64 20 70 61 72 61 6d 65  | extended parame|
00034e80  74 65 72 73 0a 56 49 44  43 20 65 78 74 65 6e 64  |ters.VIDC extend|
00034e90  65 64 20 70 61 72 61 6d  74 65 72 73 20 61 72 65  |ed paramters are|
00034ea0  20 65 6e 63 6f 64 65 64  20 61 73 20 28 7b 2f 7d  | encoded as ({/}|
00034eb0  6e 7b 2f 7d 20 3c 3c 20  32 34 20 4f 52 20 7b 2f  |n{/} << 24 OR {/|
00034ec0  7d 76 61 6c 75 65 7b 2f  7d 29 0a 0a 6e 09 76 61  |}value{/})..n.va|
00034ed0  6c 75 65 09 09 09 62 69  74 09 6d 65 61 6e 69 6e  |lue...bit.meanin|
00034ee0  67 20 77 68 65 6e 20 73  65 74 09 64 65 66 61 75  |g when set.defau|
00034ef0  6c 74 0a 23 4c 69 6e 65  0a 30 09 70 69 78 65 6c  |lt.#Line.0.pixel|
00034f00  20 72 61 74 65 20 28 6b  48 7a 29 09 20 09 20 09  | rate (kHz). . .|
00034f10  09 09 32 34 4d 48 7a 0a  31 09 73 79 6e 63 20 70  |..24MHz.1.sync p|
00034f20  6f 6c 61 72 69 74 79 09  09 30 09 48 53 79 6e 63  |olarity..0.HSync|
00034f30  20 2d 76 65 20 28 65 6c  73 65 20 2b 76 65 29 09  | -ve (else +ve).|
00034f40  2b 76 65 0a 09 20 09 09  09 31 09 56 53 79 6e 63  |+ve.. ...1.VSync|
00034f50  20 2d 76 65 20 28 65 6c  73 65 20 2b 76 65 29 09  | -ve (else +ve).|
00034f60  2b 76 65 0a 32 09 56 49  44 43 20 63 6c 6f 63 6b  |+ve.2.VIDC clock|
00034f70  20 72 61 74 65 20 28 6b  48 7a 29 09 20 0a 23 53  | rate (kHz). .#S|
00034f80  75 62 70 61 67 65 20 77  6f 72 6b 73 70 61 63 65  |ubpage workspace|
00034f90  0a 56 49 44 43 20 77 6f  72 6b 73 70 61 63 65 20  |.VIDC workspace |
00034fa0  6c 69 73 74 0a 53 69 7a  65 09 56 61 6c 75 65 0a  |list.Size.Value.|
00034fb0  23 4c 69 6e 65 0a 34 09  30 20 28 6c 69 73 74 20  |#Line.4.0 (list |
00034fc0  66 6f 72 6d 61 74 29 0a  34 09 57 6f 72 6b 73 70  |format).4.Worksp|
00034fd0  61 63 65 20 62 61 73 65  20 6d 6f 64 65 0a 38 09  |ace base mode.8.|
00034fe0  3c 4d 6f 64 65 20 76 61  72 69 61 62 6c 65 20 69  |<Mode variable i|
00034ff0  6e 64 65 78 3d 3e 4f 53  5f 52 65 61 64 4d 6f 64  |ndex=>OS_ReadMod|
00035000  65 56 61 72 69 61 62 6c  65 2e 76 61 72 69 61 62  |eVariable.variab|
00035010  6c 65 3e 0a 09 4d 6f 64  65 20 76 61 72 69 61 62  |le>..Mode variab|
00035020  6c 65 20 76 61 6c 75 65  0a 09 28 72 65 70 65 61  |le value..(repea|
00035030  74 29 0a 34 09 2d 31 20  28 74 65 72 6d 69 6e 61  |t).4.-1 (termina|
00035040  74 6f 72 29 0a 00 00 00  44 41 54 41 dd 01 00 00  |tor)....DATA....|
00035050  53 65 72 76 69 63 65 5f  4d 6f 64 65 54 72 61 6e  |Service_ModeTran|
00035060  73 6c 61 74 69 6f 6e 20  28 26 35 31 29 0a 23 50  |slation (&51).#P|
00035070  61 72 65 6e 74 20 53 65  72 76 69 63 65 5f 69 6e  |arent Service_in|
00035080  64 65 78 0a 3d 3e 09 52  31 20 3d 09 26 35 31 20  |dex.=>.R1 =.&51 |
00035090  28 73 65 72 76 69 63 65  20 6e 75 6d 62 65 72 29  |(service number)|
000350a0  0a 09 52 32 20 3d 09 6d  6f 64 65 20 6e 75 6d 62  |..R2 =.mode numb|
000350b0  65 72 0a 09 52 33 20 3d  09 3c 6d 6f 6e 69 74 6f  |er..R3 =.<monito|
000350c0  72 20 74 79 70 65 3d 3e  4f 53 5f 6d 6f 6e 69 74  |r type=>OS_monit|
000350d0  6f 72 74 79 70 65 73 3e  0a 3c 3d 09 52 31 2d 52  |ortypes>.<=.R1-R|
000350e0  33 20 70 72 65 73 65 72  76 65 64 20 74 6f 20 70  |3 preserved to p|
000350f0  61 73 73 20 6f 6e 20 65  6c 73 65 0a 09 52 31 20  |ass on else..R1 |
00035100  3d 09 30 20 28 74 6f 20  63 6c 61 69 6d 20 73 65  |=.0 (to claim se|
00035110  72 76 69 63 65 29 0a 09  52 32 20 3d 09 73 75 62  |rvice)..R2 =.sub|
00035120  73 74 69 74 75 74 65 20  6d 6f 64 65 0a 09 52 33  |stitute mode..R3|
00035130  20 70 72 65 73 65 72 76  65 64 0a 0a 54 68 69 73  | preserved..This|
00035140  20 73 65 72 76 69 63 65  20 69 73 20 69 73 73 75  | service is issu|
00035150  65 64 20 62 79 20 3c 4f  53 5f 43 68 65 63 6b 4d  |ed by <OS_CheckM|
00035160  6f 64 65 56 61 6c 69 64  3e 20 6f 72 20 61 20 6d  |odeValid> or a m|
00035170  6f 64 65 20 63 68 61 6e  67 65 20 77 68 65 6e 20  |ode change when |
00035180  74 68 65 20 6d 6f 6e 69  74 6f 72 20 74 79 70 65  |the monitor type|
00035190  20 69 73 20 75 6e 6b 6e  6f 77 6e 20 62 79 20 52  | is unknown by R|
000351a0  49 53 43 20 4f 53 2c 20  61 6e 64 20 74 68 65 20  |ISC OS, and the |
000351b0  6d 6f 64 65 20 69 73 20  6e 6f 74 20 61 76 61 69  |mode is not avai|
000351c0  6c 61 62 6c 65 20 77 69  74 68 20 74 68 65 20 63  |lable with the c|
000351d0  75 72 72 65 6e 74 20 6d  6f 6e 69 74 6f 72 20 74  |urrent monitor t|
000351e0  79 70 65 20 28 61 73 20  61 6c 72 65 61 64 79 20  |ype (as already |
000351f0  61 73 63 65 72 74 61 69  6e 65 64 20 62 79 20 3c  |ascertained by <|
00035200  53 65 72 76 69 63 65 5f  4d 6f 64 65 45 78 74 65  |Service_ModeExte|
00035210  6e 73 69 6f 6e 3d 3e 53  65 72 76 69 63 65 5f 35  |nsion=>Service_5|
00035220  30 3e 29 2e 0a 00 00 00  44 41 54 41 a8 02 00 00  |0>).....DATA....|
00035230  53 65 72 76 69 63 65 5f  4d 6f 75 73 65 54 72 61  |Service_MouseTra|
00035240  70 20 28 26 35 32 29 0a  23 50 61 72 65 6e 74 20  |p (&52).#Parent |
00035250  53 65 72 76 69 63 65 5f  49 6e 64 65 78 0a 3d 3e  |Service_Index.=>|
00035260  09 52 30 20 3d 09 6d 6f  75 73 65 20 78 20 63 6f  |.R0 =.mouse x co|
00035270  6f 72 64 0a 09 52 31 20  3d 09 26 35 32 20 28 73  |ord..R1 =.&52 (s|
00035280  65 72 76 69 63 65 20 6e  75 6d 62 65 72 29 0a 09  |ervice number)..|
00035290  52 32 20 3d 09 62 75 74  74 6f 6e 20 73 74 61 74  |R2 =.button stat|
000352a0  65 20 28 66 72 6f 6d 20  3c 4f 53 5f 4d 6f 75 73  |e (from <OS_Mous|
000352b0  65 3e 29 0a 09 52 33 20  3d 09 74 69 6d 65 20 6f  |e>)..R3 =.time o|
000352c0  66 20 65 76 65 6e 74 20  28 66 72 6f 6d 20 3c 4f  |f event (from <O|
000352d0  53 5f 52 65 61 64 4d 6f  6e 6f 74 6f 6e 69 63 54  |S_ReadMonotonicT|
000352e0  69 6d 65 3e 29 0a 09 52  34 20 3d 09 6d 6f 75 73  |ime>)..R4 =.mous|
000352f0  65 20 78 20 63 6f 6f 72  64 20 28 61 73 20 52 31  |e x coord (as R1|
00035300  20 69 73 20 75 73 65 64  20 66 6f 72 20 72 65 61  | is used for rea|
00035310  73 6f 6e 20 63 6f 64 65  29 0a 0a 54 68 69 73 20  |son code)..This |
00035320  73 65 72 76 69 63 65 20  69 73 20 69 73 73 75 65  |service is issue|
00035330  64 20 74 6f 20 72 65 70  6f 72 74 20 74 68 61 74  |d to report that|
00035340  20 61 20 70 72 6f 67 72  61 6d 20 68 61 73 20 64  | a program has d|
00035350  65 74 65 63 74 65 64 20  73 69 67 6e 69 66 69 63  |etected signific|
00035360  61 6e 74 20 6d 6f 75 73  65 20 6d 6f 76 65 6d 65  |ant mouse moveme|
00035370  6e 74 20 28 7b 2f 7d 65  2e 67 2e 7b 2f 7d 20 74  |nt ({/}e.g.{/} t|
00035380  68 65 20 57 69 6d 70 20  64 65 74 65 63 74 73 20  |he Wimp detects |
00035390  74 68 65 20 70 6f 69 6e  74 65 72 20 6d 6f 76 69  |the pointer movi|
000353a0  6e 67 20 6f 76 65 72 20  61 20 73 75 62 6d 65 6e  |ng over a submen|
000353b0  75 20 61 72 72 6f 77 29  2e 20 4d 6f 75 73 65 20  |u arrow). Mouse |
000353c0  6c 6f 67 67 69 6e 67 20  70 72 6f 67 72 61 6d 73  |logging programs|
000353d0  20 63 61 6e 20 75 73 65  20 74 68 69 73 20 73 65  | can use this se|
000353e0  72 76 69 63 65 20 74 6f  20 65 6e 73 75 72 65 20  |rvice to ensure |
000353f0  74 68 61 74 20 74 68 65  79 20 64 6f 20 6e 6f 74  |that they do not|
00035400  20 6d 69 73 73 20 74 68  65 73 65 20 65 76 65 6e  | miss these even|
00035410  74 73 2e 20 50 72 6f 67  72 61 6d 73 20 74 68 61  |ts. Programs tha|
00035420  74 20 72 65 61 63 74 20  74 6f 20 6d 6f 75 73 65  |t react to mouse|
00035430  20 6d 6f 76 65 6d 65 6e  74 20 73 68 6f 75 6c 64  | movement should|
00035440  20 69 73 73 75 65 20 74  68 69 73 20 73 65 72 76  | issue this serv|
00035450  69 63 65 20 66 6f 72 20  74 68 65 20 62 65 6e 65  |ice for the bene|
00035460  66 69 74 20 6f 66 20 6c  6f 67 67 69 6e 67 20 70  |fit of logging p|
00035470  72 6f 67 72 61 6d 73 2e  0a 0a 4e 6f 74 65 20 2d  |rograms...Note -|
00035480  20 6d 6f 75 73 65 20 6c  6f 67 67 65 72 73 20 73  | mouse loggers s|
00035490  68 6f 75 6c 64 20 61 6c  73 6f 20 74 72 61 70 20  |hould also trap |
000354a0  3c 49 4e 4b 45 59 3d 3e  4f 53 5f 42 79 74 65 31  |<INKEY=>OS_Byte1|
000354b0  32 39 3e 20 28 62 6f 74  68 20 70 6f 73 74 69 76  |29> (both postiv|
000354c0  65 20 61 6e 64 20 6e 65  67 61 74 69 76 65 29 0a  |e and negative).|
000354d0  44 41 54 41 44 01 00 00  53 65 72 76 69 63 65 5f  |DATAD...Service_|
000354e0  53 6f 75 6e 64 20 28 26  35 34 29 0a 23 50 61 72  |Sound (&54).#Par|
000354f0  65 6e 74 20 53 65 72 76  69 63 65 5f 49 6e 64 65  |ent Service_Inde|
00035500  78 0a 3d 3e 09 52 30 20  3d 09 30 09 44 4d 41 20  |x.=>.R0 =.0.DMA |
00035510  48 61 6e 64 6c 65 72 20  73 74 61 72 74 69 6e 67  |Handler starting|
00035520  0a 09 20 09 31 09 44 4d  41 20 48 61 6e 64 6c 65  |.. .1.DMA Handle|
00035530  72 20 64 79 69 6e 67 0a  09 20 09 32 09 43 68 61  |r dying.. .2.Cha|
00035540  6e 6e 65 6c 20 48 61 6e  64 6c 65 72 20 73 74 61  |nnel Handler sta|
00035550  72 74 69 6e 67 0a 09 20  09 33 09 43 68 61 6e 6e  |rting.. .3.Chann|
00035560  65 6c 20 48 61 6e 64 6c  65 72 20 64 79 69 6e 67  |el Handler dying|
00035570  0a 09 20 09 34 09 53 63  68 65 64 75 6c 65 72 20  |.. .4.Scheduler |
00035580  73 74 61 72 74 69 6e 67  0a 09 20 09 35 09 53 63  |starting.. .5.Sc|
00035590  68 65 64 75 6c 65 72 20  64 79 69 6e 67 0a 09 52  |heduler dying..R|
000355a0  31 20 3d 09 26 35 34 20  28 73 65 72 76 69 63 65  |1 =.&54 (service|
000355b0  20 6e 75 6d 62 65 72 29  0a 0a 54 68 69 73 20 73  | number)..This s|
000355c0  65 72 76 69 63 65 20 69  73 20 69 73 73 75 65 64  |ervice is issued|
000355d0  20 74 6f 20 72 65 70 6f  72 74 20 77 68 65 6e 20  | to report when |
000355e0  61 20 70 61 72 74 20 6f  66 20 74 68 65 20 53 6f  |a part of the So|
000355f0  75 6e 64 20 73 79 73 74  65 6d 20 69 73 20 73 74  |und system is st|
00035600  61 72 69 6e 67 20 6f 72  20 66 69 6e 69 73 68 69  |aring or finishi|
00035610  6e 67 2e 0a 44 41 54 41  06 01 00 00 53 65 72 76  |ng..DATA....Serv|
00035620  69 63 65 5f 57 69 6d 70  52 65 70 6f 72 74 45 72  |ice_WimpReportEr|
00035630  72 6f 72 20 28 26 35 37  29 0a 23 50 61 72 65 6e  |ror (&57).#Paren|
00035640  74 20 53 65 72 76 69 63  65 5f 69 6e 64 65 78 0a  |t Service_index.|
00035650  3d 3e 09 52 30 20 3d 09  30 20 28 77 69 6e 64 6f  |=>.R0 =.0 (windo|
00035660  77 20 63 6c 6f 73 69 6e  67 29 0a 09 20 09 31 20  |w closing).. .1 |
00035670  28 77 69 6e 64 6f 77 20  6f 70 65 6e 69 6e 67 29  |(window opening)|
00035680  0a 09 52 31 20 3d 09 26  35 37 20 28 73 65 72 76  |..R1 =.&57 (serv|
00035690  69 63 65 20 6e 75 6d 62  65 72 29 0a 0a 54 68 69  |ice number)..Thi|
000356a0  73 20 73 65 72 76 69 63  65 20 69 73 20 70 72 6f  |s service is pro|
000356b0  76 69 64 65 64 20 73 6f  20 74 68 61 74 20 74 61  |vided so that ta|
000356c0  73 6b 73 20 74 68 61 74  20 75 73 75 61 6c 6c 79  |sks that usually|
000356d0  20 74 72 61 70 20 56 44  55 20 6f 75 74 70 75 74  | trap VDU output|
000356e0  20 63 61 6e 20 73 75 73  70 65 6e 64 20 74 72 61  | can suspend tra|
000356f0  70 70 69 6e 67 20 77 68  69 6c 65 20 61 6e 20 65  |pping while an e|
00035700  72 72 6f 72 20 77 69 6e  64 6f 77 20 69 73 20 64  |rror window is d|
00035710  69 73 70 6c 61 79 65 64  2e 0a 00 00 44 41 54 41  |isplayed....DATA|
00035720  1e 02 00 00 53 65 72 76  69 63 65 5f 57 69 6d 70  |....Service_Wimp|
00035730  53 61 76 65 44 65 73 6b  74 6f 70 20 28 26 35 43  |SaveDesktop (&5C|
00035740  29 0a 23 50 61 72 65 6e  74 20 53 65 72 76 69 63  |).#Parent Servic|
00035750  65 5f 69 6e 64 65 78 0a  3d 3e 09 52 30 20 3d 09  |e_index.=>.R0 =.|
00035760  30 20 28 66 6c 61 67 73  20 61 73 20 69 6e 20 3c  |0 (flags as in <|
00035770  4d 65 73 73 61 67 65 5f  53 61 76 65 44 65 73 6b  |Message_SaveDesk|
00035780  74 6f 70 3d 3e 57 69 6d  70 3a 4d 73 67 5f 41 3e  |top=>Wimp:Msg_A>|
00035790  20 2d 20 63 75 72 72 65  6e 74 6c 79 20 61 6c 6c  | - currently all|
000357a0  20 72 65 73 65 72 76 65  64 29 0a 09 52 31 20 3d  | reserved)..R1 =|
000357b0  09 26 35 43 20 28 73 65  72 76 69 63 65 20 6e 75  |.&5C (service nu|
000357c0  6d 62 65 72 29 0a 09 52  32 20 3d 09 66 69 6c 65  |mber)..R2 =.file|
000357d0  20 68 61 6e 64 6c 65 20  6f 66 20 64 65 73 6b 74  | handle of deskt|
000357e0  6f 70 20 66 69 6c 65 20  62 65 69 6e 67 20 77 72  |op file being wr|
000357f0  69 74 74 65 6e 0a 3c 3d  09 52 30 20 3d 09 70 6f  |itten.<=.R0 =.po|
00035800  69 6e 74 65 72 20 74 6f  20 3c 65 72 72 6f 72 20  |inter to <error |
00035810  62 6c 6f 63 6b 3d 3e 73  77 69 5f 65 72 72 6f 72  |block=>swi_error|
00035820  62 6c 6f 63 6b 3e 2c 20  6f 72 20 70 72 65 73 65  |block>, or prese|
00035830  72 76 65 20 69 66 20 6e  6f 74 20 63 6c 61 69 6d  |rve if not claim|
00035840  65 64 0a 09 52 31 20 3d  09 30 20 74 6f 20 63 6c  |ed..R1 =.0 to cl|
00035850  61 69 6d 2c 20 6f 72 20  70 72 65 73 65 72 76 65  |aim, or preserve|
00035860  64 20 74 6f 20 70 61 73  73 20 6f 6e 0a 09 52 32  |d to pass on..R2|
00035870  20 70 72 65 73 65 72 76  65 64 0a 0a 54 68 69 73  | preserved..This|
00035880  20 73 65 72 76 69 63 65  20 69 73 20 69 73 73 75  | service is issu|
00035890  65 64 20 62 65 66 6f 72  65 20 3c 4d 65 73 73 61  |ed before <Messa|
000358a0  67 65 5f 53 61 76 65 44  65 73 6b 74 6f 70 3d 3e  |ge_SaveDesktop=>|
000358b0  57 69 6d 70 3a 4d 73 67  5f 41 3e 20 74 6f 20 61  |Wimp:Msg_A> to a|
000358c0  6c 6c 6f 77 20 6d 6f 64  75 6c 65 73 20 74 6f 20  |llow modules to |
000358d0  73 61 76 65 20 73 74 61  74 65 20 74 6f 20 61 20  |save state to a |
000358e0  64 65 73 6b 74 6f 70 20  62 6f 6f 74 20 66 69 6c  |desktop boot fil|
000358f0  65 20 69 6e 20 74 68 65  20 66 6f 72 6d 20 6f 66  |e in the form of|
00035900  20 2a 43 6f 6d 6d 61 6e  64 73 2e 20 49 74 20 73  | *Commands. It s|
00035910  68 6f 75 6c 64 20 6f 6e  6c 79 20 62 65 20 63 6c  |hould only be cl|
00035920  61 69 6d 65 64 20 69 66  20 61 6e 20 65 72 72 6f  |aimed if an erro|
00035930  72 20 6f 63 63 75 72 73  2e 0a 00 00 44 41 54 41  |r occurs....DATA|
00035940  a5 00 00 00 53 65 72 76  69 63 65 5f 57 69 6d 70  |....Service_Wimp|
00035950  50 61 6c 65 74 74 65 20  28 26 35 44 29 0a 23 50  |Palette (&5D).#P|
00035960  61 72 65 6e 74 20 53 65  72 76 69 63 65 5f 69 6e  |arent Service_in|
00035970  64 65 78 0a 3d 3e 09 52  31 20 3d 09 26 35 44 20  |dex.=>.R1 =.&5D |
00035980  28 73 65 72 76 69 63 65  20 6e 75 6d 62 65 72 29  |(service number)|
00035990  0a 0a 54 68 69 73 20 73  65 72 76 69 63 65 20 69  |..This service i|
000359a0  73 20 69 73 73 75 65 64  20 77 68 65 6e 20 3c 57  |s issued when <W|
000359b0  69 6d 70 5f 53 65 74 50  61 6c 65 74 74 65 3d 3e  |imp_SetPalette=>|
000359c0  57 69 6d 70 3a 57 69 6d  70 5f 53 65 74 50 61 6c  |Wimp:Wimp_SetPal|
000359d0  65 74 74 65 3e 20 69 73  20 63 61 6c 6c 65 64 2e  |ette> is called.|
000359e0  0a 00 00 00 44 41 54 41  f4 00 00 00 53 65 72 76  |....DATA....Serv|
000359f0  69 63 65 5f 54 65 72 72  69 74 6f 72 79 4d 61 6e  |ice_TerritoryMan|
00035a00  61 67 65 72 4c 6f 61 64  65 64 20 28 26 36 34 29  |agerLoaded (&64)|
00035a10  0a 23 50 61 72 65 6e 74  20 53 65 72 76 69 63 65  |.#Parent Service|
00035a20  5f 49 6e 64 65 78 0a 3d  3e 09 52 31 20 3d 09 26  |_Index.=>.R1 =.&|
00035a30  36 34 20 28 73 65 72 76  69 63 65 20 6e 75 6d 62  |64 (service numb|
00035a40  65 72 29 0a 0a 54 68 69  73 20 73 65 72 76 69 63  |er)..This servic|
00035a50  65 20 69 73 20 69 73 73  75 65 64 20 77 68 65 6e  |e is issued when|
00035a60  20 74 68 65 20 74 65 72  72 69 74 6f 72 79 20 6d  | the territory m|
00035a70  61 6e 61 67 65 72 20 73  74 61 72 74 73 2c 20 74  |anager starts, t|
00035a80  6f 20 69 6e 64 69 63 61  74 65 20 74 68 61 74 20  |o indicate that |
00035a90  74 65 72 72 69 74 6f 72  79 20 6d 6f 64 75 6c 65  |territory module|
00035aa0  73 20 73 68 6f 75 6c 64  20 72 65 67 69 73 74 65  |s should registe|
00035ab0  72 20 74 68 65 6d 73 65  6c 76 65 73 20 77 69 74  |r themselves wit|
00035ac0  68 20 3c 54 65 72 72 69  74 6f 72 79 5f 52 65 67  |h <Territory_Reg|
00035ad0  69 73 74 65 72 3e 2e 0a  44 41 54 41 dd 00 00 00  |ister>..DATA....|
00035ae0  53 65 72 76 69 63 65 5f  50 44 72 69 76 65 72 53  |Service_PDriverS|
00035af0  74 61 72 74 69 6e 67 20  28 26 36 35 29 0a 23 50  |tarting (&65).#P|
00035b00  61 72 65 6e 74 20 53 65  72 76 69 63 65 5f 49 6e  |arent Service_In|
00035b10  64 65 78 0a 3d 3e 09 52  31 20 3d 09 26 36 35 20  |dex.=>.R1 =.&65 |
00035b20  28 73 65 72 76 69 63 65  20 6e 75 6d 62 65 72 29  |(service number)|
00035b30  0a 0a 54 68 69 73 20 73  65 72 76 69 63 65 20 69  |..This service i|
00035b40  73 20 69 73 73 75 65 64  20 77 68 65 6e 20 74 68  |s issued when th|
00035b50  65 20 50 44 72 69 76 65  72 20 6d 6f 64 75 6c 65  |e PDriver module|
00035b60  20 73 74 61 72 74 73 20  2d 20 70 72 69 6e 74 65  | starts - printe|
00035b70  72 20 64 72 69 76 65 72  73 20 73 68 6f 75 6c 64  |r drivers should|
00035b80  20 63 61 6c 6c 20 3c 50  44 72 69 76 65 72 5f 44  | call <PDriver_D|
00035b90  65 63 6c 61 72 65 44 72  69 76 65 72 3e 20 74 6f  |eclareDriver> to|
00035ba0  20 64 65 63 6c 61 72 65  20 74 68 65 6d 73 65 6c  | declare themsel|
00035bb0  76 65 73 2e 0a 00 00 00  44 41 54 41 23 02 00 00  |ves.....DATA#...|
00035bc0  53 65 72 76 69 63 65 5f  43 6c 6f 73 65 46 69 6c  |Service_CloseFil|
00035bd0  65 20 28 26 36 38 29 0a  23 50 61 72 65 6e 74 20  |e (&68).#Parent |
00035be0  53 65 72 76 69 63 65 5f  49 6e 64 65 78 0a 3d 3e  |Service_Index.=>|
00035bf0  09 52 31 20 3d 09 26 36  38 20 28 73 65 72 76 69  |.R1 =.&68 (servi|
00035c00  63 65 20 6e 75 6d 62 65  72 29 0a 09 52 32 20 3d  |ce number)..R2 =|
00035c10  09 70 6f 69 6e 74 65 72  20 74 6f 20 63 61 6e 6f  |.pointer to cano|
00035c20  6e 69 63 61 6c 20 66 69  6c 65 6e 61 6d 65 20 28  |nical filename (|
00035c30  6e 75 6c 6c 20 74 65 72  6d 69 6e 61 74 65 64 29  |null terminated)|
00035c40  0a 09 52 33 20 3d 09 6e  75 6d 62 65 72 20 6f 66  |..R3 =.number of|
00035c50  20 66 69 6c 65 73 20 63  6c 6f 73 65 64 20 28 69  | files closed (i|
00035c60  6e 69 74 69 61 6c 6c 79  20 30 29 0a 3c 3d 09 52  |nitially 0).<=.R|
00035c70  31 2c 20 52 32 20 70 72  65 73 65 72 76 65 64 20  |1, R2 preserved |
00035c80  28 64 6f 20 6e 6f 74 20  63 6c 61 69 6d 29 0a 09  |(do not claim)..|
00035c90  52 33 20 3d 09 75 70 64  61 74 65 64 20 6e 75 6d  |R3 =.updated num|
00035ca0  62 65 72 20 6f 66 20 66  69 6c 65 73 20 63 6c 6f  |ber of files clo|
00035cb0  73 65 64 0a 0a 54 68 69  73 20 73 65 72 76 69 63  |sed..This servic|
00035cc0  65 20 69 73 20 69 73 73  75 65 64 20 77 68 65 6e  |e is issued when|
00035cd0  20 74 68 65 20 6f 62 6a  65 63 74 20 73 70 65 63  | the object spec|
00035ce0  69 66 69 65 64 20 62 79  20 52 32 2c 20 61 6e 64  |ified by R2, and|
00035cf0  20 61 6c 6c 20 6f 74 68  65 72 20 6f 62 6a 65 63  | all other objec|
00035d00  74 73 20 62 65 6e 65 61  74 68 20 69 74 20 69 6e  |ts beneath it in|
00035d10  20 74 68 65 20 64 69 72  65 63 74 6f 72 79 20 74  | the directory t|
00035d20  72 65 65 20 61 72 65 20  74 6f 20 62 65 20 63 6c  |ree are to be cl|
00035d30  6f 73 65 64 2e 20 59 6f  75 72 20 6d 6f 64 75 6c  |osed. Your modul|
00035d40  65 20 6e 65 65 64 20 6e  6f 74 20 63 6c 6f 73 65  |e need not close|
00035d50  20 66 69 6c 65 73 20 69  66 20 74 68 69 73 20 6d  | files if this m|
00035d60  61 79 20 70 6f 74 65 6e  74 69 61 6c 6c 79 20 63  |ay potentially c|
00035d70  61 75 73 65 20 70 72 6f  62 6c 65 6d 73 2e 20 44  |ause problems. D|
00035d80  6f 20 2a 6e 6f 74 2a 20  63 6c 61 69 6d 20 74 68  |o *not* claim th|
00035d90  69 73 20 73 65 72 76 69  63 65 20 2d 20 70 61 73  |is service - pas|
00035da0  73 20 69 74 20 6f 6e 20  77 69 74 68 20 52 33 20  |s it on with R3 |
00035db0  75 70 64 61 74 65 64 20  62 79 20 74 68 65 20 6e  |updated by the n|
00035dc0  75 6d 62 65 72 20 6f 66  20 66 69 6c 65 73 20 79  |umber of files y|
00035dd0  6f 75 20 63 6c 6f 73 65  64 2e 0a 00 44 41 54 41  |ou closed...DATA|
00035de0  fe 05 00 00 53 65 72 76  69 63 65 5f 45 6e 75 6d  |....Service_Enum|
00035df0  65 72 61 74 65 46 6f 72  6d 61 74 73 20 28 26 36  |erateFormats (&6|
00035e00  41 29 0a 23 50 61 72 65  6e 74 20 53 65 72 76 69  |A).#Parent Servi|
00035e10  63 65 5f 49 6e 64 65 78  0a 3d 3e 09 52 31 20 3d  |ce_Index.=>.R1 =|
00035e20  09 26 36 41 20 28 73 65  72 76 69 63 65 20 6e 75  |.&6A (service nu|
00035e30  6d 62 65 72 29 0a 09 52  32 20 3d 09 70 6f 69 6e  |mber)..R2 =.poin|
00035e40  74 65 72 20 74 6f 20 6c  69 6e 6b 65 64 20 6c 69  |ter to linked li|
00035e50  73 74 20 6f 66 20 3c 66  6f 72 6d 61 74 20 73 70  |st of <format sp|
00035e60  65 63 69 66 69 63 61 74  69 6f 6e 73 3d 3e 2e 62  |ecifications=>.b|
00035e70  6c 6f 63 6b 3e 0a 3c 3d  09 52 31 20 3d 09 26 36  |lock>.<=.R1 =.&6|
00035e80  41 20 28 64 6f 20 6e 6f  74 20 63 6c 61 69 6d 29  |A (do not claim)|
00035e90  0a 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R2 =.pointer t|
00035ea0  6f 20 65 78 74 65 6e 64  65 64 20 6c 69 6e 6b 65  |o extended linke|
00035eb0  64 20 6c 69 73 74 0a 0a  54 68 69 73 20 73 65 72  |d list..This ser|
00035ec0  76 69 63 65 20 69 73 20  69 73 73 75 65 64 20 74  |vice is issued t|
00035ed0  6f 20 67 65 74 20 69 6e  66 6f 72 6d 61 74 69 6f  |o get informatio|
00035ee0  6e 20 61 62 6f 75 74 20  61 76 61 69 6c 61 62 6c  |n about availabl|
00035ef0  65 20 64 69 73 63 20 66  6f 72 6d 61 74 73 20 66  |e disc formats f|
00035f00  72 6f 6d 20 73 6f 66 74  6c 6f 61 64 65 64 20 6d  |rom softloaded m|
00035f10  6f 64 75 6c 65 73 2e 20  49 74 20 73 68 6f 75 6c  |odules. It shoul|
00035f20  64 20 62 65 20 69 73 73  75 65 64 20 77 68 65 6e  |d be issued when|
00035f30  65 76 65 72 20 74 68 69  73 20 69 6e 66 6f 72 6d  |ever this inform|
00035f40  61 74 69 6f 6e 20 69 73  20 72 65 71 75 65 73 74  |ation is request|
00035f50  65 64 2c 20 69 6e 20 63  61 73 65 20 6e 65 77 20  |ed, in case new |
00035f60  6d 6f 64 75 6c 65 73 20  6d 65 61 6e 20 6d 6f 72  |modules mean mor|
00035f70  65 20 66 6f 72 6d 61 74  73 20 61 72 65 20 6e 6f  |e formats are no|
00035f80  77 20 61 76 61 69 6c 61  62 6c 65 2e 20 54 68 65  |w available. The|
00035f90  20 73 65 72 76 69 63 65  20 6d 75 73 74 20 6e 6f  | service must no|
00035fa0  74 20 62 65 20 63 6c 61  69 6d 65 64 20 2d 20 72  |t be claimed - r|
00035fb0  61 74 68 65 72 20 69 74  20 73 68 6f 75 6c 64 20  |ather it should |
00035fc0  62 65 20 70 61 73 73 65  64 20 6f 6e 20 77 69 74  |be passed on wit|
00035fd0  68 20 61 6e 20 65 78 74  65 6e 64 65 64 20 6c 69  |h an extended li|
00035fe0  73 74 2e 0a 0a 54 68 65  20 73 65 72 76 69 63 65  |st...The service|
00035ff0  20 69 73 73 75 65 72 20  69 73 20 72 65 73 70 6f  | issuer is respo|
00036000  6e 73 69 62 6c 65 20 66  6f 72 20 66 72 65 65 69  |nsible for freei|
00036010  6e 67 20 74 68 65 20 6c  69 73 74 20 61 6e 64 20  |ng the list and |
00036020  61 6c 6c 20 64 61 74 61  20 66 72 6f 6d 20 74 68  |all data from th|
00036030  65 20 52 4d 41 20 61 66  74 65 72 20 75 73 65 2c  |e RMA after use,|
00036040  20 6f 72 20 69 66 20 61  6e 20 65 72 72 6f 72 20  | or if an error |
00036050  6f 63 63 75 72 73 20 64  75 72 69 6e 67 20 67 65  |occurs during ge|
00036060  6e 65 72 61 74 69 6f 6e  2e 0a 23 53 75 62 50 61  |neration..#SubPa|
00036070  67 65 20 62 6c 6f 63 6b  0a 53 65 72 76 69 63 65  |ge block.Service|
00036080  5f 45 6e 75 6d 65 72 61  74 65 46 6f 72 6d 61 74  |_EnumerateFormat|
00036090  73 20 66 6f 72 6d 61 74  20 62 6c 6f 63 6b 0a 4f  |s format block.O|
000360a0  66 66 73 65 74 09 4d 65  61 6e 69 6e 67 0a 23 4c  |ffset.Meaning.#L|
000360b0  69 6e 65 0a 30 09 50 6f  69 6e 74 65 72 20 74 6f  |ine.0.Pointer to|
000360c0  20 6e 65 78 74 20 62 6c  6f 63 6b 2c 20 6f 72 20  | next block, or |
000360d0  30 20 74 6f 20 74 65 72  6d 69 6e 61 74 65 20 6c  |0 to terminate l|
000360e0  69 73 74 0a 34 09 50 6f  69 6e 74 65 72 20 74 6f  |ist.4.Pointer to|
000360f0  20 2a 52 4d 41 2a 20 62  6c 6f 63 6b 20 77 69 74  | *RMA* block wit|
00036100  68 20 74 65 78 74 20 66  6f 72 20 2a 46 6f 72 6d  |h text for *Form|
00036110  61 74 2a 20 73 75 62 6d  65 6e 75 0a 38 09 50 6f  |at* submenu.8.Po|
00036120  69 6e 74 65 72 20 74 6f  20 2a 52 4d 41 2a 20 62  |inter to *RMA* b|
00036130  6c 6f 63 6b 20 77 69 74  68 20 68 65 6c 70 20 74  |lock with help t|
00036140  65 78 74 20 66 6f 72 20  2a 46 6f 72 6d 61 74 2a  |ext for *Format*|
00036150  20 73 75 62 6d 65 6e 75  0a 31 32 09 53 57 49 20  | submenu.12.SWI |
00036160  74 6f 20 63 61 6c 6c 20  74 6f 20 67 65 74 20 72  |to call to get r|
00036170  61 77 20 64 69 73 63 20  66 6f 72 6d 61 74 20 69  |aw disc format i|
00036180  6e 66 6f 0a 31 36 09 52  33 20 70 61 72 61 6d 65  |nfo.16.R3 parame|
00036190  74 65 72 20 66 6f 72 20  74 68 69 73 20 53 57 49  |ter for this SWI|
000361a0  0a 32 30 09 53 57 49 20  74 6f 20 63 61 6c 6c 20  |.20.SWI to call |
000361b0  74 6f 20 6c 61 79 20 64  6f 77 6e 20 64 69 73 63  |to lay down disc|
000361c0  20 73 74 72 75 63 74 75  72 65 0a 32 34 09 52 30  | structure.24.R0|
000361d0  20 70 61 72 61 6d 65 74  65 72 20 66 6f 72 20 74  | parameter for t|
000361e0  68 69 73 20 53 57 49 0a  32 38 09 46 6c 61 67 73  |his SWI.28.Flags|
000361f0  3a 09 62 69 74 20 30 20  73 65 74 20 66 6f 72 20  |:.bit 0 set for |
00036200  6e 61 74 69 76 65 20 41  44 46 53 20 66 6f 72 6d  |native ADFS form|
00036210  61 74 2e 0a 09 20 09 6f  74 68 65 72 20 62 69 74  |at... .other bit|
00036220  73 20 30 20 28 72 65 73  65 72 76 65 64 29 0a 0a  |s 0 (reserved)..|
00036230  54 68 65 20 62 6c 6f 63  6b 20 73 68 6f 75 6c 64  |The block should|
00036240  20 62 65 20 62 75 69 6c  74 20 69 6e 20 74 68 69  | be built in thi|
00036250  73 20 6f 72 64 65 72 3a  0a 31 09 61 6c 6c 6f 63  |s order:.1.alloc|
00036260  61 74 65 20 62 6c 6f 63  6b 20 69 6e 20 52 4d 41  |ate block in RMA|
00036270  0a 32 09 7a 65 72 6f 20  6f 66 66 73 65 74 73 20  |.2.zero offsets |
00036280  34 20 61 6e 64 20 38 20  28 70 6f 69 6e 74 65 72  |4 and 8 (pointer|
00036290  73 20 74 6f 20 74 65 78  74 29 0a 33 09 6c 69 6e  |s to text).3.lin|
000362a0  6b 20 69 6e 74 6f 20 6c  69 73 74 0a 34 09 61 6c  |k into list.4.al|
000362b0  6c 6f 63 61 74 65 20 62  6c 6f 63 6b 20 69 6e 20  |locate block in |
000362c0  52 4d 41 20 66 6f 72 20  74 65 78 74 20 61 74 20  |RMA for text at |
000362d0  6f 66 66 73 65 74 20 34  0a 35 09 6c 69 6e 6b 20  |offset 4.5.link |
000362e0  74 68 69 73 20 74 6f 20  74 68 65 20 62 6c 6f 63  |this to the bloc|
000362f0  6b 0a 36 09 61 6c 6c 6f  63 61 74 65 20 62 6c 6f  |k.6.allocate blo|
00036300  63 6b 20 69 6e 20 52 4d  41 20 66 6f 72 20 74 65  |ck in RMA for te|
00036310  78 74 20 61 74 20 6f 66  66 73 65 74 20 38 0a 37  |xt at offset 8.7|
00036320  09 6c 69 6e 6b 20 74 68  69 73 20 74 6f 20 74 68  |.link this to th|
00036330  65 20 62 6c 6f 63 6b 0a  38 09 2a 63 6f 70 79 2a  |e block.8.*copy*|
00036340  20 74 65 78 74 20 69 6e  74 6f 20 74 68 65 20 74  | text into the t|
00036350  77 6f 20 52 4d 41 20 62  6c 6f 63 6b 73 0a 39 09  |wo RMA blocks.9.|
00036360  66 69 6c 6c 20 69 6e 20  74 68 65 20 72 65 73 74  |fill in the rest|
00036370  20 6f 66 20 74 68 65 20  62 6c 6f 63 6b 0a 0a 54  | of the block..T|
00036380  68 69 73 20 61 6c 6c 6f  77 73 20 61 6e 20 65 72  |his allows an er|
00036390  72 6f 72 20 74 6f 20 62  65 20 72 65 74 75 72 6e  |ror to be return|
000363a0  65 64 20 62 79 20 63 6c  61 69 6d 69 6e 67 20 74  |ed by claiming t|
000363b0  68 65 20 73 65 72 76 69  63 65 20 61 6e 64 20 72  |he service and r|
000363c0  65 74 75 72 6e 69 6e 67  20 74 68 65 20 69 6e 74  |eturning the int|
000363d0  61 63 74 20 6c 69 73 74  2e 0a 00 00 44 41 54 41  |act list....DATA|
000363e0  d5 00 00 00 53 65 72 76  69 63 65 5f 46 6f 6e 74  |....Service_Font|
000363f0  73 43 68 61 6e 67 65 64  20 28 26 36 45 29 0a 23  |sChanged (&6E).#|
00036400  50 61 72 65 6e 74 20 53  65 72 76 69 63 65 5f 49  |Parent Service_I|
00036410  6e 64 65 78 0a 3d 3e 09  52 31 20 3d 09 26 36 45  |ndex.=>.R1 =.&6E|
00036420  20 28 73 65 72 76 69 63  65 20 6e 75 6d 62 65 72  | (service number|
00036430  29 0a 0a 54 68 69 73 20  73 65 72 76 69 63 65 20  |)..This service |
00036440  69 73 20 69 73 73 75 65  64 20 77 68 65 6e 20 74  |is issued when t|
00036450  68 65 20 46 6f 6e 74 20  4d 61 6e 61 67 65 72 20  |he Font Manager |
00036460  64 65 74 65 63 74 73 20  74 68 61 74 20 46 6f 6e  |detects that Fon|
00036470  74 24 50 61 74 68 20 68  61 73 20 63 68 61 6e 67  |t$Path has chang|
00036480  65 2c 20 73 6f 20 61 70  70 73 20 69 6e 20 6d 6f  |e, so apps in mo|
00036490  64 75 6c 65 73 20 63 61  6e 20 63 61 6c 6c 20 3c  |dules can call <|
000364a0  46 6f 6e 74 5f 4c 69 73  74 46 6f 6e 74 73 3e 2e  |Font_ListFonts>.|
000364b0  0a 00 00 00 44 41 54 41  90 00 00 00 53 65 72 76  |....DATA....Serv|
000364c0  69 63 65 5f 42 75 66 66  65 72 53 74 61 72 74 69  |ice_BufferStarti|
000364d0  6e 67 20 28 26 36 46 29  0a 23 50 61 72 65 6e 74  |ng (&6F).#Parent|
000364e0  20 53 65 72 76 69 63 65  5f 49 6e 64 65 78 0a 3d  | Service_Index.=|
000364f0  3e 09 52 31 20 3d 09 26  36 46 20 28 73 65 72 76  |>.R1 =.&6F (serv|
00036500  69 63 65 20 6e 75 6d 62  65 72 29 0a 0a 54 68 69  |ice number)..Thi|
00036510  73 20 73 65 72 76 69 63  65 20 69 73 20 69 73 73  |s service is iss|
00036520  75 65 64 20 77 68 65 6e  20 74 68 65 20 62 75 66  |ued when the buf|
00036530  66 65 72 20 6d 61 6e 61  67 65 72 20 73 74 61 72  |fer manager star|
00036540  74 73 2e 0a 44 41 54 41  f2 00 00 00 53 65 72 76  |ts..DATA....Serv|
00036550  69 63 65 5f 54 65 72 72  69 74 6f 72 79 53 74 61  |ice_TerritorySta|
00036560  72 74 65 64 20 28 26 37  35 29 0a 23 50 61 72 65  |rted (&75).#Pare|
00036570  6e 74 20 53 65 72 76 69  63 65 5f 49 6e 64 65 78  |nt Service_Index|
00036580  0a 3d 3e 09 52 31 20 3d  09 26 37 35 20 28 73 65  |.=>.R1 =.&75 (se|
00036590  72 76 69 63 65 20 6e 75  6d 62 65 72 29 0a 0a 54  |rvice number)..T|
000365a0  68 69 73 20 73 65 72 76  69 63 65 20 69 73 20 69  |his service is i|
000365b0  73 73 75 65 64 20 77 68  65 6e 20 74 68 65 20 6d  |ssued when the m|
000365c0  61 63 68 69 6e 65 27 73  20 74 65 72 72 69 74 6f  |achine's territo|
000365d0  72 79 20 69 73 20 63 68  61 6e 67 65 64 2e 20 28  |ry is changed. (|
000365e0  52 4f 4d 20 6d 6f 64 75  6c 65 73 20 77 69 6c 6c  |ROM modules will|
000365f0  20 72 65 2d 6f 70 65 6e  20 74 68 65 69 72 20 6d  | re-open their m|
00036600  65 73 73 61 67 65 73 20  66 69 6c 65 73 20 2d 20  |essages files - |
00036610  52 41 4d 20 6d 6f 64 75  6c 65 73 20 63 61 6e 20  |RAM modules can |
00036620  69 67 6e 6f 72 65 20 74  68 69 73 20 73 65 72 76  |ignore this serv|
00036630  69 63 65 29 2e 0a 00 00  44 41 54 41 cc 05 00 00  |ice)....DATA....|
00036640  53 65 72 76 69 63 65 5f  4d 6f 6e 69 74 6f 72 4c  |Service_MonitorL|
00036650  65 61 64 54 72 61 6e 73  6c 61 74 69 6f 6e 20 28  |eadTranslation (|
00036660  26 37 36 29 0a 23 50 61  72 65 6e 74 20 53 65 72  |&76).#Parent Ser|
00036670  76 69 63 65 5f 69 6e 64  65 78 0a 3d 3e 09 52 31  |vice_index.=>.R1|
00036680  20 3d 09 26 37 36 20 28  73 65 72 76 69 63 65 20  | =.&76 (service |
00036690  6e 75 6d 62 65 72 29 0a  09 52 32 20 3d 09 3c 6d  |number)..R2 =.<m|
000366a0  6f 6e 69 74 6f 72 20 6c  65 61 64 20 49 44 3d 3e  |onitor lead ID=>|
000366b0  2e 6c 65 61 64 49 44 3e  0a 3c 3d 09 52 31 2d 52  |.leadID>.<=.R1-R|
000366c0  35 20 70 72 65 73 65 72  76 65 64 20 74 6f 20 70  |5 preserved to p|
000366d0  61 73 73 20 6f 6e 20 65  6c 73 65 0a 3c 3d 09 52  |ass on else.<=.R|
000366e0  31 20 3d 09 30 20 28 74  6f 20 63 6c 61 69 6d 20  |1 =.0 (to claim |
000366f0  73 65 72 76 69 63 65 29  0a 09 52 32 20 70 72 65  |service)..R2 pre|
00036700  73 65 72 76 65 64 0a 09  52 33 20 3d 09 64 65 66  |served..R3 =.def|
00036710  61 75 6c 74 20 73 63 72  65 65 6e 20 6d 6f 64 65  |ault screen mode|
00036720  20 66 6f 72 20 74 68 69  73 20 6d 6f 6e 69 74 6f  | for this monito|
00036730  72 20 74 79 70 65 0a 09  52 34 20 3d 09 3c 6d 6f  |r type..R4 =.<mo|
00036740  6e 69 74 6f 72 20 74 79  70 65 3d 3e 4f 53 5f 6d  |nitor type=>OS_m|
00036750  6f 6e 69 74 6f 72 74 79  70 65 73 3e 0a 09 52 35  |onitortypes>..R5|
00036760  20 3d 09 30 20 3d 3e 20  73 65 70 61 72 61 74 65  | =.0 => separate|
00036770  20 73 79 6e 63 73 0a 09  20 09 31 20 3d 3e 20 63  | syncs.. .1 => c|
00036780  6f 6d 70 6f 73 69 74 65  20 73 79 6e 63 0a 0a 54  |omposite sync..T|
00036790  68 69 73 20 73 65 72 76  69 63 65 20 69 73 20 69  |his service is i|
000367a0  73 73 75 65 64 20 62 79  20 3c 4f 53 5f 52 65 61  |ssued by <OS_Rea|
000367b0  64 53 79 73 49 6e 66 6f  20 31 3d 3e 4f 53 5f 52  |dSysInfo 1=>OS_R|
000367c0  65 61 64 53 79 73 49 6e  66 6f 2e 31 3e 20 69 66  |eadSysInfo.1> if|
000367d0  20 74 68 65 20 63 6f 6e  66 69 67 75 72 65 64 20  | the configured |
000367e0  76 61 6c 75 65 20 66 6f  72 20 61 6e 79 20 6f 66  |value for any of|
000367f0  20 4d 6f 64 65 2c 20 4d  6f 6e 69 74 6f 72 20 54  | Mode, Monitor T|
00036800  79 70 65 20 6f 72 20 53  79 6e 63 20 69 73 20 22  |ype or Sync is "|
00036810  61 75 74 6f 22 2c 20 74  6f 20 64 65 74 65 72 6d  |auto", to determ|
00036820  69 6e 65 20 74 68 65 73  65 20 70 61 72 61 6d 65  |ine these parame|
00036830  74 65 72 73 20 66 72 6f  6d 20 74 68 65 20 6d 6f  |ters from the mo|
00036840  6e 69 74 6f 72 20 6c 65  61 64 2e 20 4f 6c 64 65  |nitor lead. Olde|
00036850  72 20 6d 61 63 68 69 6e  65 73 20 28 7b 2f 7d 65  |r machines ({/}e|
00036860  2e 67 2e 7b 2f 7d 20 41  34 30 30 20 73 65 72 69  |.g.{/} A400 seri|
00036870  65 73 20 76 69 6e 74 61  67 65 29 20 63 61 6e 6e  |es vintage) cann|
00036880  6f 74 20 72 65 61 64 20  6d 6f 6e 69 74 6f 72 20  |ot read monitor |
00036890  6c 65 61 64 20 49 44 73  0a 23 20 49 20 70 72 65  |lead IDs.# I pre|
000368a0  73 75 6d 65 20 74 68 61  74 20 22 6f 6c 64 65 72  |sume that "older|
000368b0  20 6d 61 63 68 69 6e 65  73 22 20 68 61 76 65 20  | machines" have |
000368c0  39 20 70 69 6e 20 44 20  70 6c 75 67 73 2c 20 6e  |9 pin D plugs, n|
000368d0  6f 74 20 31 35 20 70 69  6e 20 73 75 62 2d 44 73  |ot 15 pin sub-Ds|
000368e0  0a 23 53 75 62 50 61 67  65 20 6c 65 61 64 69 64  |.#SubPage leadid|
000368f0  0a 4d 6f 6e 69 74 6f 72  20 6c 65 61 64 20 49 44  |.Monitor lead ID|
00036900  73 0a 54 68 65 20 6d 6f  6e 69 74 6f 72 20 63 6f  |s.The monitor co|
00036910  6e 65 63 74 6f 72 20 68  61 73 20 34 20 49 44 20  |nector has 4 ID |
00036920  70 69 6e 73 20 28 30 20  74 6f 20 33 29 2e 20 54  |pins (0 to 3). T|
00036930  68 65 20 63 6f 6e 6e 65  63 74 69 6f 6e 20 6f 66  |he connection of|
00036940  20 65 61 63 68 20 70 69  6e 20 69 73 20 72 65 70  | each pin is rep|
00036950  6f 72 74 65 64 20 61 73  20 61 20 76 61 6c 75 65  |orted as a value|
00036960  3a 0a 0a 56 61 6c 75 65  09 49 44 20 70 69 6e 20  |:..Value.ID pin |
00036970  69 73 20 74 69 65 64 20  74 6f 0a 23 4c 69 6e 65  |is tied to.#Line|
00036980  0a 30 09 30 76 0a 31 09  2b 35 76 0a 32 09 48 73  |.0.0v.1.+5v.2.Hs|
00036990  79 6e 63 0a 33 09 69 6e  64 65 74 65 72 6d 69 6e  |ync.3.indetermin|
000369a0  61 74 65 0a 23 54 61 62  0a 0a 54 68 65 20 63 6f  |ate.#Tab..The co|
000369b0  6e 6e 65 63 74 69 6f 6e  73 20 6f 66 20 74 68 65  |nnections of the|
000369c0  20 34 20 70 69 6e 73 20  61 72 65 20 72 65 70 6f  | 4 pins are repo|
000369d0  72 74 65 64 20 69 6e 20  61 20 62 69 74 66 69 65  |rted in a bitfie|
000369e0  6c 64 3a 0a 0a 50 69 6e  09 42 69 74 73 0a 23 4c  |ld:..Pin.Bits.#L|
000369f0  69 6e 65 0a 49 44 30 09  30 2c 31 0a 49 44 31 09  |ine.ID0.0,1.ID1.|
00036a00  32 2c 33 0a 49 44 32 09  34 2c 35 0a 49 44 33 09  |2,3.ID2.4,5.ID3.|
00036a10  36 2c 37 0a 23 54 61 62  0a 0a 46 6f 72 20 65 78  |6,7.#Tab..For ex|
00036a20  61 6d 70 6c 65 20 74 68  65 20 70 6f 72 74 61 62  |ample the portab|
00036a30  6c 65 20 6d 6f 64 75 6c  65 20 72 65 63 6f 67 6e  |le module recogn|
00036a40  69 73 65 73 20 74 68 61  74 20 31 2c 31 2c 31 2c  |ises that 1,1,1,|
00036a50  31 20 6f 63 63 75 72 73  20 77 68 65 6e 20 6e 6f  |1 occurs when no|
00036a60  20 6c 65 61 64 20 69 73  20 63 6f 6e 6e 65 63 74  | lead is connect|
00036a70  65 64 2c 20 61 6e 64 20  73 65 74 73 20 6d 6f 64  |ed, and sets mod|
00036a80  65 20 32 37 2c 20 74 79  70 65 20 35 2c 20 73 79  |e 27, type 5, sy|
00036a90  6e 63 20 30 2e 0a 0a 49  66 20 74 68 65 20 73 65  |nc 0...If the se|
00036aa0  72 76 69 63 65 20 69 73  20 75 6e 63 6c 61 69 6d  |rvice is unclaim|
00036ab0  65 64 20 52 49 53 43 20  4f 53 20 72 65 63 6f 67  |ed RISC OS recog|
00036ac0  6e 69 73 65 73 20 74 68  65 20 66 6f 6c 6c 6f 77  |nises the follow|
00036ad0  69 6e 67 20 76 61 6c 75  65 73 3a 0a 0a 49 44 30  |ing values:..ID0|
00036ae0  09 49 44 31 09 49 44 32  09 54 79 70 65 09 09 53  |.ID1.ID2.Type..S|
00036af0  79 6e 63 09 09 4d 6f 64  65 0a 23 4c 69 6e 65 0a  |ync..Mode.#Line.|
00036b00  48 09 2b 35 76 09 2b 35  76 09 30 20 28 54 56 29  |H.+5v.+5v.0 (TV)|
00036b10  09 09 63 6f 6d 70 6f 73  69 74 65 09 31 32 0a 2b  |..composite.12.+|
00036b20  35 76 09 2b 35 76 09 48  09 31 20 28 4d 75 6c 74  |5v.+5v.H.1 (Mult|
00036b30  69 73 79 6e 63 29 09 63  6f 6d 70 6f 73 69 74 65  |isync).composite|
00036b40  09 32 37 0a 2b 35 76 09  30 76 09 2b 35 76 09 33  |.27.+5v.0v.+5v.3|
00036b50  20 28 4d 6f 6e 6f 20 56  47 41 29 09 73 65 70 61  | (Mono VGA).sepa|
00036b60  72 61 74 65 09 32 37 0a  30 76 09 2b 35 76 09 2b  |rate.27.0v.+5v.+|
00036b70  35 76 09 33 20 28 43 6f  6c 6f 75 72 20 56 47 41  |5v.3 (Colour VGA|
00036b80  29 09 73 65 70 61 72 61  74 65 09 32 37 0a 30 76  |).separate.27.0v|
00036b90  09 2b 35 76 09 30 76 09  34 20 28 53 56 47 41 29  |.+5v.0v.4 (SVGA)|
00036ba0  09 73 65 70 61 72 61 74  65 09 32 37 0a 0a 28 56  |.separate.27..(V|
00036bb0  61 6c 75 65 20 6f 66 20  49 44 33 20 69 73 20 6e  |alue of ID3 is n|
00036bc0  6f 74 20 75 73 65 64 29  0a 0a 49 66 20 65 76 65  |ot used)..If eve|
00036bd0  6e 20 74 68 69 73 20 66  61 69 6c 73 2c 20 52 49  |n this fails, RI|
00036be0  53 43 20 4f 53 20 61 73  73 75 6d 65 73 20 74 79  |SC OS assumes ty|
00036bf0  70 65 20 30 20 2d 20 54  56 20 73 74 61 6e 64 61  |pe 0 - TV standa|
00036c00  72 64 2e 0a 44 41 54 41  77 04 00 00 53 65 72 76  |rd..DATAw...Serv|
00036c10  69 63 65 5f 50 44 72 69  76 65 72 47 65 74 4d 65  |ice_PDriverGetMe|
00036c20  73 73 61 67 65 73 20 28  26 37 38 29 0a 23 50 61  |ssages (&78).#Pa|
00036c30  72 65 6e 74 20 53 65 72  76 69 63 65 5f 49 6e 64  |rent Service_Ind|
00036c40  65 78 0a 3d 3e 09 52 31  20 3d 09 26 37 38 20 28  |ex.=>.R1 =.&78 (|
00036c50  73 65 72 76 69 63 65 20  6e 75 6d 62 65 72 29 0a  |service number).|
00036c60  3c 3d 09 70 72 65 73 65  72 76 65 20 61 6c 6c 20  |<=.preserve all |
00036c70  72 65 67 69 73 65 72 73  20 74 6f 20 70 61 73 73  |regisers to pass|
00036c80  20 6f 6e 2c 20 65 6c 73  65 0a 09 52 31 20 3d 09  | on, else..R1 =.|
00036c90  30 20 28 63 6c 61 69 6d  65 64 29 0a 09 52 33 20  |0 (claimed)..R3 |
00036ca0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 3c 32 30  |=.pointer to <20|
00036cb0  20 62 79 74 65 20 62 6c  6f 63 6b 3d 3e 2e 62 6c  | byte block=>.bl|
00036cc0  6f 63 6b 3e 0a 0a 54 68  69 73 20 73 65 72 76 69  |ock>..This servi|
00036cd0  63 65 20 69 73 20 69 73  73 75 65 64 20 77 68 65  |ce is issued whe|
00036ce0  6e 20 61 20 50 44 72 69  76 65 72 20 6d 6f 64 75  |n a PDriver modu|
00036cf0  6c 65 20 69 73 20 61 62  6f 75 74 20 74 6f 20 6f  |le is about to o|
00036d00  70 65 6e 20 52 65 73 6f  75 72 63 65 73 3a 24 2e  |pen Resources:$.|
00036d10  52 65 73 6f 75 72 63 65  73 2e 50 44 72 69 76 65  |Resources.PDrive|
00036d20  72 73 2e 4d 65 73 73 61  67 65 73 2e 20 49 66 20  |rs.Messages. If |
00036d30  61 6e 6f 74 68 65 72 20  50 44 72 69 76 65 72 20  |another PDriver |
00036d40  6d 6f 64 75 6c 65 20 68  61 73 20 61 6c 72 65 61  |module has alrea|
00036d50  64 79 20 6f 70 65 6e 65  64 20 74 68 69 73 20 66  |dy opened this f|
00036d60  69 6c 65 2c 20 69 74 20  73 68 6f 75 6c 64 20 63  |ile, it should c|
00036d70  6c 61 69 6d 20 74 68 65  20 73 65 72 76 69 63 65  |laim the service|
00036d80  20 61 6e 64 20 72 65 74  75 72 6e 20 74 68 65 20  | and return the |
00036d90  3c 62 6c 6f 63 6b 3d 3e  2e 62 6c 6f 63 6b 3e 2e  |<block=>.block>.|
00036da0  0a 0a 49 66 20 61 20 50  44 72 69 76 65 72 20 6d  |..If a PDriver m|
00036db0  6f 64 75 6c 65 20 69 73  73 75 65 73 20 74 68 69  |odule issues thi|
00036dc0  73 20 73 65 72 76 69 63  65 20 61 6e 64 20 69 74  |s service and it|
00036dd0  20 67 6f 65 73 20 75 6e  63 6c 61 69 6d 65 64 2c  | goes unclaimed,|
00036de0  20 69 74 20 73 68 6f 75  6c 64 20 61 6c 6c 6f 63  | it should alloc|
00036df0  61 74 65 20 32 30 20 62  79 74 65 73 20 77 69 74  |ate 20 bytes wit|
00036e00  68 20 3c 4f 53 5f 4d 6f  64 75 6c 65 20 36 3d 3e  |h <OS_Module 6=>|
00036e10  4f 53 5f 4d 6f 64 75 6c  65 36 3e 2c 20 70 61 73  |OS_Module6>, pas|
00036e20  73 20 74 68 65 20 62 6c  6f 63 6b 20 74 6f 20 3c  |s the block to <|
00036e30  4d 65 73 73 61 67 65 54  72 61 6e 73 5f 4f 70 65  |MessageTrans_Ope|
00036e40  6e 46 69 6c 65 3e 2c 20  61 6e 64 20 73 65 74 20  |nFile>, and set |
00036e50  74 68 65 20 6c 61 73 74  20 77 6f 72 64 20 28 75  |the last word (u|
00036e60  73 61 67 65 20 63 6f 75  6e 74 29 20 74 6f 20 31  |sage count) to 1|
00036e70  2e 0a 0a 49 66 20 74 68  65 20 73 65 72 76 69 63  |...If the servic|
00036e80  65 20 69 73 20 63 6c 61  69 6d 65 64 2c 20 74 68  |e is claimed, th|
00036e90  65 6e 20 74 68 65 20 50  44 72 69 76 65 72 20 6d  |en the PDriver m|
00036ea0  6f 64 75 6c 65 20 73 68  6f 75 6c 64 20 69 6e 63  |odule should inc|
00036eb0  72 65 61 73 65 20 74 68  65 20 75 73 61 67 65 20  |rease the usage |
00036ec0  63 6f 75 6e 74 20 69 6e  20 74 68 65 20 3c 62 6c  |count in the <bl|
00036ed0  6f 63 6b 3d 3e 2e 62 6c  6f 63 6b 3e 20 62 79 20  |ock=>.block> by |
00036ee0  31 2e 0a 0a 45 69 74 68  65 72 20 77 61 79 2c 20  |1...Either way, |
00036ef0  77 68 65 6e 20 74 68 65  20 50 44 72 69 76 65 72  |when the PDriver|
00036f00  20 6d 6f 64 75 6c 65 20  69 73 20 66 69 6e 69 73  | module is finis|
00036f10  68 65 64 20 77 69 74 68  20 74 68 65 20 66 69 6c  |hed with the fil|
00036f20  65 2c 20 69 74 20 73 68  6f 75 6c 64 20 64 65 63  |e, it should dec|
00036f30  72 65 61 73 65 20 74 68  65 20 75 73 75 61 67 65  |rease the usuage|
00036f40  20 63 6f 75 6e 74 20 69  6e 20 74 68 65 20 3c 62  | count in the <b|
00036f50  6c 6f 63 6b 3d 3e 2e 62  6c 6f 63 6b 3e 20 62 79  |lock=>.block> by|
00036f60  20 31 2e 20 49 66 20 74  68 69 73 20 72 65 64 75  | 1. If this redu|
00036f70  63 65 73 20 74 68 65 20  63 6f 75 6e 74 20 74 6f  |ces the count to|
00036f80  20 30 2c 20 69 74 20 73  68 6f 75 6c 64 20 63 61  | 0, it should ca|
00036f90  6c 6c 20 3c 4d 65 73 73  61 67 65 54 72 61 6e 73  |ll <MessageTrans|
00036fa0  5f 43 6c 6f 73 65 46 69  6c 65 3e 20 61 6e 64 20  |_CloseFile> and |
00036fb0  74 68 65 6e 20 3c 4f 53  5f 4d 6f 64 75 6c 65 20  |then <OS_Module |
00036fc0  37 3d 3e 4f 53 5f 4d 6f  64 75 6c 65 37 3e 20 74  |7=>OS_Module7> t|
00036fd0  6f 20 66 72 65 65 20 74  68 65 20 62 6c 6f 63 6b  |o free the block|
00036fe0  2e 0a 0a 53 69 6d 70 6c  65 20 65 68 3f 0a 23 20  |...Simple eh?.# |
00036ff0  59 65 61 68 2c 20 72 69  67 68 74 20 21 0a 23 53  |Yeah, right !.#S|
00037000  75 62 70 61 67 65 20 62  6c 6f 63 6b 0a 50 44 72  |ubpage block.PDr|
00037010  69 76 65 72 47 65 74 4d  65 73 73 61 67 65 73 20  |iverGetMessages |
00037020  42 6c 6f 63 6b 0a 53 69  7a 65 09 4d 65 61 6e 69  |Block.Size.Meani|
00037030  6e 67 0a 23 4c 69 6e 65  0a 31 36 09 4d 65 73 73  |ng.#Line.16.Mess|
00037040  61 67 65 54 72 61 6e 73  20 62 6c 6f 63 6b 2c 20  |ageTrans block, |
00037050  66 72 6f 6d 20 3c 4d 65  73 73 61 67 65 54 72 61  |from <MessageTra|
00037060  6e 73 5f 4f 70 65 6e 46  69 6c 65 3e 0a 34 09 75  |ns_OpenFile>.4.u|
00037070  73 61 67 65 20 63 6f 75  6e 74 0a 00 44 41 54 41  |sage count..DATA|
00037080  91 00 00 00 53 65 72 76  69 63 65 5f 53 63 72 65  |....Service_Scre|
00037090  65 6e 42 6c 61 6e 6b 65  64 20 28 26 37 41 29 0a  |enBlanked (&7A).|
000370a0  23 50 61 72 65 6e 74 20  53 65 72 76 69 63 65 5f  |#Parent Service_|
000370b0  69 6e 64 65 78 0a 3d 3e  09 52 31 20 3d 09 26 37  |index.=>.R1 =.&7|
000370c0  41 20 28 73 65 72 76 69  63 65 20 6e 75 6d 62 65  |A (service numbe|
000370d0  72 29 0a 0a 54 68 69 73  20 73 65 72 76 69 63 65  |r)..This service|
000370e0  20 69 73 20 69 73 73 75  65 64 20 6a 75 73 74 20  | is issued just |
000370f0  61 66 74 65 72 20 74 68  65 20 73 63 72 65 65 6e  |after the screen|
00037100  20 69 73 20 62 6c 61 6e  6b 65 64 2e 0a 00 00 00  | is blanked.....|
00037110  44 41 54 41 15 01 00 00  53 65 72 76 69 63 65 5f  |DATA....Service_|
00037120  53 63 72 65 65 6e 52 65  73 74 6f 72 65 64 20 28  |ScreenRestored (|
00037130  26 37 42 29 0a 23 50 61  72 65 6e 74 20 73 65 72  |&7B).#Parent ser|
00037140  76 69 63 65 5f 69 6e 64  65 78 0a 3d 3e 09 52 30  |vice_index.=>.R0|
00037150  20 3d 09 30 20 66 6f 72  20 6e 6f 72 6d 61 6c 20  | =.0 for normal |
00037160  72 65 73 74 6f 72 61 74  69 6f 6e 0a 09 20 09 46  |restoration.. .F|
00037170  6c 61 67 73 20 70 61 73  73 65 64 20 69 6e 20 52  |lags passed in R|
00037180  34 20 74 6f 20 3c 53 63  72 65 65 6e 42 6c 61 6e  |4 to <ScreenBlan|
00037190  6b 65 72 5f 43 6f 6e 74  72 6f 6c 20 32 3d 3e 53  |ker_Control 2=>S|
000371a0  63 72 65 65 6e 42 6c 61  6e 6b 65 72 5f 43 6f 6e  |creenBlanker_Con|
000371b0  74 72 6f 6c 2e 32 3e 20  69 66 20 73 63 72 65 65  |trol.2> if scree|
000371c0  6e 20 77 61 73 20 66 6c  61 73 68 65 64 2e 0a 09  |n was flashed...|
000371d0  52 31 20 3d 09 26 37 42  20 28 73 65 72 76 69 63  |R1 =.&7B (servic|
000371e0  65 20 6e 75 6d 62 65 72  29 0a 0a 54 68 69 73 20  |e number)..This |
000371f0  73 65 72 76 69 63 65 20  69 73 20 69 73 73 75 65  |service is issue|
00037200  64 20 6a 75 73 74 20 61  66 74 65 72 20 74 68 65  |d just after the|
00037210  20 73 63 72 65 65 6e 20  69 73 20 72 65 73 74 6f  | screen is resto|
00037220  72 65 64 2e 0a 00 00 00  44 41 54 41 36 01 00 00  |red.....DATA6...|
00037230  53 65 72 76 69 63 65 5f  44 69 73 63 44 69 73 6d  |Service_DiscDism|
00037240  6f 75 6e 74 65 64 20 28  26 37 44 29 0a 23 50 61  |ounted (&7D).#Pa|
00037250  72 65 6e 74 20 53 65 72  76 69 63 65 5f 49 6e 64  |rent Service_Ind|
00037260  65 78 0a 3d 3e 09 52 31  20 3d 09 26 37 44 20 28  |ex.=>.R1 =.&7D (|
00037270  73 65 72 76 69 63 65 20  6e 75 6d 62 65 72 29 0a  |service number).|
00037280  09 52 32 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R2 =.pointer to|
00037290  20 22 66 69 6c 69 6e 67  5f 73 79 73 74 65 6d 3a  | "filing_system:|
000372a0  3a 64 69 73 63 22 0a 0a  54 68 69 73 20 73 65 72  |:disc"..This ser|
000372b0  76 69 63 65 20 69 73 20  69 73 73 75 65 64 20 77  |vice is issued w|
000372c0  68 65 6e 20 61 20 64 69  73 63 20 69 73 20 64 69  |hen a disc is di|
000372d0  73 6d 6f 75 6e 74 65 64  20 2d 20 74 68 69 73 20  |smounted - this |
000372e0  61 6c 6c 6f 77 73 20 74  68 65 20 46 69 6c 65 72  |allows the Filer|
000372f0  20 74 6f 20 63 6c 6f 73  65 20 6f 70 65 6e 20 64  | to close open d|
00037300  69 72 65 63 74 6f 72 79  20 64 69 73 70 6c 61 79  |irectory display|
00037310  73 2e 20 44 69 73 63 20  6e 61 6d 65 20 73 68 6f  |s. Disc name sho|
00037320  75 6c 64 20 62 65 20 75  73 65 64 20 69 6e 20 70  |uld be used in p|
00037330  72 65 66 65 72 65 6e 63  65 20 74 6f 20 64 69 73  |reference to dis|
00037340  63 20 6e 75 6d 62 65 72  20 69 6e 20 74 68 65 20  |c number in the |
00037350  73 74 72 69 6e 67 20 69  6e 20 52 32 2e 0a 00 00  |string in R2....|
00037360  44 41 54 41 4b 01 00 00  53 65 72 76 69 63 65 5f  |DATAK...Service_|
00037370  53 68 75 74 44 6f 77 6e  20 28 26 37 45 29 0a 23  |ShutDown (&7E).#|
00037380  50 61 72 65 6e 74 20 53  65 72 76 69 63 65 5f 69  |Parent Service_i|
00037390  6e 64 65 78 0a 3d 3e 09  52 31 20 3d 09 26 37 45  |ndex.=>.R1 =.&7E|
000373a0  20 28 73 65 72 76 69 63  65 20 6e 75 6d 62 65 72  | (service number|
000373b0  29 0a 3c 3d 09 52 31 20  3d 09 30 20 74 6f 20 63  |).<=.R1 =.0 to c|
000373c0  6c 61 69 6d 2c 20 70 72  65 73 65 72 76 65 64 20  |laim, preserved |
000373d0  6f 74 68 65 72 77 69 73  65 0a 0a 54 68 69 73 20  |otherwise..This |
000373e0  73 65 72 76 69 63 65 20  69 73 20 69 73 73 75 65  |service is issue|
000373f0  64 20 62 79 20 74 68 65  20 54 61 73 6b 20 6d 61  |d by the Task ma|
00037400  6e 61 67 65 72 20 77 68  65 6e 20 69 74 20 69 73  |nager when it is|
00037410  20 61 73 6b 65 64 20 74  6f 20 70 65 72 66 6f 72  | asked to perfor|
00037420  6d 20 61 20 73 68 75 74  64 6f 77 6e 20 2d 20 69  |m a shutdown - i|
00037430  66 20 69 74 20 69 73 20  63 6c 61 69 6d 65 64 20  |f it is claimed |
00037440  74 68 65 6e 20 74 68 65  20 73 68 75 74 64 6f 77  |then the shutdow|
00037450  6e 20 77 69 6c 6c 20 6e  6f 74 20 68 61 70 70 65  |n will not happe|
00037460  6e 2e 20 52 61 6d 46 53  20 77 69 6c 6c 20 63 6c  |n. RamFS will cl|
00037470  61 69 6d 20 74 68 69 73  20 73 65 72 76 69 63 65  |aim this service|
00037480  20 74 6f 20 77 61 72 6e  20 74 68 65 20 75 73 65  | to warn the use|
00037490  72 20 6f 66 20 61 20 6e  6f 6e 2d 65 6d 70 74 79  |r of a non-empty|
000374a0  20 52 41 4d 20 64 69 73  63 2e 0a 00 44 41 54 41  | RAM disc...DATA|
000374b0  32 01 00 00 53 65 72 76  69 63 65 5f 50 44 72 69  |2...Service_PDri|
000374c0  76 65 72 43 68 61 6e 67  65 64 20 28 26 37 46 29  |verChanged (&7F)|
000374d0  0a 23 50 61 72 65 6e 74  20 53 65 72 76 69 63 65  |.#Parent Service|
000374e0  5f 49 6e 64 65 78 0a 3d  3e 09 52 31 20 3d 09 26  |_Index.=>.R1 =.&|
000374f0  37 46 20 28 73 65 72 76  69 63 65 20 6e 75 6d 62  |7F (service numb|
00037500  65 72 29 0a 09 52 32 20  3d 09 3c 70 72 69 6e 74  |er)..R2 =.<print|
00037510  65 72 20 64 72 69 76 65  72 20 6e 75 6d 62 65 72  |er driver number|
00037520  3d 3e 50 44 72 69 76 65  72 5f 70 72 69 6e 74 65  |=>PDriver_printe|
00037530  72 6e 75 6d 62 65 72 73  3e 0a 0a 54 68 69 73 20  |rnumbers>..This |
00037540  73 65 72 76 69 63 65 20  69 73 20 69 73 73 75 65  |service is issue|
00037550  64 20 77 68 65 6e 20 50  44 72 69 76 65 72 20 63  |d when PDriver c|
00037560  68 61 6e 67 65 73 20 74  68 65 20 63 75 72 72 65  |hanges the curre|
00037570  6e 74 6c 79 20 73 65 6c  65 63 74 65 64 20 70 72  |ntly selected pr|
00037580  69 6e 74 65 72 2e 20 21  50 72 69 6e 74 65 72 73  |inter. !Printers|
00037590  20 77 69 6c 6c 20 69 73  73 75 65 20 3c 4d 65 73  | will issue <Mes|
000375a0  73 61 67 65 5f 53 65 74  50 72 69 6e 74 65 72 3d  |sage_SetPrinter=|
000375b0  3e 57 69 6d 70 3a 4d 73  67 5f 38 30 31 34 37 3e  |>Wimp:Msg_80147>|
000375c0  20 77 68 65 6e 20 74 68  65 20 70 72 69 6e 74 65  | when the printe|
000375d0  72 20 69 73 20 63 68 61  6e 67 65 64 2e 0a 00 00  |r is changed....|
000375e0  44 41 54 41 90 00 00 00  53 65 72 76 69 63 65 5f  |DATA....Service_|
000375f0  53 68 75 74 44 6f 77 6e  43 6f 6d 70 6c 65 74 65  |ShutDownComplete|
00037600  20 28 26 38 30 29 0a 23  50 61 72 65 6e 74 20 53  | (&80).#Parent S|
00037610  65 72 76 69 63 65 5f 69  6e 64 65 78 0a 3d 3e 09  |ervice_index.=>.|
00037620  52 31 20 3d 09 26 38 30  20 28 73 65 72 76 69 63  |R1 =.&80 (servic|
00037630  65 20 6e 75 6d 62 65 72  29 0a 23 57 72 61 70 20  |e number).#Wrap |
00037640  6f 66 66 0a 0a 22 49 73  20 69 73 20 6e 6f 77 20  |off.."Is is now |
00037650  73 61 66 65 20 74 6f 20  74 75 72 6e 20 79 6f 75  |safe to turn you|
00037660  72 20 63 6f 6d 70 75 74  65 72 20 6f 66 66 22 0a  |r computer off".|
00037670  44 41 54 41 c8 00 00 00  53 65 72 76 69 63 65 5f  |DATA....Service_|
00037680  57 69 6d 70 53 70 72 69  74 65 73 4d 6f 76 65 64  |WimpSpritesMoved|
00037690  20 28 26 38 35 29 0a 23  50 61 72 65 6e 74 20 53  | (&85).#Parent S|
000376a0  65 72 76 69 63 65 5f 69  6e 64 65 78 0a 3d 3e 09  |ervice_index.=>.|
000376b0  52 31 20 3d 09 26 38 35  20 28 73 65 72 76 69 63  |R1 =.&85 (servic|
000376c0  65 20 6e 75 6d 62 65 72  29 0a 09 52 32 20 3d 09  |e number)..R2 =.|
000376d0  70 6f 69 6e 74 65 72 20  74 6f 20 52 4f 4d 20 61  |pointer to ROM a|
000376e0  72 65 61 0a 09 52 33 20  3d 09 70 6f 69 6e 74 65  |rea..R3 =.pointe|
000376f0  72 20 74 6f 20 52 41 4d  20 61 72 65 61 0a 0a 54  |r to RAM area..T|
00037700  68 69 73 20 73 65 72 76  69 63 65 20 69 73 20 69  |his service is i|
00037710  73 73 75 65 64 20 69 66  20 74 68 65 20 73 70 72  |ssued if the spr|
00037720  69 74 65 20 70 6f 6f 6c  73 20 68 61 76 65 20 74  |ite pools have t|
00037730  6f 20 6d 6f 76 65 2e 0a  44 41 54 41 38 01 00 00  |o move..DATA8...|
00037740  53 65 72 76 69 63 65 5f  57 69 6d 70 52 65 67 69  |Service_WimpRegi|
00037750  73 74 65 72 46 69 6c 65  72 73 20 28 26 38 36 29  |sterFilers (&86)|
00037760  0a 23 50 61 72 65 6e 74  20 53 65 72 76 69 63 65  |.#Parent Service|
00037770  5f 69 6e 64 65 78 0a 3d  3e 09 52 31 20 3d 09 26  |_index.=>.R1 =.&|
00037780  38 36 20 28 73 65 72 76  69 63 65 20 6e 75 6d 62  |86 (service numb|
00037790  65 72 29 0a 0a 54 68 69  73 20 73 65 72 76 69 63  |er)..This servic|
000377a0  65 20 69 73 20 69 73 73  75 65 64 20 77 68 65 6e  |e is issued when|
000377b0  20 74 68 65 20 57 69 6d  70 20 72 65 73 65 74 73  | the Wimp resets|
000377c0  20 74 68 65 20 66 69 6c  74 65 72 20 74 61 62 6c  | the filter tabl|
000377d0  65 20 74 6f 20 69 74 73  20 64 65 66 61 75 6c 74  |e to its default|
000377e0  20 73 74 61 74 65 2e 20  59 6f 75 20 73 68 6f 75  | state. You shou|
000377f0  6c 64 20 72 65 67 69 73  74 65 72 20 61 6e 79 20  |ld register any |
00037800  66 69 6c 74 65 72 73 20  77 69 74 68 20 3c 57 69  |filters with <Wi|
00037810  6d 70 3a 57 69 6d 70 5f  52 65 67 69 73 74 65 72  |mp:Wimp_Register|
00037820  46 69 6c 74 65 72 3e 2e  20 49 74 20 73 68 6f 75  |Filter>. It shou|
00037830  6c 64 20 6f 6e 6c 79 20  62 65 20 75 73 65 64 20  |ld only be used |
00037840  69 66 20 79 6f 75 20 61  72 65 20 61 20 72 65 70  |if you are a rep|
00037850  6c 61 63 65 6d 65 6e 74  20 74 6f 20 74 68 65 20  |lacement to the |
00037860  46 69 6c 74 65 72 20 4d  61 6e 61 67 65 72 2e 0a  |Filter Manager..|
00037870  44 41 54 41 da 00 00 00  53 65 72 76 69 63 65 5f  |DATA....Service_|
00037880  46 69 6c 74 65 72 4d 61  6e 61 67 65 72 49 6e 73  |FilterManagerIns|
00037890  74 61 6c 6c 65 64 20 28  26 38 37 29 0a 23 50 61  |talled (&87).#Pa|
000378a0  72 65 6e 74 20 53 65 72  76 69 63 65 5f 49 6e 64  |rent Service_Ind|
000378b0  65 78 0a 3d 3e 09 52 31  20 3d 09 26 38 37 20 28  |ex.=>.R1 =.&87 (|
000378c0  73 65 72 76 69 63 65 20  6e 75 6d 62 65 72 29 0a  |service number).|
000378d0  0a 54 68 69 73 20 73 65  72 76 69 63 65 20 69 73  |.This service is|
000378e0  20 69 73 73 75 65 64 20  77 68 65 6e 20 74 68 65  | issued when the|
000378f0  20 3c 46 69 6c 74 65 72  4d 61 6e 61 67 65 72 3d  | <FilterManager=|
00037900  3e 57 69 6d 70 3a 46 69  6c 74 65 72 5f 3e 20 73  |>Wimp:Filter_> s|
00037910  74 61 72 74 73 2c 20 74  6f 20 69 6e 64 69 63 61  |tarts, to indica|
00037920  74 65 20 74 68 61 74 20  66 69 6c 74 65 72 73 20  |te that filters |
00037930  63 61 6e 20 62 65 20 72  65 67 69 73 74 65 72 65  |can be registere|
00037940  64 20 77 69 74 68 20 69  74 2e 00 00 44 41 54 41  |d with it...DATA|
00037950  cb 00 00 00 53 65 72 76  69 63 65 5f 46 69 6c 74  |....Service_Filt|
00037960  65 72 4d 61 6e 61 67 65  72 44 79 69 6e 67 20 28  |erManagerDying (|
00037970  26 38 38 29 0a 23 50 61  72 65 6e 74 20 53 65 72  |&88).#Parent Ser|
00037980  76 69 63 65 5f 49 6e 64  65 78 0a 3d 3e 09 52 31  |vice_Index.=>.R1|
00037990  20 3d 09 26 38 38 20 28  73 65 72 76 69 63 65 20  | =.&88 (service |
000379a0  6e 75 6d 62 65 72 29 0a  0a 54 68 69 73 20 73 65  |number)..This se|
000379b0  72 76 69 63 65 20 69 73  20 69 73 73 75 65 64 20  |rvice is issued |
000379c0  77 68 65 6e 20 74 68 65  20 46 69 6c 74 65 72 4d  |when the FilterM|
000379d0  61 6e 61 67 65 72 20 69  73 20 71 75 69 74 69 6e  |anager is quitin|
000379e0  67 2c 20 74 6f 20 69 6e  66 6f 72 6d 20 66 69 6c  |g, to inform fil|
000379f0  74 65 72 73 20 74 68 61  74 20 74 68 65 79 20 68  |ters that they h|
00037a00  61 76 65 20 62 65 65 6e  20 64 65 72 65 67 69 73  |ave been deregis|
00037a10  74 65 72 65 64 2e 0a 00  44 41 54 41 b1 01 00 00  |tered...DATA....|
00037a20  53 65 72 76 69 63 65 5f  4d 6f 64 65 43 68 61 6e  |Service_ModeChan|
00037a30  67 69 6e 67 20 28 26 38  39 29 0a 23 50 61 72 65  |ging (&89).#Pare|
00037a40  6e 74 20 53 65 72 76 69  63 65 5f 49 6e 64 65 78  |nt Service_Index|
00037a50  0a 3d 3e 09 52 31 20 3d  09 26 38 39 20 28 73 65  |.=>.R1 =.&89 (se|
00037a60  72 76 69 63 65 20 6e 75  6d 62 65 72 29 0a 09 52  |rvice number)..R|
00037a70  32 20 3d 09 3c 6d 6f 64  65 20 6e 75 6d 62 65 72  |2 =.<mode number|
00037a80  3d 3e 56 44 55 3a 32 32  61 3e 0a 09 52 33 20 3d  |=>VDU:22a>..R3 =|
00037a90  09 3c 6d 6f 6e 69 74 6f  72 20 74 79 70 65 3d 3e  |.<monitor type=>|
00037aa0  4f 53 5f 6d 6f 6e 69 74  6f 72 74 79 70 65 73 3e  |OS_monitortypes>|
00037ab0  0a 3c 3d 09 52 31 2d 52  33 20 70 72 65 73 65 72  |.<=.R1-R3 preser|
00037ac0  76 65 64 20 28 64 6f 20  6e 6f 74 20 63 6c 61 69  |ved (do not clai|
00037ad0  6d 29 0a 0a 54 68 69 73  20 73 65 72 76 69 63 65  |m)..This service|
00037ae0  20 69 73 20 69 73 73 75  65 64 20 77 68 65 6e 20  | is issued when |
00037af0  61 20 6d 6f 64 65 20 63  68 61 6e 67 65 20 61 62  |a mode change ab|
00037b00  6f 75 74 20 74 6f 20 74  61 6b 65 20 70 6c 61 63  |out to take plac|
00037b10  65 20 28 6f 72 20 61 66  74 65 72 20 3c 53 65 72  |e (or after <Ser|
00037b20  76 69 63 65 5f 50 72 65  52 65 73 65 74 3d 3e 53  |vice_PreReset=>S|
00037b30  65 72 76 69 63 65 5f 34  35 3e 29 2e 20 49 74 20  |ervice_45>). It |
00037b40  69 73 20 69 6e 74 65 6e  64 65 64 20 74 6f 20 62  |is intended to b|
00037b50  65 20 75 73 65 64 20 62  79 20 6d 6f 64 75 6c 65  |e used by module|
00037b60  73 20 74 68 61 74 20 77  68 69 63 68 20 77 68 69  |s that which whi|
00037b70  63 68 20 74 6f 20 63 6c  61 69 6d 20 3c 50 61 6c  |ch to claim <Pal|
00037b80  65 74 74 65 56 3d 3e 56  65 63 74 6f 72 5f 70 61  |etteV=>Vector_pa|
00037b90  6c 65 74 74 65 76 3e 20  66 6f 72 20 70 61 72 74  |lettev> for part|
00037ba0  69 63 75 6c 61 72 20 63  6f 6d 62 69 6e 61 74 69  |icular combinati|
00037bb0  6f 6e 73 20 6f 66 20 6d  6f 64 65 20 61 6e 64 20  |ons of mode and |
00037bc0  6d 6f 6e 69 74 6f 72 2e  0a 00 00 00 44 49 52 24  |monitor.....DIR$|
00037bd0  f0 00 00 00 f0 00 00 00  bc 7c 03 00 48 fd ff ff  |.........|..H...|
00037be0  84 63 73 19 95 02 00 00  03 00 00 00 00 00 00 00  |.cs.............|
00037bf0  21 52 6f 6f 74 00 00 00  54 7f 03 00 48 fd ff ff  |!Root...T...H...|
00037c00  0c 2e 68 2a fd 01 00 00  03 00 00 00 00 00 00 00  |..h*............|
00037c10  5f 30 00 00 54 81 03 00  48 fd ff ff 3e 3d 68 2a  |_0..T...H...>=h*|
00037c20  ff 01 00 00 03 00 00 00  00 00 00 00 5f 31 00 00  |............_1..|
00037c30  54 83 03 00 48 fd ff ff  4f ef e7 27 0c 02 00 00  |T...H...O..'....|
00037c40  03 00 00 00 00 00 00 00  5f 32 00 00 60 85 03 00  |........_2..`...|
00037c50  48 fd ff ff 85 69 e7 27  0f 02 00 00 03 00 00 00  |H....i.'........|
00037c60  00 00 00 00 5f 33 00 00  70 87 03 00 48 fd ff ff  |...._3..p...H...|
00037c70  72 ea e7 27 e9 01 00 00  03 00 00 00 00 00 00 00  |r..'............|
00037c80  5f 34 00 00 5c 89 03 00  48 fd ff ff 16 6e e7 27  |_4..\...H....n.'|
00037c90  56 02 00 00 03 00 00 00  00 00 00 00 5f 35 00 00  |V..........._5..|
00037ca0  b4 8b 03 00 48 fd ff ff  c5 b8 0e 1f 35 01 00 00  |....H.......5...|
00037cb0  03 00 00 00 00 00 00 00  5f 36 00 00 44 41 54 41  |........_6..DATA|
00037cc0  95 02 00 00 53 65 72 76  69 63 65 5f 49 6e 74 65  |....Service_Inte|
00037cd0  72 6e 61 74 69 6f 6e 61  6c 20 28 26 34 33 29 0a  |rnational (&43).|
00037ce0  23 50 61 72 65 6e 74 20  53 65 72 76 69 63 65 5f  |#Parent Service_|
00037cf0  49 6e 64 65 78 0a 23 50  72 65 66 69 78 20 73 65  |Index.#Prefix se|
00037d00  72 76 69 63 65 5f 34 33  5f 0a 3d 3e 09 52 31 20  |rvice_43_.=>.R1 |
00037d10  3d 09 26 34 33 20 28 72  65 61 73 6f 6e 20 63 6f  |=.&43 (reason co|
00037d20  64 65 29 0a 09 52 32 20  3d 09 73 75 62 20 72 65  |de)..R2 =.sub re|
00037d30  61 73 6f 6e 20 63 6f 64  65 0a 09 52 33 2d 52 35  |ason code..R3-R5|
00037d40  20 64 65 70 65 6e 64 20  6f 6e 20 52 32 0a 3c 3d  | depend on R2.<=|
00037d50  09 52 31 20 3d 09 30 20  74 6f 20 63 6c 61 69 6d  |.R1 =.0 to claim|
00037d60  2c 20 70 72 65 73 65 72  76 65 64 20 6f 74 68 65  |, preserved othe|
00037d70  72 77 69 73 65 0a 09 52  34 2c 52 35 20 64 65 70  |rwise..R4,R5 dep|
00037d80  65 6e 64 20 6f 6e 20 52  32 0a 0a 54 68 69 73 20  |end on R2..This |
00037d90  73 65 72 76 69 63 65 20  70 72 6f 76 69 64 65 73  |service provides|
00037da0  20 61 20 76 61 72 69 65  74 79 20 6f 66 20 63 6f  | a variety of co|
00037db0  6e 76 65 72 73 69 6f 6e  20 61 6e 64 20 69 6e 66  |nversion and inf|
00037dc0  6f 6d 61 74 69 6f 6e 20  66 75 6e 63 74 69 6f 6e  |omation function|
00037dd0  73 3a 0a 0a 52 32 09 53  65 72 76 69 63 65 0a 23  |s:..R2.Service.#|
00037de0  4c 69 6e 65 0a 3c 30 3e  09 3c 43 6f 6e 76 65 72  |Line.<0>.<Conver|
00037df0  74 20 63 6f 75 6e 74 72  79 20 6e 61 6d 65 20 74  |t country name t|
00037e00  6f 20 6e 75 6d 62 65 72  3d 3e 73 65 72 76 69 63  |o number=>servic|
00037e10  65 5f 34 33 5f 30 3e 0a  3c 31 3e 09 3c 43 6f 6e  |e_43_0>.<1>.<Con|
00037e20  76 65 72 74 20 61 6c 70  68 61 62 65 74 20 6e 61  |vert alphabet na|
00037e30  6d 65 20 74 6f 20 6e 75  6d 62 65 72 3d 3e 73 65  |me to number=>se|
00037e40  72 76 69 63 65 5f 34 33  5f 31 3e 0a 3c 32 3e 09  |rvice_43_1>.<2>.|
00037e50  3c 43 6f 6e 76 65 72 74  20 63 6f 75 6e 74 72 79  |<Convert country|
00037e60  20 6e 75 6d 62 65 72 20  74 6f 20 6e 61 6d 65 3d  | number to name=|
00037e70  3e 73 65 72 76 69 63 65  5f 34 33 5f 32 3e 0a 3c  |>service_43_2>.<|
00037e80  33 3e 09 3c 43 6f 6e 76  65 72 74 20 61 6c 70 68  |3>.<Convert alph|
00037e90  61 62 65 74 20 6e 75 6d  62 65 72 20 74 6f 20 6e  |abet number to n|
00037ea0  61 6d 65 3d 3e 73 65 72  76 69 63 65 5f 34 33 5f  |ame=>service_43_|
00037eb0  33 3e 0a 3c 34 3e 09 3c  43 6f 6e 76 65 72 74 20  |3>.<4>.<Convert |
00037ec0  63 6f 75 6e 74 72 79 20  6e 75 6d 62 65 72 20 74  |country number t|
00037ed0  6f 20 61 6c 70 68 61 62  65 74 20 6e 75 6d 62 65  |o alphabet numbe|
00037ee0  72 3d 3e 73 65 72 76 69  63 65 5f 34 33 5f 34 3e  |r=>service_43_4>|
00037ef0  0a 3c 35 3e 09 3c 44 65  66 69 6e 65 20 72 61 6e  |.<5>.<Define ran|
00037f00  67 65 20 6f 66 20 63 68  61 72 61 63 74 65 72 73  |ge of characters|
00037f10  3d 3e 73 65 72 76 69 63  65 5f 34 33 5f 35 3e 0a  |=>service_43_5>.|
00037f20  3c 36 3e 09 3c 49 6e 66  6f 20 2d 20 4e 65 77 20  |<6>.<Info - New |
00037f30  6b 65 79 62 6f 61 72 64  20 73 65 6c 65 63 74 65  |keyboard selecte|
00037f40  64 3d 3e 73 65 72 76 69  63 65 5f 34 33 5f 36 3e  |d=>service_43_6>|
00037f50  0a 00 00 00 44 41 54 41  fd 01 00 00 53 65 72 76  |....DATA....Serv|
00037f60  69 63 65 5f 49 6e 74 65  72 6e 61 74 69 6f 6e 61  |ice_Internationa|
00037f70  6c 20 30 0a 23 50 61 72  65 6e 74 20 53 65 72 76  |l 0.#Parent Serv|
00037f80  69 63 65 5f 34 33 0a 3d  3e 09 52 31 20 3d 09 26  |ice_43.=>.R1 =.&|
00037f90  34 33 20 28 72 65 61 73  6f 6e 20 63 6f 64 65 29  |43 (reason code)|
00037fa0  0a 09 52 32 20 3d 09 30  20 28 73 75 62 20 72 65  |..R2 =.0 (sub re|
00037fb0  61 73 6f 6e 20 63 6f 64  65 29 0a 09 52 33 20 3d  |ason code)..R3 =|
00037fc0  09 70 6f 69 6e 74 65 72  20 74 6f 20 6e 75 6c 6c  |.pointer to null|
00037fd0  20 74 65 72 6d 69 6e 61  74 65 64 20 3c 63 6f 75  | terminated <cou|
00037fe0  6e 74 72 79 20 6e 61 6d  65 3d 3e 54 65 72 72 69  |ntry name=>Terri|
00037ff0  74 6f 72 79 5f 6e 75 6d  62 65 72 73 3e 0a 3c 3d  |tory_numbers>.<=|
00038000  09 52 31 20 3d 09 30 20  74 6f 20 63 6c 61 69 6d  |.R1 =.0 to claim|
00038010  2c 20 70 72 65 73 65 72  76 65 64 20 6f 74 68 65  |, preserved othe|
00038020  72 77 69 73 65 0a 09 52  34 20 3d 09 63 6f 75 6e  |rwise..R4 =.coun|
00038030  74 72 79 20 6e 75 6d 62  65 72 2c 20 6f 72 20 70  |try number, or p|
00038040  72 65 73 65 72 76 65 64  20 69 66 20 75 6e 72 65  |reserved if unre|
00038050  63 6f 67 6e 69 73 65 64  0a 0a 54 68 69 73 20 73  |cognised..This s|
00038060  65 72 76 69 63 65 20 63  6f 6e 76 65 72 74 73 20  |ervice converts |
00038070  61 20 63 6f 75 6e 74 72  79 20 6e 61 6d 65 20 74  |a country name t|
00038080  6f 20 6e 75 6d 62 65 72  2e 20 49 66 20 61 20 6d  |o number. If a m|
00038090  6f 64 75 6c 65 20 70 72  6f 76 69 64 65 73 20 61  |odule provides a|
000380a0  64 64 69 74 69 6f 6e 61  6c 20 63 6f 75 6e 74 72  |dditional countr|
000380b0  69 65 73 20 69 74 20 73  68 6f 75 6c 64 20 63 68  |ies it should ch|
000380c0  65 63 6b 20 74 68 69 73  20 73 65 72 76 69 63 65  |eck this service|
000380d0  20 2d 20 69 66 20 74 68  65 20 6e 61 6d 65 20 6d  | - if the name m|
000380e0  61 74 63 68 65 73 20 28  63 61 73 65 20 69 6e 73  |atches (case ins|
000380f0  65 6e 73 69 74 69 76 65  2c 20 61 6c 6c 6f 77 20  |ensitive, allow |
00038100  61 62 62 72 65 76 69 61  74 69 6f 6e 73 20 77 69  |abbreviations wi|
00038110  74 68 20 22 2e 22 29 20  6f 6e 65 20 70 72 6f 76  |th ".") one prov|
00038120  69 64 65 64 20 62 79 20  74 68 65 20 6d 6f 64 75  |ided by the modu|
00038130  6c 65 20 69 74 20 73 68  6f 75 6c 64 20 63 6c 61  |le it should cla|
00038140  69 6d 20 74 68 69 73 20  73 65 72 76 69 63 65 2e  |im this service.|
00038150  0a 00 00 00 44 41 54 41  ff 01 00 00 53 65 72 76  |....DATA....Serv|
00038160  69 63 65 5f 49 6e 74 65  72 6e 61 74 69 6f 6e 61  |ice_Internationa|
00038170  6c 20 31 0a 23 50 61 72  65 6e 74 20 53 65 72 76  |l 1.#Parent Serv|
00038180  69 63 65 5f 34 33 0a 3d  3e 09 52 31 20 3d 09 26  |ice_43.=>.R1 =.&|
00038190  34 33 20 28 72 65 61 73  6f 6e 20 63 6f 64 65 29  |43 (reason code)|
000381a0  0a 09 52 32 20 3d 09 31  20 28 73 75 62 20 72 65  |..R2 =.1 (sub re|
000381b0  61 73 6f 6e 20 63 6f 64  65 29 0a 09 52 33 20 3d  |ason code)..R3 =|
000381c0  09 70 6f 69 6e 74 65 72  20 74 6f 20 6e 75 6c 6c  |.pointer to null|
000381d0  20 74 65 72 6d 69 6e 61  74 65 64 20 3c 61 6c 70  | terminated <alp|
000381e0  68 61 62 65 74 20 6e 61  6d 65 3d 3e 54 65 72 72  |habet name=>Terr|
000381f0  69 74 6f 72 79 5f 61 6e  75 6d 62 65 72 73 3e 0a  |itory_anumbers>.|
00038200  3c 3d 09 52 31 20 3d 09  30 20 74 6f 20 63 6c 61  |<=.R1 =.0 to cla|
00038210  69 6d 2c 20 70 72 65 73  65 72 76 65 64 20 6f 74  |im, preserved ot|
00038220  68 65 72 77 69 73 65 0a  09 52 34 20 3d 09 63 6f  |herwise..R4 =.co|
00038230  75 6e 74 72 79 20 6e 75  6d 62 65 72 2c 20 6f 72  |untry number, or|
00038240  20 70 72 65 73 65 72 76  65 64 20 69 66 20 75 6e  | preserved if un|
00038250  72 65 63 6f 67 6e 69 73  65 64 0a 0a 54 68 69 73  |recognised..This|
00038260  20 73 65 72 76 69 63 65  20 63 6f 6e 76 65 72 74  | service convert|
00038270  73 20 61 20 63 6f 75 6e  74 72 79 20 6e 61 6d 65  |s a country name|
00038280  20 74 6f 20 6e 75 6d 62  65 72 2e 20 49 66 20 61  | to number. If a|
00038290  20 6d 6f 64 75 6c 65 20  70 72 6f 76 69 64 65 73  | module provides|
000382a0  20 61 64 64 69 74 69 6f  6e 61 6c 20 61 6c 70 68  | additional alph|
000382b0  61 62 65 74 73 20 69 74  20 73 68 6f 75 6c 64 20  |abets it should |
000382c0  63 68 65 63 6b 20 74 68  69 73 20 73 65 72 76 69  |check this servi|
000382d0  63 65 20 2d 20 69 66 20  74 68 65 20 6e 61 6d 65  |ce - if the name|
000382e0  20 6d 61 74 63 68 65 73  20 28 63 61 73 65 20 69  | matches (case i|
000382f0  6e 73 65 6e 73 69 74 69  76 65 2c 20 61 6c 6c 6f  |nsensitive, allo|
00038300  77 20 61 62 62 72 65 76  69 61 74 69 6f 6e 73 20  |w abbreviations |
00038310  77 69 74 68 20 22 2e 22  29 20 6f 6e 65 20 70 72  |with ".") one pr|
00038320  6f 76 69 64 65 64 20 62  79 20 74 68 65 20 6d 6f  |ovided by the mo|
00038330  64 75 6c 65 20 69 74 20  73 68 6f 75 6c 64 20 63  |dule it should c|
00038340  6c 61 69 6d 20 74 68 69  73 20 73 65 72 76 69 63  |laim this servic|
00038350  65 2e 0a 00 44 41 54 41  0c 02 00 00 53 65 72 76  |e...DATA....Serv|
00038360  69 63 65 5f 49 6e 74 65  72 6e 61 74 69 6f 6e 61  |ice_Internationa|
00038370  6c 20 32 0a 23 50 61 72  65 6e 74 20 53 65 72 76  |l 2.#Parent Serv|
00038380  69 63 65 5f 34 33 0a 3d  3e 09 52 31 20 3d 09 26  |ice_43.=>.R1 =.&|
00038390  34 33 20 28 72 65 61 73  6f 6e 20 63 6f 64 65 29  |43 (reason code)|
000383a0  0a 09 52 32 20 3d 09 32  20 28 73 75 62 20 72 65  |..R2 =.2 (sub re|
000383b0  61 73 6f 6e 20 63 6f 64  65 29 0a 09 52 33 20 3d  |ason code)..R3 =|
000383c0  09 3c 63 6f 75 6e 74 72  79 20 6e 75 6d 62 65 72  |.<country number|
000383d0  3d 3e 54 65 72 72 69 74  6f 72 79 5f 6e 75 6d 62  |=>Territory_numb|
000383e0  65 72 73 3e 0a 09 52 34  20 3d 09 70 6f 69 6e 74  |ers>..R4 =.point|
000383f0  65 72 20 74 6f 20 62 75  66 66 65 72 0a 09 52 35  |er to buffer..R5|
00038400  20 3d 09 6c 65 6e 67 74  68 20 6f 66 20 62 75 66  | =.length of buf|
00038410  66 65 72 0a 3c 3d 09 52  31 20 3d 09 30 20 74 6f  |fer.<=.R1 =.0 to|
00038420  20 63 6c 61 69 6d 2c 20  70 72 65 73 65 72 76 65  | claim, preserve|
00038430  64 20 6f 74 68 65 72 77  69 73 65 0a 09 52 32 2d  |d otherwise..R2-|
00038440  52 34 20 70 72 65 73 65  72 76 65 64 0a 09 52 35  |R4 preserved..R5|
00038450  20 3d 09 6e 75 6d 62 65  72 20 6f 66 20 63 68 61  | =.number of cha|
00038460  72 61 63 74 65 72 73 20  70 75 74 20 69 6e 74 6f  |racters put into|
00038470  20 62 75 66 66 65 72 2c  20 6f 72 20 70 72 65 73  | buffer, or pres|
00038480  65 72 76 65 64 20 69 66  20 75 6e 72 65 63 6f 67  |erved if unrecog|
00038490  6e 69 73 65 64 2e 0a 0a  54 68 69 73 20 73 65 72  |nised...This ser|
000384a0  76 69 63 65 20 63 6f 6e  76 65 72 74 73 20 61 20  |vice converts a |
000384b0  63 6f 75 6e 74 72 79 20  6e 61 6d 65 20 74 6f 20  |country name to |
000384c0  6e 75 6d 62 65 72 2e 20  49 66 20 61 20 6d 6f 64  |number. If a mod|
000384d0  75 6c 65 20 70 72 6f 76  69 64 65 73 20 61 64 64  |ule provides add|
000384e0  69 74 69 6f 6e 61 6c 20  63 6f 75 6e 74 72 69 65  |itional countrie|
000384f0  73 20 69 74 20 73 68 6f  75 6c 64 20 63 68 65 63  |s it should chec|
00038500  6b 20 74 68 69 73 20 73  65 72 76 69 63 65 20 2d  |k this service -|
00038510  20 69 66 20 74 68 65 20  6e 75 6d 62 65 72 20 6d  | if the number m|
00038520  61 74 63 68 65 73 20 6f  6e 65 20 70 72 6f 76 69  |atches one provi|
00038530  64 65 64 20 62 79 20 74  68 65 20 6d 6f 64 75 6c  |ded by the modul|
00038540  65 20 69 74 20 73 68 6f  75 6c 64 20 63 6c 61 69  |e it should clai|
00038550  6d 20 74 68 69 73 20 73  65 72 76 69 63 65 2e 0a  |m this service..|
00038560  44 41 54 41 0f 02 00 00  53 65 72 76 69 63 65 5f  |DATA....Service_|
00038570  49 6e 74 65 72 6e 61 74  69 6f 6e 61 6c 20 33 0a  |International 3.|
00038580  23 50 61 72 65 6e 74 20  53 65 72 76 69 63 65 5f  |#Parent Service_|
00038590  34 33 0a 3d 3e 09 52 31  20 3d 09 26 34 33 20 28  |43.=>.R1 =.&43 (|
000385a0  72 65 61 73 6f 6e 20 63  6f 64 65 29 0a 09 52 32  |reason code)..R2|
000385b0  20 3d 09 33 20 28 73 75  62 20 72 65 61 73 6f 6e  | =.3 (sub reason|
000385c0  20 63 6f 64 65 29 0a 09  52 33 20 3d 09 3c 61 6c  | code)..R3 =.<al|
000385d0  70 68 61 62 65 74 20 6e  75 6d 62 65 72 3d 3e 54  |phabet number=>T|
000385e0  65 72 72 69 74 6f 72 79  5f 61 6e 75 6d 62 65 72  |erritory_anumber|
000385f0  73 3e 0a 09 52 34 20 3d  09 70 6f 69 6e 74 65 72  |s>..R4 =.pointer|
00038600  20 74 6f 20 62 75 66 66  65 72 0a 09 52 35 20 3d  | to buffer..R5 =|
00038610  09 6c 65 6e 67 74 68 20  6f 66 20 62 75 66 66 65  |.length of buffe|
00038620  72 0a 3c 3d 09 52 31 20  3d 09 30 20 74 6f 20 63  |r.<=.R1 =.0 to c|
00038630  6c 61 69 6d 2c 20 70 72  65 73 65 72 76 65 64 20  |laim, preserved |
00038640  6f 74 68 65 72 77 69 73  65 0a 09 52 32 2d 52 34  |otherwise..R2-R4|
00038650  20 70 72 65 73 65 72 76  65 64 0a 09 52 35 20 3d  | preserved..R5 =|
00038660  09 6e 75 6d 62 65 72 20  6f 66 20 63 68 61 72 61  |.number of chara|
00038670  63 74 65 72 73 20 70 75  74 20 69 6e 74 6f 20 62  |cters put into b|
00038680  75 66 66 65 72 2c 20 6f  72 20 70 72 65 73 65 72  |uffer, or preser|
00038690  76 65 64 20 69 66 20 75  6e 72 65 63 6f 67 6e 69  |ved if unrecogni|
000386a0  73 65 64 2e 0a 0a 54 68  69 73 20 73 65 72 76 69  |sed...This servi|
000386b0  63 65 20 63 6f 6e 76 65  72 74 73 20 61 20 61 6c  |ce converts a al|
000386c0  70 68 61 62 65 74 20 6e  61 6d 65 20 74 6f 20 6e  |phabet name to n|
000386d0  75 6d 62 65 72 2e 20 49  66 20 61 20 6d 6f 64 75  |umber. If a modu|
000386e0  6c 65 20 70 72 6f 76 69  64 65 73 20 61 64 64 69  |le provides addi|
000386f0  74 69 6f 6e 61 6c 20 61  6c 70 68 61 62 65 74 73  |tional alphabets|
00038700  20 69 74 20 73 68 6f 75  6c 64 20 63 68 65 63 6b  | it should check|
00038710  20 74 68 69 73 20 73 65  72 76 69 63 65 20 2d 20  | this service - |
00038720  69 66 20 74 68 65 20 6e  75 6d 62 65 72 20 6d 61  |if the number ma|
00038730  74 63 68 65 73 20 6f 6e  65 20 70 72 6f 76 69 64  |tches one provid|
00038740  65 64 20 62 79 20 74 68  65 20 6d 6f 64 75 6c 65  |ed by the module|
00038750  20 69 74 20 73 68 6f 75  6c 64 20 63 6c 61 69 6d  | it should claim|
00038760  20 74 68 69 73 20 73 65  72 76 69 63 65 2e 0a 00  | this service...|
00038770  44 41 54 41 e9 01 00 00  53 65 72 76 69 63 65 5f  |DATA....Service_|
00038780  49 6e 74 65 72 6e 61 74  69 6f 6e 61 6c 20 34 0a  |International 4.|
00038790  23 50 61 72 65 6e 74 20  53 65 72 76 69 63 65 5f  |#Parent Service_|
000387a0  34 33 0a 3d 3e 09 52 31  20 3d 09 26 34 33 20 28  |43.=>.R1 =.&43 (|
000387b0  72 65 61 73 6f 6e 20 63  6f 64 65 29 0a 09 52 32  |reason code)..R2|
000387c0  20 3d 09 34 20 28 73 75  62 20 72 65 61 73 6f 6e  | =.4 (sub reason|
000387d0  20 63 6f 64 65 29 0a 09  52 33 20 3d 09 3c 63 6f  | code)..R3 =.<co|
000387e0  75 6e 74 72 79 20 6e 75  6d 62 65 72 3d 3e 54 65  |untry number=>Te|
000387f0  72 72 69 74 6f 72 79 5f  6e 75 6d 62 65 72 73 3e  |rritory_numbers>|
00038800  0a 3c 3d 09 52 31 20 3d  09 30 20 74 6f 20 63 6c  |.<=.R1 =.0 to cl|
00038810  61 69 6d 2c 20 70 72 65  73 65 72 76 65 64 20 6f  |aim, preserved o|
00038820  74 68 65 72 77 69 73 65  0a 09 52 32 2d 52 33 20  |therwise..R2-R3 |
00038830  70 72 65 73 65 72 76 65  64 0a 09 52 35 20 3d 09  |preserved..R5 =.|
00038840  3c 61 6c 70 68 61 62 65  74 20 6e 75 6d 62 65 72  |<alphabet number|
00038850  3d 3e 54 65 72 72 69 74  6f 72 79 5f 61 6e 75 6d  |=>Territory_anum|
00038860  62 65 72 73 3e 2c 20 6f  72 20 70 72 65 73 65 72  |bers>, or preser|
00038870  76 65 64 20 69 66 20 75  6e 72 65 63 6f 67 6e 69  |ved if unrecogni|
00038880  73 65 64 2e 0a 0a 54 68  69 73 20 73 65 72 76 69  |sed...This servi|
00038890  63 65 20 63 6f 6e 76 65  72 74 73 20 61 20 63 6f  |ce converts a co|
000388a0  75 6e 74 72 79 20 6e 75  6d 62 65 72 20 74 6f 20  |untry number to |
000388b0  61 6c 70 68 61 62 65 74  20 6e 75 6d 62 65 72 2e  |alphabet number.|
000388c0  20 49 66 20 61 20 6d 6f  64 75 6c 65 20 70 72 6f  | If a module pro|
000388d0  76 69 64 65 73 20 61 64  64 69 74 69 6f 6e 61 6c  |vides additional|
000388e0  20 63 6f 75 6e 74 72 69  65 73 20 69 74 20 73 68  | countries it sh|
000388f0  6f 75 6c 64 20 63 68 65  63 6b 20 74 68 69 73 20  |ould check this |
00038900  73 65 72 76 69 63 65 20  2d 20 69 66 20 74 68 65  |service - if the|
00038910  20 6e 75 6d 62 65 72 20  6d 61 74 63 68 65 73 20  | number matches |
00038920  6f 6e 65 20 70 72 6f 76  69 64 65 64 20 62 79 20  |one provided by |
00038930  74 68 65 20 6d 6f 64 75  6c 65 20 69 74 20 73 68  |the module it sh|
00038940  6f 75 6c 64 20 63 6c 61  69 6d 20 74 68 69 73 20  |ould claim this |
00038950  73 65 72 76 69 63 65 2e  0a 00 00 00 44 41 54 41  |service.....DATA|
00038960  56 02 00 00 53 65 72 76  69 63 65 5f 49 6e 74 65  |V...Service_Inte|
00038970  72 6e 61 74 69 6f 6e 61  6c 20 35 0a 23 50 61 72  |rnational 5.#Par|
00038980  65 6e 74 20 53 65 72 76  69 63 65 5f 34 33 0a 3d  |ent Service_43.=|
00038990  3e 09 52 31 20 3d 09 26  34 33 20 28 72 65 61 73  |>.R1 =.&43 (reas|
000389a0  6f 6e 20 63 6f 64 65 29  0a 09 52 32 20 3d 09 35  |on code)..R2 =.5|
000389b0  20 28 73 75 62 20 72 65  61 73 6f 6e 20 63 6f 64  | (sub reason cod|
000389c0  65 29 0a 09 52 33 20 3d  09 3c 61 6c 70 68 61 62  |e)..R3 =.<alphab|
000389d0  65 74 20 6e 75 6d 62 65  72 3d 3e 54 65 72 72 69  |et number=>Terri|
000389e0  74 6f 72 79 5f 61 6e 75  6d 62 65 72 73 3e 0a 09  |tory_anumbers>..|
000389f0  52 34 20 3d 09 41 53 43  49 49 20 63 6f 64 65 20  |R4 =.ASCII code |
00038a00  6f 66 20 66 69 72 73 74  20 63 68 61 72 61 63 74  |of first charact|
00038a10  65 72 0a 09 52 35 20 3d  09 41 53 43 49 49 20 63  |er..R5 =.ASCII c|
00038a20  6f 64 65 20 6f 66 20 6c  61 73 74 20 63 68 61 72  |ode of last char|
00038a30  61 63 74 65 72 0a 3c 3d  09 52 31 20 3d 09 30 20  |acter.<=.R1 =.0 |
00038a40  74 6f 20 63 6c 61 69 6d  2c 20 70 72 65 73 65 72  |to claim, preser|
00038a50  76 65 64 20 6f 74 68 65  72 77 69 73 65 0a 0a 54  |ved otherwise..T|
00038a60  68 69 73 20 73 65 72 76  69 63 65 20 64 65 66 69  |his service defi|
00038a70  6e 65 73 20 61 20 72 61  6e 67 65 20 6f 66 20 63  |nes a range of c|
00038a80  68 61 72 61 63 74 65 72  73 20 66 6f 72 20 61 20  |haracters for a |
00038a90  67 69 76 65 6e 20 61 6c  70 68 61 62 65 74 20 6e  |given alphabet n|
00038aa0  75 6d 62 65 72 2e 20 49  66 20 61 20 6d 6f 64 75  |umber. If a modu|
00038ab0  6c 65 20 70 72 6f 76 69  64 65 73 20 61 64 64 69  |le provides addi|
00038ac0  74 69 6f 6e 61 6c 20 63  6f 75 6e 74 72 69 65 73  |tional countries|
00038ad0  20 69 74 20 73 68 6f 75  6c 64 20 63 68 65 63 6b  | it should check|
00038ae0  20 74 68 69 73 20 73 65  72 76 69 63 65 20 2d 20  | this service - |
00038af0  69 66 20 74 68 65 20 6e  75 6d 62 65 72 20 6d 61  |if the number ma|
00038b00  74 63 68 65 73 20 6f 6e  65 20 70 72 6f 76 69 64  |tches one provid|
00038b10  65 64 20 62 79 20 74 68  65 20 6d 6f 64 75 6c 65  |ed by the module|
00038b20  20 69 74 20 73 68 6f 75  6c 64 20 63 6c 61 69 6d  | it should claim|
00038b30  20 74 68 69 73 20 73 65  72 76 69 63 65 2c 20 61  | this service, a|
00038b40  6e 64 20 63 61 6c 6c 20  3c 56 44 55 20 32 33 3d  |nd call <VDU 23=|
00038b50  3e 56 44 55 3a 32 33 2c  33 32 2d 32 35 35 3e 20  |>VDU:23,32-255> |
00038b60  74 6f 20 64 65 66 69 6e  65 20 61 6e 79 20 63 68  |to define any ch|
00038b70  61 72 61 63 74 65 72 73  20 69 6e 20 74 68 65 20  |aracters in the |
00038b80  72 61 6e 67 65 20 28 52  34 2d 52 35 29 20 69 6e  |range (R4-R5) in|
00038b90  63 6c 75 73 69 76 65 20  64 65 66 69 6e 65 64 20  |clusive defined |
00038ba0  69 6e 20 74 68 69 73 20  61 6c 70 68 61 62 65 74  |in this alphabet|
00038bb0  2e 0a 00 00 44 41 54 41  35 01 00 00 53 65 72 76  |....DATA5...Serv|
00038bc0  69 63 65 5f 49 6e 74 65  72 6e 61 74 69 6f 6e 61  |ice_Internationa|
00038bd0  6c 20 36 0a 23 50 61 72  65 6e 74 20 53 65 72 76  |l 6.#Parent Serv|
00038be0  69 63 65 5f 34 33 0a 3d  3e 09 52 31 20 3d 09 26  |ice_43.=>.R1 =.&|
00038bf0  34 33 20 28 72 65 61 73  6f 6e 20 63 6f 64 65 29  |43 (reason code)|
00038c00  0a 09 52 32 20 3d 09 36  20 28 73 75 62 20 72 65  |..R2 =.6 (sub re|
00038c10  61 73 6f 6e 20 63 6f 64  65 29 0a 09 52 33 20 3d  |ason code)..R3 =|
00038c20  09 6e 65 77 20 3c 6b 65  79 62 6f 61 72 64 20 6e  |.new <keyboard n|
00038c30  75 6d 62 65 72 3d 3e 4f  53 5f 6b 65 79 62 6f 61  |umber=>OS_keyboa|
00038c40  72 64 69 64 3e 0a 09 52  34 20 3d 09 3c 61 6c 70  |rdid>..R4 =.<alp|
00038c50  68 61 62 65 74 20 6e 75  6d 62 65 72 3d 3e 54 65  |habet number=>Te|
00038c60  72 72 69 74 6f 72 79 5f  61 6e 75 6d 62 65 72 73  |rritory_anumbers|
00038c70  3e 20 66 6f 72 20 74 68  69 73 20 6b 65 79 62 6f  |> for this keybo|
00038c80  61 72 64 0a 3c 3d 09 52  31 2d 52 34 20 70 72 65  |ard.<=.R1-R4 pre|
00038c90  73 65 72 76 65 64 20 28  64 6f 20 6e 6f 74 20 63  |served (do not c|
00038ca0  6c 61 69 6d 29 0a 0a 54  68 69 73 20 73 65 72 76  |laim)..This serv|
00038cb0  69 63 65 20 69 73 20 67  65 6e 65 72 61 74 65 64  |ice is generated|
00038cc0  20 77 68 65 6e 20 74 68  65 20 6b 65 79 62 6f 61  | when the keyboa|
00038cd0  72 64 20 73 65 6c 65 63  74 69 6f 6e 20 69 73 20  |rd selection is |
00038ce0  63 68 61 6e 67 65 64 2e  0a 00 00 00 44 41 54 41  |changed.....DATA|
00038cf0  ba 03 00 00 53 65 72 76  69 63 65 5f 4d 65 6d 6f  |....Service_Memo|
00038d00  72 79 20 28 26 31 31 29  0a 23 50 61 72 65 6e 74  |ry (&11).#Parent|
00038d10  20 53 65 72 76 69 63 65  5f 49 6e 64 65 78 0a 3d  | Service_Index.=|
00038d20  3e 09 52 30 20 3d 09 61  6d 6f 75 6e 74 20 61 70  |>.R0 =.amount ap|
00038d30  70 6c 69 63 61 74 69 6f  6e 20 73 70 61 63 65 20  |plication space |
00038d40  77 69 6c 6c 20 63 68 61  6e 67 65 20 62 79 0a 09  |will change by..|
00038d50  52 31 20 3d 09 26 31 31  20 28 73 65 72 76 69 63  |R1 =.&11 (servic|
00038d60  65 20 6e 75 6d 62 65 72  29 0a 09 52 32 20 3d 09  |e number)..R2 =.|
00038d70  3c 63 75 72 72 65 6e 74  6c 79 20 61 63 74 69 76  |<currently activ|
00038d80  65 20 6f 62 6a 65 63 74  3d 3e 4f 53 5f 68 61 6e  |e object=>OS_han|
00038d90  64 6c 65 72 73 5f 63 61  6f 3e 20 70 6f 69 6e 74  |dlers_cao> point|
00038da0  65 72 0a 3c 3d 09 52 31  20 3d 09 30 20 74 6f 20  |er.<=.R1 =.0 to |
00038db0  63 6c 61 69 6d 20 61 6e  64 20 70 72 65 76 65 6e  |claim and preven|
00038dc0  74 20 72 65 2d 6d 61 70  70 69 6e 67 0a 0a 54 68  |t re-mapping..Th|
00038dd0  69 73 20 73 65 72 76 69  63 65 20 69 73 20 69 73  |is service is is|
00038de0  73 75 65 64 20 6a 75 73  74 20 62 65 66 6f 72 65  |sued just before|
00038df0  20 6d 65 6d 6f 72 79 20  69 73 20 72 65 6d 61 70  | memory is remap|
00038e00  70 65 64 20 74 6f 20 63  68 61 6e 67 65 20 74 68  |ped to change th|
00038e10  65 20 73 69 7a 65 20 6f  66 20 74 68 65 20 61 70  |e size of the ap|
00038e20  70 6c 69 63 61 74 69 6f  6e 20 73 70 61 63 65 2e  |plication space.|
00038e30  20 57 68 65 6e 20 3c 57  69 6d 70 5f 49 6e 69 74  | When <Wimp_Init|
00038e40  69 61 6c 69 73 65 3d 3e  57 69 6d 70 3a 57 69 6d  |ialise=>Wimp:Wim|
00038e50  70 5f 49 6e 69 74 69 61  6c 69 73 65 3e 20 69 73  |p_Initialise> is|
00038e60  20 63 61 6c 6c 65 64 20  74 68 65 20 57 69 6d 70  | called the Wimp|
00038e70  20 69 6e 73 70 65 63 74  73 20 74 68 65 20 43 41  | inspects the CA|
00038e80  4f 20 2d 20 69 66 20 69  74 20 69 73 20 6f 75 74  |O - if it is out|
00038e90  73 69 64 65 20 61 70 70  6c 69 63 61 74 69 6f 6e  |side application|
00038ea0  20 73 70 61 63 65 20 74  68 65 20 57 69 6d 70 20  | space the Wimp |
00038eb0  77 69 6c 6c 20 69 73 73  75 65 20 74 68 69 73 20  |will issue this |
00038ec0  73 65 72 76 69 63 65 20  70 72 69 6f 72 20 74 6f  |service prior to|
00038ed0  20 72 65 64 75 63 74 69  6e 67 20 74 68 65 20 61  | reducting the a|
00038ee0  70 70 6c 69 63 61 74 69  6f 6e 20 73 70 61 63 65  |pplication space|
00038ef0  20 74 6f 20 30 2e 20 49  66 20 69 74 20 69 73 20  | to 0. If it is |
00038f00  75 6e 63 6c 61 69 6d 65  64 20 74 68 65 20 6d 65  |unclaimed the me|
00038f10  6d 6f 72 79 20 63 68 61  6e 67 65 20 77 69 6c 6c  |mory change will|
00038f20  20 74 61 6b 65 20 70 6c  61 63 65 2e 20 49 66 20  | take place. If |
00038f30  79 6f 75 20 61 72 65 20  61 20 6d 6f 64 75 6c 65  |you are a module|
00038f40  20 77 68 6f 20 77 61 6e  74 73 20 74 6f 20 75 73  | who wants to us|
00038f50  65 20 61 70 70 6c 69 63  61 74 69 6f 6e 20 73 70  |e application sp|
00038f60  61 63 65 20 28 7b 2f 7d  65 2e 67 2e 7b 2f 7d 20  |ace ({/}e.g.{/} |
00038f70  61 20 6d 6f 64 75 6c 65  20 74 61 73 6b 29 20 74  |a module task) t|
00038f80  68 65 6e 20 79 6f 75 20  73 68 6f 75 6c 64 20 63  |hen you should c|
00038f90  68 65 63 6b 20 74 68 65  20 43 41 4f 20 2d 20 69  |heck the CAO - i|
00038fa0  66 20 69 74 20 69 73 20  79 6f 75 72 20 73 74 61  |f it is your sta|
00038fb0  72 74 20 61 64 64 72 65  73 73 20 69 6e 20 74 68  |rt address in th|
00038fc0  65 20 52 4d 41 20 79 6f  75 20 73 68 6f 75 6c 64  |e RMA you should|
00038fd0  20 63 6c 61 69 6d 20 74  68 65 20 73 65 72 76 69  | claim the servi|
00038fe0  63 65 20 74 6f 20 73 74  6f 70 20 74 68 65 20 63  |ce to stop the c|
00038ff0  68 61 6e 67 65 2c 20 61  6e 64 20 68 65 6e 63 65  |hange, and hence|
00039000  20 72 65 74 61 69 6e 20  74 68 65 20 6d 65 6d 6f  | retain the memo|
00039010  72 79 2e 0a 0a 41 6e 20  63 6f 6e 76 65 6e 74 69  |ry...An conventi|
00039020  6f 6e 61 6c 20 61 70 70  6c 69 63 61 74 69 6f 6e  |onal application|
00039030  27 73 20 43 41 4f 20 69  73 20 77 69 74 68 69 6e  |'s CAO is within|
00039040  20 61 70 70 6c 69 63 61  74 69 6f 6e 20 77 6f 72  | application wor|
00039050  6b 73 70 61 63 65 2c 20  73 6f 20 74 68 65 20 57  |kspace, so the W|
00039060  69 6d 70 20 77 69 6c 6c  20 6e 6f 74 20 61 74 74  |imp will not att|
00039070  65 6d 70 74 20 74 6f 20  69 73 73 75 65 20 74 68  |empt to issue th|
00039080  69 73 20 73 65 72 76 69  63 65 2c 20 6f 72 20 63  |is service, or c|
00039090  68 61 6e 67 65 20 74 68  65 20 6d 65 6d 6f 72 79  |hange the memory|
000390a0  20 6d 61 70 2e 0a 00 00  44 41 54 41 27 01 00 00  | map....DATA'...|
000390b0  53 65 72 76 69 63 65 5f  50 72 65 52 65 73 65 74  |Service_PreReset|
000390c0  20 28 26 34 35 29 0a 23  50 61 72 65 6e 74 20 53  | (&45).#Parent S|
000390d0  65 72 76 69 63 65 5f 49  6e 64 65 78 0a 3d 3e 09  |ervice_Index.=>.|
000390e0  52 31 20 3d 09 26 34 35  20 28 73 65 72 76 69 63  |R1 =.&45 (servic|
000390f0  65 20 6e 75 6d 62 65 72  29 0a 0a 54 68 69 73 20  |e number)..This |
00039100  73 65 72 76 69 63 65 20  69 73 20 69 73 73 75 65  |service is issue|
00039110  64 20 77 68 65 6e 20 42  72 65 61 6b 20 69 73 20  |d when Break is |
00039120  72 65 6c 65 61 73 65 64  2c 20 6a 75 73 74 20 62  |released, just b|
00039130  65 66 6f 72 65 20 61 20  73 6f 66 74 77 61 72 65  |efore a software|
00039140  20 67 65 6e 65 72 61 74  65 64 20 72 65 73 65 74  | generated reset|
00039150  20 6f 63 63 75 72 73 2e  20 54 68 69 73 20 61 6c  | occurs. This al|
00039160  6c 6f 77 73 20 65 78 70  61 6e 73 69 6f 6e 20 63  |lows expansion c|
00039170  61 72 64 20 73 6f 66 74  77 61 72 65 20 74 6f 20  |ard software to |
00039180  72 65 73 65 74 20 64 65  76 69 63 65 73 2c 20 61  |reset devices, a|
00039190  73 20 74 68 65 72 65 20  69 73 20 6e 6f 20 68 61  |s there is no ha|
000391a0  72 64 77 61 72 65 20 72  65 73 65 74 20 73 69 67  |rdware reset sig|
000391b0  6e 61 6c 20 6f 6e 20 74  68 65 20 65 78 70 61 6e  |nal on the expan|
000391c0  73 69 6f 6e 20 63 61 72  64 20 62 75 73 2e 0a 00  |sion card bus...|
000391d0  44 41 54 41 f4 02 00 00  53 65 72 76 69 63 65 5f  |DATA....Service_|
000391e0  41 44 46 53 50 6f 64 75  6c 65 20 28 26 31 30 38  |ADFSPodule (&108|
000391f0  30 30 29 0a 23 50 61 72  65 6e 74 20 53 65 72 76  |00).#Parent Serv|
00039200  69 63 65 5f 49 6e 64 65  78 0a 3d 3e 09 52 31 20  |ice_Index.=>.R1 |
00039210  3d 09 26 31 30 38 30 30  20 28 73 65 72 76 69 63  |=.&10800 (servic|
00039220  65 20 6e 75 6d 62 65 72  29 0a 09 52 32 20 3d 09  |e number)..R2 =.|
00039230  61 64 64 72 65 73 73 20  6f 66 20 63 75 72 72 65  |address of curre|
00039240  6e 74 20 53 54 35 30 36  20 63 6f 6e 74 72 6f 6c  |nt ST506 control|
00039250  6c 65 72 0a 09 52 33 20  3d 09 61 64 64 72 65 73  |ler..R3 =.addres|
00039260  73 20 6f 66 20 49 52 51  20 73 74 61 74 75 73 20  |s of IRQ status |
00039270  72 65 67 69 73 74 65 72  20 66 6f 72 20 63 6f 6e  |register for con|
00039280  74 72 6f 6c 6c 65 72 0a  09 52 34 20 3d 09 41 4e  |troller..R4 =.AN|
00039290  44 20 6d 61 73 6b 20 2d  20 41 4e 44 20 74 68 69  |D mask - AND thi|
000392a0  73 20 77 69 74 68 20 49  52 51 20 73 74 61 74 75  |s with IRQ statu|
000392b0  73 20 72 65 71 69 73 74  65 72 20 74 6f 20 67 69  |s reqister to gi|
000392c0  76 65 20 6e 6f 6e 2d 7a  65 72 6f 20 77 68 65 6e  |ve non-zero when|
000392d0  20 49 52 51 73 20 61 72  65 20 65 6e 61 62 6c 65  | IRQs are enable|
000392e0  64 0a 09 52 35 20 3d 09  61 64 64 72 65 73 73 20  |d..R5 =.address |
000392f0  6f 66 20 49 52 51 20 6d  61 73 6b 20 72 65 67 69  |of IRQ mask regi|
00039300  73 74 65 72 20 66 6f 72  20 63 6f 6e 74 72 6f 6c  |ster for control|
00039310  6c 65 72 0a 09 52 36 20  3d 09 4f 52 20 6d 61 73  |ler..R6 =.OR mas|
00039320  6b 20 2d 20 4f 52 52 20  74 68 69 73 20 77 69 74  |k - ORR this wit|
00039330  68 20 49 45 51 20 6d 61  73 6b 20 72 65 67 69 73  |h IEQ mask regis|
00039340  74 65 72 20 74 6f 20 65  6e 61 62 6c 65 20 49 52  |ter to enable IR|
00039350  51 73 2e 0a 3c 3d 09 70  72 65 73 65 72 76 65 20  |Qs..<=.preserve |
00039360  61 6c 6c 20 72 65 67 69  73 74 65 72 73 20 74 6f  |all registers to|
00039370  20 70 61 73 73 20 6f 6e  2c 20 6f 72 0a 09 52 31  | pass on, or..R1|
00039380  20 3d 09 30 20 28 74 6f  20 63 6c 61 69 6d 29 0a  | =.0 (to claim).|
00039390  09 52 32 20 3d 09 61 64  64 72 65 73 73 20 6f 66  |.R2 =.address of|
000393a0  20 6e 65 77 20 53 54 35  30 36 20 63 6f 6e 74 72  | new ST506 contr|
000393b0  6f 6c 6c 65 72 0a 09 52  33 20 3d 09 61 64 64 72  |oller..R3 =.addr|
000393c0  65 73 73 20 6f 66 20 49  52 51 20 73 74 61 74 75  |ess of IRQ statu|
000393d0  73 20 72 65 67 69 73 74  65 72 20 66 6f 72 20 63  |s register for c|
000393e0  6f 6e 74 72 6f 6c 6c 65  72 0a 09 52 34 20 3d 09  |ontroller..R4 =.|
000393f0  41 4e 44 20 6d 61 73 6b  0a 09 52 35 20 3d 09 61  |AND mask..R5 =.a|
00039400  64 64 72 65 73 73 20 6f  66 20 49 52 51 20 6d 61  |ddress of IRQ ma|
00039410  73 6b 20 72 65 67 69 73  74 65 72 20 66 6f 72 20  |sk register for |
00039420  63 6f 6e 74 72 6f 6c 6c  65 72 0a 09 52 36 20 3d  |controller..R6 =|
00039430  09 4f 52 20 6d 61 73 6b  0a 0a 54 68 69 73 20 73  |.OR mask..This s|
00039440  65 72 76 69 63 65 20 69  73 20 69 73 73 75 65 64  |ervice is issued|
00039450  20 62 79 20 41 44 46 53  20 74 6f 20 61 6c 6c 6f  | by ADFS to allo|
00039460  77 20 61 20 53 54 35 30  36 20 68 61 72 64 20 64  |w a ST506 hard d|
00039470  69 73 63 20 65 78 70 61  6e 73 69 6f 6e 20 63 61  |isc expansion ca|
00039480  72 64 20 74 6f 20 75 73  65 20 69 74 73 20 68 61  |rd to use its ha|
00039490  72 64 77 61 72 65 20 69  6e 20 70 6c 61 63 65 20  |rdware in place |
000394a0  6f 66 20 74 68 65 20 6d  61 63 68 69 6e 65 27 73  |of the machine's|
000394b0  20 62 75 69 6c 74 20 69  6e 20 68 61 72 64 77 61  | built in hardwa|
000394c0  72 65 2e 0a 44 41 54 41  f1 02 00 00 53 65 72 76  |re..DATA....Serv|
000394d0  69 63 65 5f 41 44 46 53  50 6f 64 75 6c 65 49 44  |ice_ADFSPoduleID|
000394e0  45 20 28 26 31 30 38 30  31 29 0a 23 50 61 72 65  |E (&10801).#Pare|
000394f0  6e 74 20 53 65 72 76 69  63 65 5f 49 6e 64 65 78  |nt Service_Index|
00039500  0a 3d 3e 09 52 31 20 3d  09 26 31 30 38 30 31 20  |.=>.R1 =.&10801 |
00039510  28 73 65 72 76 69 63 65  20 6e 75 6d 62 65 72 29  |(service number)|
00039520  0a 09 52 32 20 3d 09 61  64 64 72 65 73 73 20 6f  |..R2 =.address o|
00039530  66 20 63 75 72 72 65 6e  74 20 49 44 45 20 63 6f  |f current IDE co|
00039540  6e 74 72 6f 6c 6c 65 72  0a 09 52 33 20 3d 09 61  |ntroller..R3 =.a|
00039550  64 64 72 65 73 73 20 6f  66 20 49 52 51 20 73 74  |ddress of IRQ st|
00039560  61 74 75 73 20 72 65 67  69 73 74 65 72 20 66 6f  |atus register fo|
00039570  72 20 63 6f 6e 74 72 6f  6c 6c 65 72 0a 09 52 34  |r controller..R4|
00039580  20 3d 09 41 4e 44 20 6d  61 73 6b 20 2d 20 41 4e  | =.AND mask - AN|
00039590  44 20 74 68 69 73 20 77  69 74 68 20 49 52 51 20  |D this with IRQ |
000395a0  73 74 61 74 75 73 20 72  65 71 69 73 74 65 72 20  |status reqister |
000395b0  74 6f 20 67 69 76 65 20  6e 6f 6e 2d 7a 65 72 6f  |to give non-zero|
000395c0  20 77 68 65 6e 20 49 52  51 73 20 61 72 65 20 65  | when IRQs are e|
000395d0  6e 61 62 6c 65 64 0a 09  52 35 20 3d 09 61 64 64  |nabled..R5 =.add|
000395e0  72 65 73 73 20 6f 66 20  49 52 51 20 6d 61 73 6b  |ress of IRQ mask|
000395f0  20 72 65 67 69 73 74 65  72 20 66 6f 72 20 63 6f  | register for co|
00039600  6e 74 72 6f 6c 6c 65 72  0a 09 52 36 20 3d 09 4f  |ntroller..R6 =.O|
00039610  52 20 6d 61 73 6b 20 2d  20 4f 52 52 20 74 68 69  |R mask - ORR thi|
00039620  73 20 77 69 74 68 20 49  45 51 20 6d 61 73 6b 20  |s with IEQ mask |
00039630  72 65 67 69 73 74 65 72  20 74 6f 20 65 6e 61 62  |register to enab|
00039640  6c 65 20 49 52 51 73 2e  0a 3c 3d 09 70 72 65 73  |le IRQs..<=.pres|
00039650  65 72 76 65 20 61 6c 6c  20 72 65 67 69 73 74 65  |erve all registe|
00039660  72 73 20 74 6f 20 70 61  73 73 20 6f 6e 2c 20 6f  |rs to pass on, o|
00039670  72 0a 09 52 31 20 3d 09  30 20 28 74 6f 20 63 6c  |r..R1 =.0 (to cl|
00039680  61 69 6d 29 0a 09 52 32  20 3d 09 61 64 64 72 65  |aim)..R2 =.addre|
00039690  73 73 20 6f 66 20 6e 65  77 20 49 44 45 20 63 6f  |ss of new IDE co|
000396a0  6e 74 72 6f 6c 6c 65 72  0a 09 52 33 20 3d 09 61  |ntroller..R3 =.a|
000396b0  64 64 72 65 73 73 20 6f  66 20 49 52 51 20 73 74  |ddress of IRQ st|
000396c0  61 74 75 73 20 72 65 67  69 73 74 65 72 20 66 6f  |atus register fo|
000396d0  72 20 63 6f 6e 74 72 6f  6c 6c 65 72 0a 09 52 34  |r controller..R4|
000396e0  20 3d 09 41 4e 44 20 6d  61 73 6b 0a 09 52 35 20  | =.AND mask..R5 |
000396f0  3d 09 61 64 64 72 65 73  73 20 6f 66 20 49 52 51  |=.address of IRQ|
00039700  20 6d 61 73 6b 20 72 65  67 69 73 74 65 72 20 66  | mask register f|
00039710  6f 72 20 63 6f 6e 74 72  6f 6c 6c 65 72 0a 09 52  |or controller..R|
00039720  36 20 3d 09 4f 52 20 6d  61 73 6b 0a 0a 54 68 69  |6 =.OR mask..Thi|
00039730  73 20 73 65 72 76 69 63  65 20 69 73 20 69 73 73  |s service is iss|
00039740  75 65 64 20 62 79 20 41  44 46 53 20 74 6f 20 61  |ued by ADFS to a|
00039750  6c 6c 6f 77 20 61 20 49  44 45 20 68 61 72 64 20  |llow a IDE hard |
00039760  64 69 73 63 20 65 78 70  61 6e 73 69 6f 6e 20 63  |disc expansion c|
00039770  61 72 64 20 74 6f 20 75  73 65 20 69 74 73 20 68  |ard to use its h|
00039780  61 72 64 77 61 72 65 20  69 6e 20 70 6c 61 63 65  |ardware in place|
00039790  20 6f 66 20 74 68 65 20  6d 61 63 68 69 6e 65 27  | of the machine'|
000397a0  73 20 62 75 69 6c 74 20  69 6e 20 68 61 72 64 77  |s built in hardw|
000397b0  61 72 65 2e 0a 00 00 00  44 41 54 41 b5 00 00 00  |are.....DATA....|
000397c0  53 65 72 76 69 63 65 5f  41 44 46 53 50 6f 64 75  |Service_ADFSPodu|
000397d0  6c 65 44 79 69 6e 67 20  28 26 31 30 38 30 32 29  |leDying (&10802)|
000397e0  0a 23 50 61 72 65 6e 74  20 53 65 72 76 69 63 65  |.#Parent Service|
000397f0  5f 49 6e 64 65 78 0a 3d  3e 09 52 31 20 3d 09 26  |_Index.=>.R1 =.&|
00039800  31 30 38 30 32 20 28 73  65 72 76 69 63 65 20 6e  |10802 (service n|
00039810  75 6d 62 65 72 29 0a 0a  22 54 68 69 73 20 63 61  |umber).."This ca|
00039820  6c 6c 20 69 73 20 69 73  73 75 65 64 20 62 79 20  |ll is issued by |
00039830  61 6e 20 49 44 45 20 65  78 70 61 6e 73 69 6f 6e  |an IDE expansion|
00039840  20 63 61 72 64 20 74 6f  20 77 61 72 6e 20 41 44  | card to warn AD|
00039850  46 53 20 6f 66 20 69 74  73 20 69 6d 6d 65 6e 69  |FS of its immeni|
00039860  65 6e 74 20 64 65 6d 69  73 65 2e 22 0a 00 00 00  |ent demise."....|
00039870  44 41 54 41 15 03 00 00  53 65 72 76 69 63 65 5f  |DATA....Service_|
00039880  44 65 76 69 63 65 46 53  43 6c 6f 73 65 52 65 71  |DeviceFSCloseReq|
00039890  75 65 73 74 20 28 26 38  31 29 0a 23 50 61 72 65  |uest (&81).#Pare|
000398a0  6e 74 20 53 65 72 76 69  63 65 5f 49 6e 64 65 78  |nt Service_Index|
000398b0  0a 3d 3e 09 52 31 20 3d  09 26 38 31 20 28 73 65  |.=>.R1 =.&81 (se|
000398c0  72 76 69 63 65 20 6e 75  6d 62 65 72 29 0a 09 52  |rvice number)..R|
000398d0  32 20 3d 09 66 69 6c 65  20 68 61 6e 64 6c 65 0a  |2 =.file handle.|
000398e0  0a 3c 3d 09 70 72 65 73  65 72 76 65 20 61 6c 6c  |.<=.preserve all|
000398f0  20 72 65 67 69 73 74 65  72 73 20 74 6f 20 70 61  | registers to pa|
00039900  73 73 20 6f 6e 0a 0a 65  6c 73 65 0a 0a 3c 3d 09  |ss on..else..<=.|
00039910  52 31 20 3d 09 30 20 28  63 6c 61 69 6d 2c 20 69  |R1 =.0 (claim, i|
00039920  66 20 79 6f 75 20 77 65  72 65 20 61 62 6c 65 20  |f you were able |
00039930  74 6f 20 63 6c 6f 73 65  20 66 69 6c 65 20 69 6e  |to close file in|
00039940  20 52 32 29 0a 0a 54 68  69 73 20 73 65 72 76 69  | R2)..This servi|
00039950  63 65 20 69 73 20 69 73  73 75 65 64 20 62 79 20  |ce is issued by |
00039960  44 65 76 69 63 65 46 53  20 77 68 65 6e 20 61 6e  |DeviceFS when an|
00039970  20 6f 70 65 6e 20 61 74  74 65 6d 70 74 20 6f 6e  | open attempt on|
00039980  20 61 20 64 65 76 69 63  65 20 69 73 20 66 72 75  | a device is fru|
00039990  73 74 72 61 74 65 64 20  62 65 63 61 75 73 65 20  |strated because |
000399a0  65 69 74 68 65 72 3a 0a  0a 8f 09 74 68 61 74 20  |either:....that |
000399b0  64 65 76 69 63 65 20 61  6c 72 65 61 64 79 20 68  |device already h|
000399c0  61 73 20 69 74 73 20 6d  61 78 69 6d 75 6d 20 6e  |as its maximum n|
000399d0  75 6d 62 65 72 20 6f 66  20 73 74 72 65 61 6d 73  |umber of streams|
000399e0  20 6f 70 65 6e 0a 8f 09  61 20 6e 6f 6e 2d 66 75  | open...a non-fu|
000399f0  6c 6c 2d 64 75 70 6c 65  78 20 64 65 76 69 63 65  |ll-duplex device|
00039a00  20 68 61 73 20 6f 6e 65  20 6f 72 20 6d 6f 72 65  | has one or more|
00039a10  20 73 74 72 65 61 6d 73  20 6f 70 65 6e 20 69 6e  | streams open in|
00039a20  20 74 68 65 20 63 6f 6e  66 69 63 74 69 6e 67 20  | the conficting |
00039a30  64 69 72 65 63 74 69 6f  6e 0a 0a 48 6f 70 65 66  |direction..Hopef|
00039a40  75 6c 6c 79 20 73 75 66  66 69 63 69 65 6e 74 20  |ully sufficient |
00039a50  62 6c 6f 63 6b 69 6e 67  20 73 74 72 65 61 6d 73  |blocking streams|
00039a60  20 63 61 6e 20 62 65 20  63 6c 6f 73 65 64 2c 20  | can be closed, |
00039a70  77 68 69 63 68 20 77 69  6c 6c 20 61 6c 6c 6f 77  |which will allow|
00039a80  20 74 68 65 20 6f 70 65  6e 20 72 65 71 75 65 73  | the open reques|
00039a90  74 20 74 6f 20 62 65 20  66 75 6c 66 69 6c 6c 65  |t to be fulfille|
00039aa0  64 2e 20 49 66 20 79 6f  75 20 6f 70 65 6e 65 64  |d. If you opened|
00039ab0  20 74 68 65 20 73 74 72  65 61 6d 20 69 6e 20 52  | the stream in R|
00039ac0  32 2c 20 61 6e 64 20 69  74 20 6e 65 65 64 20 6e  |2, and it need n|
00039ad0  6f 20 6c 6f 6e 67 65 72  20 62 65 20 6b 65 70 74  |o longer be kept|
00039ae0  20 6f 70 65 6e 2c 20 74  68 65 6e 20 79 6f 75 20  | open, then you |
00039af0  73 68 6f 75 6c 64 20 63  6c 6f 73 65 20 69 74 20  |should close it |
00039b00  61 6e 64 20 63 6c 61 69  6d 20 74 68 65 20 73 65  |and claim the se|
00039b10  72 76 69 63 65 2e 20 54  68 65 20 6b 65 72 6e 65  |rvice. The kerne|
00039b20  6c 20 72 65 73 70 6f 6e  64 73 20 74 6f 20 74 68  |l responds to th|
00039b30  69 73 20 73 65 72 76 69  63 65 20 74 6f 20 63 6c  |is service to cl|
00039b40  6f 73 65 20 74 68 65 20  70 72 69 6e 74 65 72 20  |ose the printer |
00039b50  61 6e 64 20 73 65 72 69  61 6c 20 64 65 76 69 63  |and serial devic|
00039b60  65 73 20 69 66 20 69 74  20 68 61 73 20 69 6d 70  |es if it has imp|
00039b70  6c 69 63 69 74 6c 79 20  6f 70 65 6e 65 64 20 74  |licitly opened t|
00039b80  68 65 6d 2e 0a 00 00 00  44 41 54 41 c0 00 00 00  |hem.....DATA....|
00039b90  53 65 72 76 69 63 65 5f  4d 65 6d 6f 72 79 4d 6f  |Service_MemoryMo|
00039ba0  76 65 64 20 28 26 34 45  29 0a 23 50 61 72 65 6e  |ved (&4E).#Paren|
00039bb0  74 20 53 65 72 76 69 63  65 5f 49 6e 64 65 78 0a  |t Service_Index.|
00039bc0  3d 3e 09 52 31 20 3d 09  26 34 45 20 28 73 65 72  |=>.R1 =.&4E (ser|
00039bd0  76 69 63 65 20 6e 75 6d  62 65 72 29 0a 0a 54 68  |vice number)..Th|
00039be0  69 73 20 73 65 72 76 69  63 65 20 69 73 20 69 73  |is service is is|
00039bf0  73 75 65 64 20 77 68 65  6e 20 3c 4f 53 5f 43 68  |sued when <OS_Ch|
00039c00  61 6e 67 65 44 79 6e 61  6d 69 63 41 72 65 61 3e  |angeDynamicArea>|
00039c10  20 68 61 73 20 6a 75 73  74 20 66 69 6e 69 73 68  | has just finish|
00039c20  65 64 2c 20 61 6e 64 20  69 73 20 75 73 65 64 20  |ed, and is used |
00039c30  62 79 20 74 68 65 20 57  69 6d 70 20 74 6f 20 74  |by the Wimp to t|
00039c40  69 64 79 20 75 70 2e 0a  44 41 54 41 e1 00 00 00  |idy up..DATA....|
00039c50  53 65 72 76 69 63 65 5f  50 44 75 6d 70 65 72 53  |Service_PDumperS|
00039c60  74 61 72 74 69 6e 67 20  28 26 36 36 29 0a 23 50  |tarting (&66).#P|
00039c70  61 72 65 6e 74 20 53 65  72 76 69 63 65 5f 49 6e  |arent Service_In|
00039c80  64 65 78 0a 3d 3e 09 52  31 20 3d 09 26 36 36 20  |dex.=>.R1 =.&66 |
00039c90  28 73 65 72 76 69 63 65  20 6e 75 6d 62 65 72 29  |(service number)|
00039ca0  0a 0a 54 68 69 73 20 73  65 72 76 69 63 65 20 69  |..This service i|
00039cb0  73 20 69 73 73 75 65 64  20 77 68 65 6e 20 74 68  |s issued when th|
00039cc0  65 20 50 44 72 69 76 65  72 44 50 20 6d 6f 64 75  |e PDriverDP modu|
00039cd0  6c 65 20 73 74 61 72 74  73 20 2d 20 70 72 69 6e  |le starts - prin|
00039ce0  74 65 72 20 64 75 6d 70  65 72 73 20 73 68 6f 75  |ter dumpers shou|
00039cf0  6c 64 20 63 61 6c 6c 20  3c 50 44 72 69 76 65 72  |ld call <PDriver|
00039d00  5f 4d 69 73 63 4f 70 46  6f 72 44 72 69 76 65 72  |_MiscOpForDriver|
00039d10  3e 20 74 6f 20 64 65 63  6c 61 72 65 20 74 68 65  |> to declare the|
00039d20  6d 73 65 6c 76 65 73 2e  0a 00 00 00 44 41 54 41  |mselves.....DATA|
00039d30  99 00 00 00 53 65 72 76  69 63 65 5f 50 44 75 6d  |....Service_PDum|
00039d40  70 65 72 44 79 69 6e 67  20 28 26 36 37 29 0a 23  |perDying (&67).#|
00039d50  50 61 72 65 6e 74 20 53  65 72 76 69 63 65 5f 49  |Parent Service_I|
00039d60  6e 64 65 78 0a 3d 3e 09  52 31 20 3d 09 26 36 37  |ndex.=>.R1 =.&67|
00039d70  20 28 73 65 72 76 69 63  65 20 6e 75 6d 62 65 72  | (service number|
00039d80  29 0a 0a 54 68 69 73 20  73 65 72 76 69 63 65 20  |)..This service |
00039d90  69 73 20 69 73 73 75 65  64 20 77 68 65 6e 20 3c  |is issued when <|
00039da0  50 44 75 6d 70 65 72 3d  3e 50 44 75 6d 70 65 72  |PDumper=>PDumper|
00039db0  5f 3e 20 69 73 20 61 62  6f 75 74 20 74 6f 20 71  |_> is about to q|
00039dc0  75 69 74 2e 0a 00 00 00  44 41 54 41 ca 08 00 00  |uit.....DATA....|
00039dd0  53 65 72 76 69 63 65 5f  49 64 65 6e 74 69 66 79  |Service_Identify|
00039de0  44 69 73 63 20 28 26 36  39 29 0a 23 50 61 72 65  |Disc (&69).#Pare|
00039df0  6e 74 20 53 65 72 76 69  63 65 5f 49 6e 64 65 78  |nt Service_Index|
00039e00  0a 3d 3e 09 52 31 20 3d  09 26 36 39 20 28 73 65  |.=>.R1 =.&69 (se|
00039e10  72 76 69 63 65 20 6e 75  6d 62 65 72 29 0a 09 52  |rvice number)..R|
00039e20  32 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 62  |2 =.pointer to b|
00039e30  75 66 66 65 72 20 66 6f  72 20 66 6f 72 6d 61 74  |uffer for format|
00039e40  20 6e 61 6d 65 0a 09 52  33 20 3d 09 62 75 66 66  | name..R3 =.buff|
00039e50  65 72 20 6c 65 6e 67 74  68 0a 09 52 35 20 3d 09  |er length..R5 =.|
00039e60  70 6f 69 6e 74 65 72 20  74 6f 20 3c 64 69 73 63  |pointer to <disc|
00039e70  20 72 65 63 6f 72 64 3d  3e 46 69 6c 65 43 6f 72  | record=>FileCor|
00039e80  65 5f 44 69 73 63 3e 0a  09 52 36 20 3d 09 73 65  |e_Disc>..R6 =.se|
00039e90  63 74 6f 72 20 63 61 63  68 65 20 68 61 6e 64 6c  |ctor cache handl|
00039ea0  65 0a 09 52 38 20 3d 09  2a 70 6f 69 6e 74 65 72  |e..R8 =.*pointer|
00039eb0  20 74 6f 2a 20 46 69 6c  65 43 6f 72 65 20 69 6e  | to* FileCore in|
00039ec0  73 74 61 6e 63 65 20 70  72 69 76 61 74 65 20 77  |stance private w|
00039ed0  6f 72 64 0a 0a 49 66 20  66 6f 72 6d 61 74 20 75  |ord..If format u|
00039ee0  6e 72 65 63 6f 67 6e 69  73 65 64 0a 3c 3d 09 52  |nrecognised.<=.R|
00039ef0  31 20 3d 09 26 36 39 20  28 64 6f 20 6e 6f 74 20  |1 =.&69 (do not |
00039f00  63 6c 61 69 6d 29 0a 09  52 35 2c 52 38 20 70 72  |claim)..R5,R8 pr|
00039f10  65 73 65 72 76 65 64 0a  09 52 36 20 3d 09 6e 65  |eserved..R6 =.ne|
00039f20  77 20 73 65 63 74 6f 72  20 63 61 63 68 65 20 68  |w sector cache h|
00039f30  61 6e 64 6c 65 0a 0a 65  6c 73 65 20 0a 0a 3d 3e  |andle..else ..=>|
00039f40  09 52 31 20 3d 09 30 20  28 74 6f 20 63 6c 61 69  |.R1 =.0 (to clai|
00039f50  6d 29 0a 09 52 32 20 3d  09 66 69 6c 65 74 79 70  |m)..R2 =.filetyp|
00039f60  65 20 6e 75 6d 62 65 72  20 66 6f 72 20 67 69 76  |e number for giv|
00039f70  65 6e 20 64 69 73 63 0a  09 52 35 20 3d 09 70 6f  |en disc..R5 =.po|
00039f80  69 6e 74 65 72 20 74 6f  20 6d 6f 64 69 66 69 65  |inter to modifie|
00039f90  64 20 3c 64 69 73 63 20  72 65 63 6f 72 64 3d 3e  |d <disc record=>|
00039fa0  46 69 6c 65 43 6f 72 65  5f 44 69 73 63 3e 0a 09  |FileCore_Disc>..|
00039fb0  52 36 20 3d 09 6e 65 77  20 73 65 63 74 6f 72 20  |R6 =.new sector |
00039fc0  63 61 63 68 65 20 68 61  6e 64 6c 65 0a 09 52 38  |cache handle..R8|
00039fd0  20 70 72 65 73 65 72 76  65 64 0a 0a 54 68 69 73  | preserved..This|
00039fe0  20 73 65 72 76 69 63 65  20 69 73 20 69 73 73 75  | service is issu|
00039ff0  65 64 20 74 6f 20 69 64  65 6e 74 69 66 79 20 61  |ed to identify a|
0003a000  20 64 69 73 63 20 66 6f  72 6d 61 74 2e 20 46 69  | disc format. Fi|
0003a010  6c 65 43 6f 72 65 20 63  6c 61 69 6d 73 20 69 74  |leCore claims it|
0003a020  20 66 6f 72 20 66 6f 72  6d 61 74 73 20 69 74 20  | for formats it |
0003a030  72 65 63 6f 67 6e 69 73  65 73 2e 0a 0a 54 68 65  |recognises...The|
0003a040  20 69 64 65 6e 69 74 66  69 63 61 74 69 6f 6e 20  | idenitfication |
0003a050  70 72 6f 63 65 64 75 72  65 20 69 73 20 69 6e 76  |procedure is inv|
0003a060  6f 6c 76 65 64 3a 0a 0a  31 09 28 55 6e 6c 65 73  |olved:..1.(Unles|
0003a070  73 20 61 6e 79 20 6f 66  20 74 68 65 20 3c 34 20  |s any of the <4 |
0003a080  76 61 6c 75 65 73 20 61  72 65 20 7a 65 72 6f 3d  |values are zero=|
0003a090  3e 2e 68 61 72 64 64 69  73 63 3e 29 20 63 68 65  |>.harddisc>) che|
0003a0a0  63 6b 20 74 68 65 20 3c  64 69 73 63 20 72 65 63  |ck the <disc rec|
0003a0b0  6f 72 64 3d 3e 46 69 6c  65 43 6f 72 65 5f 44 69  |ord=>FileCore_Di|
0003a0c0  73 63 3e 27 73 20 73 65  63 74 6f 72 20 73 69 7a  |sc>'s sector siz|
0003a0d0  65 2c 20 73 65 63 74 6f  72 73 20 70 65 72 20 74  |e, sectors per t|
0003a0e0  72 61 63 6b 2c 20 64 65  6e 73 69 74 79 20 61 6e  |rack, density an|
0003a0f0  64 20 6c 6f 77 65 73 74  20 73 65 63 74 6f 72 20  |d lowest sector |
0003a100  49 44 20 6e 75 6d 62 65  72 0a 09 50 61 73 73 20  |ID number..Pass |
0003a110  6f 6e 20 74 68 65 20 73  65 72 76 69 63 65 20 69  |on the service i|
0003a120  66 20 74 68 65 20 73 65  63 74 6f 72 20 73 63 68  |f the sector sch|
0003a130  65 6d 65 20 69 73 20 75  6e 72 65 63 6f 67 6e 69  |eme is unrecogni|
0003a140  73 65 64 0a 32 09 55 70  64 61 74 65 20 74 68 65  |sed.2.Update the|
0003a150  20 76 61 6c 75 65 73 20  69 6e 20 74 68 65 20 3c  | values in the <|
0003a160  64 69 73 63 20 72 65 63  6f 72 64 3d 3e 46 69 6c  |disc record=>Fil|
0003a170  65 43 6f 72 65 5f 44 69  73 63 3e 20 66 6f 72 20  |eCore_Disc> for |
0003a180  64 69 73 63 20 73 69 7a  65 2c 20 73 65 71 75 65  |disc size, seque|
0003a190  6e 63 65 20 73 69 7a 65  73 2c 20 64 6f 75 62 6c  |nce sizes, doubl|
0003a1a0  65 20 73 74 65 70 20 61  6e 64 20 3c 68 65 61 64  |e step and <head|
0003a1b0  73 3d 3e 2e 68 65 61 64  73 3e 2e 0a 33 09 3c 52  |s=>.heads>..3.<R|
0003a1c0  65 61 64 20 74 68 65 20  73 65 63 74 6f 72 20 63  |ead the sector c|
0003a1d0  6f 6e 74 65 6e 74 73 3d  3e 2e 72 65 61 64 3e 20  |ontents=>.read> |
0003a1e0  61 6e 64 20 63 68 65 63  6b 20 74 68 65 6d 20 2d  |and check them -|
0003a1f0  20 69 66 20 69 74 20 64  6f 65 73 20 6e 6f 74 20  | if it does not |
0003a200  72 65 63 6f 67 6e 69 73  65 20 74 68 65 73 65 20  |recognise these |
0003a210  74 68 65 6e 20 70 61 73  73 20 6f 6e 20 74 68 65  |then pass on the|
0003a220  20 73 65 72 76 69 63 65  20 77 69 74 68 20 52 36  | service with R6|
0003a230  20 75 70 64 61 74 65 64  0a 34 09 55 70 64 61 74  | updated.4.Updat|
0003a240  65 20 74 68 65 20 76 61  6c 75 65 73 20 69 6e 20  |e the values in |
0003a250  74 68 65 20 3c 64 69 73  63 20 72 65 63 6f 72 64  |the <disc record|
0003a260  3d 3e 46 69 6c 65 43 6f  72 65 5f 44 69 73 63 3e  |=>FileCore_Disc>|
0003a270  20 66 6f 72 20 3c 64 69  73 63 20 63 79 63 6c 65  | for <disc cycle|
0003a280  20 69 64 3d 3e 46 69 6c  65 43 6f 72 65 5f 63 79  | id=>FileCore_cy|
0003a290  63 6c 65 69 64 3e 20 61  6e 64 20 64 69 73 63 20  |cleid> and disc |
0003a2a0  6e 61 6d 65 0a 23 20 54  61 67 20 62 75 66 66 65  |name.# Tag buffe|
0003a2b0  72 0a 35 09 46 69 6c 6c  20 74 68 65 20 62 75 66  |r.5.Fill the buf|
0003a2c0  66 65 72 20 69 6e 20 52  32 20 77 69 74 68 20 74  |fer in R2 with t|
0003a2d0  65 78 74 20 73 75 69 74  61 62 6c 65 20 66 6f 72  |ext suitable for|
0003a2e0  20 74 68 65 20 2a 63 75  72 72 65 6e 74 20 66 6f  | the *current fo|
0003a2f0  72 6d 61 74 2a 20 6d 65  6e 75 20 65 6e 74 72 79  |rmat* menu entry|
0003a300  0a 36 09 28 46 69 6e 61  6c 6c 79 29 20 63 6c 61  |.6.(Finally) cla|
0003a310  69 6d 20 74 68 65 20 73  65 72 76 69 63 65 20 63  |im the service c|
0003a320  61 6c 6c 2e 0a 23 53 75  62 70 61 67 65 20 68 61  |all..#Subpage ha|
0003a330  72 64 64 69 73 63 0a 53  65 63 74 6f 72 20 73 69  |rddisc.Sector si|
0003a340  7a 65 20 65 74 63 2e 20  7a 65 72 6f 0a 49 66 20  |ze etc. zero.If |
0003a350  61 6e 79 20 6f 66 20 73  65 63 74 6f 72 20 73 69  |any of sector si|
0003a360  7a 65 2c 20 73 65 63 74  6f 72 73 20 70 65 72 20  |ze, sectors per |
0003a370  74 72 61 63 6b 2c 20 64  65 6e 73 69 74 79 20 61  |track, density a|
0003a380  6e 64 20 6c 6f 77 65 73  74 20 73 65 63 74 6f 72  |nd lowest sector|
0003a390  20 49 44 20 6e 75 6d 62  65 72 20 61 72 65 20 30  | ID number are 0|
0003a3a0  20 74 68 65 6e 20 74 68  65 73 65 20 77 65 72 65  | then these were|
0003a3b0  20 6e 6f 74 20 73 75 70  70 6c 69 65 64 20 62 79  | not supplied by|
0003a3c0  20 3c 46 69 6c 65 43 6f  72 65 5f 4d 69 73 63 4f  | <FileCore_MiscO|
0003a3d0  70 20 30 3d 3e 46 69 6c  65 43 6f 72 65 5f 4d 69  |p 0=>FileCore_Mi|
0003a3e0  73 63 4f 70 30 3e 20 2d  20 74 68 69 73 20 73 68  |scOp0> - this sh|
0003a3f0  6f 75 6c 64 20 6f 6e 6c  79 20 68 61 70 70 65 6e  |ould only happen|
0003a400  20 66 6f 72 20 68 61 72  64 20 64 69 73 63 73 2e  | for hard discs.|
0003a410  0a 23 53 75 62 70 61 67  65 20 68 65 61 64 73 0a  |.#Subpage heads.|
0003a420  55 70 64 61 74 69 6e 67  20 68 65 61 64 73 20 69  |Updating heads i|
0003a430  6e 20 74 68 65 20 64 69  73 63 20 72 65 63 6f 72  |n the disc recor|
0003a440  64 0a 54 68 65 20 68 65  61 64 73 20 66 69 65 6c  |d.The heads fiel|
0003a450  64 20 6f 66 20 74 68 65  20 3c 64 69 73 63 20 72  |d of the <disc r|
0003a460  65 63 6f 72 64 3d 3e 46  69 6c 65 43 6f 72 65 5f  |ecord=>FileCore_|
0003a470  44 69 73 63 3e 20 73 68  6f 75 6c 64 20 62 65 20  |Disc> should be |
0003a480  75 70 64 61 74 65 64 20  69 6e 20 6c 69 6e 65 20  |updated in line |
0003a490  77 69 74 68 20 74 68 65  20 73 65 71 75 65 6e 63  |with the sequenc|
0003a4a0  65 20 73 69 64 65 73 20  62 69 74 20 2d 20 69 66  |e sides bit - if|
0003a4b0  20 74 68 69 73 20 62 69  74 20 62 65 63 6f 6d 65  | this bit become|
0003a4c0  73 20 63 6c 65 61 72 65  64 20 61 64 64 20 6f 6e  |s cleared add on|
0003a4d0  65 20 74 6f 20 74 68 65  20 68 65 61 64 73 2c 20  |e to the heads, |
0003a4e0  69 66 20 74 68 69 73 20  62 69 74 20 62 65 63 6f  |if this bit beco|
0003a4f0  6d 65 73 20 73 65 74 20  73 75 62 74 72 61 63 74  |mes set subtract|
0003a500  20 6f 6e 65 20 28 62 75  74 20 64 6f 20 6e 6f 74  | one (but do not|
0003a510  20 72 65 64 75 63 65 20  68 65 61 64 73 20 62 65  | reduce heads be|
0003a520  6c 6f 77 20 30 29 2e 0a  23 53 75 62 70 61 67 65  |low 0)..#Subpage|
0003a530  20 72 65 61 64 0a 52 65  61 64 69 6e 67 20 74 68  | read.Reading th|
0003a540  65 20 73 65 63 74 6f 72  20 63 6f 6e 74 65 6e 74  |e sector content|
0003a550  73 0a 54 68 65 20 73 65  63 74 6f 72 20 63 6f 6e  |s.The sector con|
0003a560  74 65 6e 74 73 20 73 68  6f 75 6c 64 20 62 65 20  |tents should be |
0003a570  72 65 61 64 20 77 69 74  68 20 3c 46 69 6c 65 43  |read with <FileC|
0003a580  6f 72 65 5f 44 69 73 63  4f 70 20 39 3d 3e 46 69  |ore_DiscOp 9=>Fi|
0003a590  6c 65 43 6f 72 65 5f 44  69 73 63 4f 70 39 3e 20  |leCore_DiscOp9> |
0003a5a0  77 69 74 68 0a 52 31 20  3d 09 66 6c 61 67 73 20  |with.R1 =.flags |
0003a5b0  30 31 78 30 20 62 69 6e  61 72 79 20 28 31 20 73  |01x0 binary (1 s|
0003a5c0  65 63 6f 6e 64 20 74 69  6d 65 6f 75 74 2c 20 69  |econd timeout, i|
0003a5d0  67 6e 6f 72 65 20 65 73  63 61 70 65 2c 20 6e 6f  |gnore escape, no|
0003a5e0  20 61 6c 74 65 72 6e 61  74 69 76 65 20 64 65 66  | alternative def|
0003a5f0  65 63 74 20 6c 69 73 74  29 0a 09 70 6f 69 6e 74  |ect list)..point|
0003a600  65 72 20 74 6f 20 74 68  65 20 61 6c 74 65 72 6e  |er to the altern|
0003a610  61 74 69 76 65 20 64 69  73 63 20 72 65 63 6f 72  |ative disc recor|
0003a620  64 20 73 75 70 70 6c 69  65 64 0a 52 32 20 3d 09  |d supplied.R2 =.|
0003a630  74 68 65 20 64 69 73 63  20 61 64 64 72 65 73 73  |the disc address|
0003a640  20 67 69 76 65 6e 20 62  79 20 74 68 65 20 72 6f  | given by the ro|
0003a650  6f 74 20 64 69 72 65 63  74 6f 72 79 20 61 64 64  |ot directory add|
0003a660  72 65 73 73 20 6f 6e 20  74 68 65 20 3c 64 69 73  |ress on the <dis|
0003a670  63 20 72 65 63 6f 72 64  3d 3e 46 69 6c 65 43 6f  |c record=>FileCo|
0003a680  72 65 5f 44 69 73 63 3e  20 73 75 70 70 6c 69 65  |re_Disc> supplie|
0003a690  64 0a 00 00 44 41 54 41  27 03 00 00 53 65 72 76  |d...DATA'...Serv|
0003a6a0  69 63 65 5f 49 64 65 6e  74 69 66 79 46 6f 72 6d  |ice_IdentifyForm|
0003a6b0  61 74 20 28 26 36 42 29  0a 23 50 61 72 65 6e 74  |at (&6B).#Parent|
0003a6c0  20 53 65 72 76 69 63 65  5f 49 6e 64 65 78 0a 3d  | Service_Index.=|
0003a6d0  3e 09 52 30 20 3d 09 70  6f 69 6e 74 65 72 20 74  |>.R0 =.pointer t|
0003a6e0  6f 20 3c 66 6f 72 6d 61  74 20 6e 61 6d 65 3d 3e  |o <format name=>|
0003a6f0  2e 6e 61 6d 65 3e 0a 09  52 31 20 3d 09 26 36 39  |.name>..R1 =.&69|
0003a700  20 28 73 65 72 76 69 63  65 20 6e 75 6d 62 65 72  | (service number|
0003a710  29 0a 0a 49 66 20 66 6f  72 6d 61 74 20 6e 61 6d  |)..If format nam|
0003a720  65 20 75 6e 72 65 63 6f  67 6e 69 73 65 64 0a 3c  |e unrecognised.<|
0003a730  3d 09 52 30 2c 52 31 20  70 72 65 73 65 72 76 65  |=.R0,R1 preserve|
0003a740  64 20 74 6f 20 70 61 73  73 20 6f 6e 0a 0a 65 6c  |d to pass on..el|
0003a750  73 65 20 0a 3d 3e 09 52  30 20 70 72 65 73 65 72  |se .=>.R0 preser|
0003a760  76 65 64 0a 09 52 31 20  3d 09 30 20 28 74 6f 20  |ved..R1 =.0 (to |
0003a770  63 6c 61 69 6d 29 0a 09  52 32 20 3d 09 53 57 49  |claim)..R2 =.SWI|
0003a780  20 74 6f 20 63 61 6c 6c  20 74 6f 20 67 65 74 20  | to call to get |
0003a790  72 61 77 20 64 69 73 63  20 66 6f 72 6d 61 74 20  |raw disc format |
0003a7a0  69 6e 66 6f 0a 09 52 33  20 3d 09 52 33 20 70 61  |info..R3 =.R3 pa|
0003a7b0  72 61 6d 65 74 65 72 20  66 6f 72 20 74 68 69 73  |rameter for this|
0003a7c0  20 53 57 49 0a 09 52 34  20 3d 09 53 57 49 20 74  | SWI..R4 =.SWI t|
0003a7d0  6f 20 63 61 6c 6c 20 74  6f 20 6c 61 79 20 64 6f  |o call to lay do|
0003a7e0  77 6e 20 64 69 73 63 20  73 74 72 75 63 74 75 72  |wn disc structur|
0003a7f0  65 0a 09 52 35 20 3d 09  52 30 20 70 61 72 61 6d  |e..R5 =.R0 param|
0003a800  65 74 65 72 20 66 6f 72  20 74 68 69 73 20 53 57  |eter for this SW|
0003a810  49 0a 0a 54 68 69 73 20  73 65 72 76 69 63 65 20  |I..This service |
0003a820  69 73 20 69 73 73 75 65  64 20 74 6f 20 69 64 65  |is issued to ide|
0003a830  6e 74 69 66 79 20 68 6f  77 20 74 6f 20 6c 61 79  |ntify how to lay|
0003a840  6f 75 74 20 61 20 64 69  73 63 20 66 6f 72 6d 61  |out a disc forma|
0003a850  74 2e 20 49 66 20 44 4f  53 46 53 20 72 65 63 6f  |t. If DOSFS reco|
0003a860  67 6e 69 73 65 64 20 74  68 65 20 3c 66 6f 72 6d  |gnised the <form|
0003a870  61 74 20 6e 61 6d 65 3d  3e 44 4f 53 46 53 5f 46  |at name=>DOSFS_F|
0003a880  6f 72 6d 61 74 53 70 65  63 3e 20 74 68 65 6e 20  |ormatSpec> then |
0003a890  52 32 20 77 6f 75 6c 64  20 62 65 20 3c 44 4f 53  |R2 would be <DOS|
0003a8a0  46 53 5f 44 69 73 63 46  6f 72 6d 61 74 3e 20 61  |FS_DiscFormat> a|
0003a8b0  6e 64 20 52 34 20 3c 44  4f 53 46 53 5f 4c 61 79  |nd R4 <DOSFS_Lay|
0003a8c0  6f 75 74 53 74 72 75 63  74 75 72 65 3e 2e 0a 23  |outStructure>..#|
0003a8d0  73 75 62 70 61 67 65 20  6e 61 6d 65 0a 46 6f 72  |subpage name.For|
0003a8e0  6d 61 74 20 73 70 65 63  69 66 69 63 61 74 69 6f  |mat specificatio|
0003a8f0  6e 20 73 74 72 69 6e 67  0a 54 68 65 20 22 46 6f  |n string.The "Fo|
0003a900  72 6d 61 74 20 73 70 65  63 69 66 69 63 61 74 69  |rmat specificati|
0003a910  6f 6e 20 73 74 72 69 6e  67 22 20 69 73 20 74 68  |on string" is th|
0003a920  65 20 6e 61 6d 65 20 6f  66 20 74 68 65 20 66 6f  |e name of the fo|
0003a930  72 6d 61 74 2c 20 7b 2f  7d 69 2e 65 2e 7b 2f 7d  |rmat, {/}i.e.{/}|
0003a940  0a 23 66 43 6f 64 65 0a  20 20 4c 0a 20 20 44 0a  |.#fCode.  L.  D.|
0003a950  20 20 45 0a 20 20 46 0a  23 66 0a 6f 72 20 6f 6e  |  E.  F.#f.or on|
0003a960  65 20 6f 66 20 74 68 65  20 3c 44 4f 53 46 53 20  |e of the <DOSFS |
0003a970  66 6f 72 6d 61 74 20 6e  61 6d 65 73 3d 3e 44 4f  |format names=>DO|
0003a980  53 46 53 5f 46 6f 72 6d  61 74 53 70 65 63 3e 20  |SFS_FormatSpec> |
0003a990  77 6f 75 6c 64 20 62 65  20 72 65 63 6f 6e 67 69  |would be recongi|
0003a9a0  73 65 64 20 62 65 74 77  65 65 6e 20 41 44 46 53  |sed between ADFS|
0003a9b0  20 61 6e 64 20 44 4f 53  46 53 2e 00 44 41 54 41  | and DOSFS..DATA|
0003a9c0  09 02 00 00 53 65 72 76  69 63 65 5f 44 69 73 70  |....Service_Disp|
0003a9d0  6c 61 79 46 6f 72 6d 61  74 48 65 6c 70 20 28 26  |layFormatHelp (&|
0003a9e0  36 43 29 0a 23 50 61 72  65 6e 74 20 53 65 72 76  |6C).#Parent Serv|
0003a9f0  69 63 65 5f 49 6e 64 65  78 0a 3d 3e 09 52 30 20  |ice_Index.=>.R0 |
0003aa00  3d 09 30 0a 09 52 31 20  3d 09 26 36 39 20 28 73  |=.0..R1 =.&69 (s|
0003aa10  65 72 76 69 63 65 20 6e  75 6d 62 65 72 29 0a 0a  |ervice number)..|
0003aa20  49 66 20 6e 6f 20 65 72  72 6f 72 20 74 68 65 6e  |If no error then|
0003aa30  0a 3c 3d 09 52 30 2c 52  31 20 70 72 65 73 65 72  |.<=.R0,R1 preser|
0003aa40  76 65 64 20 74 6f 20 70  61 73 73 20 6f 6e 0a 0a  |ved to pass on..|
0003aa50  65 6c 73 65 20 0a 3d 3e  09 52 30 20 3d 09 70 6f  |else .=>.R0 =.po|
0003aa60  69 6e 74 65 72 20 74 6f  20 3c 65 72 72 6f 72 20  |inter to <error |
0003aa70  62 6c 6f 63 6b 3d 3e 73  77 69 5f 65 72 72 6f 72  |block=>swi_error|
0003aa80  62 6c 6f 63 6b 3e 0a 09  52 31 20 3d 09 30 20 28  |block>..R1 =.0 (|
0003aa90  74 6f 20 63 6c 61 69 6d  29 0a 0a 54 68 69 73 20  |to claim)..This |
0003aaa0  73 65 72 76 69 63 65 20  69 73 20 69 73 73 75 65  |service is issue|
0003aab0  64 20 62 79 20 7b 66 63  6f 64 65 7d 2a 48 65 6c  |d by {fcode}*Hel|
0003aac0  70 20 46 6f 72 6d 61 74  7b 66 7d 2e 20 46 6f 72  |p Format{f}. For|
0003aad0  20 65 61 63 68 20 6f 66  20 79 6f 75 72 20 66 6f  | each of your fo|
0003aae0  72 6d 61 74 73 20 79 6f  75 20 73 68 6f 75 6c 64  |rmats you should|
0003aaf0  20 64 69 73 70 6c 61 79  20 6f 6e 65 20 6c 69 6e  | display one lin|
0003ab00  65 20 6f 66 20 74 68 65  20 66 6f 72 6d 0a 0a 20  |e of the form.. |
0003ab10  20 20 7b 2f 7d 66 6f 72  6d 61 74 20 2d 20 64 65  |  {/}format - de|
0003ab20  73 63 72 69 70 74 69 6f  6e 7b 2f 7d 0a 0a 7b 2f  |scription{/}..{/|
0003ab30  7d 65 2e 67 2e 7b 2f 7d  0a 0a 23 66 43 6f 64 65  |}e.g.{/}..#fCode|
0003ab40  0a 4c 20 2d 20 36 34 30  4b 2c 20 34 37 20 65 6e  |.L - 640K, 47 en|
0003ab50  74 72 79 20 64 69 72 65  63 74 6f 72 69 65 73 2c  |try directories,|
0003ab60  20 6f 6c 64 20 6d 61 70  2c 20 61 6c 6c 20 41 44  | old map, all AD|
0003ab70  46 53 2e 0a 23 66 0a 0a  4f 6e 6c 79 20 63 6c 61  |FS..#f..Only cla|
0003ab80  69 6d 20 74 68 69 73 20  73 65 72 76 69 63 65 20  |im this service |
0003ab90  69 66 20 74 68 65 72 65  20 69 73 20 61 6e 20 65  |if there is an e|
0003aba0  72 72 6f 72 20 77 68 69  6c 65 20 64 69 73 70 6c  |rror while displ|
0003abb0  61 79 69 6e 67 20 74 68  65 20 68 65 6c 70 20 74  |aying the help t|
0003abc0  65 78 74 2e 0a 00 00 00  44 41 54 41 4b 01 00 00  |ext.....DATAK...|
0003abd0  53 65 72 76 69 63 65 5f  56 61 6c 69 64 61 74 65  |Service_Validate|
0003abe0  41 64 64 72 65 73 73 20  28 26 36 44 29 0a 23 50  |Address (&6D).#P|
0003abf0  61 72 65 6e 74 20 53 65  72 76 69 63 65 5f 49 6e  |arent Service_In|
0003ac00  64 65 78 0a 3d 3e 09 52  31 20 3d 09 26 36 44 20  |dex.=>.R1 =.&6D |
0003ac10  28 73 65 72 76 69 63 65  20 6e 75 6d 62 65 72 29  |(service number)|
0003ac20  0a 09 52 32 2c 52 33 20  3d 09 52 30 2c 52 31 20  |..R2,R3 =.R0,R1 |
0003ac30  61 73 20 70 61 73 73 65  64 20 74 6f 20 3c 4f 53  |as passed to <OS|
0003ac40  5f 56 61 6c 69 64 61 74  65 41 64 64 72 65 73 73  |_ValidateAddress|
0003ac50  3e 0a 3c 3d 09 52 31 20  3d 09 30 20 74 6f 20 69  |>.<=.R1 =.0 to i|
0003ac60  6e 64 69 63 61 74 65 20  61 72 65 61 20 69 73 20  |ndicate area is |
0003ac70  76 61 6c 69 64 2c 20 65  6c 73 65 20 26 36 44 20  |valid, else &6D |
0003ac80  74 6f 20 70 61 73 73 20  6f 6e 0a 0a 54 68 69 73  |to pass on..This|
0003ac90  20 73 65 72 76 69 63 65  20 69 73 20 69 73 73 75  | service is issu|
0003aca0  65 64 20 77 68 65 6e 20  3c 4f 53 5f 56 61 6c 69  |ed when <OS_Vali|
0003acb0  64 61 74 65 41 64 64 72  65 73 73 3e 20 65 6e 63  |dateAddress> enc|
0003acc0  6f 75 6e 74 65 72 73 20  61 6e 20 75 6e 72 65 63  |ounters an unrec|
0003acd0  6f 67 6e 69 73 65 64 20  61 72 65 61 2e 20 49 74  |ognised area. It|
0003ace0  20 69 73 20 2a 6e 6f 74  2a 20 63 61 6c 6c 65 64  | is *not* called|
0003acf0  20 66 6f 72 20 61 72 65  61 73 20 77 68 69 63 68  | for areas which|
0003ad00  20 73 68 6f 75 6c 64 20  62 65 20 6d 61 70 70 65  | should be mappe|
0003ad10  64 2e 0a 00 44 41 54 41  5b 01 00 00 53 65 72 76  |d...DATA[...Serv|
0003ad20  69 63 65 5f 44 65 76 69  63 65 46 53 53 74 61 72  |ice_DeviceFSStar|
0003ad30  74 69 6e 67 20 28 26 37  30 29 0a 23 50 61 72 65  |ting (&70).#Pare|
0003ad40  6e 74 20 53 65 72 76 69  63 65 5f 49 6e 64 65 78  |nt Service_Index|
0003ad50  0a 3d 3e 09 52 31 20 3d  09 26 37 30 20 28 73 65  |.=>.R1 =.&70 (se|
0003ad60  72 76 69 63 65 20 6e 75  6d 62 65 72 29 0a 0a 54  |rvice number)..T|
0003ad70  68 69 73 20 73 65 72 76  69 63 65 20 69 73 20 69  |his service is i|
0003ad80  73 73 75 65 64 20 62 79  20 44 65 76 69 63 65 46  |ssued by DeviceF|
0003ad90  53 20 77 68 65 6e 20 69  74 20 28 72 65 29 69 6e  |S when it (re)in|
0003ada0  69 74 69 61 6c 69 73 65  73 2e 20 55 6e 6c 69 6b  |itialises. Unlik|
0003adb0  65 20 3c 53 65 72 76 69  63 65 5f 52 65 73 6f 75  |e <Service_Resou|
0003adc0  72 63 65 46 53 53 74 61  72 74 69 6e 67 3d 3e 73  |rceFSStarting=>s|
0003add0  65 72 76 69 63 65 5f 36  30 3e 2c 20 44 65 76 69  |ervice_60>, Devi|
0003ade0  63 73 46 53 20 68 61 73  20 74 68 65 20 67 6f 6f  |csFS has the goo|
0003adf0  64 20 73 65 6e 73 65 20  74 6f 20 69 73 73 75 65  |d sense to issue|
0003ae00  20 74 68 69 73 20 73 65  72 76 69 63 65 20 6f 6e  | this service on|
0003ae10  20 61 20 63 61 6c 6c 62  61 63 6b 2c 20 73 6f 20  | a callback, so |
0003ae20  69 74 73 20 53 57 49 73  20 28 7b 2f 7d 65 2e 67  |its SWIs ({/}e.g|
0003ae30  2e 7b 2f 7d 20 3c 44 65  76 69 63 65 46 53 5f 52  |.{/} <DeviceFS_R|
0003ae40  65 67 69 73 74 65 72 3e  29 20 63 61 6e 20 62 65  |egister>) can be|
0003ae50  20 63 61 6c 6c 65 64 20  69 6e 20 74 68 65 20 6e  | called in the n|
0003ae60  6f 72 6d 61 6c 20 66 61  73 68 69 6f 6e 2e 0a 00  |ormal fashion...|
0003ae70  44 41 54 41 f3 00 00 00  53 65 72 76 69 63 65 5f  |DATA....Service_|
0003ae80  44 65 76 69 63 65 46 53  44 79 69 6e 67 20 28 26  |DeviceFSDying (&|
0003ae90  37 31 29 0a 23 50 61 72  65 6e 74 20 53 65 72 76  |71).#Parent Serv|
0003aea0  69 63 65 5f 49 6e 64 65  78 0a 3d 3e 09 52 30 20  |ice_Index.=>.R0 |
0003aeb0  3d 09 30 0a 09 52 31 20  3d 09 26 37 31 20 28 73  |=.0..R1 =.&71 (s|
0003aec0  65 72 76 69 63 65 20 6e  75 6d 62 65 72 29 0a 0a  |ervice number)..|
0003aed0  54 68 69 73 20 73 65 72  76 69 63 65 20 69 73 20  |This service is |
0003aee0  69 73 73 75 65 64 20 62  79 20 44 65 76 69 63 65  |issued by Device|
0003aef0  46 53 20 77 68 65 6e 20  69 74 20 69 73 20 61 62  |FS when it is ab|
0003af00  6f 75 74 20 74 6f 20 62  65 20 6b 69 6c 6c 65 64  |out to be killed|
0003af10  2e 20 41 6c 6c 20 64 65  76 69 63 65 73 20 77 69  |. All devices wi|
0003af20  6c 6c 20 68 61 76 65 20  61 6c 72 65 61 64 79 20  |ll have already |
0003af30  62 65 65 6e 20 69 73 73  75 65 64 20 77 69 74 68  |been issued with|
0003af40  20 3c 53 65 72 76 69 63  65 5f 44 65 76 69 63 65  | <Service_Device|
0003af50  44 65 61 64 3d 3e 73 65  72 76 69 63 65 5f 37 39  |Dead=>service_79|
0003af60  3e 2e 0a 00 44 41 54 41  29 01 00 00 53 65 72 76  |>...DATA)...Serv|
0003af70  69 63 65 5f 53 77 69 74  63 68 69 6e 67 4f 75 74  |ice_SwitchingOut|
0003af80  70 75 74 54 6f 53 70 72  69 74 65 20 28 26 37 32  |putToSprite (&72|
0003af90  29 0a 23 50 61 72 65 6e  74 20 53 65 72 76 69 63  |).#Parent Servic|
0003afa0  65 5f 69 6e 64 65 78 0a  3d 3e 09 52 31 20 3d 09  |e_index.=>.R1 =.|
0003afb0  26 37 32 20 28 73 65 72  76 69 63 65 20 6e 75 6d  |&72 (service num|
0003afc0  62 65 72 29 0a 09 52 32  2d 52 35 09 76 61 6c 75  |ber)..R2-R5.valu|
0003afd0  65 73 20 70 61 73 73 65  64 20 69 6e 20 52 30 2d  |es passed in R0-|
0003afe0  52 33 20 74 6f 20 3c 4f  53 5f 53 70 72 69 74 65  |R3 to <OS_Sprite|
0003aff0  4f 70 3e 0a 0a 54 68 69  73 20 73 65 72 76 69 63  |Op>..This servic|
0003b000  65 20 69 73 20 69 73 73  75 65 64 20 69 6d 6d 65  |e is issued imme|
0003b010  64 69 61 74 65 6c 79 20  61 66 74 65 72 20 6f 75  |diately after ou|
0003b020  74 70 75 74 20 68 61 73  20 62 65 65 6e 20 73 77  |tput has been sw|
0003b030  69 74 63 68 65 64 20 74  6f 2f 66 72 6f 6d 20 61  |itched to/from a|
0003b040  20 73 70 72 69 74 65 20  6f 72 20 6d 61 73 6b 20  | sprite or mask |
0003b050  62 79 20 3c 4f 53 5f 53  70 72 69 74 65 4f 70 20  |by <OS_SpriteOp |
0003b060  36 30 3d 3e 4f 53 5f 53  70 72 69 74 65 4f 70 5f  |60=>OS_SpriteOp_|
0003b070  36 30 3e 20 6f 72 20 3c  36 31 3d 3e 4f 53 5f 53  |60> or <61=>OS_S|
0003b080  70 72 69 74 65 4f 70 5f  36 31 3e 2e 0a 00 00 00  |priteOp_61>.....|
0003b090  44 41 54 41 e5 01 00 00  53 65 72 76 69 63 65 5f  |DATA....Service_|
0003b0a0  44 65 76 69 63 65 44 65  61 64 20 28 26 37 39 29  |DeviceDead (&79)|
0003b0b0  0a 23 50 61 72 65 6e 74  20 53 65 72 76 69 63 65  |.#Parent Service|
0003b0c0  5f 49 6e 64 65 78 0a 3d  3e 09 52 30 20 3d 09 30  |_Index.=>.R0 =.0|
0003b0d0  0a 09 52 31 20 3d 09 26  37 39 20 28 73 65 72 76  |..R1 =.&79 (serv|
0003b0e0  69 63 65 20 6e 75 6d 62  65 72 29 0a 09 52 32 20  |ice number)..R2 |
0003b0f0  3d 09 64 65 76 69 63 65  20 64 72 69 76 65 72 20  |=.device driver |
0003b100  68 61 6e 64 6c 65 0a 09  52 33 20 3d 09 70 6f 69  |handle..R3 =.poi|
0003b110  6e 74 65 72 20 74 6f 20  64 65 76 69 63 65 20 6e  |nter to device n|
0003b120  61 6d 65 2c 20 6f 72 20  30 20 69 66 20 77 68 6f  |ame, or 0 if who|
0003b130  6c 65 20 64 65 76 69 63  65 20 64 72 69 76 65 72  |le device driver|
0003b140  20 69 73 20 62 65 69 6e  67 20 64 65 72 65 67 69  | is being deregi|
0003b150  73 74 65 72 65 64 0a 0a  54 68 69 73 20 73 65 72  |stered..This ser|
0003b160  76 69 63 65 20 69 73 20  69 73 73 75 65 64 20 62  |vice is issued b|
0003b170  79 20 3c 44 65 76 69 63  65 46 53 3d 3e 44 65 76  |y <DeviceFS=>Dev|
0003b180  69 63 65 46 53 5f 3e 20  77 68 65 6e 20 61 20 73  |iceFS_> when a s|
0003b190  70 65 63 69 66 69 65 64  20 64 65 76 69 63 65 20  |pecified device |
0003b1a0  68 61 73 20 62 65 65 6e  20 6b 69 6c 6c 65 64 20  |has been killed |
0003b1b0  2d 20 75 73 75 61 6c 6c  79 20 62 65 63 61 75 73  |- usually becaus|
0003b1c0  65 20 61 20 73 65 63 6f  6e 64 20 64 65 76 69 63  |e a second devic|
0003b1d0  65 20 6f 66 20 74 68 65  20 73 61 6d 65 20 6e 61  |e of the same na|
0003b1e0  6d 65 20 68 61 73 20 62  65 65 6e 20 72 65 67 69  |me has been regi|
0003b1f0  73 74 65 72 65 64 2e 20  49 66 20 74 68 65 20 65  |stered. If the e|
0003b200  6e 74 69 72 65 20 64 72  69 76 65 72 20 69 73 20  |ntire driver is |
0003b210  62 65 69 6e 67 20 64 65  72 65 67 69 73 74 65 72  |being deregister|
0003b220  65 64 2c 20 74 68 65 6e  20 74 68 69 73 20 73 65  |ed, then this se|
0003b230  72 76 69 63 65 20 69 73  20 69 73 73 75 65 64 20  |rvice is issued |
0003b240  66 6f 72 20 65 61 63 68  20 6e 61 6d 65 20 69 6e  |for each name in|
0003b250  20 74 75 72 6e 2c 20 61  6e 64 20 61 20 66 69 6e  | turn, and a fin|
0003b260  61 6c 20 74 69 6d 65 20  77 69 74 68 20 52 33 20  |al time with R3 |
0003b270  3d 20 30 2e 0a 00 00 00  44 41 54 41 ae 02 00 00  |= 0.....DATA....|
0003b280  53 65 72 76 69 63 65 5f  44 72 61 77 4f 62 6a 65  |Service_DrawObje|
0003b290  63 74 52 65 6e 64 65 72  20 28 26 34 35 35 34 30  |ctRender (&45540|
0003b2a0  29 0a 23 50 61 72 65 6e  74 20 53 65 72 76 69 63  |).#Parent Servic|
0003b2b0  65 5f 69 6e 64 65 78 0a  3d 3e 09 52 30 20 3d 09  |e_index.=>.R0 =.|
0003b2c0  3c 6f 62 6a 65 63 74 20  74 79 70 65 3d 3e 44 72  |<object type=>Dr|
0003b2d0  61 77 46 69 6c 65 5f 66  6f 72 6d 61 74 3e 0a 23  |awFile_format>.#|
0003b2e0  20 47 65 72 70 68 3e 20  54 68 69 73 20 72 65 61  | Gerph> This rea|
0003b2f0  6c 6c 79 20 73 68 6f 75  6c 64 20 67 6f 20 64 69  |lly should go di|
0003b300  72 65 63 74 6c 79 20 74  6f 20 74 68 65 20 74 79  |rectly to the ty|
0003b310  70 65 73 20 70 61 67 65  2c 20 62 75 74 20 66 6f  |pes page, but fo|
0003b320  72 20 6e 6f 77 2e 2e 2e  0a 09 52 31 20 3d 09 26  |r now.....R1 =.&|
0003b330  34 35 35 34 30 20 28 73  65 72 76 69 63 65 20 6e  |45540 (service n|
0003b340  75 6d 62 65 72 29 0a 09  52 32 20 3d 09 70 6f 69  |umber)..R2 =.poi|
0003b350  6e 74 65 72 20 74 6f 20  74 68 65 20 3c 72 65 6e  |nter to the <ren|
0003b360  64 65 72 20 73 74 61 74  65 3d 3e 44 72 61 77 66  |der state=>Drawf|
0003b370  69 6c 65 5f 72 65 6e 64  65 72 73 74 61 74 65 3e  |ile_renderstate>|
0003b380  0a 3c 3d 09 52 31 20 3d  09 30 20 69 66 20 72 65  |.<=.R1 =.0 if re|
0003b390  63 6f 67 6e 69 73 65 64  2c 20 70 72 65 73 65 72  |cognised, preser|
0003b3a0  76 65 64 20 6f 74 68 65  72 77 69 73 65 0a 0a 54  |ved otherwise..T|
0003b3b0  68 69 73 20 73 65 72 76  69 63 65 20 69 73 20 6d  |his service is m|
0003b3c0  61 64 65 20 77 68 65 6e  65 76 65 72 20 3c 44 72  |ade whenever <Dr|
0003b3d0  61 77 46 69 6c 65 5f 52  65 6e 64 65 72 3e 20 65  |awFile_Render> e|
0003b3e0  6e 63 6f 75 6e 74 65 72  73 20 61 6e 20 6f 62 6a  |ncounters an obj|
0003b3f0  65 63 74 20 77 68 6f 73  65 20 74 79 70 65 20 69  |ect whose type i|
0003b400  74 20 64 6f 65 73 6e 27  74 20 6b 6e 6f 77 2e 20  |t doesn't know. |
0003b410  45 78 74 65 6e 73 69 6f  6e 20 6d 6f 64 75 6c 65  |Extension module|
0003b420  73 20 73 68 6f 75 6c 64  20 72 65 63 6f 67 6e 69  |s should recogni|
0003b430  73 65 20 74 68 65 20 6f  62 6a 65 63 74 20 74 79  |se the object ty|
0003b440  70 65 2c 20 70 72 6f 63  65 73 73 20 69 74 20 61  |pe, process it a|
0003b450  6e 64 20 74 68 65 6e 20  63 6c 61 69 6d 20 74 68  |nd then claim th|
0003b460  65 20 73 65 72 76 69 63  65 2e 20 45 72 72 6f 72  |e service. Error|
0003b470  73 20 73 68 6f 75 6c 64  20 2a 6f 6e 6c 79 2a 20  |s should *only* |
0003b480  62 65 20 72 65 70 6f 72  74 65 64 20 69 66 20 74  |be reported if t|
0003b490  68 65 72 65 20 69 73 20  6e 6f 20 65 72 72 6f 72  |here is no error|
0003b4a0  20 70 72 65 73 65 6e 74  6c 79 20 6b 6e 6f 77 6e  | presently known|
0003b4b0  20 2d 20 74 68 65 20 44  72 61 77 66 69 6c 65 20  | - the Drawfile |
0003b4c0  6d 6f 64 75 6c 65 20 77  69 6c 6c 20 63 6f 6e 74  |module will cont|
0003b4d0  69 6e 75 65 20 61 66 74  65 72 20 65 72 72 6f 72  |inue after error|
0003b4e0  73 2c 20 62 75 74 20 6f  6e 6c 79 20 72 65 70 6f  |s, but only repo|
0003b4f0  72 74 20 74 68 65 20 66  69 72 73 74 20 6f 6e 65  |rt the first one|
0003b500  2e 0a 23 20 47 65 72 70  68 3e 20 2f 77 68 79 2f  |..# Gerph> /why/|
0003b510  20 73 68 6f 75 6c 64 20  69 74 20 63 6f 6e 74 69  | should it conti|
0003b520  6e 75 65 20 3f 0a 00 00  44 41 54 41 5e 03 00 00  |nue ?...DATA^...|
0003b530  53 65 72 76 69 63 65 5f  44 72 61 77 4f 62 6a 65  |Service_DrawObje|
0003b540  63 74 44 65 63 6c 61 72  65 46 6f 6e 74 73 20 28  |ctDeclareFonts (|
0003b550  26 34 35 35 34 31 29 0a  23 50 61 72 65 6e 74 20  |&45541).#Parent |
0003b560  53 65 72 76 69 63 65 5f  69 6e 64 65 78 0a 3d 3e  |Service_index.=>|
0003b570  09 52 30 20 3d 09 3c 6f  62 6a 65 63 74 20 74 79  |.R0 =.<object ty|
0003b580  70 65 3d 3e 44 72 61 77  46 69 6c 65 5f 66 6f 72  |pe=>DrawFile_for|
0003b590  6d 61 74 3e 0a 23 20 47  65 72 70 68 3e 20 54 68  |mat>.# Gerph> Th|
0003b5a0  69 73 20 72 65 61 6c 6c  79 20 73 68 6f 75 6c 64  |is really should|
0003b5b0  20 67 6f 20 64 69 72 65  63 74 6c 79 20 74 6f 20  | go directly to |
0003b5c0  74 68 65 20 74 79 70 65  73 20 70 61 67 65 2c 20  |the types page, |
0003b5d0  62 75 74 20 66 6f 72 20  6e 6f 77 2e 2e 2e 0a 09  |but for now.....|
0003b5e0  52 31 20 3d 09 26 34 35  35 34 31 20 28 73 65 72  |R1 =.&45541 (ser|
0003b5f0  76 69 63 65 20 6e 75 6d  62 65 72 29 0a 09 52 32  |vice number)..R2|
0003b600  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 3c 64  | =.pointer to <d|
0003b610  65 63 6c 61 72 65 20 66  6f 6e 74 20 73 74 61 74  |eclare font stat|
0003b620  65 20 62 6c 6f 63 6b 3d  3e 64 72 61 77 66 69 6c  |e block=>drawfil|
0003b630  65 5f 64 65 63 6c 61 72  65 73 74 61 74 65 3e 0a  |e_declarestate>.|
0003b640  3c 3d 09 52 31 20 3d 09  30 20 69 66 20 72 65 63  |<=.R1 =.0 if rec|
0003b650  6f 67 6e 69 73 65 64 2c  20 70 72 65 73 65 72 76  |ognised, preserv|
0003b660  65 64 20 6f 74 68 65 72  77 69 73 65 0a 0a 23 20  |ed otherwise..# |
0003b670  47 65 72 70 68 3e 20 59  6f 75 27 76 65 20 6e 6f  |Gerph> You've no|
0003b680  74 20 64 6f 63 75 6d 65  6e 74 65 64 20 44 65 63  |t documented Dec|
0003b690  6c 61 72 65 46 6f 6e 74  73 2c 20 4a 75 73 74 69  |lareFonts, Justi|
0003b6a0  6e 2e 0a 54 68 69 73 20  73 65 72 76 69 63 65 20  |n..This service |
0003b6b0  69 73 20 6d 61 64 65 20  77 68 65 6e 65 76 65 72  |is made whenever|
0003b6c0  20 44 72 61 77 46 69 6c  65 5f 44 65 63 6c 61 72  | DrawFile_Declar|
0003b6d0  65 46 6f 6e 74 73 20 65  6e 63 6f 75 6e 74 65 72  |eFonts encounter|
0003b6e0  73 20 61 6e 20 6f 62 6a  65 63 74 20 77 68 6f 73  |s an object whos|
0003b6f0  65 20 74 79 70 65 20 69  74 20 64 6f 65 73 6e 27  |e type it doesn'|
0003b700  74 20 6b 6e 6f 77 2e 20  45 78 74 65 6e 73 69 6f  |t know. Extensio|
0003b710  6e 20 6d 6f 64 75 6c 65  73 20 73 68 6f 75 6c 64  |n modules should|
0003b720  20 72 65 63 6f 67 6e 69  73 65 20 74 68 65 20 6f  | recognise the o|
0003b730  62 6a 65 63 74 20 74 79  70 65 2c 20 64 65 63 6c  |bject type, decl|
0003b740  61 72 65 20 74 68 65 20  66 6f 6e 74 73 20 69 6e  |are the fonts in|
0003b750  20 69 74 20 61 6e 64 20  74 68 65 6e 20 63 6c 61  | it and then cla|
0003b760  69 6d 20 74 68 65 20 73  65 72 76 69 63 65 2e 20  |im the service. |
0003b770  45 72 72 6f 72 73 20 73  68 6f 75 6c 64 20 2a 6f  |Errors should *o|
0003b780  6e 6c 79 2a 20 62 65 20  72 65 70 6f 72 74 65 64  |nly* be reported|
0003b790  20 69 66 20 74 68 65 72  65 20 69 73 20 6e 6f 20  | if there is no |
0003b7a0  65 72 72 6f 72 20 70 72  65 73 65 6e 74 6c 79 20  |error presently |
0003b7b0  6b 6e 6f 77 6e 20 2d 20  74 68 65 20 44 72 61 77  |known - the Draw|
0003b7c0  66 69 6c 65 20 6d 6f 64  75 6c 65 20 77 69 6c 6c  |file module will|
0003b7d0  20 63 6f 6e 74 69 6e 75  65 20 61 66 74 65 72 20  | continue after |
0003b7e0  65 72 72 6f 72 73 2c 20  62 75 74 20 6f 6e 6c 79  |errors, but only|
0003b7f0  20 72 65 70 6f 72 74 20  74 68 65 20 66 69 72 73  | report the firs|
0003b800  74 20 6f 6e 65 2e 0a 23  20 47 65 72 70 68 3e 20  |t one..# Gerph> |
0003b810  54 68 69 73 20 69 73 20  73 74 75 70 69 64 2e 20  |This is stupid. |
0003b820  54 68 65 72 65 20 69 73  20 6e 6f 20 77 61 79 20  |There is no way |
0003b830  74 6f 20 69 6e 63 6c 75  64 65 20 6d 75 6c 74 69  |to include multi|
0003b840  70 6c 65 20 66 6f 6e 74  20 74 61 62 6c 65 20 6f  |ple font table o|
0003b850  62 6a 65 63 74 73 0a 23  20 20 20 20 20 20 20 20  |bjects.#        |
0003b860  75 6e 6c 65 73 73 20 49  27 76 65 20 6d 69 73 75  |unless I've misu|
0003b870  6e 64 65 72 73 74 6f 6f  64 20 63 6f 6d 70 6c 65  |nderstood comple|
0003b880  74 65 6c 79 2e 0a 00 00  44 49 52 24 4c 00 00 00  |tely....DIR$L...|
0003b890  4c 00 00 00 d4 b8 03 00  47 fd ff ff 96 2a 13 0a  |L.......G....*..|
0003b8a0  44 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |D...........!Roo|
0003b8b0  74 00 00 00 18 b9 03 00  48 ff ff ff 02 25 f6 19  |t.......H....%..|
0003b8c0  37 03 00 00 13 00 00 00  00 00 00 00 43 6f 6e 74  |7...........Cont|
0003b8d0  72 6f 6c 00 44 41 54 41  44 00 00 00 53 63 72 65  |rol.DATAD...Scre|
0003b8e0  65 6e 42 6c 61 6e 6b 65  72 0a 23 50 61 72 65 6e  |enBlanker.#Paren|
0003b8f0  74 20 21 52 6f 6f 74 0a  23 50 72 65 66 69 78 20  |t !Root.#Prefix |
0003b900  53 63 72 65 65 6e 42 6c  61 6e 6b 65 72 5f 0a 3c  |ScreenBlanker_.<|
0003b910  43 6f 6e 74 72 6f 6c 3e  44 41 54 41 37 03 00 00  |Control>DATA7...|
0003b920  53 63 72 65 65 6e 42 6c  61 6e 6b 65 72 5f 43 6f  |ScreenBlanker_Co|
0003b930  6e 74 72 6f 6c 20 20 28  26 34 33 31 30 30 29 0a  |ntrol  (&43100).|
0003b940  23 50 61 72 65 6e 74 20  53 63 72 65 65 6e 42 6c  |#Parent ScreenBl|
0003b950  61 6e 6b 65 72 5f 0a 3d  3e 09 52 30 20 3d 09 3c  |anker_.=>.R0 =.<|
0003b960  72 65 61 73 6f 6e 20 63  6f 64 65 3d 3e 2e 72 65  |reason code=>.re|
0003b970  61 73 6f 6e 73 3e 0a 0a  43 6f 6e 74 72 6f 6c 20  |asons>..Control |
0003b980  73 63 72 65 65 6e 20 62  6c 61 6e 6b 69 6e 67 2e  |screen blanking.|
0003b990  0a 23 0a 23 53 75 62 70  61 67 65 20 72 65 61 73  |.#.#Subpage reas|
0003b9a0  6f 6e 73 0a 53 63 72 65  65 6e 42 6c 61 6e 6b 65  |ons.ScreenBlanke|
0003b9b0  72 20 72 65 61 73 6f 6e  20 63 6f 64 65 73 0a 52  |r reason codes.R|
0003b9c0  65 61 73 6f 6e 09 4d 65  61 6e 69 6e 67 0a 23 4c  |eason.Meaning.#L|
0003b9d0  69 6e 65 0a 30 09 42 6c  61 6e 6b 20 73 63 72 65  |ine.0.Blank scre|
0003b9e0  65 6e 20 69 6d 6d 65 64  69 61 74 65 6c 79 0a 31  |en immediately.1|
0003b9f0  09 55 6e 62 6c 61 6e 6b  20 73 63 72 65 65 6e 20  |.Unblank screen |
0003ba00  69 6d 6d 65 64 69 61 74  65 6c 79 0a 32 09 3c 46  |immediately.2.<F|
0003ba10  6c 61 73 68 20 73 63 72  65 65 6e 3d 3e 2e 32 3e  |lash screen=>.2>|
0003ba20  0a 33 09 3c 53 65 74 20  62 6c 61 6e 6b 69 6e 67  |.3.<Set blanking|
0003ba30  20 64 65 6c 61 79 3d 3e  2e 33 3e 0a 34 09 3c 47  | delay=>.3>.4.<G|
0003ba40  65 74 20 62 6c 61 6e 6b  69 6e 67 20 64 65 6c 61  |et blanking dela|
0003ba50  79 3d 3e 2e 34 3e 0a 23  0a 23 53 75 62 70 61 67  |y=>.4>.#.#Subpag|
0003ba60  65 20 32 0a 53 63 72 65  65 6e 42 6c 61 6e 6b 65  |e 2.ScreenBlanke|
0003ba70  72 5f 43 6f 6e 74 72 6f  6c 20 32 0a 3d 3e 09 52  |r_Control 2.=>.R|
0003ba80  30 20 3d 09 32 20 28 46  6c 61 73 68 20 73 63 72  |0 =.2 (Flash scr|
0003ba90  65 65 6e 29 0a 09 52 31  20 3d 09 74 69 6d 65 20  |een)..R1 =.time |
0003baa0  74 6f 20 74 75 72 6e 20  6f 6e 20 69 6e 20 63 65  |to turn on in ce|
0003bab0  6e 74 69 2d 73 65 63 6f  6e 64 73 0a 09 52 32 20  |nti-seconds..R2 |
0003bac0  3d 09 74 69 6d 65 20 74  6f 20 74 75 72 6e 20 6f  |=.time to turn o|
0003bad0  66 66 20 69 6e 20 63 65  6e 74 69 2d 73 65 63 6f  |ff in centi-seco|
0003bae0  6e 64 73 0a 09 52 33 20  3d 09 6d 61 78 69 6d 75  |nds..R3 =.maximu|
0003baf0  6d 20 6e 75 6d 62 65 72  20 6f 66 20 66 6c 61 73  |m number of flas|
0003bb00  68 65 73 0a 09 52 34 20  3d 09 66 6c 61 67 73 20  |hes..R4 =.flags |
0003bb10  28 6e 6f 74 20 64 6f 63  75 6d 65 6e 74 65 64 2c  |(not documented,|
0003bb20  20 73 65 65 20 3c 53 65  72 76 69 63 65 5f 53 63  | see <Service_Sc|
0003bb30  72 65 65 6e 52 65 73 74  6f 72 65 64 3d 3e 53 65  |reenRestored=>Se|
0003bb40  72 76 69 63 65 5f 37 42  3e 29 0a 23 0a 23 53 75  |rvice_7B>).#.#Su|
0003bb50  62 70 61 67 65 20 33 0a  53 63 72 65 65 6e 42 6c  |bpage 3.ScreenBl|
0003bb60  61 6e 6b 65 72 5f 43 6f  6e 74 72 6f 6c 20 33 0a  |anker_Control 3.|
0003bb70  3d 3e 09 52 30 20 3d 09  33 20 28 53 65 74 20 62  |=>.R0 =.3 (Set b|
0003bb80  6c 61 6e 6b 69 6e 67 20  64 65 6c 61 79 29 0a 09  |lanking delay)..|
0003bb90  52 31 20 3d 09 64 65 6c  61 79 20 69 6e 20 63 65  |R1 =.delay in ce|
0003bba0  6e 74 69 2d 73 65 63 6f  6e 64 73 2c 20 6f 72 20  |nti-seconds, or |
0003bbb0  30 20 74 6f 20 64 69 73  61 62 6c 65 0a 23 0a 23  |0 to disable.#.#|
0003bbc0  53 75 62 70 61 67 65 20  34 0a 53 63 72 65 65 6e  |Subpage 4.Screen|
0003bbd0  42 6c 61 6e 6b 65 72 5f  43 6f 6e 74 72 6f 6c 20  |Blanker_Control |
0003bbe0  34 0a 3d 3e 09 52 30 20  3d 09 34 20 28 47 65 74  |4.=>.R0 =.4 (Get|
0003bbf0  20 62 6c 61 6e 6b 69 6e  67 20 64 65 6c 61 79 29  | blanking delay)|
0003bc00  0a 3c 3d 09 52 30 20 3d  09 69 6e 74 65 72 6e 61  |.<=.R0 =.interna|
0003bc10  6c 20 62 6c 61 6e 6b 69  6e 67 20 74 69 6d 65 0a  |l blanking time.|
0003bc20  09 52 31 20 3d 09 64 65  6c 61 79 20 69 6e 20 63  |.R1 =.delay in c|
0003bc30  65 6e 74 69 2d 73 65 63  6f 6e 64 73 2c 20 6f 72  |enti-seconds, or|
0003bc40  20 30 20 69 66 20 64 69  73 61 62 6c 65 64 0a 00  | 0 if disabled..|
0003bc50  44 49 52 24 2c 00 00 00  2c 00 00 00 7c bc 03 00  |DIR$,...,...|...|
0003bc60  48 fd ff ff 16 96 50 06  50 00 00 00 03 00 00 00  |H.....P.P.......|
0003bc70  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
0003bc80  50 00 00 00 53 63 72 65  65 6e 4d 6f 64 65 73 20  |P...ScreenModes |
0003bc90  28 26 36 35 29 20 28 33  2e 35 29 0a 23 50 61 72  |(&65) (3.5).#Par|
0003bca0  65 6e 74 20 4f 53 5f 0a  23 54 61 62 6c 65 20 43  |ent OS_.#Table C|
0003bcb0  6f 6c 75 6d 6e 73 20 32  0a 52 65 61 64 49 6e 66  |olumns 2.ReadInf|
0003bcc0  6f 0a 23 45 6e 64 54 61  62 6c 65 0a 44 49 52 24  |o.#EndTable.DIR$|
0003bcd0  2c 00 00 00 2c 00 00 00  f8 bc 03 00 46 fd ff ff  |,...,.......F...|
0003bce0  94 d6 67 db 50 00 00 00  13 00 00 00 00 00 00 00  |..g.P...........|
0003bcf0  21 52 6f 6f 74 00 00 00  44 41 54 41 50 00 00 00  |!Root...DATAP...|
0003bd00  53 68 61 72 65 64 43 4c  69 62 72 61 72 79 0a 23  |SharedCLibrary.#|
0003bd10  50 61 72 65 6e 74 20 21  52 6f 6f 74 0a 4c 69 62  |Parent !Root.Lib|
0003bd20  49 6e 69 74 41 50 43 53  5f 41 0a 4c 69 62 49 6e  |InitAPCS_A.LibIn|
0003bd30  69 74 41 50 43 53 5f 52  0a 4c 69 62 49 6e 69 74  |itAPCS_R.LibInit|
0003bd40  4d 6f 64 75 6c 65 20 20  44 49 52 24 6c 00 00 00  |Module  DIR$l...|
0003bd50  6c 00 00 00 b4 bd 03 00  48 fd ff ff 08 33 be 10  |l.......H....3..|
0003bd60  3d 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |=...........!Roo|
0003bd70  74 00 00 00 f4 bd 03 00  48 ff ff ff 54 4a be 10  |t.......H...TJ..|
0003bd80  56 00 00 00 13 00 00 00  00 00 00 00 43 72 65 61  |V...........Crea|
0003bd90  74 65 00 00 4c be 03 00  48 ff ff ff eb 4f be 10  |te..L...H....O..|
0003bda0  57 00 00 00 13 00 00 00  00 00 00 00 44 65 73 74  |W...........Dest|
0003bdb0  72 6f 79 00 44 41 54 41  3d 00 00 00 53 68 65 6c  |roy.DATA=...Shel|
0003bdc0  6c 0a 23 50 61 72 65 6e  74 20 21 52 6f 6f 74 0a  |l.#Parent !Root.|
0003bdd0  23 50 72 65 66 69 78 20  53 68 65 6c 6c 5f 0a 3c  |#Prefix Shell_.<|
0003bde0  43 72 65 61 74 65 3e 0a  3c 44 65 73 74 72 6f 79  |Create>.<Destroy|
0003bdf0  3e 00 00 00 44 41 54 41  56 00 00 00 53 68 65 6c  |>...DATAV...Shel|
0003be00  6c 5f 43 72 65 61 74 65  20 20 28 26 34 30 35 43  |l_Create  (&405C|
0003be10  30 29 0a 23 50 61 72 65  6e 74 20 53 68 65 6c 6c  |0).#Parent Shell|
0003be20  5f 0a 46 6f 72 20 69 6e  74 65 72 6e 61 6c 20 75  |_.For internal u|
0003be30  73 65 20 62 79 20 74 68  65 20 53 68 65 6c 6c 43  |se by the ShellC|
0003be40  4c 49 20 6d 6f 64 75 6c  65 2e 00 00 44 41 54 41  |LI module...DATA|
0003be50  57 00 00 00 53 68 65 6c  6c 5f 44 65 73 74 72 6f  |W...Shell_Destro|
0003be60  79 20 20 28 26 34 30 35  43 31 29 0a 23 50 61 72  |y  (&405C1).#Par|
0003be70  65 6e 74 20 53 68 65 6c  6c 5f 0a 46 6f 72 20 69  |ent Shell_.For i|
0003be80  6e 74 65 72 6e 61 6c 20  75 73 65 20 62 79 20 74  |nternal use by t|
0003be90  68 65 20 53 68 65 6c 6c  43 4c 49 20 6d 6f 64 75  |he ShellCLI modu|
0003bea0  6c 65 2e 00 44 49 52 24  48 04 00 00 48 04 00 00  |le..DIR$H...H...|
0003beb0  ec c2 03 00 48 fd ff ff  eb 14 3c 0f 86 01 00 00  |....H.....<.....|
0003bec0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0003bed0  74 c4 03 00 47 ff ff ff  6f a8 a9 cd e5 00 00 00  |t...G...o.......|
0003bee0  13 00 00 00 00 00 00 00  41 74 74 61 63 68 4e 61  |........AttachNa|
0003bef0  6d 65 64 56 6f 69 63 65  00 00 00 00 5c c5 03 00  |medVoice....\...|
0003bf00  47 ff ff ff f0 ab a9 cd  a1 01 00 00 13 00 00 00  |G...............|
0003bf10  00 00 00 00 41 74 74 61  63 68 56 6f 69 63 65 00  |....AttachVoice.|
0003bf20  00 c7 03 00 47 ff ff ff  52 b2 a9 cd 48 03 00 00  |....G...R...H...|
0003bf30  13 00 00 00 00 00 00 00  43 6f 6e 66 69 67 75 72  |........Configur|
0003bf40  65 00 00 00 48 ca 03 00  48 ff ff ff a5 d9 c1 0f  |e...H...H.......|
0003bf50  b8 01 00 00 13 00 00 00  00 00 00 00 45 6e 61 62  |............Enab|
0003bf60  6c 65 00 00 00 cc 03 00  48 ff ff ff 7f 8a 36 0f  |le......H.....6.|
0003bf70  21 07 00 00 13 00 00 00  00 00 00 00 49 6e 73 74  |!...........Inst|
0003bf80  61 6c 6c 56 6f 69 63 65  00 00 00 00 24 d3 03 00  |allVoice....$...|
0003bf90  47 ff ff ff 9b be a9 cd  de 01 00 00 13 00 00 00  |G...............|
0003bfa0  00 00 00 00 52 65 6d 6f  76 65 56 6f 69 63 65 00  |....RemoveVoice.|
0003bfb0  04 d5 03 00 47 ff ff ff  dd 23 22 0c 1b 01 00 00  |....G....#".....|
0003bfc0  13 00 00 00 00 00 00 00  53 6f 75 6e 64 4c 6f 67  |........SoundLog|
0003bfd0  00 00 00 00 20 d6 03 00  48 ff ff ff 6e f5 c1 0f  |.... ...H...n...|
0003bfe0  7a 01 00 00 13 00 00 00  00 00 00 00 56 6f 6c 75  |z...........Volu|
0003bff0  6d 65 00 00 9c d7 03 00  47 ff ff ff 7e c6 ff a1  |me......G...~...|
0003c000  6c 01 00 00 13 00 00 00  00 00 00 00 53 74 65 72  |l...........Ster|
0003c010  65 6f 00 00 08 d9 03 00  47 ff ff ff 49 98 6f a7  |eo......G...I.o.|
0003c020  33 01 00 00 33 00 00 00  00 00 00 00 43 6f 6e 74  |3...3.......Cont|
0003c030  72 6f 6c 00 3c da 03 00  48 fd ff ff 16 b0 37 0f  |rol.<...H.....7.|
0003c040  f8 00 00 00 33 00 00 00  00 00 00 00 76 6f 6c 75  |....3.......volu|
0003c050  6d 65 73 00 34 db 03 00  47 fd ff ff 07 79 77 a7  |mes.4...G....yw.|
0003c060  2e 01 00 00 33 00 00 00  00 00 00 00 70 69 74 63  |....3.......pitc|
0003c070  68 65 73 00 64 dc 03 00  47 fd ff ff 36 9f 6f a7  |hes.d...G...6.o.|
0003c080  b4 00 00 00 33 00 00 00  00 00 00 00 64 75 72 61  |....3.......dura|
0003c090  74 69 6f 6e 73 00 00 00  18 dd 03 00 48 fd ff ff  |tions.......H...|
0003c0a0  88 02 81 2b 50 00 00 00  13 01 00 00 00 00 00 00  |...+P...........|
0003c0b0  68 61 6e 64 6c 65 72 5f  00 00 00 00 30 e1 03 00  |handler_....0...|
0003c0c0  48 ff ff ff 66 0f c7 0f  ed 01 00 00 33 00 00 00  |H...f.......3...|
0003c0d0  00 00 00 00 43 6f 6e 74  72 6f 6c 50 61 63 6b 65  |....ControlPacke|
0003c0e0  64 00 00 00 20 e3 03 00  48 ff ff ff 3a 5b 35 0f  |d... ...H...:[5.|
0003c0f0  12 01 00 00 13 00 00 00  00 00 00 00 4c 6f 67 53  |............LogS|
0003c100  63 61 6c 65 00 00 00 00  34 e4 03 00 48 ff ff ff  |cale....4...H...|
0003c110  f9 92 37 0f 2d 01 00 00  13 00 00 00 00 00 00 00  |..7.-...........|
0003c120  50 69 74 63 68 00 00 00  64 e5 03 00 48 ff ff ff  |Pitch...d...H...|
0003c130  72 7c 3b 0f fb 01 00 00  13 00 00 00 00 00 00 00  |r|;.............|
0003c140  51 42 65 61 74 00 00 00  60 e7 03 00 48 ff ff ff  |QBeat...`...H...|
0003c150  77 8d 3a 0f 64 00 00 00  13 00 00 00 00 00 00 00  |w.:.d...........|
0003c160  51 44 69 73 70 61 74 63  68 00 00 00 c4 e7 03 00  |QDispatch.......|
0003c170  48 ff ff ff 28 82 3a 0f  26 02 00 00 13 00 00 00  |H...(.:.&.......|
0003c180  00 00 00 00 51 46 72 65  65 00 00 00 ec e9 03 00  |....QFree.......|
0003c190  48 ff ff ff 6e a8 3a 0f  f2 00 00 00 13 00 00 00  |H...n.:.........|
0003c1a0  00 00 00 00 51 49 6e 69  74 00 00 00 e0 ea 03 00  |....QInit.......|
0003c1b0  48 ff ff ff 1b 8f 3b 0f  65 00 00 00 13 00 00 00  |H.....;.e.......|
0003c1c0  00 00 00 00 51 49 6e 74  65 72 66 61 63 65 00 00  |....QInterface..|
0003c1d0  48 eb 03 00 48 ff ff ff  19 14 3a 0f 62 00 00 00  |H...H.....:.b...|
0003c1e0  13 00 00 00 00 00 00 00  51 52 65 6d 6f 76 65 00  |........QRemove.|
0003c1f0  ac eb 03 00 48 ff ff ff  ce 61 3b 0f 09 03 00 00  |....H....a;.....|
0003c200  13 00 00 00 00 00 00 00  51 53 63 68 65 64 75 6c  |........QSchedul|
0003c210  65 00 00 00 b8 ee 03 00  48 ff ff ff fa e5 3a 0f  |e.......H.....:.|
0003c220  fd 00 00 00 13 00 00 00  00 00 00 00 51 54 65 6d  |............QTem|
0003c230  70 6f 00 00 b8 ef 03 00  48 ff ff ff 75 48 c2 0f  |po......H...uH..|
0003c240  0d 01 00 00 13 00 00 00  00 00 00 00 52 65 61 64  |............Read|
0003c250  43 6f 6e 74 72 6f 6c 42  6c 6f 63 6b 00 00 00 00  |ControlBlock....|
0003c260  c8 f0 03 00 48 fd ff ff  d9 3b c2 0f 2b 02 00 00  |....H....;..+...|
0003c270  33 00 00 00 00 00 00 00  73 63 63 62 00 00 00 00  |3.......sccb....|
0003c280  f4 f2 03 00 48 ff ff ff  21 f9 34 0f f5 00 00 00  |....H...!.4.....|
0003c290  13 00 00 00 00 00 00 00  53 70 65 61 6b 65 72 00  |........Speaker.|
0003c2a0  ec f3 03 00 48 ff ff ff  d4 38 37 0f b4 00 00 00  |....H....87.....|
0003c2b0  13 00 00 00 00 00 00 00  54 75 6e 69 6e 67 00 00  |........Tuning..|
0003c2c0  a0 f4 03 00 48 ff ff ff  a7 45 c2 0f 22 01 00 00  |....H....E.."...|
0003c2d0  13 00 00 00 00 00 00 00  57 72 69 74 65 43 6f 6e  |........WriteCon|
0003c2e0  74 72 6f 6c 42 6c 6f 63  6b 00 00 00 44 41 54 41  |trolBlock...DATA|
0003c2f0  86 01 00 00 53 6f 75 6e  64 0a 23 50 61 72 65 6e  |....Sound.#Paren|
0003c300  74 20 21 52 6f 6f 74 0a  23 50 72 65 66 69 78 20  |t !Root.#Prefix |
0003c310  53 6f 75 6e 64 5f 0a 23  54 61 62 6c 65 20 31 34  |Sound_.#Table 14|
0003c320  20 31 38 0a 3c 41 74 74  61 63 68 4e 61 6d 65 64  | 18.<AttachNamed|
0003c330  56 6f 69 63 65 3e 0a 3c  41 74 74 61 63 68 56 6f  |Voice>.<AttachVo|
0003c340  69 63 65 3e 0a 3c 43 6f  6e 66 69 67 75 72 65 3e  |ice>.<Configure>|
0003c350  0a 3c 43 6f 6e 74 72 6f  6c 3e 0a 3c 43 6f 6e 74  |.<Control>.<Cont|
0003c360  72 6f 6c 50 61 63 6b 65  64 3e 0a 3c 45 6e 61 62  |rolPacked>.<Enab|
0003c370  6c 65 3e 0a 3c 49 6e 73  74 61 6c 6c 56 6f 69 63  |le>.<InstallVoic|
0003c380  65 3e 0a 4c 69 6e 65 61  72 48 61 6e 64 6c 65 72  |e>.LinearHandler|
0003c390  0a 3c 4c 6f 67 53 63 61  6c 65 3e 0a 4d 6f 64 65  |.<LogScale>.Mode|
0003c3a0  0a 3c 50 69 74 63 68 3e  0a 3c 51 42 65 61 74 3e  |.<Pitch>.<QBeat>|
0003c3b0  0a 3c 51 46 72 65 65 3e  0a 3c 51 49 6e 69 74 3e  |.<QFree>.<QInit>|
0003c3c0  0a 3c 51 49 6e 74 65 72  66 61 63 65 3e 0a 3c 51  |.<QInterface>.<Q|
0003c3d0  52 65 6d 6f 76 65 3e 0a  3c 51 53 63 68 65 64 75  |Remove>.<QSchedu|
0003c3e0  6c 65 3e 0a 3c 51 44 69  73 70 61 74 63 68 3e 0a  |le>.<QDispatch>.|
0003c3f0  3c 51 54 65 6d 70 6f 3e  0a 3c 52 65 61 64 43 6f  |<QTempo>.<ReadCo|
0003c400  6e 74 72 6f 6c 42 6c 6f  63 6b 3e 0a 3c 52 65 6d  |ntrolBlock>.<Rem|
0003c410  6f 76 65 56 6f 69 63 65  3e 0a 53 61 6d 70 6c 65  |oveVoice>.Sample|
0003c420  52 61 74 65 0a 3c 53 6f  75 6e 64 4c 6f 67 3e 0a  |Rate.<SoundLog>.|
0003c430  3c 53 70 65 61 6b 65 72  3e 0a 3c 53 74 65 72 65  |<Speaker>.<Stere|
0003c440  6f 3e 0a 3c 54 75 6e 69  6e 67 3e 0a 3c 56 6f 6c  |o>.<Tuning>.<Vol|
0003c450  75 6d 65 3e 0a 3c 57 72  69 74 65 43 6f 6e 74 72  |ume>.<WriteContr|
0003c460  6f 6c 42 6c 6f 63 6b 3e  0a 23 45 6e 64 54 61 62  |olBlock>.#EndTab|
0003c470  6c 65 00 00 44 41 54 41  e5 00 00 00 53 6f 75 6e  |le..DATA....Soun|
0003c480  64 5f 41 74 74 61 63 68  4e 61 6d 65 64 56 6f 69  |d_AttachNamedVoi|
0003c490  63 65 20 20 28 26 34 30  31 38 41 29 0a 23 50 61  |ce  (&4018A).#Pa|
0003c4a0  72 65 6e 74 20 53 6f 75  6e 64 5f 0a 3d 3e 09 52  |rent Sound_.=>.R|
0003c4b0  30 20 3d 09 63 68 61 6e  6e 65 6c 20 6e 75 6d 62  |0 =.channel numb|
0003c4c0  65 72 20 28 31 2d 38 29  0a 09 52 31 20 3d 09 70  |er (1-8)..R1 =.p|
0003c4d0  6f 69 6e 74 65 72 20 74  6f 20 76 6f 69 63 65 20  |ointer to voice |
0003c4e0  6e 61 6d 65 20 28 6e 75  6c 6c 20 74 65 72 6d 69  |name (null termi|
0003c4f0  6e 61 74 65 64 20 41 53  43 49 49 29 0a 0a 3c 3d  |nated ASCII)..<=|
0003c500  09 52 30 20 3d 09 70 72  65 73 65 72 76 65 64 2c  |.R0 =.preserved,|
0003c510  20 6f 72 20 30 20 66 6f  72 20 66 61 69 6c 0a 09  | or 0 for fail..|
0003c520  52 31 20 3d 09 70 72 65  73 65 72 76 65 64 0a 0a  |R1 =.preserved..|
0003c530  53 65 65 20 3c 53 6f 75  6e 64 5f 41 74 74 61 63  |See <Sound_Attac|
0003c540  68 56 6f 69 63 65 3e 20  66 6f 72 20 6d 6f 72 65  |hVoice> for more|
0003c550  20 64 65 74 61 69 6c 73  2e 00 00 00 44 41 54 41  | details....DATA|
0003c560  a1 01 00 00 53 6f 75 6e  64 5f 41 74 74 61 63 68  |....Sound_Attach|
0003c570  56 6f 69 63 65 20 20 28  26 34 30 31 38 35 29 0a  |Voice  (&40185).|
0003c580  23 50 61 72 65 6e 74 20  53 6f 75 6e 64 5f 0a 3d  |#Parent Sound_.=|
0003c590  3e 09 52 30 20 3d 09 63  68 61 6e 6e 65 6c 20 6e  |>.R0 =.channel n|
0003c5a0  75 6d 62 65 72 20 28 31  2d 38 29 0a 09 52 31 20  |umber (1-8)..R1 |
0003c5b0  3d 09 76 6f 69 63 65 20  73 6c 6f 74 20 74 6f 20  |=.voice slot to |
0003c5c0  61 74 74 61 63 68 20 28  30 20 74 6f 20 64 65 74  |attach (0 to det|
0003c5d0  61 63 68 20 61 6e 64 20  6d 75 74 65 29 0a 0a 3c  |ach and mute)..<|
0003c5e0  3d 09 52 30 20 3d 09 70  72 65 73 65 72 76 65 64  |=.R0 =.preserved|
0003c5f0  20 28 6f 72 20 30 20 69  66 20 69 6c 6c 65 67 61  | (or 0 if illega|
0003c600  6c 20 63 68 61 6e 6e 65  6c 20 6e 75 6d 62 65 72  |l channel number|
0003c610  29 0a 09 52 31 20 3d 09  70 72 65 76 69 6f 75 73  |)..R1 =.previous|
0003c620  20 76 6f 69 63 65 20 6e  75 6d 62 65 72 20 28 30  | voice number (0|
0003c630  20 66 6f 72 20 6e 6f 20  70 72 65 76 69 6f 75 73  | for no previous|
0003c640  29 0a 0a 54 68 65 20 70  72 65 76 69 6f 75 73 20  |)..The previous |
0003c650  76 6f 69 63 65 20 69 73  20 73 68 75 74 20 64 6f  |voice is shut do|
0003c660  77 6e 20 61 6e 64 20 74  68 65 20 6e 65 77 20 6f  |wn and the new o|
0003c670  6e 65 20 69 73 20 72 65  73 65 74 2e 0a 0a 44 69  |ne is reset...Di|
0003c680  66 66 65 72 65 6e 74 20  61 6c 67 6f 72 69 74 68  |fferent algorith|
0003c690  6d 73 20 68 61 76 65 20  64 69 66 66 65 72 65 6e  |ms have differen|
0003c6a0  74 20 69 6e 74 65 72 6e  61 6c 20 73 74 61 74 65  |t internal state|
0003c6b0  20 72 65 70 72 65 73 65  6e 74 61 74 69 6f 6e 73  | representations|
0003c6c0  20 73 6f 20 69 74 20 69  73 20 6e 6f 74 20 70 6f  | so it is not po|
0003c6d0  73 73 69 62 6c 65 20 74  6f 20 73 77 61 70 20 56  |ssible to swap V|
0003c6e0  6f 69 63 65 20 47 65 6e  65 72 61 74 6f 72 73 20  |oice Generators |
0003c6f0  69 6e 20 6d 69 64 2d 73  6f 75 6e 64 2e 00 00 00  |in mid-sound....|
0003c700  44 41 54 41 48 03 00 00  53 6f 75 6e 64 5f 43 6f  |DATAH...Sound_Co|
0003c710  6e 66 69 67 75 72 65 20  20 28 26 34 30 31 34 30  |nfigure  (&40140|
0003c720  29 0a 23 50 61 72 65 6e  74 20 53 6f 75 6e 64 5f  |).#Parent Sound_|
0003c730  0a 3d 3e 09 52 30 20 3d  09 6e 75 6d 62 65 72 20  |.=>.R0 =.number |
0003c740  6f 66 20 63 68 61 6e 6e  65 6c 73 3b 20 72 6f 75  |of channels; rou|
0003c750  6e 64 65 64 20 74 6f 20  31 2c 32 2c 34 20 6f 72  |nded to 1,2,4 or|
0003c760  20 38 2c 20 6f 72 20 30  20 74 6f 20 72 65 61 64  | 8, or 0 to read|
0003c770  0a 09 52 31 20 3d 09 44  4d 41 20 62 75 66 66 65  |..R1 =.DMA buffe|
0003c780  72 20 73 69 7a 65 2c 20  69 6e 20 62 79 74 65 73  |r size, in bytes|
0003c790  20 66 6f 72 20 6f 6e 65  20 63 68 61 6e 6e 65 6c  | for one channel|
0003c7a0  2c 20 6f 72 20 30 20 74  6f 20 72 65 61 64 0a 09  |, or 0 to read..|
0003c7b0  52 32 20 3d 09 73 61 6d  70 6c 65 20 70 65 72 69  |R2 =.sample peri|
0003c7c0  6f 64 20 69 6e 20 b5 73  20 28 6f 76 65 72 61 6c  |od in .s (overal|
0003c7d0  6c 29 2c 20 6f 72 20 30  20 74 6f 20 72 65 61 64  |l), or 0 to read|
0003c7e0  0a 09 52 33 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R3 =.pointer t|
0003c7f0  6f 20 3c 43 68 61 6e 6e  65 6c 20 48 61 6e 64 6c  |o <Channel Handl|
0003c800  65 72 20 62 6c 6f 63 6b  3d 3e 53 6f 75 6e 64 5f  |er block=>Sound_|
0003c810  68 61 6e 64 6c 65 72 5f  63 68 61 6e 6e 65 6c 3e  |handler_channel>|
0003c820  20 28 30 20 74 6f 20 70  72 65 73 65 72 76 65 29  | (0 to preserve)|
0003c830  0a 09 52 34 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R4 =.pointer t|
0003c840  6f 20 3c 53 63 68 65 64  75 6c 65 72 3d 3e 53 6f  |o <Scheduler=>So|
0003c850  75 6e 64 5f 68 61 6e 64  6c 65 72 5f 73 63 68 65  |und_handler_sche|
0003c860  64 75 6c 65 72 3e 20 28  30 20 74 6f 20 70 72 65  |duler> (0 to pre|
0003c870  73 65 72 76 65 29 0a 0a  3c 3d 09 52 30 2d 52 34  |serve)..<=.R0-R4|
0003c880  20 3d 09 70 72 65 76 69  6f 75 73 20 76 61 6c 75  | =.previous valu|
0003c890  65 73 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |es.             |
0003c8a0  20 20 20 20 0a 50 6c 65  61 73 65 20 6e 6f 74 65  |    .Please note|
0003c8b0  20 74 68 61 74 20 52 32  20 73 65 74 73 20 74 68  | that R2 sets th|
0003c8c0  65 20 73 61 6d 70 6c 65  20 70 65 72 69 6f 64 20  |e sample period |
0003c8d0  66 6f 72 20 61 6c 6c 20  63 68 61 6e 6e 65 6c 73  |for all channels|
0003c8e0  2c 20 73 6f 20 61 20 63  61 6c 6c 20 77 69 74 68  |, so a call with|
0003c8f0  20 52 30 3d 34 20 61 6e  64 20 52 32 3d 34 38 20  | R0=4 and R2=48 |
0003c900  67 69 76 65 73 20 61 20  73 61 6d 70 6c 65 20 70  |gives a sample p|
0003c910  65 72 69 6f 64 20 6f 66  20 34 38 2f 34 20 3d 20  |eriod of 48/4 = |
0003c920  31 32 20 b5 73 20 70 65  72 20 63 68 61 6e 6e 65  |12 .s per channe|
0003c930  6c 2c 20 77 68 69 6c 65  20 74 68 65 20 70 65 72  |l, while the per|
0003c940  69 6f 64 20 6f 66 20 74  68 65 20 73 6f 75 6e 64  |iod of the sound|
0003c950  20 73 79 73 74 65 6d 20  69 73 20 34 38 20 b5 73  | system is 48 .s|
0003c960  2e 20 55 73 65 20 74 68  65 20 66 6f 72 6d 75 6c  |. Use the formul|
0003c970  61 20 66 3d 31 2f 54 20  74 6f 20 63 6f 6d 70 75  |a f=1/T to compu|
0003c980  74 65 20 74 68 65 20 73  61 6d 70 6c 65 20 72 61  |te the sample ra|
0003c990  74 65 20 28 68 65 72 65  20 32 30 2e 38 33 33 20  |te (here 20.833 |
0003c9a0  6b 48 7a 29 2e 20 52 31  20 73 70 65 63 69 66 69  |kHz). R1 specifi|
0003c9b0  65 73 20 74 68 65 20 44  4d 41 20 73 77 61 70 20  |es the DMA swap |
0003c9c0  62 75 66 66 65 72 20 6c  65 6e 67 74 68 20 66 6f  |buffer length fo|
0003c9d0  72 20 6f 6e 65 20 63 68  61 6e 6e 65 6c 2c 20 74  |r one channel, t|
0003c9e0  68 65 20 65 6e 74 69 72  65 20 6d 65 6d 6f 72 79  |he entire memory|
0003c9f0  20 61 72 65 61 20 68 61  73 20 52 31 2a 52 30 20  | area has R1*R0 |
0003ca00  62 79 74 65 73 2e 0a 0a  41 6c 6c 20 63 75 72 72  |bytes...All curr|
0003ca10  65 6e 74 20 73 65 74 74  69 6e 67 73 20 6d 61 79  |ent settings may|
0003ca20  20 62 65 20 72 65 61 64  20 62 79 20 75 73 69 6e  | be read by usin|
0003ca30  67 20 7a 65 72 6f 20 69  6e 70 75 74 20 70 61 72  |g zero input par|
0003ca40  61 6d 65 74 65 72 73 2e  44 41 54 41 b8 01 00 00  |ameters.DATA....|
0003ca50  53 6f 75 6e 64 5f 45 6e  61 62 6c 65 20 20 28 26  |Sound_Enable  (&|
0003ca60  34 30 31 34 31 29 0a 23  50 61 72 65 6e 74 20 53  |40141).#Parent S|
0003ca70  6f 75 6e 64 5f 0a 3d 3e  09 52 30 20 3d 09 6e 65  |ound_.=>.R0 =.ne|
0003ca80  77 20 73 74 61 74 65 3a  0a 09 20 09 20 20 30 20  |w state:.. .  0 |
0003ca90  66 6f 72 20 6e 6f 20 63  68 61 6e 67 65 20 28 72  |for no change (r|
0003caa0  65 61 64 20 73 74 61 74  65 29 0a 09 20 09 20 20  |ead state).. .  |
0003cab0  31 20 66 6f 72 20 4f 46  46 0a 09 20 09 20 20 32  |1 for OFF.. .  2|
0003cac0  20 66 6f 72 20 4f 4e 0a  0a 3c 3d 09 52 30 20 3d  | for ON..<=.R0 =|
0003cad0  09 70 72 65 76 69 6f 75  73 20 73 74 61 74 65 3a  |.previous state:|
0003cae0  0a 09 20 09 20 20 31 20  66 6f 72 20 4f 46 46 0a  |.. .  1 for OFF.|
0003caf0  09 20 09 20 20 32 20 66  6f 72 20 4f 4e 09 20 09  |. .  2 for ON. .|
0003cb00  20 20 30 20 66 6f 72 20  4f 46 46 0a 0a 54 68 69  |  0 for OFF..Thi|
0003cb10  73 20 53 57 49 20 69 73  20 75 73 65 64 20 74 6f  |s SWI is used to|
0003cb20  20 65 6e 61 62 6c 65 20  6f 72 20 64 69 73 61 62  | enable or disab|
0003cb30  6c 65 20 61 6c 6c 20 53  6f 75 6e 64 20 69 6e 74  |le all Sound int|
0003cb40  65 72 72 75 70 74 73 20  61 6e 64 20 44 4d 41 20  |errupts and DMA |
0003cb50  61 63 74 69 76 69 74 79  2e 0a 23 20 54 68 69 73  |activity..# This|
0003cb60  20 70 72 65 76 69 6f 75  73 6c 79 20 73 61 69 64  | previously said|
0003cb70  20 3a 0a 23 20 09 20 09  20 20 31 20 66 6f 72 20  | :.# . .  1 for |
0003cb80  63 6c 6f 73 65 64 6f 77  6e 20 69 6d 6d 69 6e 65  |closedown immine|
0003cb90  6e 74 0a 23 20 09 20 09  20 20 32 20 66 6f 72 20  |nt.# . .  2 for |
0003cba0  63 6c 6f 73 65 64 6f 77  6e 20 69 6e 20 70 72 6f  |closedown in pro|
0003cbb0  67 72 65 73 73 0a 23 20  09 20 09 20 20 33 20 66  |gress.# . .  3 f|
0003cbc0  6f 72 20 61 63 74 69 76  65 20 4f 4e 0a 23 20 77  |or active ON.# w|
0003cbd0  68 65 72 65 20 49 20 67  6f 74 20 74 68 65 73 65  |here I got these|
0003cbe0  20 64 6f 63 73 20 66 72  6f 6d 20 69 73 20 75 6e  | docs from is un|
0003cbf0  63 6c 65 61 72 20 2d 20  69 64 65 61 73 20 3f 0a  |clear - ideas ?.|
0003cc00  44 41 54 41 21 07 00 00  53 6f 75 6e 64 5f 49 6e  |DATA!...Sound_In|
0003cc10  73 74 61 6c 6c 56 6f 69  63 65 20 20 28 26 34 30  |stallVoice  (&40|
0003cc20  31 38 33 29 0a 23 50 61  72 65 6e 74 20 53 6f 75  |183).#Parent Sou|
0003cc30  6e 64 5f 0a 3d 3e 09 52  30 20 3d 09 70 6f 69 6e  |nd_.=>.R0 =.poin|
0003cc40  74 65 72 20 74 6f 20 56  6f 69 63 65 20 47 65 6e  |ter to Voice Gen|
0003cc50  65 72 61 74 6f 72 20 6f  72 0a 09 20 09 30 20 74  |erator or.. .0 t|
0003cc60  6f 20 3c 72 65 61 64 20  63 75 72 72 65 6e 74 20  |o <read current |
0003cc70  76 6f 69 63 65 27 73 20  6e 61 6d 65 3d 3e 2e 30  |voice's name=>.0|
0003cc80  3e 0a 09 20 09 31 20 74  6f 20 3c 61 64 64 20 61  |>.. .1 to <add a|
0003cc90  20 76 6f 69 63 65 20 75  73 69 6e 67 20 61 20 6c  | voice using a l|
0003cca0  6f 63 61 6c 20 6e 61 6d  65 3d 3e 2e 31 3e 0a 09  |ocal name=>.1>..|
0003ccb0  20 09 32 20 74 6f 20 3c  72 65 61 64 20 63 75 72  | .2 to <read cur|
0003ccc0  72 65 6e 74 20 76 6f 69  63 65 27 73 20 6c 6f 63  |rent voice's loc|
0003ccd0  61 6c 20 6e 61 6d 65 3d  3e 2e 32 3e 0a 09 20 09  |al name=>.2>.. .|
0003cce0  33 20 74 6f 20 3c 63 68  61 6e 67 65 20 63 75 72  |3 to <change cur|
0003ccf0  72 65 6e 74 20 76 6f 69  63 65 27 73 20 6c 6f 63  |rent voice's loc|
0003cd00  61 6c 20 6e 61 6d 65 3d  3e 2e 33 3e 0a 09 52 31  |al name=>.3>..R1|
0003cd10  20 3d 09 76 6f 69 63 65  20 73 6c 6f 74 20 28 31  | =.voice slot (1|
0003cd20  2d 33 32 29 20 28 30 20  74 6f 20 75 73 65 20 6e  |-32) (0 to use n|
0003cd30  65 78 74 20 66 72 65 65  20 73 6c 6f 74 29 0a 0a  |ext free slot)..|
0003cd40  3c 3d 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |<=.R0 =.pointer |
0003cd50  74 6f 20 6e 61 6d 65 20  6f 66 20 70 72 65 76 69  |to name of previ|
0003cd60  6f 75 73 20 76 6f 69 63  65 20 28 6f 72 20 6e 75  |ous voice (or nu|
0003cd70  6c 6c 20 74 65 72 6d 69  6e 61 74 65 64 20 65 72  |ll terminated er|
0003cd80  72 6f 72 20 73 74 72 69  6e 67 29 0a 09 52 31 20  |ror string)..R1 |
0003cd90  3d 09 76 6f 69 63 65 20  6e 75 6d 62 65 72 20 61  |=.voice number a|
0003cda0  6c 6c 6f 63 61 74 65 64  20 28 30 20 66 6f 72 20  |llocated (0 for |
0003cdb0  66 61 69 6c 65 64 21 29  0a 0a 55 73 65 20 74 68  |failed!)..Use th|
0003cdc0  69 73 20 63 61 6c 6c 20  74 6f 20 61 64 64 20 61  |is call to add a|
0003cdd0  20 56 6f 69 63 65 20 47  65 6e 65 72 61 74 6f 72  | Voice Generator|
0003cde0  20 74 6f 20 74 68 65 20  74 61 62 6c 65 20 6f 66  | to the table of|
0003cdf0  20 61 76 61 69 6c 61 62  6c 65 20 76 6f 69 63 65  | available voice|
0003ce00  73 2e 20 41 6e 20 65 72  72 6f 72 20 69 73 20 69  |s. An error is i|
0003ce10  6e 64 69 63 61 74 65 64  20 62 79 20 52 31 20 73  |ndicated by R1 s|
0003ce20  65 74 20 74 6f 20 7a 65  72 6f 20 6f 6e 20 65 78  |et to zero on ex|
0003ce30  69 74 2c 20 61 6e 64 20  52 30 20 70 6f 69 6e 74  |it, and R0 point|
0003ce40  69 6e 67 20 74 6f 20 61  6e 20 65 72 72 6f 72 20  |ing to an error |
0003ce50  73 74 72 69 6e 67 2c 20  6e 6f 74 20 74 68 65 20  |string, not the |
0003ce60  56 20 62 69 74 20 73 65  74 20 69 6e 20 74 68 65  |V bit set in the|
0003ce70  20 75 73 75 61 6c 20 6d  61 6e 6e 65 72 2e 0a 23  | usual manner..#|
0003ce80  53 75 62 50 61 67 65 20  30 0a 53 6f 75 6e 64 5f  |SubPage 0.Sound_|
0003ce90  49 6e 73 74 61 6c 6c 56  6f 69 63 65 20 30 20 20  |InstallVoice 0  |
0003cea0  28 26 34 30 31 38 33 29  0a 3d 3e 09 52 30 20 3d  |(&40183).=>.R0 =|
0003ceb0  09 30 0a 09 52 31 20 3d  09 76 6f 69 63 65 20 73  |.0..R1 =.voice s|
0003cec0  6c 6f 74 20 28 31 2d 33  32 29 0a 0a 3c 3d 09 52  |lot (1-32)..<=.R|
0003ced0  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 6e  |0 =.pointer to n|
0003cee0  61 6d 65 20 6f 66 20 76  6f 69 63 65 20 28 6f 72  |ame of voice (or|
0003cef0  20 6e 75 6c 6c 20 69 66  20 73 6c 6f 74 20 69 73  | null if slot is|
0003cf00  20 66 72 65 65 29 0a 09  52 31 20 70 72 65 73 65  | free)..R1 prese|
0003cf10  72 76 65 64 0a 0a 52 65  61 64 73 20 74 68 65 20  |rved..Reads the |
0003cf20  6e 61 6d 65 20 6f 66 20  74 68 65 20 76 6f 69 63  |name of the voic|
0003cf30  65 20 63 75 72 72 65 6e  74 6c 79 20 69 6e 73 74  |e currently inst|
0003cf40  61 6c 6c 65 64 20 69 6e  20 74 68 65 20 73 70 65  |alled in the spe|
0003cf50  63 69 66 69 65 64 20 73  6c 6f 74 2e 0a 23 53 75  |cified slot..#Su|
0003cf60  62 50 61 67 65 20 31 0a  53 6f 75 6e 64 5f 49 6e  |bPage 1.Sound_In|
0003cf70  73 74 61 6c 6c 56 6f 69  63 65 20 31 20 20 28 26  |stallVoice 1  (&|
0003cf80  34 30 31 38 33 29 0a 3d  3e 09 52 30 20 3d 09 31  |40183).=>.R0 =.1|
0003cf90  0a 09 52 31 20 3d 09 76  6f 69 63 65 20 73 6c 6f  |..R1 =.voice slo|
0003cfa0  74 20 28 31 2d 33 32 29  0a 09 52 32 20 3d 09 70  |t (1-32)..R2 =.p|
0003cfb0  6f 69 6e 74 65 72 20 74  6f 20 56 6f 69 63 65 20  |ointer to Voice |
0003cfc0  47 65 6e 65 72 61 74 6f  72 0a 09 52 33 20 3d 09  |Generator..R3 =.|
0003cfd0  76 6f 69 63 65 20 6e 61  6d 65 20 69 6e 20 6c 6f  |voice name in lo|
0003cfe0  63 61 6c 20 6c 61 6e 67  75 61 67 65 20 28 6f 72  |cal language (or|
0003cff0  20 30 20 69 66 20 6e 6f  20 6c 6f 63 61 6c 20 6e  | 0 if no local n|
0003d000  61 6d 65 29 0a 0a 3c 3d  09 52 30 20 70 72 65 73  |ame)..<=.R0 pres|
0003d010  65 72 76 65 64 0a 09 52  31 20 3d 09 76 6f 69 63  |erved..R1 =.voic|
0003d020  65 20 6e 75 6d 62 65 72  20 61 6c 6c 6f 63 61 74  |e number allocat|
0003d030  65 64 20 28 30 20 66 6f  72 20 66 61 69 6c 65 64  |ed (0 for failed|
0003d040  21 29 0a 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |!)..R0 =.pointer|
0003d050  20 74 6f 20 6e 61 6d 65  20 6f 66 20 70 72 65 76  | to name of prev|
0003d060  69 6f 75 73 20 76 6f 69  63 65 20 28 6f 72 20 6e  |ious voice (or n|
0003d070  75 6c 6c 20 74 65 72 6d  69 6e 61 74 65 64 20 65  |ull terminated e|
0003d080  72 72 6f 72 20 73 74 72  69 6e 67 20 69 66 20 52  |rror string if R|
0003d090  31 20 3d 20 30 29 0a 09  52 33 20 70 72 65 73 65  |1 = 0)..R3 prese|
0003d0a0  72 76 65 64 0a 0a 54 68  69 73 20 62 6f 64 67 65  |rved..This bodge|
0003d0b0  20 61 6c 6c 6f 77 73 20  61 20 76 6f 69 63 65 20  | allows a voice |
0003d0c0  74 6f 20 62 65 20 69 6e  73 74 61 6c 6c 65 64 20  |to be installed |
0003d0d0  77 69 74 68 20 61 20 6c  6f 63 61 6c 20 6e 61 6d  |with a local nam|
0003d0e0  65 2e 0a 23 53 75 62 50  61 67 65 20 32 0a 53 6f  |e..#SubPage 2.So|
0003d0f0  75 6e 64 5f 49 6e 73 74  61 6c 6c 56 6f 69 63 65  |und_InstallVoice|
0003d100  20 32 20 20 28 26 34 30  31 38 33 29 0a 3d 3e 09  | 2  (&40183).=>.|
0003d110  52 30 20 3d 09 30 0a 09  52 31 20 3d 09 76 6f 69  |R0 =.0..R1 =.voi|
0003d120  63 65 20 73 6c 6f 74 20  28 31 2d 33 32 29 0a 0a  |ce slot (1-32)..|
0003d130  3c 3d 09 52 30 2c 20 52  31 20 70 72 65 73 65 72  |<=.R0, R1 preser|
0003d140  76 65 64 0a 09 52 32 20  3d 09 70 6f 69 6e 74 65  |ved..R2 =.pointe|
0003d150  72 20 74 6f 20 6e 61 6d  65 20 6f 66 20 76 6f 69  |r to name of voi|
0003d160  63 65 20 28 6f 72 20 6e  75 6c 6c 20 69 66 20 73  |ce (or null if s|
0003d170  6c 6f 74 20 69 73 20 66  72 65 65 29 0a 09 52 33  |lot is free)..R3|
0003d180  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 6c 6f  | =.pointer to lo|
0003d190  63 61 6c 20 6e 61 6d 65  20 6f 66 20 76 6f 69 63  |cal name of voic|
0003d1a0  65 0a 0a 52 65 61 64 73  20 74 68 65 20 6e 61 6d  |e..Reads the nam|
0003d1b0  65 20 6f 66 20 74 68 65  20 76 6f 69 63 65 20 63  |e of the voice c|
0003d1c0  75 72 72 65 6e 74 6c 79  20 69 6e 73 74 61 6c 6c  |urrently install|
0003d1d0  65 64 20 69 6e 20 74 68  65 20 73 70 65 63 69 66  |ed in the specif|
0003d1e0  69 65 64 20 73 6c 6f 74  2c 20 61 6e 64 20 74 68  |ied slot, and th|
0003d1f0  65 20 6e 61 6d 65 20 69  6e 20 74 68 65 20 6c 6f  |e name in the lo|
0003d200  63 61 6c 20 6c 61 6e 67  75 61 67 65 2e 0a 23 53  |cal language..#S|
0003d210  75 62 50 61 67 65 20 33  0a 53 6f 75 6e 64 5f 49  |ubPage 3.Sound_I|
0003d220  6e 73 74 61 6c 6c 56 6f  69 63 65 20 33 20 20 28  |nstallVoice 3  (|
0003d230  26 34 30 31 38 33 29 0a  3d 3e 09 52 30 20 3d 09  |&40183).=>.R0 =.|
0003d240  30 0a 09 52 31 20 3d 09  76 6f 69 63 65 20 73 6c  |0..R1 =.voice sl|
0003d250  6f 74 20 28 31 2d 33 32  29 0a 09 52 32 20 3d 09  |ot (1-32)..R2 =.|
0003d260  30 0a 09 52 33 20 3d 09  76 6f 69 63 65 20 6e 61  |0..R3 =.voice na|
0003d270  6d 65 20 69 6e 20 6c 6f  63 61 6c 20 6c 61 6e 67  |me in local lang|
0003d280  75 61 67 65 0a 0a 3c 3d  09 52 30 20 2d 20 52 33  |uage..<=.R0 - R3|
0003d290  20 70 72 65 73 65 72 76  65 64 0a 0a 54 68 69 73  | preserved..This|
0003d2a0  20 63 61 6c 6c 20 73 65  74 73 20 74 68 65 20 6e  | call sets the n|
0003d2b0  61 6d 65 20 6f 66 20 74  68 65 20 76 6f 69 63 65  |ame of the voice|
0003d2c0  20 69 6e 20 74 68 65 20  6c 6f 63 61 6c 20 6c 61  | in the local la|
0003d2d0  6e 67 75 61 67 65 2e 20  49 74 20 64 6f 65 73 6e  |nguage. It doesn|
0003d2e0  27 74 20 6d 61 74 74 65  72 20 77 68 65 74 68 65  |'t matter whethe|
0003d2f0  72 20 74 68 65 20 76 6f  69 63 65 20 68 61 64 20  |r the voice had |
0003d300  61 6e 79 20 6c 6f 63 61  6c 20 6e 61 6d 65 20 70  |any local name p|
0003d310  72 69 6f 72 20 74 6f 20  74 68 65 20 63 61 6c 6c  |rior to the call|
0003d320  2e 00 00 00 44 41 54 41  de 01 00 00 53 6f 75 6e  |....DATA....Soun|
0003d330  64 5f 52 65 6d 6f 76 65  56 6f 69 63 65 20 20 28  |d_RemoveVoice  (|
0003d340  26 34 30 31 38 34 29 0a  23 50 61 72 65 6e 74 20  |&40184).#Parent |
0003d350  53 6f 75 6e 64 5f 0a 3d  3e 09 52 30 20 3d 09 76  |Sound_.=>.R0 =.v|
0003d360  6f 69 63 65 20 73 6c 6f  74 20 74 6f 20 72 65 6d  |oice slot to rem|
0003d370  6f 76 65 20 28 31 2d 33  32 29 0a 0a 3c 3d 09 52  |ove (1-32)..<=.R|
0003d380  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 6e  |0 =.pointer to n|
0003d390  61 6d 65 20 6f 66 20 70  72 65 76 69 6f 75 73 20  |ame of previous |
0003d3a0  76 6f 69 63 65 20 28 6f  72 20 65 72 72 6f 72 20  |voice (or error |
0003d3b0  6d 65 73 73 61 67 65 29  0a 09 52 31 20 3d 09 76  |message)..R1 =.v|
0003d3c0  6f 69 63 65 20 6e 75 6d  62 65 72 20 64 65 2d 61  |oice number de-a|
0003d3d0  6c 6c 6f 63 61 74 65 64  20 28 30 20 66 6f 72 20  |llocated (0 for |
0003d3e0  66 61 69 6c 29 0a 0a 54  68 69 73 20 53 57 49 20  |fail)..This SWI |
0003d3f0  69 73 20 75 73 65 64 20  74 6f 20 72 65 6d 6f 76  |is used to remov|
0003d400  65 20 61 20 76 6f 69 63  65 20 66 72 6f 6d 20 74  |e a voice from t|
0003d410  68 65 20 73 79 73 74 65  6d 2c 20 61 6e 64 20 6e  |he system, and n|
0003d420  6f 74 69 66 69 65 73 20  74 68 65 20 43 68 61 6e  |otifies the Chan|
0003d430  6e 65 6c 20 48 61 6e 64  6c 65 72 2e 20 45 72 72  |nel Handler. Err|
0003d440  6f 72 20 68 61 6e 64 6c  69 6e 67 20 6c 69 6b 65  |or handling like|
0003d450  20 69 6e 20 3c 53 6f 75  6e 64 5f 49 6e 73 74 61  | in <Sound_Insta|
0003d460  6c 6c 56 6f 69 63 65 3e  2e 20 54 68 69 73 20 63  |llVoice>. This c|
0003d470  61 6c 6c 20 6d 75 73 74  20 61 6c 73 6f 20 62 65  |all must also be|
0003d480  20 69 73 73 75 65 64 20  62 65 66 6f 72 65 20 74  | issued before t|
0003d490  68 65 20 52 4d 41 20 69  73 20 74 69 64 69 65 64  |he RMA is tidied|
0003d4a0  2c 20 73 69 6e 63 65 20  74 68 65 20 6d 6f 64 75  |, since the modu|
0003d4b0  6c 65 20 63 6f 6e 74 61  69 6e 73 20 61 62 73 6f  |le contains abso|
0003d4c0  6c 75 74 65 20 70 6f 69  6e 74 65 72 73 20 74 6f  |lute pointers to|
0003d4d0  20 56 6f 69 63 65 20 47  65 6e 65 72 61 74 6f 72  | Voice Generator|
0003d4e0  73 20 74 68 61 74 20 61  72 65 20 6c 69 6b 65 6c  |s that are likel|
0003d4f0  79 20 74 6f 20 65 78 69  73 74 20 69 6e 20 52 4d  |y to exist in RM|
0003d500  41 2e 00 00 44 41 54 41  1b 01 00 00 53 6f 75 6e  |A...DATA....Soun|
0003d510  64 5f 53 6f 75 6e 64 4c  6f 67 20 20 28 26 34 30  |d_SoundLog  (&40|
0003d520  31 38 31 29 0a 23 50 61  72 65 6e 74 20 53 6f 75  |181).#Parent Sou|
0003d530  6e 64 5f 0a 3d 3e 09 52  30 20 3d 09 33 32 2d 62  |nd_.=>.R0 =.32-b|
0003d540  69 74 20 73 69 67 6e 65  64 20 69 6e 74 65 67 65  |it signed intege|
0003d550  72 0a 0a 3c 3d 09 52 30  20 3d 09 38 2d 62 69 74  |r..<=.R0 =.8-bit|
0003d560  20 73 69 67 6e 65 64 20  76 6f 6c 75 6d 65 2d 73  | signed volume-s|
0003d570  63 61 6c 65 64 20 6c 6f  67 61 72 69 74 68 6d 20  |caled logarithm |
0003d580  28 4c 53 42 29 0a 0a 54  68 69 73 20 63 61 6c 6c  |(LSB)..This call|
0003d590  20 63 6f 6e 76 65 72 74  73 20 61 20 73 69 67 6e  | converts a sign|
0003d5a0  65 64 20 69 6e 74 65 67  65 72 20 6c 6f 6e 67 77  |ed integer longw|
0003d5b0  6f 72 64 20 74 6f 20 61  20 73 69 67 6e 65 64 20  |ord to a signed |
0003d5c0  6c 6f 67 61 72 69 74 68  6d 20 62 79 74 65 20 69  |logarithm byte i|
0003d5d0  6e 20 56 49 44 43 20 6c  6f 77 65 72 20 73 69 67  |n VIDC lower sig|
0003d5e0  6e 20 62 69 74 20 66 6f  72 6d 61 74 20 76 69 61  |n bit format via|
0003d5f0  20 74 61 62 6c 65 20 6c  6f 6f 6b 75 70 20 28 69  | table lookup (i|
0003d600  65 20 74 68 65 20 63 75  72 72 65 6e 74 20 76 6f  |e the current vo|
0003d610  6c 75 6d 65 20 73 65 74  74 69 6e 67 21 29 2e 00  |lume setting!)..|
0003d620  44 41 54 41 7a 01 00 00  53 6f 75 6e 64 5f 56 6f  |DATAz...Sound_Vo|
0003d630  6c 75 6d 65 20 20 28 26  34 30 31 38 30 29 0a 23  |lume  (&40180).#|
0003d640  50 61 72 65 6e 74 20 53  6f 75 6e 64 5f 0a 3d 3e  |Parent Sound_.=>|
0003d650  09 52 30 20 3d 09 73 6f  75 6e 64 20 76 6f 6c 75  |.R0 =.sound volu|
0003d660  6d 65 20 28 31 2d 31 32  37 29 20 28 30 20 74 6f  |me (1-127) (0 to|
0003d670  20 72 65 61 64 20 73 65  74 74 69 6e 67 29 0a 3c  | read setting).<|
0003d680  3d 09 52 30 20 3d 09 70  72 65 76 69 6f 75 73 20  |=.R0 =.previous |
0003d690  76 6f 6c 75 6d 65 0a 0a  54 68 69 73 20 63 61 6c  |volume..This cal|
0003d6a0  6c 20 73 65 74 73 20 74  68 65 20 6d 61 78 69 6d  |l sets the maxim|
0003d6b0  75 6d 20 6f 76 65 72 61  6c 6c 20 76 6f 6c 75 6d  |um overall volum|
0003d6c0  65 20 6f 66 20 74 68 65  20 53 6f 75 6e 64 20 73  |e of the Sound s|
0003d6d0  79 73 74 65 6d 2e 20 41  20 63 68 61 6e 67 65 20  |ystem. A change |
0003d6e0  6f 66 20 31 36 20 77 69  6c 6c 20 68 61 6c 76 65  |of 16 will halve|
0003d6f0  20 6f 72 20 64 6f 75 62  6c 65 20 74 68 65 20 76  | or double the v|
0003d700  6f 6c 75 6d 65 2e 20 54  68 65 20 63 6f 6d 6d 61  |olume. The comma|
0003d710  6e 64 20 61 6c 73 6f 20  73 63 61 6c 65 73 20 74  |nd also scales t|
0003d720  68 65 20 69 6e 74 65 72  6e 61 6c 20 76 6f 6c 75  |he internal volu|
0003d730  6d 65 20 6c 6f 6f 6b 75  70 20 74 61 62 6c 65 73  |me lookup tables|
0003d740  20 6f 66 20 74 68 65 20  56 6f 69 63 65 20 47 65  | of the Voice Ge|
0003d750  6e 65 72 61 74 6f 72 73  2c 20 77 68 69 63 68 20  |nerators, which |
0003d760  69 6e 76 6f 6c 76 65 73  20 61 20 6c 61 72 67 65  |involves a large|
0003d770  20 61 6d 6f 75 6e 74 20  6f 66 20 63 61 6c 63 75  | amount of calcu|
0003d780  6c 61 74 69 6f 6e 20 62  65 68 69 6e 64 20 74 68  |lation behind th|
0003d790  65 20 73 63 65 6e 65 73  2e 0a 00 00 44 41 54 41  |e scenes....DATA|
0003d7a0  6c 01 00 00 53 6f 75 6e  64 5f 53 74 65 72 65 6f  |l...Sound_Stereo|
0003d7b0  20 20 28 26 34 30 31 34  32 29 0a 23 50 61 72 65  |  (&40142).#Pare|
0003d7c0  6e 74 20 53 6f 75 6e 64  5f 0a 3d 3e 09 52 30 20  |nt Sound_.=>.R0 |
0003d7d0  3d 09 63 68 61 6e 6e 65  6c 20 6e 75 6d 62 65 72  |=.channel number|
0003d7e0  0a 09 52 31 20 3d 09 3c  73 74 65 72 65 6f 20 70  |..R1 =.<stereo p|
0003d7f0  6f 73 69 74 69 6f 6e 3d  3e 2e 70 6f 73 69 74 69  |osition=>.positi|
0003d800  6f 6e 73 3e 0a 3c 3d 09  52 30 20 70 72 65 73 65  |ons>.<=.R0 prese|
0003d810  72 76 65 64 0a 09 52 31  20 3d 09 70 72 65 76 69  |rved..R1 =.previ|
0003d820  6f 75 73 20 70 6f 73 69  74 69 6f 6e 2c 20 6f 72  |ous position, or|
0003d830  20 2d 31 32 38 20 69 66  20 69 6e 76 61 6c 69 64  | -128 if invalid|
0003d840  20 63 68 61 6e 6e 65 6c  0a 0a 54 68 69 73 20 63  | channel..This c|
0003d850  61 6c 6c 20 73 65 74 73  20 74 68 65 20 73 74 65  |all sets the ste|
0003d860  72 65 6f 20 70 6f 73 69  74 69 6f 6e 20 6f 66 20  |reo position of |
0003d870  61 20 70 61 72 74 69 63  75 6c 61 72 20 63 68 61  |a particular cha|
0003d880  6e 6e 65 6c 2e 0a 23 53  75 62 70 61 67 65 20 70  |nnel..#Subpage p|
0003d890  6f 73 69 74 69 6f 6e 73  0a 53 74 65 72 65 6f 20  |ositions.Stereo |
0003d8a0  70 6f 73 69 74 69 6f 6e  73 0a 56 61 6c 75 65 09  |positions.Value.|
0003d8b0  4d 65 61 6e 69 6e 67 0a  23 4c 69 6e 65 0a 30 09  |Meaning.#Line.0.|
0003d8c0  43 65 6e 74 72 65 0a 2d  31 32 37 09 4c 65 66 74  |Centre.-127.Left|
0003d8d0  0a 31 32 37 09 52 69 67  68 74 0a 2d 31 32 38 09  |.127.Right.-128.|
0003d8e0  52 65 61 64 20 70 6f 73  69 74 69 6f 6e 20 28 69  |Read position (i|
0003d8f0  66 20 75 73 69 6e 67 20  3c 53 6f 75 6e 64 5f 53  |f using <Sound_S|
0003d900  74 65 72 65 6f 3e 29 0a  44 41 54 41 33 01 00 00  |tereo>).DATA3...|
0003d910  53 6f 75 6e 64 5f 43 6f  6e 74 72 6f 6c 20 28 26  |Sound_Control (&|
0003d920  34 30 31 38 39 29 0a 23  50 61 72 65 6e 74 20 53  |40189).#Parent S|
0003d930  6f 75 6e 64 5f 0a 3d 3e  09 52 30 20 3d 09 63 68  |ound_.=>.R0 =.ch|
0003d940  61 6e 6e 65 6c 20 28 31  2d 38 29 0a 09 52 31 20  |annel (1-8)..R1 |
0003d950  3d 09 3c 76 6f 6c 75 6d  65 3d 3e 73 6f 75 6e 64  |=.<volume=>sound|
0003d960  5f 76 6f 6c 75 6d 65 73  3e 0a 09 52 32 20 3d 09  |_volumes>..R2 =.|
0003d970  3c 70 69 74 63 68 3d 3e  73 6f 75 6e 64 5f 70 69  |<pitch=>sound_pi|
0003d980  74 63 68 65 73 3e 0a 09  52 33 20 3d 09 3c 64 75  |tches>..R3 =.<du|
0003d990  72 61 74 69 6f 6e 3d 3e  73 6f 75 6e 64 5f 64 75  |ration=>sound_du|
0003d9a0  72 61 74 69 6f 6e 73 3e  0a 0a 54 68 69 73 20 53  |rations>..This S|
0003d9b0  57 49 20 77 69 6c 6c 20  70 6c 61 79 20 61 20 73  |WI will play a s|
0003d9c0  6f 75 6e 64 20 6f 6e 20  61 20 67 69 76 65 6e 20  |ound on a given |
0003d9d0  63 68 61 6e 6e 65 6c 2e  20 49 66 20 61 6e 79 20  |channel. If any |
0003d9e0  6f 66 20 74 68 65 20 70  61 72 61 6d 65 74 65 72  |of the parameter|
0003d9f0  73 20 61 72 65 20 69 6e  63 6f 72 72 65 63 74 20  |s are incorrect |
0003da00  74 68 65 6e 20 6e 6f 20  65 72 72 6f 72 20 69 73  |then no error is|
0003da10  20 72 61 69 73 65 64 20  61 6e 64 20 6e 6f 20 6f  | raised and no o|
0003da20  70 65 72 61 74 69 6f 6e  20 77 69 6c 6c 20 62 65  |peration will be|
0003da30  20 70 65 72 66 6f 72 6d  65 64 2e 00 44 41 54 41  | performed..DATA|
0003da40  f8 00 00 00 53 6f 75 6e  64 20 76 6f 6c 75 6d 65  |....Sound volume|
0003da50  73 0a 56 6f 6c 75 6d 65  09 09 4d 65 61 6e 69 6e  |s.Volume..Meanin|
0003da60  67 0a 23 4c 69 6e 65 0a  2d 31 35 20 2d 20 30 09  |g.#Line.-15 - 0.|
0003da70  09 42 42 43 20 73 74 79  6c 65 20 76 6f 6c 75 6d  |.BBC style volum|
0003da80  65 0a 26 46 46 46 31 20  2d 20 26 46 46 46 46 09  |e.&FFF1 - &FFFF.|
0003da90  64 69 74 74 6f 0a 26 31  30 30 20 2d 20 26 31 37  |ditto.&100 - &17|
0003daa0  46 09 47 61 74 65 20 6f  6e 2c 20 6c 6f 67 61 72  |F.Gate on, logar|
0003dab0  69 74 68 6d 69 63 20 76  6f 6c 75 6d 65 20 28 63  |ithmic volume (c|
0003dac0  75 74 73 20 63 75 72 72  65 6e 74 20 6e 6f 74 65  |uts current note|
0003dad0  20 61 6e 64 20 70 6c 61  79 73 20 6e 65 77 20 6f  | and plays new o|
0003dae0  6e 65 29 0a 26 31 38 30  20 2d 20 26 31 46 46 09  |ne).&180 - &1FF.|
0003daf0  53 6d 6f 6f 74 68 20 75  70 64 61 74 65 2c 20 6c  |Smooth update, l|
0003db00  6f 67 61 72 69 74 68 6d  69 63 20 76 6f 6c 75 6d  |ogarithmic volum|
0003db10  65 20 28 63 68 61 6e 67  65 73 20 63 75 72 72 65  |e (changes curre|
0003db20  6e 74 20 6e 6f 74 65 20  70 61 72 61 6d 65 74 65  |nt note paramete|
0003db30  72 73 29 0a 44 41 54 41  2e 01 00 00 53 6f 75 6e  |rs).DATA....Soun|
0003db40  64 20 70 69 74 63 68 65  73 0a 50 69 74 63 68 09  |d pitches.Pitch.|
0003db50  09 4d 65 61 6e 69 6e 67  0a 23 4c 69 6e 65 0a 30  |.Meaning.#Line.0|
0003db60  20 2d 20 32 35 35 09 09  42 42 43 20 73 74 79 6c  | - 255..BBC styl|
0003db70  65 20 70 69 74 63 68 20  28 69 6e 63 72 65 61 73  |e pitch (increas|
0003db80  65 20 62 79 20 34 20 66  6f 72 20 6f 6e 65 20 73  |e by 4 for one s|
0003db90  65 6d 69 74 6f 6e 65 29  0a 26 30 31 30 30 20 2d  |emitone).&0100 -|
0003dba0  20 26 37 46 46 46 09 45  6e 68 61 6e 63 65 64 20  | &7FFF.Enhanced |
0003dbb0  70 69 74 63 68 20 63 6f  6e 74 72 6f 6c 20 3a 20  |pitch control : |
0003dbc0  26 6f 66 66 66 0a 09 09  26 6f 30 30 30 20 69 73  |&offf...&o000 is|
0003dbd0  20 6f 63 74 61 76 65 2c  20 26 30 66 66 66 20 69  | octave, &0fff i|
0003dbe0  73 20 66 72 61 63 74 69  6f 6e 20 6f 66 20 6f 63  |s fraction of oc|
0003dbf0  74 61 76 65 3b 0a 09 09  26 34 30 30 30 20 69 73  |tave;...&4000 is|
0003dc00  20 75 73 75 61 6c 6c 79  20 6d 69 64 64 6c 65 20  | usually middle |
0003dc10  43 20 74 68 6f 75 67 68  20 74 68 69 73 20 64 65  |C though this de|
0003dc20  70 65 6e 64 73 20 6f 6e  20 74 68 65 20 73 61 6d  |pends on the sam|
0003dc30  70 6c 65 0a 26 38 30 30  30 20 2d 20 26 46 46 46  |ple.&8000 - &FFF|
0003dc40  46 09 50 68 61 73 65 20  61 63 63 75 6d 75 6c 61  |F.Phase accumula|
0003dc50  74 6f 72 20 69 6e 63 72  65 6d 65 6e 74 20 28 3f  |tor increment (?|
0003dc60  29 0a 00 00 44 41 54 41  b4 00 00 00 53 6f 75 6e  |)...DATA....Soun|
0003dc70  64 20 64 75 72 61 74 69  6f 6e 0a 44 75 72 61 74  |d duration.Durat|
0003dc80  69 6f 6e 09 4d 65 61 6e  69 6e 67 0a 23 4c 69 6e  |ion.Meaning.#Lin|
0003dc90  65 0a 31 20 2d 20 32 35  34 09 09 42 42 43 20 73  |e.1 - 254..BBC s|
0003dca0  74 79 6c 65 20 64 75 72  61 74 69 6f 6e 20 28 69  |tyle duration (i|
0003dcb0  6e 20 35 20 63 73 20 6d  75 6c 74 69 70 6c 65 73  |n 5 cs multiples|
0003dcc0  29 0a 32 35 35 09 09 42  42 43 20 73 74 79 6c 65  |).255..BBC style|
0003dcd0  20 69 6e 66 69 6e 69 74  65 20 64 75 72 61 74 69  | infinite durati|
0003dce0  6f 6e 20 28 61 63 74 75  61 6c 6c 79 20 26 46 30  |on (actually &F0|
0003dcf0  30 30 30 30 30 30 29 0a  32 35 36 20 2d 09 09 64  |000000).256 -..d|
0003dd00  75 72 61 74 69 6f 6e 20  69 6e 20 35 20 63 73 20  |uration in 5 cs |
0003dd10  70 65 72 69 6f 64 73 0a  44 49 52 24 50 00 00 00  |periods.DIR$P...|
0003dd20  50 00 00 00 68 dd 03 00  47 fd ff ff 7d 3b 82 a7  |P...h...G...};..|
0003dd30  d4 02 00 00 33 00 00 00  00 00 00 00 63 68 61 6e  |....3.......chan|
0003dd40  6e 65 6c 00 3c e0 03 00  47 fd ff ff 4b 33 82 a7  |nel.<...G...K3..|
0003dd50  f1 00 00 00 33 00 00 00  00 00 00 00 73 63 68 65  |....3.......sche|
0003dd60  64 75 6c 65 72 00 00 00  44 41 54 41 d4 02 00 00  |duler...DATA....|
0003dd70  53 6f 75 6e 64 20 43 68  61 6e 6e 65 6c 20 68 61  |Sound Channel ha|
0003dd80  6e 64 6c 65 72 20 62 6c  6f 63 6b 0a 4f 66 66 73  |ndler block.Offs|
0003dd90  65 74 09 4d 65 61 6e 69  6e 67 0a 23 4c 69 6e 65  |et.Meaning.#Line|
0003dda0  0a 30 09 70 6f 69 6e 74  65 72 20 74 6f 20 3c 66  |.0.pointer to <f|
0003ddb0  69 6c 6c 20 63 6f 64 65  3d 3e 2e 66 69 6c 6c 3e  |ill code=>.fill>|
0003ddc0  0a 34 09 70 6f 69 6e 74  65 72 20 74 6f 20 3c 6f  |.4.pointer to <o|
0003ddd0  76 65 72 72 75 6e 20 66  69 78 75 70 20 63 6f 64  |verrun fixup cod|
0003dde0  65 3d 3e 2e 66 69 78 75  70 3e 0a 38 09 70 6f 69  |e=>.fixup>.8.poi|
0003ddf0  6e 74 65 72 20 74 6f 20  6c 69 6e 65 61 72 2d 74  |nter to linear-t|
0003de00  6f 2d 6c 6f 67 20 63 6f  6e 76 65 72 73 69 6f 6e  |o-log conversion|
0003de10  20 74 61 62 6c 65 0a 31  32 09 70 6f 69 6e 74 65  | table.12.pointe|
0003de20  72 20 74 6f 20 6c 6f 67  20 76 6f 6c 75 6d 65 20  |r to log volume |
0003de30  73 63 61 6c 65 20 74 61  62 6c 65 0a 0a 54 68 65  |scale table..The|
0003de40  20 76 6f 6c 75 6d 65 20  73 63 61 6c 65 20 74 61  | volume scale ta|
0003de50  62 6c 65 20 63 61 6e 20  62 65 20 75 73 65 64 20  |ble can be used |
0003de60  74 6f 20 73 63 61 6c 65  20 73 61 6d 70 6c 65 73  |to scale samples|
0003de70  20 74 6f 20 74 68 65 20  63 75 72 72 65 6e 74 20  | to the current |
0003de80  76 6f 6c 75 6d 65 2e 0a  23 73 75 62 70 61 67 65  |volume..#subpage|
0003de90  20 66 69 6c 6c 0a 43 68  61 6e 6e 65 6c 20 68 61  | fill.Channel ha|
0003dea0  6e 64 6c 65 72 20 66 69  6c 6c 20 63 6f 64 65 0a  |ndler fill code.|
0003deb0  3d 3e 09 52 31 32 20 3d  09 70 6f 69 6e 74 65 72  |=>.R12 =.pointer|
0003dec0  20 74 6f 20 44 4d 41 20  62 75 66 66 65 72 0a 09  | to DMA buffer..|
0003ded0  52 31 31 20 3d 09 6e 75  6d 62 65 72 20 6f 66 20  |R11 =.number of |
0003dee0  63 68 61 6e 6e 65 6c 73  0a 3c 3d 09 6e 6f 20 72  |channels.<=.no r|
0003def0  65 67 69 73 74 65 72 73  20 6e 65 65 64 20 70 72  |egisters need pr|
0003df00  65 73 65 72 76 69 6e 67  0a 0a 54 68 65 73 65 20  |eserving..These |
0003df10  76 61 6c 75 65 73 20 68  61 76 65 20 62 65 65 6e  |values have been|
0003df20  20 66 6f 75 6e 64 20 62  79 20 65 78 61 6d 70 6c  | found by exampl|
0003df30  65 20 6f 6e 6c 79 2e 20  49 74 20 69 73 20 74 68  |e only. It is th|
0003df40  65 20 6a 6f 62 20 6f 66  20 74 68 65 20 63 68 61  |e job of the cha|
0003df50  6e 6e 65 6c 20 68 61 6e  64 6c 65 72 20 74 6f 20  |nnel handler to |
0003df60  63 61 6c 6c 20 74 68 65  20 76 6f 69 63 65 20 67  |call the voice g|
0003df70  65 6e 65 72 61 74 6f 72  73 20 61 73 20 72 65 71  |enerators as req|
0003df80  75 69 72 65 64 2e 0a 23  73 75 62 70 61 67 65 20  |uired..#subpage |
0003df90  66 69 78 75 70 0a 43 68  61 6e 6e 65 6c 20 68 61  |fixup.Channel ha|
0003dfa0  6e 64 6c 65 72 20 6f 76  65 72 72 75 6e 20 66 69  |ndler overrun fi|
0003dfb0  78 75 70 0a 54 68 69 73  20 63 6f 64 65 20 69 73  |xup.This code is|
0003dfc0  20 6e 65 76 65 72 20 63  61 6c 6c 65 64 2c 20 62  | never called, b|
0003dfd0  75 74 20 66 6f 72 20 73  61 66 65 74 79 20 79 6f  |ut for safety yo|
0003dfe0  75 20 73 68 6f 75 6c 64  20 6d 61 6b 65 20 74 68  |u should make th|
0003dff0  69 73 20 70 6f 69 6e 74  20 74 6f 20 7b 66 43 6f  |is point to {fCo|
0003e000  64 65 7d 4d 4f 56 53 20  70 63 2c 6c 69 6e 6b 7b  |de}MOVS pc,link{|
0003e010  66 7d 20 77 68 69 63 68  20 77 69 6c 6c 20 72 65  |f} which will re|
0003e020  74 75 72 6e 20 69 6d 6d  65 64 69 61 74 65 6c 79  |turn immediately|
0003e030  20 69 66 20 63 61 6c 6c  65 64 2e 0a 44 41 54 41  | if called..DATA|
0003e040  f1 00 00 00 53 6f 75 6e  64 20 73 63 68 65 64 75  |....Sound schedu|
0003e050  6c 65 72 20 68 61 6e 64  6c 65 72 20 62 6c 6f 63  |ler handler bloc|
0003e060  6b 0a 4f 66 66 73 65 74  09 4d 65 61 6e 69 6e 67  |k.Offset.Meaning|
0003e070  0a 23 4c 69 6e 65 0a 30  09 70 6f 69 6e 74 65 72  |.#Line.0.pointer|
0003e080  20 74 6f 20 3c 73 63 68  65 64 75 6c 65 20 63 6f  | to <schedule co|
0003e090  64 65 3d 3e 2e 73 63 68  65 64 75 6c 65 3e 0a 0a  |de=>.schedule>..|
0003e0a0  54 68 65 20 73 6f 75 6e  64 20 73 63 68 65 64 75  |The sound schedu|
0003e0b0  6c 65 72 20 69 73 20 63  61 6c 6c 65 64 20 65 76  |ler is called ev|
0003e0c0  65 72 79 20 63 65 6e 74  69 2d 73 65 63 6f 6e 64  |ery centi-second|
0003e0d0  20 74 6f 20 73 63 68 65  64 75 6c 65 20 6d 6f 72  | to schedule mor|
0003e0e0  65 20 73 6f 75 6e 64 73  2e 0a 23 73 75 62 70 61  |e sounds..#subpa|
0003e0f0  67 65 20 73 63 68 65 64  75 6c 65 0a 53 63 68 65  |ge schedule.Sche|
0003e100  64 75 6c 65 20 68 61 6e  64 6c 65 72 20 66 69 6c  |dule handler fil|
0003e110  6c 20 63 6f 64 65 0a 3d  3e 09 75 6e 6b 6e 6f 77  |l code.=>.unknow|
0003e120  6e 0a 3c 3d 09 75 6e 6b  6e 6f 77 6e 0a 00 00 00  |n.<=.unknown....|
0003e130  44 41 54 41 ed 01 00 00  53 6f 75 6e 64 5f 43 6f  |DATA....Sound_Co|
0003e140  6e 74 72 6f 6c 50 61 63  6b 65 64 20 20 28 26 34  |ntrolPacked  (&4|
0003e150  30 31 38 36 29 0a 23 50  61 72 65 6e 74 20 53 6f  |0186).#Parent So|
0003e160  75 6e 64 5f 0a 3d 3e 09  52 30 20 3d 09 26 41 41  |und_.=>.R0 =.&AA|
0003e170  41 41 43 43 43 43 09 3c  61 6d 70 6c 69 74 75 64  |AACCCC.<amplitud|
0003e180  65 3d 3e 73 6f 75 6e 64  5f 76 6f 6c 75 6d 65 73  |e=>sound_volumes|
0003e190  3e 09 63 68 61 6e 6e 65  6c 20 28 31 2d 38 29 0a  |>.channel (1-8).|
0003e1a0  09 52 31 20 3d 09 26 44  44 44 44 50 50 50 50 09  |.R1 =.&DDDDPPPP.|
0003e1b0  3c 64 75 72 61 74 69 6f  6e 3d 3e 73 6f 75 6e 64  |<duration=>sound|
0003e1c0  5f 64 75 72 61 74 69 6f  6e 73 3e 09 3c 70 69 74  |_durations>.<pit|
0003e1d0  63 68 3d 3e 73 6f 75 6e  64 5f 70 69 74 63 68 65  |ch=>sound_pitche|
0003e1e0  73 3e 0a 3c 3d 09 52 30  2c 20 52 31 20 70 72 65  |s>.<=.R0, R1 pre|
0003e1f0  73 65 72 76 65 64 0a 0a  54 68 69 73 20 53 57 49  |served..This SWI|
0003e200  20 69 73 20 69 64 65 6e  74 69 63 61 6c 20 74 6f  | is identical to|
0003e210  20 3c 53 6f 75 6e 64 5f  43 6f 6e 74 72 6f 6c 3e  | <Sound_Control>|
0003e220  2c 20 65 78 63 65 70 74  20 74 68 61 74 20 74 68  |, except that th|
0003e230  65 20 70 61 72 61 6d 65  74 65 72 73 20 61 72 65  |e parameters are|
0003e240  20 70 61 63 6b 65 64 20  61 73 20 70 61 69 72 73  | packed as pairs|
0003e250  20 6f 66 20 31 36 20 62  69 74 20 76 61 6c 75 65  | of 16 bit value|
0003e260  73 20 69 6e 74 6f 20 52  30 20 61 6e 64 20 52 31  |s into R0 and R1|
0003e270  2e 20 49 74 20 69 73 20  70 72 6f 76 69 64 65 64  |. It is provided|
0003e280  20 66 6f 72 20 42 42 43  20 63 6f 6d 70 61 74 69  | for BBC compati|
0003e290  62 69 6c 69 74 79 20 61  6e 64 20 74 68 65 20 73  |bility and the s|
0003e2a0  63 68 65 64 75 6c 65 72  2e 20 55 73 65 20 3c 53  |cheduler. Use <S|
0003e2b0  6f 75 6e 64 5f 43 6f 6e  74 72 6f 6c 3e 20 69 6e  |ound_Control> in|
0003e2c0  73 74 65 61 64 20 69 66  20 70 6f 73 73 69 62 6c  |stead if possibl|
0003e2d0  65 2e 0a 0a 54 68 65 20  61 64 76 61 6e 74 61 67  |e...The advantag|
0003e2e0  65 20 6f 66 20 74 68 69  73 20 53 57 49 20 69 73  |e of this SWI is|
0003e2f0  20 74 68 61 74 20 69 74  20 6d 61 79 20 62 65 20  | that it may be |
0003e300  75 73 65 64 20 77 69 74  68 20 3c 53 6f 75 6e 64  |used with <Sound|
0003e310  5f 51 53 63 68 65 64 75  6c 65 3e 2e 0a 00 00 00  |_QSchedule>.....|
0003e320  44 41 54 41 12 01 00 00  53 6f 75 6e 64 5f 4c 6f  |DATA....Sound_Lo|
0003e330  67 53 63 61 6c 65 20 20  28 26 34 30 31 38 32 29  |gScale  (&40182)|
0003e340  0a 23 50 61 72 65 6e 74  20 53 6f 75 6e 64 5f 0a  |.#Parent Sound_.|
0003e350  3d 3e 09 52 30 20 3d 09  38 2d 62 69 74 20 73 69  |=>.R0 =.8-bit si|
0003e360  67 6e 65 64 20 6c 6f 67  61 72 69 74 68 6d 0a 0a  |gned logarithm..|
0003e370  3c 3d 09 52 30 20 3d 09  38 2d 62 69 74 20 73 69  |<=.R0 =.8-bit si|
0003e380  67 6e 65 64 20 76 6f 6c  75 6d 65 2d 73 63 61 6c  |gned volume-scal|
0003e390  65 64 20 6c 6f 67 61 72  69 74 68 6d 20 28 4c 53  |ed logarithm (LS|
0003e3a0  42 29 0a 0a 54 68 69 73  20 63 61 6c 6c 20 63 6f  |B)..This call co|
0003e3b0  6e 76 65 72 74 73 20 61  20 73 69 67 6e 65 64 20  |nverts a signed |
0003e3c0  6c 6f 67 61 72 69 74 68  6d 20 62 79 74 65 20 69  |logarithm byte i|
0003e3d0  6e 20 56 49 44 43 20 6c  6f 77 65 72 20 73 69 67  |n VIDC lower sig|
0003e3e0  6e 20 62 69 74 20 66 6f  72 6d 61 74 20 74 6f 20  |n bit format to |
0003e3f0  61 20 62 79 74 65 20 73  63 61 6c 65 64 20 66 6f  |a byte scaled fo|
0003e400  72 20 74 68 65 20 63 75  72 72 65 6e 74 20 76 6f  |r the current vo|
0003e410  6c 75 6d 65 20 73 65 74  74 69 6e 67 2e 20 28 76  |lume setting. (v|
0003e420  69 61 20 61 20 6c 6f 6f  6b 75 70 20 74 61 62 6c  |ia a lookup tabl|
0003e430  65 29 00 00 44 41 54 41  2d 01 00 00 53 6f 75 6e  |e)..DATA-...Soun|
0003e440  64 5f 50 69 74 63 68 20  20 28 26 34 30 31 38 38  |d_Pitch  (&40188|
0003e450  29 0a 23 50 61 72 65 6e  74 20 53 6f 75 6e 64 5f  |).#Parent Sound_|
0003e460  0a 3d 3e 09 52 30 20 3d  09 70 69 74 63 68 20 76  |.=>.R0 =.pitch v|
0003e470  61 6c 75 65 0a 09 20 09  31 34 2d 31 32 09 33 20  |alue.. .14-12.3 |
0003e480  62 69 74 20 6f 63 74 61  76 65 20 6e 75 6d 62 65  |bit octave numbe|
0003e490  72 0a 09 20 09 31 31 2d  30 09 31 32 20 62 69 74  |r.. .11-0.12 bit|
0003e4a0  20 6f 63 74 61 76 65 20  66 72 61 63 74 69 6f 6e  | octave fraction|
0003e4b0  20 28 31 2f 34 30 39 36  74 68 73 20 6f 66 20 61  | (1/4096ths of a|
0003e4c0  6e 20 6f 63 74 61 76 65  2e 29 0a 3c 3d 09 52 30  |n octave.).<=.R0|
0003e4d0  20 3d 09 28 65 6e 74 72  79 20 52 30 20 5c 3c 20  | =.(entry R0 \< |
0003e4e0  26 38 30 30 30 29 09 33  32 20 62 69 74 20 70 68  |&8000).32 bit ph|
0003e4f0  61 73 65 20 61 63 63 75  6d 75 6c 61 74 6f 72 20  |ase accumulator |
0003e500  76 61 6c 75 65 0a 09 20  09 28 65 6e 74 72 79 20  |value.. .(entry |
0003e510  52 30 20 3d 3e 20 26 38  30 30 30 29 09 70 72 65  |R0 => &8000).pre|
0003e520  73 65 72 76 65 64 0a 0a  54 68 69 73 20 53 57 49  |served..This SWI|
0003e530  20 6d 61 70 73 20 61 20  31 35 20 62 69 74 20 70  | maps a 15 bit p|
0003e540  69 74 63 68 20 76 61 6c  75 65 20 74 6f 20 61 6e  |itch value to an|
0003e550  20 69 6e 74 65 72 6e 61  6c 20 66 6f 72 6d 61 74  | internal format|
0003e560  2e 00 00 00 44 41 54 41  fb 01 00 00 53 6f 75 6e  |....DATA....Soun|
0003e570  64 5f 51 42 65 61 74 20  20 28 26 34 30 31 43 36  |d_QBeat  (&401C6|
0003e580  29 0a 23 50 61 72 65 6e  74 20 53 6f 75 6e 64 5f  |).#Parent Sound_|
0003e590  0a 3d 3e 09 52 30 20 3d  09 5c 3c 20 2d 31 09 64  |.=>.R0 =.\< -1.d|
0003e5a0  69 73 61 62 6c 65 20 62  65 61 74 20 63 6f 75 6e  |isable beat coun|
0003e5b0  74 65 72 2c 20 73 65 74  20 62 61 72 20 6c 65 6e  |ter, set bar len|
0003e5c0  67 74 68 20 74 6f 20 30  0a 09 20 09 2d 31 09 72  |gth to 0.. .-1.r|
0003e5d0  65 61 64 20 63 75 72 72  65 6e 74 20 62 61 72 20  |ead current bar |
0003e5e0  6c 65 6e 67 74 68 0a 09  20 09 30 09 72 65 61 64  |length.. .0.read|
0003e5f0  20 63 75 72 72 65 6e 74  20 62 65 61 74 20 6e 75  | current beat nu|
0003e600  6d 62 65 72 0a 09 20 09  3e 20 30 09 65 6e 61 62  |mber.. .> 0.enab|
0003e610  6c 65 20 62 65 61 74 20  63 6f 75 6e 74 65 72 2c  |le beat counter,|
0003e620  20 73 65 74 20 62 61 72  20 6c 65 6e 67 74 68 20  | set bar length |
0003e630  74 6f 20 52 30 0a 3c 3d  09 52 30 20 3d 09 28 65  |to R0.<=.R0 =.(e|
0003e640  6e 74 72 79 20 52 30 20  3d 20 30 29 09 63 75 72  |ntry R0 = 0).cur|
0003e650  72 65 6e 74 20 62 65 61  74 20 6e 75 6d 62 65 72  |rent beat number|
0003e660  0a 09 20 09 65 6c 73 65  09 09 70 72 65 76 69 6f  |.. .else..previo|
0003e670  75 73 20 62 61 72 20 6c  65 6e 67 74 68 0a 0a 54  |us bar length..T|
0003e680  68 69 73 20 63 61 6c 6c  20 73 65 74 73 20 61 6e  |his call sets an|
0003e690  64 20 72 65 61 64 73 20  74 68 65 20 62 65 61 74  |d reads the beat|
0003e6a0  20 63 6f 75 6e 74 65 72  20 6f 72 20 62 61 72 20  | counter or bar |
0003e6b0  6c 65 6e 67 74 68 2e 20  57 68 65 6e 20 65 6e 61  |length. When ena|
0003e6c0  62 6c 65 64 20 74 68 65  20 62 65 61 74 20 63 6f  |bled the beat co|
0003e6d0  75 6e 74 65 72 20 63 6f  75 6e 74 73 20 66 72 6f  |unter counts fro|
0003e6e0  6d 20 30 20 74 6f 20 28  62 61 72 20 6c 65 6e 67  |m 0 to (bar leng|
0003e6f0  74 68 20 2d 20 31 29 2e  20 44 69 73 61 62 6c 69  |th - 1). Disabli|
0003e700  6e 67 20 74 68 65 20 62  65 61 74 20 63 6f 75 6e  |ng the beat coun|
0003e710  74 65 72 20 63 61 75 73  65 73 20 3c 53 6f 75 6e  |ter causes <Soun|
0003e720  64 5f 51 53 63 68 65 64  75 6c 65 3e 20 74 6f 20  |d_QSchedule> to |
0003e730  73 63 68 65 64 75 6c 65  20 72 65 6c 61 74 69 76  |schedule relativ|
0003e740  65 20 74 6f 20 74 68 65  20 74 69 6d 65 20 6f 66  |e to the time of|
0003e750  20 74 68 65 20 53 57 49  20 63 61 6c 6c 73 2e 00  | the SWI calls..|
0003e760  44 41 54 41 64 00 00 00  53 6f 75 6e 64 5f 51 44  |DATAd...Sound_QD|
0003e770  69 73 70 61 74 63 68 20  20 28 26 34 30 31 43 34  |ispatch  (&401C4|
0003e780  29 0a 23 50 61 72 65 6e  74 20 53 6f 75 6e 64 5f  |).#Parent Sound_|
0003e790  0a 54 68 69 73 20 53 57  49 20 69 73 20 66 6f 72  |.This SWI is for|
0003e7a0  20 74 68 65 20 65 78 63  6c 75 73 69 76 65 20 75  | the exclusive u|
0003e7b0  73 65 20 6f 66 20 74 68  65 20 73 63 68 65 64 75  |se of the schedu|
0003e7c0  6c 65 72 2e 44 41 54 41  26 02 00 00 53 6f 75 6e  |ler.DATA&...Soun|
0003e7d0  64 5f 51 46 72 65 65 20  20 28 26 34 30 31 43 33  |d_QFree  (&401C3|
0003e7e0  29 0a 23 50 61 72 65 6e  74 20 53 6f 75 6e 64 5f  |).#Parent Sound_|
0003e7f0  0a 3c 3d 09 52 30 20 3d  09 6e 75 6d 62 65 72 20  |.<=.R0 =.number |
0003e800  6f 66 20 73 6c 6f 74 73  20 67 75 61 72 61 6e 74  |of slots guarant|
0003e810  65 65 64 20 66 72 65 65  0a 09 20 09 5c 3c 20 30  |eed free.. .\< 0|
0003e820  20 6d 65 61 6e 73 20 77  6f 72 73 74 20 63 61 73  | means worst cas|
0003e830  65 20 6c 69 6d 69 74 20  65 78 63 65 65 64 65 64  |e limit exceeded|
0003e840  20 2d 20 73 6f 6d 65 20  66 72 65 65 20 73 6c 6f  | - some free slo|
0003e850  74 73 20 6d 61 79 20 72  65 6d 61 69 6e 0a 0a 54  |ts may remain..T|
0003e860  68 69 73 20 53 57 49 20  72 65 74 75 72 6e 73 20  |his SWI returns |
0003e870  74 68 65 20 6e 75 6d 62  65 72 20 6f 66 20 66 72  |the number of fr|
0003e880  65 65 20 73 6c 6f 74 73  20 69 6e 20 74 68 65 20  |ee slots in the |
0003e890  53 63 68 65 64 75 6c 65  72 20 71 75 65 75 65 2e  |Scheduler queue.|
0003e8a0  20 54 68 65 20 76 61 6c  75 65 20 72 65 74 75 72  | The value retur|
0003e8b0  6e 65 64 20 69 73 20 70  65 73 73 69 6d 69 73 74  |ned is pessimist|
0003e8c0  69 63 20 2d 20 69 74 20  61 73 73 75 6d 65 73 20  |ic - it assumes |
0003e8d0  74 68 61 74 20 74 68 65  20 77 6f 72 73 74 20 70  |that the worst p|
0003e8e0  6f 73 73 69 62 6c 65 20  63 6f 6d 62 69 6e 61 74  |ossible combinat|
0003e8f0  69 6f 6e 20 6f 66 20 73  63 68 65 64 75 6c 65 20  |ion of schedule |
0003e900  74 69 6d 65 73 20 77 69  6c 6c 20 62 65 20 72 65  |times will be re|
0003e910  71 75 65 73 74 65 64 20  77 68 65 6e 20 69 74 20  |quested when it |
0003e920  63 61 6c 63 75 6c 61 74  65 73 20 66 72 65 65 20  |calculates free |
0003e930  73 70 61 63 65 2e 20 42  65 63 61 75 73 65 20 6f  |space. Because o|
0003e940  66 20 74 68 69 73 20 69  74 20 6d 61 79 20 70 6f  |f this it may po|
0003e950  73 73 69 62 6c 65 20 74  6f 20 73 75 63 63 65 73  |ssible to succes|
0003e960  73 66 75 6c 6c 79 20 73  63 68 65 64 75 6c 65 20  |sfully schedule |
0003e970  6d 6f 72 65 20 65 76 65  6e 74 73 20 74 68 61 6e  |more events than|
0003e980  20 74 68 65 20 6e 75 6d  62 65 72 20 72 65 74 75  | the number retu|
0003e990  72 6e 65 64 2c 20 61 6e  64 20 69 74 20 6d 61 79  |rned, and it may|
0003e9a0  20 62 65 20 70 6f 73 73  69 62 6c 65 20 73 74 69  | be possible sti|
0003e9b0  6c 6c 20 74 6f 20 73 63  68 65 64 75 6c 65 20 65  |ll to schedule e|
0003e9c0  76 65 6e 74 73 20 77 68  65 6e 20 74 68 65 20 72  |vents when the r|
0003e9d0  65 74 75 72 6e 65 64 20  76 61 6c 75 65 20 69 73  |eturned value is|
0003e9e0  20 6e 65 67 61 74 69 76  65 2e 00 00 44 41 54 41  | negative...DATA|
0003e9f0  f2 00 00 00 53 6f 75 6e  64 5f 51 49 6e 69 74 20  |....Sound_QInit |
0003ea00  20 28 26 34 30 31 43 30  29 0a 23 50 61 72 65 6e  | (&401C0).#Paren|
0003ea10  74 20 53 6f 75 6e 64 5f  0a 3c 3d 09 52 30 20 3d  |t Sound_.<=.R0 =|
0003ea20  09 30 20 28 73 75 63 63  65 73 73 29 0a 0a 54 68  |.0 (success)..Th|
0003ea30  69 73 20 63 61 6c 6c 20  66 6c 75 73 68 65 73 20  |is call flushes |
0003ea40  61 6e 64 20 72 65 2d 69  6e 69 74 69 61 6c 69 73  |and re-initialis|
0003ea50  65 73 20 74 68 65 20 71  75 65 75 65 2e 20 54 68  |es the queue. Th|
0003ea60  65 20 62 65 61 74 20 63  6f 75 6e 74 65 72 20 69  |e beat counter i|
0003ea70  73 20 72 65 73 65 74 20  61 6e 64 20 64 69 73 61  |s reset and disa|
0003ea80  62 6c 65 64 2c 20 74 68  65 20 74 65 6d 70 6f 20  |bled, the tempo |
0003ea90  69 73 20 73 65 74 20 74  6f 20 61 20 64 65 66 61  |is set to a defa|
0003eaa0  75 6c 74 20 76 61 6c 75  65 20 28 73 65 65 20 3c  |ult value (see <|
0003eab0  53 6f 75 6e 64 5f 51 54  65 6d 70 6f 3e 29 2c 20  |Sound_QTempo>), |
0003eac0  74 68 65 20 62 61 72 20  6c 65 6e 67 74 68 20 69  |the bar length i|
0003ead0  73 20 73 65 74 20 74 6f  20 7a 65 72 6f 2e 00 00  |s set to zero...|
0003eae0  44 41 54 41 65 00 00 00  53 6f 75 6e 64 5f 51 49  |DATAe...Sound_QI|
0003eaf0  6e 74 65 72 66 61 63 65  20 20 28 26 34 30 31 43  |nterface  (&401C|
0003eb00  37 29 0a 23 50 61 72 65  6e 74 20 53 6f 75 6e 64  |7).#Parent Sound|
0003eb10  5f 0a 54 68 69 73 20 53  57 49 20 69 73 20 66 6f  |_.This SWI is fo|
0003eb20  72 20 74 68 65 20 65 78  63 6c 75 73 69 76 65 20  |r the exclusive |
0003eb30  75 73 65 20 6f 66 20 74  68 65 20 73 63 68 65 64  |use of the sched|
0003eb40  75 6c 65 72 2e 00 00 00  44 41 54 41 62 00 00 00  |uler....DATAb...|
0003eb50  53 6f 75 6e 64 5f 51 52  65 6d 6f 76 65 20 20 28  |Sound_QRemove  (|
0003eb60  26 34 30 31 43 32 29 0a  23 50 61 72 65 6e 74 20  |&401C2).#Parent |
0003eb70  53 6f 75 6e 64 5f 0a 54  68 69 73 20 53 57 49 20  |Sound_.This SWI |
0003eb80  69 73 20 66 6f 72 20 74  68 65 20 65 78 63 6c 75  |is for the exclu|
0003eb90  73 69 76 65 20 75 73 65  20 6f 66 20 74 68 65 20  |sive use of the |
0003eba0  73 63 68 65 64 75 6c 65  72 2e 00 00 44 41 54 41  |scheduler...DATA|
0003ebb0  09 03 00 00 53 6f 75 6e  64 5f 51 53 63 68 65 64  |....Sound_QSched|
0003ebc0  75 6c 65 20 20 28 26 34  30 31 43 31 29 0a 23 50  |ule  (&401C1).#P|
0003ebd0  61 72 65 6e 74 20 53 6f  75 6e 64 5f 0a 3d 3e 09  |arent Sound_.=>.|
0003ebe0  52 30 20 3d 09 73 63 68  65 64 75 6c 65 20 70 65  |R0 =.schedule pe|
0003ebf0  72 69 6f 64 20 6f 72 0a  09 20 09 20 20 2d 31 09  |riod or.. .  -1.|
0003ec00  09 74 6f 20 73 79 6e 63  68 72 6f 6e 69 73 65 20  |.to synchronise |
0003ec10  77 69 74 68 20 74 68 65  20 70 72 65 76 69 6f 75  |with the previou|
0003ec20  73 6c 79 20 73 63 68 65  64 75 6c 65 64 20 65 76  |sly scheduled ev|
0003ec30  65 6e 74 0a 09 20 09 20  20 2d 32 09 09 69 6d 6d  |ent.. .  -2..imm|
0003ec40  65 64 69 61 74 65 6c 79  20 73 63 68 65 64 75 6c  |ediately schedul|
0003ec50  65 0a 09 52 31 20 3d 09  30 09 09 53 63 68 65 64  |e..R1 =.0..Sched|
0003ec60  75 6c 65 20 3c 53 6f 75  6e 64 5f 43 6f 6e 74 72  |ule <Sound_Contr|
0003ec70  6f 6c 50 61 63 6b 65 64  3e 0a 09 20 09 26 46 30  |olPacked>.. .&F0|
0003ec80  58 58 58 58 58 58 09 53  63 68 65 64 75 6c 65 20  |XXXXXX.Schedule |
0003ec90  53 57 49 20 6e 75 6d 62  65 72 20 26 58 58 58 58  |SWI number &XXXX|
0003eca0  58 58 0a 09 52 32 20 3d  09 52 30 20 66 6f 72 20  |XX..R2 =.R0 for |
0003ecb0  53 57 49 0a 09 52 33 20  3d 09 52 31 20 66 6f 72  |SWI..R3 =.R1 for|
0003ecc0  20 53 57 49 0a 3c 3d 09  52 30 20 3d 09 30 09 73  | SWI.<=.R0 =.0.s|
0003ecd0  75 63 63 65 73 73 0a 09  20 09 5c 3c 20 30 09 66  |uccess.. .\< 0.f|
0003ece0  61 69 6c 75 72 65 0a 0a  54 68 69 73 20 63 61 6c  |ailure..This cal|
0003ecf0  6c 20 73 63 68 65 64 75  6c 65 73 20 61 20 53 57  |l schedules a SW|
0003ed00  49 20 6f 6e 20 74 68 65  20 71 75 65 75 65 2e 20  |I on the queue. |
0003ed10  54 79 70 69 63 61 6c 6c  79 20 74 68 69 73 20 69  |Typically this i|
0003ed20  73 20 3c 53 6f 75 6e 64  5f 43 6f 6e 74 72 6f 6c  |s <Sound_Control|
0003ed30  50 61 63 6b 65 64 3e 2c  20 62 75 74 20 61 6e 79  |Packed>, but any|
0003ed40  20 53 57 49 20 6d 61 79  20 62 65 20 73 63 68 65  | SWI may be sche|
0003ed50  64 75 6c 65 64 20 70 72  6f 76 69 64 65 64 3a 0a  |duled provided:.|
0003ed60  0a 23 74 61 62 0a 8f 09  65 6e 74 72 79 20 69 73  |.#tab...entry is|
0003ed70  20 52 30 2c 20 52 31 20  61 73 20 73 70 65 63 69  | R0, R1 as speci|
0003ed80  66 65 64 2c 20 52 32 2d  52 37 20 3d 20 30 0a 8f  |fed, R2-R7 = 0..|
0003ed90  09 69 66 20 52 30 20 6f  72 20 52 31 20 70 6f 69  |.if R0 or R1 poi|
0003eda0  6e 74 20 74 6f 20 62 75  66 66 65 72 65 64 20 70  |nt to buffered p|
0003edb0  61 72 61 6d 65 74 65 72  73 2c 20 74 68 65 73 65  |arameters, these|
0003edc0  20 6d 75 73 74 20 62 65  20 61 76 61 69 6c 61 62  | must be availab|
0003edd0  6c 65 20 77 68 65 6e 20  74 68 65 20 53 57 49 20  |le when the SWI |
0003ede0  69 73 20 63 61 6c 6c 65  64 0a 0a 54 68 65 20 58  |is called..The X|
0003edf0  20 66 6f 72 6d 20 6f 66  20 74 68 65 20 53 57 49  | form of the SWI|
0003ee00  20 69 73 20 66 6f 72 63  65 64 2c 20 72 65 74 75  | is forced, retu|
0003ee10  72 6e 20 70 61 72 61 6d  65 74 65 72 73 20 61 72  |rn parameters ar|
0003ee20  65 20 64 69 73 63 61 72  64 65 64 2e 0a 0a 57 68  |e discarded...Wh|
0003ee30  65 6e 20 74 68 65 20 62  65 61 74 20 63 6f 75 6e  |en the beat coun|
0003ee40  74 65 72 20 69 73 20 65  6e 61 62 6c 65 64 20 74  |ter is enabled t|
0003ee50  68 65 20 73 63 68 65 64  75 6c 65 20 70 65 72 69  |he schedule peri|
0003ee60  6f 64 20 69 73 20 6d 65  61 73 75 72 65 64 20 66  |od is measured f|
0003ee70  72 6f 6d 20 74 68 65 20  6c 61 73 74 20 62 61 72  |rom the last bar|
0003ee80  20 73 74 61 72 74 3b 20  77 68 65 6e 20 64 69 73  | start; when dis|
0003ee90  61 62 6c 65 64 20 66 72  6f 6d 20 74 68 65 20 74  |abled from the t|
0003eea0  69 6d 65 20 6f 66 20 74  68 69 73 20 53 57 49 20  |ime of this SWI |
0003eeb0  63 61 6c 6c 2e 00 00 00  44 41 54 41 fd 00 00 00  |call....DATA....|
0003eec0  53 6f 75 6e 64 5f 51 54  65 6d 70 6f 20 20 28 26  |Sound_QTempo  (&|
0003eed0  34 30 31 43 35 29 0a 23  50 61 72 65 6e 74 20 53  |401C5).#Parent S|
0003eee0  6f 75 6e 64 5f 0a 3d 3e  09 52 30 20 3d 09 6e 65  |ound_.=>.R0 =.ne|
0003eef0  77 20 74 65 6d 70 6f 20  28 30 20 74 6f 20 72 65  |w tempo (0 to re|
0003ef00  61 64 29 0a 3c 3d 09 52  30 20 3d 09 70 72 65 76  |ad).<=.R0 =.prev|
0003ef10  69 6f 75 73 20 74 65 6d  70 6f 0a 0a 54 68 69 73  |ious tempo..This|
0003ef20  20 63 61 6c 6c 20 73 65  74 73 20 74 68 65 20 53  | call sets the S|
0003ef30  63 68 65 64 75 6c 65 72  20 74 65 6d 70 6f 2e 20  |cheduler tempo. |
0003ef40  54 68 65 20 64 65 66 61  75 6c 74 20 74 65 6d 70  |The default temp|
0003ef50  6f 20 6f 66 20 26 31 30  30 30 20 67 69 76 65 73  |o of &1000 gives|
0003ef60  20 31 20 62 65 61 74 20  70 65 72 20 63 65 6e 74  | 1 beat per cent|
0003ef70  69 73 65 63 6f 6e 64 20  2d 20 74 65 6d 70 6f 20  |isecond - tempo |
0003ef80  69 73 20 6c 69 6e 65 61  72 20 73 6f 20 26 32 30  |is linear so &20|
0003ef90  30 30 20 77 69 6c 6c 20  67 69 76 65 20 32 20 62  |00 will give 2 b|
0003efa0  65 61 74 73 20 70 65 72  20 63 65 6e 74 69 73 65  |eats per centise|
0003efb0  63 6f 6e 64 2e 00 00 00  44 41 54 41 0d 01 00 00  |cond....DATA....|
0003efc0  53 6f 75 6e 64 5f 52 65  61 64 43 6f 6e 74 72 6f  |Sound_ReadContro|
0003efd0  6c 42 6c 6f 63 6b 20 20  28 26 34 30 31 38 42 29  |lBlock  (&4018B)|
0003efe0  0a 23 50 61 72 65 6e 74  20 53 6f 75 6e 64 5f 0a  |.#Parent Sound_.|
0003eff0  3d 3e 09 52 30 20 3d 09  63 68 61 6e 6e 65 6c 20  |=>.R0 =.channel |
0003f000  6e 75 6d 62 65 72 20 28  31 2d 38 29 0a 09 52 31  |number (1-8)..R1|
0003f010  20 3d 09 6f 66 66 73 65  74 20 74 6f 20 72 65 61  | =.offset to rea|
0003f020  64 20 28 30 2d 32 35 35  29 0a 0a 3c 3d 09 52 30  |d (0-255)..<=.R0|
0003f030  20 3d 09 70 72 65 73 65  72 76 65 64 2c 20 6f 72  | =.preserved, or|
0003f040  20 30 20 66 6f 72 20 66  61 69 6c 0a 09 52 31 20  | 0 for fail..R1 |
0003f050  3d 09 70 72 65 73 65 72  76 65 64 0a 09 52 32 20  |=.preserved..R2 |
0003f060  3d 09 77 6f 72 64 20 72  65 61 64 20 66 72 6f 6d  |=.word read from|
0003f070  20 6f 66 66 73 65 74 20  69 6e 20 52 31 2e 0a 0a  | offset in R1...|
0003f080  54 68 69 73 20 53 57 49  20 72 65 61 64 73 20 61  |This SWI reads a|
0003f090  20 77 6f 72 64 20 66 72  6f 6d 20 74 68 65 20 63  | word from the c|
0003f0a0  68 61 6e 6e 65 6c 27 73  20 3c 63 6f 6e 74 72 6f  |hannel's <contro|
0003f0b0  6c 20 62 6c 6f 63 6b 3d  3e 53 6f 75 6e 64 5f 73  |l block=>Sound_s|
0003f0c0  63 63 62 3e 2e 00 00 00  44 41 54 41 2b 02 00 00  |ccb>....DATA+...|
0003f0d0  53 6f 75 6e 64 20 43 68  61 6e 6e 65 6c 20 43 6f  |Sound Channel Co|
0003f0e0  6e 74 72 6f 6c 20 42 6c  6f 63 6b 0a 23 50 61 72  |ntrol Block.#Par|
0003f0f0  65 6e 74 20 53 6f 75 6e  64 5f 0a 46 6f 72 20 65  |ent Sound_.For e|
0003f100  61 63 68 20 63 68 61 6e  6e 65 6c 20 61 20 2a 53  |ach channel a *S|
0003f110  43 43 42 2a 20 28 53 6f  75 6e 64 20 43 68 61 6e  |CCB* (Sound Chan|
0003f120  6e 65 6c 20 43 6f 6e 74  72 6f 6c 20 42 6c 6f 63  |nel Control Bloc|
0003f130  6b 29 20 69 73 20 6d 61  69 6e 74 61 69 6e 65 64  |k) is maintained|
0003f140  20 62 79 20 74 68 65 20  63 68 61 6e 6e 65 6c 20  | by the channel |
0003f150  68 61 6e 64 6c 65 72 2e  20 54 68 65 20 66 69 72  |handler. The fir|
0003f160  73 74 20 39 20 77 6f 72  64 73 20 61 72 65 20 75  |st 9 words are u|
0003f170  73 75 61 6c 6c 79 20 73  74 6f 72 65 64 20 69 6e  |sually stored in|
0003f180  20 52 30 2d 52 38 2e 0a  0a 4f 66 66 73 65 74 09  | R0-R8...Offset.|
0003f190  56 61 6c 75 65 0a 23 4c  69 6e 65 0a 30 09 67 61  |Value.#Line.0.ga|
0003f1a0  74 65 20 62 69 74 2c 20  63 68 61 6e 6e 65 6c 20  |te bit, channel |
0003f1b0  61 6d 70 6c 69 74 75 64  65 20 28 37 20 62 69 74  |amplitude (7 bit|
0003f1c0  20 6c 6f 67 29 0a 31 09  76 6f 69 63 65 20 74 61  | log).1.voice ta|
0003f1d0  62 6c 65 20 69 6e 64 65  78 0a 32 09 61 74 74 61  |ble index.2.atta|
0003f1e0  63 68 65 64 20 76 6f 69  63 65 20 69 6e 73 74 61  |ched voice insta|
0003f1f0  6e 63 65 20 6e 75 6d 62  65 72 0a 33 09 63 6f 6e  |nce number.3.con|
0003f200  74 72 6f 6c 2f 73 74 61  74 75 73 20 66 6c 61 67  |trol/status flag|
0003f210  73 0a 34 09 70 68 61 73  65 20 61 63 63 75 6d 75  |s.4.phase accumu|
0003f220  6c 61 74 6f 72 20 70 69  74 63 68 20 6f 73 63 69  |lator pitch osci|
0003f230  6c 6c 61 74 6f 72 0a 38  09 70 68 61 73 65 20 61  |llator.8.phase a|
0003f240  63 63 75 6d 75 6c 61 74  6f 72 20 74 69 6d 62 72  |ccumulator timbr|
0003f250  65 20 6f 73 63 69 6c 6c  61 74 6f 72 0a 31 32 09  |e oscillator.12.|
0003f260  63 6f 75 6e 74 65 72 20  6f 66 20 72 65 6d 61 69  |counter of remai|
0003f270  6e 69 6e 67 20 62 75 66  66 65 72 20 66 69 6c 6c  |ning buffer fill|
0003f280  73 0a 31 36 09 77 6f 72  6b 69 6e 67 20 52 34 0a  |s.16.working R4.|
0003f290  32 30 09 77 6f 72 6b 69  6e 67 20 52 35 0a 32 34  |20.working R5.24|
0003f2a0  09 77 6f 72 6b 69 6e 67  20 52 36 0a 32 38 09 77  |.working R6.28.w|
0003f2b0  6f 72 6b 69 6e 67 20 52  37 0a 33 32 09 77 6f 72  |orking R7.32.wor|
0003f2c0  6b 69 6e 67 20 52 38 0a  33 36 2d 36 33 09 72 65  |king R8.36-63.re|
0003f2d0  73 65 72 76 65 64 20 28  41 63 6f 72 6e 29 0a 36  |served (Acorn).6|
0003f2e0  34 2d 32 35 35 09 66 6f  72 20 75 73 65 72 20 75  |4-255.for user u|
0003f2f0  73 65 0a 00 44 41 54 41  f5 00 00 00 53 6f 75 6e  |se..DATA....Soun|
0003f300  64 5f 53 70 65 61 6b 65  72 20 28 26 34 30 31 34  |d_Speaker (&4014|
0003f310  33 29 0a 23 50 61 72 65  6e 74 20 53 6f 75 6e 64  |3).#Parent Sound|
0003f320  5f 0a 3d 3e 09 52 30 20  3d 09 6e 65 77 20 73 74  |_.=>.R0 =.new st|
0003f330  61 74 65 3a 0a 09 20 09  20 20 30 20 66 6f 72 20  |ate:.. .  0 for |
0003f340  6e 6f 20 63 68 61 6e 67  65 20 28 72 65 61 64 20  |no change (read |
0003f350  73 74 61 74 65 29 0a 09  20 09 20 20 31 20 66 6f  |state).. .  1 fo|
0003f360  72 20 4f 46 46 0a 09 20  09 20 20 32 20 66 6f 72  |r OFF.. .  2 for|
0003f370  20 4f 4e 0a 0a 3c 3d 09  52 30 20 3d 09 70 72 65  | ON..<=.R0 =.pre|
0003f380  76 69 6f 75 73 20 73 74  61 74 65 3a 0a 09 20 09  |vious state:.. .|
0003f390  20 20 31 20 66 6f 72 20  4f 46 46 0a 09 20 09 20  |  1 for OFF.. . |
0003f3a0  20 32 20 66 6f 72 20 4f  4e 0a 0a 54 68 69 73 20  | 2 for ON..This |
0003f3b0  53 57 49 20 69 73 20 75  73 65 64 20 74 6f 20 65  |SWI is used to e|
0003f3c0  6e 61 62 6c 65 20 6f 72  20 64 69 73 61 62 6c 65  |nable or disable|
0003f3d0  20 74 68 65 20 69 6e 74  65 72 6e 61 6c 20 73 70  | the internal sp|
0003f3e0  65 61 6b 65 72 28 73 29  2e 00 00 00 44 41 54 41  |eaker(s)....DATA|
0003f3f0  b4 00 00 00 53 6f 75 6e  64 5f 54 75 6e 69 6e 67  |....Sound_Tuning|
0003f400  20 20 28 26 34 30 31 38  37 29 0a 23 50 61 72 65  |  (&40187).#Pare|
0003f410  6e 74 20 53 6f 75 6e 64  5f 0a 3d 3e 09 52 30 20  |nt Sound_.=>.R0 |
0003f420  3d 09 6e 65 77 20 74 75  6e 69 6e 67 20 76 61 6c  |=.new tuning val|
0003f430  75 65 20 28 30 20 74 6f  20 72 65 61 64 29 0a 3c  |ue (0 to read).<|
0003f440  3d 09 52 30 20 3d 09 70  72 65 76 69 6f 75 73 20  |=.R0 =.previous |
0003f450  74 75 6e 69 6e 67 20 76  61 6c 75 65 0a 0a 54 68  |tuning value..Th|
0003f460  69 73 20 63 61 6c 6c 20  73 65 74 73 20 74 68 65  |is call sets the|
0003f470  20 73 6f 75 6e 64 20 73  79 73 74 65 6d 20 74 75  | sound system tu|
0003f480  6e 69 6e 67 2c 20 69 6e  20 31 2f 34 30 39 36 74  |ning, in 1/4096t|
0003f490  68 73 20 6f 66 20 61 6e  20 6f 63 74 61 76 65 2e  |hs of an octave.|
0003f4a0  44 41 54 41 22 01 00 00  53 6f 75 6e 64 5f 57 72  |DATA"...Sound_Wr|
0003f4b0  69 74 65 43 6f 6e 74 72  6f 6c 42 6c 6f 63 6b 20  |iteControlBlock |
0003f4c0  20 28 26 34 30 31 38 43  29 0a 23 50 61 72 65 6e  | (&4018C).#Paren|
0003f4d0  74 20 53 6f 75 6e 64 5f  0a 3d 3e 09 52 30 20 3d  |t Sound_.=>.R0 =|
0003f4e0  09 63 68 61 6e 6e 65 6c  20 6e 75 6d 62 65 72 20  |.channel number |
0003f4f0  28 31 2d 38 29 0a 09 52  31 20 3d 09 6f 66 66 73  |(1-8)..R1 =.offs|
0003f500  65 74 20 74 6f 20 77 72  69 74 65 20 28 30 2d 32  |et to write (0-2|
0003f510  35 35 29 0a 09 52 32 20  3d 09 77 6f 72 64 20 74  |55)..R2 =.word t|
0003f520  6f 20 77 72 69 74 65 0a  0a 3c 3d 09 52 30 20 3d  |o write..<=.R0 =|
0003f530  09 70 72 65 73 65 72 76  65 64 2c 20 6f 72 20 30  |.preserved, or 0|
0003f540  20 66 6f 72 20 66 61 69  6c 0a 09 52 31 20 3d 09  | for fail..R1 =.|
0003f550  70 72 65 73 65 72 76 65  64 0a 09 52 32 20 3d 09  |preserved..R2 =.|
0003f560  70 72 65 76 69 6f 75 73  20 77 6f 72 64 20 61 74  |previous word at|
0003f570  20 74 68 69 73 20 6f 66  66 73 65 74 0a 0a 54 68  | this offset..Th|
0003f580  69 73 20 53 57 49 20 77  72 69 74 65 73 20 61 20  |is SWI writes a |
0003f590  77 6f 72 64 20 74 6f 20  74 68 65 20 63 68 61 6e  |word to the chan|
0003f5a0  6e 65 6c 27 73 20 3c 63  6f 6e 74 72 6f 6c 20 62  |nel's <control b|
0003f5b0  6c 6f 63 6b 3d 3e 53 6f  75 6e 64 5f 73 63 63 62  |lock=>Sound_sccb|
0003f5c0  3e 2e 00 00 44 49 52 24  74 00 00 00 74 00 00 00  |>...DIR$t...t...|
0003f5d0  38 f6 03 00 48 fd ff ff  e8 ce 1b 0b 40 00 00 00  |8...H.......@...|
0003f5e0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0003f5f0  78 f6 03 00 48 ff ff ff  1d ec 1b 0b 46 00 00 00  |x...H.......F...|
0003f600  13 00 00 00 00 00 00 00  53 61 6d 70 6c 65 34 35  |........Sample45|
0003f610  00 00 00 00 c0 f6 03 00  48 ff ff ff 3b ea 1b 0b  |........H...;...|
0003f620  46 00 00 00 13 00 00 00  00 00 00 00 53 61 6d 70  |F...........Samp|
0003f630  6c 65 39 30 00 00 00 00  44 41 54 41 40 00 00 00  |le90....DATA@...|
0003f640  53 75 70 65 72 0a 23 50  61 72 65 6e 74 20 21 52  |Super.#Parent !R|
0003f650  6f 6f 74 0a 23 50 72 65  66 69 78 20 53 75 70 65  |oot.#Prefix Supe|
0003f660  72 5f 0a 3c 53 61 6d 70  6c 65 34 35 3e 0a 3c 53  |r_.<Sample45>.<S|
0003f670  61 6d 70 6c 65 39 30 3e  44 41 54 41 46 00 00 00  |ample90>DATAF...|
0003f680  53 75 70 65 72 5f 53 61  6d 70 6c 65 34 35 20 20  |Super_Sample45  |
0003f690  28 26 34 30 44 38 31 29  0a 23 50 61 72 65 6e 74  |(&40D81).#Parent|
0003f6a0  20 53 75 70 65 72 5f 0a  46 6f 72 20 69 6e 74 65  | Super_.For inte|
0003f6b0  72 6e 61 6c 20 75 73 65  20 6f 6e 6c 79 2e 00 00  |rnal use only...|
0003f6c0  44 41 54 41 46 00 00 00  53 75 70 65 72 5f 53 61  |DATAF...Super_Sa|
0003f6d0  6d 70 6c 65 39 30 20 20  28 26 34 30 44 38 30 29  |mple90  (&40D80)|
0003f6e0  0a 23 50 61 72 65 6e 74  20 53 75 70 65 72 5f 0a  |.#Parent Super_.|
0003f6f0  46 6f 72 20 69 6e 74 65  72 6e 61 6c 20 75 73 65  |For internal use|
0003f700  20 6f 6e 6c 79 2e 00 00  44 49 52 24 74 00 00 00  | only...DIR$t...|
0003f710  74 00 00 00 7c f7 03 00  48 fd ff ff ae 2c 02 19  |t...|...H....,..|
0003f720  00 07 00 00 13 00 00 00  00 00 00 00 65 72 72 6f  |............erro|
0003f730  72 62 6c 6f 63 6b 00 00  7c fe 03 00 46 fd ff ff  |rblock..|...F...|
0003f740  77 81 14 b0 59 02 00 00  13 00 00 00 00 00 00 00  |w...Y...........|
0003f750  64 61 74 65 66 6f 72 6d  61 74 00 00 d8 00 04 00  |dateformat......|
0003f760  48 fd ff ff 8f 6a 20 25  8e 00 00 00 33 00 00 00  |H....j %....3...|
0003f770  00 00 00 00 62 62 6f 78  00 00 00 00 44 41 54 41  |....bbox....DATA|
0003f780  00 07 00 00 53 57 49 20  45 72 72 6f 72 20 62 6c  |....SWI Error bl|
0003f790  6f 63 6b 3a 0a 30 09 45  72 72 6f 72 20 6e 75 6d  |ock:.0.Error num|
0003f7a0  62 65 72 0a 34 2e 2e 09  45 72 72 6f 72 20 73 74  |ber.4...Error st|
0003f7b0  72 69 6e 67 2e 20 5a 65  72 6f 20 74 65 72 6d 69  |ring. Zero termi|
0003f7c0  6e 61 74 65 64 2e 0a 0a  42 69 74 73 20 69 6e 20  |nated...Bits in |
0003f7d0  45 72 72 6f 72 20 6e 75  6d 62 65 72 0a 23 4c 69  |Error number.#Li|
0003f7e0  6e 65 3b 20 74 61 62 0a  30 2d 37 09 42 61 73 69  |ne; tab.0-7.Basi|
0003f7f0  63 20 65 72 72 6f 72 20  6e 75 6d 62 65 72 0a 38  |c error number.8|
0003f800  2d 32 33 09 27 4f 77 6e  65 72 27 2f 3c 47 65 6e  |-23.'Owner'/<Gen|
0003f810  65 72 61 74 6f 72 20 6f  66 20 65 72 72 6f 72 3d  |erator of error=|
0003f820  3e 2e 67 65 6e 65 72 61  74 6f 72 73 3e 0a 32 34  |>.generators>.24|
0003f830  2d 32 39 09 52 65 73 65  72 76 65 64 2e 20 4d 75  |-29.Reserved. Mu|
0003f840  73 74 20 62 65 20 30 0a  33 30 09 44 65 66 69 6e  |st be 0.30.Defin|
0003f850  65 64 20 74 6f 20 62 65  20 30 0a 33 31 09 45 72  |ed to be 0.31.Er|
0003f860  72 6f 72 20 69 73 20 73  65 72 69 6f 75 73 20 28  |ror is serious (|
0003f870  68 61 72 64 77 61 72 65  29 2e 20 4f 77 6e 65 72  |hardware). Owner|
0003f880  20 69 73 20 74 68 65 6e  0a 09 20 20 30 20 4d 61  | is then..  0 Ma|
0003f890  63 68 69 6e 65 0a 09 20  20 31 20 43 6f 2d 50 72  |chine..  1 Co-Pr|
0003f8a0  6f 63 65 73 73 6f 72 0a  09 20 20 32 20 46 6c 6f  |ocessor..  2 Flo|
0003f8b0  61 74 69 6e 67 20 70 6f  69 6e 74 0a 09 20 20 33  |ating point..  3|
0003f8c0  20 45 63 6f 6e 65 74 0a  0a 4e 6f 74 65 3a 09 45  | Econet..Note:.E|
0003f8d0  76 65 6e 20 2a 58 2a 20  53 57 49 73 20 61 72 65  |ven *X* SWIs are|
0003f8e0  20 61 6c 6c 6f 77 65 64  20 74 6f 20 2a 67 65 6e  | allowed to *gen|
0003f8f0  65 72 61 74 65 2a 20 28  72 61 74 68 65 72 20 74  |erate* (rather t|
0003f900  68 61 6e 20 72 65 74 75  72 6e 29 20 73 65 72 69  |han return) seri|
0003f910  6f 75 73 20 65 72 72 6f  72 73 2e 0a 23 53 75 62  |ous errors..#Sub|
0003f920  70 61 67 65 20 67 65 6e  65 72 61 74 6f 72 73 0a  |page generators.|
0003f930  45 72 72 6f 72 20 67 65  6e 65 72 61 74 6f 72 73  |Error generators|
0003f940  0a 26 30 30 30 20 2d 20  26 30 46 46 09 4f 70 65  |.&000 - &0FF.Ope|
0003f950  72 61 74 69 6e 67 20 73  79 73 74 65 6d 20 2d 20  |rating system - |
0003f960  42 42 43 20 63 6f 6d 70  61 74 69 62 6c 65 20 65  |BBC compatible e|
0003f970  72 72 6f 72 0a 26 31 30  30 20 2d 20 26 31 31 46  |rror.&100 - &11F|
0003f980  09 3c 4f 53 5f 4d 6f 64  75 6c 65 3e 20 65 72 72  |.<OS_Module> err|
0003f990  6f 72 73 0a 26 31 32 30  20 2d 20 26 31 33 46 09  |ors.&120 - &13F.|
0003f9a0  3c 4f 53 5f 52 65 61 64  56 61 72 56 61 6c 3e 2f  |<OS_ReadVarVal>/|
0003f9b0  3c 4f 53 5f 53 65 74 56  61 72 56 61 6c 3e 20 65  |<OS_SetVarVal> e|
0003f9c0  72 72 6f 72 73 0a 26 31  34 30 20 2d 20 26 31 35  |rrors.&140 - &15|
0003f9d0  46 09 52 65 64 69 72 65  63 74 69 6f 6e 20 6d 61  |F.Redirection ma|
0003f9e0  6e 61 67 65 72 20 65 72  72 6f 72 73 0a 26 31 36  |nager errors.&16|
0003f9f0  30 20 2d 20 26 31 37 46  09 3c 4f 53 5f 45 76 61  |0 - &17F.<OS_Eva|
0003fa00  6c 75 61 74 65 45 78 70  72 65 73 73 69 6f 6e 3e  |luateExpression>|
0003fa10  20 65 72 72 6f 72 73 0a  26 31 38 30 20 2d 20 26  | errors.&180 - &|
0003fa20  31 39 46 09 3c 4f 53 5f  48 65 61 70 3e 20 65 72  |19F.<OS_Heap> er|
0003fa30  72 6f 72 73 0a 26 31 41  30 20 2d 20 26 31 41 46  |rors.&1A0 - &1AF|
0003fa40  09 3c 4f 53 5f 43 6c 61  69 6d 3e 2f 3c 4f 53 5f  |.<OS_Claim>/<OS_|
0003fa50  52 65 6c 65 61 73 65 3e  20 65 72 72 6f 72 73 0a  |Release> errors.|
0003fa60  26 31 42 30 20 2d 20 26  31 42 46 09 3c 4f 53 5f  |&1B0 - &1BF.<OS_|
0003fa70  43 68 61 6e 67 65 45 6e  76 69 72 6f 6e 6d 65 6e  |ChangeEnvironmen|
0003fa80  74 3e 20 65 72 72 6f 72  73 0a 26 31 43 30 20 2d  |t> errors.&1C0 -|
0003fa90  20 26 31 44 46 09 3c 4f  53 5f 43 68 61 6e 67 65  | &1DF.<OS_Change|
0003faa0  44 79 6e 61 6d 69 63 41  72 65 61 3e 20 65 72 72  |DynamicArea> err|
0003fab0  6f 72 73 0a 26 31 45 30  20 2d 20 26 31 45 46 09  |ors.&1E0 - &1EF.|
0003fac0  3c 4f 53 5f 43 4c 49 3e  2f 6d 69 73 63 65 6c 6c  |<OS_CLI>/miscell|
0003fad0  61 6e 65 6f 75 73 20 65  72 72 6f 72 73 0a 26 32  |aneous errors.&2|
0003fae0  30 30 20 2d 20 26 32 37  46 09 3c 46 6f 6e 74 20  |00 - &27F.<Font |
0003faf0  6d 61 6e 61 67 65 72 3d  3e 46 6f 6e 74 5f 3e 20  |manager=>Font_> |
0003fb00  65 72 72 6f 72 73 0a 26  32 38 30 20 2d 20 26 32  |errors.&280 - &2|
0003fb10  42 46 09 3c 57 69 6d 70  3d 3e 57 69 6d 70 3a 57  |BF.<Wimp=>Wimp:W|
0003fb20  69 6d 70 5f 3e 20 65 72  72 6f 72 73 0a 26 32 43  |imp_> errors.&2C|
0003fb30  30 20 2d 20 26 32 46 46  09 44 61 74 65 2f 74 69  |0 - &2FF.Date/ti|
0003fb40  6d 65 20 63 6f 6e 76 65  72 73 69 6f 6e 20 65 72  |me conversion er|
0003fb50  72 6f 72 0a 26 33 30 30  20 2d 20 26 33 46 46 09  |ror.&300 - &3FF.|
0003fb60  3c 45 63 6f 6e 65 74 3d  3e 45 63 6f 6e 65 74 5f  |<Econet=>Econet_|
0003fb70  3e 20 65 72 72 6f 72 73  0a 26 34 30 30 20 2d 20  |> errors.&400 - |
0003fb80  26 34 46 46 09 46 69 6c  65 53 77 69 74 63 68 20  |&4FF.FileSwitch |
0003fb90  65 72 72 6f 72 73 0a 26  35 30 30 20 2d 20 26 35  |errors.&500 - &5|
0003fba0  42 46 09 3c 50 6f 64 75  6c 65 3d 3e 50 6f 64 75  |BF.<Podule=>Podu|
0003fbb0  6c 65 5f 3e 20 65 72 72  6f 72 73 0a 26 35 43 30  |le_> errors.&5C0|
0003fbc0  20 2d 20 26 35 46 46 09  3c 50 72 69 6e 74 65 72  | - &5FF.<Printer|
0003fbd0  20 64 72 69 76 65 72 3d  3e 50 44 72 69 76 65 72  | driver=>PDriver|
0003fbe0  5f 3e 20 65 72 72 6f 72  73 0a 26 36 30 30 20 2d  |_> errors.&600 -|
0003fbf0  20 26 36 33 46 09 47 65  6e 65 72 61 6c 20 4f 53  | &63F.General OS|
0003fc00  20 65 72 72 6f 72 73 0a  26 36 34 30 20 2d 20 26  | errors.&640 - &|
0003fc10  36 46 46 09 49 6e 74 65  72 6e 61 74 69 6f 6e 61  |6FF.Internationa|
0003fc20  6c 20 6d 6f 64 75 6c 65  20 65 72 72 6f 72 73 0a  |l module errors.|
0003fc30  26 37 30 30 20 2d 20 26  37 46 46 09 3c 53 70 72  |&700 - &7FF.<Spr|
0003fc40  69 74 65 3d 3e 4f 53 5f  53 70 72 69 74 65 4f 70  |ite=>OS_SpriteOp|
0003fc50  3e 20 65 72 72 6f 72 73  0a 26 38 30 30 20 2d 20  |> errors.&800 - |
0003fc60  26 38 37 46 09 3c 44 65  62 75 67 67 65 72 3d 3e  |&87F.<Debugger=>|
0003fc70  44 65 62 75 67 67 65 72  5f 3e 20 65 72 72 6f 72  |Debugger_> error|
0003fc80  73 0a 26 38 38 30 20 2d  20 26 38 46 46 09 42 42  |s.&880 - &8FF.BB|
0003fc90  43 20 49 2f 4f 20 50 6f  64 75 6c 65 20 65 72 72  |C I/O Podule err|
0003fca0  6f 72 73 0a 26 39 30 30  20 2d 20 26 39 37 46 09  |ors.&900 - &97F.|
0003fcb0  53 68 65 6c 6c 20 43 4c  49 20 65 72 72 6f 72 73  |Shell CLI errors|
0003fcc0  2c 20 61 6e 64 20 6d 69  73 63 65 6c 6c 61 6e 65  |, and miscellane|
0003fcd0  6f 75 73 20 6f 74 68 65  72 73 0a 26 39 38 30 20  |ous others.&980 |
0003fce0  2d 20 26 39 46 46 09 3c  44 72 61 77 3d 3e 44 72  |- &9FF.<Draw=>Dr|
0003fcf0  61 77 5f 3e 20 65 72 72  6f 72 73 0a 26 41 30 30  |aw_> errors.&A00|
0003fd00  20 2d 20 26 41 33 46 09  3c 43 6f 6c 6f 75 72 54  | - &A3F.<ColourT|
0003fd10  72 61 6e 73 3d 3e 43 6f  6c 6f 75 72 54 72 61 6e  |rans=>ColourTran|
0003fd20  73 5f 3e 20 65 72 72 6f  72 73 0a 26 41 34 30 20  |s_> errors.&A40 |
0003fd30  2d 20 26 41 37 46 09 3c  41 52 4d 33 3d 3e 43 61  |- &A7F.<ARM3=>Ca|
0003fd40  63 68 65 5f 3e 20 65 72  72 6f 72 73 0a 26 41 38  |che_> errors.&A8|
0003fd50  30 20 2d 20 26 41 42 46  09 3c 54 61 73 6b 57 69  |0 - &ABF.<TaskWi|
0003fd60  6e 64 6f 77 3d 3e 57 69  6d 70 3a 54 61 73 6b 57  |ndow=>Wimp:TaskW|
0003fd70  69 6e 64 6f 77 5f 3e 20  65 72 72 6f 72 73 0a 26  |indow_> errors.&|
0003fd80  41 43 30 20 2d 20 26 41  46 46 09 3c 4d 65 73 73  |AC0 - &AFF.<Mess|
0003fd90  61 67 65 54 72 61 6e 73  3d 3e 4d 65 73 73 61 67  |ageTrans=>Messag|
0003fda0  65 54 72 61 6e 73 5f 3e  20 65 72 72 6f 72 73 0a  |eTrans_> errors.|
0003fdb0  26 42 30 30 20 2d 20 26  42 33 46 09 50 69 6e 62  |&B00 - &B3F.Pinb|
0003fdc0  6f 61 72 64 20 65 72 72  6f 72 73 0a 26 42 34 30  |oard errors.&B40|
0003fdd0  20 2d 20 26 42 34 46 09  50 6f 72 74 61 62 6c 65  | - &B4F.Portable|
0003fde0  20 6d 6f 64 75 6c 65 20  65 72 72 6f 72 73 0a 26  | module errors.&|
0003fdf0  31 58 58 30 30 20 2d 20  26 31 58 58 46 46 09 45  |1XX00 - &1XXFF.E|
0003fe00  72 72 6f 72 73 20 66 72  6f 6d 20 3c 66 69 6c 69  |rrors from <fili|
0003fe10  6e 67 20 73 79 73 74 65  6d 20 6e 75 6d 62 65 72  |ng system number|
0003fe20  20 26 58 58 3d 3e 66 73  79 73 5f 69 64 65 6e 74  | &XX=>fsys_ident|
0003fe30  3e 0a 26 32 30 30 30 30  20 2d 20 26 32 30 30 46  |>.&20000 - &200F|
0003fe40  46 09 3c 53 6f 75 6e 64  3d 3e 53 6f 75 6e 64 5f  |F.<Sound=>Sound_|
0003fe50  3e 20 65 72 72 6f 72 73  0a 26 32 30 32 30 30 20  |> errors.&20200 |
0003fe60  2d 20 26 32 30 30 46 46  09 4d 6f 72 65 20 70 6f  |- &200FF.More po|
0003fe70  64 75 6c 65 20 65 72 72  6f 72 73 0a 44 41 54 41  |dule errors.DATA|
0003fe80  59 02 00 00 44 61 74 65  20 66 6f 72 6d 61 74 20  |Y...Date format |
0003fe90  73 74 72 69 6e 67 20 74  6f 6b 65 6e 73 0a 54 6f  |string tokens.To|
0003fea0  6b 65 6e 09 4d 65 61 6e  69 6e 67 0a 23 4c 69 6e  |ken.Meaning.#Lin|
0003feb0  65 0a 25 44 59 09 20 44  61 74 65 20 28 30 38 29  |e.%DY. Date (08)|
0003fec0  0a 25 53 54 09 20 73 74  2c 20 74 68 20 6f 72 20  |.%ST. st, th or |
0003fed0  6e 64 20 62 79 20 64 61  74 65 0a 25 4d 4e 09 20  |nd by date.%MN. |
0003fee0  4d 6f 6e 74 68 20 61 73  20 6e 75 6d 62 65 72 20  |Month as number |
0003fef0  28 30 34 29 0a 25 4d 4f  09 20 4d 6f 6e 74 68 20  |(04).%MO. Month |
0003ff00  61 73 20 6c 6f 6e 67 20  65 6e 74 72 79 20 28 41  |as long entry (A|
0003ff10  70 72 69 6c 29 0a 25 4d  33 09 20 4d 6f 6e 74 68  |pril).%M3. Month|
0003ff20  20 61 73 20 33 20 6c 65  74 74 65 72 73 20 28 41  | as 3 letters (A|
0003ff30  70 72 29 0a 25 57 4b 09  20 57 65 65 6b 20 6f 66  |pr).%WK. Week of|
0003ff40  20 79 65 61 72 0a 25 44  4e 09 20 44 61 79 20 77  | year.%DN. Day w|
0003ff50  69 74 68 20 69 6e 20 79  65 61 72 20 28 30 39 38  |ith in year (098|
0003ff60  29 0a 25 57 4e 09 20 57  65 65 6b 20 64 61 79 20  |).%WN. Week day |
0003ff70  61 73 20 6e 75 6d 62 65  72 20 28 37 20 3d 20 53  |as number (7 = S|
0003ff80  61 74 75 72 64 61 79 29  0a 25 57 33 09 20 57 65  |aturday).%W3. We|
0003ff90  65 6b 20 64 61 79 20 61  73 20 33 20 6c 65 74 74  |ek day as 3 lett|
0003ffa0  65 72 73 20 28 53 61 74  29 0a 25 57 45 09 20 57  |ers (Sat).%WE. W|
0003ffb0  65 65 6b 20 64 61 79 20  61 73 20 6c 6f 6e 67 20  |eek day as long |
0003ffc0  28 53 61 74 75 72 64 61  79 29 0a 25 43 45 09 20  |(Saturday).%CE. |
0003ffd0  43 65 6e 74 75 72 79 20  61 73 20 32 20 64 69 67  |Century as 2 dig|
0003ffe0  69 74 73 20 28 31 39 29  0a 25 59 52 09 20 59 65  |its (19).%YR. Ye|
0003fff0  61 72 20 61 73 20 32 20  64 69 67 69 74 73 20 28  |ar as 2 digits (|
00040000  39 35 29 0a 25 32 34 09  20 48 6f 75 72 20 61 73  |95).%24. Hour as|
00040010  20 32 34 20 68 6f 75 72  20 28 31 35 29 0a 25 31  | 24 hour (15).%1|
00040020  32 09 20 48 6f 75 72 20  61 73 20 31 32 20 68 6f  |2. Hour as 12 ho|
00040030  75 72 20 28 30 33 29 0a  25 41 4d 09 20 61 6d 20  |ur (03).%AM. am |
00040040  6f 72 20 70 6d 0a 25 50  4d 09 20 61 6d 20 6f 72  |or pm.%PM. am or|
00040050  20 70 6d 0a 25 4d 49 09  20 4d 69 6e 75 74 65 20  | pm.%MI. Minute |
00040060  61 73 20 32 20 64 69 67  69 74 73 20 28 32 35 29  |as 2 digits (25)|
00040070  0a 25 53 45 09 20 53 65  63 6f 6e 64 20 61 73 20  |.%SE. Second as |
00040080  32 20 64 69 67 69 74 73  20 28 35 30 29 0a 25 43  |2 digits (50).%C|
00040090  53 09 20 43 65 6e 74 69  73 65 63 6f 6e 64 20 61  |S. Centisecond a|
000400a0  73 20 32 20 64 69 67 69  74 73 20 28 38 37 29 0a  |s 2 digits (87).|
000400b0  25 54 5a 09 20 54 69 6d  65 20 7a 6f 6e 65 20 28  |%TZ. Time zone (|
000400c0  42 53 54 2f 44 53 54 2f  2b 30 31 3a 30 30 2c 20  |BST/DST/+01:00, |
000400d0  65 74 63 29 0a 00 00 00  44 41 54 41 8e 00 00 00  |etc)....DATA....|
000400e0  42 6f 75 6e 64 69 6e 67  20 62 6f 78 20 62 6c 6f  |Bounding box blo|
000400f0  63 6b 0a 23 50 61 72 65  6e 74 20 21 52 6f 6f 74  |ck.#Parent !Root|
00040100  0a 4f 66 66 73 65 74 09  43 6f 6e 74 65 6e 74 73  |.Offset.Contents|
00040110  0a 23 4c 69 6e 65 0a 30  09 4c 65 66 74 20 63 6f  |.#Line.0.Left co|
00040120  2d 6f 72 64 69 6e 61 74  65 0a 34 09 42 6f 74 74  |-ordinate.4.Bott|
00040130  6f 6d 20 63 6f 2d 6f 72  64 69 6e 61 74 65 0a 38  |om co-ordinate.8|
00040140  09 52 69 67 68 74 20 63  6f 2d 6f 72 64 69 6e 61  |.Right co-ordina|
00040150  74 65 0a 31 32 09 54 6f  70 20 63 6f 2d 6f 72 64  |te.12.Top co-ord|
00040160  69 6e 61 74 65 0a 00 00  44 49 52 24 98 00 00 00  |inate...DIR$....|
00040170  98 00 00 00 00 02 04 00  48 fd ff ff f1 48 bb 10  |........H....H..|
00040180  67 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |g...........!Roo|
00040190  74 00 00 00 68 02 04 00  48 ff ff ff 45 40 e7 27  |t...h...H...E@.'|
000401a0  8b 05 00 00 33 00 00 00  00 00 00 00 43 6f 6d 70  |....3.......Comp|
000401b0  72 65 73 73 00 00 00 00  f4 07 04 00 48 ff ff ff  |ress........H...|
000401c0  28 91 ab 20 97 06 00 00  33 00 00 00 00 00 00 00  |(.. ....3.......|
000401d0  44 65 63 6f 6d 70 72 65  73 73 00 00 8c 0e 04 00  |Decompress......|
000401e0  48 fd ff ff 4f 37 60 26  7a 02 00 00 13 00 00 00  |H...O7`&z.......|
000401f0  00 00 00 00 66 69 6c 65  66 6f 72 6d 61 74 00 00  |....fileformat..|
00040200  44 41 54 41 67 00 00 00  53 71 75 61 73 68 0a 23  |DATAg...Squash.#|
00040210  50 61 72 65 6e 74 20 21  52 6f 6f 74 0a 23 50 72  |Parent !Root.#Pr|
00040220  65 66 69 78 20 53 71 75  61 73 68 5f 0a 3c 43 6f  |efix Squash_.<Co|
00040230  6d 70 72 65 73 73 3e 0a  3c 44 65 63 6f 6d 70 72  |mpress>.<Decompr|
00040240  65 73 73 3e 0a 0a 3c 46  69 6c 65 20 66 6f 72 6d  |ess>..<File form|
00040250  61 74 3d 3e 53 71 75 61  73 68 5f 66 69 6c 65 66  |at=>Squash_filef|
00040260  6f 72 6d 61 74 3e 0a 00  44 41 54 41 8b 05 00 00  |ormat>..DATA....|
00040270  53 71 75 61 73 68 5f 43  6f 6d 70 72 65 73 73 20  |Squash_Compress |
00040280  20 28 26 34 32 37 30 30  29 0a 23 50 61 72 65 6e  | (&42700).#Paren|
00040290  74 20 53 71 75 61 73 68  5f 0a 49 66 20 52 30 20  |t Squash_.If R0 |
000402a0  62 69 74 20 33 20 69 73  20 73 65 74 3a 0a 3d 3e  |bit 3 is set:.=>|
000402b0  09 52 30 20 3d 09 3c 66  6c 61 67 73 3d 3e 2e 66  |.R0 =.<flags=>.f|
000402c0  6c 61 67 73 3e 0a 09 52  31 20 3d 09 69 6e 70 75  |lags>..R1 =.inpu|
000402d0  74 20 73 69 7a 65 2c 20  6f 72 20 2d 31 20 6d 65  |t size, or -1 me|
000402e0  61 6e 73 20 64 6f 6e 27  74 20 72 65 74 75 72 6e  |ans don't return|
000402f0  20 6d 61 78 20 6f 75 74  70 75 74 20 73 69 7a 65  | max output size|
00040300  0a 3c 3d 09 52 30 20 3d  09 72 65 71 75 69 72 65  |.<=.R0 =.require|
00040310  64 20 77 6f 72 6b 20 73  70 61 63 65 20 73 69 7a  |d work space siz|
00040320  65 0a 09 52 31 20 3d 09  6d 61 78 69 6d 75 6d 20  |e..R1 =.maximum |
00040330  6f 75 74 70 75 74 20 73  69 7a 65 2c 20 6f 72 20  |output size, or |
00040340  2d 31 20 69 66 20 77 65  20 64 6f 6e 27 74 20 6b  |-1 if we don't k|
00040350  6e 6f 77 20 6f 72 20 77  65 72 65 20 6e 6f 74 20  |now or were not |
00040360  61 73 6b 65 64 0a 0a 49  66 20 52 30 20 62 69 74  |asked..If R0 bit|
00040370  20 33 20 69 73 20 63 6c  65 61 72 3a 0a 3d 3e 09  | 3 is clear:.=>.|
00040380  52 30 20 3d 09 3c 66 6c  61 67 73 3d 3e 2e 66 6c  |R0 =.<flags=>.fl|
00040390  61 67 73 3e 0a 09 52 31  20 3d 09 77 6f 72 6b 73  |ags>..R1 =.works|
000403a0  70 61 63 65 20 70 6f 69  6e 74 65 72 0a 09 52 32  |pace pointer..R2|
000403b0  20 3d 09 69 6e 70 75 74  20 70 6f 69 6e 74 65 72  | =.input pointer|
000403c0  0a 09 52 33 20 3d 09 62  79 74 65 73 20 6f 66 20  |..R3 =.bytes of |
000403d0  69 6e 70 75 74 20 61 76  61 69 6c 61 62 6c 65 0a  |input available.|
000403e0  09 52 34 20 3d 09 6f 75  74 70 75 74 20 70 6f 69  |.R4 =.output poi|
000403f0  6e 74 65 72 0a 09 52 35  20 3d 09 62 79 74 65 73  |nter..R5 =.bytes|
00040400  20 6f 66 20 6f 75 74 70  75 74 20 73 70 61 63 65  | of output space|
00040410  20 61 76 61 69 6c 61 62  6c 65 0a 3c 3d 09 52 30  | available.<=.R0|
00040420  20 3d 09 3c 73 74 61 74  75 73 3d 3e 2e 73 74 61  | =.<status=>.sta|
00040430  74 75 73 3e 0a 09 52 31  20 70 72 65 73 65 72 76  |tus>..R1 preserv|
00040440  65 64 0a 09 52 32 20 3d  09 70 6f 69 6e 74 65 72  |ed..R2 =.pointer|
00040450  20 74 6f 20 66 69 72 73  74 20 75 6e 75 73 65 64  | to first unused|
00040460  20 69 6e 70 75 74 20 62  79 74 65 0a 09 52 33 20  | input byte..R3 |
00040470  3d 09 69 6e 70 75 74 20  62 79 74 65 73 20 75 6e  |=.input bytes un|
00040480  75 73 65 64 0a 09 52 34  20 3d 09 70 6f 69 6e 74  |used..R4 =.point|
00040490  65 72 20 74 6f 20 66 69  72 73 74 20 75 6e 75 73  |er to first unus|
000404a0  65 64 20 6f 75 74 70 75  74 20 62 79 74 65 0a 09  |ed output byte..|
000404b0  52 35 20 3d 09 75 6e 75  73 65 64 20 6f 75 74 70  |R5 =.unused outp|
000404c0  75 74 20 73 70 61 63 65  20 72 65 6d 61 69 6e 69  |ut space remaini|
000404d0  6e 67 0a 0a 43 61 6c 6c  20 74 68 69 73 20 53 57  |ng..Call this SW|
000404e0  49 20 69 6e 69 74 69 61  6c 6c 79 20 77 69 74 68  |I initially with|
000404f0  20 52 30 20 3d 20 38 20  61 6e 64 20 52 31 20 3d  | R0 = 8 and R1 =|
00040500  20 69 6e 70 75 74 20 66  69 6c 65 20 73 69 7a 65  | input file size|
00040510  2c 20 75 73 69 6e 67 20  74 68 65 20 73 69 7a 65  |, using the size|
00040520  73 20 69 74 20 72 65 70  6f 72 74 73 20 74 6f 20  |s it reports to |
00040530  61 6c 6c 6f 63 61 74 65  20 77 6f 72 6b 73 70 61  |allocate workspa|
00040540  63 65 20 61 6e 64 20 6f  75 74 70 75 74 20 62 75  |ce and output bu|
00040550  66 66 65 72 73 20 61 73  20 61 70 70 72 6f 70 72  |ffers as appropr|
00040560  69 61 74 65 2e 20 54 68  65 6e 20 63 61 6c 6c 20  |iate. Then call |
00040570  72 65 70 65 61 74 65 64  6c 79 20 77 69 74 68 20  |repeatedly with |
00040580  52 30 20 62 69 74 20 33  20 63 6c 65 61 72 20 75  |R0 bit 3 clear u|
00040590  6e 74 69 6c 20 61 6c 6c  20 74 68 65 20 64 61 74  |ntil all the dat|
000405a0  61 20 69 73 20 70 72 6f  63 65 73 73 65 64 20 28  |a is processed (|
000405b0  61 73 20 72 65 70 6f 72  74 65 64 20 76 69 61 20  |as reported via |
000405c0  74 68 65 20 3c 73 74 61  74 75 73 20 62 69 74 73  |the <status bits|
000405d0  3d 3e 2e 73 74 61 74 75  73 3e 20 72 65 74 75 72  |=>.status> retur|
000405e0  6e 65 64 20 69 6e 20 52  30 29 2e 20 49 66 20 61  |ned in R0). If a|
000405f0  6c 6c 20 74 68 65 20 69  6e 70 75 74 20 64 61 74  |ll the input dat|
00040600  61 20 63 61 6e 20 62 65  20 70 72 65 73 65 6e 74  |a can be present|
00040610  65 64 20 61 74 20 6f 6e  63 65 20 28 52 30 20 62  |ed at once (R0 b|
00040620  69 74 73 20 30 2c 31 20  63 6c 65 61 72 29 20 61  |its 0,1 clear) a|
00040630  6e 64 20 74 68 65 20 6f  75 74 70 75 74 20 62 75  |nd the output bu|
00040640  66 66 65 72 20 69 73 20  6c 61 72 67 65 20 65 6e  |ffer is large en|
00040650  6f 75 67 68 2c 20 61 20  66 61 73 74 65 72 20 61  |ough, a faster a|
00040660  6c 67 6f 72 69 74 68 6d  20 69 73 20 75 73 65 64  |lgorithm is used|
00040670  2e 0a 23 73 75 62 70 61  67 65 20 46 6c 61 67 73  |..#subpage Flags|
00040680  0a 53 71 75 61 73 68 5f  43 6f 6d 70 72 65 73 73  |.Squash_Compress|
00040690  20 66 6c 61 67 73 0a 42  69 74 09 4d 65 61 6e 69  | flags.Bit.Meani|
000406a0  6e 67 20 69 66 20 73 65  74 0a 23 4c 69 6e 65 0a  |ng if set.#Line.|
000406b0  30 09 43 6f 6e 74 69 6e  75 69 6e 67 20 65 78 69  |0.Continuing exi|
000406c0  73 74 69 6e 67 20 6f 70  65 72 61 74 69 6f 6e 0a  |sting operation.|
000406d0  31 09 4d 6f 72 65 20 69  6e 70 75 74 20 72 65 6d  |1.More input rem|
000406e0  61 69 6e 73 20 61 66 74  65 72 20 74 68 69 73 0a  |ains after this.|
000406f0  32 09 30 20 28 72 65 73  65 72 76 65 64 29 0a 33  |2.0 (reserved).3|
00040700  09 72 65 74 75 72 6e 20  77 6f 72 6b 73 70 61 63  |.return workspac|
00040710  65 20 6e 65 65 64 65 64  20 61 6e 64 20 6d 61 78  |e needed and max|
00040720  20 6f 75 74 70 75 74 20  73 69 7a 65 20 28 61 6c  | output size (al|
00040730  6c 20 6f 74 68 65 72 20  62 69 74 73 20 6d 75 73  |l other bits mus|
00040740  74 20 62 65 20 30 29 0a  34 2d 33 31 09 30 20 28  |t be 0).4-31.0 (|
00040750  72 65 73 65 72 76 65 64  29 0a 23 73 75 62 70 61  |reserved).#subpa|
00040760  67 65 20 53 74 61 74 75  73 0a 53 71 75 61 73 68  |ge Status.Squash|
00040770  5f 43 6f 6d 70 72 65 73  73 20 73 74 61 74 75 73  |_Compress status|
00040780  65 73 0a 56 61 6c 75 65  09 4d 65 61 6e 69 6e 67  |es.Value.Meaning|
00040790  20 69 66 20 73 65 74 0a  23 4c 69 6e 65 0a 30 09  | if set.#Line.0.|
000407a0  4f 70 65 72 61 74 69 6f  6e 20 63 6f 6d 70 6c 65  |Operation comple|
000407b0  74 65 0a 31 09 49 6e 70  75 74 20 65 78 68 61 75  |te.1.Input exhau|
000407c0  73 74 65 64 09 09 28 52  33 a0 3d a0 30 29 0a 32  |sted..(R3.=.0).2|
000407d0  09 4f 75 74 70 75 74 20  73 70 61 63 65 20 65 78  |.Output space ex|
000407e0  68 61 75 73 74 65 64 09  28 52 35 a0 5c 3c a0 31  |hausted.(R5.\<.1|
000407f0  32 29 0a 00 44 41 54 41  97 06 00 00 53 71 75 61  |2)..DATA....Squa|
00040800  73 68 5f 44 65 63 6f 6d  70 72 65 73 73 20 20 28  |sh_Decompress  (|
00040810  26 34 32 37 30 31 29 0a  23 50 61 72 65 6e 74 20  |&42701).#Parent |
00040820  53 71 75 61 73 68 5f 0a  49 66 20 52 30 20 62 69  |Squash_.If R0 bi|
00040830  74 20 33 20 69 73 20 73  65 74 3a 0a 3d 3e 09 52  |t 3 is set:.=>.R|
00040840  30 20 3d 09 3c 66 6c 61  67 73 3d 3e 2e 66 6c 61  |0 =.<flags=>.fla|
00040850  67 73 3e 0a 09 52 31 20  3d 09 69 6e 70 75 74 20  |gs>..R1 =.input |
00040860  73 69 7a 65 20 28 2d 31  20 6d 65 61 6e 73 20 64  |size (-1 means d|
00040870  6f 6e 27 74 20 72 65 74  75 72 6e 20 6d 61 78 20  |on't return max |
00040880  6f 75 74 70 75 74 20 73  69 7a 65 29 0a 3c 3d 09  |output size).<=.|
00040890  52 30 20 3d 09 72 65 71  75 69 72 65 64 20 77 6f  |R0 =.required wo|
000408a0  72 6b 20 73 70 61 63 65  20 73 69 7a 65 0a 09 52  |rk space size..R|
000408b0  31 20 3d 09 6d 61 78 69  6d 75 6d 20 6f 75 74 70  |1 =.maximum outp|
000408c0  75 74 20 73 69 7a 65 20  28 2d 31 20 6d 65 61 6e  |ut size (-1 mean|
000408d0  73 20 64 6f 6e 27 74 20  6b 6e 6f 77 2f 6e 6f 74  |s don't know/not|
000408e0  20 61 73 6b 65 64 29 0a  0a 49 66 20 52 30 20 62  | asked)..If R0 b|
000408f0  69 74 20 33 20 69 73 20  63 6c 65 61 72 3a 0a 3d  |it 3 is clear:.=|
00040900  3e 09 52 30 20 3d 09 3c  66 6c 61 67 73 3d 3e 2e  |>.R0 =.<flags=>.|
00040910  66 6c 61 67 73 3e 0a 09  52 31 20 3d 09 77 6f 72  |flags>..R1 =.wor|
00040920  6b 73 70 61 63 65 20 70  6f 69 6e 74 65 72 0a 09  |kspace pointer..|
00040930  52 32 20 3d 09 69 6e 70  75 74 20 70 6f 69 6e 74  |R2 =.input point|
00040940  65 72 0a 09 52 33 20 3d  09 62 79 74 65 73 20 6f  |er..R3 =.bytes o|
00040950  66 20 69 6e 70 75 74 20  61 76 61 69 6c 61 62 6c  |f input availabl|
00040960  65 0a 09 52 34 20 3d 09  6f 75 74 70 75 74 20 70  |e..R4 =.output p|
00040970  6f 69 6e 74 65 72 0a 09  52 35 20 3d 09 62 79 74  |ointer..R5 =.byt|
00040980  65 73 20 6f 66 20 6f 75  74 70 75 74 20 73 70 61  |es of output spa|
00040990  63 65 20 61 76 61 69 6c  61 62 6c 65 0a 3c 3d 09  |ce available.<=.|
000409a0  52 30 20 3d 09 3c 73 74  61 74 75 73 3d 3e 2e 73  |R0 =.<status=>.s|
000409b0  74 61 74 75 73 3e 0a 09  52 31 20 70 72 65 73 65  |tatus>..R1 prese|
000409c0  72 76 65 64 0a 09 52 32  20 3d 09 70 6f 69 6e 74  |rved..R2 =.point|
000409d0  65 72 20 74 6f 20 66 69  72 73 74 20 75 6e 75 73  |er to first unus|
000409e0  65 64 20 69 6e 70 75 74  20 62 79 74 65 0a 09 52  |ed input byte..R|
000409f0  33 20 3d 09 69 6e 70 75  74 20 62 79 74 65 73 20  |3 =.input bytes |
00040a00  75 6e 75 73 65 64 0a 09  52 34 20 3d 09 70 6f 69  |unused..R4 =.poi|
00040a10  6e 74 65 72 20 74 6f 20  66 69 72 73 74 20 75 6e  |nter to first un|
00040a20  75 73 65 64 20 6f 75 74  70 75 74 20 62 79 74 65  |used output byte|
00040a30  0a 09 52 35 20 3d 09 75  6e 75 73 65 64 20 6f 75  |..R5 =.unused ou|
00040a40  74 70 75 74 20 73 70 61  63 65 20 72 65 6d 61 69  |tput space remai|
00040a50  6e 69 6e 67 0a 0a 43 61  6c 6c 20 74 68 69 73 20  |ning..Call this |
00040a60  53 57 49 20 69 6e 69 74  69 61 6c 6c 79 20 77 69  |SWI initially wi|
00040a70  74 68 20 52 30 20 3d 20  38 20 61 6e 64 20 52 31  |th R0 = 8 and R1|
00040a80  20 3d 20 69 6e 70 75 74  20 66 69 6c 65 20 73 69  | = input file si|
00040a90  7a 65 2c 20 75 73 69 6e  67 20 74 68 65 20 73 69  |ze, using the si|
00040aa0  7a 65 73 20 69 74 20 72  65 70 6f 72 74 73 20 74  |zes it reports t|
00040ab0  6f 20 61 6c 6c 6f 63 61  74 65 20 77 6f 72 6b 73  |o allocate works|
00040ac0  70 61 63 65 20 61 6e 64  20 6f 75 74 70 75 74 20  |pace and output |
00040ad0  62 75 66 66 65 72 73 20  61 73 20 61 70 70 72 6f  |buffers as appro|
00040ae0  70 72 69 61 74 65 2e 20  4e 6f 74 65 20 74 68 61  |priate. Note tha|
00040af0  74 20 74 68 65 20 63 75  72 72 65 6e 74 20 61 6c  |t the current al|
00040b00  67 6f 72 69 74 68 6d 20  61 6c 77 61 79 73 20 72  |gorithm always r|
00040b10  65 74 75 72 6e 73 20 52  31 20 3d 20 2d 31 2c 20  |eturns R1 = -1, |
00040b20  73 6f 20 79 6f 75 20 6d  75 73 74 20 67 65 74 20  |so you must get |
00040b30  74 68 69 73 20 73 69 7a  65 20 62 79 20 73 6f 6d  |this size by som|
00040b40  65 20 6f 74 68 65 72 20  6d 65 61 6e 73 2e 20 54  |e other means. T|
00040b50  68 65 6e 20 63 61 6c 6c  20 72 65 70 65 61 74 65  |hen call repeate|
00040b60  64 6c 79 20 77 69 74 68  20 52 30 20 62 69 74 20  |dly with R0 bit |
00040b70  33 20 63 6c 65 61 72 20  75 6e 74 69 6c 20 61 6c  |3 clear until al|
00040b80  6c 20 74 68 65 20 64 61  74 61 20 69 73 20 70 72  |l the data is pr|
00040b90  6f 63 65 73 73 65 64 20  28 61 73 20 72 65 70 6f  |ocessed (as repo|
00040ba0  72 74 65 64 20 76 69 61  20 74 68 65 20 3c 73 74  |rted via the <st|
00040bb0  61 74 75 73 20 62 69 74  73 3d 3e 2e 73 74 61 74  |atus bits=>.stat|
00040bc0  75 73 3e 20 72 65 74 75  72 6e 65 64 20 69 6e 20  |us> returned in |
00040bd0  52 30 29 2e 20 49 66 20  74 68 65 20 69 6e 70 75  |R0). If the inpu|
00040be0  74 20 69 73 20 65 78 68  61 75 73 74 65 64 20 28  |t is exhausted (|
00040bf0  52 33 20 5c 3c 20 31 32  2c 20 3c 52 30 20 62 69  |R3 \< 12, <R0 bi|
00040c00  74 20 31 20 73 65 74 3d  3e 2e 73 74 61 74 75 73  |t 1 set=>.status|
00040c10  3e 29 20 74 68 65 20 75  6e 75 73 65 64 20 69 6e  |>) the unused in|
00040c20  70 75 74 20 6d 75 73 74  20 62 65 20 72 65 73 75  |put must be resu|
00040c30  70 70 6c 69 65 64 2e 0a  0a 49 66 20 61 6c 6c 20  |pplied...If all |
00040c40  74 68 65 20 69 6e 70 75  74 20 64 61 74 61 20 63  |the input data c|
00040c50  61 6e 20 62 65 20 70 72  65 73 65 6e 74 65 64 20  |an be presented |
00040c60  61 74 20 6f 6e 63 65 20  28 52 30 20 62 69 74 73  |at once (R0 bits|
00040c70  20 30 2c 31 20 63 6c 65  61 72 29 20 61 6e 64 20  | 0,1 clear) and |
00040c80  74 68 65 20 6f 75 74 70  75 74 20 62 75 66 66 65  |the output buffe|
00040c90  72 20 69 73 20 6c 61 72  67 65 20 65 6e 6f 75 67  |r is large enoug|
00040ca0  68 2c 20 61 20 66 61 73  74 65 72 20 61 6c 67 6f  |h, a faster algo|
00040cb0  72 69 74 68 6d 20 69 73  20 75 73 65 64 2e 0a 23  |rithm is used..#|
00040cc0  73 75 62 70 61 67 65 20  46 6c 61 67 73 0a 53 71  |subpage Flags.Sq|
00040cd0  75 61 73 68 5f 44 65 63  6f 6d 70 72 65 73 73 20  |uash_Decompress |
00040ce0  66 6c 61 67 73 0a 42 69  74 09 4d 65 61 6e 69 6e  |flags.Bit.Meanin|
00040cf0  67 20 69 66 20 73 65 74  0a 23 4c 69 6e 65 0a 30  |g if set.#Line.0|
00040d00  09 43 6f 6e 74 69 6e 75  69 6e 67 20 65 78 69 73  |.Continuing exis|
00040d10  74 69 6e 67 20 6f 70 65  72 61 74 69 6f 6e 0a 31  |ting operation.1|
00040d20  09 4d 6f 72 65 20 69 6e  70 75 74 20 72 65 6d 61  |.More input rema|
00040d30  69 6e 73 20 61 66 74 65  72 20 74 68 69 73 0a 32  |ins after this.2|
00040d40  09 41 73 73 73 75 6d 65  20 61 6c 6c 20 6f 75 70  |.Asssume all oup|
00040d50  75 74 20 77 69 6c 6c 20  66 69 74 20 69 6e 20 62  |ut will fit in b|
00040d60  75 66 66 65 72 20 28 69  66 20 62 69 74 73 20 30  |uffer (if bits 0|
00040d70  2c 31 20 63 6c 65 61 72  20 61 20 66 61 73 74 65  |,1 clear a faste|
00040d80  72 20 61 6c 67 6f 72 69  74 68 6d 20 69 73 20 75  |r algorithm is u|
00040d90  73 65 64 29 0a 33 09 72  65 74 75 72 6e 20 77 6f  |sed).3.return wo|
00040da0  72 6b 73 70 61 63 65 20  6e 65 65 64 65 64 20 61  |rkspace needed a|
00040db0  6e 64 20 6d 61 78 20 6f  75 74 70 75 74 20 73 69  |nd max output si|
00040dc0  7a 65 20 28 61 6c 6c 20  6f 74 68 65 72 20 62 69  |ze (all other bi|
00040dd0  74 73 20 6d 75 73 74 20  62 65 20 30 29 0a 34 2d  |ts must be 0).4-|
00040de0  33 31 09 30 20 28 72 65  73 65 72 76 65 64 29 0a  |31.0 (reserved).|
00040df0  23 73 75 62 70 61 67 65  20 53 74 61 74 75 73 0a  |#subpage Status.|
00040e00  53 71 75 61 73 68 5f 44  65 63 6f 6d 70 72 65 73  |Squash_Decompres|
00040e10  73 20 73 74 61 74 75 73  65 73 0a 56 61 6c 75 65  |s statuses.Value|
00040e20  09 4d 65 61 6e 69 6e 67  20 69 66 20 73 65 74 0a  |.Meaning if set.|
00040e30  23 4c 69 6e 65 0a 30 09  4f 70 65 72 61 74 69 6f  |#Line.0.Operatio|
00040e40  6e 20 63 6f 6d 70 6c 65  74 65 0a 31 09 49 6e 70  |n complete.1.Inp|
00040e50  75 74 20 65 78 68 61 75  73 74 65 64 09 09 28 52  |ut exhausted..(R|
00040e60  33 a0 5c 3c a0 31 32 29  0a 32 09 4f 75 74 70 75  |3.\<.12).2.Outpu|
00040e70  74 20 73 70 61 63 65 20  65 78 68 61 75 73 74 65  |t space exhauste|
00040e80  64 09 28 52 35 a0 3d a0  30 29 0a 00 44 41 54 41  |d.(R5.=.0)..DATA|
00040e90  7a 02 00 00 46 6f 72 6d  61 74 20 6f 66 20 53 71  |z...Format of Sq|
00040ea0  75 61 73 68 20 66 69 6c  65 20 28 66 69 6c 65 74  |uash file (filet|
00040eb0  79 70 65 20 66 63 61 29  0a 23 50 61 72 65 6e 74  |ype fca).#Parent|
00040ec0  20 53 71 75 61 73 68 5f  0a 46 69 6c 65 20 68 65  | Squash_.File he|
00040ed0  61 64 65 72 0a 0a 4f 66  66 73 65 74 09 4c 65 6e  |ader..Offset.Len|
00040ee0  09 43 6f 6e 74 65 6e 74  73 0a 23 4c 69 6e 65 0a  |.Contents.#Line.|
00040ef0  30 09 34 09 22 53 51 53  48 22 0a 34 09 34 09 6c  |0.4."SQSH".4.4.l|
00040f00  65 6e 67 74 68 20 6f 66  20 64 61 74 61 20 77 68  |ength of data wh|
00040f10  65 6e 20 75 6e 63 6f 6d  70 72 65 73 73 65 64 0a  |en uncompressed.|
00040f20  38 09 34 09 3c 6c 6f 61  64 20 61 64 64 72 65 73  |8.4.<load addres|
00040f30  73 3d 3e 66 73 79 73 5f  6c 6f 61 64 65 78 65 63  |s=>fsys_loadexec|
00040f40  3e 09 74 79 70 69 63 61  6c 6c 79 20 74 68 65 73  |>.typically thes|
00040f50  65 20 68 6f 6c 64 0a 31  32 09 34 09 3c 65 78 65  |e hold.12.4.<exe|
00040f60  63 20 61 64 64 72 65 73  73 3d 3e 66 73 79 73 5f  |c address=>fsys_|
00040f70  6c 6f 61 64 65 78 65 63  3e 09 66 69 6c 65 74 79  |loadexec>.filety|
00040f80  70 65 20 61 6e 64 20 64  61 74 65 73 74 61 6d 70  |pe and datestamp|
00040f90  2e 0a 31 36 09 34 09 30  20 28 72 65 73 65 72 76  |..16.4.0 (reserv|
00040fa0  65 64 29 0a 0a 54 68 69  73 20 69 73 20 66 6f 6c  |ed)..This is fol|
00040fb0  6c 6f 77 65 64 20 62 79  20 63 6f 6d 70 72 65 73  |lowed by compres|
00040fc0  73 65 64 20 64 61 74 61  20 66 72 6f 6d 20 3c 53  |sed data from <S|
00040fd0  71 75 61 73 68 5f 43 6f  6d 70 72 65 73 73 3e 2c  |quash_Compress>,|
00040fe0  20 77 68 69 63 68 20 69  73 20 63 75 72 72 65 6e  | which is curren|
00040ff0  74 6c 79 20 69 64 65 6e  74 69 63 61 6c 20 74 6f  |tly identical to|
00041000  20 74 68 65 20 6f 75 74  70 75 74 20 66 72 6f 6d  | the output from|
00041010  20 55 6e 69 78 20 7b 66  43 6f 64 65 7d 63 6f 6d  | Unix {fCode}com|
00041020  70 72 65 73 73 7b 66 7d  20 69 6e 20 31 32 20 62  |press{f} in 12 b|
00041030  69 74 20 6d 6f 64 65 2e  20 28 7b 2f 7d 69 2e 65  |it mode. ({/}i.e|
00041040  2e 7b 2f 7d 20 72 65 6d  6f 76 65 20 74 68 65 20  |.{/} remove the |
00041050  32 30 20 62 79 74 65 20  68 65 61 64 65 72 20 61  |20 byte header a|
00041060  6e 64 20 74 68 65 20 72  65 73 75 6c 74 69 6e 67  |nd the resulting|
00041070  20 66 69 6c 65 20 63 61  6e 20 62 65 20 70 61 73  | file can be pas|
00041080  73 65 64 20 74 6f 20 7b  66 43 6f 64 65 7d 75 6e  |sed to {fCode}un|
00041090  63 6f 6d 70 72 65 73 73  7b 66 7d 20 6f 72 20 7b  |compress{f} or {|
000410a0  66 43 6f 64 65 7d 67 75  6e 7a 69 70 7b 66 7d 21  |fCode}gunzip{f}!|
000410b0  29 0a 23 20 4e 3e 20 4e  6f 74 20 61 20 6c 6f 74  |).# N> Not a lot|
000410c0  20 6f 66 20 70 65 6f 70  6c 65 20 6b 6e 6f 77 20  | of people know |
000410d0  74 68 61 74 2e 20 3a 2d  29 0a 23 20 47 65 72 70  |that. :-).# Gerp|
000410e0  68 3e 20 57 48 41 54 20  21 20 43 6f 6f 2c 20 73  |h> WHAT ! Coo, s|
000410f0  6f 20 69 74 20 64 6f 65  73 20 2d 20 68 6f 77 20  |o it does - how |
00041100  63 6f 6f 6c 21 0a 00 00  44 49 52 24 94 04 00 00  |cool!...DIR$....|
00041110  94 04 00 00 9c 15 04 00  48 fd ff ff 51 85 05 06  |........H...Q...|
00041120  d2 02 00 00 03 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
00041130  74 00 00 00 70 18 04 00  48 ff ff ff 18 52 d6 08  |t...p...H....R..|
00041140  91 00 00 00 13 00 00 00  00 00 00 00 4e 75 6d 62  |............Numb|
00041150  65 72 00 00 04 19 04 00  48 ff ff ff 10 be d6 08  |er......H.......|
00041160  d5 00 00 00 13 00 00 00  00 00 00 00 52 65 67 69  |............Regi|
00041170  73 74 65 72 00 00 00 00  dc 19 04 00 48 ff ff ff  |ster........H...|
00041180  d5 0d d7 08 a2 00 00 00  13 00 00 00 00 00 00 00  |................|
00041190  44 65 72 65 67 69 73 74  65 72 00 00 80 1a 04 00  |Deregister......|
000411a0  48 ff ff ff 30 86 d6 08  ed 00 00 00 13 00 00 00  |H...0...........|
000411b0  00 00 00 00 4e 75 6d 62  65 72 54 6f 4e 61 6d 65  |....NumberToName|
000411c0  00 00 00 00 70 1b 04 00  48 ff ff ff ed 0a d7 08  |....p...H.......|
000411d0  ca 00 00 00 13 00 00 00  00 00 00 00 45 78 69 73  |............Exis|
000411e0  74 73 00 00 3c 1c 04 00  48 ff ff ff 15 aa 2a 0c  |ts..<...H.....*.|
000411f0  f6 00 00 00 13 00 00 00  00 00 00 00 41 6c 70 68  |............Alph|
00041200  61 62 65 74 4e 75 6d 62  65 72 54 6f 4e 61 6d 65  |abetNumberToName|
00041210  00 00 00 00 34 1d 04 00  48 ff ff ff d4 b6 d6 08  |....4...H.......|
00041220  c1 00 00 00 13 00 00 00  00 00 00 00 53 65 6c 65  |............Sele|
00041230  63 74 41 6c 70 68 61 62  65 74 00 00 f8 1d 04 00  |ctAlphabet......|
00041240  46 ff ff ff 4f fa 58 a8  86 00 00 00 13 00 00 00  |F...O.X.........|
00041250  00 00 00 00 53 65 74 54  69 6d 65 00 80 1e 04 00  |....SetTime.....|
00041260  48 ff ff ff 64 f4 d6 08  de 00 00 00 13 00 00 00  |H...d...........|
00041270  00 00 00 00 52 65 61 64  43 75 72 72 65 6e 74 54  |....ReadCurrentT|
00041280  69 6d 65 5a 6f 6e 65 00  60 1f 04 00 48 ff ff ff  |imeZone.`...H...|
00041290  b2 95 2a 0c ad 00 00 00  03 00 00 00 00 00 00 00  |..*.............|
000412a0  41 6c 70 68 61 62 65 74  00 00 00 00 10 20 04 00  |Alphabet..... ..|
000412b0  48 ff ff ff 27 3b d7 08  ba 00 00 00 03 00 00 00  |H...';..........|
000412c0  00 00 00 00 41 6c 70 68  61 62 65 74 49 64 65 6e  |....AlphabetIden|
000412d0  74 69 66 69 65 72 00 00  cc 20 04 00 48 ff ff ff  |tifier... ..H...|
000412e0  30 36 d7 08 5b 02 00 00  03 00 00 00 00 00 00 00  |06..[...........|
000412f0  43 68 61 72 61 63 74 65  72 50 72 6f 70 65 72 74  |CharacterPropert|
00041300  79 54 61 62 6c 65 00 00  28 23 04 00 48 ff ff ff  |yTable..(#..H...|
00041310  fd 32 d7 08 dd 01 00 00  03 00 00 00 00 00 00 00  |.2..............|
00041320  43 6f 6c 6c 61 74 65 00  08 25 04 00 48 ff ff ff  |Collate..%..H...|
00041330  c7 10 d7 08 19 01 00 00  03 00 00 00 00 00 00 00  |................|
00041340  43 6f 6e 74 72 6f 6c 54  61 62 6c 65 00 00 00 00  |ControlTable....|
00041350  24 26 04 00 48 ff ff ff  cf 06 d7 08 12 01 00 00  |$&..H...........|
00041360  03 00 00 00 00 00 00 00  4c 6f 77 65 72 43 61 73  |........LowerCas|
00041370  65 54 61 62 6c 65 00 00  38 27 04 00 48 ff ff ff  |eTable..8'..H...|
00041380  33 83 d6 08 f2 00 00 00  03 00 00 00 00 00 00 00  |3...............|
00041390  4e 61 6d 65 54 6f 4e 75  6d 62 65 72 00 00 00 00  |NameToNumber....|
000413a0  2c 28 04 00 48 ff ff ff  46 00 d7 08 0a 01 00 00  |,(..H...F.......|
000413b0  03 00 00 00 00 00 00 00  50 6c 61 69 6e 54 61 62  |........PlainTab|
000413c0  6c 65 00 00 38 29 04 00  48 ff ff ff b6 fc d6 08  |le..8)..H.......|
000413d0  a7 02 00 00 03 00 00 00  00 00 00 00 52 65 61 64  |............Read|
000413e0  43 61 6c 65 6e 64 61 72  49 6e 66 6f 72 6d 61 74  |CalendarInformat|
000413f0  69 6f 6e 00 e0 2b 04 00  48 ff ff ff 27 ba d6 08  |ion..+..H...'...|
00041400  3f 01 00 00 03 00 00 00  00 00 00 00 52 65 70 72  |?...........Repr|
00041410  65 73 65 6e 74 61 74 69  6f 6e 54 61 62 6c 65 00  |esentationTable.|
00041420  20 2d 04 00 48 ff ff ff  75 b2 d6 08 93 00 00 00  | -..H...u.......|
00041430  03 00 00 00 00 00 00 00  53 65 6c 65 63 74 4b 65  |........SelectKe|
00041440  79 62 6f 61 72 64 48 61  6e 64 6c 65 72 00 00 00  |yboardHandler...|
00041450  b4 2d 04 00 48 ff ff ff  e6 ad d6 08 6a 01 00 00  |.-..H.......j...|
00041460  03 00 00 00 00 00 00 00  54 72 61 6e 73 66 6f 72  |........Transfor|
00041470  6d 53 74 72 69 6e 67 00  20 2f 04 00 48 ff ff ff  |mString. /..H...|
00041480  47 a7 d6 08 12 01 00 00  03 00 00 00 00 00 00 00  |G...............|
00041490  55 70 70 65 72 43 61 73  65 54 61 62 6c 65 00 00  |UpperCaseTable..|
000414a0  34 30 04 00 48 ff ff ff  f5 a0 d6 08 7b 01 00 00  |40..H.......{...|
000414b0  03 00 00 00 00 00 00 00  56 61 6c 75 65 54 61 62  |........ValueTab|
000414c0  6c 65 00 00 b0 31 04 00  48 ff ff ff e7 9c d6 08  |le...1..H.......|
000414d0  a0 01 00 00 03 00 00 00  00 00 00 00 57 72 69 74  |............Writ|
000414e0  65 44 69 72 65 63 74 69  6f 6e 00 00 50 33 04 00  |eDirection..P3..|
000414f0  48 ff ff ff b1 c5 d6 08  9e 01 00 00 03 00 00 00  |H...............|
00041500  00 00 00 00 52 65 61 64  54 69 6d 65 5a 6f 6e 65  |....ReadTimeZone|
00041510  73 00 00 00 f0 34 04 00  48 ff ff ff 22 cd d6 08  |s....4..H..."...|
00041520  04 0a 00 00 03 00 00 00  00 00 00 00 52 65 61 64  |............Read|
00041530  53 79 6d 62 6f 6c 73 00  f4 3e 04 00 48 fd ff ff  |Symbols..>..H...|
00041540  5d 05 81 2b d0 01 00 00  13 01 00 00 00 00 00 00  |]..+............|
00041550  43 6f 6e 76 65 72 74 00  3c 4f 04 00 48 fd ff ff  |Convert.<O..H...|
00041560  b7 ef c6 18 ae 01 00 00  33 00 00 00 00 00 00 00  |........3.......|
00041570  6e 75 6d 62 65 72 73 00  ec 50 04 00 48 fd ff ff  |numbers..P..H...|
00041580  dc c9 c6 18 b3 00 00 00  33 00 00 00 00 00 00 00  |........3.......|
00041590  61 6e 75 6d 62 65 72 73  00 00 00 00 44 41 54 41  |anumbers....DATA|
000415a0  d2 02 00 00 54 65 72 72  69 74 6f 72 79 0a 23 50  |....Territory.#P|
000415b0  72 65 66 69 78 20 54 65  72 72 69 74 6f 72 79 5f  |refix Territory_|
000415c0  0a 23 50 61 72 65 6e 74  20 21 52 6f 6f 74 0a 23  |.#Parent !Root.#|
000415d0  54 61 62 6c 65 20 43 6f  6c 75 6d 6e 73 20 32 0a  |Table Columns 2.|
000415e0  3c 41 6c 70 68 61 62 65  74 3e 0a 3c 41 6c 70 68  |<Alphabet>.<Alph|
000415f0  61 62 65 74 49 64 65 6e  74 69 66 69 65 72 3e 0a  |abetIdentifier>.|
00041600  3c 41 6c 70 68 61 62 65  74 4e 75 6d 62 65 72 54  |<AlphabetNumberT|
00041610  6f 4e 61 6d 65 3e 0a 3c  43 68 61 72 61 63 74 65  |oName>.<Characte|
00041620  72 50 72 6f 70 65 72 74  79 54 61 62 6c 65 3e 0a  |rPropertyTable>.|
00041630  3c 43 6f 6c 6c 61 74 65  3e 0a 3c 43 6f 6e 74 72  |<Collate>.<Contr|
00041640  6f 6c 54 61 62 6c 65 3e  0a 3c 43 6f 6e 76 65 72  |olTable>.<Conver|
00041650  74 44 61 74 65 41 6e 64  54 69 6d 65 3e 0a 3c 43  |tDateAndTime>.<C|
00041660  6f 6e 76 65 72 74 4f 72  64 69 6e 61 6c 73 54 6f  |onvertOrdinalsTo|
00041670  54 69 6d 65 3e 0a 3c 43  6f 6e 76 65 72 74 53 74  |Time>.<ConvertSt|
00041680  61 6e 64 61 72 64 44 61  74 65 3e 0a 3c 43 6f 6e  |andardDate>.<Con|
00041690  76 65 72 74 53 74 61 6e  64 61 72 64 44 61 74 65  |vertStandardDate|
000416a0  41 6e 64 54 69 6d 65 3e  0a 3c 43 6f 6e 76 65 72  |AndTime>.<Conver|
000416b0  74 53 74 61 6e 64 61 72  64 54 69 6d 65 3e 0a 3c  |tStandardTime>.<|
000416c0  43 6f 6e 76 65 72 74 54  65 78 74 54 6f 53 74 72  |ConvertTextToStr|
000416d0  69 6e 67 3e 0a 3c 43 6f  6e 76 65 72 74 54 69 6d  |ing>.<ConvertTim|
000416e0  65 53 74 72 69 6e 67 54  6f 4f 72 64 69 6e 61 6c  |eStringToOrdinal|
000416f0  73 3e 0a 3c 43 6f 6e 76  65 72 74 54 69 6d 65 54  |s>.<ConvertTimeT|
00041700  6f 4f 72 64 69 6e 61 6c  73 3e 0a 3c 43 6f 6e 76  |oOrdinals>.<Conv|
00041710  65 72 74 54 69 6d 65 54  6f 55 54 43 4f 72 64 69  |ertTimeToUTCOrdi|
00041720  6e 61 6c 73 3e 0a 3c 44  65 72 65 67 69 73 74 65  |nals>.<Deregiste|
00041730  72 3e 0a 3c 45 78 69 73  74 73 3e 0a 3c 4c 6f 77  |r>.<Exists>.<Low|
00041740  65 72 43 61 73 65 54 61  62 6c 65 3e 0a 3c 4e 61  |erCaseTable>.<Na|
00041750  6d 65 54 6f 4e 75 6d 62  65 72 3e 0a 3c 4e 75 6d  |meToNumber>.<Num|
00041760  62 65 72 3e 0a 3c 4e 75  6d 62 65 72 54 6f 4e 61  |ber>.<NumberToNa|
00041770  6d 65 3e 0a 3c 50 6c 61  69 6e 54 61 62 6c 65 3e  |me>.<PlainTable>|
00041780  0a 3c 52 65 61 64 43 61  6c 65 6e 64 61 72 49 6e  |.<ReadCalendarIn|
00041790  66 6f 72 6d 61 74 69 6f  6e 3e 0a 3c 52 65 61 64  |formation>.<Read|
000417a0  43 75 72 72 65 6e 74 54  69 6d 65 5a 6f 6e 65 3e  |CurrentTimeZone>|
000417b0  0a 3c 52 65 61 64 53 79  6d 62 6f 6c 73 3e 0a 3c  |.<ReadSymbols>.<|
000417c0  52 65 61 64 54 69 6d 65  5a 6f 6e 65 73 3e 0a 3c  |ReadTimeZones>.<|
000417d0  52 65 67 69 73 74 65 72  3e 0a 3c 52 65 70 72 65  |Register>.<Repre|
000417e0  73 65 6e 74 61 74 69 6f  6e 54 61 62 6c 65 3e 0a  |sentationTable>.|
000417f0  3c 53 65 6c 65 63 74 41  6c 70 68 61 62 65 74 3e  |<SelectAlphabet>|
00041800  0a 3c 53 65 6c 65 63 74  4b 65 79 62 6f 61 72 64  |.<SelectKeyboard|
00041810  48 61 6e 64 6c 65 72 3e  0a 3c 53 65 74 54 69 6d  |Handler>.<SetTim|
00041820  65 3e 0a 3c 54 72 61 6e  73 66 6f 72 6d 53 74 72  |e>.<TransformStr|
00041830  69 6e 67 3e 0a 3c 55 70  70 65 72 43 61 73 65 54  |ing>.<UpperCaseT|
00041840  61 62 6c 65 3e 0a 3c 56  61 6c 75 65 54 61 62 6c  |able>.<ValueTabl|
00041850  65 3e 0a 3c 57 72 69 74  65 44 69 72 65 63 74 69  |e>.<WriteDirecti|
00041860  6f 6e 3e 0a 23 45 6e 64  54 61 62 6c 65 0a 00 00  |on>.#EndTable...|
00041870  44 41 54 41 91 00 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
00041880  79 5f 4e 75 6d 62 65 72  20 20 28 26 34 33 30 34  |y_Number  (&4304|
00041890  30 29 0a 23 50 61 72 65  6e 74 20 54 65 72 72 69  |0).#Parent Terri|
000418a0  74 6f 72 79 5f 0a 3c 3d  09 52 30 20 3d 09 3c 43  |tory_.<=.R0 =.<C|
000418b0  75 72 72 65 6e 74 20 74  65 72 72 69 74 6f 72 79  |urrent territory|
000418c0  20 6e 75 6d 62 65 72 3d  3e 54 65 72 72 69 74 6f  | number=>Territo|
000418d0  72 79 5f 6e 75 6d 62 65  72 73 3e 0a 0a 52 65 61  |ry_numbers>..Rea|
000418e0  64 73 20 74 68 65 20 63  75 72 72 65 6e 74 20 74  |ds the current t|
000418f0  65 72 72 69 74 6f 72 79  20 6e 75 6d 62 65 72 2e  |erritory number.|
00041900  0a 00 00 00 44 41 54 41  d5 00 00 00 54 65 72 72  |....DATA....Terr|
00041910  69 74 6f 72 79 5f 52 65  67 69 73 74 65 72 20 20  |itory_Register  |
00041920  28 26 34 33 30 34 31 29  0a 23 50 61 72 65 6e 74  |(&43041).#Parent|
00041930  20 54 65 72 72 69 74 6f  72 79 5f 0a 3d 3e 09 52  | Territory_.=>.R|
00041940  30 20 3d 09 3c 74 65 72  72 69 74 6f 72 79 20 6e  |0 =.<territory n|
00041950  75 6d 62 65 72 3d 3e 54  65 72 72 69 74 6f 72 79  |umber=>Territory|
00041960  5f 6e 75 6d 62 65 72 73  3e 0a 09 52 31 20 3d 09  |_numbers>..R1 =.|
00041970  70 6f 69 6e 74 65 72 20  74 6f 20 74 61 62 6c 65  |pointer to table|
00041980  20 6f 66 20 65 6e 74 72  79 20 70 6f 69 6e 74 73  | of entry points|
00041990  0a 09 52 32 20 3d 09 52  31 32 20 66 6f 72 20 63  |..R2 =.R12 for c|
000419a0  6f 64 65 0a 0a 41 64 64  73 20 61 20 74 65 72 72  |ode..Adds a terr|
000419b0  69 74 6f 72 79 20 74 6f  20 74 68 65 20 6c 69 73  |itory to the lis|
000419c0  74 20 6f 66 20 61 63 74  69 76 65 20 74 65 72 72  |t of active terr|
000419d0  69 74 6f 72 69 65 73 2e  0a 00 00 00 44 41 54 41  |itories.....DATA|
000419e0  a2 00 00 00 54 65 72 72  69 74 6f 72 79 5f 44 65  |....Territory_De|
000419f0  72 65 67 69 73 74 65 72  20 20 28 26 34 33 30 34  |register  (&4304|
00041a00  32 29 0a 23 50 61 72 65  6e 74 20 54 65 72 72 69  |2).#Parent Terri|
00041a10  74 6f 72 79 5f 0a 3d 3e  09 52 30 20 3d 09 3c 74  |tory_.=>.R0 =.<t|
00041a20  65 72 72 69 74 6f 72 79  20 6e 75 6d 62 65 72 3d  |erritory number=|
00041a30  3e 54 65 72 72 69 74 6f  72 79 5f 6e 75 6d 62 65  |>Territory_numbe|
00041a40  72 73 3e 0a 0a 52 65 6d  6f 76 65 73 20 61 20 74  |rs>..Removes a t|
00041a50  65 72 72 69 74 6f 72 79  20 66 72 6f 6d 20 74 68  |erritory from th|
00041a60  65 20 6c 69 73 74 20 6f  66 20 61 63 74 69 76 65  |e list of active|
00041a70  20 74 65 72 72 69 74 6f  72 69 65 73 2e 0a 00 00  | territories....|
00041a80  44 41 54 41 ed 00 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
00041a90  79 5f 4e 75 6d 62 65 72  54 6f 4e 61 6d 65 20 20  |y_NumberToName  |
00041aa0  28 26 34 33 30 34 33 29  0a 23 50 61 72 65 6e 74  |(&43043).#Parent|
00041ab0  20 54 65 72 72 69 74 6f  72 79 5f 0a 3d 3e 09 52  | Territory_.=>.R|
00041ac0  30 20 3d 09 3c 74 65 72  72 69 74 6f 72 79 20 6e  |0 =.<territory n|
00041ad0  75 6d 62 65 72 3d 3e 74  65 72 72 69 74 6f 72 79  |umber=>territory|
00041ae0  5f 6e 75 6d 62 65 72 73  3e 0a 09 52 31 20 3d 09  |_numbers>..R1 =.|
00041af0  70 6f 69 6e 74 65 72 20  74 6f 20 62 75 66 66 65  |pointer to buffe|
00041b00  72 20 66 6f 72 20 6e 61  6d 65 0a 09 52 32 20 3d  |r for name..R2 =|
00041b10  09 6c 65 6e 67 74 68 20  6f 66 20 62 75 66 66 65  |.length of buffe|
00041b20  72 0a 09 0a 52 65 74 75  72 6e 73 20 74 68 65 20  |r...Returns the |
00041b30  6e 61 6d 65 20 6f 66 20  67 69 76 65 6e 20 74 65  |name of given te|
00041b40  72 72 69 74 6f 72 79 20  69 6e 20 74 68 65 20 63  |rritory in the c|
00041b50  75 72 72 65 6e 74 20 74  65 72 72 69 74 6f 72 79  |urrent territory|
00041b60  27 73 20 6c 61 6e 67 75  61 67 65 2e 0a 00 00 00  |'s language.....|
00041b70  44 41 54 41 ca 00 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
00041b80  79 5f 45 78 69 73 74 73  20 20 28 26 34 33 30 34  |y_Exists  (&4304|
00041b90  34 29 0a 23 50 61 72 65  6e 74 20 54 65 72 72 69  |4).#Parent Terri|
00041ba0  74 6f 72 79 5f 0a 3d 3e  09 52 30 20 3d 09 3c 74  |tory_.=>.R0 =.<t|
00041bb0  65 72 72 69 74 6f 72 79  20 6e 75 6d 62 65 72 3d  |erritory number=|
00041bc0  3e 54 65 72 72 69 74 6f  72 79 5f 6e 75 6d 62 65  |>Territory_numbe|
00041bd0  72 73 3e 0a 3c 3d 09 5a  20 66 6c 61 67 20 73 65  |rs>.<=.Z flag se|
00041be0  74 20 69 66 20 74 68 65  20 74 65 72 72 69 74 6f  |t if the territo|
00041bf0  72 79 20 69 73 20 6c 6f  61 64 65 64 20 28 69 65  |ry is loaded (ie|
00041c00  20 69 73 20 45 51 29 0a  0a 43 68 65 63 6b 73 20  | is EQ)..Checks |
00041c10  74 6f 20 73 65 65 20 69  66 20 74 68 65 20 67 69  |to see if the gi|
00041c20  76 65 6e 20 74 65 72 72  69 74 6f 72 79 20 69 73  |ven territory is|
00041c30  20 70 72 65 73 65 6e 74  2e 0a 00 00 44 41 54 41  | present....DATA|
00041c40  f6 00 00 00 54 65 72 72  69 74 6f 72 79 5f 41 6c  |....Territory_Al|
00041c50  70 68 61 62 65 74 4e 75  6d 62 65 72 54 6f 4e 61  |phabetNumberToNa|
00041c60  6d 65 20 20 28 26 34 33  30 34 35 29 0a 23 50 61  |me  (&43045).#Pa|
00041c70  72 65 6e 74 20 54 65 72  72 69 74 6f 72 79 5f 0a  |rent Territory_.|
00041c80  3d 3e 09 52 30 20 3d 09  3c 61 6c 70 68 61 62 65  |=>.R0 =.<alphabe|
00041c90  74 20 6e 75 6d 62 65 72  3d 3e 54 65 72 72 69 74  |t number=>Territ|
00041ca0  6f 72 79 5f 61 6e 75 6d  62 65 72 73 3e 0a 09 52  |ory_anumbers>..R|
00041cb0  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 62  |1 =.pointer to b|
00041cc0  75 66 66 65 72 20 74 6f  20 68 6f 6c 64 20 6e 61  |uffer to hold na|
00041cd0  6d 65 0a 09 52 32 20 3d  09 6c 65 6e 67 74 68 20  |me..R2 =.length |
00041ce0  6f 66 20 62 75 66 66 65  72 0a 09 0a 52 65 74 75  |of buffer...Retu|
00041cf0  72 6e 73 20 74 68 65 20  6e 61 6d 65 20 6f 66 20  |rns the name of |
00041d00  74 68 65 20 61 6c 70 68  61 62 65 74 20 69 6e 20  |the alphabet in |
00041d10  74 68 65 20 63 75 72 72  65 6e 74 20 74 65 72 72  |the current terr|
00041d20  69 74 6f 72 79 27 73 20  6c 61 6e 67 75 61 67 65  |itory's language|
00041d30  2e 0a 00 00 44 41 54 41  c1 00 00 00 54 65 72 72  |....DATA....Terr|
00041d40  69 74 6f 72 79 5f 53 65  6c 65 63 74 41 6c 70 68  |itory_SelectAlph|
00041d50  61 62 65 74 20 20 28 26  34 33 30 34 36 29 0a 23  |abet  (&43046).#|
00041d60  50 61 72 65 6e 74 20 54  65 72 72 69 74 6f 72 79  |Parent Territory|
00041d70  5f 0a 3d 3e 09 52 30 20  3d 09 3c 74 65 72 72 69  |_.=>.R0 =.<terri|
00041d80  74 6f 72 79 20 6e 75 6d  62 65 72 3d 3e 54 65 72  |tory number=>Ter|
00041d90  72 69 74 6f 72 79 5f 6e  75 6d 62 65 72 73 3e 2c  |ritory_numbers>,|
00041da0  20 6f 72 20 2d 31 20 74  6f 20 75 73 65 20 63 75  | or -1 to use cu|
00041db0  72 72 65 6e 74 20 74 65  72 72 69 74 6f 72 79 0a  |rrent territory.|
00041dc0  09 0a 53 65 6c 65 63 74  73 20 74 68 65 20 63 6f  |..Selects the co|
00041dd0  72 72 65 63 74 20 61 6c  70 68 61 62 65 74 20 66  |rrect alphabet f|
00041de0  6f 72 20 61 20 67 69 76  65 6e 20 74 65 72 72 69  |or a given terri|
00041df0  74 6f 74 79 2e 00 00 00  44 41 54 41 86 00 00 00  |toty....DATA....|
00041e00  54 65 72 72 69 74 6f 72  79 5f 53 65 74 54 69 6d  |Territory_SetTim|
00041e10  65 20 20 28 26 34 33 30  34 37 29 0a 23 50 61 72  |e  (&43047).#Par|
00041e20  65 6e 74 20 54 65 72 72  69 74 6f 72 79 5f 0a 3d  |ent Territory_.=|
00041e30  3e 09 52 30 20 3d 09 70  6f 69 6e 74 65 72 20 74  |>.R0 =.pointer t|
00041e40  6f 20 61 20 35 2d 62 79  74 65 20 55 54 43 20 74  |o a 5-byte UTC t|
00041e50  69 6d 65 0a 09 0a 53 65  74 73 20 74 68 65 20 69  |ime...Sets the i|
00041e60  6e 74 65 72 6e 61 6c 20  63 6c 6f 63 6b 20 74 6f  |nternal clock to|
00041e70  20 61 20 67 69 76 65 6e  20 74 69 6d 65 2e 00 00  | a given time...|
00041e80  44 41 54 41 de 00 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
00041e90  79 5f 52 65 61 64 43 75  72 72 65 6e 74 54 69 6d  |y_ReadCurrentTim|
00041ea0  65 5a 6f 6e 65 20 20 28  26 34 33 30 34 38 29 0a  |eZone  (&43048).|
00041eb0  23 50 61 72 65 6e 74 20  54 65 72 72 69 74 6f 72  |#Parent Territor|
00041ec0  79 5f 0a 3c 3d 09 52 30  20 3d 09 70 6f 69 6e 74  |y_.<=.R0 =.point|
00041ed0  65 72 20 74 6f 20 6e 61  6d 65 20 6f 66 20 74 68  |er to name of th|
00041ee0  65 20 63 75 72 72 65 6e  74 20 74 69 6d 65 20 7a  |e current time z|
00041ef0  6f 6e 65 0a 09 52 31 20  3d 09 6f 66 66 73 65 74  |one..R1 =.offset|
00041f00  20 66 72 6f 6d 20 55 54  43 20 74 6f 20 63 75 72  | from UTC to cur|
00041f10  72 65 6e 74 20 74 69 6d  65 20 7a 6f 6e 65 20 69  |rent time zone i|
00041f20  6e 20 63 65 6e 74 69 2d  73 65 63 6f 6e 64 73 0a  |n centi-seconds.|
00041f30  09 0a 52 65 74 75 72 6e  73 20 69 6e 66 6f 72 6d  |..Returns inform|
00041f40  61 74 69 6f 6e 20 6f 6e  20 74 68 65 20 63 75 72  |ation on the cur|
00041f50  72 65 6e 74 20 74 69 6d  65 7a 6f 6e 65 2e 00 00  |rent timezone...|
00041f60  44 41 54 41 ad 00 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
00041f70  79 5f 41 6c 70 68 61 62  65 74 20 20 28 26 34 33  |y_Alphabet  (&43|
00041f80  30 35 32 29 0a 23 50 61  72 65 6e 74 20 54 65 72  |052).#Parent Ter|
00041f90  72 69 74 6f 72 79 5f 0a  3d 3e 09 52 30 20 3d 09  |ritory_.=>.R0 =.|
00041fa0  3c 74 65 72 72 69 74 6f  72 79 20 6e 75 6d 62 65  |<territory numbe|
00041fb0  72 3d 3e 54 65 72 72 69  74 6f 72 79 5f 6e 75 6d  |r=>Territory_num|
00041fc0  62 65 72 73 3e 2c 20 6f  72 20 2d 31 20 66 6f 72  |bers>, or -1 for|
00041fd0  20 63 75 72 72 65 6e 74  0a 0a 3c 3d 09 52 30 20  | current..<=.R0 |
00041fe0  3d 09 3c 61 6c 70 68 61  62 65 74 20 6e 75 6d 62  |=.<alphabet numb|
00041ff0  65 72 3d 3e 54 65 72 72  69 74 6f 72 79 5f 61 6e  |er=>Territory_an|
00042000  75 6d 62 65 72 73 3e 20  75 73 65 64 0a 00 00 00  |umbers> used....|
00042010  44 41 54 41 ba 00 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
00042020  79 5f 41 6c 70 68 61 62  65 74 49 64 65 6e 74 69  |y_AlphabetIdenti|
00042030  66 69 65 72 20 20 28 26  34 33 30 35 33 29 0a 23  |fier  (&43053).#|
00042040  50 61 72 65 6e 74 20 54  65 72 72 69 74 6f 72 79  |Parent Territory|
00042050  5f 0a 3d 3e 09 52 30 20  3d 09 3c 74 65 72 72 69  |_.=>.R0 =.<terri|
00042060  74 6f 72 79 20 6e 75 6d  62 65 72 3d 3e 54 65 72  |tory number=>Ter|
00042070  72 69 74 6f 72 79 5f 6e  75 6d 62 65 72 73 3e 2c  |ritory_numbers>,|
00042080  20 6f 72 20 2d 31 20 66  6f 72 20 63 75 72 72 65  | or -1 for curre|
00042090  6e 74 0a 0a 3c 3d 09 52  30 20 3d 09 70 6f 69 6e  |nt..<=.R0 =.poin|
000420a0  74 65 72 20 74 6f 20 69  64 65 6e 74 69 66 69 65  |ter to identifie|
000420b0  72 20 73 74 72 69 6e 67  20 66 6f 72 20 61 6c 70  |r string for alp|
000420c0  68 61 62 65 74 20 75 73  65 64 00 00 44 41 54 41  |habet used..DATA|
000420d0  5b 02 00 00 54 65 72 72  69 74 6f 72 79 5f 43 68  |[...Territory_Ch|
000420e0  61 72 61 63 74 65 72 50  72 6f 70 65 72 74 79 54  |aracterPropertyT|
000420f0  61 62 6c 65 20 20 28 26  34 33 30 35 36 29 0a 23  |able  (&43056).#|
00042100  50 61 72 65 6e 74 20 54  65 72 72 69 74 6f 72 79  |Parent Territory|
00042110  5f 0a 3d 3e 09 52 30 20  3d 09 3c 74 65 72 72 69  |_.=>.R0 =.<terri|
00042120  74 6f 72 79 20 6e 75 6d  62 65 72 3d 3e 54 65 72  |tory number=>Ter|
00042130  72 69 74 6f 72 79 5f 6e  75 6d 62 65 72 73 3e 2c  |ritory_numbers>,|
00042140  20 6f 72 20 2d 31 20 66  6f 72 20 63 75 72 72 65  | or -1 for curre|
00042150  6e 74 0a 09 52 31 20 3d  09 63 6f 64 65 20 66 6f  |nt..R1 =.code fo|
00042160  72 20 72 65 71 75 69 72  65 64 20 63 68 61 72 61  |r required chara|
00042170  63 74 65 72 20 70 72 6f  70 65 72 74 79 20 74 61  |cter property ta|
00042180  62 6c 65 0a 3c 3d 09 52  30 20 3d 09 70 6f 69 6e  |ble.<=.R0 =.poin|
00042190  74 65 72 20 74 6f 20 63  68 61 72 61 63 74 65 72  |ter to character|
000421a0  20 70 72 6f 70 65 72 74  79 20 74 61 62 6c 65 0a  | property table.|
000421b0  0a 41 20 63 68 61 72 61  63 74 65 72 20 70 72 6f  |.A character pro|
000421c0  70 65 72 74 79 20 74 61  62 6c 65 20 69 73 20 61  |perty table is a|
000421d0  20 32 35 36 20 62 69 74  74 61 62 6c 65 20 69 6e  | 256 bittable in|
000421e0  64 69 63 61 74 69 6e 67  20 77 68 65 74 68 65 72  |dicating whether|
000421f0  20 6f 72 20 6e 6f 74 20  65 61 63 68 0a 63 68 61  | or not each.cha|
00042200  72 61 63 74 65 72 20 69  6e 20 74 68 65 20 67 69  |racter in the gi|
00042210  76 65 6e 20 74 65 72 72  69 74 6f 72 79 27 73 20  |ven territory's |
00042220  61 6c 70 68 61 62 65 74  20 68 61 73 20 61 20 70  |alphabet has a p|
00042230  61 72 74 69 63 75 6c 61  72 20 70 72 6f 70 65 72  |articular proper|
00042240  74 79 2e 0a 0a 23 54 61  62 0a 43 6f 64 65 09 4d  |ty...#Tab.Code.M|
00042250  65 61 6e 69 6e 67 20 77  68 65 6e 20 73 65 74 0a  |eaning when set.|
00042260  23 6c 69 6e 65 0a 30 09  43 6f 6e 74 72 6f 6c 20  |#line.0.Control |
00042270  63 6f 64 65 0a 31 09 55  70 70 65 72 63 61 73 65  |code.1.Uppercase|
00042280  0a 32 09 4c 6f 77 65 72  63 61 73 65 0a 33 09 41  |.2.Lowercase.3.A|
00042290  6c 70 68 61 62 65 74 69  63 0a 34 09 50 75 6e 63  |lphabetic.4.Punc|
000422a0  74 75 61 74 69 6f 6e 0a  35 09 57 68 69 74 65 20  |tuation.5.White |
000422b0  73 70 61 63 65 0a 36 09  44 69 67 69 74 0a 37 09  |space.6.Digit.7.|
000422c0  48 65 78 20 64 69 67 69  74 0a 38 09 41 63 63 65  |Hex digit.8.Acce|
000422d0  6e 74 0a 39 09 46 6c 6f  77 73 20 69 6e 20 73 61  |nt.9.Flows in sa|
000422e0  6d 65 20 64 69 72 65 63  74 69 6f 6e 20 61 73 20  |me direction as |
000422f0  74 65 72 72 69 74 6f 72  79 20 77 72 69 74 65 20  |territory write |
00042300  64 69 72 65 63 74 69 6f  6e 0a 31 30 09 46 6c 6f  |direction.10.Flo|
00042310  77 73 20 69 6e 20 72 65  76 65 72 73 65 20 64 69  |ws in reverse di|
00042320  72 65 63 74 69 6f 6e 00  44 41 54 41 dd 01 00 00  |rection.DATA....|
00042330  54 65 72 72 69 74 6f 72  79 5f 43 6f 6c 6c 61 74  |Territory_Collat|
00042340  65 20 20 28 26 34 33 30  35 44 29 0a 23 50 61 72  |e  (&4305D).#Par|
00042350  65 6e 74 20 54 65 72 72  69 74 6f 72 79 5f 0a 3d  |ent Territory_.=|
00042360  3e 09 52 30 20 3d 09 3c  74 65 72 72 69 74 6f 72  |>.R0 =.<territor|
00042370  79 20 6e 75 6d 62 65 72  3d 3e 54 65 72 72 69 74  |y number=>Territ|
00042380  6f 72 79 5f 6e 75 6d 62  65 72 73 3e 2c 20 6f 72  |ory_numbers>, or|
00042390  20 2d 31 20 66 6f 72 20  63 75 72 72 65 6e 74 0a  | -1 for current.|
000423a0  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
000423b0  20 73 74 72 69 6e 67 20  31 20 28 6e 75 6c 6c 20  | string 1 (null |
000423c0  74 65 72 6d 69 6e 61 74  65 64 29 0a 09 52 32 20  |terminated)..R2 |
000423d0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 73 74 72  |=.pointer to str|
000423e0  69 6e 67 20 32 20 28 6e  75 6c 6c 20 74 65 72 6d  |ing 2 (null term|
000423f0  69 6e 61 74 65 64 29 0a  09 52 33 20 3d 09 66 6c  |inated)..R3 =.fl|
00042400  61 67 73 3a 0a 09 20 09  62 69 74 20 30 3a 20 69  |ags:.. .bit 0: i|
00042410  67 6e 6f 72 65 20 63 61  73 65 0a 09 20 09 62 69  |gnore case.. .bi|
00042420  74 20 31 3a 20 69 67 6e  6f 72 65 20 61 63 63 65  |t 1: ignore acce|
00042430  6e 74 73 0a 09 20 09 62  69 74 73 20 32 2d 33 31  |nts.. .bits 2-31|
00042440  3a 20 72 65 73 65 72 76  65 64 20 28 6d 75 73 74  |: reserved (must|
00042450  20 62 65 20 7a 65 72 6f  29 0a 0a 3c 3d 09 52 30  | be zero)..<=.R0|
00042460  20 3d 09 5c 3c 30 20 69  66 20 73 74 72 69 6e 67  | =.\<0 if string|
00042470  31 20 5c 3c 20 73 74 72  69 6e 67 32 0a 09 20 09  |1 \< string2.. .|
00042480  3d 30 20 69 66 20 73 74  72 69 6e 67 31 20 3d 20  |=0 if string1 = |
00042490  73 74 72 69 6e 67 32 0a  09 20 09 5c 3e 30 20 69  |string2.. .\>0 i|
000424a0  66 20 73 74 72 69 6e 67  31 20 5c 3e 20 73 74 72  |f string1 \> str|
000424b0  69 6e 67 32 0a 09 52 31  2d 52 33 20 09 70 72 65  |ing2..R1-R3 .pre|
000424c0  73 65 72 76 65 64 0a 0a  54 68 69 73 20 63 61 6c  |served..This cal|
000424d0  6c 20 63 6f 6d 70 61 72  65 73 20 73 74 72 69 6e  |l compares strin|
000424e0  67 73 20 69 6e 20 74 68  65 20 67 69 76 65 6e 20  |gs in the given |
000424f0  74 65 72 72 69 74 6f 72  79 27 73 20 61 6c 70 68  |territory's alph|
00042500  61 62 65 74 2e 00 00 00  44 41 54 41 19 01 00 00  |abet....DATA....|
00042510  54 65 72 72 69 74 6f 72  79 5f 43 6f 6e 74 72 6f  |Territory_Contro|
00042520  6c 54 61 62 6c 65 20 20  28 26 34 33 30 35 39 29  |lTable  (&43059)|
00042530  0a 23 50 61 72 65 6e 74  20 54 65 72 72 69 74 6f  |.#Parent Territo|
00042540  72 79 5f 0a 3d 3e 09 52  30 20 3d 09 3c 74 65 72  |ry_.=>.R0 =.<ter|
00042550  72 69 74 6f 72 79 20 6e  75 6d 62 65 72 3d 3e 54  |ritory number=>T|
00042560  65 72 72 69 74 6f 72 79  5f 6e 75 6d 62 65 72 73  |erritory_numbers|
00042570  3e 2c 20 6f 72 20 2d 31  20 66 6f 72 20 63 75 72  |>, or -1 for cur|
00042580  72 65 6e 74 0a 0a 3c 3d  09 52 30 20 3d 09 70 6f  |rent..<=.R0 =.po|
00042590  69 6e 74 65 72 20 74 6f  20 63 6f 6e 74 72 6f 6c  |inter to control|
000425a0  20 74 61 62 6c 65 0a 0a  41 20 63 68 61 72 61 63  | table..A charac|
000425b0  74 65 72 20 70 72 6f 70  65 72 74 79 20 74 61 62  |ter property tab|
000425c0  6c 65 20 69 73 20 61 20  32 35 36 20 62 79 74 65  |le is a 256 byte|
000425d0  20 74 61 62 6c 65 20 67  69 76 69 6e 67 20 74 68  | table giving th|
000425e0  65 20 76 61 6c 75 65 20  6f 66 20 65 61 63 68 0a  |e value of each.|
000425f0  63 68 61 72 61 63 74 65  72 20 69 66 20 70 72 65  |character if pre|
00042600  73 73 65 64 20 77 69 74  68 20 74 68 65 20 43 74  |ssed with the Ct|
00042610  72 6c 20 6b 65 79 20 64  65 70 72 65 73 73 65 64  |rl key depressed|
00042620  2e 00 00 00 44 41 54 41  12 01 00 00 54 65 72 72  |....DATA....Terr|
00042630  69 74 6f 72 79 5f 4c 6f  77 65 72 43 61 73 65 54  |itory_LowerCaseT|
00042640  61 62 6c 65 20 20 28 26  34 33 30 35 37 29 0a 23  |able  (&43057).#|
00042650  50 61 72 65 6e 74 20 54  65 72 72 69 74 6f 72 79  |Parent Territory|
00042660  5f 0a 3d 3e 09 52 30 20  3d 09 3c 74 65 72 72 69  |_.=>.R0 =.<terri|
00042670  74 6f 72 79 20 6e 75 6d  62 65 72 3d 3e 54 65 72  |tory number=>Ter|
00042680  72 69 74 6f 72 79 5f 6e  75 6d 62 65 72 73 3e 2c  |ritory_numbers>,|
00042690  20 6f 72 20 2d 31 20 66  6f 72 20 63 75 72 72 65  | or -1 for curre|
000426a0  6e 74 0a 0a 3c 3d 09 52  30 20 3d 09 70 6f 69 6e  |nt..<=.R0 =.poin|
000426b0  74 65 72 20 74 6f 20 6c  6f 77 65 72 20 63 61 73  |ter to lower cas|
000426c0  65 20 74 61 62 6c 65 0a  0a 41 20 63 68 61 72 61  |e table..A chara|
000426d0  63 74 65 72 20 70 72 6f  70 65 72 74 79 20 74 61  |cter property ta|
000426e0  62 6c 65 20 69 73 20 61  20 32 35 36 20 62 79 74  |ble is a 256 byt|
000426f0  65 20 74 61 62 6c 65 20  77 69 74 68 20 74 68 65  |e table with the|
00042700  20 6c 6f 77 65 72 20 63  61 73 65 20 76 65 72 73  | lower case vers|
00042710  69 6f 6e 20 6f 66 0a 65  61 63 68 20 63 68 61 72  |ion of.each char|
00042720  61 63 74 65 72 20 69 6e  20 74 68 65 20 61 6c 70  |acter in the alp|
00042730  68 61 62 65 74 2e 00 00  44 41 54 41 f2 00 00 00  |habet...DATA....|
00042740  54 65 72 72 69 74 6f 72  79 5f 4e 61 6d 65 54 6f  |Territory_NameTo|
00042750  4e 75 6d 62 65 72 20 28  26 34 33 30 36 30 29 0a  |Number (&43060).|
00042760  23 50 61 72 65 6e 74 20  54 65 72 72 69 74 6f 72  |#Parent Territor|
00042770  79 5f 0a 3d 3e 09 52 30  20 3d 20 09 3c 74 65 72  |y_.=>.R0 = .<ter|
00042780  72 69 74 6f 72 79 20 6e  75 6d 62 65 72 3d 3e 74  |ritory number=>t|
00042790  65 72 72 69 74 6f 72 79  5f 6e 75 6d 62 65 72 73  |erritory_numbers|
000427a0  3e 20 6f 66 20 6e 61 6d  65 0a 09 52 31 20 3d 20  |> of name..R1 = |
000427b0  09 70 6f 69 6e 74 65 72  20 74 6f 20 74 65 72 72  |.pointer to terr|
000427c0  69 74 6f 72 79 20 6e 61  6d 65 20 69 6e 20 61 6c  |itory name in al|
000427d0  70 68 61 62 65 74 20 6f  66 20 74 65 72 72 69 74  |phabet of territ|
000427e0  6f 72 79 20 28 52 30 29  0a 0a 3c 3d 09 52 30 20  |ory (R0)..<=.R0 |
000427f0  3d 20 09 3c 74 65 72 72  69 74 6f 72 79 20 6e 75  |= .<territory nu|
00042800  6d 62 65 72 3d 3e 74 65  72 72 69 74 6f 72 79 5f  |mber=>territory_|
00042810  6e 75 6d 62 65 72 73 3e  2c 20 6f 72 20 30 20 69  |numbers>, or 0 i|
00042820  66 20 75 6e 6b 6e 6f 77  6e 0a 00 00 44 41 54 41  |f unknown...DATA|
00042830  0a 01 00 00 54 65 72 72  69 74 6f 72 79 5f 50 6c  |....Territory_Pl|
00042840  61 69 6e 54 61 62 6c 65  20 20 28 26 34 33 30 35  |ainTable  (&4305|
00042850  41 29 0a 23 50 61 72 65  6e 74 20 54 65 72 72 69  |A).#Parent Terri|
00042860  74 6f 72 79 5f 0a 3d 3e  09 52 30 20 3d 09 3c 74  |tory_.=>.R0 =.<t|
00042870  65 72 72 69 74 6f 72 79  20 6e 75 6d 62 65 72 3d  |erritory number=|
00042880  3e 54 65 72 72 69 74 6f  72 79 5f 6e 75 6d 62 65  |>Territory_numbe|
00042890  72 73 3e 2c 20 6f 72 20  2d 31 20 66 6f 72 20 63  |rs>, or -1 for c|
000428a0  75 72 72 65 6e 74 0a 0a  3c 3d 09 52 30 20 3d 09  |urrent..<=.R0 =.|
000428b0  70 6f 69 6e 74 65 72 20  74 6f 20 75 6e 61 63 63  |pointer to unacc|
000428c0  65 6e 74 65 64 20 63 68  61 72 61 63 74 65 72 20  |ented character |
000428d0  74 61 62 6c 65 0a 0a 41  20 63 68 61 72 61 63 74  |table..A charact|
000428e0  65 72 20 70 72 6f 70 65  72 74 79 20 74 61 62 6c  |er property tabl|
000428f0  65 20 69 73 20 61 20 32  35 36 20 62 79 74 65 20  |e is a 256 byte |
00042900  74 61 62 6c 65 20 67 69  76 69 6e 67 20 74 68 65  |table giving the|
00042910  20 75 6e 61 63 63 65 6e  74 65 64 20 76 65 72 73  | unaccented vers|
00042920  69 6f 6e 0a 6f 66 20 65  61 63 68 20 63 68 61 72  |ion.of each char|
00042930  61 63 74 65 72 2e 00 00  44 41 54 41 a7 02 00 00  |acter...DATA....|
00042940  54 65 72 72 69 74 6f 72  79 5f 52 65 61 64 43 61  |Territory_ReadCa|
00042950  6c 65 6e 64 61 72 49 6e  66 6f 72 6d 61 74 69 6f  |lendarInformatio|
00042960  6e 20 20 28 26 34 33 30  35 46 29 0a 23 50 61 72  |n  (&4305F).#Par|
00042970  65 6e 74 20 54 65 72 72  69 74 6f 72 79 5f 0a 3d  |ent Territory_.=|
00042980  3e 09 52 30 20 3d 09 3c  74 65 72 72 69 74 6f 72  |>.R0 =.<territor|
00042990  79 20 6e 75 6d 62 65 72  3d 3e 54 65 72 72 69 74  |y number=>Territ|
000429a0  6f 72 79 5f 6e 75 6d 62  65 72 73 3e 2c 20 6f 72  |ory_numbers>, or|
000429b0  20 2d 31 20 74 6f 20 75  73 65 20 63 75 72 72 65  | -1 to use curre|
000429c0  6e 74 20 74 65 72 72 69  74 6f 72 79 0a 09 52 31  |nt territory..R1|
000429d0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 35 20  | =.pointer to 5 |
000429e0  62 79 74 65 20 55 54 43  20 74 69 6d 65 0a 09 52  |byte UTC time..R|
000429f0  32 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 31  |2 =.pointer to 1|
00042a00  32 20 77 6f 72 64 20 62  75 66 66 65 72 0a 0a 3c  |2 word buffer..<|
00042a10  3d 09 52 30 2d 52 32 20  70 72 65 73 65 72 76 65  |=.R0-R2 preserve|
00042a20  64 0a 0a 4f 66 66 73 65  74 09 56 61 6c 75 65 0a  |d..Offset.Value.|
00042a30  23 4c 69 6e 65 0a 30 09  4e 75 6d 62 65 72 20 6f  |#Line.0.Number o|
00042a40  66 20 66 69 72 73 74 20  77 6f 72 6b 69 6e 67 20  |f first working |
00042a50  64 61 79 20 69 6e 20 74  68 65 20 77 65 65 6b 0a  |day in the week.|
00042a60  34 09 4e 75 6d 62 65 72  20 6f 66 20 6c 61 73 74  |4.Number of last|
00042a70  20 77 6f 72 6b 69 6e 67  20 64 61 79 20 69 6e 20  | working day in |
00042a80  74 68 65 20 77 65 65 6b  0a 38 09 4e 75 6d 62 65  |the week.8.Numbe|
00042a90  72 20 6f 66 20 6d 6f 6e  74 68 73 20 69 6e 20 74  |r of months in t|
00042aa0  68 65 20 63 75 72 72 65  6e 74 20 79 65 61 72 0a  |he current year.|
00042ab0  31 32 09 4e 75 6d 62 65  72 20 6f 66 20 64 61 79  |12.Number of day|
00042ac0  73 20 69 6e 20 74 68 65  20 63 75 72 72 65 6e 74  |s in the current|
00042ad0  20 6d 6f 6e 74 68 0a 31  36 09 4d 61 78 69 6d 75  | month.16.Maximu|
00042ae0  6d 20 6c 65 6e 67 74 68  20 6f 66 20 41 4d 2f 50  |m length of AM/P|
00042af0  4d 20 73 74 72 69 6e 67  0a 32 30 09 4d 61 78 69  |M string.20.Maxi|
00042b00  6d 75 6d 20 6c 65 6e 67  74 68 20 6f 66 20 57 45  |mum length of WE|
00042b10  20 73 74 72 69 6e 67 0a  32 34 09 4d 61 78 69 6d  | string.24.Maxim|
00042b20  75 6d 20 6c 65 6e 67 74  68 20 6f 66 20 57 33 20  |um length of W3 |
00042b30  73 74 72 69 6e 67 0a 32  38 09 4d 61 78 69 6d 75  |string.28.Maximu|
00042b40  6d 20 6c 65 6e 67 74 68  20 6f 66 20 44 59 20 73  |m length of DY s|
00042b50  74 72 69 6e 67 0a 33 32  09 4d 61 78 69 6d 75 6d  |tring.32.Maximum|
00042b60  20 6c 65 6e 67 74 68 20  6f 66 20 53 54 20 73 74  | length of ST st|
00042b70  72 69 6e 67 20 28 6d 61  79 20 62 65 20 7a 65 72  |ring (may be zer|
00042b80  6f 29 0a 33 36 09 4d 61  78 69 6d 75 6d 20 6c 65  |o).36.Maximum le|
00042b90  6e 67 74 68 20 6f 66 20  4d 4f 20 73 74 72 69 6e  |ngth of MO strin|
00042ba0  67 0a 34 30 09 4d 61 78  69 6d 75 6d 20 6c 65 6e  |g.40.Maximum len|
00042bb0  67 74 68 20 6f 66 20 4d  33 20 73 74 72 69 6e 67  |gth of M3 string|
00042bc0  0a 34 34 09 4d 61 78 69  6d 75 6d 20 6c 65 6e 67  |.44.Maximum leng|
00042bd0  74 68 20 6f 66 20 54 5a  20 73 74 72 69 6e 67 00  |th of TZ string.|
00042be0  44 41 54 41 3f 01 00 00  54 65 72 72 69 74 6f 72  |DATA?...Territor|
00042bf0  79 5f 52 65 70 72 65 73  65 6e 74 61 74 69 6f 6e  |y_Representation|
00042c00  54 61 62 6c 65 20 20 28  26 34 33 30 35 43 29 0a  |Table  (&4305C).|
00042c10  23 50 61 72 65 6e 74 20  54 65 72 72 69 74 6f 72  |#Parent Territor|
00042c20  79 5f 0a 3d 3e 09 52 30  20 3d 09 3c 74 65 72 72  |y_.=>.R0 =.<terr|
00042c30  69 74 6f 72 79 20 6e 75  6d 62 65 72 3d 3e 54 65  |itory number=>Te|
00042c40  72 72 69 74 6f 72 79 5f  6e 75 6d 62 65 72 73 3e  |rritory_numbers>|
00042c50  2c 20 6f 72 20 2d 31 20  66 6f 72 20 63 75 72 72  |, or -1 for curr|
00042c60  65 6e 74 0a 0a 3c 3d 09  52 30 20 3d 09 70 6f 69  |ent..<=.R0 =.poi|
00042c70  6e 74 65 72 20 74 6f 20  6e 75 6d 65 72 69 63 20  |nter to numeric |
00042c80  72 65 70 72 65 73 65 6e  74 61 74 69 6f 6e 20 74  |representation t|
00042c90  61 62 6c 65 0a 0a 41 20  63 68 61 72 61 63 74 65  |able..A characte|
00042ca0  72 20 70 72 6f 70 65 72  74 79 20 74 61 62 6c 65  |r property table|
00042cb0  20 69 73 20 61 20 31 36  20 62 79 74 65 20 74 61  | is a 16 byte ta|
00042cc0  62 6c 65 20 67 69 76 69  6e 67 20 74 68 65 20 31  |ble giving the 1|
00042cd0  36 20 63 68 61 72 61 63  74 65 72 73 0a 69 6e 20  |6 characters.in |
00042ce0  74 68 65 20 61 6c 70 68  61 62 65 74 20 77 68 69  |the alphabet whi|
00042cf0  63 68 20 73 68 6f 75 6c  64 20 62 65 20 75 73 65  |ch should be use|
00042d00  64 20 74 6f 20 72 65 70  72 65 73 65 6e 74 20 74  |d to represent t|
00042d10  68 65 20 76 61 6c 75 65  73 20 30 2d 31 35 2e 00  |he values 0-15..|
00042d20  44 41 54 41 93 00 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
00042d30  79 5f 53 65 6c 65 63 74  4b 65 79 62 6f 61 72 64  |y_SelectKeyboard|
00042d40  48 61 6e 64 6c 65 72 20  20 28 26 34 33 30 35 34  |Handler  (&43054|
00042d50  29 0a 23 50 61 72 65 6e  74 20 54 65 72 72 69 74  |).#Parent Territ|
00042d60  6f 72 79 5f 0a 3d 3e 09  52 30 20 3d 09 3c 74 65  |ory_.=>.R0 =.<te|
00042d70  72 72 69 74 6f 72 79 20  6e 75 6d 62 65 72 3d 3e  |rritory number=>|
00042d80  54 65 72 72 69 74 6f 72  79 5f 6e 75 6d 62 65 72  |Territory_number|
00042d90  73 3e 2c 20 6f 72 20 2d  31 20 74 6f 20 75 73 65  |s>, or -1 to use|
00042da0  20 63 75 72 72 65 6e 74  20 74 65 72 72 69 74 6f  | current territo|
00042db0  72 79 0a 00 44 41 54 41  6a 01 00 00 54 65 72 72  |ry..DATAj...Terr|
00042dc0  69 74 6f 72 79 5f 43 6f  6e 76 65 72 74 54 65 78  |itory_ConvertTex|
00042dd0  74 54 6f 53 74 72 69 6e  67 20 20 28 26 34 33 30  |tToString  (&430|
00042de0  36 31 29 0a 23 50 61 72  65 6e 74 20 54 65 72 72  |61).#Parent Terr|
00042df0  69 74 6f 72 79 5f 0a 3d  3e 09 52 30 20 3d 09 3c  |itory_.=>.R0 =.<|
00042e00  74 65 72 72 69 74 6f 72  79 20 6e 75 6d 62 65 72  |territory number|
00042e10  3d 3e 54 65 72 72 69 74  6f 72 79 5f 6e 75 6d 62  |=>Territory_numb|
00042e20  65 72 73 3e 2c 20 6f 72  20 2d 31 20 66 6f 72 20  |ers>, or -1 for |
00042e30  63 75 72 72 65 6e 74 0a  09 52 31 20 3d 09 70 6f  |current..R1 =.po|
00042e40  69 6e 74 65 72 20 74 6f  20 62 75 66 66 65 72 20  |inter to buffer |
00042e50  74 6f 20 68 6f 6c 64 20  74 72 61 6e 73 66 6f 72  |to hold transfor|
00042e60  6d 65 64 20 73 74 72 69  6e 67 0a 09 52 32 20 3d  |med string..R2 =|
00042e70  09 70 6f 69 6e 74 65 72  20 74 6f 20 73 6f 75 72  |.pointer to sour|
00042e80  63 65 20 73 74 72 69 6e  67 0a 09 52 33 20 3d 09  |ce string..R3 =.|
00042e90  6c 65 6e 67 74 68 20 6f  66 20 62 75 66 66 65 72  |length of buffer|
00042ea0  0a 0a 3c 3d 09 52 30 20  3d 09 6c 65 6e 67 74 68  |..<=.R0 =.length|
00042eb0  20 6f 66 20 74 72 61 6e  73 66 6f 72 6d 65 64 20  | of transformed |
00042ec0  73 74 72 69 6e 67 20 28  65 78 63 6c 2e 20 6e 75  |string (excl. nu|
00042ed0  6c 6c 29 0a 0a 54 72 61  6e 73 66 6f 72 6d 73 20  |ll)..Transforms |
00042ee0  61 20 73 74 72 69 6e 67  20 74 6f 20 61 6c 6c 6f  |a string to allo|
00042ef0  77 20 61 20 64 69 72 65  63 74 20 74 65 72 72 69  |w a direct terri|
00042f00  74 6f 72 79 20 69 6e 64  65 70 65 6e 64 65 6e 74  |tory independent|
00042f10  20 63 6f 6d 70 61 72 69  73 6f 6e 2e 0a 0a 00 00  | comparison.....|
00042f20  44 41 54 41 12 01 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
00042f30  79 5f 55 70 70 65 72 43  61 73 65 54 61 62 6c 65  |y_UpperCaseTable|
00042f40  20 20 28 26 34 33 30 35  38 29 0a 23 50 61 72 65  |  (&43058).#Pare|
00042f50  6e 74 20 54 65 72 72 69  74 6f 72 79 5f 0a 3d 3e  |nt Territory_.=>|
00042f60  09 52 30 20 3d 09 3c 74  65 72 72 69 74 6f 72 79  |.R0 =.<territory|
00042f70  20 6e 75 6d 62 65 72 3d  3e 54 65 72 72 69 74 6f  | number=>Territo|
00042f80  72 79 5f 6e 75 6d 62 65  72 73 3e 2c 20 6f 72 20  |ry_numbers>, or |
00042f90  2d 31 20 66 6f 72 20 63  75 72 72 65 6e 74 0a 0a  |-1 for current..|
00042fa0  3c 3d 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |<=.R0 =.pointer |
00042fb0  74 6f 20 75 70 70 65 72  20 63 61 73 65 20 74 61  |to upper case ta|
00042fc0  62 6c 65 0a 0a 41 20 63  68 61 72 61 63 74 65 72  |ble..A character|
00042fd0  20 70 72 6f 70 65 72 74  79 20 74 61 62 6c 65 20  | property table |
00042fe0  69 73 20 61 20 32 35 36  20 62 79 74 65 20 74 61  |is a 256 byte ta|
00042ff0  62 6c 65 20 77 69 74 68  20 74 68 65 20 75 70 70  |ble with the upp|
00043000  65 72 20 63 61 73 65 20  76 65 72 73 69 6f 6e 20  |er case version |
00043010  6f 66 0a 65 61 63 68 20  63 68 61 72 61 63 74 65  |of.each characte|
00043020  72 20 69 6e 20 74 68 65  20 61 6c 70 68 61 62 65  |r in the alphabe|
00043030  74 2e 00 00 44 41 54 41  7b 01 00 00 54 65 72 72  |t...DATA{...Terr|
00043040  69 74 6f 72 79 5f 56 61  6c 75 65 54 61 62 6c 65  |itory_ValueTable|
00043050  20 20 28 26 34 33 30 35  42 29 0a 23 50 61 72 65  |  (&4305B).#Pare|
00043060  6e 74 20 54 65 72 72 69  74 6f 72 79 5f 0a 3d 3e  |nt Territory_.=>|
00043070  09 52 30 20 3d 09 3c 74  65 72 72 69 74 6f 72 79  |.R0 =.<territory|
00043080  20 6e 75 6d 62 65 72 3d  3e 74 65 72 72 69 74 6f  | number=>territo|
00043090  72 79 5f 6e 75 6d 62 65  72 73 3e 2c 20 6f 72 20  |ry_numbers>, or |
000430a0  2d 31 20 66 6f 72 20 63  75 72 72 65 6e 74 0a 0a  |-1 for current..|
000430b0  3c 3d 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |<=.R0 =.pointer |
000430c0  74 6f 20 6e 75 6d 65 72  69 63 20 76 61 6c 75 65  |to numeric value|
000430d0  20 74 61 62 6c 65 0a 0a  41 20 63 68 61 72 61 63  | table..A charac|
000430e0  74 65 72 20 70 72 6f 70  65 72 74 79 20 74 61 62  |ter property tab|
000430f0  6c 65 20 69 73 20 61 20  32 35 36 20 62 79 74 65  |le is a 256 byte|
00043100  20 74 61 62 6c 65 20 67  69 76 69 6e 67 20 74 68  | table giving th|
00043110  65 20 6e 75 6d 65 72 69  63 20 76 61 6c 75 65 0a  |e numeric value.|
00043120  6f 66 20 65 61 63 68 20  63 68 61 72 61 63 74 65  |of each characte|
00043130  72 20 69 6e 20 74 68 65  20 67 69 76 65 6e 20 74  |r in the given t|
00043140  65 72 72 69 74 6f 72 79  27 73 20 61 6c 70 68 61  |erritory's alpha|
00043150  62 65 74 2e 20 54 68 69  73 20 69 6e 63 6c 75 64  |bet. This includ|
00043160  65 73 0a 6e 6f 6e 2d 64  65 63 69 6d 61 6c 20 6e  |es.non-decimal n|
00043170  75 6d 62 65 72 73 2c 20  68 65 6e 63 65 20 46 20  |umbers, hence F |
00043180  61 6e 64 20 66 20 68 61  76 65 20 61 20 76 61 6c  |and f have a val|
00043190  75 65 20 6f 66 20 31 35  2c 20 77 68 69 6c 65 20  |ue of 15, while |
000431a0  5a 20 68 61 73 20 6e 6f  20 76 61 6c 75 65 2e 00  |Z has no value..|
000431b0  44 41 54 41 a0 01 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
000431c0  79 5f 57 72 69 74 65 44  69 72 65 63 74 69 6f 6e  |y_WriteDirection|
000431d0  20 20 28 26 34 33 30 35  35 29 0a 23 50 61 72 65  |  (&43055).#Pare|
000431e0  6e 74 20 54 65 72 72 69  74 6f 72 79 5f 0a 3d 3e  |nt Territory_.=>|
000431f0  09 52 30 20 3d 20 3c 74  65 72 72 69 74 6f 72 79  |.R0 = <territory|
00043200  20 6e 75 6d 62 65 72 3d  3e 74 65 72 72 69 74 6f  | number=>territo|
00043210  72 79 5f 6e 75 6d 62 65  72 73 3e 2c 20 6f 72 20  |ry_numbers>, or |
00043220  2d 31 20 66 6f 72 20 63  75 72 72 65 6e 74 0a 0a  |-1 for current..|
00043230  3c 3d 09 52 30 20 3d 20  62 69 74 20 66 69 65 6c  |<=.R0 = bit fiel|
00043240  64 20 67 69 76 69 6e 67  20 77 72 69 74 65 20 64  |d giving write d|
00043250  69 72 65 63 74 69 6f 6e  0a 09 20 09 42 69 74 09  |irection.. .Bit.|
00043260  56 61 6c 75 65 09 4d 65  61 6e 69 6e 67 0a 09 20  |Value.Meaning.. |
00043270  09 30 09 30 09 4c 65 66  74 20 74 6f 20 72 69 67  |.0.0.Left to rig|
00043280  68 74 0a 09 20 09 20 09  31 09 52 69 67 68 74 20  |ht.. . .1.Right |
00043290  74 6f 20 6c 65 66 74 0a  09 20 09 31 09 30 09 54  |to left.. .1.0.T|
000432a0  6f 70 20 74 6f 20 62 6f  74 74 6f 6d 0a 09 20 09  |op to bottom.. .|
000432b0  20 09 31 09 42 6f 74 74  6f 6d 20 74 6f 20 74 6f  | .1.Bottom to to|
000432c0  70 0a 09 20 09 32 09 30  09 4c 69 6e 65 73 20 61  |p.. .2.0.Lines a|
000432d0  72 65 20 68 6f 72 69 7a  6f 6e 74 61 6c 0a 09 20  |re horizontal.. |
000432e0  09 20 09 31 09 4c 69 6e  65 73 20 61 72 65 20 76  |. .1.Lines are v|
000432f0  65 72 74 69 63 61 6c 0a  0a 54 68 69 73 20 53 57  |ertical..This SW|
00043300  49 20 69 73 20 75 73 65  64 20 74 6f 20 72 65 61  |I is used to rea|
00043310  64 20 74 68 65 20 64 69  72 65 63 74 69 6f 6e 20  |d the direction |
00043320  74 68 61 74 20 77 72 69  74 69 6e 67 20 61 70 70  |that writing app|
00043330  65 61 72 73 20 69 6e 20  61 20 70 61 72 74 69 63  |ears in a partic|
00043340  75 6c 61 72 20 74 65 72  72 69 74 6f 72 79 2e 0a  |ular territory..|
00043350  44 41 54 41 9e 01 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
00043360  79 5f 52 65 61 64 54 69  6d 65 5a 6f 6e 65 73 20  |y_ReadTimeZones |
00043370  20 28 26 34 33 30 34 41  29 0a 23 50 61 72 65 6e  | (&4304A).#Paren|
00043380  74 20 54 65 72 72 69 74  6f 72 79 5f 0a 3d 3e 09  |t Territory_.=>.|
00043390  52 30 20 3d 09 3c 74 65  72 72 69 74 6f 72 79 20  |R0 =.<territory |
000433a0  6e 75 6d 62 65 72 3d 3e  54 65 72 72 69 74 6f 72  |number=>Territor|
000433b0  79 5f 6e 75 6d 62 65 72  73 3e 2c 20 6f 72 20 2d  |y_numbers>, or -|
000433c0  31 20 74 6f 20 75 73 65  20 63 75 72 72 65 6e 74  |1 to use current|
000433d0  20 74 65 72 72 69 74 6f  72 79 0a 0a 3c 3d 09 52  | territory..<=.R|
000433e0  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 6e  |0 =.pointer to n|
000433f0  61 6d 65 20 6f 66 20 73  74 61 6e 64 61 72 64 20  |ame of standard |
00043400  74 69 6d 65 20 7a 6f 6e  65 20 66 6f 72 20 74 65  |time zone for te|
00043410  72 72 69 74 6f 72 79 0a  09 52 31 20 3d 09 70 6f  |rritory..R1 =.po|
00043420  69 6e 74 65 72 20 74 6f  20 6e 61 6d 65 20 6f 66  |inter to name of|
00043430  20 73 75 6d 6d 65 72 20  74 69 6d 65 0a 09 52 32  | summer time..R2|
00043440  20 3d 09 6f 66 66 73 65  74 20 66 72 6f 6d 20 55  | =.offset from U|
00043450  54 43 20 74 6f 20 73 74  61 6e 64 61 72 64 20 74  |TC to standard t|
00043460  69 6d 65 2c 20 69 6e 20  63 73 20 28 73 69 67 6e  |ime, in cs (sign|
00043470  65 64 20 33 32 2d 62 69  74 29 0a 09 52 33 20 3d  |ed 32-bit)..R3 =|
00043480  09 6f 66 66 73 65 74 20  66 72 6f 6d 20 55 54 43  |.offset from UTC|
00043490  20 74 6f 20 73 75 6d 6d  65 72 20 74 69 6d 65 2c  | to summer time,|
000434a0  20 69 6e 20 63 73 20 28  73 69 67 6e 65 64 20 33  | in cs (signed 3|
000434b0  32 2d 62 69 74 29 0a 0a  52 65 74 75 72 6e 73 20  |2-bit)..Returns |
000434c0  69 6e 66 6f 72 6d 61 74  69 6f 6e 20 6f 6e 20 74  |information on t|
000434d0  68 65 20 74 69 6d 65 20  7a 6f 6e 65 73 20 66 6f  |he time zones fo|
000434e0  72 20 61 20 74 65 72 72  69 74 6f 72 79 2e 00 00  |r a territory...|
000434f0  44 41 54 41 04 0a 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
00043500  79 5f 52 65 61 64 53 79  6d 62 6f 6c 73 20 20 28  |y_ReadSymbols  (|
00043510  26 34 33 30 34 45 29 0a  23 50 61 72 65 6e 74 20  |&4304E).#Parent |
00043520  54 65 72 72 69 74 6f 72  79 5f 0a 3d 3e 09 52 30  |Territory_.=>.R0|
00043530  20 3d 09 3c 74 65 72 72  69 74 6f 72 79 20 6e 75  | =.<territory nu|
00043540  6d 62 65 72 3d 3e 54 65  72 72 69 74 6f 72 79 5f  |mber=>Territory_|
00043550  6e 75 6d 62 65 72 73 3e  2c 20 6f 72 20 2d 31 20  |numbers>, or -1 |
00043560  74 6f 20 75 73 65 20 63  75 72 72 65 6e 74 20 74  |to use current t|
00043570  65 72 72 69 74 6f 72 79  0a 09 52 31 20 3d 09 72  |erritory..R1 =.r|
00043580  65 61 73 6f 6e 20 63 6f  64 65 0a 0a 3c 3d 09 52  |eason code..<=.R|
00043590  30 20 3d 20 09 72 65 71  75 65 73 74 65 64 20 76  |0 = .requested v|
000435a0  61 6c 75 65 0a 0a 43 6f  64 65 09 4d 65 61 6e 69  |alue..Code.Meani|
000435b0  6e 67 20 28 73 74 72 69  6e 67 73 20 61 72 65 20  |ng (strings are |
000435c0  6e 75 6c 6c 20 74 65 72  6d 69 6e 61 74 65 64 29  |null terminated)|
000435d0  0a 23 4c 69 6e 65 0a 30  09 50 6f 69 6e 74 65 72  |.#Line.0.Pointer|
000435e0  20 74 6f 20 64 65 63 69  6d 61 6c 20 70 6f 69 6e  | to decimal poin|
000435f0  74 20 73 74 72 69 6e 67  0a 31 09 50 6f 69 6e 74  |t string.1.Point|
00043600  65 72 20 74 6f 20 74 68  6f 75 73 61 6e 64 73 20  |er to thousands |
00043610  73 65 70 61 72 61 74 6f  72 0a 32 09 50 6f 69 6e  |separator.2.Poin|
00043620  74 65 72 20 74 6f 20 62  79 74 65 20 6c 69 73 74  |ter to byte list|
00043630  20 63 6f 6e 74 61 69 6e  69 6e 67 20 73 69 7a 65  | containing size|
00043640  20 6f 66 20 65 61 63 68  20 67 72 6f 75 70 20 6f  | of each group o|
00043650  66 20 64 69 67 69 74 73  0a 09 69 6e 20 66 6f 72  |f digits..in for|
00043660  6d 61 74 74 65 64 20 6e  6f 6e 2d 6d 6f 6e 65 74  |matted non-monet|
00043670  61 72 79 20 71 75 61 6e  74 69 74 69 65 73 20 28  |ary quantities (|
00043680  6c 65 61 73 74 20 73 69  67 6e 69 66 69 63 61 6e  |least significan|
00043690  74 20 66 69 72 73 74 29  2e 0a 09 20 09 32 35 35  |t first)... .255|
000436a0  09 6e 6f 20 66 75 72 74  68 65 72 20 67 72 6f 75  |.no further grou|
000436b0  70 69 6e 67 0a 09 20 09  30 09 72 65 70 65 61 74  |ping.. .0.repeat|
000436c0  20 6c 61 73 74 20 67 72  6f 75 70 69 6e 67 20 66  | last grouping f|
000436d0  6f 72 20 72 65 73 74 20  6f 66 20 6e 75 6d 62 65  |or rest of numbe|
000436e0  72 0a 09 20 09 6f 74 68  65 72 09 73 69 7a 65 20  |r.. .other.size |
000436f0  6f 66 20 63 75 72 72 65  6e 74 20 67 72 6f 75 70  |of current group|
00043700  3b 20 6e 65 78 74 20 62  79 74 65 20 63 6f 6e 74  |; next byte cont|
00043710  61 69 6e 73 20 73 69 7a  65 0a 09 20 09 20 09 6f  |ains size.. . .o|
00043720  66 20 6e 65 78 74 20 6d  6f 72 65 20 73 69 67 6e  |f next more sign|
00043730  69 66 69 63 61 6e 74 20  67 72 75 70 20 6f 66 20  |ificant grup of |
00043740  64 69 67 69 74 73 2e 0a  33 09 50 6f 69 6e 74 65  |digits..3.Pointe|
00043750  72 20 74 6f 20 69 6e 74  65 72 6e 61 74 69 6f 6e  |r to internation|
00043760  61 6c 20 63 75 72 72 65  6e 63 79 20 73 79 6d 62  |al currency symb|
00043770  6f 6c 0a 34 09 50 6f 69  6e 74 65 72 20 74 6f 20  |ol.4.Pointer to |
00043780  6c 6f 63 61 6c 20 63 75  72 72 65 6e 63 79 20 73  |local currency s|
00043790  79 6d 62 6f 6c 0a 35 09  50 6f 69 6e 74 65 72 20  |ymbol.5.Pointer |
000437a0  74 6f 20 6d 6f 6e 65 74  61 72 79 20 64 65 63 69  |to monetary deci|
000437b0  6d 61 6c 20 70 6f 69 6e  74 20 73 74 72 69 6e 67  |mal point string|
000437c0  0a 36 09 50 6f 69 6e 74  65 72 20 74 6f 20 6d 6f  |.6.Pointer to mo|
000437d0  6e 65 74 61 72 79 20 74  68 6f 75 73 61 6e 64 73  |netary thousands|
000437e0  20 73 65 70 61 72 61 74  6f 72 0a 37 09 50 6f 69  | separator.7.Poi|
000437f0  6e 74 65 72 20 74 6f 20  62 79 74 65 20 6c 69 73  |nter to byte lis|
00043800  74 20 63 6f 6e 74 61 69  6e 69 6e 67 20 73 69 7a  |t containing siz|
00043810  65 20 6f 66 20 65 61 63  68 20 67 72 6f 75 70 20  |e of each group |
00043820  6f 66 20 64 69 67 69 74  73 0a 09 69 6e 20 66 6f  |of digits..in fo|
00043830  72 6d 61 74 74 65 64 20  6d 6f 6e 65 74 61 72 79  |rmatted monetary|
00043840  20 71 75 61 6e 74 69 74  69 65 73 20 28 6c 65 61  | quantities (lea|
00043850  73 74 20 73 69 67 6e 69  66 69 63 61 6e 74 20 66  |st significant f|
00043860  69 72 73 74 29 2e 0a 09  20 09 32 35 35 09 6e 6f  |irst)... .255.no|
00043870  20 66 75 72 74 68 65 72  20 67 72 6f 75 70 69 6e  | further groupin|
00043880  67 0a 09 20 09 30 09 72  65 70 65 61 74 20 6c 61  |g.. .0.repeat la|
00043890  73 74 20 67 72 6f 75 70  69 6e 67 20 66 6f 72 20  |st grouping for |
000438a0  72 65 73 74 20 6f 66 20  6e 75 6d 62 65 72 0a 09  |rest of number..|
000438b0  20 09 6f 74 68 65 72 09  73 69 7a 65 20 6f 66 20  | .other.size of |
000438c0  63 75 72 72 65 6e 74 20  67 72 6f 75 70 3b 20 6e  |current group; n|
000438d0  65 78 74 20 62 79 74 65  20 63 6f 6e 74 61 69 6e  |ext byte contain|
000438e0  73 20 73 69 7a 65 0a 09  20 09 20 09 6f 66 20 6e  |s size.. . .of n|
000438f0  65 78 74 20 6d 6f 72 65  20 73 69 67 6e 69 66 69  |ext more signifi|
00043900  63 61 6e 74 20 67 72 75  70 20 6f 66 20 64 69 67  |cant grup of dig|
00043910  69 74 73 2e 0a 38 09 50  6f 69 6e 74 65 72 20 74  |its..8.Pointer t|
00043920  6f 20 70 6f 73 69 74 69  76 65 20 73 69 67 6e 20  |o positive sign |
00043930  75 73 65 64 20 66 6f 72  20 6d 6f 6e 65 74 61 72  |used for monetar|
00043940  79 20 71 75 61 6e 74 69  74 69 65 73 0a 39 09 50  |y quantities.9.P|
00043950  6f 69 6e 74 65 72 20 74  6f 20 6e 65 67 61 74 69  |ointer to negati|
00043960  76 65 20 73 69 67 6e 20  75 73 65 64 20 66 6f 72  |ve sign used for|
00043970  20 6d 6f 6e 65 74 61 72  79 20 71 75 61 6e 74 69  | monetary quanti|
00043980  74 69 65 73 0a 31 30 09  4e 75 6d 62 65 72 20 6f  |ties.10.Number o|
00043990  66 20 66 72 61 63 74 69  6f 6e 61 6c 20 64 69 67  |f fractional dig|
000439a0  69 74 73 20 74 6f 20 62  65 20 64 69 73 70 6c 61  |its to be displa|
000439b0  79 65 64 20 69 6e 20 61  20 66 6f 72 6d 61 74 74  |yed in a formatt|
000439c0  65 64 0a 09 69 6e 74 65  72 6e 61 74 69 6f 6e 61  |ed..internationa|
000439d0  6c 20 6d 6f 6e 65 74 61  72 79 20 71 75 61 6e 74  |l monetary quant|
000439e0  69 74 79 0a 31 31 09 4e  75 6d 62 65 72 20 6f 66  |ity.11.Number of|
000439f0  20 66 72 61 63 74 69 6f  6e 61 6c 20 64 69 67 69  | fractional digi|
00043a00  74 73 20 74 6f 20 62 65  20 64 69 73 70 6c 61 79  |ts to be display|
00043a10  65 64 20 69 6e 20 61 20  66 6f 72 6d 61 74 74 65  |ed in a formatte|
00043a20  64 0a 09 6d 6f 6e 65 74  61 72 79 20 71 75 61 6e  |d..monetary quan|
00043a30  74 69 74 79 0a 31 32 09  52 65 74 75 72 6e 20 66  |tity.12.Return f|
00043a40  6f 72 20 61 20 6e 6f 6e  2d 6e 65 67 61 74 69 76  |or a non-negativ|
00043a50  65 20 66 6f 72 6d 61 74  74 65 64 20 6d 6f 6e 65  |e formatted mone|
00043a60  74 61 72 79 20 71 75 61  6e 74 69 74 79 0a 09 20  |tary quantity.. |
00043a70  09 30 20 69 66 20 63 75  72 72 65 6e 63 79 20 73  |.0 if currency s|
00043a80  79 6d 62 6f 6c 20 70 72  65 63 65 64 65 73 20 76  |ymbol precedes v|
00043a90  61 6c 75 65 0a 09 20 09  31 20 69 66 20 63 75 72  |alue.. .1 if cur|
00043aa0  72 65 6e 63 79 20 73 79  6d 62 6f 6c 20 66 6f 6c  |rency symbol fol|
00043ab0  6c 6f 77 73 20 76 61 6c  75 65 0a 31 33 09 52 65  |lows value.13.Re|
00043ac0  74 75 72 6e 20 66 6f 72  20 61 20 6e 6f 6e 2d 6e  |turn for a non-n|
00043ad0  65 67 61 74 69 76 65 20  66 6f 72 6d 61 74 74 65  |egative formatte|
00043ae0  64 20 6d 6f 6e 65 74 61  72 79 20 71 75 61 6e 74  |d monetary quant|
00043af0  69 74 79 0a 09 20 09 30  20 69 66 20 61 20 73 70  |ity.. .0 if a sp|
00043b00  61 63 65 20 73 65 70 61  72 61 74 65 73 20 63 75  |ace separates cu|
00043b10  72 72 65 6e 63 79 20 73  79 6d 62 6f 6c 20 61 6e  |rrency symbol an|
00043b20  64 20 76 61 6c 75 65 0a  09 20 09 31 20 69 66 20  |d value.. .1 if |
00043b30  73 79 6d 62 6f 6c 20 61  6e 64 20 76 61 6c 75 65  |symbol and value|
00043b40  20 6e 6f 74 20 73 65 70  61 72 61 74 65 64 0a 31  | not separated.1|
00043b50  34 09 52 65 74 75 72 6e  20 66 6f 72 20 61 20 6e  |4.Return for a n|
00043b60  65 67 61 74 69 76 65 20  66 6f 72 6d 61 74 74 65  |egative formatte|
00043b70  64 20 6d 6f 6e 65 74 61  72 79 20 71 75 61 6e 74  |d monetary quant|
00043b80  69 74 79 0a 09 20 09 30  20 69 66 20 63 75 72 72  |ity.. .0 if curr|
00043b90  65 6e 63 79 20 73 79 6d  62 6f 6c 20 70 72 65 63  |ency symbol prec|
00043ba0  65 64 65 73 20 76 61 6c  75 65 0a 09 20 09 31 20  |edes value.. .1 |
00043bb0  69 66 20 63 75 72 72 65  6e 63 79 20 73 79 6d 62  |if currency symb|
00043bc0  6f 6c 20 66 6f 6c 6c 6f  77 73 20 76 61 6c 75 65  |ol follows value|
00043bd0  0a 31 35 09 52 65 74 75  72 6e 20 66 6f 72 20 61  |.15.Return for a|
00043be0  20 6e 65 67 61 74 69 76  65 20 66 6f 72 6d 61 74  | negative format|
00043bf0  74 65 64 20 6d 6f 6e 65  74 61 72 79 20 71 75 61  |ted monetary qua|
00043c00  6e 74 69 74 79 0a 09 20  09 30 20 69 66 20 61 20  |ntity.. .0 if a |
00043c10  73 70 61 63 65 20 73 65  70 61 72 61 74 65 73 20  |space separates |
00043c20  63 75 72 72 65 6e 63 79  20 73 79 6d 62 6f 6c 20  |currency symbol |
00043c30  61 6e 64 20 76 61 6c 75  65 0a 09 20 09 31 20 69  |and value.. .1 i|
00043c40  66 20 73 79 6d 62 6f 6c  20 61 6e 64 20 76 61 6c  |f symbol and val|
00043c50  75 65 20 6e 6f 74 20 73  65 70 61 72 61 74 65 64  |ue not separated|
00043c60  0a 31 36 09 52 65 74 75  72 6e 20 66 6f 72 20 61  |.16.Return for a|
00043c70  20 6e 6f 6e 2d 6e 65 67  61 74 69 76 65 20 66 6f  | non-negative fo|
00043c80  72 6d 61 74 74 65 64 20  6d 6f 6e 65 74 61 72 79  |rmatted monetary|
00043c90  20 71 75 61 6e 74 69 74  79 0a 09 20 09 30 20 69  | quantity.. .0 i|
00043ca0  66 20 70 61 72 65 6e 74  68 65 73 65 73 20 73 75  |f parentheses su|
00043cb0  72 72 6f 75 6e 64 20 73  79 6d 62 6f 6c 20 61 6e  |rround symbol an|
00043cc0  64 20 76 61 6c 75 65 0a  09 20 09 31 20 69 66 20  |d value.. .1 if |
00043cd0  74 68 65 20 73 69 67 6e  20 73 74 72 69 6e 67 20  |the sign string |
00043ce0  70 72 65 63 65 64 65 73  20 76 61 6c 75 65 20 61  |precedes value a|
00043cf0  6e 64 20 73 79 6d 62 6f  6c 0a 09 20 09 32 20 69  |nd symbol.. .2 i|
00043d00  66 20 74 68 65 20 73 69  67 6e 20 73 74 72 69 6e  |f the sign strin|
00043d10  67 20 66 6f 6c 6c 6f 77  73 20 76 61 6c 75 65 20  |g follows value |
00043d20  61 6e 64 20 73 79 6d 62  6f 6c 0a 09 20 09 33 20  |and symbol.. .3 |
00043d30  69 66 20 74 68 65 20 73  69 67 6e 20 73 74 72 69  |if the sign stri|
00043d40  6e 67 20 69 6d 6d 65 64  69 61 74 65 6c 79 20 70  |ng immediately p|
00043d50  72 65 63 65 64 65 73 20  74 68 65 20 73 79 6d 62  |recedes the symb|
00043d60  6f 6c 0a 09 20 09 34 20  69 66 20 74 68 65 20 73  |ol.. .4 if the s|
00043d70  69 67 6e 20 73 74 72 69  6e 67 20 69 6d 6d 65 64  |ign string immed|
00043d80  69 61 74 65 6c 79 20 66  6f 6c 6c 6f 77 73 20 74  |iately follows t|
00043d90  68 65 20 73 79 6d 62 6f  6c 0a 31 37 09 52 65 74  |he symbol.17.Ret|
00043da0  75 72 6e 20 66 6f 72 20  61 20 6e 65 67 61 74 69  |urn for a negati|
00043db0  76 65 20 66 6f 72 6d 61  74 74 65 64 20 6d 6f 6e  |ve formatted mon|
00043dc0  65 74 61 72 79 20 71 75  61 6e 74 69 74 79 0a 09  |etary quantity..|
00043dd0  20 09 30 20 69 66 20 70  61 72 65 6e 74 68 65 73  | .0 if parenthes|
00043de0  65 73 20 73 75 72 72 6f  75 6e 64 20 73 79 6d 62  |es surround symb|
00043df0  6f 6c 20 61 6e 64 20 76  61 6c 75 65 0a 09 20 09  |ol and value.. .|
00043e00  31 20 69 66 20 74 68 65  20 73 69 67 6e 20 73 74  |1 if the sign st|
00043e10  72 69 6e 67 20 70 72 65  63 65 64 65 73 20 76 61  |ring precedes va|
00043e20  6c 75 65 20 61 6e 64 20  73 79 6d 62 6f 6c 0a 09  |lue and symbol..|
00043e30  20 09 32 20 69 66 20 74  68 65 20 73 69 67 6e 20  | .2 if the sign |
00043e40  73 74 72 69 6e 67 20 66  6f 6c 6c 6f 77 73 20 76  |string follows v|
00043e50  61 6c 75 65 20 61 6e 64  20 73 79 6d 62 6f 6c 0a  |alue and symbol.|
00043e60  09 20 09 33 20 69 66 20  74 68 65 20 73 69 67 6e  |. .3 if the sign|
00043e70  20 73 74 72 69 6e 67 20  69 6d 6d 65 64 69 61 74  | string immediat|
00043e80  65 6c 79 20 70 72 65 63  65 64 65 73 20 74 68 65  |ely precedes the|
00043e90  20 73 79 6d 62 6f 6c 0a  09 20 09 34 20 69 66 20  | symbol.. .4 if |
00043ea0  74 68 65 20 73 69 67 6e  20 73 74 72 69 6e 67 20  |the sign string |
00043eb0  69 6d 6d 65 64 69 61 74  65 6c 79 20 66 6f 6c 6c  |immediately foll|
00043ec0  6f 77 73 20 74 68 65 20  73 79 6d 62 6f 6c 0a 31  |ows the symbol.1|
00043ed0  38 09 52 65 74 75 72 6e  20 70 6f 69 6e 74 65 72  |8.Return pointer|
00043ee0  20 74 6f 20 6c 69 73 74  20 73 65 70 61 72 61 74  | to list separat|
00043ef0  6f 72 0a 0a 44 49 52 24  d0 01 00 00 d0 01 00 00  |or..DIR$........|
00043f00  c4 40 04 00 48 ff ff ff  ad b9 29 0c ed 00 00 00  |.@..H.....).....|
00043f10  13 00 00 00 00 00 00 00  54 69 6d 65 54 6f 55 54  |........TimeToUT|
00043f20  43 4f 72 64 69 6e 61 6c  73 00 00 00 b4 41 04 00  |COrdinals....A..|
00043f30  48 ff ff ff ce 75 d7 08  88 00 00 00 03 00 00 00  |H....u..........|
00043f40  00 00 00 00 54 65 78 74  54 6f 53 74 72 69 6e 67  |....TextToString|
00043f50  00 00 00 00 3c 42 04 00  48 ff ff ff 6a 8b d7 08  |....<B..H...j...|
00043f60  f4 01 00 00 03 00 00 00  00 00 00 00 44 61 74 65  |............Date|
00043f70  41 6e 64 54 69 6d 65 00  30 44 04 00 48 ff ff ff  |AndTime.0D..H...|
00043f80  15 8c 29 0c 07 01 00 00  03 00 00 00 00 00 00 00  |..).............|
00043f90  4f 72 64 69 6e 61 6c 73  54 6f 54 69 6d 65 00 00  |OrdinalsToTime..|
00043fa0  38 45 04 00 48 ff ff ff  40 79 d7 08 86 01 00 00  |8E..H...@y......|
00043fb0  03 00 00 00 00 00 00 00  53 74 61 6e 64 61 72 64  |........Standard|
00043fc0  54 69 6d 65 00 00 00 00  c0 46 04 00 48 ff ff ff  |Time.....F..H...|
00043fd0  1c aa 29 0c ea 01 00 00  03 00 00 00 00 00 00 00  |..).............|
00043fe0  54 69 6d 65 53 74 72 69  6e 67 54 6f 4f 72 64 69  |TimeStringToOrdi|
00043ff0  6e 61 6c 73 00 00 00 00  ac 48 04 00 48 ff ff ff  |nals.....H..H...|
00044000  bb 53 29 0c 29 01 00 00  03 00 00 00 00 00 00 00  |.S).)...........|
00044010  54 69 6d 65 54 6f 4f 72  64 69 6e 61 6c 73 00 00  |TimeToOrdinals..|
00044020  d8 49 04 00 48 ff ff ff  bf 7f d7 08 86 01 00 00  |.I..H...........|
00044030  03 00 00 00 00 00 00 00  53 74 61 6e 64 61 72 64  |........Standard|
00044040  44 61 74 65 00 00 00 00  60 4b 04 00 48 ff ff ff  |Date....`K..H...|
00044050  32 7c d7 08 8d 01 00 00  03 00 00 00 00 00 00 00  |2|..............|
00044060  53 74 61 6e 64 61 72 64  44 61 74 65 41 6e 64 54  |StandardDateAndT|
00044070  69 6d 65 00 f0 4c 04 00  48 fd ff ff 48 71 29 0c  |ime..L..H...Hq).|
00044080  48 01 00 00 33 00 00 00  00 00 00 00 5f 74 69 6d  |H...3......._tim|
00044090  65 5f 62 6c 6f 63 6b 5f  6f 75 74 00 38 4e 04 00  |e_block_out.8N..|
000440a0  48 fd ff ff b0 85 29 0c  02 01 00 00 33 00 00 00  |H.....).....3...|
000440b0  00 00 00 00 5f 74 69 6d  65 5f 62 6c 6f 63 6b 5f  |...._time_block_|
000440c0  69 6e 00 00 44 41 54 41  ed 00 00 00 54 65 72 72  |in..DATA....Terr|
000440d0  69 74 6f 72 79 5f 43 6f  6e 76 65 72 74 54 69 6d  |itory_ConvertTim|
000440e0  65 54 6f 55 54 43 4f 72  64 69 6e 61 6c 73 20 20  |eToUTCOrdinals  |
000440f0  28 26 34 33 30 34 39 29  0a 23 50 61 72 65 6e 74  |(&43049).#Parent|
00044100  20 54 65 72 72 69 74 6f  72 79 5f 0a 3d 3e 09 52  | Territory_.=>.R|
00044110  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 35  |1 =.pointer to 5|
00044120  20 62 79 74 65 20 74 69  6d 65 20 62 6c 6f 63 6b  | byte time block|
00044130  0a 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R2 =.pointer t|
00044140  6f 20 62 75 66 66 65 72  20 74 6f 20 68 6f 6c 64  |o buffer to hold|
00044150  20 3c 72 65 73 75 6c 74  3d 3e 54 65 72 72 69 74  | <result=>Territ|
00044160  6f 72 79 5f 43 6f 6e 76  65 72 74 5f 74 69 6d 65  |ory_Convert_time|
00044170  5f 62 6c 6f 63 6b 5f 6f  75 74 3e 0a 09 0a 52 65  |_block_out>...Re|
00044180  74 75 72 6e 73 20 74 68  65 20 74 69 6d 65 20 62  |turns the time b|
00044190  6c 6f 63 6b 20 61 73 20  61 20 73 65 74 20 6f 66  |lock as a set of|
000441a0  20 75 73 65 66 75 6c 20  6e 75 6d 62 65 72 73 2e  | useful numbers.|
000441b0  0a 00 00 00 44 41 54 41  88 00 00 00 54 65 72 72  |....DATA....Terr|
000441c0  69 74 6f 72 79 5f 43 6f  6e 76 65 72 74 54 65 78  |itory_ConvertTex|
000441d0  74 54 6f 53 74 72 69 6e  67 20 20 28 26 37 33 30  |tToString  (&730|
000441e0  37 35 29 0a 23 50 61 72  65 6e 74 20 54 65 72 72  |75).#Parent Terr|
000441f0  69 74 6f 72 79 5f 0a 4e  6f 74 20 79 65 74 20 69  |itory_.Not yet i|
00044200  6d 70 6c 65 6d 65 6e 74  65 64 20 2d 20 72 65 74  |mplemented - ret|
00044210  75 72 6e 73 20 74 6f 20  63 61 6c 6c 65 72 20 77  |urns to caller w|
00044220  69 74 68 20 61 6c 6c 20  72 65 67 69 73 74 65 72  |ith all register|
00044230  73 20 70 72 65 73 65 72  76 65 64 2e 44 41 54 41  |s preserved.DATA|
00044240  f4 01 00 00 54 65 72 72  69 74 6f 72 79 5f 43 6f  |....Territory_Co|
00044250  6e 76 65 72 74 44 61 74  65 41 6e 64 54 69 6d 65  |nvertDateAndTime|
00044260  20 20 28 26 34 33 30 34  42 29 0a 23 50 61 72 65  |  (&4304B).#Pare|
00044270  6e 74 20 54 65 72 72 69  74 6f 72 79 5f 0a 3d 3e  |nt Territory_.=>|
00044280  09 52 30 20 3d 09 3c 74  65 72 72 69 74 6f 72 79  |.R0 =.<territory|
00044290  20 6e 75 6d 62 65 72 3d  3e 54 65 72 72 69 74 6f  | number=>Territo|
000442a0  72 79 5f 6e 75 6d 62 65  72 73 3e 2c 20 6f 72 20  |ry_numbers>, or |
000442b0  2d 31 20 66 6f 72 20 63  75 72 72 65 6e 74 0a 09  |-1 for current..|
000442c0  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
000442d0  35 20 62 79 74 65 20 55  54 43 20 74 69 6d 65 0a  |5 byte UTC time.|
000442e0  09 52 32 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R2 =.pointer to|
000442f0  20 6f 75 74 70 75 74 20  62 75 66 66 65 72 0a 09  | output buffer..|
00044300  52 33 20 3d 09 73 69 7a  65 20 6f 66 20 62 75 66  |R3 =.size of buf|
00044310  66 65 72 0a 09 52 34 20  3d 09 70 6f 69 6e 74 65  |fer..R4 =.pointe|
00044320  72 20 74 6f 20 6e 75 6c  6c 20 74 65 72 6d 69 6e  |r to null termin|
00044330  61 74 65 64 20 3c 66 6f  72 6d 61 74 20 73 74 72  |ated <format str|
00044340  69 6e 67 3d 3e 73 77 69  5f 64 61 74 65 66 6f 72  |ing=>swi_datefor|
00044350  6d 61 74 3e 0a 0a 3c 3d  09 52 30 20 3d 09 70 6f  |mat>..<=.R0 =.po|
00044360  69 6e 74 65 72 20 74 6f  20 62 75 66 66 65 72 20  |inter to buffer |
00044370  28 52 32 20 6f 6e 20 65  6e 74 72 79 29 0a 09 52  |(R2 on entry)..R|
00044380  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 74  |1 =.pointer to t|
00044390  65 72 6d 69 6e 61 74 69  6e 67 20 30 0a 09 52 32  |erminating 0..R2|
000443a0  20 3d 09 6e 75 6d 62 65  72 20 6f 66 20 62 79 74  | =.number of byt|
000443b0  65 73 20 66 72 65 65 20  69 6e 20 62 75 66 66 65  |es free in buffe|
000443c0  72 0a 09 52 33 20 3d 09  70 6f 69 6e 74 65 72 20  |r..R3 =.pointer |
000443d0  74 6f 20 66 6f 72 6d 61  74 20 73 74 72 69 6e 67  |to format string|
000443e0  20 28 52 34 20 6f 6e 20  65 6e 74 72 79 29 0a 09  | (R4 on entry)..|
000443f0  52 34 20 3d 09 70 72 65  73 65 72 76 65 64 0a 0a  |R4 =.preserved..|
00044400  52 65 73 75 6c 74 20 69  73 20 69 6e 20 6c 6f 63  |Result is in loc|
00044410  61 6c 20 74 69 6d 65 2c  20 6c 61 6e 67 75 61 67  |al time, languag|
00044420  65 2c 20 61 6e 64 20 61  6c 70 68 61 62 65 74 2e  |e, and alphabet.|
00044430  44 41 54 41 07 01 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
00044440  79 5f 43 6f 6e 76 65 72  74 4f 72 64 69 6e 61 6c  |y_ConvertOrdinal|
00044450  73 54 6f 54 69 6d 65 20  20 28 26 34 33 30 35 31  |sToTime  (&43051|
00044460  29 0a 23 50 61 72 65 6e  74 20 54 65 72 72 69 74  |).#Parent Territ|
00044470  6f 72 79 5f 0a 3d 3e 09  52 30 20 3d 09 3c 74 65  |ory_.=>.R0 =.<te|
00044480  72 72 69 74 6f 72 79 20  6e 75 6d 62 65 72 3d 3e  |rritory number=>|
00044490  54 65 72 72 69 74 6f 72  79 5f 6e 75 6d 62 65 72  |Territory_number|
000444a0  73 3e 2c 20 6f 72 20 2d  31 20 66 6f 72 20 63 75  |s>, or -1 for cu|
000444b0  72 72 65 6e 74 0a 09 52  31 20 3d 09 70 6f 69 6e  |rrent..R1 =.poin|
000444c0  74 65 72 20 74 6f 20 62  6c 6f 63 6b 20 74 6f 20  |ter to block to |
000444d0  68 6f 6c 64 20 35 20 62  79 74 65 20 55 54 43 20  |hold 5 byte UTC |
000444e0  74 69 6d 65 0a 09 52 32  20 3d 09 70 6f 69 6e 74  |time..R2 =.point|
000444f0  65 72 20 74 6f 20 3c 6f  72 64 69 6e 61 6c 73 3d  |er to <ordinals=|
00044500  3e 54 65 72 72 69 74 6f  72 79 5f 43 6f 6e 76 65  |>Territory_Conve|
00044510  72 74 5f 74 69 6d 65 5f  62 6c 6f 63 6b 5f 69 6e  |rt_time_block_in|
00044520  3e 0a 0a 3c 3d 09 52 31  2c 20 52 32 20 70 72 65  |>..<=.R1, R2 pre|
00044530  73 65 72 76 65 64 0a 00  44 41 54 41 86 01 00 00  |served..DATA....|
00044540  54 65 72 72 69 74 6f 72  79 5f 43 6f 6e 76 65 72  |Territory_Conver|
00044550  74 53 74 61 6e 64 61 72  64 54 69 6d 65 20 20 28  |tStandardTime  (|
00044560  26 34 33 30 34 45 29 0a  23 50 61 72 65 6e 74 20  |&4304E).#Parent |
00044570  54 65 72 72 69 74 6f 72  79 5f 0a 3d 3e 09 52 30  |Territory_.=>.R0|
00044580  20 3d 09 3c 74 65 72 72  69 74 6f 72 79 20 6e 75  | =.<territory nu|
00044590  6d 62 65 72 3d 3e 54 65  72 72 69 74 6f 72 79 5f  |mber=>Territory_|
000445a0  6e 75 6d 62 65 72 73 3e  2c 20 6f 72 20 2d 31 20  |numbers>, or -1 |
000445b0  66 6f 72 20 63 75 72 72  65 6e 74 0a 09 52 31 20  |for current..R1 |
000445c0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 35 20 62  |=.pointer to 5 b|
000445d0  79 74 65 20 55 54 43 20  74 69 6d 65 0a 09 52 32  |yte UTC time..R2|
000445e0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 6f 75  | =.pointer to ou|
000445f0  74 70 75 74 20 62 75 66  66 65 72 0a 09 52 33 20  |tput buffer..R3 |
00044600  3d 09 73 69 7a 65 20 6f  66 20 62 75 66 66 65 72  |=.size of buffer|
00044610  0a 0a 3c 3d 09 52 30 20  3d 09 70 6f 69 6e 74 65  |..<=.R0 =.pointe|
00044620  72 20 74 6f 20 62 75 66  66 65 72 20 28 52 32 20  |r to buffer (R2 |
00044630  6f 6e 20 65 6e 74 72 79  29 0a 09 52 31 20 3d 09  |on entry)..R1 =.|
00044640  70 6f 69 6e 74 65 72 20  74 6f 20 74 65 72 6d 69  |pointer to termi|
00044650  6e 61 74 69 6e 67 20 30  0a 09 52 32 20 3d 09 6e  |nating 0..R2 =.n|
00044660  75 6d 62 65 72 20 6f 66  20 62 79 74 65 73 20 66  |umber of bytes f|
00044670  72 65 65 20 69 6e 20 62  75 66 66 65 72 0a 09 52  |ree in buffer..R|
00044680  33 20 3d 09 70 72 65 73  65 72 76 65 64 0a 0a 52  |3 =.preserved..R|
00044690  65 73 75 6c 74 20 69 73  20 69 6e 20 6c 6f 63 61  |esult is in loca|
000446a0  6c 20 74 69 6d 65 2c 20  6c 61 6e 67 75 61 67 65  |l time, language|
000446b0  2c 20 61 6e 64 20 61 6c  70 68 61 62 65 74 00 00  |, and alphabet..|
000446c0  44 41 54 41 ea 01 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
000446d0  79 5f 43 6f 6e 76 65 72  74 54 69 6d 65 53 74 72  |y_ConvertTimeStr|
000446e0  69 6e 67 54 6f 4f 72 64  69 6e 61 6c 73 20 20 28  |ingToOrdinals  (|
000446f0  26 34 33 30 35 30 29 0a  23 50 61 72 65 6e 74 20  |&43050).#Parent |
00044700  54 65 72 72 69 74 6f 72  79 5f 0a 3d 3e 09 52 30  |Territory_.=>.R0|
00044710  20 3d 09 3c 74 65 72 72  69 74 6f 72 79 20 6e 75  | =.<territory nu|
00044720  6d 62 65 72 3d 3e 54 65  72 72 69 74 6f 72 79 5f  |mber=>Territory_|
00044730  6e 75 6d 62 65 72 73 3e  2c 20 6f 72 20 2d 31 20  |numbers>, or -1 |
00044740  66 6f 72 20 63 75 72 72  65 6e 74 0a 09 52 31 20  |for current..R1 |
00044750  3d 09 72 65 61 73 6f 6e  20 63 6f 64 65 20 6f 66  |=.reason code of|
00044760  20 66 6f 72 6d 61 74 20  73 74 72 69 6e 67 3a 0a  | format string:.|
00044770  09 20 09 31 20 3d 3e 20  25 32 34 3a 25 4d 49 3a  |. .1 => %24:%MI:|
00044780  25 53 45 0a 09 20 09 32  20 3d 3e 20 25 57 33 2c  |%SE.. .2 => %W3,|
00044790  20 25 44 59 2d 25 4d 33  2d 25 43 45 25 59 52 0a  | %DY-%M3-%CE%YR.|
000447a0  09 20 09 33 20 3d 3e 20  25 57 33 2c 20 25 44 59  |. .3 => %W3, %DY|
000447b0  2d 25 4d 33 2d 25 43 45  25 59 52 2e 25 32 34 3a  |-%M3-%CE%YR.%24:|
000447c0  25 4d 49 3a 25 53 45 0a  09 52 32 20 3d 09 70 6f  |%MI:%SE..R2 =.po|
000447d0  69 6e 74 65 72 20 74 6f  20 74 69 6d 65 20 73 74  |inter to time st|
000447e0  72 69 6e 67 0a 09 52 33  20 3d 09 70 6f 69 6e 74  |ring..R3 =.point|
000447f0  65 72 20 74 6f 20 62 75  66 66 65 72 20 74 6f 20  |er to buffer to |
00044800  68 6f 6c 64 20 3c 72 65  73 75 6c 74 3d 3e 54 65  |hold <result=>Te|
00044810  72 72 69 74 6f 72 79 5f  43 6f 6e 76 65 72 74 5f  |rritory_Convert_|
00044820  74 69 6d 65 5f 62 6c 6f  63 6b 5f 69 6e 3e 0a 0a  |time_block_in>..|
00044830  54 68 69 73 20 53 57 49  20 72 65 74 75 72 6e 73  |This SWI returns|
00044840  20 74 68 65 20 74 69 6d  65 20 62 6c 6f 63 6b 20  | the time block |
00044850  61 73 20 61 20 73 65 74  20 6f 66 20 75 73 65 66  |as a set of usef|
00044860  75 6c 20 6e 75 6d 62 65  72 73 2e 20 56 61 6c 75  |ul numbers. Valu|
00044870  65 73 20 6e 6f 74 20 70  61 73 73 65 64 20 69 6e  |es not passed in|
00044880  20 74 68 65 20 73 74 72  69 6e 67 20 61 72 65 20  | the string are |
00044890  61 73 73 69 67 6e 65 64  20 2d 31 20 69 6e 20 74  |assigned -1 in t|
000448a0  68 65 20 62 6c 6f 63 6b  2e 0a 00 00 44 41 54 41  |he block....DATA|
000448b0  29 01 00 00 54 65 72 72  69 74 6f 72 79 5f 43 6f  |)...Territory_Co|
000448c0  6e 76 65 72 74 54 69 6d  65 54 6f 4f 72 64 69 6e  |nvertTimeToOrdin|
000448d0  61 6c 73 20 20 28 26 34  33 30 34 46 29 0a 23 50  |als  (&4304F).#P|
000448e0  61 72 65 6e 74 20 54 65  72 72 69 74 6f 72 79 5f  |arent Territory_|
000448f0  0a 3d 3e 09 52 30 20 3d  09 3c 74 65 72 72 69 74  |.=>.R0 =.<territ|
00044900  6f 72 79 20 6e 75 6d 62  65 72 3d 3e 54 65 72 72  |ory number=>Terr|
00044910  69 74 6f 72 79 5f 6e 75  6d 62 65 72 73 3e 2c 20  |itory_numbers>, |
00044920  6f 72 20 2d 31 20 66 6f  72 20 63 75 72 72 65 6e  |or -1 for curren|
00044930  74 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |t..R1 =.pointer |
00044940  74 6f 20 35 20 62 79 74  65 20 74 69 6d 65 20 62  |to 5 byte time b|
00044950  6c 6f 63 6b 0a 09 52 32  20 3d 09 70 6f 69 6e 74  |lock..R2 =.point|
00044960  65 72 20 74 6f 20 62 75  66 66 65 72 20 74 6f 20  |er to buffer to |
00044970  68 6f 6c 64 20 3c 72 65  73 75 6c 74 3d 3e 54 65  |hold <result=>Te|
00044980  72 72 69 74 6f 72 79 5f  43 6f 6e 76 65 72 74 5f  |rritory_Convert_|
00044990  74 69 6d 65 5f 62 6c 6f  63 6b 5f 6f 75 74 3e 0a  |time_block_out>.|
000449a0  09 0a 52 65 74 75 72 6e  73 20 74 68 65 20 74 69  |..Returns the ti|
000449b0  6d 65 20 62 6c 6f 63 6b  20 61 73 20 61 20 73 65  |me block as a se|
000449c0  74 20 6f 66 20 75 73 65  66 75 6c 20 6e 75 6d 62  |t of useful numb|
000449d0  65 72 73 2e 0a 00 00 00  44 41 54 41 86 01 00 00  |ers.....DATA....|
000449e0  54 65 72 72 69 74 6f 72  79 5f 43 6f 6e 76 65 72  |Territory_Conver|
000449f0  74 53 74 61 6e 64 61 72  64 44 61 74 65 20 20 28  |tStandardDate  (|
00044a00  26 34 33 30 34 44 29 0a  23 50 61 72 65 6e 74 20  |&4304D).#Parent |
00044a10  54 65 72 72 69 74 6f 72  79 5f 0a 3d 3e 09 52 30  |Territory_.=>.R0|
00044a20  20 3d 09 3c 74 65 72 72  69 74 6f 72 79 20 6e 75  | =.<territory nu|
00044a30  6d 62 65 72 3d 3e 54 65  72 72 69 74 6f 72 79 5f  |mber=>Territory_|
00044a40  6e 75 6d 62 65 72 73 3e  2c 20 6f 72 20 2d 31 20  |numbers>, or -1 |
00044a50  66 6f 72 20 63 75 72 72  65 6e 74 0a 09 52 31 20  |for current..R1 |
00044a60  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 35 20 62  |=.pointer to 5 b|
00044a70  79 74 65 20 55 54 43 20  74 69 6d 65 0a 09 52 32  |yte UTC time..R2|
00044a80  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 6f 75  | =.pointer to ou|
00044a90  74 70 75 74 20 62 75 66  66 65 72 0a 09 52 33 20  |tput buffer..R3 |
00044aa0  3d 09 73 69 7a 65 20 6f  66 20 62 75 66 66 65 72  |=.size of buffer|
00044ab0  0a 0a 3c 3d 09 52 30 20  3d 09 70 6f 69 6e 74 65  |..<=.R0 =.pointe|
00044ac0  72 20 74 6f 20 62 75 66  66 65 72 20 28 52 32 20  |r to buffer (R2 |
00044ad0  6f 6e 20 65 6e 74 72 79  29 0a 09 52 31 20 3d 09  |on entry)..R1 =.|
00044ae0  70 6f 69 6e 74 65 72 20  74 6f 20 74 65 72 6d 69  |pointer to termi|
00044af0  6e 61 74 69 6e 67 20 30  0a 09 52 32 20 3d 09 6e  |nating 0..R2 =.n|
00044b00  75 6d 62 65 72 20 6f 66  20 62 79 74 65 73 20 66  |umber of bytes f|
00044b10  72 65 65 20 69 6e 20 62  75 66 66 65 72 0a 09 52  |ree in buffer..R|
00044b20  33 20 3d 09 70 72 65 73  65 72 76 65 64 0a 0a 52  |3 =.preserved..R|
00044b30  65 73 75 6c 74 20 69 73  20 69 6e 20 6c 6f 63 61  |esult is in loca|
00044b40  6c 20 74 69 6d 65 2c 20  6c 61 6e 67 75 61 67 65  |l time, language|
00044b50  2c 20 61 6e 64 20 61 6c  70 68 61 62 65 74 00 00  |, and alphabet..|
00044b60  44 41 54 41 8d 01 00 00  54 65 72 72 69 74 6f 72  |DATA....Territor|
00044b70  79 5f 43 6f 6e 76 65 72  74 53 74 61 6e 64 61 72  |y_ConvertStandar|
00044b80  64 44 61 74 65 41 6e 64  54 69 6d 65 20 20 28 26  |dDateAndTime  (&|
00044b90  34 33 30 34 43 29 0a 23  50 61 72 65 6e 74 20 54  |4304C).#Parent T|
00044ba0  65 72 72 69 74 6f 72 79  5f 0a 3d 3e 09 52 30 20  |erritory_.=>.R0 |
00044bb0  3d 09 3c 74 65 72 72 69  74 6f 72 79 20 6e 75 6d  |=.<territory num|
00044bc0  62 65 72 3d 3e 54 65 72  72 69 74 6f 72 79 5f 6e  |ber=>Territory_n|
00044bd0  75 6d 62 65 72 73 3e 2c  20 6f 72 20 2d 31 20 66  |umbers>, or -1 f|
00044be0  6f 72 20 63 75 72 72 65  6e 74 0a 09 52 31 20 3d  |or current..R1 =|
00044bf0  09 70 6f 69 6e 74 65 72  20 74 6f 20 35 20 62 79  |.pointer to 5 by|
00044c00  74 65 20 55 54 43 20 74  69 6d 65 0a 09 52 32 20  |te UTC time..R2 |
00044c10  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 6f 75 74  |=.pointer to out|
00044c20  70 75 74 20 62 75 66 66  65 72 0a 09 52 33 20 3d  |put buffer..R3 =|
00044c30  09 73 69 7a 65 20 6f 66  20 62 75 66 66 65 72 0a  |.size of buffer.|
00044c40  0a 3c 3d 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |.<=.R0 =.pointer|
00044c50  20 74 6f 20 62 75 66 66  65 72 20 28 52 32 20 6f  | to buffer (R2 o|
00044c60  6e 20 65 6e 74 72 79 29  0a 09 52 31 20 3d 09 70  |n entry)..R1 =.p|
00044c70  6f 69 6e 74 65 72 20 74  6f 20 74 65 72 6d 69 6e  |ointer to termin|
00044c80  61 74 69 6e 67 20 30 0a  09 52 32 20 3d 09 6e 75  |ating 0..R2 =.nu|
00044c90  6d 62 65 72 20 6f 66 20  62 79 74 65 73 20 66 72  |mber of bytes fr|
00044ca0  65 65 20 69 6e 20 62 75  66 66 65 72 0a 09 52 33  |ee in buffer..R3|
00044cb0  20 3d 09 70 72 65 73 65  72 76 65 64 0a 0a 52 65  | =.preserved..Re|
00044cc0  73 75 6c 74 20 69 73 20  69 6e 20 6c 6f 63 61 6c  |sult is in local|
00044cd0  20 74 69 6d 65 2c 20 6c  61 6e 67 75 61 67 65 2c  | time, language,|
00044ce0  20 61 6e 64 20 61 6c 70  68 61 62 65 74 00 00 00  | and alphabet...|
00044cf0  44 41 54 41 48 01 00 00  55 73 61 62 6c 65 20 74  |DATAH...Usable t|
00044d00  69 6d 65 20 62 6c 6f 63  6b 0a 23 50 61 72 65 6e  |ime block.#Paren|
00044d10  74 20 54 65 72 72 69 74  6f 72 79 5f 43 6f 6e 76  |t Territory_Conv|
00044d20  65 72 74 54 69 6d 65 54  6f 4f 72 64 69 6e 61 6c  |ertTimeToOrdinal|
00044d30  73 0a 4f 66 66 73 65 74  09 43 6f 6e 74 65 6e 74  |s.Offset.Content|
00044d40  73 09 09 42 61 73 65 20  76 61 6c 75 65 09 4e 6f  |s..Base value.No|
00044d50  74 65 73 0a 23 4c 69 6e  65 0a 30 09 63 65 6e 74  |tes.#Line.0.cent|
00044d60  69 73 65 63 6f 6e 64 0a  34 09 73 65 63 6f 6e 64  |isecond.4.second|
00044d70  0a 38 09 6d 69 6e 75 74  65 0a 43 09 68 6f 75 72  |.8.minute.C.hour|
00044d80  20 28 6f 75 74 20 6f 66  20 32 34 29 0a 31 30 09  | (out of 24).10.|
00044d90  64 61 79 20 77 69 74 68  69 6e 20 6d 6f 6e 74 68  |day within month|
00044da0  09 31 09 09 41 4e 53 49  20 61 6c 73 6f 20 75 73  |.1..ANSI also us|
00044db0  65 73 20 31 0a 31 34 09  6d 6f 6e 74 68 20 69 6e  |es 1.14.month in|
00044dc0  20 79 65 61 72 09 09 31  09 09 41 4e 53 49 20 75  | year..1..ANSI u|
00044dd0  73 65 73 20 30 0a 31 38  09 79 65 61 72 09 09 09  |ses 0.18.year...|
00044de0  30 09 09 41 4e 53 49 20  75 73 65 73 20 31 39 30  |0..ANSI uses 190|
00044df0  30 0a 31 43 09 64 61 79  20 6f 66 20 74 68 65 20  |0.1C.day of the |
00044e00  77 65 65 6b 09 09 31 09  09 41 4e 53 49 20 75 73  |week..1..ANSI us|
00044e10  65 73 20 30 0a 32 30 09  64 61 79 20 6f 66 20 74  |es 0.20.day of t|
00044e20  68 65 20 77 65 65 6b 09  09 31 09 09 41 4e 53 49  |he week..1..ANSI|
00044e30  20 75 73 65 73 20 30 0a  44 41 54 41 02 01 00 00  | uses 0.DATA....|
00044e40  55 73 61 62 6c 65 20 74  69 6d 65 20 62 6c 6f 63  |Usable time bloc|
00044e50  6b 0a 23 50 61 72 65 6e  74 20 54 65 72 72 69 74  |k.#Parent Territ|
00044e60  6f 72 79 5f 43 6f 6e 76  65 72 74 54 69 6d 65 54  |ory_ConvertTimeT|
00044e70  6f 4f 72 64 69 6e 61 6c  73 0a 4f 66 66 73 65 74  |oOrdinals.Offset|
00044e80  09 43 6f 6e 74 65 6e 74  73 09 09 42 61 73 65 20  |.Contents..Base |
00044e90  76 61 6c 75 65 09 4e 6f  74 65 73 0a 23 4c 69 6e  |value.Notes.#Lin|
00044ea0  65 0a 30 09 63 65 6e 74  69 73 65 63 6f 6e 64 0a  |e.0.centisecond.|
00044eb0  34 09 73 65 63 6f 6e 64  0a 38 09 6d 69 6e 75 74  |4.second.8.minut|
00044ec0  65 0a 43 09 68 6f 75 72  20 28 6f 75 74 20 6f 66  |e.C.hour (out of|
00044ed0  20 32 34 29 0a 31 30 09  64 61 79 20 77 69 74 68  | 24).10.day with|
00044ee0  69 6e 20 6d 6f 6e 74 68  09 31 09 09 41 4e 53 49  |in month.1..ANSI|
00044ef0  20 61 6c 73 6f 20 75 73  65 73 20 31 0a 31 34 09  | also uses 1.14.|
00044f00  6d 6f 6e 74 68 20 69 6e  20 79 65 61 72 09 09 31  |month in year..1|
00044f10  09 09 41 4e 53 49 20 75  73 65 73 20 30 0a 31 38  |..ANSI uses 0.18|
00044f20  09 79 65 61 72 09 09 09  30 09 09 41 4e 53 49 20  |.year...0..ANSI |
00044f30  75 73 65 73 20 31 39 30  30 0a 00 00 44 41 54 41  |uses 1900...DATA|
00044f40  ae 01 00 00 54 65 72 72  69 74 6f 72 79 20 6e 75  |....Territory nu|
00044f50  6d 62 65 72 73 0a 23 50  61 72 65 6e 74 20 54 65  |mbers.#Parent Te|
00044f60  72 72 69 74 6f 72 79 5f  0a 4e 75 6d 62 65 72 09  |rritory_.Number.|
00044f70  54 65 72 72 69 74 6f 72  79 0a 23 4c 69 6e 65 0a  |Territory.#Line.|
00044f80  31 09 55 4b 0a 32 09 4d  61 73 74 65 72 0a 33 09  |1.UK.2.Master.3.|
00044f90  43 6f 6d 70 61 63 74 0a  34 09 49 74 61 6c 79 0a  |Compact.4.Italy.|
00044fa0  35 09 53 70 61 69 6e 0a  36 09 46 72 61 6e 63 65  |5.Spain.6.France|
00044fb0  0a 37 09 47 65 72 6d 61  6e 79 0a 38 09 50 6f 72  |.7.Germany.8.Por|
00044fc0  74 75 67 61 6c 0a 39 09  45 73 70 65 72 61 6e 74  |tugal.9.Esperant|
00044fd0  6f 0a 31 30 09 47 72 65  65 63 65 0a 31 31 09 53  |o.10.Greece.11.S|
00044fe0  77 65 64 65 6e 0a 31 32  09 46 69 6e 6c 61 6e 64  |weden.12.Finland|
00044ff0  0a 31 33 09 55 6e 75 73  65 64 0a 31 34 09 44 65  |.13.Unused.14.De|
00045000  6e 6d 61 72 6b 0a 31 35  09 4e 6f 72 77 61 79 0a  |nmark.15.Norway.|
00045010  31 36 09 49 63 65 6c 61  6e 64 0a 31 37 09 43 61  |16.Iceland.17.Ca|
00045020  6e 61 64 61 31 0a 31 38  09 43 61 6e 61 64 61 32  |nada1.18.Canada2|
00045030  0a 31 39 09 43 61 6e 61  64 61 0a 32 30 09 54 75  |.19.Canada.20.Tu|
00045040  72 6b 65 79 0a 32 31 09  41 72 61 62 69 63 0a 32  |rkey.21.Arabic.2|
00045050  32 09 49 72 65 6c 61 6e  64 0a 32 33 09 48 6f 6e  |2.Ireland.23.Hon|
00045060  67 20 4b 6f 6e 67 0a 32  34 09 52 75 73 73 69 61  |g Kong.24.Russia|
00045070  0a 32 35 09 52 75 73 73  69 61 32 0a 32 36 09 49  |.25.Russia2.26.I|
00045080  73 72 61 65 6c 0a 32 37  09 4d 65 78 69 63 6f 0a  |srael.27.Mexico.|
00045090  32 38 09 4c 61 74 69 6e  41 6d 0a 34 38 09 55 53  |28.LatinAm.48.US|
000450a0  41 0a 0a 49 74 20 61 70  70 65 61 72 73 20 74 68  |A..It appears th|
000450b0  61 74 20 74 65 72 72 69  74 6f 72 79 20 61 6e 64  |at territory and|
000450c0  20 63 6f 75 6e 74 72 79  20 6e 75 6d 62 65 72 73  | country numbers|
000450d0  20 73 68 61 72 65 20 74  68 65 20 73 61 6d 65 20  | share the same |
000450e0  73 65 71 75 65 6e 63 65  2e 0a 00 00 44 41 54 41  |sequence....DATA|
000450f0  b3 00 00 00 41 6c 70 68  61 62 65 74 20 6e 75 6d  |....Alphabet num|
00045100  62 65 72 73 0a 23 50 61  72 65 6e 74 20 54 65 72  |bers.#Parent Ter|
00045110  72 69 74 6f 72 79 5f 0a  4e 75 6d 62 65 72 09 41  |ritory_.Number.A|
00045120  6c 70 68 61 62 65 74 0a  23 4c 69 6e 65 0a 31 30  |lphabet.#Line.10|
00045130  30 09 42 46 6f 6e 74 0a  31 30 31 09 4c 61 74 69  |0.BFont.101.Lati|
00045140  6e 31 0a 31 30 32 09 4c  61 74 69 6e 32 0a 31 30  |n1.102.Latin2.10|
00045150  33 09 4c 61 74 69 6e 33  0a 31 30 34 09 4c 61 74  |3.Latin3.104.Lat|
00045160  69 6e 34 0a 31 30 35 09  43 79 72 69 6c 6c 69 63  |in4.105.Cyrillic|
00045170  0a 31 30 36 09 41 72 61  62 69 63 0a 31 30 37 09  |.106.Arabic.107.|
00045180  47 72 65 65 6b 0a 31 30  38 09 48 65 62 72 65 77  |Greek.108.Hebrew|
00045190  0a 31 32 30 09 43 79 72  69 6c 6c 69 63 32 0a 00  |.120.Cyrillic2..|
000451a0  44 49 52 24 28 03 00 00  28 03 00 00 c8 54 04 00  |DIR$(...(....T..|
000451b0  48 fd ff ff 67 47 b8 17  43 01 00 00 13 00 00 00  |H...gG..C.......|
000451c0  00 00 00 00 21 52 6f 6f  74 00 00 00 0c 56 04 00  |....!Root....V..|
000451d0  48 ff ff ff 43 c8 d9 1b  1e 01 00 00 13 00 00 00  |H...C...........|
000451e0  00 00 00 00 43 6f 6e 76  65 72 74 44 61 74 65 00  |....ConvertDate.|
000451f0  2c 57 04 00 48 ff ff ff  f6 36 67 1a b8 01 00 00  |,W..H....6g.....|
00045200  13 00 00 00 00 00 00 00  44 6f 46 53 4f 70 00 00  |........DoFSOp..|
00045210  e4 58 04 00 48 ff ff ff  b6 31 67 1a f1 01 00 00  |.X..H....1g.....|
00045220  13 00 00 00 00 00 00 00  44 6f 46 53 4f 70 54 6f  |........DoFSOpTo|
00045230  47 69 76 65 6e 46 53 00  d8 5a 04 00 48 ff ff ff  |GivenFS..Z..H...|
00045240  86 49 bc 17 e4 00 00 00  13 00 00 00 00 00 00 00  |.I..............|
00045250  45 6e 61 62 6c 65 43 61  63 68 65 00 bc 5b 04 00  |EnableCache..[..|
00045260  48 ff ff ff bd c3 aa 20  c7 02 00 00 13 00 00 00  |H...... ........|
00045270  00 00 00 00 45 6e 75 6d  65 72 61 74 65 46 53 00  |....EnumerateFS.|
00045280  84 5e 04 00 48 ff ff ff  bb c7 aa 20 1a 03 00 00  |.^..H...... ....|
00045290  13 00 00 00 00 00 00 00  45 6e 75 6d 65 72 61 74  |........Enumerat|
000452a0  65 46 53 43 6f 6e 74 65  78 74 73 00 a0 61 04 00  |eFSContexts..a..|
000452b0  48 ff ff ff 30 cb aa 20  ad 02 00 00 13 00 00 00  |H...0.. ........|
000452c0  00 00 00 00 45 6e 75 6d  65 72 61 74 65 46 53 4c  |....EnumerateFSL|
000452d0  69 73 74 00 50 64 04 00  48 fd ff ff 37 08 b9 17  |ist.Pd..H...7...|
000452e0  98 00 00 00 13 00 00 00  00 00 00 00 66 73 62 6c  |............fsbl|
000452f0  6f 63 6b 00 e8 64 04 00  48 ff ff ff f6 fd bb 17  |ock..d..H.......|
00045300  55 02 00 00 13 00 00 00  00 00 00 00 47 65 74 4f  |U...........GetO|
00045310  62 6a 65 63 74 55 49 44  00 00 00 00 40 67 04 00  |bjectUID....@g..|
00045320  48 ff ff ff 53 dc 78 17  7e 00 00 00 13 00 00 00  |H...S.x.~.......|
00045330  00 00 00 00 52 65 61 64  43 75 72 72 65 6e 74 43  |....ReadCurrentC|
00045340  6f 6e 74 65 78 74 00 00  c0 67 04 00 48 ff ff ff  |ontext...g..H...|
00045350  b3 7d 78 17 40 01 00 00  13 00 00 00 00 00 00 00  |.}x.@...........|
00045360  52 65 61 64 46 53 4e 61  6d 65 00 00 00 69 04 00  |ReadFSName...i..|
00045370  48 ff ff ff ee 60 78 17  da 00 00 00 13 00 00 00  |H....`x.........|
00045380  00 00 00 00 52 65 61 64  46 53 4e 75 6d 62 65 72  |....ReadFSNumber|
00045390  00 00 00 00 dc 69 04 00  48 ff ff ff c5 2f 79 17  |.....i..H..../y.|
000453a0  12 01 00 00 13 00 00 00  00 00 00 00 52 65 61 64  |............Read|
000453b0  46 53 54 69 6d 65 6f 75  74 73 00 00 f0 6a 04 00  |FSTimeouts...j..|
000453c0  48 ff ff ff 8a 86 bb 17  5b 01 00 00 13 00 00 00  |H.......[.......|
000453d0  00 00 00 00 52 65 61 64  55 73 65 72 49 64 00 00  |....ReadUserId..|
000453e0  4c 6c 04 00 48 ff ff ff  29 eb 78 17 86 00 00 00  |Ll..H...).x.....|
000453f0  13 00 00 00 00 00 00 00  53 65 74 43 75 72 72 65  |........SetCurre|
00045400  6e 74 43 6f 6e 74 65 78  74 00 00 00 d4 6c 04 00  |ntContext....l..|
00045410  48 ff ff ff 18 c2 78 17  13 01 00 00 13 00 00 00  |H.....x.........|
00045420  00 00 00 00 53 65 74 46  53 4e 61 6d 65 00 00 00  |....SetFSName...|
00045430  e8 6d 04 00 48 ff ff ff  9b a4 78 17 f7 00 00 00  |.m..H.....x.....|
00045440  13 00 00 00 00 00 00 00  53 65 74 46 53 4e 75 6d  |........SetFSNum|
00045450  62 65 72 00 e0 6e 04 00  48 ff ff ff 2c 41 79 17  |ber..n..H...,Ay.|
00045460  10 01 00 00 13 00 00 00  00 00 00 00 53 65 74 46  |............SetF|
00045470  53 54 69 6d 65 6f 75 74  73 00 00 00 f0 6f 04 00  |STimeouts....o..|
00045480  48 ff ff ff ad d0 ba 17  0c 01 00 00 13 00 00 00  |H...............|
00045490  00 00 00 00 55 70 64 61  74 65 46 53 4c 69 73 74  |....UpdateFSList|
000454a0  00 00 00 00 fc 70 04 00  48 fd ff ff 9b 95 d9 1b  |.....p..H.......|
000454b0  68 02 00 00 13 00 00 00  00 00 00 00 74 69 6d 65  |h...........time|
000454c0  62 6c 6f 63 6b 00 00 00  44 41 54 41 43 01 00 00  |block...DATAC...|
000454d0  4e 65 74 46 53 0a 23 50  61 72 65 6e 74 20 21 52  |NetFS.#Parent !R|
000454e0  6f 6f 74 0a 23 50 72 65  66 69 78 20 4e 65 74 46  |oot.#Prefix NetF|
000454f0  53 5f 0a 3c 43 6f 6e 76  65 72 74 44 61 74 65 3e  |S_.<ConvertDate>|
00045500  0a 3c 44 6f 46 53 4f 70  3e 0a 3c 44 6f 46 53 4f  |.<DoFSOp>.<DoFSO|
00045510  70 54 6f 47 69 76 65 6e  46 53 3e 0a 3c 45 6e 61  |pToGivenFS>.<Ena|
00045520  62 6c 65 43 61 63 68 65  3e 0a 3c 45 6e 75 6d 65  |bleCache>.<Enume|
00045530  72 61 74 65 46 53 3e 0a  3c 45 6e 75 6d 65 72 61  |rateFS>.<Enumera|
00045540  74 65 46 53 43 6f 6e 74  65 78 74 73 3e 0a 3c 45  |teFSContexts>.<E|
00045550  6e 75 6d 65 72 61 74 65  46 53 4c 69 73 74 3e 0a  |numerateFSList>.|
00045560  3c 47 65 74 4f 62 6a 65  63 74 55 49 44 3e 0a 3c  |<GetObjectUID>.<|
00045570  52 65 61 64 43 75 72 72  65 6e 74 43 6f 6e 74 65  |ReadCurrentConte|
00045580  78 74 3e 0a 3c 52 65 61  64 46 53 4e 61 6d 65 3e  |xt>.<ReadFSName>|
00045590  0a 3c 52 65 61 64 46 53  4e 75 6d 62 65 72 3e 0a  |.<ReadFSNumber>.|
000455a0  3c 52 65 61 64 46 53 54  69 6d 65 6f 75 74 73 3e  |<ReadFSTimeouts>|
000455b0  0a 3c 52 65 61 64 55 73  65 72 49 64 3e 0a 3c 53  |.<ReadUserId>.<S|
000455c0  65 74 43 75 72 72 65 6e  74 43 6f 6e 74 65 78 74  |etCurrentContext|
000455d0  3e 0a 3c 53 65 74 46 53  4e 61 6d 65 3e 0a 3c 53  |>.<SetFSName>.<S|
000455e0  65 74 46 53 4e 75 6d 62  65 72 3e 0a 3c 53 65 74  |etFSNumber>.<Set|
000455f0  46 53 54 69 6d 65 6f 75  74 73 3e 0a 3c 55 70 64  |FSTimeouts>.<Upd|
00045600  61 74 65 46 53 4c 69 73  74 3e 0a 00 44 41 54 41  |ateFSList>..DATA|
00045610  1e 01 00 00 4e 65 74 46  53 5f 43 6f 6e 76 65 72  |....NetFS_Conver|
00045620  74 44 61 74 65 20 20 28  26 34 30 30 34 42 29 0a  |tDate  (&4004B).|
00045630  23 50 61 72 65 6e 74 20  4e 65 74 46 53 5f 0a 3d  |#Parent NetFS_.=|
00045640  3e 09 52 30 20 3d 09 70  6f 69 6e 74 65 72 20 74  |>.R0 =.pointer t|
00045650  6f 20 3c 66 69 6c 65 20  73 65 72 76 65 72 20 66  |o <file server f|
00045660  6f 72 6d 61 74 20 64 61  74 65 20 61 6e 64 20 74  |ormat date and t|
00045670  69 6d 65 3d 3e 4e 65 74  46 53 5f 74 69 6d 65 62  |ime=>NetFS_timeb|
00045680  6c 6f 63 6b 3e 0a 09 52  31 20 3d 09 70 6f 69 6e  |lock>..R1 =.poin|
00045690  74 65 72 20 74 6f 20 35  20 62 79 74 65 20 6f 75  |ter to 5 byte ou|
000456a0  74 70 75 74 20 62 75 66  66 65 72 0a 0a 54 68 69  |tput buffer..Thi|
000456b0  73 20 53 57 49 20 63 6f  6e 76 65 72 74 73 20 66  |s SWI converts f|
000456c0  72 6f 6d 20 61 20 35 20  62 79 74 65 20 3c 66 69  |rom a 5 byte <fi|
000456d0  6c 65 20 73 65 72 76 65  72 20 66 6f 72 6d 61 74  |le server format|
000456e0  20 64 61 74 65 20 61 6e  64 20 74 69 6d 65 3d 3e  | date and time=>|
000456f0  4e 65 74 46 53 5f 74 69  6d 65 62 6c 6f 63 6b 3e  |NetFS_timeblock>|
00045700  20 74 6f 20 61 20 73 74  61 6e 64 61 72 64 20 52  | to a standard R|
00045710  49 53 43 20 4f 53 20 35  20 62 79 74 65 20 74 69  |ISC OS 5 byte ti|
00045720  6d 65 20 62 6c 6f 63 6b  2e 0a 00 00 44 41 54 41  |me block....DATA|
00045730  b8 01 00 00 4e 65 74 46  53 5f 44 6f 46 53 4f 70  |....NetFS_DoFSOp|
00045740  20 20 28 26 34 30 30 34  38 29 0a 23 50 61 72 65  |  (&40048).#Pare|
00045750  6e 74 20 4e 65 74 46 53  5f 0a 3d 3e 09 52 30 20  |nt NetFS_.=>.R0 |
00045760  3d 09 66 69 6c 65 20 73  65 72 76 65 72 20 66 75  |=.file server fu|
00045770  6e 63 74 69 6f 6e 0a 09  52 31 20 3d 09 62 75 66  |nction..R1 =.buf|
00045780  66 65 72 0a 09 52 32 20  3d 09 6e 75 6d 62 65 72  |fer..R2 =.number|
00045790  20 6f 66 20 62 79 74 65  73 20 74 6f 20 73 65 6e  | of bytes to sen|
000457a0  64 20 66 72 6f 6d 20 62  75 66 66 65 72 20 74 6f  |d from buffer to|
000457b0  20 66 69 6c 65 20 73 65  72 76 65 72 0a 09 52 33  | file server..R3|
000457c0  20 3d 09 74 6f 74 61 6c  20 73 69 7a 65 20 6f 66  | =.total size of|
000457d0  20 62 75 66 66 65 72 0a  3c 3d 09 52 30 20 3d 09  | buffer.<=.R0 =.|
000457e0  72 65 74 75 72 6e 20 63  6f 6e 64 69 74 69 6f 6e  |return condition|
000457f0  20 66 72 6f 6d 20 66 69  6c 65 20 73 65 72 76 65  | from file serve|
00045800  72 0a 09 52 33 20 3d 09  6e 75 6d 62 65 72 20 6f  |r..R3 =.number o|
00045810  66 20 62 79 74 65 73 20  77 72 69 74 74 65 6e 20  |f bytes written |
00045820  74 6f 20 62 75 66 66 65  72 20 62 79 20 66 69 6c  |to buffer by fil|
00045830  65 20 73 65 72 76 65 72  0a 0a 54 68 69 73 20 53  |e server..This S|
00045840  57 49 20 63 6f 6d 6d 61  6e 64 73 20 74 68 65 20  |WI commands the |
00045850  66 69 6c 65 20 73 65 72  76 65 72 20 74 6f 20 70  |file server to p|
00045860  65 72 66 6f 72 6d 20 74  68 65 20 66 75 6e 63 74  |erform the funct|
00045870  69 6f 6e 20 69 6e 20 52  30 2e 20 49 66 20 61 6e  |ion in R0. If an|
00045880  20 65 72 72 6f 72 20 69  73 20 72 65 74 75 72 6e  | error is return|
00045890  65 64 20 79 6f 75 20 73  68 6f 75 6c 64 20 63 6f  |ed you should co|
000458a0  70 79 20 69 74 2c 20 61  73 20 69 74 73 20 62 75  |py it, as its bu|
000458b0  66 66 65 72 20 6d 61 79  20 62 65 20 6f 76 65 72  |ffer may be over|
000458c0  77 72 69 74 74 65 6e 20  62 79 20 73 75 62 73 65  |written by subse|
000458d0  71 75 65 6e 74 20 75 73  65 20 6f 66 20 4e 65 74  |quent use of Net|
000458e0  46 53 2e 0a 44 41 54 41  f1 01 00 00 4e 65 74 46  |FS..DATA....NetF|
000458f0  53 5f 44 6f 46 53 4f 70  54 6f 47 69 76 65 6e 46  |S_DoFSOpToGivenF|
00045900  53 20 20 28 26 34 30 30  34 43 29 0a 23 50 61 72  |S  (&4004C).#Par|
00045910  65 6e 74 20 4e 65 74 46  53 5f 0a 3d 3e 09 52 30  |ent NetFS_.=>.R0|
00045920  20 3d 09 66 69 6c 65 20  73 65 72 76 65 72 20 66  | =.file server f|
00045930  75 6e 63 74 69 6f 6e 0a  09 52 31 20 3d 09 62 75  |unction..R1 =.bu|
00045940  66 66 65 72 0a 09 52 32  20 3d 09 6e 75 6d 62 65  |ffer..R2 =.numbe|
00045950  72 20 6f 66 20 62 79 74  65 73 20 74 6f 20 73 65  |r of bytes to se|
00045960  6e 64 20 66 72 6f 6d 20  62 75 66 66 65 72 20 74  |nd from buffer t|
00045970  6f 20 66 69 6c 65 20 73  65 72 76 65 72 0a 09 52  |o file server..R|
00045980  33 20 3d 09 74 6f 74 61  6c 20 73 69 7a 65 20 6f  |3 =.total size o|
00045990  66 20 62 75 66 66 65 72  0a 09 52 34 20 3d 09 73  |f buffer..R4 =.s|
000459a0  74 61 74 69 6f 6e 20 6e  75 6d 62 65 72 0a 09 52  |tation number..R|
000459b0  35 20 3d 09 6e 65 74 20  6e 75 6d 62 65 72 0a 3c  |5 =.net number.<|
000459c0  3d 09 52 30 20 3d 09 72  65 74 75 72 6e 20 63 6f  |=.R0 =.return co|
000459d0  6e 64 69 74 69 6f 6e 20  66 72 6f 6d 20 66 69 6c  |ndition from fil|
000459e0  65 20 73 65 72 76 65 72  0a 09 52 33 20 3d 09 6e  |e server..R3 =.n|
000459f0  75 6d 62 65 72 20 6f 66  20 62 79 74 65 73 20 77  |umber of bytes w|
00045a00  72 69 74 74 65 6e 20 74  6f 20 62 75 66 66 65 72  |ritten to buffer|
00045a10  20 62 79 20 66 69 6c 65  20 73 65 72 76 65 72 0a  | by file server.|
00045a20  0a 54 68 69 73 20 53 57  49 20 63 6f 6d 6d 61 6e  |.This SWI comman|
00045a30  64 73 20 74 68 65 20 73  70 65 63 69 66 69 65 64  |ds the specified|
00045a40  20 66 69 6c 65 20 73 65  72 76 65 72 20 74 6f 20  | file server to |
00045a50  70 65 72 66 6f 72 6d 20  74 68 65 20 66 75 6e 63  |perform the func|
00045a60  74 69 6f 6e 20 69 6e 20  52 30 2e 20 49 66 20 61  |tion in R0. If a|
00045a70  6e 20 65 72 72 6f 72 20  69 73 20 72 65 74 75 72  |n error is retur|
00045a80  6e 65 64 20 79 6f 75 20  73 68 6f 75 6c 64 20 63  |ned you should c|
00045a90  6f 70 79 20 69 74 2c 20  61 73 20 69 74 73 20 62  |opy it, as its b|
00045aa0  75 66 66 65 72 20 6d 61  79 20 62 65 20 6f 76 65  |uffer may be ove|
00045ab0  72 77 72 69 74 74 65 6e  20 62 79 20 73 75 62 73  |rwritten by subs|
00045ac0  65 71 75 65 6e 74 20 75  73 65 20 6f 66 20 4e 65  |equent use of Ne|
00045ad0  74 46 53 2e 0a 00 00 00  44 41 54 41 e4 00 00 00  |tFS.....DATA....|
00045ae0  4e 65 74 46 53 5f 45 6e  61 62 6c 65 43 61 63 68  |NetFS_EnableCach|
00045af0  65 20 20 28 26 34 30 30  35 31 29 0a 23 50 61 72  |e  (&40051).#Par|
00045b00  65 6e 74 20 4e 65 74 46  53 5f 0a 0a 54 68 69 73  |ent NetFS_..This|
00045b10  20 53 57 49 20 72 65 73  74 61 72 74 73 20 74 68  | SWI restarts th|
00045b20  65 20 61 75 74 6f 6d 61  74 69 63 20 75 70 64 61  |e automatic upda|
00045b30  74 65 20 6f 66 20 74 68  65 20 6c 69 73 74 20 6f  |te of the list o|
00045b40  66 20 66 69 6c 65 73 65  72 76 65 72 73 2c 20 77  |f fileservers, w|
00045b50  68 69 63 68 20 69 73 20  61 75 74 6f 6d 61 74 69  |hich is automati|
00045b60  63 6c 79 20 73 75 73 70  65 6e 64 65 64 20 77 68  |cly suspended wh|
00045b70  65 6e 20 3c 4e 65 74 46  53 5f 45 6e 75 6d 65 72  |en <NetFS_Enumer|
00045b80  61 74 65 46 53 4c 69 73  74 3e 20 69 73 20 63 61  |ateFSList> is ca|
00045b90  6c 6c 65 64 2e 0a 23 20  4e 6f 74 20 45 6e 75 6d  |lled..# Not Enum|
00045ba0  65 72 61 74 65 46 53 2c  20 61 73 20 74 68 65 20  |erateFS, as the |
00045bb0  32 2d 33 36 39 20 73 61  79 73 2e 0a 44 41 54 41  |2-369 says..DATA|
00045bc0  c7 02 00 00 4e 65 74 46  53 5f 45 6e 75 6d 65 72  |....NetFS_Enumer|
00045bd0  61 74 65 46 53 20 20 28  26 34 30 30 34 41 29 0a  |ateFS  (&4004A).|
00045be0  23 50 61 72 65 6e 74 20  4e 65 74 46 53 5f 0a 3d  |#Parent NetFS_.=|
00045bf0  3e 09 52 30 20 3d 09 6f  66 66 73 65 74 20 69 6e  |>.R0 =.offset in|
00045c00  20 66 69 6c 65 20 73 65  72 76 65 72 20 6c 69 73  | file server lis|
00045c10  74 20 6f 66 20 66 69 72  73 74 20 69 74 65 6d 20  |t of first item |
00045c20  74 6f 20 72 65 61 64 0a  09 52 31 20 3d 09 70 6f  |to read..R1 =.po|
00045c30  69 6e 74 65 72 20 74 6f  20 62 75 66 66 65 72 0a  |inter to buffer.|
00045c40  09 52 32 20 3d 09 73 69  7a 65 20 6f 66 20 62 75  |.R2 =.size of bu|
00045c50  66 66 65 72 0a 09 52 33  20 3d 09 6e 75 6d 62 65  |ffer..R3 =.numbe|
00045c60  72 20 6f 66 20 69 74 65  6d 73 20 74 6f 20 72 65  |r of items to re|
00045c70  61 64 0a 3c 3d 09 52 30  20 3d 09 6f 66 66 73 65  |ad.<=.R0 =.offse|
00045c80  74 20 6f 66 20 6e 65 78  74 20 69 74 65 6d 20 74  |t of next item t|
00045c90  6f 20 72 65 61 64 2c 20  6f 72 20 2d 31 20 69 66  |o read, or -1 if|
00045ca0  20 66 69 6e 69 73 68 65  64 0a 09 52 33 20 3d 09  | finished..R3 =.|
00045cb0  6e 75 6d 62 65 72 20 6f  66 20 69 74 65 6d 73 20  |number of items |
00045cc0  72 65 61 64 0a 0a 54 68  69 73 20 53 57 49 20 69  |read..This SWI i|
00045cd0  73 20 75 73 65 64 20 74  6f 20 6c 69 73 74 20 69  |s used to list i|
00045ce0  6e 66 6f 72 6d 61 74 69  6f 6e 20 61 62 6f 75 74  |nformation about|
00045cf0  20 66 69 6c 65 20 73 65  72 76 65 72 73 20 77 68  | file servers wh|
00045d00  69 63 68 20 4e 65 74 46  53 20 69 73 20 63 75 72  |ich NetFS is cur|
00045d10  72 65 6e 74 6c 79 20 6c  6f 67 67 65 64 20 6f 6e  |rently logged on|
00045d20  20 74 6f 20 2d 20 73 69  6d 69 6c 61 72 20 74 68  | to - similar th|
00045d30  65 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 20 72 65  |e information re|
00045d40  74 75 72 6e 65 64 20 62  79 20 74 68 65 20 7b 66  |turned by the {f|
00045d50  43 6f 64 65 7d 2a 46 53  7b 66 7d 20 63 6f 6d 6d  |Code}*FS{f} comm|
00045d60  61 6e 64 20 77 69 74 68  20 6e 6f 20 70 61 72 61  |and with no para|
00045d70  6d 65 74 65 72 73 2e 20  54 68 65 20 69 6e 66 6f  |meters. The info|
00045d80  72 6d 61 74 69 6f 6e 20  69 73 20 72 65 74 75 72  |rmation is retur|
00045d90  6e 65 64 20 61 73 20 61  20 73 65 72 69 65 73 20  |ned as a series |
00045da0  6f 66 20 3c 32 30 20 62  79 74 65 20 62 6c 6f 63  |of <20 byte bloc|
00045db0  6b 73 3d 3e 4e 65 74 46  53 5f 66 73 62 6c 6f 63  |ks=>NetFS_fsbloc|
00045dc0  6b 3e 20 2d 20 69 66 20  79 6f 75 20 61 72 65 20  |k> - if you are |
00045dd0  6c 6f 67 67 65 64 20 6f  6e 20 74 6f 20 79 6f 75  |logged on to you|
00045de0  72 20 63 75 72 72 65 6e  74 20 66 69 6c 65 20 73  |r current file s|
00045df0  65 72 76 65 72 20 69 74  20 77 69 6c 6c 20 62 65  |erver it will be|
00045e00  20 72 65 74 75 72 6e 65  64 20 6c 61 73 74 2e 20  | returned last. |
00045e10  41 70 61 72 74 20 66 72  6f 6d 20 74 68 69 73 20  |Apart from this |
00045e20  74 68 65 20 6f 72 64 65  72 20 69 73 20 75 6e 64  |the order is und|
00045e30  65 66 69 6e 65 64 2e 20  54 6f 20 72 65 74 75 72  |efined. To retur|
00045e40  6e 20 75 73 65 72 20 49  44 20 69 6e 66 6f 72 6d  |n user ID inform|
00045e50  61 74 69 6f 6e 20 69 6e  20 74 68 65 20 6c 69 73  |ation in the lis|
00045e60  74 20 75 73 65 20 3c 4e  65 74 46 53 5f 45 6e 75  |t use <NetFS_Enu|
00045e70  6d 65 72 61 74 65 46 53  43 6f 6e 74 65 78 74 73  |merateFSContexts|
00045e80  3e 2e 0a 00 44 41 54 41  1a 03 00 00 4e 65 74 46  |>...DATA....NetF|
00045e90  53 5f 45 6e 75 6d 65 72  61 74 65 46 53 43 6f 6e  |S_EnumerateFSCon|
00045ea0  74 65 78 74 73 20 20 28  26 34 30 30 34 45 29 0a  |texts  (&4004E).|
00045eb0  23 50 61 72 65 6e 74 20  4e 65 74 46 53 5f 0a 3d  |#Parent NetFS_.=|
00045ec0  3e 09 52 30 20 3d 09 6f  66 66 73 65 74 20 69 6e  |>.R0 =.offset in|
00045ed0  20 66 69 6c 65 20 73 65  72 76 65 72 20 6c 69 73  | file server lis|
00045ee0  74 20 6f 66 20 66 69 72  73 74 20 69 74 65 6d 20  |t of first item |
00045ef0  74 6f 20 72 65 61 64 0a  09 52 31 20 3d 09 70 6f  |to read..R1 =.po|
00045f00  69 6e 74 65 72 20 74 6f  20 62 75 66 66 65 72 0a  |inter to buffer.|
00045f10  09 52 32 20 3d 09 73 69  7a 65 20 6f 66 20 62 75  |.R2 =.size of bu|
00045f20  66 66 65 72 0a 09 52 33  20 3d 09 6e 75 6d 62 65  |ffer..R3 =.numbe|
00045f30  72 20 6f 66 20 69 74 65  6d 73 20 74 6f 20 72 65  |r of items to re|
00045f40  61 64 0a 3c 3d 09 52 30  20 3d 09 6f 66 66 73 65  |ad.<=.R0 =.offse|
00045f50  74 20 6f 66 20 6e 65 78  74 20 69 74 65 6d 20 74  |t of next item t|
00045f60  6f 20 72 65 61 64 2c 20  6f 72 20 2d 31 20 69 66  |o read, or -1 if|
00045f70  20 66 69 6e 69 73 68 65  64 0a 09 52 32 20 3d 09  | finished..R2 =.|
00045f80  73 70 61 63 65 20 72 65  6d 61 69 6e 69 6e 67 20  |space remaining |
00045f90  69 6e 20 62 75 66 66 65  72 0a 09 52 33 20 3d 09  |in buffer..R3 =.|
00045fa0  6e 75 6d 62 65 72 20 6f  66 20 69 74 65 6d 73 20  |number of items |
00045fb0  72 65 61 64 0a 0a 54 68  69 73 20 53 57 49 20 69  |read..This SWI i|
00045fc0  73 20 75 73 65 64 20 74  6f 20 6c 69 73 74 20 69  |s used to list i|
00045fd0  6e 66 6f 72 6d 61 74 69  6f 6e 20 61 62 6f 75 74  |nformation about|
00045fe0  20 66 69 6c 65 20 73 65  72 76 65 72 73 20 77 68  | file servers wh|
00045ff0  69 63 68 20 4e 65 74 46  53 20 69 73 20 63 75 72  |ich NetFS is cur|
00046000  72 65 6e 74 6c 79 20 6c  6f 67 67 65 64 20 6f 6e  |rently logged on|
00046010  20 74 6f 2c 20 2f 69 6e  63 6c 75 64 69 6e 67 2f  | to, /including/|
00046020  20 75 73 65 72 20 49 44  20 2d 20 74 68 65 20 69  | user ID - the i|
00046030  6e 66 6f 72 6d 61 74 69  6f 6e 20 72 65 74 75 72  |nformation retur|
00046040  6e 65 64 20 62 79 20 74  68 65 20 7b 66 43 6f 64  |ned by the {fCod|
00046050  65 7d 2a 46 53 7b 66 7d  20 63 6f 6d 6d 61 6e 64  |e}*FS{f} command|
00046060  20 77 69 74 68 20 6e 6f  20 70 61 72 61 6d 65 74  | with no paramet|
00046070  65 72 73 2e 20 54 68 65  20 69 6e 66 6f 72 6d 61  |ers. The informa|
00046080  74 69 6f 6e 20 69 73 20  72 65 74 75 72 6e 65 64  |tion is returned|
00046090  20 61 73 20 61 20 73 65  72 69 65 73 20 6f 66 20  | as a series of |
000460a0  3c 34 34 20 62 79 74 65  20 62 6c 6f 63 6b 73 3d  |<44 byte blocks=|
000460b0  3e 2e 66 73 62 6c 6f 63  6b 3e 2e 0a 23 53 75 62  |>.fsblock>..#Sub|
000460c0  50 61 67 65 20 66 73 62  6c 6f 63 6b 0a 4e 65 74  |Page fsblock.Net|
000460d0  46 53 20 66 69 6c 65 20  73 65 72 76 65 72 20 62  |FS file server b|
000460e0  6c 6f 63 6b 20 77 69 74  68 20 75 73 65 72 20 6e  |lock with user n|
000460f0  61 6d 65 0a 23 50 61 72  65 6e 74 20 4e 65 74 46  |ame.#Parent NetF|
00046100  53 5f 0a 53 69 7a 65 09  43 6f 6e 74 65 6e 74 73  |S_.Size.Contents|
00046110  0a 23 4c 69 6e 65 0a 31  09 53 74 61 74 69 6f 6e  |.#Line.1.Station|
00046120  20 6e 75 6d 62 65 72 0a  31 09 4e 65 74 20 6e 75  | number.1.Net nu|
00046130  6d 62 65 72 0a 31 09 44  72 69 76 65 72 20 6e 75  |mber.1.Driver nu|
00046140  6d 62 65 72 0a 31 36 09  44 69 73 63 20 6e 61 6d  |mber.16.Disc nam|
00046150  65 2c 20 73 70 61 63 65  20 70 61 64 64 65 64 0a  |e, space padded.|
00046160  31 09 4e 75 6c 6c 20 62  79 74 65 0a 32 31 09 55  |1.Null byte.21.U|
00046170  73 65 72 20 6e 61 6d 65  2c 20 73 70 61 63 65 20  |ser name, space |
00046180  70 61 64 64 65 64 0a 31  09 4e 75 6c 6c 20 62 79  |padded.1.Null by|
00046190  74 65 0a 32 09 72 65 73  65 72 76 65 64 0a 00 00  |te.2.reserved...|
000461a0  44 41 54 41 ad 02 00 00  4e 65 74 46 53 5f 45 6e  |DATA....NetFS_En|
000461b0  75 6d 65 72 61 74 65 46  53 4c 69 73 74 20 20 28  |umerateFSList  (|
000461c0  26 34 30 30 34 39 29 0a  23 50 61 72 65 6e 74 20  |&40049).#Parent |
000461d0  4e 65 74 46 53 5f 0a 3d  3e 09 52 30 20 3d 09 6f  |NetFS_.=>.R0 =.o|
000461e0  66 66 73 65 74 20 69 6e  20 66 69 6c 65 20 73 65  |ffset in file se|
000461f0  72 76 65 72 20 6c 69 73  74 20 6f 66 20 66 69 72  |rver list of fir|
00046200  73 74 20 69 74 65 6d 20  74 6f 20 72 65 61 64 0a  |st item to read.|
00046210  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
00046220  20 62 75 66 66 65 72 0a  09 52 32 20 3d 09 73 69  | buffer..R2 =.si|
00046230  7a 65 20 6f 66 20 62 75  66 66 65 72 0a 09 52 33  |ze of buffer..R3|
00046240  20 3d 09 6e 75 6d 62 65  72 20 6f 66 20 69 74 65  | =.number of ite|
00046250  6d 73 20 74 6f 20 72 65  61 64 0a 3c 3d 09 52 30  |ms to read.<=.R0|
00046260  20 3d 09 6f 66 66 73 65  74 20 6f 66 20 6e 65 78  | =.offset of nex|
00046270  74 20 69 74 65 6d 20 74  6f 20 72 65 61 64 2c 20  |t item to read, |
00046280  6f 72 20 2d 31 20 69 66  20 66 69 6e 69 73 68 65  |or -1 if finishe|
00046290  64 0a 09 52 33 20 3d 09  6e 75 6d 62 65 72 20 6f  |d..R3 =.number o|
000462a0  66 20 69 74 65 6d 73 20  72 65 61 64 0a 0a 54 68  |f items read..Th|
000462b0  69 73 20 53 57 49 20 69  73 20 75 73 65 64 20 74  |is SWI is used t|
000462c0  6f 20 6c 69 73 74 20 69  6e 66 6f 72 6d 61 74 69  |o list informati|
000462d0  6f 6e 20 61 62 6f 75 74  20 66 69 6c 65 20 73 65  |on about file se|
000462e0  72 76 65 72 73 20 68 65  6c 64 20 62 79 20 4e 65  |rvers held by Ne|
000462f0  74 46 53 20 2d 20 74 68  65 20 69 6e 66 6f 72 6d  |tFS - the inform|
00046300  61 74 69 6f 6e 20 72 65  74 75 72 6e 65 64 20 62  |ation returned b|
00046310  79 20 74 68 65 20 7b 66  43 6f 64 65 7d 2a 4c 69  |y the {fCode}*Li|
00046320  73 74 46 53 7b 66 7d 20  63 6f 6d 6d 61 6e 64 2e  |stFS{f} command.|
00046330  20 54 68 65 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  | The information|
00046340  20 69 73 20 72 65 74 75  72 6e 65 64 20 61 73 20  | is returned as |
00046350  61 20 73 65 72 69 65 73  20 6f 66 20 3c 32 30 20  |a series of <20 |
00046360  62 79 74 65 20 62 6c 6f  63 6b 73 3d 3e 4e 65 74  |byte blocks=>Net|
00046370  46 53 5f 66 73 62 6c 6f  63 6b 3e 2c 20 69 6e 20  |FS_fsblock>, in |
00046380  61 6c 70 68 61 62 65 74  69 63 61 6c 20 6f 72 64  |alphabetical ord|
00046390  65 72 2e 20 54 6f 20 65  6e 73 75 72 65 20 74 68  |er. To ensure th|
000463a0  61 74 20 74 68 65 20 6c  69 73 74 20 64 6f 65 73  |at the list does|
000463b0  20 6e 6f 74 20 63 68 61  6e 67 65 20 64 75 72 69  | not change duri|
000463c0  6e 67 20 65 6e 75 6d 65  72 61 74 69 6f 6e 20 74  |ng enumeration t|
000463d0  68 65 20 53 57 49 20 64  69 73 61 62 6c 65 73 20  |he SWI disables |
000463e0  74 68 65 20 61 75 74 6f  6d 61 74 69 63 20 75 70  |the automatic up|
000463f0  64 61 74 65 20 6f 66 20  74 68 65 20 6c 69 73 74  |date of the list|
00046400  20 2d 20 79 6f 75 20 2a  6d 75 73 74 2a 20 72 65  | - you *must* re|
00046410  73 74 61 72 74 20 74 68  69 73 20 61 66 74 65 72  |start this after|
00046420  20 65 6e 75 6d 65 72 61  74 69 6f 6e 20 62 79 20  | enumeration by |
00046430  63 61 6c 6c 69 6e 67 20  3c 4e 65 74 46 53 5f 45  |calling <NetFS_E|
00046440  6e 61 62 6c 65 43 61 63  68 65 3e 2e 0a 00 00 00  |nableCache>.....|
00046450  44 41 54 41 98 00 00 00  4e 65 74 46 53 20 66 69  |DATA....NetFS fi|
00046460  6c 65 20 73 65 72 76 65  72 20 62 6c 6f 63 6b 0a  |le server block.|
00046470  23 50 61 72 65 6e 74 20  4e 65 74 46 53 5f 0a 53  |#Parent NetFS_.S|
00046480  69 7a 65 09 43 6f 6e 74  65 6e 74 73 0a 23 4c 69  |ize.Contents.#Li|
00046490  6e 65 0a 31 09 53 74 61  74 69 6f 6e 20 6e 75 6d  |ne.1.Station num|
000464a0  62 65 72 0a 31 09 4e 65  74 20 6e 75 6d 62 65 72  |ber.1.Net number|
000464b0  0a 31 09 44 72 69 76 65  72 20 6e 75 6d 62 65 72  |.1.Driver number|
000464c0  0a 31 36 09 44 69 73 63  20 6e 61 6d 65 2c 20 73  |.16.Disc name, s|
000464d0  70 61 63 65 20 70 61 64  64 65 64 0a 31 09 4e 75  |pace padded.1.Nu|
000464e0  6c 6c 20 62 79 74 65 0a  44 41 54 41 55 02 00 00  |ll byte.DATAU...|
000464f0  4e 65 74 46 53 5f 47 65  74 4f 62 6a 65 63 74 55  |NetFS_GetObjectU|
00046500  49 44 20 20 28 26 34 30  30 35 30 29 0a 23 50 61  |ID  (&40050).#Pa|
00046510  72 65 6e 74 20 4e 65 74  46 53 5f 0a 3d 3e 09 52  |rent NetFS_.=>.R|
00046520  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 63  |1 =.pointer to c|
00046530  61 6e 6f 6e 69 63 61 6c  20 6f 62 6a 65 63 74 20  |anonical object |
00046540  6e 61 6d 65 0a 09 52 36  20 3d 09 70 6f 69 6e 74  |name..R6 =.point|
00046550  65 72 20 74 6f 20 63 61  6e 6f 6e 69 63 61 6c 20  |er to canonical |
00046560  73 70 65 63 69 61 6c 20  66 69 65 6c 64 0a 0a 3c  |special field..<|
00046570  3d 09 52 30 20 3d 09 3c  6f 62 6a 65 63 74 20 74  |=.R0 =.<object t|
00046580  79 70 65 3d 3e 66 73 79  73 5f 6f 62 6a 74 79 70  |ype=>fsys_objtyp|
00046590  65 3e 0a 09 52 32 20 3d  09 3c 6c 6f 61 64 20 61  |e>..R2 =.<load a|
000465a0  64 64 72 65 73 73 3d 3e  66 73 79 73 5f 6c 6f 61  |ddress=>fsys_loa|
000465b0  64 65 78 65 63 3e 0a 09  52 33 20 3d 09 3c 65 78  |dexec>..R3 =.<ex|
000465c0  65 63 20 61 64 64 72 65  73 73 3d 3e 66 73 79 73  |ec address=>fsys|
000465d0  5f 6c 6f 61 64 65 78 65  63 3e 0a 09 52 34 20 3d  |_loadexec>..R4 =|
000465e0  09 6f 62 6a 65 63 74 20  6c 65 6e 67 74 68 0a 09  |.object length..|
000465f0  52 35 20 3d 09 3c 6f 62  6a 65 63 74 20 61 74 74  |R5 =.<object att|
00046600  72 69 62 75 74 65 73 3d  3e 66 73 79 73 5f 6f 62  |ributes=>fsys_ob|
00046610  6a 61 74 74 72 3e 0a 09  52 36 20 3d 09 6c 65 61  |jattr>..R6 =.lea|
00046620  73 74 20 73 69 67 6e 69  66 69 63 61 6e 74 20 77  |st significant w|
00046630  6f 72 64 20 6f 66 20 55  49 44 0a 09 52 37 20 3d  |ord of UID..R7 =|
00046640  09 6d 6f 73 74 20 73 69  67 6e 69 66 69 63 61 6e  |.most significan|
00046650  74 20 77 6f 72 64 20 6f  66 20 55 49 44 0a 0a 54  |t word of UID..T|
00046660  68 69 73 20 53 57 49 20  69 73 20 73 69 6d 69 6c  |his SWI is simil|
00046670  61 72 20 74 6f 20 3c 4f  53 5f 46 69 6c 65 20 35  |ar to <OS_File 5|
00046680  3d 3e 4f 53 5f 46 69 6c  65 35 3e 2c 20 65 78 63  |=>OS_File5>, exc|
00046690  65 70 74 20 74 68 61 74  20 69 74 20 61 6c 73 6f  |ept that it also|
000466a0  20 72 65 74 75 72 6e 73  20 61 20 36 34 20 62 69  | returns a 64 bi|
000466b0  74 20 55 49 44 20 66 6f  72 20 74 68 65 20 6f 62  |t UID for the ob|
000466c0  6a 65 63 74 2e 20 54 68  69 73 20 69 73 20 67 75  |ject. This is gu|
000466d0  61 72 61 6e 74 65 65 64  20 74 6f 20 62 65 20 75  |aranteed to be u|
000466e0  6e 69 71 75 65 20 6f 76  65 72 20 61 6c 6c 20 66  |nique over all f|
000466f0  69 6c 65 20 73 65 72 76  65 72 73 20 6f 6e 20 61  |ile servers on a|
00046700  6c 6c 20 6e 65 74 77 6f  72 6b 73 2e 20 4f 68 2c  |ll networks. Oh,|
00046710  20 66 6f 72 20 73 6f 6d  65 74 68 69 6e 67 20 65  | for something e|
00046720  71 75 69 76 61 6c 65 6e  74 20 66 6f 72 20 6c 6f  |quivalent for lo|
00046730  63 61 6c 20 66 69 6c 65  73 2e 2e 2e 0a 00 00 00  |cal files.......|
00046740  44 41 54 41 7e 00 00 00  4e 65 74 46 53 5f 52 65  |DATA~...NetFS_Re|
00046750  61 64 43 75 72 72 65 6e  74 43 6f 6e 74 65 78 74  |adCurrentContext|
00046760  20 20 28 26 34 30 30 34  34 29 0a 23 50 61 72 65  |  (&40044).#Pare|
00046770  6e 74 20 4e 65 74 46 53  5f 0a 3c 3d 09 52 30 2d  |nt NetFS_.<=.R0-|
00046780  52 32 20 63 6f 72 72 75  70 74 65 64 0a 0a 54 68  |R2 corrupted..Th|
00046790  69 73 20 53 57 49 20 69  73 20 75 6e 69 6d 70 6c  |is SWI is unimpl|
000467a0  65 6d 65 6e 74 65 64 2c  20 61 6e 64 20 77 69 6c  |emented, and wil|
000467b0  6c 20 62 65 20 72 65 6d  6f 76 65 64 2e 0a 00 00  |l be removed....|
000467c0  44 41 54 41 40 01 00 00  4e 65 74 46 53 5f 52 65  |DATA@...NetFS_Re|
000467d0  61 64 46 53 4e 61 6d 65  20 20 28 26 34 30 30 34  |adFSName  (&4004|
000467e0  32 29 0a 23 50 61 72 65  6e 74 20 4e 65 74 46 53  |2).#Parent NetFS|
000467f0  5f 0a 3d 3e 09 52 31 20  3d 09 70 6f 69 6e 74 65  |_.=>.R1 =.pointe|
00046800  72 20 74 6f 20 62 75 66  66 65 72 20 66 6f 72 20  |r to buffer for |
00046810  72 65 73 75 6c 74 69 6e  67 20 73 74 72 69 6e 67  |resulting string|
00046820  0a 09 52 32 20 3d 09 73  69 7a 65 20 6f 66 20 62  |..R2 =.size of b|
00046830  75 66 66 65 72 0a 0a 3c  3d 09 52 30 20 3d 09 70  |uffer..<=.R0 =.p|
00046840  6f 69 6e 74 65 72 20 74  6f 20 62 75 66 66 65 72  |ointer to buffer|
00046850  20 28 52 31 20 6f 6e 20  65 6e 74 72 79 29 0a 09  | (R1 on entry)..|
00046860  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
00046870  74 65 72 6d 69 6e 61 74  6f 72 0a 09 52 32 20 3d  |terminator..R2 =|
00046880  09 66 72 65 65 20 62 79  74 65 73 20 69 6e 20 62  |.free bytes in b|
00046890  75 66 66 65 72 0a 0a 54  68 69 73 20 53 57 49 20  |uffer..This SWI |
000468a0  72 65 61 64 73 20 74 68  65 20 6e 61 6d 65 20 6f  |reads the name o|
000468b0  66 20 79 6f 75 72 20 63  75 72 72 65 6e 74 20 66  |f your current f|
000468c0  69 6c 65 20 73 65 72 76  65 72 2c 20 6f 72 20 72  |ile server, or r|
000468d0  65 74 75 72 6e 73 20 61  20 6e 75 6c 6c 20 73 74  |eturns a null st|
000468e0  72 69 6e 67 20 69 66 20  79 6f 75 72 20 61 72 65  |ring if your are|
000468f0  20 6e 6f 74 20 6c 6f 67  67 65 64 20 6f 6e 2e 0a  | not logged on..|
00046900  44 41 54 41 da 00 00 00  4e 65 74 46 53 5f 52 65  |DATA....NetFS_Re|
00046910  61 64 46 53 4e 75 6d 62  65 72 20 20 28 26 34 30  |adFSNumber  (&40|
00046920  30 34 30 29 0a 23 50 61  72 65 6e 74 20 4e 65 74  |040).#Parent Net|
00046930  46 53 5f 0a 3c 3d 09 52  30 20 3d 09 73 74 61 74  |FS_.<=.R0 =.stat|
00046940  69 6f 6e 20 6e 75 6d 62  65 72 0a 09 52 31 20 3d  |ion number..R1 =|
00046950  09 6e 65 74 20 6e 75 6d  62 65 72 0a 0a 54 68 69  |.net number..Thi|
00046960  73 20 53 57 49 20 72 65  74 75 72 6e 73 20 74 68  |s SWI returns th|
00046970  65 20 66 75 6c 6c 20 73  74 61 74 69 6f 6e 20 6e  |e full station n|
00046980  75 6d 62 65 72 20 6f 66  20 79 6f 75 72 20 63 75  |umber of your cu|
00046990  72 72 65 6e 74 20 66 69  6c 65 20 73 65 72 76 65  |rrent file serve|
000469a0  72 2c 20 6f 72 20 52 30  20 3d 20 52 31 20 3d 20  |r, or R0 = R1 = |
000469b0  30 20 69 66 20 79 6f 75  72 20 63 75 72 72 65 6e  |0 if your curren|
000469c0  74 20 66 69 6c 65 20 73  65 72 76 65 72 20 69 73  |t file server is|
000469d0  20 6e 6f 74 20 73 65 74  2e 0a 00 00 44 41 54 41  | not set....DATA|
000469e0  12 01 00 00 4e 65 74 46  53 5f 52 65 61 64 46 53  |....NetFS_ReadFS|
000469f0  54 69 6d 65 6f 75 74 73  20 20 28 26 34 30 30 34  |Timeouts  (&4004|
00046a00  36 29 0a 23 50 61 72 65  6e 74 20 4e 65 74 46 53  |6).#Parent NetFS|
00046a10  5f 0a 3c 3d 09 52 30 20  3d 09 74 72 61 6e 73 6d  |_.<=.R0 =.transm|
00046a20  69 74 20 63 6f 75 6e 74  0a 09 52 31 20 3d 09 74  |it count..R1 =.t|
00046a30  72 61 6e 73 6d 69 74 20  64 65 6c 61 79 0a 09 52  |ransmit delay..R|
00046a40  32 20 3d 09 6d 61 63 68  69 6e 65 20 70 65 65 6b  |2 =.machine peek|
00046a50  20 63 6f 75 6e 74 0a 09  52 33 20 3d 09 6d 61 63  | count..R3 =.mac|
00046a60  68 69 6e 65 20 70 65 65  6b 20 64 65 6c 61 79 0a  |hine peek delay.|
00046a70  09 52 34 20 3d 09 72 65  63 65 69 76 65 20 64 65  |.R4 =.receive de|
00046a80  6c 61 79 0a 09 52 35 20  3d 09 62 72 6f 61 64 63  |lay..R5 =.broadc|
00046a90  61 73 74 20 64 65 6c 61  79 0a 0a 54 68 69 73 20  |ast delay..This |
00046aa0  53 57 49 20 72 65 61 64  73 20 74 68 65 20 63 75  |SWI reads the cu|
00046ab0  72 72 65 6e 74 20 63 6f  6d 6d 75 6e 69 63 61 74  |rrent communicat|
00046ac0  69 6f 6e 20 74 69 6d 65  6f 75 74 73 2e 20 41 6c  |ion timeouts. Al|
00046ad0  6c 20 64 65 6c 61 79 73  20 61 72 65 20 69 6e 20  |l delays are in |
00046ae0  63 65 6e 74 69 73 65 63  6f 6e 64 73 2e 0a 00 00  |centiseconds....|
00046af0  44 41 54 41 5b 01 00 00  4e 65 74 46 53 5f 52 65  |DATA[...NetFS_Re|
00046b00  61 64 55 73 65 72 49 64  20 20 28 26 34 30 30 34  |adUserId  (&4004|
00046b10  46 29 0a 23 50 61 72 65  6e 74 20 4e 65 74 46 53  |F).#Parent NetFS|
00046b20  5f 0a 3d 3e 09 52 31 20  3d 09 70 6f 69 6e 74 65  |_.=>.R1 =.pointe|
00046b30  72 20 74 6f 20 62 75 66  66 65 72 20 66 6f 72 20  |r to buffer for |
00046b40  72 65 73 75 6c 74 69 6e  67 20 73 74 72 69 6e 67  |resulting string|
00046b50  0a 09 52 32 20 3d 09 73  69 7a 65 20 6f 66 20 62  |..R2 =.size of b|
00046b60  75 66 66 65 72 0a 0a 3c  3d 09 52 30 20 63 6f 72  |uffer..<=.R0 cor|
00046b70  72 75 70 74 65 64 0a 09  52 31 20 3d 09 70 6f 69  |rupted..R1 =.poi|
00046b80  6e 74 65 72 20 74 6f 20  74 65 72 6d 69 6e 61 74  |nter to terminat|
00046b90  6f 72 0a 09 52 32 20 3d  09 66 72 65 65 20 62 79  |or..R2 =.free by|
00046ba0  74 65 73 20 69 6e 20 62  75 66 66 65 72 20 28 69  |tes in buffer (i|
00046bb0  6e 63 6c 75 64 69 6e 67  20 74 65 72 6d 69 6e 61  |ncluding termina|
00046bc0  74 6f 72 29 0a 0a 54 68  69 73 20 53 57 49 20 72  |tor)..This SWI r|
00046bd0  65 61 64 73 20 74 68 65  20 75 73 65 72 20 49 44  |eads the user ID|
00046be0  20 69 66 20 6c 6f 67 67  65 64 20 6f 6e 74 6f 20  | if logged onto |
00046bf0  74 68 65 20 63 75 72 72  65 6e 74 20 66 69 6c 65  |the current file|
00046c00  20 73 65 72 76 65 72 2c  20 6f 72 20 72 65 74 75  | server, or retu|
00046c10  72 6e 73 20 61 20 6e 75  6c 6c 20 73 74 72 69 6e  |rns a null strin|
00046c20  67 20 28 73 69 6e 67 6c  65 20 7a 65 72 6f 29 20  |g (single zero) |
00046c30  69 66 20 79 6f 75 72 20  61 72 65 20 6e 6f 74 20  |if your are not |
00046c40  6c 6f 67 67 65 64 20 6f  6e 2e 0a 00 44 41 54 41  |logged on...DATA|
00046c50  86 00 00 00 4e 65 74 46  53 5f 53 65 74 43 75 72  |....NetFS_SetCur|
00046c60  72 65 6e 74 43 6f 6e 74  65 78 74 20 20 28 26 34  |rentContext  (&4|
00046c70  30 30 34 35 29 0a 23 50  61 72 65 6e 74 20 4e 65  |0045).#Parent Ne|
00046c80  74 46 53 5f 0a 3c 3d 09  41 6c 6c 20 72 65 67 69  |tFS_.<=.All regi|
00046c90  73 74 65 72 73 20 70 72  65 73 65 72 76 65 64 2e  |sters preserved.|
00046ca0  0a 0a 54 68 69 73 20 53  57 49 20 69 73 20 75 6e  |..This SWI is un|
00046cb0  69 6d 70 6c 65 6d 65 6e  74 65 64 2c 20 61 6e 64  |implemented, and|
00046cc0  20 77 69 6c 6c 20 62 65  20 72 65 6d 6f 76 65 64  | will be removed|
00046cd0  2e 0a 00 00 44 41 54 41  13 01 00 00 4e 65 74 46  |....DATA....NetF|
00046ce0  53 5f 53 65 74 46 53 4e  61 6d 65 20 20 28 26 34  |S_SetFSName  (&4|
00046cf0  30 30 34 33 29 0a 23 50  61 72 65 6e 74 20 4e 65  |0043).#Parent Ne|
00046d00  74 46 53 5f 0a 3d 3e 09  52 30 20 3d 09 70 6f 69  |tFS_.=>.R0 =.poi|
00046d10  6e 74 65 72 20 74 6f 20  6e 61 6d 65 0a 0a 54 68  |nter to name..Th|
00046d20  69 73 20 53 57 49 20 73  65 74 73 20 74 68 65 20  |is SWI sets the |
00046d30  6e 61 6d 65 64 20 66 69  6c 65 20 73 65 72 76 65  |named file serve|
00046d40  72 20 61 73 20 74 68 65  20 4e 65 74 46 53 20 63  |r as the NetFS c|
00046d50  75 72 72 65 6e 74 20 66  69 6c 65 20 73 65 72 76  |urrent file serv|
00046d60  65 72 2c 20 6f 72 20 67  65 6e 65 72 61 74 65 73  |er, or generates|
00046d70  20 61 6e 20 65 72 72 6f  72 20 69 66 20 79 6f 75  | an error if you|
00046d80  20 61 72 65 20 6e 6f 74  20 6c 6f 67 67 65 64 20  | are not logged |
00046d90  6f 6e 74 6f 20 74 68 65  20 73 70 65 63 69 66 69  |onto the specifi|
00046da0  65 64 20 66 69 6c 65 20  73 65 72 76 65 72 2e 20  |ed file server. |
00046db0  49 74 20 72 65 73 74 6f  72 65 73 20 63 6f 6e 74  |It restores cont|
00046dc0  65 78 20 28 7b 2f 7d 65  2e 67 2e 7b 2f 7d 20 74  |ex ({/}e.g.{/} t|
00046dd0  68 65 20 63 75 72 72 65  6e 74 20 64 69 72 65 63  |he current direc|
00046de0  74 6f 72 79 29 2e 0a 00  44 41 54 41 f7 00 00 00  |tory)...DATA....|
00046df0  4e 65 74 46 53 5f 53 65  74 46 53 4e 75 6d 62 65  |NetFS_SetFSNumbe|
00046e00  72 20 20 28 26 34 30 30  34 31 29 0a 23 50 61 72  |r  (&40041).#Par|
00046e10  65 6e 74 20 4e 65 74 46  53 5f 0a 3d 3e 09 52 30  |ent NetFS_.=>.R0|
00046e20  20 3d 09 73 74 61 74 69  6f 6e 20 6e 75 6d 62 65  | =.station numbe|
00046e30  72 0a 09 52 31 20 3d 09  6e 65 74 20 6e 75 6d 62  |r..R1 =.net numb|
00046e40  65 72 0a 3c 3d 09 52 30  2c 52 31 20 63 6f 72 72  |er.<=.R0,R1 corr|
00046e50  75 70 74 65 64 0a 0a 54  68 69 73 20 53 57 49 20  |upted..This SWI |
00046e60  73 65 74 73 20 74 68 65  20 66 75 6c 6c 20 73 74  |sets the full st|
00046e70  61 74 69 6f 6e 20 6e 75  6d 62 65 72 20 75 73 65  |ation number use|
00046e80  64 20 62 79 20 4e 65 74  46 53 20 61 73 20 74 68  |d by NetFS as th|
00046e90  65 20 63 75 72 72 65 6e  74 20 66 69 6c 65 20 73  |e current file s|
00046ea0  65 72 76 65 72 2e 20 49  74 20 72 65 73 74 6f 72  |erver. It restor|
00046eb0  65 73 20 63 6f 6e 74 65  78 20 28 7b 2f 7d 65 2e  |es contex ({/}e.|
00046ec0  67 2e 7b 2f 7d 20 74 68  65 20 63 75 72 72 65 6e  |g.{/} the curren|
00046ed0  74 20 64 69 72 65 63 74  6f 72 79 29 2e 0a 0a 00  |t directory)....|
00046ee0  44 41 54 41 10 01 00 00  4e 65 74 46 53 5f 53 65  |DATA....NetFS_Se|
00046ef0  74 46 53 54 69 6d 65 6f  75 74 73 20 20 28 26 34  |tFSTimeouts  (&4|
00046f00  30 30 34 37 29 0a 23 50  61 72 65 6e 74 20 4e 65  |0047).#Parent Ne|
00046f10  74 46 53 5f 0a 3d 3e 09  52 30 20 3d 09 74 72 61  |tFS_.=>.R0 =.tra|
00046f20  6e 73 6d 69 74 20 63 6f  75 6e 74 0a 09 52 31 20  |nsmit count..R1 |
00046f30  3d 09 74 72 61 6e 73 6d  69 74 20 64 65 6c 61 79  |=.transmit delay|
00046f40  0a 09 52 32 20 3d 09 6d  61 63 68 69 6e 65 20 70  |..R2 =.machine p|
00046f50  65 65 6b 20 63 6f 75 6e  74 0a 09 52 33 20 3d 09  |eek count..R3 =.|
00046f60  6d 61 63 68 69 6e 65 20  70 65 65 6b 20 64 65 6c  |machine peek del|
00046f70  61 79 0a 09 52 34 20 3d  09 72 65 63 65 69 76 65  |ay..R4 =.receive|
00046f80  20 64 65 6c 61 79 0a 09  52 35 20 3d 09 62 72 6f  | delay..R5 =.bro|
00046f90  61 64 63 61 73 74 20 64  65 6c 61 79 0a 0a 54 68  |adcast delay..Th|
00046fa0  69 73 20 53 57 49 20 73  65 74 73 20 74 68 65 20  |is SWI sets the |
00046fb0  63 75 72 72 65 6e 74 20  63 6f 6d 6d 75 6e 69 63  |current communic|
00046fc0  61 74 69 6f 6e 20 74 69  6d 65 6f 75 74 73 2e 20  |ation timeouts. |
00046fd0  41 6c 6c 20 64 65 6c 61  79 73 20 61 72 65 20 69  |All delays are i|
00046fe0  6e 20 63 65 6e 74 69 73  65 63 6f 6e 64 73 2e 0a  |n centiseconds..|
00046ff0  44 41 54 41 0c 01 00 00  4e 65 74 46 53 5f 55 70  |DATA....NetFS_Up|
00047000  64 61 74 65 46 53 4c 69  73 74 20 20 28 26 34 30  |dateFSList  (&40|
00047010  30 34 44 29 0a 23 50 61  72 65 6e 74 20 4e 65 74  |04D).#Parent Net|
00047020  46 53 5f 0a 3d 3e 09 52  30 20 3d 09 73 74 61 74  |FS_.=>.R0 =.stat|
00047030  69 6f 6e 20 6e 75 6d 62  65 72 0a 09 52 31 20 3d  |ion number..R1 =|
00047040  09 6e 65 74 20 6e 75 6d  62 65 72 0a 3c 3d 09 52  |.net number.<=.R|
00047050  30 2c 20 52 31 20 63 6f  72 72 75 70 74 65 64 0a  |0, R1 corrupted.|
00047060  0a 54 68 69 73 20 53 57  49 20 66 65 74 63 68 65  |.This SWI fetche|
00047070  73 20 74 68 65 20 6e 61  6d 65 73 20 6f 66 20 64  |s the names of d|
00047080  69 73 63 73 20 6f 6e 20  74 68 65 20 67 69 76 65  |iscs on the give|
00047090  6e 20 66 69 6c 65 20 73  65 72 76 65 72 20 28 6f  |n file server (o|
000470a0  72 20 61 6c 6c 20 73 65  72 76 65 72 73 20 69 66  |r all servers if|
000470b0  20 52 30 20 3d 20 52 31  20 3d 20 30 29 2c 20 74  | R0 = R1 = 0), t|
000470c0  6f 20 65 6e 73 75 72 65  20 74 68 61 74 20 74 68  |o ensure that th|
000470d0  65 20 6c 69 73 74 20 66  72 6f 6d 20 3c 4e 65 74  |e list from <Net|
000470e0  46 53 5f 45 6e 75 6d 65  72 61 74 65 46 53 3e 20  |FS_EnumerateFS> |
000470f0  69 73 20 63 75 72 72 65  6e 74 2e 0a 44 41 54 41  |is current..DATA|
00047100  68 02 00 00 46 69 6c 65  72 20 73 65 72 76 65 72  |h...Filer server|
00047110  20 64 61 74 65 20 61 6e  64 20 74 69 6d 65 20 62  | date and time b|
00047120  6c 6f 63 6b 0a 23 50 61  72 65 6e 74 20 4e 65 74  |lock.#Parent Net|
00047130  46 53 5f 43 6f 6e 76 65  72 74 44 61 74 65 0a 4f  |FS_ConvertDate.O|
00047140  66 66 73 65 74 09 42 69  74 73 09 4d 65 61 6e 69  |ffset.Bits.Meani|
00047150  6e 67 09 09 09 42 61 73  65 09 52 61 6e 67 65 0a  |ng...Base.Range.|
00047160  23 4c 69 6e 65 0a 30 09  30 2d 34 09 44 61 79 20  |#Line.0.0-4.Day |
00047170  6f 66 20 4d 6f 6e 74 68  09 09 20 09 30 2d 33 31  |of Month.. .0-31|
00047180  0a 20 09 35 2d 37 09 48  69 67 68 20 62 69 74 73  |. .5-7.High bits|
00047190  20 6f 66 20 79 65 61 72  09 31 39 38 30 09 30 2d  | of year.1980.0-|
000471a0  31 32 37 0a 31 09 30 2d  33 09 4d 6f 6e 74 68 20  |127.1.0-3.Month |
000471b0  6f 66 20 79 65 61 72 09  09 20 09 31 2d 31 32 0a  |of year.. .1-12.|
000471c0  20 09 34 2d 37 09 4c 6f  77 20 62 69 74 73 20 6f  | .4-7.Low bits o|
000471d0  66 20 79 65 61 72 09 31  39 38 30 09 30 2d 31 32  |f year.1980.0-12|
000471e0  37 0a 32 09 30 2d 34 09  48 6f 75 72 73 09 09 09  |7.2.0-4.Hours...|
000471f0  20 09 30 2d 32 33 0a 33  09 30 2d 35 09 4d 69 6e  | .0-23.3.0-5.Min|
00047200  75 74 65 73 09 09 09 20  09 30 2d 35 39 0a 34 09  |utes... .0-59.4.|
00047210  30 2d 35 09 53 65 63 6f  6e 64 73 09 09 09 20 09  |0-5.Seconds... .|
00047220  30 2d 35 39 0a 0a 4e 65  74 46 53 20 73 74 6f 72  |0-59..NetFS stor|
00047230  65 73 20 74 68 65 20 66  69 6c 65 20 6d 6f 64 69  |es the file modi|
00047240  66 69 63 61 74 69 6f 6e  20 64 61 74 65 20 69 6e  |fication date in|
00047250  20 62 69 74 73 20 38 2d  32 33 20 6f 66 20 74 68  | bits 8-23 of th|
00047260  65 20 66 69 6c 65 20 61  63 63 65 73 73 20 61 74  |e file access at|
00047270  74 72 69 62 75 74 65 73  20 69 6e 20 74 68 65 20  |tributes in the |
00047280  73 61 6d 65 20 66 6f 72  6d 61 74 3a 0a 0a 4f 66  |same format:..Of|
00047290  66 73 65 74 09 42 69 74  73 09 4d 65 61 6e 69 6e  |fset.Bits.Meanin|
000472a0  67 09 09 09 42 61 73 65  09 52 61 6e 67 65 0a 23  |g...Base.Range.#|
000472b0  4c 69 6e 65 0a 30 09 30  2d 37 09 53 74 61 6e 64  |Line.0.0-7.Stand|
000472c0  61 72 64 20 3c 61 63 63  65 73 73 20 61 74 74 72  |ard <access attr|
000472d0  69 62 75 74 65 73 3d 3e  66 73 79 73 5f 6f 62 6a  |ibutes=>fsys_obj|
000472e0  61 74 74 72 3e 09 20 0a  31 09 30 2d 34 09 44 61  |attr>. .1.0-4.Da|
000472f0  79 20 6f 66 20 4d 6f 6e  74 68 09 09 20 09 30 2d  |y of Month.. .0-|
00047300  33 31 0a 20 09 35 2d 37  09 48 69 67 68 20 62 69  |31. .5-7.High bi|
00047310  74 73 20 6f 66 20 79 65  61 72 09 31 39 38 30 09  |ts of year.1980.|
00047320  30 2d 31 32 37 0a 32 09  30 2d 33 09 4d 6f 6e 74  |0-127.2.0-3.Mont|
00047330  68 20 6f 66 20 79 65 61  72 09 09 20 09 31 2d 31  |h of year.. .1-1|
00047340  32 0a 20 09 34 2d 37 09  4c 6f 77 20 62 69 74 73  |2. .4-7.Low bits|
00047350  20 6f 66 20 79 65 61 72  09 31 39 38 30 09 30 2d  | of year.1980.0-|
00047360  31 32 37 0a 44 49 52 24  ac 01 00 00 ac 01 00 00  |127.DIR$........|
00047370  10 75 04 00 48 fd ff ff  38 47 f2 17 bb 00 00 00  |.u..H...8G......|
00047380  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
00047390  cc 75 04 00 48 ff ff ff  76 41 f8 17 f5 00 00 00  |.u..H...vA......|
000473a0  13 00 00 00 00 00 00 00  42 69 6e 64 50 53 4e 61  |........BindPSNa|
000473b0  6d 65 00 00 c4 76 04 00  48 ff ff ff 7d a3 68 2a  |me...v..H...}.h*|
000473c0  1d 02 00 00 13 00 00 00  00 00 00 00 43 6f 6e 76  |............Conv|
000473d0  65 72 74 53 74 61 74 75  73 54 6f 53 74 72 69 6e  |ertStatusToStrin|
000473e0  67 00 00 00 e4 78 04 00  48 ff ff ff 35 c1 68 2a  |g....x..H...5.h*|
000473f0  1d 04 00 00 13 00 00 00  00 00 00 00 4c 69 73 74  |............List|
00047400  53 65 72 76 65 72 73 00  04 7d 04 00 48 ff ff ff  |Servers..}..H...|
00047410  2a 4b f8 17 bc 01 00 00  13 00 00 00 00 00 00 00  |*K..............|
00047420  52 65 61 64 50 53 4e 61  6d 65 00 00 c0 7e 04 00  |ReadPSName...~..|
00047430  48 ff ff ff 2c 47 f8 17  f4 00 00 00 13 00 00 00  |H...,G..........|
00047440  00 00 00 00 52 65 61 64  50 53 4e 75 6d 62 65 72  |....ReadPSNumber|
00047450  00 00 00 00 b4 7f 04 00  48 ff ff ff 94 4d f8 17  |........H....M..|
00047460  18 01 00 00 13 00 00 00  00 00 00 00 52 65 61 64  |............Read|
00047470  50 53 54 69 6d 65 6f 75  74 73 00 00 cc 80 04 00  |PSTimeouts......|
00047480  48 ff ff ff 6b d0 68 2a  da 00 00 00 13 00 00 00  |H...k.h*........|
00047490  00 00 00 00 53 65 74 50  53 4e 61 6d 65 00 00 00  |....SetPSName...|
000474a0  a8 81 04 00 48 ff ff ff  30 49 f8 17 a8 00 00 00  |....H...0I......|
000474b0  13 00 00 00 00 00 00 00  53 65 74 50 53 4e 75 6d  |........SetPSNum|
000474c0  62 65 72 00 50 82 04 00  48 ff ff ff bc 4e f8 17  |ber.P...H....N..|
000474d0  16 01 00 00 13 00 00 00  00 00 00 00 53 65 74 50  |............SetP|
000474e0  53 54 69 6d 65 6f 75 74  73 00 00 00 68 83 04 00  |STimeouts...h...|
000474f0  48 fd ff ff f1 e3 68 2a  eb 00 00 00 13 00 00 00  |H.....h*........|
00047500  00 00 00 00 73 74 61 74  75 73 65 73 00 00 00 00  |....statuses....|
00047510  44 41 54 41 bb 00 00 00  4e 65 74 50 72 69 6e 74  |DATA....NetPrint|
00047520  0a 23 50 61 72 65 6e 74  20 21 52 6f 6f 74 0a 23  |.#Parent !Root.#|
00047530  50 72 65 66 69 78 20 4e  65 74 50 72 69 6e 74 5f  |Prefix NetPrint_|
00047540  0a 3c 42 69 6e 64 50 53  4e 61 6d 65 3e 0a 3c 43  |.<BindPSName>.<C|
00047550  6f 6e 76 65 72 74 53 74  61 74 75 73 54 6f 53 74  |onvertStatusToSt|
00047560  72 69 6e 67 3e 0a 3c 4c  69 73 74 53 65 72 76 65  |ring>.<ListServe|
00047570  72 73 3e 0a 3c 52 65 61  64 50 53 4e 61 6d 65 3e  |rs>.<ReadPSName>|
00047580  0a 3c 52 65 61 64 50 53  4e 75 6d 62 65 72 3e 0a  |.<ReadPSNumber>.|
00047590  3c 52 65 61 64 50 53 54  69 6d 65 6f 75 74 73 3e  |<ReadPSTimeouts>|
000475a0  0a 3c 53 65 74 50 53 4e  61 6d 65 3e 0a 3c 53 65  |.<SetPSName>.<Se|
000475b0  74 50 53 4e 75 6d 62 65  72 3e 0a 3c 53 65 74 50  |tPSNumber>.<SetP|
000475c0  53 54 69 6d 65 6f 75 74  73 3e 0a 00 44 41 54 41  |STimeouts>..DATA|
000475d0  f5 00 00 00 4e 65 74 50  72 69 6e 74 5f 42 69 6e  |....NetPrint_Bin|
000475e0  64 50 53 4e 61 6d 65 20  20 28 26 34 30 32 30 36  |dPSName  (&40206|
000475f0  29 0a 23 50 61 72 65 6e  74 20 4e 65 74 50 72 69  |).#Parent NetPri|
00047600  6e 74 5f 0a 3d 3e 09 52  30 20 3d 09 70 6f 69 6e  |nt_.=>.R0 =.poin|
00047610  74 65 72 20 74 6f 20 6e  61 6d 65 0a 3c 3d 09 52  |ter to name.<=.R|
00047620  30 20 3d 09 73 74 61 74  69 6f 6e 20 6e 75 6d 62  |0 =.station numb|
00047630  65 72 0a 09 52 31 20 3d  09 6e 65 74 20 6e 75 6d  |er..R1 =.net num|
00047640  62 65 72 0a 0a 54 68 69  73 20 53 57 49 20 61 74  |ber..This SWI at|
00047650  74 65 6d 70 74 73 20 74  6f 20 66 69 6e 64 20 61  |tempts to find a|
00047660  20 70 72 69 6e 74 65 72  20 73 65 72 76 65 72 20  | printer server |
00047670  77 69 74 68 20 74 68 65  20 67 69 76 65 6e 20 6e  |with the given n|
00047680  61 6d 65 20 74 68 61 74  20 69 73 20 6e 6f 74 20  |ame that is not |
00047690  62 75 73 79 2e 20 49 66  20 6e 6f 6e 65 20 63 61  |busy. If none ca|
000476a0  6e 20 62 65 20 66 6f 75  6e 64 20 61 6e 20 65 72  |n be found an er|
000476b0  72 6f 72 20 69 73 20 72  65 74 75 72 6e 65 64 2e  |ror is returned.|
000476c0  0a 00 00 00 44 41 54 41  1d 02 00 00 4e 65 74 50  |....DATA....NetP|
000476d0  72 69 6e 74 5f 43 6f 6e  76 65 72 74 53 74 61 74  |rint_ConvertStat|
000476e0  75 73 54 6f 53 74 72 69  6e 67 20 20 28 26 34 30  |usToString  (&40|
000476f0  32 30 38 29 0a 23 50 61  72 65 6e 74 20 4e 65 74  |208).#Parent Net|
00047700  50 72 69 6e 74 5f 0a 3d  3e 09 52 30 20 3d 09 70  |Print_.=>.R0 =.p|
00047710  6f 69 6e 74 65 72 20 74  6f 20 3c 73 74 61 74 75  |ointer to <statu|
00047720  73 20 62 6c 6f 63 6b 3d  3e 2e 73 74 61 74 75 73  |s block=>.status|
00047730  3e 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |>..R1 =.pointer |
00047740  74 6f 20 62 75 66 66 65  72 20 66 6f 72 20 72 65  |to buffer for re|
00047750  73 75 6c 74 69 6e 67 20  73 74 72 69 6e 67 0a 09  |sulting string..|
00047760  52 32 20 3d 09 73 69 7a  65 20 6f 66 20 62 75 66  |R2 =.size of buf|
00047770  66 65 72 0a 0a 3c 3d 09  52 30 20 3d 09 70 6f 69  |fer..<=.R0 =.poi|
00047780  6e 74 65 72 20 74 6f 20  62 75 66 66 65 72 20 28  |nter to buffer (|
00047790  52 31 20 6f 6e 20 65 6e  74 72 79 29 0a 09 52 31  |R1 on entry)..R1|
000477a0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 74 65  | =.pointer to te|
000477b0  72 6d 69 6e 61 74 6f 72  0a 09 52 32 20 3d 09 66  |rminator..R2 =.f|
000477c0  72 65 65 20 62 79 74 65  73 20 69 6e 20 62 75 66  |ree bytes in buf|
000477d0  66 65 72 0a 0a 54 68 69  73 20 53 57 49 20 63 6f  |fer..This SWI co|
000477e0  6e 76 65 72 74 73 20 74  68 65 20 67 69 76 65 6e  |nverts the given|
000477f0  20 3c 73 74 61 74 75 73  3d 3e 4e 65 74 50 72 69  | <status=>NetPri|
00047800  6e 74 5f 73 74 61 74 75  73 65 73 3e 20 74 6f 20  |nt_statuses> to |
00047810  61 20 6e 75 6c 6c 20 74  65 72 6d 69 6e 61 74 65  |a null terminate|
00047820  64 20 73 74 72 69 6e 67  20 69 6e 20 74 68 65 20  |d string in the |
00047830  73 75 70 70 6c 69 65 64  20 62 75 66 66 65 72 2e  |supplied buffer.|
00047840  0a 23 53 75 62 50 61 67  65 20 73 74 61 74 75 73  |.#SubPage status|
00047850  0a 4e 65 74 50 72 69 6e  74 5f 43 6f 6e 76 65 72  |.NetPrint_Conver|
00047860  74 53 74 61 74 75 73 54  6f 53 74 72 69 6e 67 20  |tStatusToString |
00047870  73 74 61 74 75 73 20 62  6c 6f 63 6b 0a 4f 66 66  |status block.Off|
00047880  73 65 74 09 43 6f 6e 74  65 6e 74 73 0a 23 4c 69  |set.Contents.#Li|
00047890  6e 65 0a 30 09 3c 73 74  61 74 75 73 3d 3e 4e 65  |ne.0.<status=>Ne|
000478a0  74 50 72 69 6e 74 5f 73  74 61 74 75 73 65 73 3e  |tPrint_statuses>|
000478b0  0a 31 09 6f 70 74 69 6f  6e 61 6c 20 73 74 61 74  |.1.optional stat|
000478c0  69 6f 6e 20 6e 75 6d 62  65 72 0a 32 09 6f 70 74  |ion number.2.opt|
000478d0  69 6f 6e 61 6c 20 6e 65  74 20 6e 75 6d 62 65 72  |ional net number|
000478e0  0a 00 00 00 44 41 54 41  1d 04 00 00 4e 65 74 50  |....DATA....NetP|
000478f0  72 69 6e 74 5f 4c 69 73  74 53 65 72 76 65 72 73  |rint_ListServers|
00047900  20 20 28 26 34 30 32 30  37 29 0a 23 50 61 72 65  |  (&40207).#Pare|
00047910  6e 74 20 4e 65 74 50 72  69 6e 74 5f 0a 3d 3e 09  |nt NetPrint_.=>.|
00047920  52 30 20 3d 09 46 6f 72  6d 61 74 20 63 6f 64 65  |R0 =.Format code|
00047930  3a 0a 09 20 09 20 20 30  09 3c 6e 61 6d 65 73 20  |:.. .  0.<names |
00047940  61 6e 64 20 6e 75 6d 62  65 72 73 3d 3e 2e 30 3e  |and numbers=>.0>|
00047950  0a 09 20 09 20 20 31 09  3c 6e 61 6d 65 73 20 6f  |.. .  1.<names o|
00047960  6e 6c 79 3d 3e 2e 31 3e  2c 20 73 6f 72 74 65 64  |nly=>.1>, sorted|
00047970  20 77 69 74 68 20 6e 6f  20 64 75 70 6c 69 63 61  | with no duplica|
00047980  74 65 73 0a 09 20 09 20  20 32 09 3c 6e 61 6d 65  |tes.. .  2.<name|
00047990  73 2c 20 6e 75 6d 62 65  72 73 2c 20 73 74 61 74  |s, numbers, stat|
000479a0  75 73 3d 3e 2e 32 3e 0a  09 52 31 20 3d 09 70 6f  |us=>.2>..R1 =.po|
000479b0  69 6e 74 65 72 20 74 6f  20 62 75 66 66 65 72 0a  |inter to buffer.|
000479c0  09 52 32 20 3d 09 73 69  7a 65 20 6f 66 20 62 75  |.R2 =.size of bu|
000479d0  66 66 65 72 0a 09 52 33  20 3d 09 74 69 6d 65 20  |ffer..R3 =.time |
000479e0  74 6f 20 74 61 6b 65 20  62 65 66 6f 72 65 20 72  |to take before r|
000479f0  65 74 75 72 6e 69 6e 67  20 28 63 65 6e 74 69 73  |eturning (centis|
00047a00  65 63 6f 6e 64 73 29 0a  3c 3d 09 52 30 20 3d 09  |econds).<=.R0 =.|
00047a10  6e 75 6d 62 65 72 20 6f  66 20 65 6e 74 72 69 65  |number of entrie|
00047a20  73 20 72 65 74 75 72 6e  65 64 0a 09 52 33 20 3d  |s returned..R3 =|
00047a30  09 52 65 74 75 72 6e 20  63 6f 64 65 3a 0a 09 20  |.Return code:.. |
00047a40  09 20 20 30 09 74 69 6d  65 64 20 6f 75 74 0a 09  |.  0.timed out..|
00047a50  20 09 20 20 31 09 62 75  66 66 65 72 20 66 75 6c  | .  1.buffer ful|
00047a60  6c 0a 0a 54 68 69 73 20  53 57 49 20 72 65 74 75  |l..This SWI retu|
00047a70  72 6e 73 20 74 68 65 20  6e 61 6d 65 73 20 6f 66  |rns the names of|
00047a80  20 61 6c 6c 20 70 72 69  6e 74 65 72 20 73 65 72  | all printer ser|
00047a90  76 65 72 73 2e 20 54 68  65 20 66 6f 72 6d 61 74  |vers. The format|
00047aa0  20 6f 66 20 74 68 65 20  64 61 74 61 20 72 65 74  | of the data ret|
00047ab0  75 72 6e 65 64 20 69 6e  20 74 68 65 20 62 75 66  |urned in the buf|
00047ac0  66 65 72 20 64 65 70 65  6e 64 73 20 6f 6e 20 74  |fer depends on t|
00047ad0  68 65 20 63 6f 64 65 20  70 61 73 73 65 64 20 69  |he code passed i|
00047ae0  6e 20 52 30 2e 0a 23 53  75 62 50 61 67 65 20 30  |n R0..#SubPage 0|
00047af0  0a 4e 65 74 50 72 69 6e  74 5f 4c 69 73 74 53 65  |.NetPrint_ListSe|
00047b00  72 76 65 72 73 20 30 0a  54 68 65 20 62 75 66 66  |rvers 0.The buff|
00047b10  65 72 20 69 73 20 66 69  6c 6c 65 64 20 77 69 74  |er is filled wit|
00047b20  68 20 65 6e 74 72 69 65  73 20 6f 66 20 74 68 65  |h entries of the|
00047b30  20 66 6f 72 6d 3a 0a 0a  53 69 7a 65 09 43 6f 6e  | form:..Size.Con|
00047b40  74 65 6e 74 73 0a 23 4c  69 6e 65 0a 31 09 73 74  |tents.#Line.1.st|
00047b50  61 74 69 6f 6e 20 6e 75  6d 62 65 72 0a 31 09 6e  |ation number.1.n|
00047b60  65 74 20 6e 75 6d 62 65  72 0a 09 6e 75 6c 6c 20  |et number..null |
00047b70  74 65 72 6d 69 6e 61 74  65 64 20 6e 61 6d 65 0a  |terminated name.|
00047b80  23 53 75 62 50 61 67 65  20 31 0a 4e 65 74 50 72  |#SubPage 1.NetPr|
00047b90  69 6e 74 5f 4c 69 73 74  53 65 72 76 65 72 73 20  |int_ListServers |
00047ba0  31 0a 54 68 65 20 62 75  66 66 65 72 20 69 73 20  |1.The buffer is |
00047bb0  66 69 6c 6c 65 64 20 77  69 74 68 20 73 6f 72 74  |filled with sort|
00047bc0  65 64 20 65 6e 74 72 69  65 73 20 6f 66 20 74 68  |ed entries of th|
00047bd0  65 20 66 6f 72 6d 3a 0a  0a 53 69 7a 65 09 43 6f  |e form:..Size.Co|
00047be0  6e 74 65 6e 74 73 0a 23  4c 69 6e 65 0a 09 6e 75  |ntents.#Line..nu|
00047bf0  6c 6c 20 74 65 72 6d 69  6e 61 74 65 64 20 6e 61  |ll terminated na|
00047c00  6d 65 20 28 63 61 73 65  20 69 6e 73 65 6e 73 69  |me (case insensi|
00047c10  74 76 65 29 0a 23 53 75  62 50 61 67 65 20 32 0a  |tve).#SubPage 2.|
00047c20  4e 65 74 50 72 69 6e 74  5f 4c 69 73 74 53 65 72  |NetPrint_ListSer|
00047c30  76 65 72 73 20 32 0a 54  68 65 20 62 75 66 66 65  |vers 2.The buffe|
00047c40  72 20 69 73 20 66 69 6c  6c 65 64 20 77 69 74 68  |r is filled with|
00047c50  20 65 6e 74 72 69 65 73  20 6f 66 20 74 68 65 20  | entries of the |
00047c60  66 6f 72 6d 3a 0a 0a 53  69 7a 65 09 43 6f 6e 74  |form:..Size.Cont|
00047c70  65 6e 74 73 0a 23 4c 69  6e 65 0a 31 09 73 74 61  |ents.#Line.1.sta|
00047c80  74 69 6f 6e 20 6e 75 6d  62 65 72 0a 31 09 6e 65  |tion number.1.ne|
00047c90  74 20 6e 75 6d 62 65 72  0a 31 09 3c 73 74 61 74  |t number.1.<stat|
00047ca0  75 73 3d 3e 4e 65 74 50  72 69 6e 74 5f 73 74 61  |us=>NetPrint_sta|
00047cb0  74 75 73 65 73 3e 0a 31  09 73 74 61 74 69 6f 6e  |tuses>.1.station|
00047cc0  20 6e 75 6d 62 65 72 20  66 6f 72 20 73 74 61 74  | number for stat|
00047cd0  75 73 0a 31 09 6e 65 74  20 6e 75 6d 62 65 72 20  |us.1.net number |
00047ce0  66 6f 72 20 73 74 61 74  75 73 0a 09 6e 75 6c 6c  |for status..null|
00047cf0  20 74 65 72 6d 69 6e 61  74 65 64 20 6e 61 6d 65  | terminated name|
00047d00  0a 00 00 00 44 41 54 41  bc 01 00 00 4e 65 74 50  |....DATA....NetP|
00047d10  72 69 6e 74 5f 52 65 61  64 50 53 4e 61 6d 65 20  |rint_ReadPSName |
00047d20  20 28 26 34 30 32 30 32  29 0a 23 50 61 72 65 6e  | (&40202).#Paren|
00047d30  74 20 4e 65 74 50 72 69  6e 74 5f 0a 3d 3e 09 52  |t NetPrint_.=>.R|
00047d40  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 62  |1 =.pointer to b|
00047d50  75 66 66 65 72 20 66 6f  72 20 72 65 73 75 6c 74  |uffer for result|
00047d60  69 6e 67 20 73 74 72 69  6e 67 0a 09 52 32 20 3d  |ing string..R2 =|
00047d70  09 73 69 7a 65 20 6f 66  20 62 75 66 66 65 72 0a  |.size of buffer.|
00047d80  0a 3c 3d 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |.<=.R0 =.pointer|
00047d90  20 74 6f 20 62 75 66 66  65 72 20 28 52 31 20 6f  | to buffer (R1 o|
00047da0  6e 20 65 6e 74 72 79 29  0a 09 52 31 20 3d 09 70  |n entry)..R1 =.p|
00047db0  6f 69 6e 74 65 72 20 74  6f 20 74 65 72 6d 69 6e  |ointer to termin|
00047dc0  61 74 6f 72 0a 09 52 32  20 3d 09 66 72 65 65 20  |ator..R2 =.free |
00047dd0  62 79 74 65 73 20 69 6e  20 62 75 66 66 65 72 0a  |bytes in buffer.|
00047de0  0a 54 68 69 73 20 53 57  49 20 72 65 61 64 73 20  |.This SWI reads |
00047df0  74 68 65 20 6e 61 6d 65  20 6f 66 20 79 6f 75 72  |the name of your|
00047e00  20 63 75 72 72 65 6e 74  20 70 72 69 6e 74 65 72  | current printer|
00047e10  20 73 65 72 76 65 72 2c  20 6f 72 20 72 65 74 75  | server, or retu|
00047e20  72 6e 73 20 61 20 6e 75  6c 6c 20 73 74 72 69 6e  |rns a null strin|
00047e30  67 20 69 66 20 79 6f 75  72 20 70 72 69 6e 74 65  |g if your printe|
00047e40  72 20 73 65 72 76 65 72  20 69 73 20 6f 6e 6c 79  |r server is only|
00047e50  20 73 74 6f 72 65 64 20  61 73 20 61 20 6e 75 6d  | stored as a num|
00047e60  62 65 72 2e 0a 0a 4e 6f  74 65 3a 20 4e 65 74 50  |ber...Note: NetP|
00047e70  72 69 6e 74 20 70 72 69  6f 72 20 74 6f 20 35 2e  |rint prior to 5.|
00047e80  32 36 20 69 73 20 62 75  67 67 79 2c 20 72 65 74  |26 is buggy, ret|
00047e90  75 72 6e 69 6e 67 20 52  31 20 6f 6e 65 20 74 6f  |urning R1 one to|
00047ea0  6f 20 67 72 65 61 74 2c  20 61 6e 64 20 52 32 20  |o great, and R2 |
00047eb0  6f 6e 65 20 74 6f 6f 20  73 6d 61 6c 6c 2e 0a 0a  |one too small...|
00047ec0  44 41 54 41 f4 00 00 00  4e 65 74 50 72 69 6e 74  |DATA....NetPrint|
00047ed0  5f 52 65 61 64 50 53 4e  75 6d 62 65 72 20 20 28  |_ReadPSNumber  (|
00047ee0  26 34 30 32 30 30 29 0a  23 50 61 72 65 6e 74 20  |&40200).#Parent |
00047ef0  4e 65 74 50 72 69 6e 74  5f 0a 3c 3d 09 52 30 20  |NetPrint_.<=.R0 |
00047f00  3d 09 73 74 61 74 69 6f  6e 20 6e 75 6d 62 65 72  |=.station number|
00047f10  0a 09 52 31 20 3d 09 6e  65 74 20 6e 75 6d 62 65  |..R1 =.net numbe|
00047f20  72 0a 0a 54 68 69 73 20  53 57 49 20 72 65 74 75  |r..This SWI retu|
00047f30  72 6e 73 20 74 68 65 20  66 75 6c 6c 20 73 74 61  |rns the full sta|
00047f40  74 69 6f 6e 20 6e 75 6d  62 65 72 20 6f 66 20 79  |tion number of y|
00047f50  6f 75 72 20 63 75 72 72  65 6e 74 20 70 72 69 6e  |our current prin|
00047f60  74 65 72 20 73 65 72 76  65 72 2c 20 6f 72 20 52  |ter server, or R|
00047f70  30 20 3d 20 52 31 20 3d  20 30 20 69 66 20 79 6f  |0 = R1 = 0 if yo|
00047f80  75 72 20 63 75 72 72 65  6e 74 20 70 72 69 6e 74  |ur current print|
00047f90  65 72 20 73 65 72 76 65  72 20 69 73 20 73 74 6f  |er server is sto|
00047fa0  72 65 64 20 6f 6e 6c 79  20 61 73 20 61 20 6e 61  |red only as a na|
00047fb0  6d 65 2e 0a 44 41 54 41  18 01 00 00 4e 65 74 50  |me..DATA....NetP|
00047fc0  72 69 6e 74 5f 52 65 61  64 50 53 54 69 6d 65 6f  |rint_ReadPSTimeo|
00047fd0  75 74 73 20 20 28 26 34  30 32 30 34 29 0a 23 50  |uts  (&40204).#P|
00047fe0  61 72 65 6e 74 20 4e 65  74 50 72 69 6e 74 5f 0a  |arent NetPrint_.|
00047ff0  3c 3d 09 52 30 20 3d 09  74 72 61 6e 73 6d 69 74  |<=.R0 =.transmit|
00048000  20 63 6f 75 6e 74 0a 09  52 31 20 3d 09 74 72 61  | count..R1 =.tra|
00048010  6e 73 6d 69 74 20 64 65  6c 61 79 0a 09 52 32 20  |nsmit delay..R2 |
00048020  3d 09 6d 61 63 68 69 6e  65 20 70 65 65 6b 20 63  |=.machine peek c|
00048030  6f 75 6e 74 0a 09 52 33  20 3d 09 6d 61 63 68 69  |ount..R3 =.machi|
00048040  6e 65 20 70 65 65 6b 20  64 65 6c 61 79 0a 09 52  |ne peek delay..R|
00048050  34 20 3d 09 72 65 63 65  69 76 65 20 64 65 6c 61  |4 =.receive dela|
00048060  79 0a 09 52 35 20 3d 09  62 72 6f 61 64 63 61 73  |y..R5 =.broadcas|
00048070  74 20 64 65 6c 61 79 0a  0a 54 68 69 73 20 53 57  |t delay..This SW|
00048080  49 20 72 65 61 64 73 20  74 68 65 20 63 75 72 72  |I reads the curr|
00048090  65 6e 74 20 63 6f 6d 6d  75 6e 69 63 61 74 69 6f  |ent communicatio|
000480a0  6e 20 74 69 6d 65 6f 75  74 73 2e 20 41 6c 6c 20  |n timeouts. All |
000480b0  64 65 6c 61 79 73 20 61  72 65 20 69 6e 20 63 65  |delays are in ce|
000480c0  6e 74 69 73 65 63 6f 6e  64 73 2e 0a 44 41 54 41  |ntiseconds..DATA|
000480d0  da 00 00 00 4e 65 74 50  72 69 6e 74 5f 53 65 74  |....NetPrint_Set|
000480e0  50 53 4e 61 6d 65 20 20  28 26 34 30 32 30 33 29  |PSName  (&40203)|
000480f0  0a 23 50 61 72 65 6e 74  20 4e 65 74 50 72 69 6e  |.#Parent NetPrin|
00048100  74 5f 0a 3d 3e 09 52 30  20 3d 09 70 6f 69 6e 74  |t_.=>.R0 =.point|
00048110  65 72 20 74 6f 20 6e 61  6d 65 0a 0a 54 68 69 73  |er to name..This|
00048120  20 53 57 49 20 73 65 74  73 20 74 68 65 20 6e 61  | SWI sets the na|
00048130  6d 65 64 20 70 72 69 6e  74 65 72 20 73 65 72 76  |med printer serv|
00048140  65 72 20 61 73 20 79 6f  75 72 20 63 75 72 72 65  |er as your curre|
00048150  6e 74 20 70 72 69 6e 74  65 72 20 73 65 72 76 65  |nt printer serve|
00048160  72 2e 0a 23 20 47 65 72  70 68 3e 20 49 20 61 73  |r..# Gerph> I as|
00048170  73 75 6d 65 20 69 74 20  74 61 6b 65 73 20 61 20  |sume it takes a |
00048180  63 6f 70 79 20 6f 66 20  69 74 2c 20 62 75 74 20  |copy of it, but |
00048190  49 27 6c 6c 20 68 61 76  65 20 74 6f 20 63 68 65  |I'll have to che|
000481a0  63 6b 2e 2e 2e 0a 00 00  44 41 54 41 a8 00 00 00  |ck......DATA....|
000481b0  4e 65 74 50 72 69 6e 74  5f 53 65 74 50 53 4e 75  |NetPrint_SetPSNu|
000481c0  6d 62 65 72 20 20 28 26  34 30 32 30 31 29 0a 23  |mber  (&40201).#|
000481d0  50 61 72 65 6e 74 20 4e  65 74 50 72 69 6e 74 5f  |Parent NetPrint_|
000481e0  0a 3d 3e 09 52 30 20 3d  09 73 74 61 74 69 6f 6e  |.=>.R0 =.station|
000481f0  20 6e 75 6d 62 65 72 0a  09 52 31 20 3d 09 6e 65  | number..R1 =.ne|
00048200  74 20 6e 75 6d 62 65 72  0a 0a 54 68 69 73 20 53  |t number..This S|
00048210  57 49 20 73 65 74 73 20  74 68 65 20 66 75 6c 6c  |WI sets the full|
00048220  20 73 74 61 74 69 6f 6e  20 6e 75 6d 62 65 72 20  | station number |
00048230  6f 66 20 79 6f 75 72 20  63 75 72 72 65 6e 74 20  |of your current |
00048240  70 72 69 6e 74 65 72 20  73 65 72 76 65 72 2e 0a  |printer server..|
00048250  44 41 54 41 16 01 00 00  4e 65 74 50 72 69 6e 74  |DATA....NetPrint|
00048260  5f 53 65 74 50 53 54 69  6d 65 6f 75 74 73 20 20  |_SetPSTimeouts  |
00048270  28 26 34 30 32 30 35 29  0a 23 50 61 72 65 6e 74  |(&40205).#Parent|
00048280  20 4e 65 74 50 72 69 6e  74 5f 0a 3d 3e 09 52 30  | NetPrint_.=>.R0|
00048290  20 3d 09 74 72 61 6e 73  6d 69 74 20 63 6f 75 6e  | =.transmit coun|
000482a0  74 0a 09 52 31 20 3d 09  74 72 61 6e 73 6d 69 74  |t..R1 =.transmit|
000482b0  20 64 65 6c 61 79 0a 09  52 32 20 3d 09 6d 61 63  | delay..R2 =.mac|
000482c0  68 69 6e 65 20 70 65 65  6b 20 63 6f 75 6e 74 0a  |hine peek count.|
000482d0  09 52 33 20 3d 09 6d 61  63 68 69 6e 65 20 70 65  |.R3 =.machine pe|
000482e0  65 6b 20 64 65 6c 61 79  0a 09 52 34 20 3d 09 72  |ek delay..R4 =.r|
000482f0  65 63 65 69 76 65 20 64  65 6c 61 79 0a 09 52 35  |eceive delay..R5|
00048300  20 3d 09 62 72 6f 61 64  63 61 73 74 20 64 65 6c  | =.broadcast del|
00048310  61 79 0a 0a 54 68 69 73  20 53 57 49 20 73 65 74  |ay..This SWI set|
00048320  73 20 74 68 65 20 63 75  72 72 65 6e 74 20 63 6f  |s the current co|
00048330  6d 6d 75 6e 69 63 61 74  69 6f 6e 20 74 69 6d 65  |mmunication time|
00048340  6f 75 74 73 2e 20 41 6c  6c 20 64 65 6c 61 79 73  |outs. All delays|
00048350  20 61 72 65 20 69 6e 20  63 65 6e 74 69 73 65 63  | are in centisec|
00048360  6f 6e 64 73 2e 0a 00 00  44 41 54 41 eb 00 00 00  |onds....DATA....|
00048370  4e 65 74 50 72 69 6e 74  20 73 74 61 74 75 73 20  |NetPrint status |
00048380  76 61 6c 75 65 73 0a 53  74 61 74 75 73 09 4e 61  |values.Status.Na|
00048390  6d 65 0a 23 4c 69 6e 65  0a 30 09 53 74 61 74 75  |me.#Line.0.Statu|
000483a0  73 5f 52 65 61 64 79 0a  31 09 53 74 61 74 75 73  |s_Ready.1.Status|
000483b0  5f 42 75 73 79 0a 32 09  53 74 61 74 75 73 5f 4a  |_Busy.2.Status_J|
000483c0  61 6d 6d 65 64 0a 36 09  53 74 61 74 75 73 5f 4f  |ammed.6.Status_O|
000483d0  66 66 6c 69 6e 65 0a 37  09 53 74 61 74 75 73 5f  |ffline.7.Status_|
000483e0  41 6c 72 65 61 64 79 4f  70 65 6e 0a 0a 53 74 61  |AlreadyOpen..Sta|
000483f0  74 75 73 5f 42 75 73 79  20 69 73 20 74 68 65 20  |tus_Busy is the |
00048400  6f 6e 6c 79 20 73 74 61  74 75 73 20 77 68 69 63  |only status whic|
00048410  68 20 75 73 65 73 20 74  68 65 20 6f 70 74 69 6f  |h uses the optio|
00048420  6e 61 6c 20 73 74 61 74  69 6f 6e 20 61 6e 64 20  |nal station and |
00048430  6e 65 74 20 6e 75 6d 62  65 72 20 69 6e 20 69 74  |net number in it|
00048440  73 20 45 6e 67 6c 69 73  68 20 6d 65 73 73 61 67  |s English messag|
00048450  65 2e 0a 00 44 49 52 24  64 0e 00 00 64 0e 00 00  |e...DIR$d...d...|
00048460  b8 92 04 00 48 fd ff ff  35 8a 75 26 d5 06 00 00  |....H...5.u&....|
00048470  03 00 00 00 00 00 00 00  21 72 6f 6f 74 00 00 00  |........!root...|
00048480  90 99 04 00 48 ff ff ff  05 57 00 19 dd 03 00 00  |....H....W......|
00048490  13 00 00 00 00 00 00 00  41 64 64 43 61 6c 6c 42  |........AddCallB|
000484a0  61 63 6b 00 70 9d 04 00  46 fd ff ff 62 54 8a a5  |ack.p...F...bT..|
000484b0  dd 00 00 00 13 00 00 00  00 00 00 00 61 72 65 61  |............area|
000484c0  73 00 00 00 50 9e 04 00  47 ff ff ff 0f cb a9 cd  |s...P...G.......|
000484d0  a1 00 00 00 13 00 00 00  00 00 00 00 42 47 65 74  |............BGet|
000484e0  00 00 00 00 f4 9e 04 00  48 ff ff ff ef 4b cd 08  |........H....K..|
000484f0  19 01 00 00 13 00 00 00  00 00 00 00 42 69 6e 61  |............Bina|
00048500  72 79 54 6f 44 65 63 69  6d 61 6c 00 10 a0 04 00  |ryToDecimal.....|
00048510  47 ff ff ff bc 42 b9 cd  81 00 00 00 13 00 00 00  |G....B..........|
00048520  00 00 00 00 42 50 75 74  00 00 00 00 94 a0 04 00  |....BPut........|
00048530  47 ff ff ff a0 d6 a9 cd  91 02 00 00 13 00 00 00  |G...............|
00048540  00 00 00 00 43 68 61 6e  67 65 44 79 6e 61 6d 69  |....ChangeDynami|
00048550  63 41 72 65 61 00 00 00  28 a3 04 00 48 ff ff ff  |cArea...(...H...|
00048560  dc 86 4a 11 6c 03 00 00  13 00 00 00 00 00 00 00  |..J.l...........|
00048570  43 6c 61 69 6d 00 00 00  94 a6 04 00 47 ff ff ff  |Claim.......G...|
00048580  60 e3 a9 cd 68 01 00 00  13 00 00 00 00 00 00 00  |`...h...........|
00048590  43 6c 61 69 6d 53 63 72  65 65 6e 4d 65 6d 6f 72  |ClaimScreenMemor|
000485a0  79 00 00 00 fc a7 04 00  47 ff ff ff cd e9 a9 cd  |y.......G.......|
000485b0  86 01 00 00 13 00 00 00  00 00 00 00 43 52 43 00  |............CRC.|
000485c0  84 a9 04 00 47 ff ff ff  10 fb a9 cd ec 01 00 00  |....G...........|
000485d0  13 00 00 00 00 00 00 00  45 6e 74 65 72 4f 53 00  |........EnterOS.|
000485e0  70 ab 04 00 47 ff ff ff  c6 04 aa cd 86 01 00 00  |p...G...........|
000485f0  13 00 00 00 00 00 00 00  45 76 61 6c 75 61 74 65  |........Evaluate|
00048600  45 78 70 72 65 73 73 69  6f 6e 00 00 f8 ac 04 00  |Expression......|
00048610  48 ff ff ff ee 0c af 1f  29 02 00 00 13 00 00 00  |H.......).......|
00048620  00 00 00 00 45 78 69 74  00 00 00 00 24 af 04 00  |....Exit....$...|
00048630  47 ff ff ff f5 31 aa cd  19 01 00 00 13 00 00 00  |G....1..........|
00048640  00 00 00 00 45 78 69 74  41 6e 64 44 69 65 00 00  |....ExitAndDie..|
00048650  40 b0 04 00 47 ff ff ff  16 58 aa cd eb 02 00 00  |@...G....X......|
00048660  13 00 00 00 00 00 00 00  46 69 6e 64 00 00 00 00  |........Find....|
00048670  2c b3 04 00 48 ff ff ff  77 89 fc 18 13 01 00 00  |,...H...w.......|
00048680  13 00 00 00 00 00 00 00  47 65 74 45 6e 76 00 00  |........GetEnv..|
00048690  40 b4 04 00 47 ff ff ff  38 62 aa cd 61 01 00 00  |@...G...8b..a...|
000486a0  13 00 00 00 00 00 00 00  72 65 6c 65 61 73 65 00  |........release.|
000486b0  a4 b5 04 00 47 ff ff ff  f2 72 1a 0c bd 00 00 00  |....G....r......|
000486c0  13 00 00 00 00 00 00 00  53 65 74 45 43 46 4f 72  |........SetECFOr|
000486d0  69 67 69 6e 00 00 00 00  64 b6 04 00 48 ff ff ff  |igin....d...H...|
000486e0  e0 38 37 0b c8 03 00 00  13 00 00 00 00 00 00 00  |.87.............|
000486f0  73 77 69 6e 75 6d 62 65  72 66 72 6f 6d 73 74 72  |swinumberfromstr|
00048700  69 6e 67 00 2c ba 04 00  47 ff ff ff 2f 68 aa cd  |ing.,...G.../h..|
00048710  3c 03 00 00 13 00 00 00  00 00 00 00 53 57 49 4e  |<...........SWIN|
00048720  75 6d 62 65 72 54 6f 53  74 72 69 6e 67 00 00 00  |umberToString...|
00048730  68 bd 04 00 47 ff ff ff  63 47 b9 cd 47 01 00 00  |h...G...cG..G...|
00048740  13 00 00 00 00 00 00 00  55 70 64 61 74 65 4d 45  |........UpdateME|
00048750  4d 43 00 00 b0 be 04 00  46 ff ff ff 9a 04 fd fc  |MC......F.......|
00048760  eb 01 00 00 13 00 00 00  00 00 00 00 56 61 6c 69  |............Vali|
00048770  64 61 74 65 41 64 64 72  65 73 73 00 9c c0 04 00  |dateAddress.....|
00048780  47 ff ff ff 26 c4 a5 cd  1b 01 00 00 13 00 00 00  |G...&...........|
00048790  00 00 00 00 67 65 6e 65  72 61 74 65 65 76 65 6e  |....generateeven|
000487a0  74 00 00 00 b8 c1 04 00  48 ff ff ff 2f 79 b0 1f  |t.......H.../y..|
000487b0  1c 01 00 00 13 00 00 00  00 00 00 00 4d 6f 75 73  |............Mous|
000487c0  65 00 00 00 d4 c2 04 00  48 ff ff ff a3 c6 02 19  |e.......H.......|
000487d0  a4 03 00 00 13 00 00 00  00 00 00 00 43 68 61 6e  |............Chan|
000487e0  67 65 45 6e 76 69 72 6f  6e 6d 65 6e 74 00 00 00  |geEnvironment...|
000487f0  78 c6 04 00 47 ff ff ff  a6 6d aa cd c1 01 00 00  |x...G....m......|
00048800  13 00 00 00 00 00 00 00  43 6f 6e 66 69 72 6d 00  |........Confirm.|
00048810  3c c8 04 00 47 ff ff ff  25 7a aa cd 27 01 00 00  |<...G...%z..'...|
00048820  13 00 00 00 00 00 00 00  53 65 74 56 61 72 56 61  |........SetVarVa|
00048830  6c 00 00 00 64 c9 04 00  48 fd ff ff 8c 63 b2 1f  |l...d...H....c..|
00048840  d9 04 00 00 13 00 00 00  00 00 00 00 76 61 72 74  |............vart|
00048850  79 70 65 73 00 00 00 00  40 ce 04 00 48 fd ff ff  |ypes....@...H...|
00048860  b5 09 81 2b 60 01 00 00  13 01 00 00 00 00 00 00  |...+`...........|
00048870  41 72 67 73 00 00 00 00  a4 da 04 00 48 fd ff ff  |Args........H...|
00048880  50 0a 81 2b 3c 0c 00 00  13 01 00 00 00 00 00 00  |P..+<...........|
00048890  42 79 74 65 00 00 00 00  ac 1c 07 00 48 fd ff ff  |Byte........H...|
000488a0  01 12 81 2b 60 01 00 00  13 01 00 00 00 00 00 00  |...+`...........|
000488b0  46 69 6c 65 00 00 00 00  f0 38 07 00 48 fd ff ff  |File.....8..H...|
000488c0  ab 12 81 2b 98 06 00 00  13 01 00 00 00 00 00 00  |...+............|
000488d0  46 53 43 6f 6e 74 72 6f  6c 00 00 00 04 a3 07 00  |FSControl.......|
000488e0  48 fd ff ff ed 15 81 2b  18 06 00 00 13 01 00 00  |H......+........|
000488f0  00 00 00 00 53 70 72 69  74 65 4f 70 5f 00 00 00  |....SpriteOp_...|
00048900  58 00 08 00 48 fd ff ff  ee 18 81 2b a0 02 00 00  |X...H......+....|
00048910  13 01 00 00 00 00 00 00  4d 6f 64 75 6c 65 00 00  |........Module..|
00048920  a0 52 08 00 48 fd ff ff  e8 1a 81 2b bc 04 00 00  |.R..H......+....|
00048930  13 01 00 00 00 00 00 00  43 6f 6e 76 65 72 74 00  |........Convert.|
00048940  d4 88 08 00 48 fd ff ff  bd 1c 81 2b d4 01 00 00  |....H......+....|
00048950  13 01 00 00 00 00 00 00  55 70 43 61 6c 6c 00 00  |........UpCall..|
00048960  d8 c3 08 00 48 fd ff ff  57 1e 81 2b 54 01 00 00  |....H...W..+T...|
00048970  13 01 00 00 00 00 00 00  47 42 50 42 00 00 00 00  |........GBPB....|
00048980  74 e2 08 00 48 fd ff ff  17 1f 81 2b 98 00 00 00  |t...H......+....|
00048990  13 01 00 00 00 00 00 00  50 6c 6f 74 00 00 00 00  |........Plot....|
000489a0  58 f2 08 00 48 fd ff ff  51 1f 81 2b a4 00 00 00  |X...H...Q..+....|
000489b0  13 01 00 00 00 00 00 00  47 53 00 00 38 f8 08 00  |........GS..8...|
000489c0  48 fd ff ff 96 1f 81 2b  70 01 00 00 13 01 00 00  |H......+p.......|
000489d0  00 00 00 00 48 65 61 70  00 00 00 00 f4 04 09 00  |....Heap........|
000489e0  48 fd ff ff 28 20 81 2b  8c 02 00 00 13 01 00 00  |H...( .+........|
000489f0  00 00 00 00 52 65 61 64  00 00 00 00 3c 3e 09 00  |....Read....<>..|
00048a00  48 fd ff ff 35 21 81 2b  94 03 00 00 13 01 00 00  |H...5!.+........|
00048a10  00 00 00 00 57 6f 72 64  00 00 00 00 64 6e 09 00  |....Word....dn..|
00048a20  48 fd ff ff c9 22 81 2b  b4 00 00 00 13 01 00 00  |H....".+........|
00048a30  00 00 00 00 57 72 69 74  65 00 00 00 50 79 09 00  |....Write...Py..|
00048a40  46 ff ff ff 61 ef 5e f5  51 03 00 00 13 00 00 00  |F...a.^.Q.......|
00048a50  00 00 00 00 46 69 6e 64  4d 65 6d 4d 61 70 45 6e  |....FindMemMapEn|
00048a60  74 72 69 65 73 00 00 00  a4 7c 09 00 48 fd ff ff  |tries....|..H...|
00048a70  de 43 d2 08 74 01 00 00  13 00 00 00 00 00 00 00  |.C..t...........|
00048a80  6d 65 6d 6d 61 70 72 65  71 75 65 73 74 00 00 00  |memmaprequest...|
00048a90  18 7e 09 00 47 ff ff ff  c0 e6 bd cd 63 01 00 00  |.~..G.......c...|
00048aa0  13 00 00 00 00 00 00 00  53 65 74 4d 65 6d 4d 61  |........SetMemMa|
00048ab0  70 45 6e 74 72 69 65 73  00 00 00 00 7c 7f 09 00  |pEntries....|...|
00048ac0  47 ff ff ff cc ae ad cd  37 01 00 00 13 00 00 00  |G.......7.......|
00048ad0  00 00 00 00 43 61 6c 6c  41 66 74 65 72 00 00 00  |....CallAfter...|
00048ae0  b4 80 09 00 47 ff ff ff  a5 e9 bd cd 9e 00 00 00  |....G...........|
00048af0  13 00 00 00 00 00 00 00  52 65 6d 6f 76 65 43 61  |........RemoveCa|
00048b00  6c 6c 42 61 63 6b 00 00  54 81 09 00 47 ff ff ff  |llBack..T...G...|
00048b10  d8 eb bd cd ac 00 00 00  13 00 00 00 00 00 00 00  |................|
00048b20  52 65 6d 6f 76 65 54 69  63 6b 65 72 45 76 65 6e  |RemoveTickerEven|
00048b30  74 00 00 00 00 82 09 00  47 ff ff ff 81 b4 ad cd  |t.......G.......|
00048b40  4e 01 00 00 13 00 00 00  00 00 00 00 43 61 6c 6c  |N...........Call|
00048b50  45 76 65 72 79 00 00 00  50 83 09 00 48 fd ff ff  |Every...P...H...|
00048b60  82 23 81 2b 88 01 00 00  13 01 00 00 00 00 00 00  |.#.+............|
00048b70  44 79 6e 61 6d 69 63 41  72 65 61 00 0c a4 09 00  |DynamicArea.....|
00048b80  46 ff ff ff c1 c9 56 f5  75 00 00 00 13 00 00 00  |F.....V.u.......|
00048b90  00 00 00 00 41 64 64 54  6f 56 65 63 74 6f 72 00  |....AddToVector.|
00048ba0  84 a4 09 00 46 ff ff ff  0f ec 56 f5 2a 02 00 00  |....F.....V.*...|
00048bb0  13 00 00 00 00 00 00 00  42 72 65 61 6b 43 74 72  |........BreakCtr|
00048bc0  6c 00 00 00 b0 a6 09 00  48 ff ff ff 84 61 69 26  |l.......H....ai&|
00048bd0  c9 01 00 00 13 00 00 00  00 00 00 00 42 72 65 61  |............Brea|
00048be0  6b 50 74 00 7c a8 09 00  48 ff ff ff ae ea fe 18  |kPt.|...H.......|
00048bf0  e5 01 00 00 13 00 00 00  00 00 00 00 43 61 6c 6c  |............Call|
00048c00  41 56 65 63 74 6f 72 00  64 aa 09 00 46 ff ff ff  |AVector.d...F...|
00048c10  aa 82 5c f5 4e 02 00 00  13 00 00 00 00 00 00 00  |..\.N...........|
00048c20  43 61 6c 6c 42 61 63 6b  00 00 00 00 b4 ac 09 00  |CallBack........|
00048c30  46 ff ff ff 9a b0 5c f5  e5 02 00 00 13 00 00 00  |F.....\.........|
00048c40  00 00 00 00 43 68 61 6e  67 65 64 42 6f 78 00 00  |....ChangedBox..|
00048c50  9c af 09 00 48 ff ff ff  13 8a 69 26 45 03 00 00  |....H.....i&E...|
00048c60  13 00 00 00 00 00 00 00  43 68 61 6e 67 65 52 65  |........ChangeRe|
00048c70  64 69 72 65 63 74 69 6f  6e 00 00 00 e4 b2 09 00  |direction.......|
00048c80  48 ff ff ff 54 3b 12 0e  f9 01 00 00 13 00 00 00  |H...T;..........|
00048c90  00 00 00 00 43 68 65 63  6b 4d 6f 64 65 56 61 6c  |....CheckModeVal|
00048ca0  69 64 00 00 e0 b4 09 00  48 ff ff ff 5d 67 f7 28  |id......H...]g.(|
00048cb0  ee 07 00 00 13 00 00 00  00 00 00 00 43 6c 61 69  |............Clai|
00048cc0  6d 44 65 76 69 63 65 56  65 63 74 6f 72 00 00 00  |mDeviceVector...|
00048cd0  d0 bc 09 00 48 fd ff ff  6d cc f6 28 37 03 00 00  |....H...m..(7...|
00048ce0  13 00 00 00 00 00 00 00  73 79 73 74 65 6d 64 65  |........systemde|
00048cf0  76 69 63 65 73 00 00 00  08 c0 09 00 47 ff ff ff  |vices.......G...|
00048d00  de 4a 87 0c 7e 02 00 00  13 00 00 00 00 00 00 00  |.J..~...........|
00048d10  43 4c 49 00 88 c2 09 00  46 ff ff ff 51 74 5e f5  |CLI.....F...Qt^.|
00048d20  42 02 00 00 13 00 00 00  00 00 00 00 43 6f 6e 74  |B...........Cont|
00048d30  72 6f 6c 00 cc c4 09 00  48 ff ff ff e1 b1 ae 1f  |rol.....H.......|
00048d40  93 03 00 00 13 00 00 00  00 00 00 00 44 65 6c 69  |............Deli|
00048d50  6e 6b 41 70 70 6c 69 63  61 74 69 6f 6e 00 00 00  |nkApplication...|
00048d60  60 c8 09 00 48 ff ff ff  4f 3d 06 19 cf 01 00 00  |`...H...O=......|
00048d70  13 00 00 00 00 00 00 00  47 65 6e 65 72 61 74 65  |........Generate|
00048d80  45 72 72 6f 72 00 00 00  30 ca 09 00 48 ff ff ff  |Error...0...H...|
00048d90  db d8 74 19 4b 01 00 00  13 00 00 00 00 00 00 00  |..t.K...........|
00048da0  49 6e 73 74 61 6c 6c 4b  65 79 48 61 6e 64 6c 65  |InstallKeyHandle|
00048db0  72 00 00 00 7c cb 09 00  46 ff ff ff 81 da 0e fb  |r...|...F.......|
00048dc0  d6 00 00 00 13 00 00 00  00 00 00 00 69 6e 74 6f  |............into|
00048dd0  66 66 00 00 54 cc 09 00  46 ff ff ff d0 4c 10 fb  |ff..T...F....L..|
00048de0  d2 00 00 00 13 00 00 00  00 00 00 00 69 6e 74 6f  |............into|
00048df0  6e 00 00 00 28 cd 09 00  46 fd ff ff 1c 0c 64 f5  |n...(...F.....d.|
00048e00  86 00 00 00 13 00 00 00  00 00 00 00 4d 6f 75 73  |............Mous|
00048e10  65 42 75 74 74 6f 6e 73  00 00 00 00 b0 cd 09 00  |eButtons........|
00048e20  48 ff ff ff ca 39 f8 28  87 00 00 00 13 00 00 00  |H....9.(........|
00048e30  00 00 00 00 4e 65 77 4c  69 6e 65 00 38 ce 09 00  |....NewLine.8...|
00048e40  48 ff ff ff fd 91 b1 1f  31 01 00 00 13 00 00 00  |H.......1.......|
00048e50  00 00 00 00 50 72 69 6e  74 43 68 61 72 00 00 00  |....PrintChar...|
00048e60  6c cf 09 00 48 ff ff ff  41 79 f7 28 a1 03 00 00  |l...H...Ay.(....|
00048e70  13 00 00 00 00 00 00 00  52 65 6c 65 61 73 65 44  |........ReleaseD|
00048e80  65 76 69 63 65 56 65 63  74 6f 72 00 10 d3 09 00  |eviceVector.....|
00048e90  47 ff ff ff 43 f8 bd cd  0b 01 00 00 13 00 00 00  |G...C...........|
00048ea0  00 00 00 00 52 65 6c 69  6e 6b 41 70 70 6c 69 63  |....RelinkApplic|
00048eb0  61 74 69 6f 6e 00 00 00  1c d4 09 00 48 ff ff ff  |ation.......H...|
00048ec0  d4 5b 07 1e 37 01 00 00  13 00 00 00 00 00 00 00  |.[..7...........|
00048ed0  52 65 6d 6f 76 65 43 75  72 73 6f 72 73 00 00 00  |RemoveCursors...|
00048ee0  54 d5 09 00 46 ff ff ff  0d a8 69 f5 8c 00 00 00  |T...F.....i.....|
00048ef0  13 00 00 00 00 00 00 00  52 65 73 74 6f 72 65 43  |........RestoreC|
00048f00  75 72 73 6f 72 73 00 00  e0 d5 09 00 48 ff ff ff  |ursors......H...|
00048f10  c3 0a b2 1f ec 02 00 00  13 00 00 00 00 00 00 00  |................|
00048f20  53 65 74 43 61 6c 6c 42  61 63 6b 00 cc d8 09 00  |SetCallBack.....|
00048f30  46 ff ff ff f7 de 6a f5  1a 02 00 00 13 00 00 00  |F.....j.........|
00048f40  00 00 00 00 53 65 74 45  6e 76 00 00 e8 da 09 00  |....SetEnv......|
00048f50  47 ff ff ff ee f1 e7 02  f2 01 00 00 13 00 00 00  |G...............|
00048f60  00 00 00 00 53 65 74 43  6f 6c 6f 75 72 00 00 00  |....SetColour...|
00048f70  dc dc 09 00 46 fd ff ff  2f 5e 6b f5 83 01 00 00  |....F.../^k.....|
00048f80  13 00 00 00 00 00 00 00  73 65 74 63 6f 6c 6f 75  |........setcolou|
00048f90  72 61 63 74 69 6f 6e 73  00 00 00 00 60 de 09 00  |ractions....`...|
00048fa0  48 ff ff ff 17 71 13 0e  af 07 00 00 13 00 00 00  |H....q..........|
00048fb0  00 00 00 00 53 75 62 73  74 69 74 75 74 65 41 72  |....SubstituteAr|
00048fc0  67 73 00 00 10 e6 09 00  46 ff ff ff 0c ad 6b f5  |gs......F.....k.|
00048fd0  28 01 00 00 13 00 00 00  00 00 00 00 55 6e 75 73  |(...........Unus|
00048fe0  65 64 53 57 49 00 00 00  38 e7 09 00 47 fd ff ff  |edSWI...8...G...|
00048ff0  d5 e7 f4 c7 92 00 00 00  13 00 00 00 00 00 00 00  |................|
00049000  73 63 61 6c 65 66 61 63  74 6f 72 73 00 00 00 00  |scalefactors....|
00049010  cc e7 09 00 47 ff ff ff  5a 2e de 79 53 02 00 00  |....G...Z..yS...|
00049020  13 00 00 00 00 00 00 00  43 6c 61 69 6d 50 72 6f  |........ClaimPro|
00049030  63 65 73 73 6f 72 56 65  63 74 6f 72 00 00 00 00  |cessorVector....|
00049040  20 ea 09 00 47 ff ff ff  19 5b 28 0c 85 00 00 00  | ...G....[(.....|
00049050  13 00 00 00 00 00 00 00  52 65 73 65 74 00 00 00  |........Reset...|
00049060  a8 ea 09 00 48 fd ff ff  41 26 81 2b 50 01 00 00  |....H...A&.+P...|
00049070  13 01 00 00 00 00 00 00  53 65 72 69 61 6c 4f 70  |........SerialOp|
00049080  00 00 00 00 e8 03 0a 00  48 fd ff ff d3 26 81 2b  |........H....&.+|
00049090  4c 00 00 00 13 01 00 00  00 00 00 00 68 61 72 64  |L...........hard|
000490a0  77 61 72 65 5f 00 00 00  74 08 0a 00 48 fd ff ff  |ware_...t...H...|
000490b0  03 27 81 2b 80 00 00 00  13 01 00 00 00 00 00 00  |.'.+............|
000490c0  53 63 72 65 65 6e 4d 6f  64 65 00 00 a4 0d 0a 00  |ScreenMode......|
000490d0  47 ff ff ff 38 37 a3 cd  c8 00 00 00 13 00 00 00  |G...87..........|
000490e0  00 00 00 00 73 65 72 76  69 63 65 63 61 6c 6c 00  |....servicecall.|
000490f0  6c 0e 0a 00 48 fd ff ff  4b 27 81 2b 48 00 00 00  |l...H...K'.+H...|
00049100  13 01 00 00 00 00 00 00  4d 4d 55 43 6f 6e 74 72  |........MMUContr|
00049110  6f 6c 00 00 24 11 0a 00  48 fd ff ff 6f 27 81 2b  |ol..$...H...o'.+|
00049120  48 00 00 00 13 01 00 00  00 00 00 00 50 6c 61 74  |H...........Plat|
00049130  66 6f 72 6d 46 65 61 74  75 72 65 73 00 00 00 00  |formFeatures....|
00049140  24 15 0a 00 47 ff ff ff  08 fa 48 bf ec 01 00 00  |$...G.....H.....|
00049150  13 00 00 00 00 00 00 00  53 79 6e 63 68 72 6f 6e  |........Synchron|
00049160  69 73 65 43 6f 64 65 41  72 65 61 73 00 00 00 00  |iseCodeAreas....|
00049170  10 17 0a 00 48 fd ff ff  ac 67 5e 25 b8 00 00 00  |....H....g^%....|
00049180  33 00 00 00 00 00 00 00  64 65 70 72 65 63 69 61  |3.......deprecia|
00049190  74 65 64 00 c8 17 0a 00  48 fd ff ff b3 27 81 2b  |ted.....H....'.+|
000491a0  2c 00 00 00 13 01 00 00  00 00 00 00 46 53 45 6e  |,...........FSEn|
000491b0  74 72 79 5f 00 00 00 00  b8 19 0a 00 48 fd ff ff  |try_........H...|
000491c0  ab 00 75 19 8c 00 00 00  13 00 00 00 00 00 00 00  |..u.............|
000491d0  6b 65 79 62 6f 61 72 64  69 64 00 00 44 1a 0a 00  |keyboardid..D...|
000491e0  48 fd ff ff eb 59 80 19  80 00 00 00 13 00 00 00  |H....Y..........|
000491f0  00 00 00 00 6d 6f 6e 69  74 6f 72 74 79 70 65 73  |....monitortypes|
00049200  00 00 00 00 c4 1a 0a 00  48 ff ff ff 65 03 06 19  |........H...e...|
00049210  b9 01 00 00 13 00 00 00  00 00 00 00 43 61 6c 6c  |............Call|
00049220  41 53 57 49 00 00 00 00  80 1c 0a 00 48 ff ff ff  |ASWI........H...|
00049230  fa 2c 06 19 86 01 00 00  13 00 00 00 00 00 00 00  |.,..............|
00049240  43 61 6c 6c 41 53 57 49  52 31 32 00 08 1e 0a 00  |CallASWIR12.....|
00049250  48 ff ff ff c4 26 e1 18  07 02 00 00 13 00 00 00  |H....&..........|
00049260  00 00 00 00 53 70 72 69  74 65 4f 70 00 00 00 00  |....SpriteOp....|
00049270  10 20 0a 00 48 fd ff ff  15 28 81 2b e0 01 00 00  |. ..H....(.+....|
00049280  13 01 00 00 00 00 00 00  68 61 6e 64 6c 65 72 73  |........handlers|
00049290  00 00 00 00 f4 30 0a 00  48 ff ff ff f4 e3 71 2a  |.....0..H.....q*|
000492a0  c6 09 00 00 13 00 00 00  00 00 00 00 50 72 65 74  |............Pret|
000492b0  74 79 50 72 69 6e 74 00  44 41 54 41 d5 06 00 00  |tyPrint.DATA....|
000492c0  4f 53 0a 23 50 61 72 65  6e 74 20 21 52 6f 6f 74  |OS.#Parent !Root|
000492d0  0a 23 50 72 65 66 69 78  20 4f 53 5f 0a 23 54 61  |.#Prefix OS_.#Ta|
000492e0  62 6c 65 20 43 6f 6c 75  6d 6e 73 20 35 0a 3c 41  |ble Columns 5.<A|
000492f0  64 64 43 61 6c 6c 42 61  63 6b 3e 0a 3c 41 64 64  |ddCallBack>.<Add|
00049300  54 6f 56 65 63 74 6f 72  3e 0a 41 4d 42 43 6f 6e  |ToVector>.AMBCon|
00049310  74 72 6f 6c 0a 3c 41 72  67 73 3e 0a 3c 42 47 65  |trol.<Args>.<BGe|
00049320  74 3e 0a 3c 42 69 6e 61  72 79 54 6f 44 65 63 69  |t>.<BinaryToDeci|
00049330  6d 61 6c 3e 0a 3c 42 50  75 74 3e 0a 3c 42 72 65  |mal>.<BPut>.<Bre|
00049340  61 6b 50 74 3e 0a 3c 42  79 74 65 3e 0a 3c 43 61  |akPt>.<Byte>.<Ca|
00049350  6c 6c 41 66 74 65 72 3e  0a 3c 43 61 6c 6c 41 53  |llAfter>.<CallAS|
00049360  57 49 3e 0a 3c 43 61 6c  6c 41 53 57 49 52 31 32  |WI>.<CallASWIR12|
00049370  3e 0a 3c 43 61 6c 6c 41  56 65 63 74 6f 72 3e 0a  |>.<CallAVector>.|
00049380  3c 43 61 6c 6c 45 76 65  72 79 3e 0a 3c 43 68 61  |<CallEvery>.<Cha|
00049390  6e 67 65 64 42 6f 78 3e  0a 3c 43 68 61 6e 67 65  |ngedBox>.<Change|
000493a0  44 79 6e 61 6d 69 63 41  72 65 61 3e 0a 3c 43 68  |DynamicArea>.<Ch|
000493b0  61 6e 67 65 45 6e 76 69  72 6f 6e 6d 65 6e 74 3e  |angeEnvironment>|
000493c0  0a 3c 43 68 61 6e 67 65  52 65 64 69 72 65 63 74  |.<ChangeRedirect|
000493d0  69 6f 6e 3e 0a 3c 43 68  65 63 6b 4d 6f 64 65 56  |ion>.<CheckModeV|
000493e0  61 6c 69 64 3e 0a 3c 43  6c 61 69 6d 3e 0a 3c 43  |alid>.<Claim>.<C|
000493f0  6c 61 69 6d 44 65 76 69  63 65 56 65 63 74 6f 72  |laimDeviceVector|
00049400  3e 0a 3c 43 6c 61 69 6d  50 72 6f 63 65 73 73 6f  |>.<ClaimProcesso|
00049410  72 56 65 63 74 6f 72 3e  0a 3c 43 6c 61 69 6d 53  |rVector>.<ClaimS|
00049420  63 72 65 65 6e 4d 65 6d  6f 72 79 3e 0a 3c 43 4c  |creenMemory>.<CL|
00049430  49 3e 0a 3c 43 6f 6e 66  69 72 6d 3e 0a 3c 43 6f  |I>.<Confirm>.<Co|
00049440  6e 76 65 72 74 3c 6e 61  6d 65 5c 3e 3c 6e 75 6d  |nvert<name\><num|
00049450  62 65 72 5c 3e 3d 3e 4f  53 5f 43 6f 6e 76 65 72  |ber\>=>OS_Conver|
00049460  74 3e 0a 3c 43 52 43 3e  0a 3c 44 65 6c 69 6e 6b  |t>.<CRC>.<Delink|
00049470  41 70 70 6c 69 63 61 74  69 6f 6e 3e 0a 3c 44 79  |Application>.<Dy|
00049480  6e 61 6d 69 63 41 72 65  61 3e 0a 3c 45 6e 74 65  |namicArea>.<Ente|
00049490  72 4f 53 3e 0a 3c 45 76  61 6c 75 61 74 65 45 78  |rOS>.<EvaluateEx|
000494a0  70 72 65 73 73 69 6f 6e  3e 0a 3c 45 78 69 74 3e  |pression>.<Exit>|
000494b0  0a 3c 45 78 69 74 41 6e  64 44 69 65 3e 0a 3c 46  |.<ExitAndDie>.<F|
000494c0  69 6c 65 3e 0a 3c 46 69  6e 64 3e 0a 3c 46 69 6e  |ile>.<Find>.<Fin|
000494d0  64 4d 65 6d 4d 61 70 45  6e 74 72 69 65 73 3e 0a  |dMemMapEntries>.|
000494e0  3c 46 53 43 6f 6e 74 72  6f 6c 3e 0a 3c 47 42 50  |<FSControl>.<GBP|
000494f0  42 3e 0a 3c 47 65 6e 65  72 61 74 65 45 72 72 6f  |B>.<GenerateErro|
00049500  72 3e 0a 3c 47 65 6e 65  72 61 74 65 45 76 65 6e  |r>.<GenerateEven|
00049510  74 3e 0a 3c 47 65 74 45  6e 76 3e 0a 3c 47 53 49  |t>.<GetEnv>.<GSI|
00049520  6e 69 74 3e 0a 3c 47 53  52 65 61 64 3e 0a 3c 47  |nit>.<GSRead>.<G|
00049530  53 54 72 61 6e 73 3e 0a  3c 48 65 61 70 3e 0a 3c  |STrans>.<Heap>.<|
00049540  48 65 61 70 53 6f 72 74  3e 0a 3c 49 6e 73 74 61  |HeapSort>.<Insta|
00049550  6c 6c 4b 65 79 48 61 6e  64 6c 65 72 3e 0a 3c 49  |llKeyHandler>.<I|
00049560  6e 74 4f 66 66 3e 0a 3c  49 6e 74 4f 6e 3e 0a 3c  |ntOff>.<IntOn>.<|
00049570  4d 4d 55 43 6f 6e 74 72  6f 6c 3e 0a 3c 4d 6f 64  |MMUControl>.<Mod|
00049580  75 6c 65 3e 0a 3c 4d 6f  75 73 65 3e 0a 3c 4e 65  |ule>.<Mouse>.<Ne|
00049590  77 4c 69 6e 65 3e 0a 3c  50 6c 61 74 66 6f 72 6d  |wLine>.<Platform|
000495a0  46 65 61 74 75 72 65 73  3e 0a 3c 50 6c 6f 74 3e  |Features>.<Plot>|
000495b0  0a 3c 50 72 65 74 74 79  50 72 69 6e 74 3e 0a 3c  |.<PrettyPrint>.<|
000495c0  50 72 69 6e 74 43 68 61  72 3e 0a 3c 52 65 61 64  |PrintChar>.<Read|
000495d0  41 72 67 73 3e 0a 3c 52  65 61 64 43 3e 0a 3c 52  |Args>.<ReadC>.<R|
000495e0  65 61 64 44 65 66 61 75  6c 74 48 61 6e 64 6c 65  |eadDefaultHandle|
000495f0  72 3e 0a 3c 52 65 61 64  44 79 6e 61 6d 69 63 41  |r>.<ReadDynamicA|
00049600  72 65 61 3e 0a 3c 52 65  61 64 45 73 63 61 70 65  |rea>.<ReadEscape|
00049610  53 74 61 74 65 3e 0a 3c  52 65 61 64 4c 69 6e 65  |State>.<ReadLine|
00049620  3e 0a 3c 52 65 61 64 4d  65 6d 4d 61 70 45 6e 74  |>.<ReadMemMapEnt|
00049630  72 69 65 73 3e 0a 3c 52  65 61 64 4d 65 6d 4d 61  |ries>.<ReadMemMa|
00049640  70 49 6e 66 6f 3e 0a 3c  52 65 61 64 4d 6f 64 65  |pInfo>.<ReadMode|
00049650  56 61 72 69 61 62 6c 65  3e 0a 3c 52 65 61 64 4d  |Variable>.<ReadM|
00049660  6f 6e 6f 74 6f 6e 69 63  54 69 6d 65 3e 0a 3c 52  |onotonicTime>.<R|
00049670  65 61 64 50 61 6c 65 74  74 65 3e 0a 3c 52 65 61  |eadPalette>.<Rea|
00049680  64 50 6f 69 6e 74 3e 0a  3c 52 65 61 64 52 41 4d  |dPoint>.<ReadRAM|
00049690  46 73 4c 69 6d 69 74 73  3e 0a 3c 52 65 61 64 53  |FsLimits>.<ReadS|
000496a0  79 73 49 6e 66 6f 3e 0a  3c 52 65 61 64 55 6e 73  |ysInfo>.<ReadUns|
000496b0  69 67 6e 65 64 3e 0a 3c  52 65 61 64 56 61 72 56  |igned>.<ReadVarV|
000496c0  61 6c 3e 0a 3c 52 65 61  64 56 64 75 56 61 72 69  |al>.<ReadVduVari|
000496d0  61 62 6c 65 73 3e 0a 3c  52 65 6c 65 61 73 65 3e  |ables>.<Release>|
000496e0  0a 3c 52 65 6c 65 61 73  65 44 65 76 69 63 65 56  |.<ReleaseDeviceV|
000496f0  65 63 74 6f 72 3e 0a 3c  52 65 6c 69 6e 6b 41 70  |ector>.<RelinkAp|
00049700  70 6c 69 63 61 74 69 6f  6e 3e 0a 3c 52 65 6d 6f  |plication>.<Remo|
00049710  76 65 43 61 6c 6c 42 61  63 6b 3e 0a 3c 52 65 6d  |veCallBack>.<Rem|
00049720  6f 76 65 43 75 72 73 6f  72 73 3e 0a 3c 52 65 6d  |oveCursors>.<Rem|
00049730  6f 76 65 54 69 63 6b 65  72 45 76 65 6e 74 3e 0a  |oveTickerEvent>.|
00049740  3c 52 65 73 65 74 3e 0a  3c 52 65 73 74 6f 72 65  |<Reset>.<Restore|
00049750  43 75 72 73 6f 72 73 3e  0a 3c 53 63 72 65 65 6e  |Cursors>.<Screen|
00049760  4d 6f 64 65 3e 0a 3c 53  65 72 69 61 6c 4f 70 3e  |Mode>.<SerialOp>|
00049770  0a 3c 53 65 72 76 69 63  65 43 61 6c 6c 3e 0a 3c  |.<ServiceCall>.<|
00049780  53 65 74 43 61 6c 6c 42  61 63 6b 3e 0a 3c 53 65  |SetCallBack>.<Se|
00049790  74 45 43 46 4f 72 69 67  69 6e 3e 0a 3c 53 65 74  |tECFOrigin>.<Set|
000497a0  4d 65 6d 4d 61 70 45 6e  74 72 69 65 73 3e 0a 3c  |MemMapEntries>.<|
000497b0  53 65 74 43 6f 6c 6f 75  72 3e 0a 3c 53 65 74 56  |SetColour>.<SetV|
000497c0  61 72 56 61 6c 3e 0a 3c  53 70 72 69 74 65 4f 70  |arVal>.<SpriteOp|
000497d0  3e 0a 3c 53 75 62 73 74  69 74 75 74 65 41 72 67  |>.<SubstituteArg|
000497e0  73 3e 0a 3c 53 57 49 4e  75 6d 62 65 72 46 72 6f  |s>.<SWINumberFro|
000497f0  6d 53 74 72 69 6e 67 3e  0a 3c 53 57 49 4e 75 6d  |mString>.<SWINum|
00049800  62 65 72 54 6f 53 74 72  69 6e 67 3e 0a 3c 53 79  |berToString>.<Sy|
00049810  6e 63 68 72 6f 6e 69 73  65 43 6f 64 65 41 72 65  |nchroniseCodeAre|
00049820  61 73 3e 0a 3c 55 70 43  61 6c 6c 3e 0a 3c 55 70  |as>.<UpCall>.<Up|
00049830  64 61 74 65 4d 45 4d 43  3e 0a 3c 56 61 6c 69 64  |dateMEMC>.<Valid|
00049840  61 74 65 41 64 64 72 65  73 73 3e 0a 3c 57 6f 72  |ateAddress>.<Wor|
00049850  64 3e 0a 3c 57 72 69 74  65 30 3e 0a 3c 57 72 69  |d>.<Write0>.<Wri|
00049860  74 65 43 3e 0a 3c 57 72  69 74 65 45 6e 76 3e 0a  |teC>.<WriteEnv>.|
00049870  3c 57 72 69 74 65 49 3e  0a 3c 57 72 69 74 65 4e  |<WriteI>.<WriteN|
00049880  3e 0a 3c 57 72 69 74 65  53 3e 0a 23 45 6e 64 54  |>.<WriteS>.#EndT|
00049890  61 62 6c 65 0a 0a 23 49  6e 64 65 6e 74 20 32 0a  |able..#Indent 2.|
000498a0  3c 4f 53 5f 42 79 74 65  20 76 61 6c 75 65 73 3d  |<OS_Byte values=|
000498b0  3e 4f 53 5f 42 79 74 65  49 6e 64 65 78 3e 09 3c  |>OS_ByteIndex>.<|
000498c0  43 4d 4f 53 20 52 41 4d  20 62 79 74 65 73 3d 3e  |CMOS RAM bytes=>|
000498d0  4f 53 5f 42 79 74 65 43  4d 4f 53 3e 09 3c 53 65  |OS_ByteCMOS>.<Se|
000498e0  72 76 69 63 65 20 43 61  6c 6c 73 3d 3e 53 65 72  |rvice Calls=>Ser|
000498f0  76 69 63 65 5f 49 6e 64  65 78 3e 09 3c 56 65 63  |vice_Index>.<Vec|
00049900  74 6f 72 73 3d 3e 76 65  63 74 6f 72 5f 69 6e 64  |tors=>vector_ind|
00049910  65 78 3e 09 3c 49 6d 61  67 65 73 3d 3e 49 6d 61  |ex>.<Images=>Ima|
00049920  67 65 45 6e 74 72 79 5f  3e 09 3c 46 69 6c 65 53  |geEntry_>.<FileS|
00049930  79 73 74 65 6d 73 3d 3e  46 53 45 6e 74 72 79 5f  |ystems=>FSEntry_|
00049940  3e 09 3c 48 61 72 64 77  61 72 65 20 76 65 63 74  |>.<Hardware vect|
00049950  6f 72 73 3d 3e 6f 73 5f  68 61 72 64 77 61 72 65  |ors=>os_hardware|
00049960  5f 76 65 63 74 6f 72 73  3e 09 3c 44 65 70 72 65  |_vectors>.<Depre|
00049970  63 69 61 74 65 64 20 63  61 6c 6c 73 3d 3e 4f 53  |ciated calls=>OS|
00049980  5f 64 65 70 72 65 63 69  61 74 65 64 3e 00 00 00  |_depreciated>...|
00049990  44 41 54 41 dd 03 00 00  4f 53 5f 41 64 64 43 61  |DATA....OS_AddCa|
000499a0  6c 6c 42 61 63 6b 20 20  28 26 35 34 29 0a 23 50  |llBack  (&54).#P|
000499b0  61 72 65 6e 74 20 4f 53  5f 0a 3d 3e 09 52 30 20  |arent OS_.=>.R0 |
000499c0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 61 64 64  |=.pointer to add|
000499d0  72 65 73 73 20 74 6f 20  63 61 6c 6c 0a 09 52 31  |ress to call..R1|
000499e0  20 3d 09 76 61 6c 75 65  20 6f 66 20 52 31 32 20  | =.value of R12 |
000499f0  74 6f 20 62 65 20 63 61  6c 6c 65 64 20 77 69 74  |to be called wit|
00049a00  68 0a 0a 3c 3d 09 52 30  2c 20 52 31 20 70 72 65  |h..<=.R0, R1 pre|
00049a10  73 65 72 76 65 64 0a 20  20 20 20 20 20 20 20 20  |served.         |
00049a20  20 20 20 20 20 20 20 20  0a 41 20 74 72 61 6e 73  |        .A trans|
00049a30  69 65 6e 74 20 63 61 6c  6c 62 61 63 6b 20 69 73  |ient callback is|
00049a40  20 70 6c 61 63 65 64 20  6f 6e 20 61 20 6c 69 73  | placed on a lis|
00049a50  74 20 6f 66 20 74 61 73  6b 73 20 77 68 6f 20 77  |t of tasks who w|
00049a60  61 6e 74 20 74 6f 20 62  65 20 63 61 6c 6c 65 64  |ant to be called|
00049a70  20 61 73 20 73 6f 6f 6e  20 61 73 20 52 49 53 43  | as soon as RISC|
00049a80  20 4f 53 20 69 73 20 6e  6f 74 20 62 75 73 79 2e  | OS is not busy.|
00049a90  20 41 6e 64 20 74 68 69  73 20 53 57 49 20 77 69  | And this SWI wi|
00049aa0  6c 6c 20 70 6c 61 63 65  20 61 20 74 72 61 6e 73  |ll place a trans|
00049ab0  69 65 6e 74 20 72 6f 75  74 69 6e 65 20 6f 6e 20  |ient routine on |
00049ac0  74 68 61 74 20 6c 69 73  74 2e 20 49 74 20 69 73  |that list. It is|
00049ad0  20 75 73 75 61 6c 6c 79  20 75 73 65 64 20 62 79  | usually used by|
00049ae0  20 61 6e 20 69 6e 74 65  72 72 75 70 74 20 72 6f  | an interrupt ro|
00049af0  75 74 69 6e 65 20 74 68  61 74 20 6e 65 65 64 73  |utine that needs|
00049b00  20 74 6f 20 64 6f 20 63  6f 6d 70 6c 65 78 20 70  | to do complex p|
00049b10  72 6f 63 65 73 73 69 6e  67 20 74 68 61 74 20 77  |rocessing that w|
00049b20  6f 75 6c 64 20 74 61 6b  65 20 74 6f 6f 20 6c 6f  |ould take too lo|
00049b30  6e 67 20 69 6e 20 61 6e  20 69 6e 74 65 72 72 75  |ng in an interru|
00049b40  70 74 2c 20 6f 72 20 74  68 61 74 20 6e 65 65 64  |pt, or that need|
00049b50  73 20 74 6f 20 63 61 6c  6c 20 61 20 6e 6f 6e 2d  |s to call a non-|
00049b60  72 65 2d 65 6e 74 72 61  6e 74 20 53 57 49 2e 20  |re-entrant SWI. |
00049b70  4f 53 5f 41 64 64 43 61  6c 6c 42 61 63 6b 20 74  |OS_AddCallBack t|
00049b80  65 6c 6c 73 20 52 49 53  43 20 4f 53 20 74 68 61  |ells RISC OS tha|
00049b90  74 20 74 68 65 20 69 6e  74 65 72 72 75 70 74 20  |t the interrupt |
00049ba0  72 6f 75 74 69 6e 65 20  77 69 73 68 65 73 20 74  |routine wishes t|
00049bb0  6f 20 62 65 20 27 63 61  6c 6c 65 64 20 62 61 63  |o be 'called bac|
00049bc0  6b 27 2e 20 54 68 69 73  20 63 61 6e 20 68 61 70  |k'. This can hap|
00049bd0  70 65 6e 20 77 68 65 6e  20 52 49 53 43 20 4f 53  |pen when RISC OS|
00049be0  20 69 73 20 62 65 69 6e  67 20 74 68 72 65 61 64  | is being thread|
00049bf0  65 64 20 6f 75 74 20 6f  66 20 2d 20 74 68 61 74  |ed out of - that|
00049c00  20 69 73 2c 20 77 68 65  6e 20 69 74 20 65 6e 74  | is, when it ent|
00049c10  65 72 73 20 55 73 65 72  20 6d 6f 64 65 20 77 69  |ers User mode wi|
00049c20  74 68 20 69 6e 74 65 72  72 75 70 74 73 20 65 6e  |th interrupts en|
00049c30  61 62 6c 65 64 20 61 6e  64 20 74 68 65 20 53 56  |abled and the SV|
00049c40  43 20 73 74 61 63 6b 20  65 6d 70 74 79 20 28 65  |C stack empty (e|
00049c50  69 74 68 65 72 20 61 66  74 65 72 20 61 20 53 57  |ither after a SW|
00049c60  49 20 69 73 20 63 61 6c  6c 65 64 2c 20 6f 72 20  |I is called, or |
00049c70  61 66 74 65 72 20 61 6e  20 69 6e 74 65 72 72 75  |after an interru|
00049c80  70 74 29 2e 20 49 74 20  63 61 6e 20 61 6c 73 6f  |pt). It can also|
00049c90  20 68 61 70 70 65 6e 20  77 68 65 6e 20 52 4f 20  | happen when RO |
00049ca0  69 73 20 69 64 6c 69 6e  67 2c 20 66 6f 72 20 65  |is idling, for e|
00049cb0  78 61 6d 70 6c 65 2c 20  77 68 69 6c 65 20 69 74  |xample, while it|
00049cc0  20 69 73 20 77 61 69 74  69 6e 67 20 69 6e 20 3c  | is waiting in <|
00049cd0  4f 53 5f 52 65 61 64 43  3e 2e 0a 0a 54 72 61 6e  |OS_ReadC>...Tran|
00049ce0  73 69 65 6e 74 20 43 61  6c 6c 42 61 63 6b 73 20  |sient CallBacks |
00049cf0  63 61 6e 20 73 61 66 65  6c 79 20 62 65 20 75 73  |can safely be us|
00049d00  65 64 20 62 79 20 6d 61  6e 79 20 63 6c 69 65 6e  |ed by many clien|
00049d10  74 73 2e 0a 0a 41 20 72  6f 75 74 69 6e 65 20 63  |ts...A routine c|
00049d20  61 6c 6c 65 64 20 62 79  20 74 68 69 73 20 6d 65  |alled by this me|
00049d30  63 68 61 6e 69 73 6d 20  6d 75 73 74 20 70 72 65  |chanism must pre|
00049d40  73 65 72 76 65 20 41 4c  4c 20 72 65 67 69 73 74  |serve ALL regist|
00049d50  65 72 73 20 61 6e 64 20  72 65 74 75 72 6e 20 62  |ers and return b|
00049d60  79 20 4d 4f 56 20 50 43  2c 52 31 34 2e 00 00 00  |y MOV PC,R14....|
00049d70  44 41 54 41 dd 00 00 00  44 79 6e 61 6d 69 63 20  |DATA....Dynamic |
00049d80  61 72 65 61 73 0a 41 72  65 61 09 43 6f 6e 74 65  |areas.Area.Conte|
00049d90  6e 74 73 0a 23 4c 69 6e  65 0a 30 09 53 79 73 74  |nts.#Line.0.Syst|
00049da0  65 6d 20 48 65 61 70 0a  31 09 52 4d 41 0a 32 09  |em Heap.1.RMA.2.|
00049db0  53 63 72 65 65 6e 20 41  72 65 61 0a 33 09 53 70  |Screen Area.3.Sp|
00049dc0  72 69 74 65 20 41 72 65  61 0a 34 09 46 6f 6e 74  |rite Area.4.Font|
00049dd0  20 43 61 63 68 65 0a 35  09 52 41 4d 20 46 69 6c  | Cache.5.RAM Fil|
00049de0  69 6e 67 20 53 79 73 74  65 6d 0a 36 09 46 72 65  |ing System.6.Fre|
00049df0  65 20 70 6f 6f 6c 20 28  52 49 53 43 20 4f 53 20  |e pool (RISC OS |
00049e00  33 2e 36 29 0a 0a 32 35  36 2b 09 55 73 65 72 20  |3.6)..256+.User |
00049e10  64 79 6e 61 6d 69 63 20  61 72 65 61 0a 0a 53 65  |dynamic area..Se|
00049e20  65 20 3c 6d 65 6d 6f 72  79 20 6d 61 70 3d 3e 4d  |e <memory map=>M|
00049e30  61 63 68 69 6e 65 3a 4c  6f 67 69 63 61 6c 3e 20  |achine:Logical> |
00049e40  66 6f 72 20 6c 6f 63 61  74 69 6f 6e 2e 00 00 00  |for location....|
00049e50  44 41 54 41 a1 00 00 00  4f 53 5f 42 47 65 74 20  |DATA....OS_BGet |
00049e60  20 28 26 30 41 29 0a 23  50 61 72 65 6e 74 20 4f  | (&0A).#Parent O|
00049e70  53 5f 0a 3d 3e 09 52 31  20 3d 09 66 69 6c 65 20  |S_.=>.R1 =.file |
00049e80  68 61 6e 64 6c 65 0a 0a  3c 3d 09 52 30 20 3d 09  |handle..<=.R0 =.|
00049e90  62 79 74 65 20 72 65 61  64 0a 09 43 20 63 6c 65  |byte read..C cle|
00049ea0  61 72 20 69 66 20 62 79  74 65 20 72 65 61 64 2e  |ar if byte read.|
00049eb0  0a 0a 54 68 69 73 20 53  57 49 20 72 65 61 64 73  |..This SWI reads|
00049ec0  20 61 20 62 79 74 65 20  66 72 6f 6d 20 74 68 65  | a byte from the|
00049ed0  20 63 75 72 72 65 6e 74  20 73 65 71 75 65 6e 74  | current sequent|
00049ee0  69 61 6c 20 66 69 6c 65  20 70 6f 69 6e 74 65 72  |ial file pointer|
00049ef0  2e 00 00 00 44 41 54 41  19 01 00 00 4f 53 5f 42  |....DATA....OS_B|
00049f00  69 6e 61 72 79 54 6f 44  65 63 69 6d 61 6c 20 20  |inaryToDecimal  |
00049f10  28 26 32 38 29 0a 23 50  61 72 65 6e 74 20 4f 53  |(&28).#Parent OS|
00049f20  5f 0a 3d 3e 09 52 30 20  3d 09 69 6e 74 65 67 65  |_.=>.R0 =.intege|
00049f30  72 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |r..R1 =.pointer |
00049f40  74 6f 20 62 75 66 66 65  72 0a 09 52 32 20 3d 09  |to buffer..R2 =.|
00049f50  73 69 7a 65 20 6f 66 20  62 75 66 66 65 72 0a 3c  |size of buffer.<|
00049f60  3d 09 52 32 20 3d 09 6c  65 6e 67 74 68 20 6f 66  |=.R2 =.length of|
00049f70  20 73 74 72 69 6e 67 0a  0a 54 68 69 73 20 53 57  | string..This SW|
00049f80  49 20 63 6f 6e 76 65 72  74 73 20 61 20 33 32 20  |I converts a 32 |
00049f90  62 69 74 20 69 6e 74 65  67 65 72 20 74 6f 20 61  |bit integer to a|
00049fa0  20 73 74 72 69 6e 67 2e  20 57 68 79 20 77 65 20  | string. Why we |
00049fb0  68 61 76 65 20 74 68 69  73 20 63 61 6c 6c 2c 20  |have this call, |
00049fc0  69 73 20 61 20 62 69 74  20 75 6e 63 6c 65 61 72  |is a bit unclear|
00049fd0  2c 20 61 73 20 3c 4f 53  5f 43 6f 6e 76 65 72 74  |, as <OS_Convert|
00049fe0  49 6e 74 65 67 65 72 34  3d 3e 4f 53 5f 43 6f 6e  |Integer4=>OS_Con|
00049ff0  76 65 72 74 3e 20 73 68  6f 75 6c 64 20 64 6f 20  |vert> should do |
0004a000  74 68 65 20 73 61 6d 65  2e 2e 20 20 20 00 00 00  |the same..   ...|
0004a010  44 41 54 41 81 00 00 00  4f 53 5f 42 50 75 74 20  |DATA....OS_BPut |
0004a020  20 28 26 30 42 29 0a 23  50 61 72 65 6e 74 20 4f  | (&0B).#Parent O|
0004a030  53 5f 0a 3d 3e 09 52 30  20 3d 09 62 79 74 65 0a  |S_.=>.R0 =.byte.|
0004a040  09 52 31 20 3d 09 66 69  6c 65 20 68 61 6e 64 6c  |.R1 =.file handl|
0004a050  65 0a 0a 54 68 69 73 20  53 57 49 20 77 72 69 74  |e..This SWI writ|
0004a060  65 73 20 61 20 62 79 74  65 20 74 6f 20 74 68 65  |es a byte to the|
0004a070  20 63 75 72 72 65 6e 74  20 73 65 71 75 65 6e 74  | current sequent|
0004a080  69 61 6c 20 66 69 6c 65  20 70 6f 69 6e 74 65 72  |ial file pointer|
0004a090  2e 00 00 00 44 41 54 41  91 02 00 00 4f 53 5f 43  |....DATA....OS_C|
0004a0a0  68 61 6e 67 65 44 79 6e  61 6d 69 63 41 72 65 61  |hangeDynamicArea|
0004a0b0  20 20 28 26 32 41 29 0a  23 50 61 72 65 6e 74 20  |  (&2A).#Parent |
0004a0c0  4f 53 5f 0a 3d 3e 09 52  30 20 3d 09 3c 61 72 65  |OS_.=>.R0 =.<are|
0004a0d0  61 3d 3e 4f 53 5f 41 72  65 61 73 3e 20 74 6f 20  |a=>OS_Areas> to |
0004a0e0  61 6c 74 65 72 0a 09 52  31 20 3d 09 61 6d 6f 75  |alter..R1 =.amou|
0004a0f0  6e 74 20 74 6f 20 6d 6f  76 65 20 69 6e 20 62 79  |nt to move in by|
0004a100  74 65 73 20 28 73 69 67  6e 65 64 20 69 6e 74 65  |tes (signed inte|
0004a110  67 65 72 29 0a 0a 3c 3d  09 52 30 20 70 72 65 73  |ger)..<=.R0 pres|
0004a120  65 72 76 65 64 0a 09 52  31 20 3d 09 61 6d 6f 75  |erved..R1 =.amou|
0004a130  6e 74 20 74 68 65 20 61  72 65 61 20 68 61 73 20  |nt the area has |
0004a140  63 68 61 6e 67 65 64 20  62 79 20 28 7b 2a 7d 75  |changed by ({*}u|
0004a150  6e 73 69 67 6e 65 64 7b  2a 7d 29 0a 0a 4c 65 74  |nsigned{*})..Let|
0004a160  20 79 6f 75 20 65 6e 6c  61 72 67 65 20 28 72 31  | you enlarge (r1|
0004a170  20 70 6f 73 69 74 69 76  65 29 20 6f 72 20 73 68  | positive) or sh|
0004a180  72 69 6e 6b 20 28 72 31  20 6e 65 67 61 74 69 76  |rink (r1 negativ|
0004a190  65 29 20 74 68 65 20 73  65 6c 65 63 74 65 64 20  |e) the selected |
0004a1a0  61 72 65 61 2e 0a 0a 49  66 20 79 6f 75 20 6e 65  |area...If you ne|
0004a1b0  65 64 20 74 6f 20 72 65  6c 65 61 73 65 20 61 73  |ed to release as|
0004a1c0  20 6d 75 63 68 20 73 70  61 63 65 20 61 73 20 70  | much space as p|
0004a1d0  6f 73 73 69 62 6c 65 20  66 72 6f 6d 20 61 6e 20  |ossible from an |
0004a1e0  61 72 65 61 2c 20 74 72  79 20 74 6f 20 72 65 64  |area, try to red|
0004a1f0  75 63 65 20 69 74 73 20  73 69 7a 65 20 62 79 20  |uce its size by |
0004a200  31 36 20 4d 42 79 74 65  73 2e 0a 0a 4e 6f 74 65  |16 MBytes...Note|
0004a210  2c 20 74 68 61 74 20 6e  6f 72 6d 61 6c 6c 79 20  |, that normally |
0004a220  74 68 69 73 20 63 61 6e  6e 6f 74 20 62 65 20 75  |this cannot be u|
0004a230  73 65 64 20 77 68 69 6c  65 20 74 68 65 20 61 70  |sed while the ap|
0004a240  70 6c 69 63 61 74 69 6f  6e 20 77 6f 72 6b 20 61  |plication work a|
0004a250  72 65 61 20 69 73 20 62  65 69 6e 67 20 75 73 65  |rea is being use|
0004a260  64 3b 20 6d 61 69 6e 20  70 75 72 70 6f 73 65 20  |d; main purpose |
0004a270  69 73 20 66 6f 72 20 74  68 65 20 2a 4f 53 2c 20  |is for the *OS, |
0004a280  6d 6f 64 75 6c 65 73 20  61 6e 64 20 75 74 69 6c  |modules and util|
0004a290  69 74 69 65 73 2e 20 54  68 69 73 20 53 57 49 20  |ities. This SWI |
0004a2a0  64 6f 65 73 20 61 6e 20  75 70 63 61 6c 6c 2c 20  |does an upcall, |
0004a2b0  69 66 20 74 68 65 20 75  70 63 61 6c 6c 20 69 73  |if the upcall is|
0004a2c0  20 63 6c 61 69 6d 65 64  20 77 68 65 6e 20 61 6e  | claimed when an|
0004a2d0  20 61 70 70 6c 69 63 61  74 69 6f 6e 20 69 73 20  | application is |
0004a2e0  72 75 6e 6e 69 6e 67 20  69 6e 20 74 68 65 20 61  |running in the a|
0004a2f0  70 70 6c 69 63 61 74 69  6f 6e 20 77 6f 72 6b 73  |pplication works|
0004a300  70 61 63 65 2c 20 74 68  65 20 6d 65 6d 6f 72 79  |pace, the memory|
0004a310  20 6d 6f 76 65 6d 65 6e  74 20 69 73 20 61 6c 6c  | movement is all|
0004a320  6f 77 65 64 2e 00 00 00  44 41 54 41 6c 03 00 00  |owed....DATAl...|
0004a330  4f 53 5f 43 6c 61 69 6d  20 20 28 26 31 46 29 0a  |OS_Claim  (&1F).|
0004a340  23 50 61 72 65 6e 74 20  4f 53 5f 0a 3d 3e 09 52  |#Parent OS_.=>.R|
0004a350  30 20 3d 09 3c 76 65 63  74 6f 72 20 6e 75 6d 62  |0 =.<vector numb|
0004a360  65 72 3d 3e 76 65 63 74  6f 72 5f 69 6e 64 65 78  |er=>vector_index|
0004a370  3e 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |>..R1 =.pointer |
0004a380  74 6f 20 61 64 64 72 65  73 73 20 6f 66 20 63 6c  |to address of cl|
0004a390  61 69 6d 69 6e 67 20 72  6f 75 74 69 6e 65 0a 09  |aiming routine..|
0004a3a0  52 32 20 3d 09 76 61 6c  75 65 20 74 6f 20 62 65  |R2 =.value to be|
0004a3b0  20 70 61 73 73 65 64 20  69 6e 20 52 31 32 20 77  | passed in R12 w|
0004a3c0  68 65 6e 20 74 68 65 20  72 6f 75 74 69 6e 65 20  |hen the routine |
0004a3d0  69 73 20 63 61 6c 6c 65  64 2e 0a 0a 3c 3d 09 52  |is called...<=.R|
0004a3e0  30 2d 52 32 20 70 72 65  73 65 72 76 65 64 0a 20  |0-R2 preserved. |
0004a3f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
0004a400  0a 54 68 69 73 20 63 61  6c 6c 20 61 64 64 73 20  |.This call adds |
0004a410  74 68 65 20 3c 72 6f 75  74 69 6e 65 3d 3e 76 65  |the <routine=>ve|
0004a420  63 74 6f 72 5f 72 75 6c  65 73 3e 20 77 68 6f 73  |ctor_rules> whos|
0004a430  65 20 61 64 64 72 65 73  73 20 69 73 20 67 69 76  |e address is giv|
0004a440  65 6e 20 69 6e 20 52 31  20 74 6f 20 74 68 65 20  |en in R1 to the |
0004a450  3c 6c 69 73 74 3d 3e 76  65 63 74 6f 72 5f 63 68  |<list=>vector_ch|
0004a460  61 69 6e 3e 20 6f 66 20  72 6f 75 74 69 6e 65 73  |ain> of routines|
0004a470  20 63 6c 61 69 6d 69 6e  67 20 74 68 65 20 76 65  | claiming the ve|
0004a480  63 74 6f 72 2e 20 54 68  69 73 20 62 65 63 6f 6d  |ctor. This becom|
0004a490  65 73 20 74 68 65 20 66  69 72 73 74 20 72 6f 75  |es the first rou|
0004a4a0  74 69 6e 65 20 74 6f 20  62 65 20 75 73 65 64 20  |tine to be used |
0004a4b0  77 68 65 6e 20 74 68 65  20 76 65 63 74 6f 72 20  |when the vector |
0004a4c0  69 73 20 63 61 6c 6c 65  64 2e 0a 0a 41 6e 79 20  |is called...Any |
0004a4d0  65 61 72 6c 69 65 72 20  69 6e 73 74 61 6e 63 65  |earlier instance|
0004a4e0  73 20 6f 66 20 74 68 65  20 73 61 6d 65 20 72 6f  |s of the same ro|
0004a4f0  75 74 69 6e 65 20 61 72  65 20 72 65 6d 6f 76 65  |utine are remove|
0004a500  64 2e 20 52 6f 75 74 69  6e 65 73 20 61 72 65 20  |d. Routines are |
0004a510  64 65 66 69 6e 65 64 20  74 6f 20 62 65 20 74 68  |defined to be th|
0004a520  65 20 73 61 6d 65 20 69  66 20 74 68 65 20 76 61  |e same if the va|
0004a530  6c 75 65 73 20 70 61 73  73 65 64 20 69 6e 20 52  |lues passed in R|
0004a540  30 2c 20 52 31 20 61 6e  64 20 52 32 20 61 72 65  |0, R1 and R2 are|
0004a550  20 69 64 65 6e 74 69 63  61 6c 2e 20 49 66 20 79  | identical. If y|
0004a560  6f 75 20 77 69 73 68 20  74 6f 20 61 64 64 20 6d  |ou wish to add m|
0004a570  75 6c 74 69 70 6c 65 20  22 69 64 65 6e 74 69 63  |ultiple "identic|
0004a580  61 6c 22 20 72 6f 75 74  69 6e 65 73 20 75 73 65  |al" routines use|
0004a590  20 3c 4f 53 5f 41 64 64  54 6f 56 65 63 74 6f 72  | <OS_AddToVector|
0004a5a0  3e 2e 0a 0a 54 68 65 20  52 32 20 76 61 6c 75 65  |>...The R2 value|
0004a5b0  20 65 6e 61 62 6c 65 73  20 74 68 65 20 72 6f 75  | enables the rou|
0004a5c0  74 69 6e 65 20 74 6f 20  68 61 76 65 20 61 20 77  |tine to have a w|
0004a5d0  6f 72 6b 73 70 61 63 65  20 70 6f 69 6e 74 65 72  |orkspace pointer|
0004a5e0  20 73 65 74 20 75 70 20  69 6e 20 52 31 32 20 77  | set up in R12 w|
0004a5f0  68 65 6e 20 69 74 20 69  73 20 63 61 6c 6c 65 64  |hen it is called|
0004a600  2e 20 49 66 20 74 68 65  20 72 6f 75 74 69 6e 65  |. If the routine|
0004a610  20 75 73 69 6e 67 20 74  68 65 20 76 65 63 74 6f  | using the vecto|
0004a620  72 20 69 73 20 69 6e 20  61 20 6d 6f 64 75 6c 65  |r is in a module|
0004a630  20 28 61 73 20 77 69 6c  6c 20 6f 66 74 65 6e 20  | (as will often |
0004a640  62 65 20 74 68 65 20 63  61 73 65 29 2c 20 74 68  |be the case), th|
0004a650  69 73 20 70 6f 69 6e 74  65 72 20 77 69 6c 6c 20  |is pointer will |
0004a660  75 73 75 61 6c 6c 79 20  62 65 20 74 68 65 20 73  |usually be the s|
0004a670  61 6d 65 20 61 73 20 69  74 73 20 6d 6f 64 75 6c  |ame as its modul|
0004a680  65 20 77 6f 72 6b 73 70  61 63 65 20 70 6f 69 6e  |e workspace poin|
0004a690  74 65 72 2e 44 41 54 41  68 01 00 00 4f 53 5f 43  |ter.DATAh...OS_C|
0004a6a0  6c 61 69 6d 53 63 72 65  65 6e 4d 65 6d 6f 72 79  |laimScreenMemory|
0004a6b0  20 20 28 26 34 31 29 0a  23 50 61 72 65 6e 74 20  |  (&41).#Parent |
0004a6c0  4f 53 5f 0a 3d 3e 09 52  30 20 3d 09 31 20 66 6f  |OS_.=>.R0 =.1 fo|
0004a6d0  72 20 63 6c 61 69 6d 2c  20 30 20 66 6f 72 20 72  |r claim, 0 for r|
0004a6e0  65 6c 65 61 73 65 0a 09  52 31 20 3d 09 62 79 74  |elease..R1 =.byt|
0004a6f0  65 73 20 72 65 71 75 69  72 65 64 0a 0a 3c 3d 09  |es required..<=.|
0004a700  43 20 73 65 74 20 3a 20  6d 65 6d 6f 72 79 20 6e  |C set : memory n|
0004a710  6f 74 20 63 6c 61 69 6d  65 64 0a 09 52 31 20 3d  |ot claimed..R1 =|
0004a720  09 62 79 74 65 73 20 61  76 61 69 6c 61 62 6c 65  |.bytes available|
0004a730  0a 09 43 20 63 6c 65 61  72 20 3a 20 6d 65 6d 6f  |..C clear : memo|
0004a740  72 79 20 63 6c 61 69 6d  65 64 0a 09 52 31 20 3d  |ry claimed..R1 =|
0004a750  09 62 79 74 65 73 20 61  76 61 69 6c 61 62 6c 65  |.bytes available|
0004a760  0a 09 52 32 20 3d 09 73  74 61 72 74 20 61 64 64  |..R2 =.start add|
0004a770  72 65 73 73 0a 0a 43 61  6e 20 6f 6e 6c 79 20 62  |ress..Can only b|
0004a780  65 20 63 6c 61 69 6d 65  64 20 69 66 20 6e 6f 20  |e claimed if no |
0004a790  6f 74 68 65 72 20 62 61  6e 6b 20 74 68 61 6e 20  |other bank than |
0004a7a0  31 20 68 61 73 20 62 65  65 6e 20 75 73 65 64 2e  |1 has been used.|
0004a7b0  20 57 68 69 6c 65 20 63  6c 61 69 6d 65 64 20 79  | While claimed y|
0004a7c0  6f 75 20 6d 75 73 74 20  6e 6f 74 20 63 61 75 73  |ou must not caus|
0004a7d0  65 20 73 63 72 65 65 6e  20 74 6f 20 73 63 72 6f  |e screen to scro|
0004a7e0  6c 6c 2e 0a 0a 4e 6f 74  20 76 65 72 79 20 75 73  |ll...Not very us|
0004a7f0  65 66 75 6c 2c 20 69 73  20 69 74 3f 44 41 54 41  |eful, is it?DATA|
0004a800  86 01 00 00 4f 53 5f 43  52 43 20 20 28 26 35 42  |....OS_CRC  (&5B|
0004a810  29 0a 23 50 61 72 65 6e  74 20 4f 53 5f 0a 3d 3e  |).#Parent OS_.=>|
0004a820  09 52 30 20 3d 09 43 52  43 20 63 6f 6e 74 69 6e  |.R0 =.CRC contin|
0004a830  75 61 74 69 6f 6e 20 76  61 6c 75 65 2c 20 6f 72  |uation value, or|
0004a840  20 30 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  | 0..R1 =.pointer|
0004a850  20 74 6f 20 73 74 61 72  74 20 6f 66 20 62 6c 6f  | to start of blo|
0004a860  63 6b 0a 09 52 32 20 3d  09 70 6f 69 6e 74 65 72  |ck..R2 =.pointer|
0004a870  20 74 6f 20 65 6e 64 20  6f 66 20 62 6c 6f 63 6b  | to end of block|
0004a880  0a 09 52 33 20 3d 09 49  6e 63 72 65 6d 65 6e 74  |..R3 =.Increment|
0004a890  0a 0a 3c 3d 09 52 30 20  3d 09 43 52 43 20 76 61  |..<=.R0 =.CRC va|
0004a8a0  6c 75 65 0a 0a 43 61 6c  63 75 6c 61 74 65 20 74  |lue..Calculate t|
0004a8b0  68 65 20 43 79 63 6c 69  63 2d 52 65 64 75 6e 64  |he Cyclic-Redund|
0004a8c0  61 6e 63 79 20 43 68 65  63 6b 20 66 6f 72 20 61  |ancy Check for a|
0004a8d0  20 62 6c 6f 63 6b 20 6f  66 20 64 61 74 61 2e 0a  | block of data..|
0004a8e0  0a 23 74 61 62 0a 4e 6f  74 65 3a 09 54 68 65 20  |.#tab.Note:.The |
0004a8f0  53 57 49 20 61 64 64 73  20 52 33 20 74 6f 20 52  |SWI adds R3 to R|
0004a900  31 20 75 6e 74 69 6c 20  69 74 20 65 71 75 61 6c  |1 until it equal|
0004a910  73 20 52 32 2c 20 69 65  20 69 66 20 52 31 20 6e  |s R2, ie if R1 n|
0004a920  65 76 65 72 20 65 71 75  61 6c 73 20 52 32 20 79  |ever equals R2 y|
0004a930  6f 75 20 68 61 76 65 20  61 6e 20 69 6e 66 69 6e  |ou have an infin|
0004a940  69 74 65 20 6c 6f 6f 70  2e 0a 4e 6f 74 65 32 3a  |ite loop..Note2:|
0004a950  09 54 68 65 20 62 79 74  65 20 61 74 20 52 32 20  |.The byte at R2 |
0004a960  69 73 20 6e 6f 74 20 69  6e 63 6c 75 64 65 64 20  |is not included |
0004a970  69 6e 20 74 68 65 20 43  52 43 20 76 61 6c 75 65  |in the CRC value|
0004a980  2e 0a 00 00 44 41 54 41  ec 01 00 00 4f 53 5f 45  |....DATA....OS_E|
0004a990  6e 74 65 72 4f 53 20 20  28 26 31 36 29 0a 23 50  |nterOS  (&16).#P|
0004a9a0  61 72 65 6e 74 20 4f 53  5f 0a 3c 3d 09 52 31 33  |arent OS_.<=.R13|
0004a9b0  20 3d 09 52 31 33 5f 73  76 63 0a 09 52 31 34 20  | =.R13_svc..R14 |
0004a9c0  3d 09 52 31 34 5f 73 76  63 0a 0a 54 68 69 73 20  |=.R14_svc..This |
0004a9d0  53 57 49 20 73 65 74 73  20 74 68 65 20 70 72 6f  |SWI sets the pro|
0004a9e0  63 65 73 73 6f 72 20 74  6f 20 53 75 70 65 72 76  |cessor to Superv|
0004a9f0  69 73 6f 72 20 6d 6f 64  65 2e 20 49 6e 74 65 72  |isor mode. Inter|
0004aa00  72 75 70 74 20 61 6e 64  20 46 61 73 74 20 49 6e  |rupt and Fast In|
0004aa10  74 65 72 72 75 70 74 20  73 74 61 74 75 73 20 69  |terrupt status i|
0004aa20  73 20 75 6e 61 6c 74 65  72 65 64 2e 0a 0a 54 6f  |s unaltered...To|
0004aa30  20 72 65 74 75 72 6e 20  74 6f 20 55 73 65 72 4d  | return to UserM|
0004aa40  6f 64 65 3a 0a 23 74 61  62 20 2c 66 43 6f 64 65  |ode:.#tab ,fCode|
0004aa50  0a 09 54 45 51 50 20 20  50 43 2c 23 30 09 09 3b  |..TEQP  PC,#0..;|
0004aa60  09 53 65 74 20 55 73 65  72 6d 6f 64 65 2c 20 65  |.Set Usermode, e|
0004aa70  6e 61 62 6c 65 20 69 6e  74 65 72 72 75 70 73 0a  |nable interrups.|
0004aa80  09 4d 4f 56 20 20 20 52  30 2c 52 30 09 09 3b 09  |.MOV   R0,R0..;.|
0004aa90  41 6e 79 74 68 69 6e 67  20 74 68 61 74 20 64 6f  |Anything that do|
0004aaa0  65 73 6e 27 74 20 75 73  65 20 38 2d 31 34 0a 6f  |esn't use 8-14.o|
0004aab0  72 09 0a 09 42 49 43 20  20 20 52 31 34 2c 50 43  |r...BIC   R14,PC|
0004aac0  2c 23 25 31 31 09 3b 09  4f 6e 6c 79 20 73 65 74  |,#%11.;.Only set|
0004aad0  73 20 75 73 65 72 6d 6f  64 65 2e 0a 09 54 45 51  |s usermode...TEQ|
0004aae0  50 20 20 52 31 34 2c 23  30 09 09 3b 09 49 6e 74  |P  R14,#0..;.Int|
0004aaf0  65 72 72 75 70 74 73 20  26 20 66 6c 61 67 73 0a  |errupts & flags.|
0004ab00  09 4d 4f 56 20 20 20 52  30 2c 52 30 09 09 3b 09  |.MOV   R0,R0..;.|
0004ab10  61 72 65 20 6e 6f 74 20  61 66 66 65 63 74 65 64  |are not affected|
0004ab20  2e 0a 0a 23 74 61 62 0a  4e 6f 74 65 3a 09 53 57  |...#tab.Note:.SW|
0004ab30  49 20 63 61 6c 6c 73 20  77 68 69 6c 65 20 69 6e  |I calls while in|
0004ab40  20 53 56 43 2c 20 77 69  6c 6c 20 61 6c 74 65 72  | SVC, will alter|
0004ab50  20 52 31 34 2c 20 61 6e  64 20 77 69 6c 6c 20 75  | R14, and will u|
0004ab60  73 65 20 52 31 33 20 61  73 20 73 74 61 63 6b 2e  |se R13 as stack.|
0004ab70  44 41 54 41 86 01 00 00  4f 53 5f 45 76 61 6c 75  |DATA....OS_Evalu|
0004ab80  61 74 65 45 78 70 72 65  73 73 69 6f 6e 20 20 28  |ateExpression  (|
0004ab90  26 32 44 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |&2D).#Parent OS_|
0004aba0  0a 3d 3e 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |.=>.R0 =.pointer|
0004abb0  20 74 6f 20 73 74 72 69  6e 67 0a 09 52 31 20 3d  | to string..R1 =|
0004abc0  09 70 6f 69 6e 74 65 72  20 74 6f 20 62 75 66 66  |.pointer to buff|
0004abd0  65 72 0a 09 52 32 20 3d  09 6c 65 6e 67 74 68 20  |er..R2 =.length |
0004abe0  6f 66 20 62 75 66 66 65  72 0a 0a 3c 3d 09 52 31  |of buffer..<=.R1|
0004abf0  20 3d 09 30 20 69 66 20  69 6e 74 65 67 65 72 20  | =.0 if integer |
0004ac00  72 65 74 75 72 6e 65 64  2c 20 65 6c 73 65 20 70  |returned, else p|
0004ac10  72 65 73 65 72 76 65 64  0a 09 52 32 20 3d 09 69  |reserved..R2 =.i|
0004ac20  6e 74 65 67 65 72 20 69  66 20 52 31 3d 30 2c 20  |nteger if R1=0, |
0004ac30  65 6c 73 65 20 6c 65 6e  67 74 68 20 6f 66 20 73  |else length of s|
0004ac40  74 72 69 6e 67 0a 0a 54  68 69 73 20 53 57 49 20  |tring..This SWI |
0004ac50  74 61 6b 65 73 20 61 20  73 74 72 69 6e 67 2c 20  |takes a string, |
0004ac60  65 76 61 6c 75 61 74 65  73 20 69 74 2c 20 61 6e  |evaluates it, an|
0004ac70  64 20 70 6c 61 63 65 73  20 72 65 73 75 6c 74 20  |d places result |
0004ac80  69 6e 20 67 69 76 65 6e  20 62 75 66 66 65 72 2e  |in given buffer.|
0004ac90  20 54 79 70 65 20 6f 66  20 74 68 65 20 72 65 73  | Type of the res|
0004aca0  75 6c 74 20 69 73 20 67  69 76 65 6e 20 69 6e 20  |ult is given in |
0004acb0  52 31 20 3a 0a 0a 09 30  09 49 6e 74 65 67 65 72  |R1 :...0.Integer|
0004acc0  20 72 65 74 75 72 6e 65  64 20 69 6e 20 52 32 0a  | returned in R2.|
0004acd0  09 4e 6f 74 20 30 09 50  6f 69 6e 74 65 72 20 74  |.Not 0.Pointer t|
0004ace0  6f 20 73 74 72 69 6e 67  2c 20 6c 65 6e 67 74 68  |o string, length|
0004acf0  20 69 6e 20 52 32 00 00  44 41 54 41 29 02 00 00  | in R2..DATA)...|
0004ad00  4f 53 5f 45 78 69 74 20  20 28 26 31 31 29 0a 23  |OS_Exit  (&11).#|
0004ad10  50 61 72 65 6e 74 20 4f  53 5f 0a 3d 3e 09 52 30  |Parent OS_.=>.R0|
0004ad20  20 3d 09 50 6f 69 6e 74  65 72 20 74 6f 20 3c 65  | =.Pointer to <e|
0004ad30  72 72 6f 72 20 62 6c 6f  63 6b 3d 3e 73 77 69 5f  |rror block=>swi_|
0004ad40  65 72 72 6f 72 62 6c 6f  63 6b 3e 0a 09 52 31 20  |errorblock>..R1 |
0004ad50  3d 09 22 41 42 45 58 22  20 28 26 35 38 34 35 34  |=."ABEX" (&58454|
0004ad60  32 34 31 29 20 49 66 20  52 65 74 75 72 6e 20 63  |241) If Return c|
0004ad70  6f 64 65 0a 09 52 32 20  3d 09 52 65 74 75 72 6e  |ode..R2 =.Return|
0004ad80  20 63 6f 64 65 0a 20 20  20 0a 3c 3d 09 4e 65 76  | code.   .<=.Nev|
0004ad90  65 72 20 72 65 74 75 72  6e 73 0a 0a 54 68 69 73  |er returns..This|
0004ada0  20 53 57 49 20 70 61 73  73 65 73 20 63 6f 6e 74  | SWI passes cont|
0004adb0  72 6f 6c 20 6f 76 65 72  20 74 6f 20 74 68 65 20  |rol over to the |
0004adc0  6d 6f 73 74 20 72 65 63  65 6e 74 20 3c 65 78 69  |most recent <exi|
0004add0  74 20 68 61 6e 64 6c 65  72 3d 3e 4f 53 5f 68 61  |t handler=>OS_ha|
0004ade0  6e 64 6c 65 72 73 5f 65  78 69 74 3e 2e 0a 0a 49  |ndlers_exit>...I|
0004adf0  66 20 52 31 20 3d 20 22  41 42 45 58 22 2c 20 61  |f R1 = "ABEX", a|
0004ae00  6e 64 20 30 20 5c 3c 3d  20 52 32 20 5c 3c 3d 20  |nd 0 \<= R2 \<= |
0004ae10  53 79 73 24 52 43 4c 69  6d 69 74 2c 20 74 68 65  |Sys$RCLimit, the|
0004ae20  6e 20 53 79 73 24 52 65  74 75 72 6e 43 6f 64 65  |n Sys$ReturnCode|
0004ae30  20 69 73 20 73 65 74 20  74 6f 20 52 32 2e 0a 0a  | is set to R2...|
0004ae40  49 66 20 52 31 20 3d 20  22 41 42 45 58 22 20 61  |If R1 = "ABEX" a|
0004ae50  6e 64 20 52 32 20 69 73  20 6f 75 74 73 69 64 65  |nd R2 is outside|
0004ae60  20 74 68 69 73 20 72 61  6e 67 65 2c 20 74 68 65  | this range, the|
0004ae70  6e 20 53 79 73 24 52 65  74 75 72 6e 43 6f 64 65  |n Sys$ReturnCode|
0004ae80  20 69 73 20 73 74 69 6c  6c 20 73 65 74 20 74 6f  | is still set to|
0004ae90  20 52 32 2c 20 61 6e 64  20 61 20 67 61 72 62 6c  | R2, and a garbl|
0004aea0  65 64 20 65 72 72 6f 72  20 6d 65 73 73 61 67 65  |ed error message|
0004aeb0  20 69 73 73 75 65 64 20  28 30 20 69 73 20 75 73  | issued (0 is us|
0004aec0  65 64 20 61 74 20 74 68  65 20 70 6f 69 6e 74 65  |ed at the pointe|
0004aed0  72 20 74 6f 20 61 6e 20  65 72 72 6f 72 20 62 6c  |r to an error bl|
0004aee0  6f 63 6b 29 2e 20 54 68  69 73 20 69 73 20 61 20  |ock). This is a |
0004aef0  76 65 72 79 20 6c 6f 6e  67 20 6c 69 76 65 64 20  |very long lived |
0004af00  4f 53 20 62 75 67 2e 0a  0a 53 65 65 20 61 6c 73  |OS bug...See als|
0004af10  6f 20 3c 4f 53 5f 45 78  69 74 41 6e 64 44 69 65  |o <OS_ExitAndDie|
0004af20  3e 00 00 00 44 41 54 41  19 01 00 00 4f 53 5f 45  |>...DATA....OS_E|
0004af30  78 69 74 41 6e 64 44 69  65 20 20 28 26 35 30 29  |xitAndDie  (&50)|
0004af40  0a 23 50 61 72 65 6e 74  20 4f 53 5f 0a 3d 3e 09  |.#Parent OS_.=>.|
0004af50  52 30 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R0 =.pointer to |
0004af60  3c 65 72 72 6f 72 20 62  6c 6f 63 6b 3d 3e 73 77  |<error block=>sw|
0004af70  69 5f 65 72 72 6f 72 62  6c 6f 63 6b 3e 0a 09 52  |i_errorblock>..R|
0004af80  31 20 3d 09 22 41 42 45  58 22 20 28 26 35 38 34  |1 =."ABEX" (&584|
0004af90  35 34 32 34 31 29 20 69  66 20 72 65 74 75 72 6e  |54241) if return|
0004afa0  20 63 6f 64 65 0a 09 52  32 20 3d 09 72 65 74 75  | code..R2 =.retu|
0004afb0  72 6e 20 63 6f 64 65 0a  09 52 33 20 3d 09 70 6f  |rn code..R3 =.po|
0004afc0  69 6e 74 65 72 20 74 6f  20 6d 6f 64 75 6c 65 20  |inter to module |
0004afd0  6e 61 6d 65 0a 0a 3c 3d  09 4e 65 76 65 72 20 72  |name..<=.Never r|
0004afe0  65 74 75 72 6e 73 0a 0a  54 68 69 73 20 53 57 49  |eturns..This SWI|
0004aff0  20 64 6f 65 73 20 65 78  61 63 74 6c 79 20 77 68  | does exactly wh|
0004b000  61 74 20 3c 4f 53 5f 45  78 69 74 3e 20 64 6f 65  |at <OS_Exit> doe|
0004b010  73 2c 20 62 75 74 20 69  6e 20 61 64 64 69 74 69  |s, but in additi|
0004b020  6f 6e 20 69 74 20 6b 69  6c 6c 73 20 74 68 65 20  |on it kills the |
0004b030  6d 6f 64 75 6c 65 20 69  6e 20 52 33 2e 00 00 00  |module in R3....|
0004b040  44 41 54 41 eb 02 00 00  4f 53 5f 46 69 6e 64 20  |DATA....OS_Find |
0004b050  20 28 26 30 44 29 0a 23  50 61 72 65 6e 74 20 4f  | (&0D).#Parent O|
0004b060  53 5f 0a 3d 3e 09 52 30  20 3d 09 72 65 61 73 6f  |S_.=>.R0 =.reaso|
0004b070  6e 20 63 6f 64 65 2c 20  61 6e 64 20 3c 70 61 74  |n code, and <pat|
0004b080  68 20 62 69 74 73 3d 3e  2e 70 61 74 68 62 69 74  |h bits=>.pathbit|
0004b090  73 3e 20 69 66 20 72 65  61 73 6f 6e 5c 3c 5c 3e  |s> if reason\<\>|
0004b0a0  30 0a 09 52 31 20 3d 09  66 69 6c 65 6e 61 6d 65  |0..R1 =.filename|
0004b0b0  20 66 6f 72 20 6f 70 65  6e 69 6e 67 20 66 69 6c  | for opening fil|
0004b0c0  65 73 2c 20 68 61 6e 64  6c 65 20 6f 74 68 65 72  |es, handle other|
0004b0d0  77 69 73 65 0a 09 52 32  20 3d 09 70 61 74 68 6e  |wise..R2 =.pathn|
0004b0e0  61 6d 65 2c 20 69 66 20  27 70 61 74 68 20 75 73  |ame, if 'path us|
0004b0f0  65 64 27 20 69 73 20 31  20 6f 72 20 32 29 0a 0a  |ed' is 1 or 2)..|
0004b100  3c 3d 09 52 30 20 3d 09  66 69 6c 65 20 68 61 6e  |<=.R0 =.file han|
0004b110  64 6c 65 2c 20 69 66 20  6f 70 65 6e 69 6e 67 0a  |dle, if opening.|
0004b120  0a 54 68 69 73 20 53 57  49 20 6f 70 65 6e 73 20  |.This SWI opens |
0004b130  61 6e 64 20 63 6c 6f 73  65 73 20 66 69 6c 65 73  |and closes files|
0004b140  20 61 63 63 6f 72 64 69  6e 67 20 74 6f 20 74 68  | according to th|
0004b150  65 20 72 65 61 73 6f 6e  20 63 6f 64 65 0a 0a 23  |e reason code..#|
0004b160  74 61 62 0a 52 30 09 41  63 74 69 6f 6e 0a 23 4c  |tab.R0.Action.#L|
0004b170  69 6e 65 0a 26 30 30 09  43 6c 6f 73 65 73 20 66  |ine.&00.Closes f|
0004b180  69 6c 65 20 52 31 2c 20  6f 72 20 61 6c 6c 20 66  |ile R1, or all f|
0004b190  69 6c 65 73 20 69 66 20  52 31 20 3d 20 30 0a 26  |iles if R1 = 0.&|
0004b1a0  34 30 09 4f 70 65 6e 20  65 78 69 73 74 69 6e 67  |40.Open existing|
0004b1b0  20 66 69 6c 65 20 77 69  74 68 20 72 65 61 64 2d  | file with read-|
0004b1c0  6f 6e 6c 79 20 61 63 63  65 73 73 0a 26 38 30 09  |only access.&80.|
0004b1d0  43 72 65 61 74 65 20 65  6d 70 74 79 20 66 69 6c  |Create empty fil|
0004b1e0  65 20 77 69 74 68 20 72  65 61 64 2f 77 72 69 74  |e with read/writ|
0004b1f0  65 20 61 63 63 65 73 73  0a 26 43 30 09 4f 70 65  |e access.&C0.Ope|
0004b200  6e 20 65 78 69 73 74 69  6e 67 20 66 69 6c 65 20  |n existing file |
0004b210  77 69 74 68 20 72 65 61  64 2f 77 72 69 74 65 20  |with read/write |
0004b220  61 63 63 65 73 73 0a 23  0a 23 53 75 62 70 61 67  |access.#.#Subpag|
0004b230  65 20 70 61 74 68 62 69  74 73 0a 4f 53 5f 46 69  |e pathbits.OS_Fi|
0004b240  6e 64 20 70 61 74 68 20  62 69 74 73 0a 4c 6f 77  |nd path bits.Low|
0004b250  20 62 69 74 73 09 4d 65  61 6e 69 6e 67 0a 23 4c  | bits.Meaning.#L|
0004b260  69 6e 65 0a 30 2d 31 09  09 50 61 74 68 20 75 73  |ine.0-1..Path us|
0004b270  65 64 0a 09 09 20 20 30  20 3a 20 46 69 6c 65 24  |ed...  0 : File$|
0004b280  50 61 74 68 0a 09 09 20  20 31 20 3a 20 53 74 72  |Path...  1 : Str|
0004b290  69 6e 67 20 70 6f 69 6e  74 65 64 20 74 6f 20 62  |ing pointed to b|
0004b2a0  79 20 52 32 0a 09 09 20  20 32 20 3a 20 56 61 72  |y R2...  2 : Var|
0004b2b0  69 61 62 6c 65 20 70 6f  69 6e 74 65 64 20 74 6f  |iable pointed to|
0004b2c0  20 62 79 20 52 32 0a 09  09 20 20 33 20 3a 20 4e  | by R2...  3 : N|
0004b2d0  6f 6e 65 0a 32 09 09 49  66 20 31 20 74 68 65 6e  |one.2..If 1 then|
0004b2e0  20 65 72 72 6f 72 20 69  66 20 6f 70 65 6e 20 65  | error if open e|
0004b2f0  78 69 73 74 69 6e 67 20  64 69 72 0a 33 09 09 49  |xisting dir.3..I|
0004b300  66 20 31 20 74 68 65 6e  20 65 72 72 6f 72 20 69  |f 1 then error i|
0004b310  66 20 66 69 6c 65 20 64  6f 65 73 6e 27 74 20 65  |f file doesn't e|
0004b320  78 69 73 74 0a 34 2d 35  09 09 30 00 44 41 54 41  |xist.4-5..0.DATA|
0004b330  13 01 00 00 4f 53 5f 47  65 74 45 6e 76 20 20 28  |....OS_GetEnv  (|
0004b340  26 31 30 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |&10).#Parent OS_|
0004b350  0a 3c 3d 09 52 30 20 3d  09 61 64 64 72 65 73 73  |.<=.R0 =.address|
0004b360  20 6f 66 20 2a 63 6f 6d  6d 61 6e 64 0a 09 52 31  | of *command..R1|
0004b370  20 3d 09 52 41 4d 20 6c  69 6d 69 74 0a 09 52 32  | =.RAM limit..R2|
0004b380  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 35 2d  | =.pointer to 5-|
0004b390  62 79 74 65 20 74 69 6d  65 20 6f 66 20 70 72 6f  |byte time of pro|
0004b3a0  67 20 73 74 61 72 74 0a  0a 54 68 65 20 76 61 6c  |g start..The val|
0004b3b0  75 65 73 20 72 65 74 75  72 6e 65 64 20 62 79 20  |ues returned by |
0004b3c0  74 68 69 73 20 53 57 49  20 69 6e 20 52 30 20 61  |this SWI in R0 a|
0004b3d0  6e 64 20 52 32 20 63 61  6e 20 62 65 20 73 65 74  |nd R2 can be set|
0004b3e0  20 77 69 74 68 20 3c 4f  53 5f 57 72 69 74 65 45  | with <OS_WriteE|
0004b3f0  6e 76 3e 2c 20 74 68 65  20 52 41 4d 20 6c 69 6d  |nv>, the RAM lim|
0004b400  69 74 20 69 73 20 73 65  74 20 77 69 74 68 20 3c  |it is set with <|
0004b410  4f 53 5f 43 68 61 6e 67  65 45 6e 76 69 72 6f 6e  |OS_ChangeEnviron|
0004b420  6d 65 6e 74 20 30 3d 3e  4f 53 5f 43 68 61 6e 67  |ment 0=>OS_Chang|
0004b430  65 45 6e 76 69 72 6f 6e  6d 65 6e 74 3e 2e 0a 00  |eEnvironment>...|
0004b440  44 41 54 41 61 01 00 00  4f 53 5f 52 65 6c 65 61  |DATAa...OS_Relea|
0004b450  73 65 20 20 28 26 32 30  29 0a 23 50 61 72 65 6e  |se  (&20).#Paren|
0004b460  74 20 4f 53 5f 0a 3d 3e  09 52 30 20 3d 09 3c 76  |t OS_.=>.R0 =.<v|
0004b470  65 63 74 6f 72 3d 3e 76  65 63 74 6f 72 5f 69 6e  |ector=>vector_in|
0004b480  64 65 78 3e 20 6e 75 6d  62 65 72 0a 09 52 31 20  |dex> number..R1 |
0004b490  3d 09 61 64 64 72 65 73  73 20 6f 66 20 72 65 6c  |=.address of rel|
0004b4a0  65 61 73 69 6e 67 20 72  6f 75 74 69 6e 65 0a 09  |easing routine..|
0004b4b0  52 32 20 3d 09 76 61 6c  75 65 20 67 69 76 65 6e  |R2 =.value given|
0004b4c0  20 69 6e 20 52 32 20 77  68 65 6e 20 63 6c 61 69  | in R2 when clai|
0004b4d0  6d 65 64 2e 0a 0a 3c 3d  09 52 30 2d 52 32 20 70  |med...<=.R0-R2 p|
0004b4e0  72 65 73 65 72 76 65 64  0a 20 20 20 20 20 20 20  |reserved.       |
0004b4f0  20 20 20 20 20 20 20 20  20 20 0a 54 68 69 73 20  |          .This |
0004b500  72 65 6d 6f 76 65 73 20  74 68 65 20 72 6f 75 74  |removes the rout|
0004b510  69 6e 65 2c 20 77 68 69  63 68 20 69 73 20 69 64  |ine, which is id|
0004b520  65 6e 74 69 66 69 65 64  20 62 79 20 62 6f 74 68  |entified by both|
0004b530  20 69 74 73 20 61 64 64  72 65 73 73 20 61 6e 64  | its address and|
0004b540  20 77 6f 72 6b 73 70 61  63 65 20 70 6f 69 6e 74  | workspace point|
0004b550  65 72 2c 20 66 72 6f 6d  20 74 68 65 20 6c 69 73  |er, from the lis|
0004b560  74 20 66 6f 72 20 74 68  65 20 73 70 65 63 69 66  |t for the specif|
0004b570  69 65 64 20 76 65 63 74  6f 72 2e 20 54 68 65 20  |ied vector. The |
0004b580  72 6f 75 74 69 6e 65 20  77 69 6c 6c 20 6e 6f 20  |routine will no |
0004b590  6c 6f 6e 67 65 72 20 62  65 20 63 61 6c 6c 65 64  |longer be called|
0004b5a0  2e 00 00 00 44 41 54 41  bd 00 00 00 4f 53 5f 53  |....DATA....OS_S|
0004b5b0  65 74 45 43 46 4f 72 69  67 69 6e 20 20 28 26 35  |etECFOrigin  (&5|
0004b5c0  36 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 0a 3d  |6).#Parent OS_.=|
0004b5d0  3e 09 52 30 20 3d 09 78  0a 09 52 31 20 3d 09 79  |>.R0 =.x..R1 =.y|
0004b5e0  0a 0a 54 68 69 73 20 53  57 49 20 73 65 74 73 20  |..This SWI sets |
0004b5f0  74 68 65 20 70 6f 69 6e  74 20 77 69 74 68 20 77  |the point with w|
0004b600  68 69 63 68 20 74 6f 20  61 6c 69 67 6e 20 74 68  |hich to align th|
0004b610  65 20 62 6f 74 74 6f 6d  20 6c 65 66 74 20 6f 66  |e bottom left of|
0004b620  20 45 43 46 20 70 61 74  74 65 72 6e 73 20 77 69  | ECF patterns wi|
0004b630  74 68 2e 0a 0a 59 6f 75  20 63 61 6e 20 61 6c 73  |th...You can als|
0004b640  6f 20 75 73 65 20 3c 56  44 55 20 32 33 2c 31 37  |o use <VDU 23,17|
0004b650  2c 36 3d 3e 56 44 55 3a  32 33 2c 31 37 2c 36 3e  |,6=>VDU:23,17,6>|
0004b660  2e 00 00 00 44 41 54 41  c8 03 00 00 4f 53 5f 53  |....DATA....OS_S|
0004b670  57 49 4e 75 6d 62 65 72  46 72 6f 6d 53 74 72 69  |WINumberFromStri|
0004b680  6e 67 20 20 28 26 33 39  29 0a 23 50 61 72 65 6e  |ng  (&39).#Paren|
0004b690  74 20 4f 53 5f 0a 3d 3e  09 52 31 20 3d 09 70 6f  |t OS_.=>.R1 =.po|
0004b6a0  69 6e 74 65 72 20 74 6f  20 6e 61 6d 65 2c 20 63  |inter to name, c|
0004b6b0  6f 6e 74 72 6f 6c 20 74  65 72 6d 69 6e 61 74 65  |ontrol terminate|
0004b6c0  64 0a 0a 3c 3d 09 52 30  20 3d 09 53 57 49 20 6e  |d..<=.R0 =.SWI n|
0004b6d0  75 6d 62 65 72 0a 09 52  31 20 3d 09 70 72 65 73  |umber..R1 =.pres|
0004b6e0  65 72 76 65 64 0a 0a 54  68 69 73 20 63 61 6c 6c  |erved..This call|
0004b6f0  20 63 6f 6e 76 65 72 74  73 20 61 20 53 57 49 20  | converts a SWI |
0004b700  6e 61 6d 65 20 73 74 72  69 6e 67 20 74 6f 20 61  |name string to a|
0004b710  20 53 57 49 20 6e 75 6d  62 65 72 2e 20 41 6e 20  | SWI number. An |
0004b720  65 72 72 6f 72 20 69 73  20 67 69 76 65 6e 20 69  |error is given i|
0004b730  66 20 74 68 65 20 53 57  49 20 6e 61 6d 65 20 69  |f the SWI name i|
0004b740  73 20 6e 6f 74 20 72 65  63 6f 67 6e 69 7a 65 64  |s not recognized|
0004b750  2e 0a 0a 23 74 61 62 0a  54 68 65 20 63 6f 6e 76  |...#tab.The conv|
0004b760  65 72 73 69 6f 6e 20 69  73 20 61 73 20 66 6f 6c  |ersion is as fol|
0004b770  6c 6f 77 73 3a 0a 8f 09  41 20 6c 65 61 64 69 6e  |lows:...A leadin|
0004b780  67 20 58 20 69 73 20 73  74 72 69 70 70 65 64 2e  |g X is stripped.|
0004b790  20 49 66 20 70 72 65 73  65 6e 74 2c 20 69 74 20  | If present, it |
0004b7a0  77 69 6c 6c 20 63 61 75  73 65 20 26 32 30 30 30  |will cause &2000|
0004b7b0  30 20 74 6f 20 62 65 20  61 64 64 65 64 20 74 6f  |0 to be added to|
0004b7c0  20 74 68 65 20 6e 75 6d  62 65 72 20 72 65 74 75  | the number retu|
0004b7d0  72 6e 65 64 20 28 62 69  74 20 31 37 29 2e 0a 8f  |rned (bit 17)...|
0004b7e0  09 53 79 73 74 65 6d 20  6e 61 6d 65 73 20 61 72  |.System names ar|
0004b7f0  65 20 63 68 65 63 6b 65  64 20 66 6f 72 2e 20 4e  |e checked for. N|
0004b800  6f 74 65 20 74 68 61 74  20 74 68 65 20 63 6f 6e  |ote that the con|
0004b810  76 65 72 73 69 6f 6e 20  6f 66 20 53 57 49 73 20  |version of SWIs |
0004b820  69 73 6e 27 74 20 76 65  72 79 20 62 69 64 69 72  |isn't very bidir|
0004b830  65 63 74 69 6f 6e 61 6c  3a 20 74 68 65 20 6e 61  |ectional: the na|
0004b840  6d 65 20 4f 53 5f 57 72  69 74 65 49 2b 22 20 22  |me OS_WriteI+" "|
0004b850  20 63 61 6e 20 62 65 20  70 72 6f 64 75 63 65 64  | can be produced|
0004b860  2c 20 62 75 74 20 6f 6e  6c 79 20 4f 53 5f 57 72  |, but only OS_Wr|
0004b870  69 74 65 49 20 69 73 20  72 65 63 6f 67 6e 69 7a  |iteI is recogniz|
0004b880  65 64 2e 0a 8f 09 4d 6f  64 75 6c 65 73 20 61 72  |ed....Modules ar|
0004b890  65 20 73 63 61 6e 6e 65  64 2e 20 49 66 20 74 68  |e scanned. If th|
0004b8a0  65 20 6d 6f 64 75 6c 65  20 70 72 65 66 69 78 20  |e module prefix |
0004b8b0  6d 61 74 63 68 65 73 20  74 68 65 20 6f 6e 65 20  |matches the one |
0004b8c0  67 69 76 65 6e 2c 20 61  6e 64 20 74 68 65 20 73  |given, and the s|
0004b8d0  75 66 66 69 78 20 74 6f  20 74 68 65 20 6e 61 6d  |uffix to the nam|
0004b8e0  65 20 69 73 20 61 20 6e  75 6d 62 65 72 2c 20 74  |e is a number, t|
0004b8f0  68 65 6e 20 74 68 61 74  20 6e 75 6d 62 65 72 20  |hen that number |
0004b900  69 73 20 61 64 64 65 64  20 74 6f 20 74 68 65 20  |is added to the |
0004b910  6d 6f 64 75 6c 65 27 73  20 53 57 49 20 27 63 68  |module's SWI 'ch|
0004b920  75 6e 6b 27 20 62 61 73  65 2c 20 61 6e 64 20 74  |unk' base, and t|
0004b930  68 65 20 73 75 6d 20 72  65 74 75 72 6e 65 64 2e  |he sum returned.|
0004b940  20 46 6f 72 20 65 78 61  6d 70 6c 65 2c 20 57 69  | For example, Wi|
0004b950  6d 70 5f 26 32 33 20 72  65 74 75 72 6e 73 20 26  |mp_&23 returns &|
0004b960  34 30 30 45 33 2c 20 61  73 20 74 68 65 20 57 69  |400E3, as the Wi|
0004b970  6d 70 27 73 20 63 68 75  6e 6b 20 6e 75 6d 62 65  |mp's chunk numbe|
0004b980  72 20 69 73 20 26 34 30  30 43 30 2e 0a 8f 09 49  |r is &400C0....I|
0004b990  66 20 74 68 65 20 73 75  66 66 69 78 20 69 73 20  |f the suffix is |
0004b9a0  61 20 6e 61 6d 65 2c 20  61 6e 64 20 74 68 69 73  |a name, and this|
0004b9b0  20 63 61 6e 20 62 65 20  6d 61 74 63 68 65 64 20  | can be matched |
0004b9c0  62 79 20 74 68 65 20 6d  6f 64 75 6c 65 2c 20 74  |by the module, t|
0004b9d0  68 65 20 61 70 70 72 6f  70 72 69 61 74 65 20 6e  |he appropriate n|
0004b9e0  75 6d 62 65 72 20 69 73  20 72 65 74 75 72 6e 65  |umber is returne|
0004b9f0  64 2e 20 46 6f 72 20 65  78 61 6d 70 6c 65 2c 20  |d. For example, |
0004ba00  3c 57 69 6d 70 5f 50 6f  6c 6c 3d 3e 57 69 6d 70  |<Wimp_Poll=>Wimp|
0004ba10  3a 57 69 6d 70 5f 50 6f  6c 6c 3e 20 72 65 74 75  |:Wimp_Poll> retu|
0004ba20  72 6e 73 20 26 34 30 30  43 37 2e 0a 44 41 54 41  |rns &400C7..DATA|
0004ba30  3c 03 00 00 4f 53 5f 53  57 49 4e 75 6d 62 65 72  |<...OS_SWINumber|
0004ba40  54 6f 53 74 72 69 6e 67  20 20 28 26 33 38 29 0a  |ToString  (&38).|
0004ba50  23 50 61 72 65 6e 74 20  4f 53 5f 0a 3d 3e 09 52  |#Parent OS_.=>.R|
0004ba60  30 20 3d 09 53 57 49 20  4e 75 6d 62 65 72 0a 09  |0 =.SWI Number..|
0004ba70  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
0004ba80  62 75 66 66 65 72 0a 09  52 32 20 3d 09 62 75 66  |buffer..R2 =.buf|
0004ba90  66 65 72 20 6c 65 6e 67  74 68 0a 0a 3c 3d 09 52  |fer length..<=.R|
0004baa0  30 2c 52 31 20 70 72 65  73 65 72 76 65 64 0a 09  |0,R1 preserved..|
0004bab0  52 32 20 3d 09 6c 65 6e  67 74 68 20 6f 66 20 73  |R2 =.length of s|
0004bac0  74 72 69 6e 67 20 69 6e  20 62 75 66 66 65 72 0a  |tring in buffer.|
0004bad0  0a 54 68 69 73 20 63 61  6c 6c 20 63 6f 6e 76 65  |.This call conve|
0004bae0  72 74 73 20 61 20 53 57  49 20 6e 75 6d 62 65 72  |rts a SWI number|
0004baf0  20 74 6f 20 61 20 73 74  72 69 6e 67 20 63 6f 6e  | to a string con|
0004bb00  74 61 69 6e 69 6e 67 20  69 74 73 20 53 57 49 20  |taining its SWI |
0004bb10  6e 61 6d 65 2e 20 54 68  65 20 72 65 74 75 72 6e  |name. The return|
0004bb20  65 64 20 73 74 72 69 6e  67 20 69 73 20 6e 75 6c  |ed string is nul|
0004bb30  6c 2d 74 65 72 6d 69 6e  61 74 65 64 2c 20 61 6e  |l-terminated, an|
0004bb40  64 20 73 74 61 72 74 73  20 77 69 74 68 20 61 6e  |d starts with an|
0004bb50  20 58 20 69 66 20 74 68  65 20 53 57 49 20 6e 75  | X if the SWI nu|
0004bb60  6d 62 65 72 20 68 61 73  20 62 69 74 20 31 37 20  |mber has bit 17 |
0004bb70  73 65 74 2e 0a 0a 53 57  49 20 6e 75 6d 62 65 72  |set...SWI number|
0004bb80  73 20 5c 3c 20 26 32 30  30 20 68 61 76 65 20 61  |s \< &200 have a|
0004bb90  6e 20 27 4f 53 5f 27 20  70 72 65 66 69 78 20 74  |n 'OS_' prefix t|
0004bba0  6f 20 74 68 65 20 6d 61  69 6e 20 70 61 72 74 2c  |o the main part,|
0004bbb0  20 61 6e 64 20 61 20 53  57 49 2d 64 65 70 65 6e  | and a SWI-depen|
0004bbc0  64 65 6e 74 20 65 6e 64  20 73 65 63 74 69 6f 6e  |dent end section|
0004bbd0  20 28 77 68 69 63 68 20  69 73 20 27 55 6e 64 65  | (which is 'Unde|
0004bbe0  66 69 6e 65 64 27 20 66  6f 72 20 75 6e 6b 6f 77  |fined' for unkow|
0004bbf0  6e 20 4f 53 20 53 57 49  73 29 2e 0a 0a 53 57 49  |n OS SWIs)...SWI|
0004bc00  20 6e 75 6d 62 65 72 73  20 69 6e 20 74 68 65 20  | numbers in the |
0004bc10  72 61 6e 67 65 20 26 31  30 30 20 74 6f 20 26 31  |range &100 to &1|
0004bc20  46 46 20 61 72 65 20 63  6f 6e 76 65 72 74 65 64  |FF are converted|
0004bc30  20 69 6e 20 74 68 65 20  66 6f 72 6d 20 4f 53 5f  | in the form OS_|
0004bc40  57 72 69 74 65 49 2b 22  41 22 2c 20 6f 72 20 4f  |WriteI+"A", or O|
0004bc50  53 5f 57 72 69 74 65 49  2b 32 33 20 69 66 20 74  |S_WriteI+23 if t|
0004bc60  68 65 20 63 68 61 72 61  63 74 65 72 20 69 73 20  |he character is |
0004bc70  6e 6f 74 20 61 20 70 72  69 6e 74 61 62 6c 65 20  |not a printable |
0004bc80  6f 6e 65 2e 0a 0a 53 57  49 20 6e 75 6d 62 65 72  |one...SWI number|
0004bc90  73 20 3e 3d 20 26 32 30  30 20 61 72 65 20 6c 6f  |s >= &200 are lo|
0004bca0  6f 6b 65 64 20 66 6f 72  20 69 6e 20 6d 6f 64 75  |oked for in modu|
0004bcb0  6c 65 73 2e 20 49 66 20  61 20 73 75 69 74 61 62  |les. If a suitab|
0004bcc0  6c 65 20 6e 61 6d 65 20  69 73 20 66 6f 75 6e 64  |le name is found|
0004bcd0  2c 20 69 74 20 69 73 20  67 69 76 65 6e 20 69 6e  |, it is given in|
0004bce0  20 74 68 65 20 66 6f 72  6d 20 6d 6f 64 75 6c 65  | the form module|
0004bcf0  5f 6e 61 6d 65 20 6f 72  20 6d 6f 64 75 6c 65 5f  |_name or module_|
0004bd00  6e 75 6d 62 65 72 2c 20  65 67 2e 20 57 69 6d 70  |number, eg. Wimp|
0004bd10  5f 49 6e 69 74 69 61 6c  69 73 65 2c 20 57 69 6d  |_Initialise, Wim|
0004bd20  70 5f 33 32 2e 20 49 66  20 6e 6f 20 6e 61 6d 65  |p_32. If no name|
0004bd30  20 69 73 20 66 6f 75 6e  64 20 69 6e 20 74 68 65  | is found in the|
0004bd40  20 6d 6f 64 75 6c 65 73  2c 20 74 68 65 20 73 74  | modules, the st|
0004bd50  72 69 6e 67 20 27 55 73  65 72 27 20 69 73 20 72  |ring 'User' is r|
0004bd60  65 74 75 72 6e 65 64 2e  44 41 54 41 47 01 00 00  |eturned.DATAG...|
0004bd70  4f 53 5f 55 70 64 61 74  65 4d 45 4d 43 20 20 28  |OS_UpdateMEMC  (|
0004bd80  26 31 41 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |&1A).#Parent OS_|
0004bd90  0a 3d 3e 09 52 30 20 3d  09 4e 65 77 20 62 69 74  |.=>.R0 =.New bit|
0004bda0  73 0a 09 52 31 20 3d 09  4d 61 73 6b 0a 0a 3c 3d  |s..R1 =.Mask..<=|
0004bdb0  09 52 30 20 3d 09 4f 6c  64 20 72 65 67 69 73 74  |.R0 =.Old regist|
0004bdc0  65 72 20 76 61 6c 75 65  0a 0a 54 68 69 73 20 53  |er value..This S|
0004bdd0  57 49 20 70 72 6f 67 72  61 6d 73 20 69 6e 64 69  |WI programs indi|
0004bde0  76 69 64 75 61 6c 20 62  69 74 73 20 69 6e 20 74  |vidual bits in t|
0004bdf0  68 65 20 3c 4d 45 4d 43  20 63 6f 6e 74 72 6f 6c  |he <MEMC control|
0004be00  20 72 65 67 69 73 74 65  72 3d 3e 4d 61 63 68 69  | register=>Machi|
0004be10  6e 65 3a 4d 45 4d 43 31  3e 2e 20 53 69 6e 63 65  |ne:MEMC1>. Since|
0004be20  20 74 68 65 20 4d 45 4d  43 20 69 73 20 77 72 69  | the MEMC is wri|
0004be30  74 65 2d 6f 6e 6c 79 2c  20 74 68 69 73 20 69 73  |te-only, this is|
0004be40  20 64 6f 6e 65 20 76 69  61 20 61 20 73 6f 66 74  | done via a soft|
0004be50  77 61 72 65 20 63 6f 70  79 2c 20 6d 61 69 6e 74  |ware copy, maint|
0004be60  61 69 6e 65 64 20 62 79  20 74 68 65 20 4f 53 2e  |ained by the OS.|
0004be70  0a 0a 52 65 67 20 3d 20  28 52 65 67 43 6f 70 79  |..Reg = (RegCopy|
0004be80  20 41 4e 44 20 4e 4f 54  20 52 31 29 20 4f 52 20  | AND NOT R1) OR |
0004be90  28 52 30 20 41 4e 44 20  52 31 29 0a 0a 54 6f 20  |(R0 AND R1)..To |
0004bea0  72 65 61 64 3a 20 52 30  2c 52 31 20 3d 20 30 00  |read: R0,R1 = 0.|
0004beb0  44 41 54 41 eb 01 00 00  4f 53 5f 56 61 6c 69 64  |DATA....OS_Valid|
0004bec0  61 74 65 41 64 64 72 65  73 73 20 20 28 26 33 41  |ateAddress  (&3A|
0004bed0  29 0a 23 50 61 72 65 6e  74 20 4f 53 5f 0a 3d 3e  |).#Parent OS_.=>|
0004bee0  09 52 30 20 3d 09 6d 69  6e 69 6d 75 6d 20 61 64  |.R0 =.minimum ad|
0004bef0  64 72 65 73 73 0a 09 52  31 20 3d 09 6d 61 78 69  |dress..R1 =.maxi|
0004bf00  6d 75 6d 20 61 64 64 72  65 73 73 0a 0a 3c 3d 09  |mum address..<=.|
0004bf10  52 30 2c 52 31 20 70 72  65 73 65 72 76 65 64 0a  |R0,R1 preserved.|
0004bf20  09 43 20 66 6c 61 67 20  69 73 20 63 6c 65 61 72  |.C flag is clear|
0004bf30  20 69 66 20 74 68 65 20  72 61 6e 67 65 20 69 73  | if the range is|
0004bf40  20 4f 4b 2c 20 73 65 74  20 6f 74 68 65 72 77 69  | OK, set otherwi|
0004bf50  73 65 0a 0a 53 57 49 20  63 68 65 63 6b 73 20 74  |se..SWI checks t|
0004bf60  68 65 20 61 64 64 72 65  73 73 20 72 61 6e 67 65  |he address range|
0004bf70  20 62 65 74 77 65 65 6e  20 52 30 20 61 6e 64 20  | between R0 and |
0004bf80  52 31 2d 31 20 74 6f 20  73 65 65 20 69 66 20 74  |R1-1 to see if t|
0004bf90  68 65 20 73 70 65 63 69  66 69 65 64 20 72 61 6e  |he specified ran|
0004bfa0  67 65 20 6c 69 65 73 20  69 6e 20 3c 6c 6f 67 69  |ge lies in <logi|
0004bfb0  63 61 6c 20 52 41 4d 3d  3e 4d 61 63 68 69 6e 65  |cal RAM=>Machine|
0004bfc0  3a 4c 6f 67 69 63 61 6c  3e 20 61 6e 64 20 68 61  |:Logical> and ha|
0004bfd0  73 20 61 20 6d 61 70 70  69 6e 67 20 69 6e 74 6f  |s a mapping into|
0004bfe0  20 70 68 79 73 69 63 61  6c 20 52 41 4d 2e 0a 0a  | physical RAM...|
0004bff0  4e 6f 74 65 3a 20 54 68  69 73 20 64 6f 65 73 20  |Note: This does |
0004c000  2f 6e 6f 74 2f 20 63 68  65 63 6b 20 74 68 61 74  |/not/ check that|
0004c010  20 74 68 65 20 6d 65 6d  6f 72 79 20 61 63 74 75  | the memory actu|
0004c020  61 6c 6c 79 20 65 78 69  73 74 73 2c 20 6f 6e 6c  |ally exists, onl|
0004c030  79 20 74 68 61 74 20 69  74 20 6f 75 67 68 74 20  |y that it ought |
0004c040  74 6f 20 65 78 69 73 74  2e 20 49 66 20 79 6f 75  |to exist. If you|
0004c050  20 68 61 76 65 20 75 73  65 64 20 3c 4f 53 5f 53  | have used <OS_S|
0004c060  65 74 4d 65 6d 4d 61 70  45 6e 74 72 69 65 73 3e  |etMemMapEntries>|
0004c070  2c 20 74 68 65 6e 20 74  68 69 73 20 63 61 6c 6c  |, then this call|
0004c080  20 77 69 6c 6c 20 6e 6f  74 20 77 6f 72 6b 20 61  | will not work a|
0004c090  73 20 65 78 70 65 63 74  65 64 2e 00 44 41 54 41  |s expected..DATA|
0004c0a0  1b 01 00 00 4f 53 5f 47  65 6e 65 72 61 74 65 45  |....OS_GenerateE|
0004c0b0  76 65 6e 74 20 20 28 26  32 32 29 0a 23 50 61 72  |vent  (&22).#Par|
0004c0c0  65 6e 74 20 4f 53 5f 0a  3d 3e 09 52 30 20 3d 09  |ent OS_.=>.R0 =.|
0004c0d0  3c 65 76 65 6e 74 20 6e  75 6d 62 65 72 3d 3e 45  |<event number=>E|
0004c0e0  76 65 6e 74 5f 69 6e 64  65 78 3e 0a 09 52 31 2e  |vent_index>..R1.|
0004c0f0  2e 2e 20 65 76 65 6e 74  20 70 61 72 61 6d 65 74  |.. event paramet|
0004c100  65 72 73 0a 0a 3c 3d 09  61 6c 6c 20 72 65 67 69  |ers..<=.all regi|
0004c110  73 74 65 72 73 20 70 72  65 73 65 72 76 65 64 0a  |sters preserved.|
0004c120  0a 4e 6f 74 65 20 74 68  61 74 2c 20 61 73 20 75  |.Note that, as u|
0004c130  73 75 61 6c 2c 20 74 68  65 20 65 76 65 6e 74 20  |sual, the event |
0004c140  76 65 63 74 6f 72 20 77  69 6c 6c 20 6f 6e 6c 79  |vector will only|
0004c150  20 62 65 20 63 61 6c 6c  65 64 20 69 66 20 74 68  | be called if th|
0004c160  65 20 65 76 65 6e 74 20  6e 75 6d 62 65 72 20 67  |e event number g|
0004c170  69 76 65 6e 20 69 6e 20  52 30 20 68 61 73 20 70  |iven in R0 has p|
0004c180  72 65 76 69 6f 75 73 6c  79 20 62 65 65 6e 20 65  |reviously been e|
0004c190  6e 61 62 6c 65 64 20 75  73 69 6e 67 20 3c 4f 53  |nabled using <OS|
0004c1a0  5f 42 79 74 65 20 31 34  3d 3e 6f 73 5f 62 79 74  |_Byte 14=>os_byt|
0004c1b0  65 30 31 34 3e 2e 0a 00  44 41 54 41 1c 01 00 00  |e014>...DATA....|
0004c1c0  4f 53 5f 4d 6f 75 73 65  20 20 28 26 31 43 29 0a  |OS_Mouse  (&1C).|
0004c1d0  23 50 61 72 65 6e 74 20  4f 53 5f 0a 23 57 72 61  |#Parent OS_.#Wra|
0004c1e0  70 20 4f 66 66 0a 3c 3d  09 52 30 20 3d 09 78 20  |p Off.<=.R0 =.x |
0004c1f0  63 6f 2d 6f 72 64 69 6e  61 74 65 0a 09 52 31 20  |co-ordinate..R1 |
0004c200  3d 09 79 20 63 6f 2d 6f  72 64 69 6e 61 74 65 0a  |=.y co-ordinate.|
0004c210  09 52 32 20 3d 09 3c 62  75 74 74 6f 6e 73 3d 3e  |.R2 =.<buttons=>|
0004c220  4f 53 5f 6d 6f 75 73 65  62 75 74 74 6f 6e 73 3e  |OS_mousebuttons>|
0004c230  0a 09 52 33 20 3d 09 74  69 6d 65 20 6f 66 20 62  |..R3 =.time of b|
0004c240  75 74 74 6f 6e 20 63 68  61 6e 67 65 2e 0a 23 57  |utton change..#W|
0004c250  72 61 70 0a 0a 54 68 69  73 20 53 57 49 20 72 65  |rap..This SWI re|
0004c260  74 75 72 6e 73 20 74 68  65 20 63 75 72 72 65 6e  |turns the curren|
0004c270  74 20 6d 6f 75 73 65 20  73 74 61 74 75 73 2c 20  |t mouse status, |
0004c280  65 69 74 68 65 72 20 66  72 6f 6d 20 74 68 65 20  |either from the |
0004c290  6d 6f 75 73 65 20 62 75  66 66 65 72 2c 20 6f 72  |mouse buffer, or|
0004c2a0  20 74 68 65 20 63 75 72  72 65 6e 74 20 6d 6f 75  | the current mou|
0004c2b0  73 65 20 70 6f 73 69 74  69 6f 6e 20 69 66 20 74  |se position if t|
0004c2c0  68 65 20 62 75 66 66 65  72 20 69 73 20 65 6d 70  |he buffer is emp|
0004c2d0  74 79 2e 0a 44 41 54 41  a4 03 00 00 4f 53 5f 43  |ty..DATA....OS_C|
0004c2e0  68 61 6e 67 65 45 6e 76  69 72 6f 6e 6d 65 6e 74  |hangeEnvironment|
0004c2f0  20 28 26 34 30 29 0a 23  50 61 72 65 6e 74 20 4f  | (&40).#Parent O|
0004c300  53 5f 0a 3d 3e 09 52 30  20 3d 09 3c 68 61 6e 64  |S_.=>.R0 =.<hand|
0004c310  6c 65 72 20 6e 75 6d 62  65 72 3d 3e 4f 53 5f 68  |ler number=>OS_h|
0004c320  61 6e 64 6c 65 72 73 3e  0a 09 52 31 20 3d 09 6e  |andlers>..R1 =.n|
0004c330  65 77 20 61 64 64 72 65  73 73 2c 20 6f 72 20 30  |ew address, or 0|
0004c340  20 74 6f 20 72 65 61 64  0a 09 52 32 20 3d 09 76  | to read..R2 =.v|
0004c350  61 6c 75 65 20 6f 66 20  52 31 32 20 77 68 65 6e  |alue of R12 when|
0004c360  20 63 6f 64 65 20 69 73  20 63 61 6c 6c 65 64 0a  | code is called.|
0004c370  09 52 33 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R3 =.pointer to|
0004c380  20 62 75 66 66 65 72 20  69 66 20 61 70 70 72 6f  | buffer if appro|
0004c390  70 72 69 61 74 65 20 6f  72 20 30 20 74 6f 20 72  |priate or 0 to r|
0004c3a0  65 61 64 0a 0a 3c 3d 09  52 30 20 70 72 65 73 65  |ead..<=.R0 prese|
0004c3b0  72 76 65 64 0a 09 52 31  20 3d 09 70 72 65 76 69  |rved..R1 =.previ|
0004c3c0  6f 75 73 20 61 64 64 72  65 73 73 0a 09 52 32 20  |ous address..R2 |
0004c3d0  3d 09 70 72 65 76 69 6f  75 73 20 52 31 32 0a 09  |=.previous R12..|
0004c3e0  52 33 20 3d 09 70 72 65  76 69 6f 75 73 20 62 75  |R3 =.previous bu|
0004c3f0  66 66 65 72 20 70 6f 69  6e 74 65 72 0a 0a 54 68  |ffer pointer..Th|
0004c400  69 73 20 69 73 20 61 20  73 69 6e 67 6c 65 20 72  |is is a single r|
0004c410  6f 75 74 69 6e 65 20 77  68 69 63 68 20 70 65 72  |outine which per|
0004c420  66 6f 72 6d 73 20 74 68  65 20 61 63 74 69 6f 6e  |forms the action|
0004c430  73 20 6f 66 20 3c 4f 53  5f 43 6f 6e 74 72 6f 6c  |s of <OS_Control|
0004c440  3e 2c 20 3c 4f 53 5f 53  65 74 45 6e 76 3e 2c 20  |>, <OS_SetEnv>, |
0004c450  3c 4f 53 5f 43 61 6c 6c  42 61 63 6b 3e 2c 20 3c  |<OS_CallBack>, <|
0004c460  4f 53 5f 42 72 65 61 6b  43 74 72 6c 3e 20 61 6e  |OS_BreakCtrl> an|
0004c470  64 20 3c 4f 53 5f 55 6e  75 73 65 64 53 57 49 3e  |d <OS_UnusedSWI>|
0004c480  2e 20 49 6e 20 66 61 63  74 20 61 6c 6c 20 6f 66  |. In fact all of|
0004c490  20 74 68 6f 73 65 20 72  6f 75 74 69 6e 65 73 20  | those routines |
0004c4a0  75 73 65 20 74 68 69 73  20 63 61 6c 6c 20 61 6e  |use this call an|
0004c4b0  64 20 61 72 65 20 6f 6e  6c 79 20 6b 65 70 74 20  |d are only kept |
0004c4c0  66 6f 72 20 62 61 63 6b  77 61 72 64 73 20 63 6f  |for backwards co|
0004c4d0  6d 70 61 74 69 62 69 6c  69 74 79 2c 20 73 6f 20  |mpatibility, so |
0004c4e0  79 6f 75 20 73 68 6f 75  6c 64 20 75 73 65 20 74  |you should use t|
0004c4f0  68 69 73 20 63 61 6c 6c  20 69 6e 20 70 72 65 66  |his call in pref|
0004c500  65 72 65 6e 63 65 2e 0a  0a 4e 6f 74 65 2c 20 4f  |erence...Note, O|
0004c510  53 5f 43 68 61 6e 67 65  45 6e 76 69 72 6f 6e 6d  |S_ChangeEnvironm|
0004c520  65 6e 74 20 76 65 63 74  6f 72 73 20 74 68 72 6f  |ent vectors thro|
0004c530  75 67 68 20 43 68 61 6e  67 65 45 6e 76 69 72 6f  |ugh ChangeEnviro|
0004c540  6e 6d 65 6e 74 56 2e 20  41 20 72 6f 75 74 69 6e  |nmentV. A routin|
0004c550  65 20 6c 69 6e 6b 65 64  20 69 6e 74 6f 20 74 68  |e linked into th|
0004c560  69 73 20 76 65 63 74 6f  72 20 63 61 6e 20 73 74  |is vector can st|
0004c570  6f 70 20 74 68 65 20 63  68 61 6e 67 65 20 66 72  |op the change fr|
0004c580  6f 6d 20 68 61 70 70 65  6e 69 6e 67 20 62 79 20  |om happening by |
0004c590  73 65 74 74 69 6e 67 20  52 31 20 74 6f 20 7a 65  |setting R1 to ze|
0004c5a0  72 6f 20 61 6e 64 20 70  61 73 73 69 6e 67 20 74  |ro and passing t|
0004c5b0  68 65 20 63 61 6c 6c 20  6f 6e 2e 0a 0a 49 66 20  |he call on...If |
0004c5c0  79 6f 75 20 73 65 74 20  75 70 20 61 6e 79 20 68  |you set up any h|
0004c5d0  61 6e 64 6c 65 72 73 2c  20 79 6f 75 20 2a 6d 75  |andlers, you *mu|
0004c5e0  73 74 2a 20 70 72 6f 76  69 64 65 20 45 72 72 6f  |st* provide Erro|
0004c5f0  72 2c 20 45 78 69 74 20  61 6e 64 20 55 70 43 61  |r, Exit and UpCa|
0004c600  6c 6c 20 68 61 6e 64 6c  65 72 73 20 73 6f 20 74  |ll handlers so t|
0004c610  68 61 74 20 79 6f 75 20  63 61 6e 20 72 65 73 74  |hat you can rest|
0004c620  6f 72 65 20 61 6c 6c 20  68 61 6e 64 6c 65 72 73  |ore all handlers|
0004c630  20 6f 6e 20 61 6e 79 20  6b 69 6e 64 20 6f 66 20  | on any kind of |
0004c640  70 72 6f 67 72 61 6d 20  65 78 69 74 20 28 65 76  |program exit (ev|
0004c650  65 6e 20 58 20 53 57 49  73 20 63 61 6e 20 67 65  |en X SWIs can ge|
0004c660  6e 65 72 61 74 65 20 73  65 72 69 6f 75 73 20 65  |nerate serious e|
0004c670  72 72 6f 72 73 29 2e 0a  44 41 54 41 c1 01 00 00  |rrors)..DATA....|
0004c680  4f 53 5f 43 6f 6e 66 69  72 6d 20 20 28 26 35 39  |OS_Confirm  (&59|
0004c690  29 0a 23 50 61 72 65 6e  74 20 4f 53 5f 0a 3c 3d  |).#Parent OS_.<=|
0004c6a0  09 52 30 20 3d 09 72 65  73 75 6c 74 0a 09 43 20  |.R0 =.result..C |
0004c6b0  73 65 74 20 69 66 20 65  73 63 61 70 65 20 70 72  |set if escape pr|
0004c6c0  65 73 73 65 64 0a 09 5a  20 73 65 74 20 69 66 20  |essed..Z set if |
0004c6d0  72 65 73 75 6c 74 20 77  61 73 20 69 6e 20 61 6e  |result was in an|
0004c6e0  79 20 77 61 79 20 59 65  73 2e 0a 0a 54 68 69 73  |y way Yes...This|
0004c6f0  20 63 61 6c 6c 20 61 73  6b 73 20 74 68 65 20 75  | call asks the u|
0004c700  73 65 72 20 66 6f 72 20  63 6f 6e 66 69 72 6d 61  |ser for confirma|
0004c710  74 69 6f 6e 20 6f 66 20  61 6e 20 61 63 74 69 6f  |tion of an actio|
0004c720  6e 20 62 79 20 63 68 61  6e 67 69 6e 67 20 74 68  |n by changing th|
0004c730  65 20 70 6f 69 6e 74 65  72 20 61 6e 64 20 77 61  |e pointer and wa|
0004c740  69 74 69 6e 67 20 75 6e  74 69 6c 20 61 20 6b 65  |iting until a ke|
0004c750  79 20 6f 72 20 6d 6f 75  73 65 20 62 75 74 74 6f  |y or mouse butto|
0004c760  6e 20 69 73 20 70 72 65  73 73 65 64 2e 20 53 65  |n is pressed. Se|
0004c770  6c 65 63 74 20 72 65 74  75 72 6e 73 20 74 68 65  |lect returns the|
0004c780  20 76 61 6c 75 65 20 31  32 31 20 28 63 68 61 72  | value 121 (char|
0004c790  61 63 74 65 72 20 79 29  2c 20 4d 65 6e 75 20 61  |acter y), Menu a|
0004c7a0  6e 64 20 41 64 6a 75 73  74 20 72 65 74 75 72 6e  |nd Adjust return|
0004c7b0  20 31 31 30 20 28 63 68  61 72 61 63 74 65 72 20  | 110 (character |
0004c7c0  6e 29 2e 20 4b 65 79 70  72 65 73 73 65 73 20 72  |n). Keypresses r|
0004c7d0  65 74 75 72 6e 20 74 68  65 20 6c 6f 77 65 72 2d  |eturn the lower-|
0004c7e0  63 61 73 65 20 61 73 63  69 69 20 76 61 6c 75 65  |case ascii value|
0004c7f0  2e 0a 0a 54 68 69 73 20  73 68 6f 75 6c 64 20 6f  |...This should o|
0004c800  6e 6c 79 20 62 65 20 75  73 65 64 20 69 6e 20 61  |nly be used in a|
0004c810  70 70 6c 69 63 61 74 69  6f 6e 73 20 6f 75 74 73  |pplications outs|
0004c820  69 64 65 20 74 68 65 20  64 65 73 6b 74 6f 70 2c  |ide the desktop,|
0004c830  20 69 66 20 65 76 65 72  2e 00 00 00 44 41 54 41  | if ever....DATA|
0004c840  27 01 00 00 4f 53 5f 53  65 74 56 61 72 56 61 6c  |'...OS_SetVarVal|
0004c850  20 20 28 26 32 34 29 0a  23 50 61 72 65 6e 74 20  |  (&24).#Parent |
0004c860  4f 53 5f 0a 3d 3e 09 52  30 20 3d 09 70 6f 69 6e  |OS_.=>.R0 =.poin|
0004c870  74 65 72 20 74 6f 20 6e  61 6d 65 0a 09 52 31 20  |ter to name..R1 |
0004c880  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 76 61 6c  |=.pointer to val|
0004c890  75 65 20 74 6f 20 73 65  74 20 74 6f 0a 09 52 32  |ue to set to..R2|
0004c8a0  20 3d 09 6c 65 6e 67 74  68 2c 20 6f 72 20 2d 31  | =.length, or -1|
0004c8b0  20 74 6f 20 75 6e 73 65  74 0a 09 52 33 20 3d 09  | to unset..R3 =.|
0004c8c0  6e 61 6d 65 20 70 6f 69  6e 74 65 72 20 28 30 20  |name pointer (0 |
0004c8d0  66 6f 72 20 31 73 74 20  63 61 6c 6c 29 0a 09 52  |for 1st call)..R|
0004c8e0  34 20 3d 09 3c 76 61 72  69 61 62 6c 65 20 74 79  |4 =.<variable ty|
0004c8f0  70 65 3d 3e 4f 53 5f 76  61 72 74 79 70 65 73 3e  |pe=>OS_vartypes>|
0004c900  0a 09 0a 3c 3d 09 52 33  20 3d 09 6e 65 77 20 6e  |...<=.R3 =.new n|
0004c910  61 6d 65 20 70 6f 69 6e  74 65 72 0a 09 52 34 20  |ame pointer..R4 |
0004c920  3d 09 76 61 72 69 61 62  6c 65 20 74 79 70 65 0a  |=.variable type.|
0004c930  0a 54 68 69 73 20 53 57  49 20 73 65 74 73 20 61  |.This SWI sets a|
0004c940  20 76 61 72 69 61 62 6c  65 73 20 76 61 6c 75 65  | variables value|
0004c950  20 74 6f 20 74 68 61 74  20 73 70 65 63 69 66 69  | to that specifi|
0004c960  65 64 2e 00 44 41 54 41  d9 04 00 00 56 61 72 69  |ed..DATA....Vari|
0004c970  61 62 6c 65 20 74 79 70  65 73 0a 30 09 53 74 72  |able types.0.Str|
0004c980  69 6e 67 09 09 50 6f 69  6e 74 65 72 20 74 6f 20  |ing..Pointer to |
0004c990  73 74 72 69 6e 67 2c 20  77 68 69 63 68 20 77 69  |string, which wi|
0004c9a0  6c 6c 20 62 65 20 3c 47  53 54 72 61 6e 73 65 64  |ll be <GSTransed|
0004c9b0  3d 3e 4f 53 5f 47 53 31  3e 20 6e 6f 77 20 28 77  |=>OS_GS1> now (w|
0004c9c0  69 6c 6c 20 6e 6f 74 20  62 65 20 30 20 74 65 72  |ill not be 0 ter|
0004c9d0  6d 69 6e 61 74 65 64 29  0a 31 09 4e 75 6d 62 65  |minated).1.Numbe|
0004c9e0  72 09 09 34 20 62 79 74  65 20 69 6e 74 65 67 65  |r..4 byte intege|
0004c9f0  72 0a 32 09 4d 61 63 72  6f 09 09 50 6f 69 6e 74  |r.2.Macro..Point|
0004ca00  65 72 20 74 6f 20 73 74  72 69 6e 67 2c 20 77 68  |er to string, wh|
0004ca10  69 63 68 20 77 69 6c 6c  20 62 65 20 47 53 54 72  |ich will be GSTr|
0004ca20  61 6e 73 65 64 20 65 61  63 68 20 74 69 6d 65 20  |ansed each time |
0004ca30  69 74 20 69 73 20 75 73  65 64 0a 33 09 45 78 70  |it is used.3.Exp|
0004ca40  61 6e 64 65 64 09 45 78  70 72 65 73 73 69 6f 6e  |anded.Expression|
0004ca50  20 77 68 69 63 68 20 77  69 6c 6c 20 62 65 20 73  | which will be s|
0004ca60  65 6e 74 20 74 68 72 6f  75 67 68 20 3c 4f 53 5f  |ent through <OS_|
0004ca70  45 76 61 6c 75 61 74 65  45 78 70 72 65 73 73 69  |EvaluateExpressi|
0004ca80  6f 6e 3e 0a 34 09 4c 69  74 65 72 61 6c 09 09 53  |on>.4.Literal..S|
0004ca90  74 72 69 6e 67 20 74 68  61 74 20 77 69 6c 6c 20  |tring that will |
0004caa0  6e 6f 74 20 62 65 20 47  53 54 72 61 6e 73 65 64  |not be GSTransed|
0004cab0  0a 2b 31 36 09 43 6f 64  65 09 09 50 6f 69 6e 74  |.+16.Code..Point|
0004cac0  65 72 20 74 6f 20 61 20  62 6c 6f 63 6b 20 6f 66  |er to a block of|
0004cad0  20 3c 63 6f 64 65 3d 3e  2e 63 6f 64 65 3e 0a 23  | <code=>.code>.#|
0004cae0  53 75 62 70 61 67 65 20  63 6f 64 65 0a 56 61 72  |Subpage code.Var|
0004caf0  69 61 62 6c 65 20 74 79  70 65 20 43 6f 64 65 0a  |iable type Code.|
0004cb00  52 31 20 70 6f 69 6e 74  73 20 74 6f 20 61 20 62  |R1 points to a b|
0004cb10  6c 6f 63 6b 20 63 6f 6e  74 61 69 6e 69 6e 67 20  |lock containing |
0004cb20  74 68 65 20 66 6f 6c 6c  6f 77 69 6e 67 20 3a 0a  |the following :.|
0004cb30  0a 4f 66 66 73 65 74 09  43 6f 6e 74 65 6e 74 73  |.Offset.Contents|
0004cb40  0a 23 4c 69 6e 65 0a 30  09 54 68 69 73 20 69 73  |.#Line.0.This is|
0004cb50  20 77 68 65 72 65 20 74  68 65 20 4f 53 20 6a 75  | where the OS ju|
0004cb60  6d 70 73 20 77 68 65 6e  20 74 68 65 20 76 61 72  |mps when the var|
0004cb70  69 61 62 6c 65 20 69 73  20 74 6f 20 62 65 20 77  |iable is to be w|
0004cb80  72 69 74 74 65 6e 2e 20  57 69 6c 6c 20 6e 6f 72  |ritten. Will nor|
0004cb90  6d 61 6c 6c 79 20 62 65  20 61 20 62 72 61 6e 63  |mally be a branc|
0004cba0  68 20 69 6e 73 74 72 75  63 74 69 6f 6e 0a 34 09  |h instruction.4.|
0004cbb0  54 68 69 73 20 69 73 20  77 68 65 72 65 20 74 68  |This is where th|
0004cbc0  65 20 4f 53 20 6a 75 6d  70 73 20 77 68 65 6e 20  |e OS jumps when |
0004cbd0  74 68 65 20 76 61 72 69  61 62 6c 65 20 69 73 20  |the variable is |
0004cbe0  74 6f 20 62 65 20 72 65  61 64 20 2d 20 79 6f 75  |to be read - you|
0004cbf0  72 20 63 6f 64 65 20 6d  61 79 20 73 74 61 72 74  |r code may start|
0004cc00  20 68 65 72 65 0a 23 74  61 62 0a 0a 57 68 65 6e  | here.#tab..When|
0004cc10  20 74 68 65 20 57 72 69  74 65 20 65 6e 74 72 79  | the Write entry|
0004cc20  20 69 73 20 63 61 6c 6c  65 64 20 3a 0a 3d 3e 09  | is called :.=>.|
0004cc30  52 31 20 3d 09 76 61 6c  75 65 0a 09 52 32 20 3d  |R1 =.value..R2 =|
0004cc40  09 6c 65 6e 67 74 68 20  6f 66 20 76 61 6c 75 65  |.length of value|
0004cc50  0a 3c 3d 09 52 31 2c 32  2c 34 2c 31 30 2d 31 32  |.<=.R1,2,4,10-12|
0004cc60  20 6d 61 79 20 62 65 20  63 6f 72 72 75 70 74 65  | may be corrupte|
0004cc70  64 2e 0a 0a 57 68 65 6e  20 74 68 65 20 52 65 61  |d...When the Rea|
0004cc80  64 20 65 6e 74 72 79 20  69 73 20 63 61 6c 6c 65  |d entry is calle|
0004cc90  64 20 3a 0a 3d 3e 09 2d  0a 3c 3d 09 52 30 20 3d  |d :.=>.-.<=.R0 =|
0004cca0  09 70 6f 69 6e 74 65 72  20 74 6f 20 76 61 6c 75  |.pointer to valu|
0004ccb0  65 0a 20 09 52 31 20 6d  61 79 20 62 65 20 63 6f  |e. .R1 may be co|
0004ccc0  72 72 75 70 74 65 64 0a  20 09 52 32 20 3d 09 6c  |rrupted. .R2 =.l|
0004ccd0  65 6e 20 6f 66 20 76 61  6c 75 65 0a 0a 54 68 65  |en of value..The|
0004cce0  20 74 77 6f 20 65 6e 74  72 79 20 70 6f 69 6e 74  | two entry point|
0004ccf0  73 20 61 72 65 20 63 61  6c 6c 65 64 20 69 6e 20  |s are called in |
0004cd00  53 56 43 20 6d 6f 64 65  2c 20 73 6f 20 69 66 20  |SVC mode, so if |
0004cd10  79 6f 75 20 63 61 6c 6c  20 61 20 53 57 49 20 74  |you call a SWI t|
0004cd20  68 65 6e 20 52 31 34 20  77 69 6c 6c 20 62 65 20  |hen R14 will be |
0004cd30  63 6f 72 72 75 70 74 65  64 2e 0a 0a 4e 6f 74 65  |corrupted...Note|
0004cd40  20 74 68 61 74 20 3c 4f  53 5f 52 65 61 64 56 61  | that <OS_ReadVa|
0004cd50  72 56 61 6c 3e 20 69 73  20 6d 61 72 6b 65 64 20  |rVal> is marked |
0004cd60  61 73 20 62 65 69 6e 67  20 72 65 2d 65 6e 74 72  |as being re-entr|
0004cd70  61 6e 74 2c 20 73 6f 20  69 6e 20 74 68 65 6f 72  |ant, so in theor|
0004cd80  79 20 79 6f 75 72 20 63  6f 64 65 20 63 6f 75 6c  |y your code coul|
0004cd90  64 20 62 65 20 63 61 6c  6c 65 64 20 77 68 69 6c  |d be called whil|
0004cda0  65 20 74 68 72 65 61 64  65 64 2e 20 48 6f 77 65  |e threaded. Howe|
0004cdb0  76 65 72 2c 20 74 68 65  20 50 52 4d 20 6d 61 6b  |ver, the PRM mak|
0004cdc0  65 73 20 6e 6f 20 6d 65  6e 74 69 6f 6e 20 6f 66  |es no mention of|
0004cdd0  20 74 68 69 73 2c 20 6e  65 69 74 68 65 72 20 77  | this, neither w|
0004cde0  61 72 6e 69 6e 67 20 74  68 61 74 20 69 74 20 63  |arning that it c|
0004cdf0  6f 75 6c 64 20 68 61 70  70 65 6e 2c 20 6e 6f 72  |ould happen, nor|
0004ce00  20 73 74 61 74 69 6e 67  20 74 68 61 74 20 74 68  | stating that th|
0004ce10  65 20 6b 65 72 6e 65 6c  20 6d 61 6b 65 73 20 73  |e kernel makes s|
0004ce20  75 72 65 20 74 68 61 74  20 69 74 20 64 6f 65 73  |ure that it does|
0004ce30  20 6e 6f 74 20 68 61 70  70 65 6e 2e 0a 00 00 00  | not happen.....|
0004ce40  44 49 52 24 60 01 00 00  60 01 00 00 a0 cf 04 00  |DIR$`...`.......|
0004ce50  48 ff ff ff 98 60 f7 19  ec 01 00 00 13 00 00 00  |H....`..........|
0004ce60  00 00 00 00 21 52 6f 6f  74 00 00 00 8c d1 04 00  |....!Root.......|
0004ce70  47 fd ff ff 36 20 bd cd  ed 00 00 00 13 00 00 00  |G...6 ..........|
0004ce80  00 00 00 00 30 30 30 00  7c d2 04 00 47 fd ff ff  |....000.|...G...|
0004ce90  e5 53 b9 cd b6 00 00 00  13 00 00 00 00 00 00 00  |.S..............|
0004cea0  30 30 31 00 34 d3 04 00  47 fd ff ff cd 91 aa cd  |001.4...G.......|
0004ceb0  7a 00 00 00 13 00 00 00  00 00 00 00 30 30 32 00  |z...........002.|
0004cec0  b0 d3 04 00 47 fd ff ff  43 56 b9 cd 8f 00 00 00  |....G...CV......|
0004ced0  13 00 00 00 00 00 00 00  30 30 33 00 40 d4 04 00  |........003.@...|
0004cee0  47 fd ff ff 04 94 aa cd  b0 00 00 00 13 00 00 00  |G...............|
0004cef0  00 00 00 00 30 30 34 00  f0 d4 04 00 47 fd ff ff  |....004.....G...|
0004cf00  02 96 aa cd 7d 00 00 00  13 00 00 00 00 00 00 00  |....}...........|
0004cf10  30 30 35 00 70 d5 04 00  47 fd ff ff 5b 98 aa cd  |005.p...G...[...|
0004cf20  cc 00 00 00 13 00 00 00  00 00 00 00 30 30 36 00  |............006.|
0004cf30  3c d6 04 00 47 fd ff ff  f3 9b aa cd c1 00 00 00  |<...G...........|
0004cf40  13 00 00 00 00 00 00 00  30 30 37 00 00 d7 04 00  |........007.....|
0004cf50  47 fd ff ff 78 9e aa cd  bc 01 00 00 13 00 00 00  |G...x...........|
0004cf60  00 00 00 00 32 35 34 00  bc d8 04 00 46 fd ff ff  |....254.....F...|
0004cf70  2e ad d8 55 9c 00 00 00  13 00 00 00 00 00 00 00  |...U............|
0004cf80  32 35 35 00 58 d9 04 00  48 fd ff ff a2 48 2c 1c  |255.X...H....H,.|
0004cf90  4a 01 00 00 13 00 00 00  00 00 00 00 30 30 38 00  |J...........008.|
0004cfa0  44 41 54 41 ec 01 00 00  4f 53 5f 41 72 67 73 20  |DATA....OS_Args |
0004cfb0  20 28 26 30 39 29 0a 23  50 61 72 65 6e 74 20 4f  | (&09).#Parent O|
0004cfc0  53 5f 0a 3d 3e 09 52 30  20 3d 09 72 65 61 73 6f  |S_.=>.R0 =.reaso|
0004cfd0  6e 20 63 6f 64 65 0a 09  52 31 20 3d 09 66 69 6c  |n code..R1 =.fil|
0004cfe0  65 20 68 61 6e 64 6c 65  0a 09 52 32 20 3d 09 28  |e handle..R2 =.(|
0004cff0  61 74 74 72 69 62 75 74  65 29 0a 23 74 61 62 0a  |attribute).#tab.|
0004d000  0a 52 65 61 73 6f 6e 20  63 6f 64 65 73 20 3a 0a  |.Reason codes :.|
0004d010  30 09 3c 52 65 61 64 20  70 6f 69 6e 74 65 72 2f  |0.<Read pointer/|
0004d020  46 53 3d 3e 6f 73 5f 61  72 67 73 30 30 30 3e 0a  |FS=>os_args000>.|
0004d030  31 09 3c 57 72 69 74 65  20 70 6f 69 6e 74 65 72  |1.<Write pointer|
0004d040  3d 3e 6f 73 5f 61 72 67  73 30 30 31 3e 0a 32 09  |=>os_args001>.2.|
0004d050  3c 52 65 61 64 20 65 78  74 65 6e 74 3d 3e 6f 73  |<Read extent=>os|
0004d060  5f 61 72 67 73 30 30 32  3e 0a 33 09 3c 57 72 69  |_args002>.3.<Wri|
0004d070  74 65 20 65 78 74 65 6e  74 3d 3e 6f 73 5f 61 72  |te extent=>os_ar|
0004d080  67 73 30 30 33 3e 0a 34  09 3c 52 65 61 64 20 61  |gs003>.4.<Read a|
0004d090  6c 6c 6f 63 61 74 65 64  20 73 69 7a 65 3d 3e 6f  |llocated size=>o|
0004d0a0  73 5f 61 72 67 73 30 30  34 3e 0a 35 09 3c 52 65  |s_args004>.5.<Re|
0004d0b0  61 64 20 45 4f 46 20 73  74 61 74 75 73 3d 3e 6f  |ad EOF status=>o|
0004d0c0  73 5f 61 72 67 73 30 30  35 3e 0a 36 09 3c 52 65  |s_args005>.6.<Re|
0004d0d0  73 65 72 76 65 20 73 70  61 63 65 3d 3e 6f 73 5f  |serve space=>os_|
0004d0e0  61 72 67 73 30 30 36 3e  0a 37 09 3c 52 65 61 64  |args006>.7.<Read|
0004d0f0  20 70 61 74 68 6e 61 6d  65 20 6f 66 20 6f 70 65  | pathname of ope|
0004d100  6e 20 66 69 6c 65 3d 3e  6f 73 5f 61 72 67 73 30  |n file=>os_args0|
0004d110  30 37 3e 0a 38 09 3c 49  6e 66 6f 72 6d 20 6f 66  |07>.8.<Inform of|
0004d120  20 63 68 61 6e 67 65 64  20 69 6d 61 67 65 20 73  | changed image s|
0004d130  74 61 6d 70 3d 3e 6f 73  5f 61 72 67 73 30 30 38  |tamp=>os_args008|
0004d140  3e 0a 32 35 34 09 3c 52  65 61 64 20 69 6e 66 6f  |>.254.<Read info|
0004d150  20 6f 6e 20 66 69 6c 65  20 68 61 6e 64 6c 65 3d  | on file handle=|
0004d160  3e 6f 73 5f 61 72 67 73  32 35 34 3e 0a 32 35 35  |>os_args254>.255|
0004d170  09 3c 46 6c 75 73 68 20  66 69 6c 65 28 73 29 3d  |.<Flush file(s)=|
0004d180  3e 6f 73 5f 61 72 67 73  32 35 35 3e 44 41 54 41  |>os_args255>DATA|
0004d190  ed 00 00 00 4f 53 5f 41  72 67 73 20 30 0a 23 50  |....OS_Args 0.#P|
0004d1a0  61 72 65 6e 74 20 4f 53  5f 41 72 67 73 0a 23 57  |arent OS_Args.#W|
0004d1b0  72 61 70 20 6f 66 66 0a  3d 3e 09 52 30 20 3d 09  |rap off.=>.R0 =.|
0004d1c0  30 0a 09 52 31 20 3d 09  66 69 6c 65 20 68 61 6e  |0..R1 =.file han|
0004d1d0  64 6c 65 20 6f 72 20 30  0a 3c 3d 09 52 30 20 3d  |dle or 0.<=.R0 =|
0004d1e0  09 3c 66 69 6c 69 6e 67  20 73 79 73 74 65 6d 3d  |.<filing system=|
0004d1f0  3e 66 73 79 73 5f 69 64  65 6e 74 3e 09 28 69 66  |>fsys_ident>.(if|
0004d200  20 52 31 20 3d 20 30 29  0a 09 52 32 20 3d 09 66  | R1 = 0)..R2 =.f|
0004d210  69 6c 65 20 70 6f 69 6e  74 65 72 09 09 09 28 69  |ile pointer...(i|
0004d220  66 20 52 31 20 5c 3c 3e  20 30 29 0a 23 57 72 61  |f R1 \<> 0).#Wra|
0004d230  70 20 6f 6e 0a 0a 54 68  69 73 20 53 57 49 20 72  |p on..This SWI r|
0004d240  65 74 75 72 6e 73 20 74  68 65 20 74 65 6d 70 6f  |eturns the tempo|
0004d250  72 61 72 79 20 66 69 6c  69 6e 67 20 73 79 73 74  |rary filing syst|
0004d260  65 6d 20 6e 6f 2c 20 6f  72 20 66 69 6c 69 6e 67  |em no, or filing|
0004d270  20 70 6f 69 6e 74 65 72  2e 00 00 00 44 41 54 41  | pointer....DATA|
0004d280  b6 00 00 00 4f 53 5f 41  72 67 73 20 31 0a 23 50  |....OS_Args 1.#P|
0004d290  61 72 65 6e 74 20 4f 53  5f 41 72 67 73 0a 3d 3e  |arent OS_Args.=>|
0004d2a0  09 52 30 20 3d 09 31 0a  09 52 31 20 3d 09 66 69  |.R0 =.1..R1 =.fi|
0004d2b0  6c 65 20 68 61 6e 64 6c  65 0a 09 52 32 20 3d 09  |le handle..R2 =.|
0004d2c0  6e 65 77 20 70 6f 69 6e  74 65 72 0a 0a 54 68 69  |new pointer..Thi|
0004d2d0  73 20 53 57 49 20 73 65  74 73 20 74 68 65 20 66  |s SWI sets the f|
0004d2e0  69 6c 65 73 20 73 65 71  75 65 6e 74 69 61 6c 20  |iles sequential |
0004d2f0  70 6f 69 6e 74 65 72 2e  20 49 66 20 69 74 20 69  |pointer. If it i|
0004d300  73 20 6f 75 74 73 69 64  65 20 63 75 72 72 65 6e  |s outside curren|
0004d310  74 20 65 78 74 65 6e 74  2c 20 6d 6f 72 65 20 73  |t extent, more s|
0004d320  70 61 63 65 20 69 73 20  61 6c 6c 6f 63 61 74 65  |pace is allocate|
0004d330  64 2e 00 00 44 41 54 41  7a 00 00 00 4f 53 5f 41  |d...DATAz...OS_A|
0004d340  72 67 73 20 32 0a 23 50  61 72 65 6e 74 20 4f 53  |rgs 2.#Parent OS|
0004d350  5f 41 72 67 73 0a 3d 3e  09 52 30 20 3d 09 32 0a  |_Args.=>.R0 =.2.|
0004d360  09 52 31 20 3d 09 66 69  6c 65 20 68 61 6e 64 6c  |.R1 =.file handl|
0004d370  65 0a 3c 3d 09 52 32 20  3d 09 65 78 74 65 6e 74  |e.<=.R2 =.extent|
0004d380  20 6f 66 20 66 69 6c 65  0a 0a 54 68 69 73 20 53  | of file..This S|
0004d390  57 49 20 72 65 61 64 73  20 74 68 65 20 65 78 74  |WI reads the ext|
0004d3a0  65 6e 74 20 6f 66 20 61  20 66 69 6c 65 2e 00 00  |ent of a file...|
0004d3b0  44 41 54 41 8f 00 00 00  4f 53 5f 41 72 67 73 20  |DATA....OS_Args |
0004d3c0  33 0a 23 50 61 72 65 6e  74 20 4f 53 5f 41 72 67  |3.#Parent OS_Arg|
0004d3d0  73 0a 3d 3e 09 52 30 20  3d 09 33 0a 09 52 31 20  |s.=>.R0 =.3..R1 |
0004d3e0  3d 09 66 69 6c 65 20 68  61 6e 64 6c 65 0a 09 52  |=.file handle..R|
0004d3f0  32 20 3d 09 65 78 74 65  6e 74 0a 0a 54 68 69 73  |2 =.extent..This|
0004d400  20 53 57 49 20 73 65 74  73 20 74 68 65 20 65 78  | SWI sets the ex|
0004d410  74 65 6e 74 20 6f 66 20  61 20 66 69 6c 65 2e 20  |tent of a file. |
0004d420  4e 65 77 20 73 70 61 63  65 20 69 73 20 66 69 6c  |New space is fil|
0004d430  6c 65 64 20 77 69 74 68  20 7a 65 72 6f 73 2e 00  |led with zeros..|
0004d440  44 41 54 41 b0 00 00 00  4f 53 5f 41 72 67 73 20  |DATA....OS_Args |
0004d450  34 0a 23 50 61 72 65 6e  74 20 4f 53 5f 41 72 67  |4.#Parent OS_Arg|
0004d460  73 0a 3d 3e 09 52 30 20  3d 09 34 0a 09 52 31 20  |s.=>.R0 =.4..R1 |
0004d470  3d 09 66 69 6c 65 20 68  61 6e 64 6c 65 0a 3c 3d  |=.file handle.<=|
0004d480  09 52 32 20 3d 09 6e 65  77 20 65 78 74 65 6e 74  |.R2 =.new extent|
0004d490  0a 0a 54 68 69 73 20 53  57 49 20 72 65 74 75 72  |..This SWI retur|
0004d4a0  6e 73 20 74 68 65 20 61  63 74 75 61 6c 20 73 69  |ns the actual si|
0004d4b0  7a 65 20 6f 66 20 74 68  65 20 66 69 6c 65 2e 20  |ze of the file. |
0004d4c0  54 68 69 73 20 77 69 6c  6c 20 62 65 20 65 71 75  |This will be equ|
0004d4d0  61 6c 20 74 6f 20 6f 72  20 6c 61 72 67 65 72 20  |al to or larger |
0004d4e0  74 68 61 6e 20 69 74 73  20 65 78 74 65 6e 74 2e  |than its extent.|
0004d4f0  44 41 54 41 7d 00 00 00  4f 53 5f 41 72 67 73 20  |DATA}...OS_Args |
0004d500  35 0a 23 50 61 72 65 6e  74 20 4f 53 5f 41 72 67  |5.#Parent OS_Arg|
0004d510  73 0a 3d 3e 09 52 30 20  3d 09 35 0a 09 52 31 20  |s.=>.R0 =.5..R1 |
0004d520  3d 09 66 69 6c 65 20 68  61 6e 64 6c 65 0a 3c 3d  |=.file handle.<=|
0004d530  09 52 32 20 3d 09 30 20  69 66 20 6e 6f 74 20 45  |.R2 =.0 if not E|
0004d540  4f 46 0a 0a 54 68 69 73  20 53 57 49 20 72 65 74  |OF..This SWI ret|
0004d550  75 72 6e 73 20 30 20 69  66 20 6e 6f 74 20 61 74  |urns 0 if not at|
0004d560  20 45 6e 64 20 6f 66 20  46 69 6c 65 2e 00 00 00  | End of File....|
0004d570  44 41 54 41 cc 00 00 00  4f 53 5f 41 72 67 73 20  |DATA....OS_Args |
0004d580  36 0a 23 50 61 72 65 6e  74 20 4f 53 5f 41 72 67  |6.#Parent OS_Arg|
0004d590  73 0a 3d 3e 09 52 30 20  3d 09 36 0a 09 52 31 20  |s.=>.R0 =.6..R1 |
0004d5a0  3d 09 66 69 6c 65 20 68  61 6e 64 6c 65 0a 09 52  |=.file handle..R|
0004d5b0  32 20 3d 09 73 69 7a 65  20 74 6f 20 65 6e 73 75  |2 =.size to ensu|
0004d5c0  72 65 0a 3c 3d 09 52 32  20 3d 09 61 63 74 75 61  |re.<=.R2 =.actua|
0004d5d0  6c 20 73 69 7a 65 0a 0a  54 68 69 73 20 53 57 49  |l size..This SWI|
0004d5e0  20 65 6e 73 75 72 65 73  20 74 68 61 74 20 74 68  | ensures that th|
0004d5f0  65 20 73 69 7a 65 20 6f  66 20 74 68 65 20 66 69  |e size of the fi|
0004d600  6c 65 20 69 73 20 6e 6f  74 20 6c 65 73 73 20 74  |le is not less t|
0004d610  68 61 6e 20 52 32 2e 20  4e 6f 74 65 20 74 68 61  |han R2. Note tha|
0004d620  74 20 74 68 65 20 65 78  74 65 6e 74 20 69 73 20  |t the extent is |
0004d630  6e 6f 74 20 61 6c 74 65  72 65 64 2e 44 41 54 41  |not altered.DATA|
0004d640  c1 00 00 00 4f 53 5f 41  72 67 73 20 37 0a 23 50  |....OS_Args 7.#P|
0004d650  61 72 65 6e 74 20 4f 53  5f 41 72 67 73 0a 3d 3e  |arent OS_Args.=>|
0004d660  09 52 30 20 3d 09 37 0a  09 52 31 20 3d 09 66 69  |.R0 =.7..R1 =.fi|
0004d670  6c 65 20 68 61 6e 64 6c  65 0a 09 52 32 20 3d 09  |le handle..R2 =.|
0004d680  70 6f 69 6e 74 65 72 20  74 6f 20 62 75 66 66 65  |pointer to buffe|
0004d690  72 0a 09 52 35 20 3d 09  6c 65 6e 67 74 68 20 6f  |r..R5 =.length o|
0004d6a0  66 20 62 75 66 66 65 72  0a 3c 3d 09 52 35 20 3d  |f buffer.<=.R5 =|
0004d6b0  09 66 72 65 65 20 62 79  74 65 73 20 69 6e 20 62  |.free bytes in b|
0004d6c0  75 66 66 65 72 0a 0a 54  68 69 73 20 53 57 49 20  |uffer..This SWI |
0004d6d0  72 65 74 75 72 6e 73 20  74 68 65 20 70 61 74 68  |returns the path|
0004d6e0  6e 61 6d 65 20 6f 66 20  74 68 65 20 66 69 6c 65  |name of the file|
0004d6f0  20 67 69 76 65 6e 20 69  6e 20 52 31 2e 00 00 00  | given in R1....|
0004d700  44 41 54 41 bc 01 00 00  4f 53 5f 41 72 67 73 20  |DATA....OS_Args |
0004d710  32 35 34 0a 23 50 61 72  65 6e 74 20 4f 53 5f 41  |254.#Parent OS_A|
0004d720  72 67 73 0a 3d 3e 09 52  30 20 3d 09 32 35 34 0a  |rgs.=>.R0 =.254.|
0004d730  09 52 31 20 3d 09 66 69  6c 65 20 68 61 6e 64 6c  |.R1 =.file handl|
0004d740  65 0a 3c 3d 09 52 30 20  3d 09 73 74 72 65 61 6d  |e.<=.R0 =.stream|
0004d750  20 73 74 61 74 75 73 20  77 6f 72 64 0a 09 52 32  | status word..R2|
0004d760  20 3d 09 3c 66 69 6c 69  6e 67 20 73 79 73 74 65  | =.<filing syste|
0004d770  6d 20 69 6e 66 6f 20 77  6f 72 64 3d 3e 66 73 79  |m info word=>fsy|
0004d780  73 5f 69 6e 66 6f 77 6f  72 64 3e 0a 0a 54 68 69  |s_infoword>..Thi|
0004d790  73 20 53 57 49 20 72 65  74 75 72 6e 73 20 69 6e  |s SWI returns in|
0004d7a0  66 6f 20 6f 6e 20 74 68  65 20 67 69 76 65 6e 20  |fo on the given |
0004d7b0  66 69 6c 65 20 68 61 6e  64 6c 65 2e 0a 0a 23 54  |file handle...#T|
0004d7c0  61 62 0a 42 69 74 73 20  69 6e 20 73 74 72 65 61  |ab.Bits in strea|
0004d7d0  6d 20 73 74 61 74 75 73  20 77 6f 72 64 20 3a 0a  |m status word :.|
0004d7e0  33 09 53 74 72 65 61 6d  20 69 73 20 69 6e 74 65  |3.Stream is inte|
0004d7f0  72 61 63 74 69 76 65 0a  34 09 55 6e 62 75 66 66  |ractive.4.Unbuff|
0004d800  65 72 65 64 2e 20 44 69  72 65 63 74 6c 79 20 73  |ered. Directly s|
0004d810  75 70 70 6f 72 74 73 20  47 42 50 42 0a 35 09 49  |upports GBPB.5.I|
0004d820  73 20 61 20 64 69 72 65  63 74 6f 72 79 0a 36 09  |s a directory.6.|
0004d830  52 65 61 64 20 61 63 63  65 73 73 0a 37 09 57 72  |Read access.7.Wr|
0004d840  69 74 65 20 61 63 63 65  73 73 0a 38 09 48 61 76  |ite access.8.Hav|
0004d850  65 20 77 72 69 74 74 65  6e 20 74 6f 20 69 74 0a  |e written to it.|
0004d860  39 09 4e 65 78 74 20 72  65 61 64 20 67 69 76 65  |9.Next read give|
0004d870  73 20 45 4f 46 20 65 72  72 6f 72 0a 31 30 09 55  |s EOF error.10.U|
0004d880  6e 62 75 66 66 65 72 65  64 0a 31 31 09 55 6e 2d  |nbuffered.11.Un-|
0004d890  61 6c 6c 6f 63 61 74 65  64 0a 31 32 09 43 72 69  |allocated.12.Cri|
0004d8a0  74 69 63 61 6c 0a 31 33  09 44 61 74 61 20 68 61  |tical.13.Data ha|
0004d8b0  76 65 20 62 65 65 6e 20  6c 6f 73 74 44 41 54 41  |ve been lostDATA|
0004d8c0  9c 00 00 00 4f 53 5f 41  72 67 73 20 32 35 35 0a  |....OS_Args 255.|
0004d8d0  23 50 61 72 65 6e 74 20  4f 53 5f 41 72 67 73 0a  |#Parent OS_Args.|
0004d8e0  3d 3e 09 52 30 20 3d 09  32 35 35 0a 09 52 31 20  |=>.R0 =.255..R1 |
0004d8f0  3d 09 66 69 6c 65 20 68  61 6e 64 6c 65 20 6f 72  |=.file handle or|
0004d900  20 30 20 66 6f 72 20 61  6c 6c 0a 0a 54 68 69 73  | 0 for all..This|
0004d910  20 53 57 49 20 65 6e 73  75 72 65 73 20 74 68 61  | SWI ensures tha|
0004d920  74 20 61 6e 79 20 62 75  66 66 65 72 65 64 20 64  |t any buffered d|
0004d930  61 74 61 20 6f 6e 20 74  68 65 20 67 69 76 65 6e  |ata on the given|
0004d940  20 66 69 6c 65 28 73 29  20 69 73 20 77 72 69 74  | file(s) is writ|
0004d950  74 65 6e 20 6f 75 74 2e  44 41 54 41 4a 01 00 00  |ten out.DATAJ...|
0004d960  4f 53 5f 41 72 67 73 20  38 0a 23 50 61 72 65 6e  |OS_Args 8.#Paren|
0004d970  74 20 4f 53 5f 41 72 67  73 0a 3d 3e 09 52 30 20  |t OS_Args.=>.R0 |
0004d980  3d 09 38 0a 09 52 31 20  3d 09 66 69 6c 65 20 68  |=.8..R1 =.file h|
0004d990  61 6e 64 6c 65 0a 09 52  32 20 3d 09 6e 65 77 20  |andle..R2 =.new |
0004d9a0  3c 69 6d 61 67 65 20 73  74 61 6d 70 3d 3e 46 69  |<image stamp=>Fi|
0004d9b0  6c 65 43 6f 72 65 5f 63  79 63 6c 65 69 64 3e 0a  |leCore_cycleid>.|
0004d9c0  0a 54 68 69 73 20 53 57  49 20 69 73 20 6d 61 64  |.This SWI is mad|
0004d9d0  65 20 62 79 20 61 6e 20  69 6d 61 67 65 20 66 69  |e by an image fi|
0004d9e0  6c 69 6e 67 20 73 79 73  74 65 6d 20 77 68 65 6e  |ling system when|
0004d9f0  20 69 74 20 68 61 73 20  63 68 61 6e 67 65 64 20  | it has changed |
0004da00  61 20 64 69 73 63 27 73  20 69 6d 61 67 65 20 73  |a disc's image s|
0004da10  74 61 6d 70 2e 20 46 69  6c 65 53 77 69 74 63 68  |tamp. FileSwitch|
0004da20  20 70 61 73 73 65 73 20  74 68 69 73 20 6f 6e 20  | passes this on |
0004da30  74 6f 20 74 68 65 20 68  61 6e 64 6c 65 72 20 6f  |to the handler o|
0004da40  66 20 64 69 73 63 73 2c  20 77 68 69 63 68 20 74  |f discs, which t|
0004da50  79 70 69 63 61 6c 6c 79  20 64 6f 65 73 20 6e 6f  |ypically does no|
0004da60  74 68 69 6e 67 20 6d 6f  72 65 20 74 68 61 6e 20  |thing more than |
0004da70  73 74 6f 72 69 6e 67 20  74 68 65 20 6e 65 77 20  |storing the new |
0004da80  69 6d 61 67 65 20 73 74  61 6d 70 20 69 6e 20 74  |image stamp in t|
0004da90  68 65 20 64 69 73 63 27  73 20 72 65 63 6f 72 64  |he disc's record|
0004daa0  2e 0a 00 00 44 49 52 24  3c 0c 00 00 3c 0c 00 00  |....DIR$<...<...|
0004dab0  e0 e6 04 00 47 ff ff ff  98 62 b9 cd 2a 01 00 00  |....G....b..*...|
0004dac0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0004dad0  0c e8 04 00 48 fd ff ff  19 bf e9 1d 4f 01 00 00  |....H.......O...|
0004dae0  13 00 00 00 00 00 00 00  30 30 34 00 5c e9 04 00  |........004.\...|
0004daf0  47 fd ff ff 80 e6 c0 cd  40 01 00 00 13 00 00 00  |G.......@.......|
0004db00  00 00 00 00 31 32 31 00  9c ea 04 00 48 fd ff ff  |....121.....H...|
0004db10  63 8a 0e 1d 56 04 00 00  13 00 00 00 00 00 00 00  |c...V...........|
0004db20  31 32 31 61 00 00 00 00  f4 ee 04 00 48 fd ff ff  |121a........H...|
0004db30  81 0f 08 1e e5 02 00 00  13 00 00 00 00 00 00 00  |................|
0004db40  32 30 30 00 dc f1 04 00  48 fd ff ff 6c 5d eb 1d  |200.....H...l]..|
0004db50  6e 03 00 00 13 00 00 00  00 00 00 00 32 32 39 00  |n...........229.|
0004db60  4c f5 04 00 47 fd ff ff  dd ce c0 cd ef 02 00 00  |L...G...........|
0004db70  13 00 00 00 00 00 00 00  32 34 37 00 3c f8 04 00  |........247.<...|
0004db80  48 fd ff ff 4e 74 91 1d  29 04 00 00 13 00 00 00  |H...Nt..).......|
0004db90  00 00 00 00 32 35 34 00  68 fc 04 00 48 fd ff ff  |....254.h...H...|
0004dba0  35 41 75 26 1d 15 00 00  13 00 00 00 00 00 00 00  |5Au&............|
0004dbb0  69 6e 64 65 78 00 00 00  88 11 05 00 48 fd ff ff  |index.......H...|
0004dbc0  ff 2f 59 12 76 01 00 00  13 00 00 00 00 00 00 00  |./Y.v...........|
0004dbd0  30 31 33 00 00 13 05 00  48 fd ff ff 48 85 59 12  |013.....H...H.Y.|
0004dbe0  2f 02 00 00 13 00 00 00  00 00 00 00 30 31 34 00  |/...........014.|
0004dbf0  30 15 05 00 47 fd ff ff  7a 70 b9 cd ca 00 00 00  |0...G...zp......|
0004dc00  13 00 00 00 00 00 00 00  31 36 31 00 fc 15 05 00  |........161.....|
0004dc10  47 fd ff ff f7 74 b9 cd  43 01 00 00 13 00 00 00  |G....t..C.......|
0004dc20  00 00 00 00 31 36 32 00  40 17 05 00 48 fd ff ff  |....162.@...H...|
0004dc30  0a 0b 81 2b 0c 03 00 00  13 01 00 00 00 00 00 00  |...+............|
0004dc40  63 6d 6f 73 00 00 00 00  58 3d 05 00 48 fd ff ff  |cmos....X=..H...|
0004dc50  7f 8f 0d 1e d6 03 00 00  13 00 00 00 00 00 00 00  |................|
0004dc60  30 30 32 00 30 41 05 00  48 fd ff ff a8 92 0b 1d  |002.0A..H.......|
0004dc70  c1 01 00 00 13 00 00 00  00 00 00 00 30 31 31 00  |............011.|
0004dc80  f4 42 05 00 47 fd ff ff  48 fa c0 cd 5c 01 00 00  |.B..G...H...\...|
0004dc90  13 00 00 00 00 00 00 00  30 31 35 00 50 44 05 00  |........015.PD..|
0004dca0  47 fd ff ff 9b f8 c0 cd  fb 00 00 00 13 00 00 00  |G...............|
0004dcb0  00 00 00 00 30 31 39 00  4c 45 05 00 47 fd ff ff  |....019.LE..G...|
0004dcc0  70 f7 c0 cd 62 01 00 00  13 00 00 00 00 00 00 00  |p...b...........|
0004dcd0  30 32 30 00 b0 46 05 00  48 fd ff ff 7b 7f 0b 1d  |020..F..H...{...|
0004dce0  bc 00 00 00 13 00 00 00  00 00 00 00 30 32 31 00  |............021.|
0004dcf0  6c 47 05 00 48 fd ff ff  36 f6 f9 1c db 01 00 00  |lG..H...6.......|
0004dd00  13 00 00 00 00 00 00 00  30 32 35 00 48 49 05 00  |........025.HI..|
0004dd10  48 fd ff ff c1 c9 fe 29  d4 02 00 00 13 00 00 00  |H......)........|
0004dd20  00 00 00 00 31 30 36 00  1c 4c 05 00 47 fd ff ff  |....106..L..G...|
0004dd30  68 ed c0 cd 0a 02 00 00  13 00 00 00 00 00 00 00  |h...............|
0004dd40  31 31 32 00 28 4e 05 00  48 fd ff ff c2 f4 25 1d  |112.(N..H.....%.|
0004dd50  51 01 00 00 13 00 00 00  00 00 00 00 31 31 33 00  |Q...........113.|
0004dd60  7c 4f 05 00 48 fd ff ff  ad 27 40 21 2d 02 00 00  ||O..H....'@!-...|
0004dd70  13 00 00 00 00 00 00 00  31 31 37 00 ac 51 05 00  |........117..Q..|
0004dd80  47 fd ff ff d2 e8 c0 cd  48 02 00 00 13 00 00 00  |G.......H.......|
0004dd90  00 00 00 00 31 31 38 00  f4 53 05 00 47 fd ff ff  |....118..S..G...|
0004dda0  bc df c0 cd 90 01 00 00  13 00 00 00 00 00 00 00  |................|
0004ddb0  31 33 34 00 84 55 05 00  47 fd ff ff db 3c b7 cd  |134..U..G....<..|
0004ddc0  29 02 00 00 13 00 00 00  00 00 00 00 31 33 35 00  |)...........135.|
0004ddd0  b0 57 05 00 47 fd ff ff  2d 7b b9 cd 8f 01 00 00  |.W..G...-{......|
0004dde0  13 00 00 00 00 00 00 00  31 34 34 00 40 59 05 00  |........144.@Y..|
0004ddf0  47 fd ff ff 35 db c0 cd  00 01 00 00 13 00 00 00  |G...5...........|
0004de00  00 00 00 00 31 36 35 00  40 5a 05 00 48 fd ff ff  |....165.@Z..H...|
0004de10  8f 71 0d 1e b6 01 00 00  13 00 00 00 00 00 00 00  |.q..............|
0004de20  31 37 37 00 f8 5b 05 00  47 fd ff ff 3f d7 c0 cd  |177..[..G...?...|
0004de30  25 01 00 00 13 00 00 00  00 00 00 00 31 39 36 00  |%...........196.|
0004de40  20 5d 05 00 47 fd ff ff  c1 d5 c0 cd 62 01 00 00  | ]..G.......b...|
0004de50  13 00 00 00 00 00 00 00  31 39 37 00 84 5e 05 00  |........197..^..|
0004de60  48 fd ff ff 4c fc 11 1e  13 04 00 00 13 00 00 00  |H...L...........|
0004de70  00 00 00 00 32 30 32 00  98 62 05 00 48 fd ff ff  |....202..b..H...|
0004de80  7b b1 dc 1b 04 04 00 00  13 00 00 00 00 00 00 00  |{...............|
0004de90  32 35 35 00 9c 66 05 00  48 fd ff ff c0 a4 0b 1d  |255..f..H.......|
0004dea0  05 02 00 00 13 00 00 00  00 00 00 00 30 31 32 00  |............012.|
0004deb0  a4 68 05 00 48 fd ff ff  8f 98 42 21 7b 02 00 00  |.h..H.....B!{...|
0004dec0  13 00 00 00 00 00 00 00  30 30 33 00 20 6b 05 00  |........003. k..|
0004ded0  48 fd ff ff 4c 3d 1a 1e  ad 02 00 00 13 00 00 00  |H...L=..........|
0004dee0  00 00 00 00 30 30 30 00  d0 6d 05 00 48 fd ff ff  |....000..m..H...|
0004def0  17 44 67 1c 79 01 00 00  13 00 00 00 00 00 00 00  |.Dg.y...........|
0004df00  30 30 31 00 4c 6f 05 00  48 fd ff ff 82 4d 9f 1c  |001.Lo..H....M..|
0004df10  38 01 00 00 13 00 00 00  00 00 00 00 30 30 35 00  |8...........005.|
0004df20  84 70 05 00 48 fd ff ff  70 9e da 1b e8 00 00 00  |.p..H...p.......|
0004df30  13 00 00 00 00 00 00 00  31 32 37 00 6c 71 05 00  |........127.lq..|
0004df40  48 fd ff ff 47 1e dc 1b  eb 00 00 00 13 00 00 00  |H...G...........|
0004df50  00 00 00 00 31 33 39 00  58 72 05 00 48 fd ff ff  |....139.Xr..H...|
0004df60  11 47 67 1c d7 01 00 00  13 00 00 00 00 00 00 00  |.Gg.............|
0004df70  32 34 31 00 30 74 05 00  48 fd ff ff 78 f6 9f 1c  |241.0t..H...x...|
0004df80  7c 01 00 00 13 00 00 00  00 00 00 00 32 34 35 00  ||...........245.|
0004df90  ac 75 05 00 48 fd ff ff  b7 8f 67 1c a6 01 00 00  |.u..H.....g.....|
0004dfa0  13 00 00 00 00 00 00 00  70 72 69 6e 74 65 72 73  |........printers|
0004dfb0  00 00 00 00 54 77 05 00  48 fd ff ff 03 65 43 21  |....Tw..H....eC!|
0004dfc0  6d 02 00 00 13 00 00 00  00 00 00 00 30 30 33 73  |m...........003s|
0004dfd0  74 61 74 65 00 00 00 00  c4 79 05 00 48 fd ff ff  |tate.....y..H...|
0004dfe0  a8 98 e9 1d aa 01 00 00  13 00 00 00 00 00 00 00  |................|
0004dff0  30 30 34 73 74 61 74 65  00 00 00 00 70 7b 05 00  |004state....p{..|
0004e000  48 fd ff ff 12 7e a0 1c  90 01 00 00 13 00 00 00  |H....~..........|
0004e010  00 00 00 00 30 30 36 00  00 7d 05 00 48 fd ff ff  |....006..}..H...|
0004e020  79 7a ee 1c fa 00 00 00  13 00 00 00 00 00 00 00  |yz..............|
0004e030  30 30 38 00 fc 7d 05 00  48 fd ff ff 13 d4 0a 1d  |008..}..H.......|
0004e040  96 01 00 00 13 00 00 00  00 00 00 00 30 30 39 00  |............009.|
0004e050  94 7f 05 00 48 fd ff ff  c1 09 0b 1d 9e 01 00 00  |....H...........|
0004e060  13 00 00 00 00 00 00 00  30 31 30 00 34 81 05 00  |........010.4...|
0004e070  48 fd ff ff 89 67 ee 1c  f8 00 00 00 13 00 00 00  |H....g..........|
0004e080  00 00 00 00 30 30 37 00  2c 82 05 00 48 fd ff ff  |....007.,...H...|
0004e090  34 44 0c 1d 7f 01 00 00  13 00 00 00 00 00 00 00  |4D..............|
0004e0a0  30 31 38 00 ac 83 05 00  48 fd ff ff 32 32 0e 1f  |018.....H...22..|
0004e0b0  c1 01 00 00 13 00 00 00  00 00 00 00 30 37 30 00  |............070.|
0004e0c0  70 85 05 00 48 fd ff ff  e1 14 0f 1f 81 02 00 00  |p...H...........|
0004e0d0  13 00 00 00 00 00 00 00  30 37 31 00 f4 87 05 00  |........071.....|
0004e0e0  48 ff fa ff 10 0d 55 1d  f8 90 00 00 33 00 00 00  |H.....U.....3...|
0004e0f0  00 00 00 00 31 32 31 61  5f 41 35 30 30 30 00 00  |....121a_A5000..|
0004e100  ec 18 06 00 48 fd ff ff  57 96 19 1e 7a 01 00 00  |....H...W...z...|
0004e110  13 00 00 00 00 00 00 00  31 31 34 00 68 1a 06 00  |........114.h...|
0004e120  48 fd ff ff 96 aa 1a 1e  60 01 00 00 13 00 00 00  |H.......`.......|
0004e130  00 00 00 00 31 32 30 00  c8 1b 06 00 48 fd ff ff  |....120.....H...|
0004e140  ee f8 1a 1e 3c 01 00 00  13 00 00 00 00 00 00 00  |....<...........|
0004e150  31 32 32 00 04 1d 06 00  48 fd ff ff 13 56 2c 1e  |122.....H....V,.|
0004e160  79 01 00 00 13 00 00 00  00 00 00 00 31 32 34 00  |y...........124.|
0004e170  80 1e 06 00 48 fd ff ff  10 2a 2d 1e 31 01 00 00  |....H....*-.1...|
0004e180  13 00 00 00 00 00 00 00  31 32 35 00 b4 1f 06 00  |........125.....|
0004e190  48 fd ff ff f3 12 2b 1e  0c 02 00 00 13 00 00 00  |H.....+.........|
0004e1a0  00 00 00 00 31 32 36 00  c0 21 06 00 48 fd ff ff  |....126..!..H...|
0004e1b0  50 d7 0f 1f 18 03 00 00  13 00 00 00 00 00 00 00  |P...............|
0004e1c0  31 32 38 00 d8 24 06 00  48 fd ff ff 47 b4 26 1f  |128..$..H...G.&.|
0004e1d0  77 06 00 00 13 00 00 00  00 00 00 00 31 32 39 00  |w...........129.|
0004e1e0  50 2b 06 00 48 fd ff ff  97 17 2b 1f 8a 03 00 00  |P+..H.....+.....|
0004e1f0  13 00 00 00 00 00 00 00  31 33 38 00 dc 2e 06 00  |........138.....|
0004e200  48 fd ff ff 73 ea 2e 1e  fc 00 00 00 13 00 00 00  |H...s...........|
0004e210  00 00 00 00 31 34 33 00  d8 2f 06 00 48 fd ff ff  |....143../..H...|
0004e220  db 84 71 26 d5 01 00 00  13 00 00 00 00 00 00 00  |..q&............|
0004e230  31 34 35 00 b0 31 06 00  48 fd ff ff d6 8a 71 26  |145..1..H.....q&|
0004e240  1f 02 00 00 13 00 00 00  00 00 00 00 31 35 32 00  |............152.|
0004e250  d0 33 06 00 48 fd ff ff  3e 04 10 1f 5a 03 00 00  |.3..H...>...Z...|
0004e260  13 00 00 00 00 00 00 00  31 35 33 00 2c 37 06 00  |........153.,7..|
0004e270  48 fd ff ff 1a be 71 26  59 05 00 00 13 00 00 00  |H.....q&Y.......|
0004e280  00 00 00 00 31 35 36 00  88 3c 06 00 48 fd ff ff  |....156..<..H...|
0004e290  c1 e1 14 1e 59 04 00 00  13 00 00 00 00 00 00 00  |....Y...........|
0004e2a0  31 36 30 00 e4 40 06 00  48 fd ff ff c0 c8 13 1e  |160..@..H.......|
0004e2b0  44 04 00 00 13 00 00 00  00 00 00 00 31 36 33 00  |D...........163.|
0004e2c0  28 45 06 00 48 fd ff ff  cd cc 0b 1e c6 01 00 00  |(E..H...........|
0004e2d0  13 00 00 00 00 00 00 00  31 37 36 00 f0 46 06 00  |........176..F..|
0004e2e0  48 fd ff ff 44 7b 2e 1e  75 00 00 00 13 00 00 00  |H...D{..u.......|
0004e2f0  00 00 00 00 69 6e 70 75  74 73 6f 75 72 63 65 73  |....inputsources|
0004e300  00 00 00 00 68 47 06 00  48 fd ff ff 02 34 0c 1e  |....hG..H....4..|
0004e310  4b 01 00 00 13 00 00 00  00 00 00 00 31 37 38 00  |K...........178.|
0004e320  b4 48 06 00 48 fd ff ff  c7 0a fa 1c d0 02 00 00  |.H..H...........|
0004e330  13 00 00 00 00 00 00 00  31 38 31 00 84 4b 06 00  |........181..K..|
0004e340  48 fd ff ff 62 81 f9 1c  fd 01 00 00 13 00 00 00  |H...b...........|
0004e350  00 00 00 00 31 38 32 00  84 4d 06 00 48 fd ff ff  |....182..M..H...|
0004e360  2b 69 12 1e 85 01 00 00  13 00 00 00 00 00 00 00  |+i..............|
0004e370  31 39 31 00 0c 4f 06 00  48 fd ff ff 39 3a 29 1d  |191..O..H...9:).|
0004e380  38 02 00 00 13 00 00 00  00 00 00 00 31 39 32 00  |8...........192.|
0004e390  44 51 06 00 48 fd ff ff  a8 74 08 1e 67 01 00 00  |DQ..H....t..g...|
0004e3a0  13 00 00 00 00 00 00 00  31 39 38 00 ac 52 06 00  |........198..R..|
0004e3b0  48 fd ff ff e5 0c 09 1e  3e 02 00 00 13 00 00 00  |H.......>.......|
0004e3c0  00 00 00 00 31 39 39 00  ec 54 06 00 48 fd ff ff  |....199..T..H...|
0004e3d0  7d 8e 11 1e a5 01 00 00  13 00 00 00 00 00 00 00  |}...............|
0004e3e0  32 30 31 00 94 56 06 00  48 fd ff ff 43 d5 11 1e  |201..V..H...C...|
0004e3f0  1c 02 00 00 13 00 00 00  00 00 00 00 32 30 33 00  |............203.|
0004e400  b0 58 06 00 48 fd ff ff  0c 88 11 1e d3 01 00 00  |.X..H...........|
0004e410  13 00 00 00 00 00 00 00  32 30 34 00 84 5a 06 00  |........204..Z..|
0004e420  48 fd ff ff 8f 71 0b 1e  53 01 00 00 13 00 00 00  |H....q..S.......|
0004e430  00 00 00 00 32 31 31 00  d8 5b 06 00 48 fd ff ff  |....211..[..H...|
0004e440  0e 48 0b 1e ab 01 00 00  13 00 00 00 00 00 00 00  |.H..............|
0004e450  32 31 32 00 84 5d 06 00  48 ff fa ff 67 06 68 2a  |212..]..H...g.h*|
0004e460  9c 8c 00 00 13 00 00 00  00 00 00 00 31 32 31 61  |............121a|
0004e470  5f 52 50 43 00 00 00 00  20 ea 06 00 48 fd ff ff  |_RPC.... ...H...|
0004e480  72 3e 29 1d 0b 02 00 00  13 00 00 00 00 00 00 00  |r>).............|
0004e490  31 39 33 00 2c ec 06 00  48 fd ff ff 00 20 b0 26  |193.,...H.... .&|
0004e4a0  e0 01 00 00 13 00 00 00  00 00 00 00 31 39 34 00  |............194.|
0004e4b0  0c ee 06 00 48 fd ff ff  2f 26 b0 26 db 01 00 00  |....H.../&.&....|
0004e4c0  13 00 00 00 00 00 00 00  31 39 35 00 e8 ef 06 00  |........195.....|
0004e4d0  48 fd ff ff 20 ff 0a 1e  96 01 00 00 13 00 00 00  |H... ...........|
0004e4e0  00 00 00 00 32 31 33 00  80 f1 06 00 48 fd ff ff  |....213.....H...|
0004e4f0  12 e9 0a 1e 3b 01 00 00  13 00 00 00 00 00 00 00  |....;...........|
0004e500  32 31 34 00 bc f2 06 00  48 fd ff ff 01 6c 05 1e  |214.....H....l..|
0004e510  8d 02 00 00 13 00 00 00  00 00 00 00 32 31 36 00  |............216.|
0004e520  4c f5 06 00 48 fd ff ff  ed df 04 1e cd 01 00 00  |L...H...........|
0004e530  13 00 00 00 00 00 00 00  32 31 37 00 1c f7 06 00  |........217.....|
0004e540  48 fd ff ff c6 24 f0 1d  86 02 00 00 13 00 00 00  |H....$..........|
0004e550  00 00 00 00 32 31 38 00  a4 f9 06 00 48 fd ff ff  |....218.....H...|
0004e560  58 8b ef 1d c1 01 00 00  13 00 00 00 00 00 00 00  |X...............|
0004e570  32 31 39 00 68 fb 06 00  48 fd ff ff ed 20 ef 1d  |219.h...H.... ..|
0004e580  77 01 00 00 13 00 00 00  00 00 00 00 32 32 30 00  |w...........220.|
0004e590  e0 fc 06 00 48 fd ff ff  d5 2c 2b 1f c3 09 00 00  |....H....,+.....|
0004e5a0  13 00 00 00 00 00 00 00  32 32 31 00 a4 06 07 00  |........221.....|
0004e5b0  48 fd ff ff f2 92 2e 1e  9a 02 00 00 13 00 00 00  |H...............|
0004e5c0  00 00 00 00 32 33 30 00  40 09 07 00 48 fd ff ff  |....230.@...H...|
0004e5d0  a0 66 ea 1d 66 01 00 00  13 00 00 00 00 00 00 00  |.f..f...........|
0004e5e0  32 33 36 00 a8 0a 07 00  48 fd ff ff af ed e9 1d  |236.....H.......|
0004e5f0  5c 01 00 00 13 00 00 00  00 00 00 00 32 33 37 00  |\...........237.|
0004e600  04 0c 07 00 48 fd ff ff  cf 56 91 1d 96 03 00 00  |....H....V......|
0004e610  13 00 00 00 00 00 00 00  32 33 38 00 9c 0f 07 00  |........238.....|
0004e620  48 fd ff ff 0e 58 0e 1f  e4 01 00 00 13 00 00 00  |H....X..........|
0004e630  00 00 00 00 32 34 30 00  80 11 07 00 48 fd ff ff  |....240.....H...|
0004e640  54 51 28 1d fd 02 00 00  13 00 00 00 00 00 00 00  |TQ(.............|
0004e650  32 34 32 00 80 14 07 00  48 fd ff ff e0 27 27 1d  |242.....H....''.|
0004e660  8e 01 00 00 13 00 00 00  00 00 00 00 32 34 33 00  |............243.|
0004e670  10 16 07 00 48 fd ff ff  99 74 a0 1c cf 01 00 00  |....H....t......|
0004e680  13 00 00 00 00 00 00 00  32 34 36 00 e0 17 07 00  |........246.....|
0004e690  48 fd ff ff e7 88 26 1d  b8 01 00 00 13 00 00 00  |H.....&.........|
0004e6a0  00 00 00 00 32 35 30 00  98 19 07 00 48 fd ff ff  |....250.....H...|
0004e6b0  88 71 26 1d 86 01 00 00  13 00 00 00 00 00 00 00  |.q&.............|
0004e6c0  32 35 31 00 20 1b 07 00  48 fd ff ff ff d5 25 1d  |251. ...H.....%.|
0004e6d0  89 01 00 00 13 00 00 00  00 00 00 00 32 35 33 00  |............253.|
0004e6e0  44 41 54 41 2a 01 00 00  4f 53 5f 42 79 74 65 20  |DATA*...OS_Byte |
0004e6f0  20 28 26 30 36 29 0a 23  50 61 72 65 6e 74 20 4f  | (&06).#Parent O|
0004e700  53 5f 0a 3d 3e 09 52 30  20 3d 09 3c 72 65 61 73  |S_.=>.R0 =.<reas|
0004e710  6f 6e 20 63 6f 64 65 3d  3e 6f 73 5f 62 79 74 65  |on code=>os_byte|
0004e720  69 6e 64 65 78 3e 0a 0a  54 68 69 73 20 53 57 49  |index>..This SWI|
0004e730  20 64 6f 65 73 20 61 20  62 65 77 69 6c 64 65 72  | does a bewilder|
0004e740  69 6e 67 20 61 6d 6f 75  6e 74 20 6f 66 20 64 69  |ing amount of di|
0004e750  66 66 65 72 65 6e 74 20  74 68 69 6e 67 73 2c 20  |fferent things, |
0004e760  62 61 73 65 64 20 6f 6e  20 74 68 65 20 72 65 61  |based on the rea|
0004e770  73 6f 6e 20 63 6f 64 65  20 69 6e 20 52 30 2e 0a  |son code in R0..|
0004e780  0a 46 6f 72 20 63 61 6c  6c 73 20 77 69 74 68 20  |.For calls with |
0004e790  52 30 20 62 65 74 77 65  65 6e 20 31 36 36 20 61  |R0 between 166 a|
0004e7a0  6e 64 20 32 35 35 3a 0a  20 20 20 4e 65 77 56 61  |nd 255:.   NewVa|
0004e7b0  6c 20 3d 20 28 4f 6c 64  56 61 6c 20 41 4e 44 20  |l = (OldVal AND |
0004e7c0  52 32 29 20 45 4f 52 20  52 31 0a 0a 23 74 61 62  |R2) EOR R1..#tab|
0004e7d0  0a 54 6f 20 72 65 61 64  3a 09 52 31 20 3d 20 30  |.To read:.R1 = 0|
0004e7e0  09 09 52 32 20 3d 20 26  46 46 0a 54 6f 20 73 65  |..R2 = &FF.To se|
0004e7f0  74 3a 09 09 52 31 20 3d  20 6e 65 77 20 76 61 6c  |t:..R1 = new val|
0004e800  75 65 09 52 32 20 3d 20  30 0a 00 00 44 41 54 41  |ue.R2 = 0...DATA|
0004e810  4f 01 00 00 4f 53 5f 42  79 74 65 20 34 20 20 43  |O...OS_Byte 4  C|
0004e820  75 72 73 6f 72 20 4b 65  79 20 53 74 61 74 75 73  |ursor Key Status|
0004e830  0a 23 50 61 72 65 6e 74  20 4f 53 5f 42 79 74 65  |.#Parent OS_Byte|
0004e840  49 6e 64 65 78 0a 3d 3e  09 52 30 20 3d 09 34 20  |Index.=>.R0 =.4 |
0004e850  28 26 30 34 29 0a 09 52  31 20 3d 09 3c 6e 65 77  |(&04)..R1 =.<new|
0004e860  20 73 74 61 74 65 3d 3e  4f 53 5f 42 79 74 65 30  | state=>OS_Byte0|
0004e870  30 34 73 74 61 74 65 3e  0a 0a 3c 3d 09 52 30 20  |04state>..<=.R0 |
0004e880  70 72 65 73 65 72 76 65  64 0a 09 52 31 20 3d 09  |preserved..R1 =.|
0004e890  6f 6c 64 20 73 74 61 74  65 0a 09 52 32 20 63 6f  |old state..R2 co|
0004e8a0  72 72 75 70 74 65 64 0a  0a 54 68 69 73 20 63 61  |rrupted..This ca|
0004e8b0  6c 6c 20 61 6c 74 65 72  73 20 74 68 65 20 65 66  |ll alters the ef|
0004e8c0  66 65 63 74 20 6f 66 20  74 68 65 20 66 6f 75 72  |fect of the four|
0004e8d0  20 61 72 72 6f 77 20 6b  65 79 73 20 61 6e 64 20  | arrow keys and |
0004e8e0  74 68 65 20 43 6f 70 79  20 6b 65 79 2e 20 54 68  |the Copy key. Th|
0004e8f0  65 20 76 61 6c 75 65 20  6f 66 20 52 31 20 64 65  |e value of R1 de|
0004e900  74 65 72 6d 69 6e 65 73  20 74 68 65 69 72 20 73  |termines their s|
0004e910  74 61 74 65 2e 0a 0a 3c  4f 53 5f 42 79 74 65 20  |tate...<OS_Byte |
0004e920  32 33 37 3d 3e 4f 53 5f  42 79 74 65 32 33 37 3e  |237=>OS_Byte237>|
0004e930  20 6d 61 79 20 62 65 20  75 73 65 64 20 74 6f 20  | may be used to |
0004e940  77 72 69 74 65 20 61 6e  64 20 72 65 61 64 20 74  |write and read t|
0004e950  68 69 73 20 73 74 61 74  65 2e 0a 00 44 41 54 41  |his state...DATA|
0004e960  40 01 00 00 4f 53 5f 42  79 74 65 20 31 32 31 20  |@...OS_Byte 121 |
0004e970  20 4b 65 79 62 6f 61 72  64 20 73 63 61 6e 0a 23  | Keyboard scan.#|
0004e980  50 61 72 65 6e 74 20 4f  53 5f 42 79 74 65 49 6e  |Parent OS_ByteIn|
0004e990  64 65 78 0a 3d 3e 09 52  30 20 3d 09 31 32 31 20  |dex.=>.R0 =.121 |
0004e9a0  28 26 37 39 29 0a 09 52  31 20 3d 09 3c 6b 65 79  |(&79)..R1 =.<key|
0004e9b0  3d 3e 6f 73 5f 62 79 74  65 31 32 31 61 3e 20 74  |=>os_byte121a> t|
0004e9c0  6f 20 73 74 61 72 74 20  61 74 2c 20 6f 72 20 6b  |o start at, or k|
0004e9d0  65 79 20 45 4f 52 20 26  38 30 20 66 6f 72 20 73  |ey EOR &80 for s|
0004e9e0  69 6e 67 6c 65 20 6b 65  79 0a 0a 3c 3d 09 52 31  |ingle key..<=.R1|
0004e9f0  20 3d 09 66 6f 72 20 72  61 6e 67 65 20 63 68 65  | =.for range che|
0004ea00  63 6b 20 3a 09 6b 65 79  20 70 72 65 73 73 65 64  |ck :.key pressed|
0004ea10  2c 20 6f 72 20 26 46 46  20 69 66 20 6e 6f 6e 65  |, or &FF if none|
0004ea20  20 70 72 65 73 73 65 64  0a 09 20 09 66 6f 72 20  | pressed.. .for |
0004ea30  73 69 6e 67 6c 65 20 6b  65 79 20 3a 09 26 46 46  |single key :.&FF|
0004ea40  20 69 66 20 6b 65 79 20  70 72 65 73 73 65 64 2c  | if key pressed,|
0004ea50  20 6f 72 20 6f 74 68 65  72 20 69 66 20 6e 6f 74  | or other if not|
0004ea60  0a 09 52 32 20 3d 09 63  6f 72 72 75 70 74 65 64  |..R2 =.corrupted|
0004ea70  0a 0a 54 68 69 73 20 63  68 65 63 6b 73 20 77 68  |..This checks wh|
0004ea80  69 63 68 20 6b 65 79 73  20 61 72 65 20 62 65 69  |ich keys are bei|
0004ea90  6e 67 20 70 72 65 73 73  65 64 2e 0a 44 41 54 41  |ng pressed..DATA|
0004eaa0  56 04 00 00 49 6e 74 65  72 6e 61 6c 20 4b 65 79  |V...Internal Key|
0004eab0  73 0a 23 50 61 72 65 6e  74 20 4f 53 5f 42 79 74  |s.#Parent OS_Byt|
0004eac0  65 31 32 31 0a 23 77 72  61 70 20 6f 66 66 0a 33  |e121.#wrap off.3|
0004ead0  32 09 50 72 69 6e 74 09  36 39 09 4a 09 31 39 09  |2.Print.69.J.19.|
0004eae0  35 09 36 31 09 49 6e 73  65 72 74 09 09 31 30 36  |5.61.Insert..106|
0004eaf0  09 6b 70 20 30 0a 31 31  33 09 46 31 09 37 30 09  |.kp 0.113.F1.70.|
0004eb00  4b 09 35 32 09 36 09 36  32 09 48 6f 6d 65 09 09  |K.52.6.62.Home..|
0004eb10  31 30 37 09 6b 70 20 31  0a 31 31 34 09 46 32 09  |107.kp 1.114.F2.|
0004eb20  38 36 09 4c 09 33 36 09  37 09 36 33 09 50 67 20  |86.L.36.7.63.Pg |
0004eb30  55 70 09 09 31 32 34 09  6b 70 20 32 0a 31 31 35  |Up..124.kp 2.115|
0004eb40  09 46 33 09 31 30 31 09  4d 09 32 31 09 38 09 37  |.F3.101.M.21.8.7|
0004eb50  38 09 50 67 20 44 6f 77  6e 09 09 31 30 38 09 6b  |8.Pg Down..108.k|
0004eb60  70 20 33 0a 32 30 09 46  34 09 38 35 09 4e 09 33  |p 3.20.F4.85.N.3|
0004eb70  38 09 39 09 37 39 09 22  09 09 31 32 32 09 6b 70  |8.9.79."..122.kp|
0004eb80  20 34 0a 31 31 36 09 46  35 09 35 34 09 4f 09 31  | 4.116.F5.54.O.1|
0004eb90  30 32 09 2c 09 30 09 53  68 69 66 74 09 09 31 32  |02.,.0.Shift..12|
0004eba0  33 09 6b 70 20 35 0a 31  31 37 09 46 36 09 35 35  |3.kp 5.117.F6.55|
0004ebb0  09 50 09 32 33 09 2d 09  31 09 43 74 72 6c 09 09  |.P.23.-.1.Ctrl..|
0004ebc0  32 36 09 6b 70 20 36 0a  32 32 09 46 37 09 31 36  |26.kp 6.22.F7.16|
0004ebd0  09 51 09 31 30 33 09 2e  09 32 09 41 6c 74 09 09  |.Q.103...2.Alt..|
0004ebe0  32 37 09 6b 70 20 37 0a  31 31 38 09 46 38 09 35  |27.kp 7.118.F8.5|
0004ebf0  31 09 52 09 31 30 34 09  2f 09 33 09 4c 65 66 74  |1.R.104./.3.Left|
0004ec00  20 53 68 69 66 74 09 34  32 09 6b 70 20 38 0a 31  | Shift.42.kp 8.1|
0004ec10  31 39 09 46 39 09 38 31  09 53 09 35 36 09 5b 09  |19.F9.81.S.56.[.|
0004ec20  34 09 4c 65 66 74 20 43  74 72 6c 09 34 33 09 6b  |4.Left Ctrl.43.k|
0004ec30  70 20 39 0a 33 30 09 46  31 30 09 33 35 09 54 09  |p 9.30.F10.35.T.|
0004ec40  31 32 30 09 5c 5c 09 35  09 4c 65 66 74 20 41 6c  |120.\\.5.Left Al|
0004ec50  74 09 35 38 09 6b 70 20  2b 0a 32 38 09 46 31 31  |t.58.kp +.28.F11|
0004ec60  09 35 33 09 55 09 38 38  09 5d 09 36 09 52 69 67  |.53.U.88.].6.Rig|
0004ec70  68 74 20 53 68 69 66 74  09 35 39 09 6b 70 20 2d  |ht Shift.59.kp -|
0004ec80  0a 32 39 09 46 31 32 09  39 39 09 56 09 38 37 09  |.29.F12.99.V.87.|
0004ec90  3b 09 37 09 52 69 67 68  74 20 43 74 72 6c 09 37  |;.7.Right Ctrl.7|
0004eca0  36 09 6b 70 20 2e 0a 36  35 09 41 09 33 33 09 57  |6.kp ..65.A.33.W|
0004ecb0  09 31 31 32 09 45 53 43  09 38 09 52 69 67 68 74  |.112.ESC.8.Right|
0004ecc0  20 41 6c 74 09 37 34 09  6b 70 20 2f 0a 31 30 30  | Alt.74.kp /.100|
0004ecd0  09 42 09 36 36 09 58 09  39 36 09 54 41 42 09 39  |.B.66.X.96.TAB.9|
0004ece0  38 09 53 70 61 63 65 09  09 39 30 09 6b 70 20 23  |8.Space..90.kp #|
0004ecf0  0a 38 32 09 43 09 36 38  09 59 09 36 34 09 43 61  |.82.C.68.Y.64.Ca|
0004ed00  70 73 09 38 39 09 44 65  6c 65 74 65 09 09 39 31  |ps.89.Delete..91|
0004ed10  09 6b 70 20 2a 0a 35 30  09 44 09 39 37 09 5a 09  |.kp *.50.D.97.Z.|
0004ed20  33 31 09 53 63 72 6f 6c  6c 4c 09 37 33 09 52 65  |31.ScrollL.73.Re|
0004ed30  74 75 72 6e 09 09 36 30  09 6b 70 20 45 6e 74 65  |turn..60.kp Ente|
0004ed40  72 0a 33 34 09 45 09 33  39 09 30 09 37 37 09 4e  |r.34.E.39.0.77.N|
0004ed50  75 6d 4c 09 31 30 35 09  43 6f 70 79 09 09 39 09  |umL.105.Copy..9.|
0004ed60  4c 65 66 74 20 6d 6f 75  73 65 0a 36 37 09 46 09  |Left mouse.67.F.|
0004ed70  34 38 09 31 09 34 34 09  42 72 65 61 6b 09 35 37  |48.1.44.Break.57|
0004ed80  09 75 70 09 09 31 30 09  43 65 6e 74 65 72 20 6d  |.up..10.Center m|
0004ed90  6f 75 73 65 0a 38 33 09  47 09 34 39 09 32 09 34  |ouse.83.G.49.2.4|
0004eda0  35 09 7e 09 31 32 31 09  72 69 67 68 74 09 09 31  |5.~.121.right..1|
0004edb0  31 09 52 69 67 68 74 20  6d 6f 75 73 65 0a 38 34  |1.Right mouse.84|
0004edc0  09 48 09 31 37 09 33 09  34 36 09 a3 09 32 35 09  |.H.17.3.46...25.|
0004edd0  6c 65 66 74 09 09 39 34  09 65 78 74 72 61 20 6b  |left..94.extra k|
0004ede0  65 79 0a 33 37 09 49 09  31 38 09 34 09 34 37 09  |ey.37.I.18.4.47.|
0004edf0  5c 3c 2d 7c 09 34 31 09  64 6f 77 6e 09 09 39 33  |\<-|.41.down..93|
0004ee00  09 2b 0a 0a 3c 44 69 61  67 72 61 6d 20 6f 66 20  |.+..<Diagram of |
0004ee10  74 68 65 20 73 74 61 6e  64 61 72 64 20 41 72 63  |the standard Arc|
0004ee20  68 69 6d 65 64 65 73 20  6b 65 79 62 6f 61 72 64  |himedes keyboard|
0004ee30  3d 3e 2e 61 35 30 30 30  3e 0a 3c 44 69 61 67 72  |=>.a5000>.<Diagr|
0004ee40  61 6d 20 6f 66 20 52 69  73 63 50 43 20 6b 65 79  |am of RiscPC key|
0004ee50  62 6f 61 72 64 3d 3e 2e  72 70 63 3e 0a 23 53 75  |board=>.rpc>.#Su|
0004ee60  62 70 61 67 65 20 61 35  30 30 30 0a 44 69 61 67  |bpage a5000.Diag|
0004ee70  72 61 6d 20 6f 66 20 73  74 61 6e 64 61 72 64 20  |ram of standard |
0004ee80  41 72 63 68 69 6d 65 64  65 73 20 6b 65 79 62 6f  |Archimedes keybo|
0004ee90  61 72 64 0a 23 64 72 61  77 20 63 2c 66 20 4f 53  |ard.#draw c,f OS|
0004eea0  5f 42 79 74 65 31 32 31  61 5f 41 35 30 30 30 0a  |_Byte121a_A5000.|
0004eeb0  23 53 75 62 70 61 67 65  20 72 70 63 0a 44 69 61  |#Subpage rpc.Dia|
0004eec0  67 72 61 6d 20 6f 66 20  52 69 73 63 50 43 20 6b  |gram of RiscPC k|
0004eed0  65 79 62 6f 61 72 64 0a  23 64 72 61 77 20 63 2c  |eyboard.#draw c,|
0004eee0  66 20 4f 53 5f 42 79 74  65 31 32 31 61 5f 52 50  |f OS_Byte121a_RP|
0004eef0  43 0a 00 00 44 41 54 41  e5 02 00 00 4f 53 5f 42  |C...DATA....OS_B|
0004ef00  79 74 65 20 32 30 30 20  20 41 6c 74 65 72 20 42  |yte 200  Alter B|
0004ef10  72 65 61 6b 20 61 6e 64  20 45 73 63 61 70 65 20  |reak and Escape |
0004ef20  65 66 66 65 63 74 0a 23  50 61 72 65 6e 74 20 4f  |effect.#Parent O|
0004ef30  53 5f 42 79 74 65 49 6e  64 65 78 0a 3d 3e 09 52  |S_ByteIndex.=>.R|
0004ef40  30 20 3d 09 32 30 30 20  28 26 43 38 29 0a 09 52  |0 =.200 (&C8)..R|
0004ef50  31 20 3d 09 45 4f 52 20  76 61 6c 75 65 0a 09 52  |1 =.EOR value..R|
0004ef60  32 20 3d 09 41 4e 44 20  76 61 6c 75 65 0a 0a 3c  |2 =.AND value..<|
0004ef70  3d 09 52 30 20 3d 09 70  72 65 73 65 72 76 65 64  |=.R0 =.preserved|
0004ef80  0a 09 52 31 20 3d 09 73  74 61 74 65 20 62 65 66  |..R1 =.state bef|
0004ef90  6f 72 65 20 62 65 69 6e  67 20 6f 76 65 72 77 72  |ore being overwr|
0004efa0  69 74 74 65 6e 0a 09 52  32 20 3d 09 6b 65 79 62  |itten..R2 =.keyb|
0004efb0  6f 61 72 64 20 64 69 73  61 62 6c 65 20 66 6c 61  |oard disable fla|
0004efc0  67 20 28 73 65 65 20 3c  4f 53 5f 42 79 74 65 20  |g (see <OS_Byte |
0004efd0  32 30 31 3d 3e 4f 53 5f  42 79 74 65 32 30 31 3e  |201=>OS_Byte201>|
0004efe0  29 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |).              |
0004eff0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0004f010  20 20 20 20 0a 54 68 69  73 20 63 61 6c 6c 20 63  |    .This call c|
0004f020  61 6e 20 72 65 61 64 20  6f 72 20 63 68 61 6e 67  |an read or chang|
0004f030  65 20 74 68 65 20 65 66  66 65 63 74 73 20 6f 66  |e the effects of|
0004f040  20 61 20 72 65 73 65 74  20 28 69 6e 63 6c 75 64  | a reset (includ|
0004f050  69 6e 67 20 72 65 73 65  74 73 20 63 61 75 73 65  |ing resets cause|
0004f060  64 20 62 79 20 42 72 65  61 6b 29 20 61 6e 64 20  |d by Break) and |
0004f070  6f 66 20 45 73 63 61 70  65 2e 0a 0a 54 68 65 20  |of Escape...The |
0004f080  62 6f 74 74 6f 6d 20 74  77 6f 20 62 69 74 73 20  |bottom two bits |
0004f090  6f 66 20 52 31 20 68 61  76 65 20 74 68 65 20 66  |of R1 have the f|
0004f0a0  6f 6c 6c 6f 77 69 6e 67  20 73 69 67 6e 69 66 69  |ollowing signifi|
0004f0b0  63 61 6e 63 65 3a 0a 0a  23 54 61 62 0a 42 69 74  |cance:..#Tab.Bit|
0004f0c0  09 56 61 6c 75 65 09 45  66 66 65 63 74 0a 23 6c  |.Value.Effect.#l|
0004f0d0  69 6e 65 0a 30 09 30 09  4e 6f 72 6d 61 6c 20 65  |ine.0.0.Normal e|
0004f0e0  73 63 61 70 65 20 61 63  74 69 6f 6e 0a 09 31 09  |scape action..1.|
0004f0f0  45 73 63 61 70 65 20 64  69 73 61 62 6c 65 64 20  |Escape disabled |
0004f100  75 6e 6c 65 73 73 20 63  61 75 73 65 64 20 62 79  |unless caused by|
0004f110  20 3c 4f 53 5f 42 79 74  65 20 31 32 35 3d 3e 4f  | <OS_Byte 125=>O|
0004f120  53 5f 42 79 74 65 31 32  35 3e 0a 31 09 30 09 4e  |S_Byte125>.1.0.N|
0004f130  6f 72 6d 61 6c 20 72 65  73 65 74 20 61 63 74 69  |ormal reset acti|
0004f140  6f 6e 0a 09 31 09 50 6f  77 65 72 20 6f 6e 20 72  |on..1.Power on r|
0004f150  65 73 65 74 20 28 6f 6e  6c 79 20 69 66 20 62 69  |eset (only if bi|
0004f160  74 73 20 32 2d 37 20 6f  66 20 52 31 20 61 72 65  |ts 2-7 of R1 are|
0004f170  20 7a 65 72 6f 29 20 54  68 69 73 20 6d 65 61 6e  | zero) This mean|
0004f180  73 20 61 20 76 61 6c 75  65 20 6f 66 20 25 30 30  |s a value of %00|
0004f190  30 30 30 30 30 31 78 20  63 61 75 73 65 73 20 61  |000001x causes a|
0004f1a0  20 6d 65 6d 6f 72 79 20  63 6c 65 61 72 20 28 6e  | memory clear (n|
0004f1b0  6f 20 6d 61 74 74 65 72  20 77 68 61 74 20 6b 69  |o matter what ki|
0004f1c0  6e 64 20 6f 66 20 72 65  73 65 74 20 77 61 73 20  |nd of reset was |
0004f1d0  70 72 65 73 73 65 64 29  0a 00 00 00 44 41 54 41  |pressed)....DATA|
0004f1e0  6e 03 00 00 4f 53 5f 42  79 74 65 20 32 32 39 20  |n...OS_Byte 229 |
0004f1f0  20 41 6c 74 65 72 20 45  73 63 61 70 65 20 6b 65  | Alter Escape ke|
0004f200  79 20 73 74 61 74 75 73  0a 23 50 61 72 65 6e 74  |y status.#Parent|
0004f210  20 4f 53 5f 42 79 74 65  49 6e 64 65 78 0a 3d 3e  | OS_ByteIndex.=>|
0004f220  09 52 30 20 3d 09 32 32  39 20 28 26 45 35 29 0a  |.R0 =.229 (&E5).|
0004f230  09 52 31 20 3d 09 45 4f  52 20 76 61 6c 75 65 0a  |.R1 =.EOR value.|
0004f240  09 52 32 20 3d 09 41 4e  44 20 76 61 6c 75 65 0a  |.R2 =.AND value.|
0004f250  0a 3c 3d 09 52 30 20 70  72 65 73 65 72 76 65 64  |.<=.R0 preserved|
0004f260  0a 09 52 31 20 3d 09 73  74 61 74 65 20 62 65 66  |..R1 =.state bef|
0004f270  6f 72 65 20 62 65 69 6e  67 20 6f 76 65 72 77 72  |ore being overwr|
0004f280  69 74 74 65 6e 0a 09 52  32 20 3d 09 65 73 63 61  |itten..R2 =.esca|
0004f290  70 65 20 65 66 66 65 63  74 73 20 28 73 65 65 20  |pe effects (see |
0004f2a0  3c 4f 53 5f 42 79 74 65  20 32 33 30 3d 3e 4f 53  |<OS_Byte 230=>OS|
0004f2b0  5f 42 79 74 65 32 33 30  3e 29 0a 20 20 20 20 20  |_Byte230>).     |
0004f2c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0004f2e0  20 20 20 20 20 20 20 20  20 20 20 20 20 0a 54 68  |             .Th|
0004f2f0  69 73 20 63 61 6c 6c 20  61 6c 6c 6f 77 73 20 79  |is call allows y|
0004f300  6f 75 20 74 6f 20 65 6e  61 62 6c 65 20 6f 72 20  |ou to enable or |
0004f310  64 69 73 61 62 6c 65 20  74 68 65 20 67 65 6e 65  |disable the gene|
0004f320  72 61 74 69 6f 6e 20 6f  66 20 65 73 63 61 70 65  |ration of escape|
0004f330  20 63 6f 6e 64 69 74 69  6f 6e 73 2c 20 61 6e 64  | conditions, and|
0004f340  20 74 6f 20 72 65 61 64  20 74 68 65 20 63 75 72  | to read the cur|
0004f350  72 65 6e 74 20 73 65 74  74 69 6e 67 2e 20 45 73  |rent setting. Es|
0004f360  63 61 70 65 20 63 6f 6e  64 69 74 69 6f 6e 73 20  |cape conditions |
0004f370  6d 61 79 20 62 65 20 63  61 75 73 65 64 20 62 79  |may be caused by|
0004f380  20 70 72 65 73 73 69 6e  67 20 74 68 65 20 63 75  | pressing the cu|
0004f390  72 72 65 6e 74 20 65 73  63 61 70 65 20 63 68 61  |rrent escape cha|
0004f3a0  72 61 63 74 65 72 20 6f  72 20 62 79 20 69 6e 73  |racter or by ins|
0004f3b0  65 72 74 69 6e 67 20 69  74 20 69 6e 74 6f 20 74  |erting it into t|
0004f3c0  68 65 20 69 6e 70 75 74  20 62 75 66 66 65 72 20  |he input buffer |
0004f3d0  77 69 74 68 20 3c 4f 53  5f 42 79 74 65 20 31 35  |with <OS_Byte 15|
0004f3e0  33 3d 3e 4f 53 5f 42 79  74 65 31 35 33 3e 2e 0a  |3=>OS_Byte153>..|
0004f3f0  0a 49 66 20 74 68 65 20  76 61 6c 75 65 20 69 6e  |.If the value in|
0004f400  20 52 31 20 70 61 73 73  65 64 20 69 73 20 7a 65  | R1 passed is ze|
0004f410  72 6f 2c 20 77 68 69 63  68 20 69 73 20 74 68 65  |ro, which is the|
0004f420  20 64 65 66 61 75 6c 74  2c 20 74 68 65 6e 20 65  | default, then e|
0004f430  73 63 61 70 65 20 63 6f  6e 64 69 74 69 6f 6e 73  |scape conditions|
0004f440  20 61 72 65 20 65 6e 61  62 6c 65 64 2e 20 41 6e  | are enabled. An|
0004f450  79 20 6e 6f 6e 2d 7a 65  72 6f 20 76 61 6c 75 65  |y non-zero value|
0004f460  20 77 69 6c 6c 20 64 69  73 61 62 6c 65 20 74 68  | will disable th|
0004f470  65 6d 2e 20 57 68 65 6e  20 74 68 65 79 27 72 65  |em. When they're|
0004f480  20 64 69 73 61 62 6c 65  64 2c 20 74 68 65 20 63  | disabled, the c|
0004f490  75 72 72 65 6e 74 20 65  73 63 61 70 65 20 63 68  |urrent escape ch|
0004f4a0  61 72 61 63 74 65 72 20  73 65 74 20 62 79 20 3c  |aracter set by <|
0004f4b0  4f 53 5f 42 79 74 65 20  32 32 30 3d 3e 4f 53 5f  |OS_Byte 220=>OS_|
0004f4c0  42 79 74 65 32 32 30 3e  20 77 69 6c 6c 20 70 61  |Byte220> will pa|
0004f4d0  73 73 20 74 68 72 6f 75  67 68 20 74 68 65 20 69  |ss through the i|
0004f4e0  6e 70 75 74 20 73 74 72  65 61 6d 20 75 6e 61 6c  |nput stream unal|
0004f4f0  74 65 72 65 64 2e 0a 0a  3c 4f 53 5f 42 79 74 65  |tered...<OS_Byte|
0004f500  20 32 30 30 3d 3e 4f 53  5f 62 79 74 65 32 30 30  | 200=>OS_byte200|
0004f510  3e 20 63 61 6e 20 61 6c  73 6f 20 63 6f 6e 74 72  |> can also contr|
0004f520  6f 6c 20 74 68 65 20 65  6e 61 62 6c 69 6e 67 20  |ol the enabling |
0004f530  6f 66 20 74 68 65 20 65  73 63 61 70 65 20 63 6f  |of the escape co|
0004f540  6e 64 69 74 69 6f 6e 73  2e 0a 00 00 44 41 54 41  |nditions....DATA|
0004f550  ef 02 00 00 4f 53 5f 42  79 74 65 20 32 34 37 20  |....OS_Byte 247 |
0004f560  20 41 6c 74 65 72 20 42  72 65 61 6b 20 6b 65 79  | Alter Break key|
0004f570  20 61 63 74 69 6f 6e 73  0a 23 50 61 72 65 6e 74  | actions.#Parent|
0004f580  20 4f 53 5f 42 79 74 65  49 6e 64 65 78 0a 3d 3e  | OS_ByteIndex.=>|
0004f590  09 52 30 20 3d 09 32 34  37 20 28 26 46 37 29 0a  |.R0 =.247 (&F7).|
0004f5a0  09 52 31 20 3d 09 45 4f  52 20 76 61 6c 75 65 0a  |.R1 =.EOR value.|
0004f5b0  09 52 32 20 3d 09 41 4e  44 20 76 61 6c 75 65 0a  |.R2 =.AND value.|
0004f5c0  0a 3c 3d 09 52 30 20 70  72 65 73 65 72 76 65 64  |.<=.R0 preserved|
0004f5d0  0a 09 52 31 20 3d 09 76  61 6c 75 65 20 62 65 66  |..R1 =.value bef|
0004f5e0  6f 72 65 20 62 65 69 6e  67 20 6f 76 65 72 77 72  |ore being overwr|
0004f5f0  69 74 74 65 6e 0a 09 52  32 20 63 6f 72 72 75 70  |itten..R2 corrup|
0004f600  74 65 64 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ted.            |
0004f610  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0004f630  20 20 20 20 20 20 0a 54  68 69 73 20 63 61 6c 6c  |      .This call|
0004f640  20 72 65 61 64 73 20 61  6e 64 20 63 68 61 6e 67  | reads and chang|
0004f650  65 73 20 74 68 65 20 72  65 73 75 6c 74 20 6f 66  |es the result of|
0004f660  20 70 72 65 73 73 69 6e  67 20 42 72 65 61 6b 2e  | pressing Break.|
0004f670  20 54 68 65 20 76 61 6c  75 65 20 62 79 74 65 20  | The value byte |
0004f680  61 6c 74 65 72 73 20 42  72 65 61 6b 20 61 6e 64  |alters Break and|
0004f690  20 6d 6f 64 69 66 69 65  72 73 20 6f 66 20 69 74  | modifiers of it|
0004f6a0  20 61 73 20 66 6f 6c 6c  6f 77 73 3a 0a 0a 23 54  | as follows:..#T|
0004f6b0  61 62 0a 42 69 74 73 09  4b 65 79 20 63 6f 6d 62  |ab.Bits.Key comb|
0004f6c0  69 6e 61 74 69 6f 6e 0a  30 2c 31 09 42 72 65 61  |ination.0,1.Brea|
0004f6d0  6b 0a 32 2c 33 09 53 68  69 66 74 20 42 72 65 61  |k.2,3.Shift Brea|
0004f6e0  6b 0a 34 2c 35 09 43 74  72 6c 20 42 72 65 61 6b  |k.4,5.Ctrl Break|
0004f6f0  0a 36 2c 37 09 43 74 72  6c 20 53 68 69 66 74 20  |.6,7.Ctrl Shift |
0004f700  42 72 65 61 6b 0a 0a 45  61 63 68 20 74 77 6f 20  |Break..Each two |
0004f710  62 69 74 20 6e 75 6d 62  65 72 73 20 63 61 6e 20  |bit numbers can |
0004f720  6d 65 61 6e 20 6f 6e 65  20 6f 66 20 74 68 65 73  |mean one of thes|
0004f730  65 3a 0a 0a 30 30 09 41  63 74 20 61 73 20 72 65  |e:..00.Act as re|
0004f740  73 65 74 0a 30 31 09 41  63 74 20 61 73 20 65 73  |set.01.Act as es|
0004f750  63 61 70 65 20 6b 65 79  0a 31 30 09 4e 6f 20 65  |cape key.10.No e|
0004f760  66 66 65 63 74 0a 31 31  09 75 6e 64 65 66 69 6e  |ffect.11.undefin|
0004f770  65 64 0a 0a 54 68 65 20  64 65 66 61 75 6c 74 20  |ed..The default |
0004f780  69 73 20 25 30 30 30 30  30 30 30 31 2c 20 73 6f  |is %00000001, so|
0004f790  20 42 72 65 61 6b 20 63  61 75 73 65 73 20 61 6e  | Break causes an|
0004f7a0  20 65 73 63 61 70 65 20  63 6f 6e 64 69 74 69 6f  | escape conditio|
0004f7b0  6e 2c 20 74 6f 67 65 74  68 65 72 20 77 69 74 68  |n, together with|
0004f7c0  20 53 68 69 66 74 20 61  6e 64 2f 6f 72 20 43 74  | Shift and/or Ct|
0004f7d0  72 6c 20 69 74 20 61 63  74 73 20 6c 69 6b 65 20  |rl it acts like |
0004f7e0  74 68 65 20 72 65 73 65  74 20 62 75 74 74 6f 6e  |the reset button|
0004f7f0  2e 20 50 6c 65 61 73 65  20 6e 6f 74 65 20 74 68  |. Please note th|
0004f800  61 74 20 74 68 69 73 20  53 57 49 20 61 6c 73 6f  |at this SWI also|
0004f810  20 61 6c 74 65 72 73 20  74 68 65 20 43 4d 4f 53  | alters the CMOS|
0004f820  20 77 68 65 6e 20 77 72  69 74 69 6e 67 20 61 20  | when writing a |
0004f830  6e 65 77 20 73 74 61 74  75 73 2e 00 44 41 54 41  |new status..DATA|
0004f840  29 04 00 00 4f 53 5f 42  79 74 65 20 32 35 34 20  |)...OS_Byte 254 |
0004f850  20 41 6c 74 65 72 20 65  66 66 65 63 74 20 6f 66  | Alter effect of|
0004f860  20 6b 65 79 70 61 64 20  6b 65 79 73 0a 23 50 61  | keypad keys.#Pa|
0004f870  72 65 6e 74 20 4f 53 5f  42 79 74 65 49 6e 64 65  |rent OS_ByteInde|
0004f880  78 0a 3d 3e 09 52 30 20  3d 09 32 35 34 20 28 26  |x.=>.R0 =.254 (&|
0004f890  46 45 29 0a 09 52 31 20  3d 09 45 4f 52 20 76 61  |FE)..R1 =.EOR va|
0004f8a0  6c 75 65 0a 09 52 32 20  3d 09 41 4e 44 20 76 61  |lue..R2 =.AND va|
0004f8b0  6c 75 65 0a 0a 3c 3d 09  52 30 20 70 72 65 73 65  |lue..<=.R0 prese|
0004f8c0  72 76 65 64 0a 09 52 31  20 3d 09 76 61 6c 75 65  |rved..R1 =.value|
0004f8d0  20 62 65 66 6f 72 65 20  62 65 69 6e 67 20 6f 76  | before being ov|
0004f8e0  65 72 77 72 69 74 74 65  6e 0a 09 52 32 20 63 6f  |erwritten..R2 co|
0004f8f0  72 72 75 70 74 65 64 0a  20 20 20 20 20 20 20 20  |rrupted.        |
0004f900  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0004f920  20 20 20 20 20 20 20 20  20 20 0a 54 68 69 73 20  |          .This |
0004f930  63 61 6c 6c 20 61 6c 6c  6f 77 73 20 79 6f 75 20  |call allows you |
0004f940  74 6f 20 65 6e 61 62 6c  65 20 6f 72 20 64 69 73  |to enable or dis|
0004f950  61 62 6c 65 20 74 68 65  20 65 66 66 65 63 74 20  |able the effect |
0004f960  6f 66 20 53 68 69 66 74  20 61 6e 64 20 43 74 72  |of Shift and Ctr|
0004f970  6c 20 6f 6e 20 74 68 65  20 6e 75 6d 65 72 69 63  |l on the numeric|
0004f980  20 6b 65 79 70 61 64 20  6f 72 20 74 6f 20 72 65  | keypad or to re|
0004f990  61 64 20 74 68 65 20 63  75 72 72 65 6e 74 20 73  |ad the current s|
0004f9a0  74 61 74 65 2e 20 54 68  65 73 65 20 6b 65 79 73  |tate. These keys|
0004f9b0  20 6d 61 79 20 6d 6f 64  69 66 79 20 74 68 65 20  | may modify the |
0004f9c0  63 6f 64 65 20 6a 75 73  74 20 62 65 66 6f 72 65  |code just before|
0004f9d0  20 69 74 20 69 73 20 69  6e 73 65 72 74 65 64 20  | it is inserted |
0004f9e0  69 6e 74 6f 20 74 68 65  20 69 6e 70 75 74 20 62  |into the input b|
0004f9f0  75 66 66 65 72 2e 0a 0a  49 66 20 52 31 20 69 73  |uffer...If R1 is|
0004fa00  20 7a 65 72 6f 2c 20 74  68 65 6e 20 53 68 69 66  | zero, then Shif|
0004fa10  74 20 61 6e 64 20 43 74  72 6c 20 61 72 65 20 65  |t and Ctrl are e|
0004fa20  6e 61 62 6c 65 64 2e 20  41 6e 79 20 6e 6f 6e 2d  |nabled. Any non-|
0004fa30  7a 65 72 6f 20 76 61 6c  75 65 20 77 69 6c 6c 20  |zero value will |
0004fa40  64 69 73 61 62 6c 65 20  74 68 65 6d 2e 20 54 68  |disable them. Th|
0004fa50  69 73 20 69 73 20 74 68  65 20 64 65 66 61 75 6c  |is is the defaul|
0004fa60  74 2e 0a 0a 23 54 61 62  0a 49 66 20 53 68 69 66  |t...#Tab.If Shif|
0004fa70  74 2f 43 74 72 6c 20 61  72 65 20 65 6e 61 62 6c  |t/Ctrl are enabl|
0004fa80  65 64 2c 20 74 68 65 6e  20 74 68 65 20 66 6f 6c  |ed, then the fol|
0004fa90  6c 6f 77 69 6e 67 20 61  63 74 69 6f 6e 20 6f 63  |lowing action oc|
0004faa0  63 75 72 20 64 65 70 65  6e 64 69 6e 67 20 6f 6e  |cur depending on|
0004fab0  20 74 68 65 20 76 61 6c  75 65 20 67 65 6e 65 72  | the value gener|
0004fac0  61 74 65 64 20 62 79 20  61 20 6b 65 79 70 61 64  |ated by a keypad|
0004fad0  20 6b 65 79 3a 0a 0a 2a  20 6b 65 79 20 76 61 6c  | key:..* key val|
0004fae0  75 65 20 3e 3d 26 38 30  09 3a 09 53 68 69 66 74  |ue >=&80.:.Shift|
0004faf0  20 65 78 63 6c 75 73 69  76 65 20 4f 52 73 20 74  | exclusive ORs t|
0004fb00  68 65 20 76 61 6c 75 65  20 77 69 74 68 20 26 31  |he value with &1|
0004fb10  30 20 43 74 72 6c 20 20  65 78 63 6c 75 73 69 76  |0 Ctrl  exclusiv|
0004fb20  65 20 4f 52 73 20 74 68  65 20 76 61 6c 75 65 20  |e ORs the value |
0004fb30  77 69 74 68 20 26 32 30  0a 2a 20 6b 65 79 20 76  |with &20.* key v|
0004fb40  61 6c 75 65 20 5c 3c 26  38 30 09 3a 09 53 68 69  |alue \<&80.:.Shi|
0004fb50  66 74 20 61 6e 64 20 43  74 72 6c 20 73 74 69 6c  |ft and Ctrl stil|
0004fb60  6c 20 68 61 76 65 20 6e  6f 20 65 66 66 65 63 74  |l have no effect|
0004fb70  2e 0a 0a 49 66 20 4e 75  6d 4c 6f 63 6b 20 69 73  |...If NumLock is|
0004fb80  20 6f 66 66 2c 20 74 68  65 6e 20 61 20 7b 66 43  | off, then a {fC|
0004fb90  6f 64 65 7d 2a 46 78 20  32 35 34 20 30 7b 66 7d  |ode}*Fx 254 0{f}|
0004fba0  20 6d 61 6b 65 73 20 74  68 65 20 6b 65 79 70 61  | makes the keypa|
0004fbb0  64 20 74 6f 20 61 63 74  20 65 78 61 63 74 6c 79  |d to act exactly|
0004fbc0  20 6c 69 6b 65 20 74 68  65 20 63 75 72 73 6f 72  | like the cursor|
0004fbd0  20 6b 65 79 73 2c 20 69  6e 63 6c 75 64 69 6e 67  | keys, including|
0004fbe0  20 53 68 69 66 74 2c 20  43 74 72 6c 20 6f 72 20  | Shift, Ctrl or |
0004fbf0  62 6f 74 68 2e 0a 0a 54  68 65 20 62 61 73 65 20  |both...The base |
0004fc00  76 61 6c 75 65 20 75 73  65 64 20 66 6f 72 20 6e  |value used for n|
0004fc10  75 6d 65 72 69 63 20 6b  65 79 70 61 64 20 69 6e  |umeric keypad in|
0004fc20  74 65 72 70 72 65 74 61  74 69 6f 6e 20 63 61 6e  |terpretation can|
0004fc30  20 62 65 20 72 65 61 64  20 61 6e 64 20 77 72 69  | be read and wri|
0004fc40  74 74 65 6e 20 77 69 74  68 20 3c 4f 53 5f 42 79  |tten with <OS_By|
0004fc50  74 65 20 32 33 38 3d 3e  4f 53 5f 42 79 74 65 32  |te 238=>OS_Byte2|
0004fc60  33 38 3e 2e 0a 00 00 00  44 41 54 41 1d 15 00 00  |38>.....DATA....|
0004fc70  4f 53 5f 42 79 74 65 20  49 6e 64 65 78 0a 23 50  |OS_Byte Index.#P|
0004fc80  61 72 65 6e 74 20 4f 53  5f 42 79 74 65 0a 30 09  |arent OS_Byte.0.|
0004fc90  26 30 30 09 3c 44 69 73  70 6c 61 79 20 4f 53 20  |&00.<Display OS |
0004fca0  76 65 72 73 69 6f 6e 20  69 6e 66 6f 3d 3e 6f 73  |version info=>os|
0004fcb0  5f 62 79 74 65 30 30 30  3e 0a 31 09 26 30 31 09  |_byte000>.1.&01.|
0004fcc0  3c 57 72 69 74 65 20 75  73 65 72 20 66 6c 61 67  |<Write user flag|
0004fcd0  3d 3e 6f 73 5f 62 79 74  65 30 30 31 3e 0a 32 09  |=>os_byte001>.2.|
0004fce0  26 30 32 09 3c 53 70 65  63 69 66 79 20 69 6e 70  |&02.<Specify inp|
0004fcf0  75 74 20 73 74 72 65 61  6d 3d 3e 6f 73 5f 62 79  |ut stream=>os_by|
0004fd00  74 65 30 30 32 3e 0a 33  09 26 30 33 09 3c 53 70  |te002>.3.&03.<Sp|
0004fd10  65 63 69 66 79 20 6f 75  74 70 75 74 20 73 74 72  |ecify output str|
0004fd20  65 61 6d 3d 3e 6f 73 5f  62 79 74 65 30 30 33 3e  |eam=>os_byte003>|
0004fd30  0a 34 09 26 30 34 09 3c  43 75 72 73 6f 72 20 6b  |.4.&04.<Cursor k|
0004fd40  65 79 20 73 74 61 74 75  73 3d 3e 6f 73 5f 62 79  |ey status=>os_by|
0004fd50  74 65 30 30 34 3e 0a 35  09 26 30 35 09 3c 57 72  |te004>.5.&05.<Wr|
0004fd60  69 74 65 20 70 72 69 6e  74 65 72 20 64 72 69 76  |ite printer driv|
0004fd70  65 72 20 74 79 70 65 3d  3e 6f 73 5f 62 79 74 65  |er type=>os_byte|
0004fd80  30 30 35 3e 0a 36 09 26  30 36 09 3c 57 72 69 74  |005>.6.&06.<Writ|
0004fd90  65 20 70 72 69 6e 74 65  72 20 69 67 6e 6f 72 65  |e printer ignore|
0004fda0  20 63 68 61 72 3d 3e 6f  73 5f 62 79 74 65 30 30  | char=>os_byte00|
0004fdb0  36 3e 0a 37 09 26 30 37  09 3c 57 72 69 74 65 20  |6>.7.&07.<Write |
0004fdc0  52 53 32 33 32 20 72 65  63 65 69 76 65 20 72 61  |RS232 receive ra|
0004fdd0  74 65 3d 3e 6f 73 5f 62  79 74 65 30 30 37 3e 0a  |te=>os_byte007>.|
0004fde0  38 09 26 30 38 09 3c 57  72 69 74 65 20 52 53 32  |8.&08.<Write RS2|
0004fdf0  33 32 20 74 72 61 6e 73  6d 69 74 20 72 61 74 65  |32 transmit rate|
0004fe00  3d 3e 6f 73 5f 62 79 74  65 30 30 38 3e 0a 39 09  |=>os_byte008>.9.|
0004fe10  26 30 39 09 3c 57 72 69  74 65 20 64 75 72 61 74  |&09.<Write durat|
0004fe20  69 6f 6e 20 6f 66 20 66  69 72 73 74 20 66 6c 61  |ion of first fla|
0004fe30  73 68 20 63 6f 6c 6f 75  72 3d 3e 6f 73 5f 62 79  |sh colour=>os_by|
0004fe40  74 65 30 30 39 3e 0a 31  30 09 26 30 41 09 3c 57  |te009>.10.&0A.<W|
0004fe50  72 69 74 65 20 64 75 72  61 74 69 6f 6e 20 6f 66  |rite duration of|
0004fe60  20 73 65 63 6f 6e 64 20  66 6c 61 73 68 20 63 6f  | second flash co|
0004fe70  6c 6f 75 72 3d 3e 6f 73  5f 62 79 74 65 30 31 30  |lour=>os_byte010|
0004fe80  3e 0a 31 31 09 26 30 42  09 3c 57 72 69 74 65 20  |>.11.&0B.<Write |
0004fe90  6b 65 79 62 6f 61 72 64  20 61 75 74 6f 2d 72 65  |keyboard auto-re|
0004fea0  70 65 61 74 20 64 65 6c  61 79 3d 3e 6f 73 5f 62  |peat delay=>os_b|
0004feb0  79 74 65 30 31 31 3e 0a  31 32 09 26 30 43 09 3c  |yte011>.12.&0C.<|
0004fec0  57 72 69 74 65 20 6b 65  79 62 6f 61 72 64 20 61  |Write keyboard a|
0004fed0  75 74 6f 2d 72 65 70 65  61 74 20 72 61 74 65 3d  |uto-repeat rate=|
0004fee0  3e 6f 73 5f 62 79 74 65  30 31 32 3e 0a 31 33 09  |>os_byte012>.13.|
0004fef0  26 30 44 09 3c 44 69 73  61 62 6c 65 20 65 76 65  |&0D.<Disable eve|
0004ff00  6e 74 3d 3e 6f 73 5f 62  79 74 65 30 31 33 3e 0a  |nt=>os_byte013>.|
0004ff10  31 34 09 26 30 45 09 3c  45 6e 61 62 6c 65 20 65  |14.&0E.<Enable e|
0004ff20  76 65 6e 74 3d 3e 6f 73  5f 62 79 74 65 30 31 34  |vent=>os_byte014|
0004ff30  3e 0a 31 35 09 26 30 46  09 3c 46 6c 75 73 68 20  |>.15.&0F.<Flush |
0004ff40  62 75 66 66 65 72 3d 3e  6f 73 5f 62 79 74 65 30  |buffer=>os_byte0|
0004ff50  31 35 3e 0a 31 38 09 26  31 32 09 3c 52 65 73 65  |15>.18.&12.<Rese|
0004ff60  74 20 66 75 6e 63 74 69  6f 6e 20 6b 65 79 73 3d  |t function keys=|
0004ff70  3e 6f 73 5f 62 79 74 65  30 31 38 3e 0a 31 39 09  |>os_byte018>.19.|
0004ff80  26 31 33 09 3c 57 61 69  74 20 66 6f 72 20 76 73  |&13.<Wait for vs|
0004ff90  79 6e 63 3d 3e 6f 73 5f  62 79 74 65 30 31 39 3e  |ync=>os_byte019>|
0004ffa0  0a 32 30 09 26 31 34 09  3c 52 65 73 65 74 20 66  |.20.&14.<Reset f|
0004ffb0  6f 6e 74 20 64 65 66 69  6e 69 74 69 6f 6e 73 3d  |ont definitions=|
0004ffc0  3e 6f 73 5f 62 79 74 65  30 32 30 3e 0a 32 31 09  |>os_byte020>.21.|
0004ffd0  26 31 35 09 3c 46 6c 75  73 68 20 73 65 6c 65 63  |&15.<Flush selec|
0004ffe0  74 65 64 20 62 75 66 66  65 72 3d 3e 6f 73 5f 62  |ted buffer=>os_b|
0004fff0  79 74 65 30 32 31 3e 0a  32 35 09 26 31 39 09 3c  |yte021>.25.&19.<|
00050000  52 65 73 65 74 20 67 72  6f 75 70 20 6f 66 20 66  |Reset group of f|
00050010  6f 6e 74 20 64 65 66 69  6e 69 74 69 6f 6e 73 3d  |ont definitions=|
00050020  3e 6f 73 5f 62 79 74 65  30 32 35 3e 0a 37 30 09  |>os_byte025>.70.|
00050030  26 34 36 09 3c 52 65 61  64 2f 57 72 69 74 65 20  |&46.<Read/Write |
00050040  63 6f 75 6e 74 72 79 20  6e 75 6d 62 65 72 3d 3e  |country number=>|
00050050  6f 73 5f 62 79 74 65 30  37 30 3e 0a 37 31 09 26  |os_byte070>.71.&|
00050060  34 37 09 3c 52 65 61 64  2f 57 72 69 74 65 20 61  |47.<Read/Write a|
00050070  6c 70 68 61 62 65 74 20  6e 75 6d 62 65 72 3d 3e  |lphabet number=>|
00050080  6f 73 5f 62 79 74 65 30  37 31 3e 0a 31 30 36 09  |os_byte071>.106.|
00050090  26 36 41 09 3c 53 65 6c  65 63 74 20 70 6f 69 6e  |&6A.<Select poin|
000500a0  74 65 72 20 2f 20 41 63  74 69 76 61 74 65 20 6d  |ter / Activate m|
000500b0  6f 75 73 65 3d 3e 6f 73  5f 62 79 74 65 31 30 36  |ouse=>os_byte106|
000500c0  3e 0a 31 31 32 09 26 37  30 09 3c 57 72 69 74 65  |>.112.&70.<Write|
000500d0  20 56 44 55 20 64 72 69  76 65 72 20 73 63 72 65  | VDU driver scre|
000500e0  65 6e 20 62 61 6e 6b 3d  3e 6f 73 5f 62 79 74 65  |en bank=>os_byte|
000500f0  31 31 32 3e 0a 31 31 33  09 26 37 31 09 3c 57 72  |112>.113.&71.<Wr|
00050100  69 74 65 20 64 69 73 70  6c 61 79 20 68 61 72 64  |ite display hard|
00050110  77 61 72 65 20 73 63 72  65 65 6e 20 62 61 6e 6b  |ware screen bank|
00050120  3d 3e 6f 73 5f 62 79 74  65 31 31 33 3e 0a 31 31  |=>os_byte113>.11|
00050130  34 09 26 37 32 09 3c 57  72 69 74 65 20 73 68 61  |4.&72.<Write sha|
00050140  64 6f 77 2f 6e 6f 6e 2d  73 68 61 64 6f 77 20 73  |dow/non-shadow s|
00050150  74 61 74 65 3d 3e 6f 73  5f 62 79 74 65 31 31 34  |tate=>os_byte114|
00050160  3e 0a 31 31 37 09 26 37  35 09 3c 52 65 61 64 20  |>.117.&75.<Read |
00050170  56 44 55 20 73 74 61 74  75 73 3d 3e 6f 73 5f 62  |VDU status=>os_b|
00050180  79 74 65 31 31 37 3e 0a  31 31 38 09 26 37 36 09  |yte117>.118.&76.|
00050190  3c 52 65 66 6c 65 63 74  20 6b 65 79 62 6f 61 72  |<Reflect keyboar|
000501a0  64 20 73 74 61 74 75 73  20 69 6e 20 4c 45 44 73  |d status in LEDs|
000501b0  3d 3e 6f 73 5f 62 79 74  65 31 31 38 3e 0a 31 32  |=>os_byte118>.12|
000501c0  30 09 26 37 38 09 3c 57  72 69 74 65 20 6b 65 79  |0.&78.<Write key|
000501d0  73 20 70 72 65 73 73 65  64 20 69 6e 66 6f 72 6d  |s pressed inform|
000501e0  61 74 69 6f 6e 3d 3e 6f  73 5f 62 79 74 65 31 32  |ation=>os_byte12|
000501f0  30 3e 0a 31 32 31 09 26  37 39 09 3c 4b 65 79 62  |0>.121.&79.<Keyb|
00050200  6f 61 72 64 20 73 63 61  6e 3d 3e 6f 73 5f 62 79  |oard scan=>os_by|
00050210  74 65 31 32 31 3e 0a 31  32 32 09 26 37 41 09 3c  |te121>.122.&7A.<|
00050220  4b 65 79 62 6f 61 72 64  20 73 63 61 6e 20 66 72  |Keyboard scan fr|
00050230  6f 6d 20 31 36 20 64 65  63 69 6d 61 6c 3d 3e 6f  |om 16 decimal=>o|
00050240  73 5f 62 79 74 65 31 32  32 3e 0a 31 32 34 09 26  |s_byte122>.124.&|
00050250  37 43 09 3c 43 6c 65 61  72 20 65 73 63 61 70 65  |7C.<Clear escape|
00050260  20 63 6f 6e 64 69 74 69  6f 6e 3d 3e 6f 73 5f 62  | condition=>os_b|
00050270  79 74 65 31 32 34 3e 0a  31 32 35 09 26 37 44 09  |yte124>.125.&7D.|
00050280  3c 53 65 74 20 65 73 63  61 70 65 20 63 6f 6e 64  |<Set escape cond|
00050290  69 74 69 6f 6e 3d 3e 6f  73 5f 62 79 74 65 31 32  |ition=>os_byte12|
000502a0  35 3e 0a 31 32 36 09 26  37 45 09 3c 41 63 6b 6e  |5>.126.&7E.<Ackn|
000502b0  6f 77 6c 65 64 67 65 20  65 73 63 61 70 65 20 63  |owledge escape c|
000502c0  6f 6e 64 69 74 69 6f 6e  3d 3e 6f 73 5f 62 79 74  |ondition=>os_byt|
000502d0  65 31 32 36 3e 0a 31 32  37 09 26 37 46 09 3c 43  |e126>.127.&7F.<C|
000502e0  68 65 63 6b 20 66 6f 72  20 65 6e 64 20 6f 66 20  |heck for end of |
000502f0  66 69 6c 65 3d 3e 6f 73  5f 62 79 74 65 31 32 37  |file=>os_byte127|
00050300  3e 0a 31 32 38 09 26 38  30 09 3c 47 65 74 20 62  |>.128.&80.<Get b|
00050310  75 66 66 65 72 2f 6d 6f  75 73 65 20 73 74 61 74  |uffer/mouse stat|
00050320  75 73 3d 3e 6f 73 5f 62  79 74 65 31 32 38 3e 0a  |us=>os_byte128>.|
00050330  31 32 39 09 26 38 31 09  3c 53 63 61 6e 20 66 6f  |129.&81.<Scan fo|
00050340  72 20 61 20 70 61 72 74  69 63 75 6c 61 72 20 6b  |r a particular k|
00050350  65 79 3d 3e 6f 73 5f 62  79 74 65 31 32 39 3e 0a  |ey=>os_byte129>.|
00050360  31 33 34 09 26 38 36 09  3c 52 65 61 64 20 74 65  |134.&86.<Read te|
00050370  78 74 20 63 75 72 73 6f  72 20 70 6f 73 69 74 69  |xt cursor positi|
00050380  6f 6e 3d 3e 6f 73 5f 62  79 74 65 31 33 34 3e 0a  |on=>os_byte134>.|
00050390  31 33 35 09 26 38 37 09  3c 52 65 61 64 20 63 68  |135.&87.<Read ch|
000503a0  61 72 20 61 74 20 74 65  78 74 20 63 75 72 73 6f  |ar at text curso|
000503b0  72 2c 20 61 6e 64 20 73  63 72 65 65 6e 20 6d 6f  |r, and screen mo|
000503c0  64 65 3d 3e 6f 73 5f 62  79 74 65 31 33 35 3e 0a  |de=>os_byte135>.|
000503d0  31 33 38 09 26 38 41 09  3c 49 6e 73 65 72 74 20  |138.&8A.<Insert |
000503e0  62 79 74 65 20 69 6e 74  6f 20 62 75 66 66 65 72  |byte into buffer|
000503f0  3d 3e 6f 73 5f 62 79 74  65 31 33 38 3e 0a 31 33  |=>os_byte138>.13|
00050400  39 09 26 38 42 09 3c 57  72 69 74 65 20 66 69 6c  |9.&8B.<Write fil|
00050410  69 6e 67 20 73 79 73 74  65 6d 20 6f 70 74 69 6f  |ing system optio|
00050420  6e 73 3d 3e 6f 73 5f 62  79 74 65 31 33 39 3e 0a  |ns=>os_byte139>.|
00050430  31 34 33 09 26 38 46 09  3c 49 73 73 75 65 20 6d  |143.&8F.<Issue m|
00050440  6f 64 75 6c 65 20 73 65  72 76 69 63 65 20 63 61  |odule service ca|
00050450  6c 6c 3d 3e 6f 73 5f 62  79 74 65 31 34 33 3e 0a  |ll=>os_byte143>.|
00050460  31 34 34 09 26 39 30 09  3c 53 65 74 20 76 65 72  |144.&90.<Set ver|
00050470  74 69 63 61 6c 20 73 63  72 65 65 6e 20 73 68 69  |tical screen shi|
00050480  66 74 2c 20 61 6e 64 20  69 6e 74 65 72 6c 61 63  |ft, and interlac|
00050490  65 3d 3e 6f 73 5f 62 79  74 65 31 34 34 3e 0a 31  |e=>os_byte144>.1|
000504a0  34 35 09 26 39 31 09 3c  47 65 74 20 63 68 61 72  |45.&91.<Get char|
000504b0  20 66 72 6f 6d 20 62 75  66 66 65 72 3d 3e 6f 73  | from buffer=>os|
000504c0  5f 62 79 74 65 31 34 35  3e 0a 31 35 32 09 26 39  |_byte145>.152.&9|
000504d0  38 09 3c 45 78 61 6d 69  6e 65 20 62 75 66 66 65  |8.<Examine buffe|
000504e0  72 20 73 74 61 74 75 73  3d 3e 6f 73 5f 62 79 74  |r status=>os_byt|
000504f0  65 31 35 32 3e 0a 31 35  33 09 26 39 39 09 3c 49  |e152>.153.&99.<I|
00050500  6e 73 65 72 74 20 63 68  61 72 20 69 6e 74 6f 20  |nsert char into |
00050510  69 6e 70 75 74 20 62 75  66 66 65 72 3d 3e 6f 73  |input buffer=>os|
00050520  5f 62 79 74 65 31 35 33  3e 0a 31 35 36 09 26 39  |_byte153>.156.&9|
00050530  43 09 3c 52 65 61 64 2f  57 72 69 74 65 20 73 65  |C.<Read/Write se|
00050540  72 69 61 6c 20 70 6f 72  74 20 73 74 61 74 65 3d  |rial port state=|
00050550  3e 6f 73 5f 62 79 74 65  31 35 36 3e 0a 31 36 30  |>os_byte156>.160|
00050560  09 26 41 30 09 3c 52 65  61 64 20 56 44 55 20 76  |.&A0.<Read VDU v|
00050570  61 72 69 61 62 6c 65 20  76 61 6c 75 65 3d 3e 6f  |ariable value=>o|
00050580  73 5f 62 79 74 65 31 36  30 3e 0a 31 36 31 09 26  |s_byte160>.161.&|
00050590  41 31 09 3c 52 65 61 64  20 62 61 74 74 65 72 79  |A1.<Read battery|
000505a0  20 62 61 63 6b 65 64 20  52 41 4d 3d 3e 6f 73 5f  | backed RAM=>os_|
000505b0  62 79 74 65 31 36 31 3e  0a 31 36 32 09 26 41 32  |byte161>.162.&A2|
000505c0  09 3c 57 72 69 74 65 20  62 61 74 74 65 72 79 20  |.<Write battery |
000505d0  62 61 63 6b 65 64 20 52  41 4d 3d 3e 6f 73 5f 62  |backed RAM=>os_b|
000505e0  79 74 65 31 36 32 3e 0a  31 36 33 09 26 41 33 09  |yte162>.163.&A3.|
000505f0  3c 52 65 61 64 2f 57 72  69 74 65 20 67 65 6e 65  |<Read/Write gene|
00050600  72 61 6c 20 67 72 61 70  68 69 63 73 20 69 6e 66  |ral graphics inf|
00050610  6f 3d 3e 6f 73 5f 62 79  74 65 31 36 33 3e 0a 31  |o=>os_byte163>.1|
00050620  36 35 09 26 41 35 09 3c  52 65 61 64 20 6f 75 74  |65.&A5.<Read out|
00050630  70 75 74 20 63 75 72 73  6f 72 20 70 6f 73 69 74  |put cursor posit|
00050640  69 6f 6e 3d 3e 6f 73 5f  62 79 74 65 31 36 35 3e  |ion=>os_byte165>|
00050650  0a 31 37 36 09 26 42 30  09 3c 35 30 20 48 7a 20  |.176.&B0.<50 Hz |
00050660  63 6f 75 6e 74 65 72 3d  3e 6f 73 5f 62 79 74 65  |counter=>os_byte|
00050670  31 37 36 3e 0a 31 37 37  09 26 42 31 09 3c 52 65  |176>.177.&B1.<Re|
00050680  61 64 20 69 6e 70 75 74  20 73 6f 75 72 63 65 3d  |ad input source=|
00050690  3e 6f 73 5f 62 79 74 65  31 37 37 3e 0a 31 37 38  |>os_byte177>.178|
000506a0  09 26 42 32 09 3c 52 65  61 64 2f 57 72 69 74 65  |.&B2.<Read/Write|
000506b0  20 6b 65 79 62 6f 61 72  64 20 73 65 6d 61 70 68  | keyboard semaph|
000506c0  6f 72 65 3d 3e 6f 73 5f  62 79 74 65 31 37 38 3e  |ore=>os_byte178>|
000506d0  0a 31 38 31 09 26 42 35  09 3c 52 65 61 64 2f 57  |.181.&B5.<Read/W|
000506e0  72 69 74 65 20 73 65 72  69 61 6c 20 69 6e 70 75  |rite serial inpu|
000506f0  74 20 69 6e 74 65 72 70  72 65 74 61 74 69 6f 6e  |t interpretation|
00050700  20 73 74 61 74 75 73 3d  3e 6f 73 5f 62 79 74 65  | status=>os_byte|
00050710  31 38 31 3e 0a 31 38 32  09 26 42 36 09 3c 52 65  |181>.182.&B6.<Re|
00050720  61 64 2f 57 72 69 74 65  20 4e 6f 49 67 6e 6f 72  |ad/Write NoIgnor|
00050730  65 20 73 74 61 74 65 3d  3e 6f 73 5f 62 79 74 65  |e state=>os_byte|
00050740  31 38 32 3e 0a 31 39 31  09 26 42 46 09 3c 52 65  |182>.191.&BF.<Re|
00050750  61 64 2f 57 72 69 74 65  20 52 53 34 32 33 20 62  |ad/Write RS423 b|
00050760  75 73 79 20 66 6c 61 67  3d 3e 6f 73 5f 62 79 74  |usy flag=>os_byt|
00050770  65 31 39 31 3e 0a 31 39  32 09 26 43 30 09 3c 52  |e191>.192.&C0.<R|
00050780  65 61 64 20 73 65 72 69  61 6c 20 70 6f 72 74 20  |ead serial port |
00050790  73 74 61 74 65 3d 3e 6f  73 5f 62 79 74 65 31 39  |state=>os_byte19|
000507a0  32 3e 0a 31 39 33 09 26  43 31 09 3c 52 65 61 64  |2>.193.&C1.<Read|
000507b0  2f 57 72 69 74 65 20 66  6c 61 73 68 20 63 6f 75  |/Write flash cou|
000507c0  6e 74 65 72 3d 3e 6f 73  5f 62 79 74 65 31 39 33  |nter=>os_byte193|
000507d0  3e 0a 31 39 34 09 26 43  32 09 3c 52 65 61 64 20  |>.194.&C2.<Read |
000507e0  64 75 72 61 74 69 6f 6e  20 6f 66 20 73 65 63 6f  |duration of seco|
000507f0  6e 64 20 66 6c 61 73 68  20 63 6f 6c 6f 75 72 3d  |nd flash colour=|
00050800  3e 6f 73 5f 62 79 74 65  31 39 34 3e 0a 31 39 35  |>os_byte194>.195|
00050810  09 26 43 33 09 3c 52 65  61 64 20 64 75 72 61 74  |.&C3.<Read durat|
00050820  69 6f 6e 20 6f 66 20 66  69 72 73 74 20 66 6c 61  |ion of first fla|
00050830  73 68 20 63 6f 6c 6f 75  72 3d 3e 6f 73 5f 62 79  |sh colour=>os_by|
00050840  74 65 31 39 35 3e 0a 31  39 36 09 26 43 34 09 3c  |te195>.196.&C4.<|
00050850  52 65 61 64 2f 57 72 69  74 65 20 6b 65 79 62 6f  |Read/Write keybo|
00050860  61 72 64 20 61 75 74 6f  2d 72 65 70 65 61 74 20  |ard auto-repeat |
00050870  64 65 6c 61 79 3d 3e 6f  73 5f 62 79 74 65 31 39  |delay=>os_byte19|
00050880  36 3e 0a 31 39 37 09 26  43 35 09 3c 52 65 61 64  |6>.197.&C5.<Read|
00050890  2f 57 72 69 74 65 20 6b  65 79 62 6f 61 72 64 20  |/Write keyboard |
000508a0  61 75 74 6f 2d 72 65 70  65 61 74 20 72 61 74 65  |auto-repeat rate|
000508b0  3d 3e 6f 73 5f 62 79 74  65 31 39 37 3e 0a 31 39  |=>os_byte197>.19|
000508c0  38 09 26 43 36 09 3c 52  65 61 64 2f 57 72 69 74  |8.&C6.<Read/Writ|
000508d0  65 20 2a 45 78 65 63 20  66 69 6c 65 20 68 61 6e  |e *Exec file han|
000508e0  64 6c 65 3d 3e 6f 73 5f  62 79 74 65 31 39 38 3e  |dle=>os_byte198>|
000508f0  0a 31 39 39 09 26 43 37  09 3c 52 65 61 64 2f 57  |.199.&C7.<Read/W|
00050900  72 69 74 65 20 2a 53 70  6f 6f 6c 20 66 69 6c 65  |rite *Spool file|
00050910  20 68 61 6e 64 6c 65 3d  3e 6f 73 5f 62 79 74 65  | handle=>os_byte|
00050920  31 39 39 3e 0a 32 30 30  09 26 43 38 09 3c 52 65  |199>.200.&C8.<Re|
00050930  61 64 2f 57 72 69 74 65  20 42 72 65 61 6b 20 61  |ad/Write Break a|
00050940  6e 64 20 45 73 63 61 70  65 20 65 66 66 65 63 74  |nd Escape effect|
00050950  3d 3e 6f 73 5f 62 79 74  65 32 30 30 3e 0a 32 30  |=>os_byte200>.20|
00050960  31 09 26 43 39 09 3c 52  65 61 64 2f 57 72 69 74  |1.&C9.<Read/Writ|
00050970  65 20 6b 65 79 62 6f 61  72 64 20 64 69 73 61 62  |e keyboard disab|
00050980  6c 65 20 66 6c 61 67 3d  3e 6f 73 5f 62 79 74 65  |le flag=>os_byte|
00050990  32 30 31 3e 0a 32 30 32  09 26 43 41 09 3c 52 65  |201>.202.&CA.<Re|
000509a0  61 64 2f 57 72 69 74 65  20 6b 65 79 62 6f 61 72  |ad/Write keyboar|
000509b0  64 20 73 74 61 74 75 73  20 62 79 74 65 3d 3e 6f  |d status byte=>o|
000509c0  73 5f 62 79 74 65 32 30  32 3e 0a 32 30 33 09 26  |s_byte202>.203.&|
000509d0  43 42 09 3c 52 65 61 64  2f 57 72 69 74 65 20 73  |CB.<Read/Write s|
000509e0  65 72 69 61 6c 20 69 6e  70 75 74 20 62 75 66 66  |erial input buff|
000509f0  65 72 20 6d 69 6e 69 6d  75 6d 20 73 70 61 63 65  |er minimum space|
00050a00  3d 3e 6f 73 5f 62 79 74  65 32 30 33 3e 0a 32 30  |=>os_byte203>.20|
00050a10  34 09 26 43 43 09 3c 52  65 61 64 2f 57 72 69 74  |4.&CC.<Read/Writ|
00050a20  65 20 73 65 72 69 61 6c  20 69 67 6e 6f 72 65 20  |e serial ignore |
00050a30  66 6c 61 67 3d 3e 6f 73  5f 62 79 74 65 32 30 34  |flag=>os_byte204|
00050a40  3e 0a 32 31 31 09 26 44  33 09 3c 52 65 61 64 2f  |>.211.&D3.<Read/|
00050a50  57 72 69 74 65 20 62 65  6c 6c 20 63 68 61 6e 6e  |Write bell chann|
00050a60  65 6c 3d 3e 6f 73 5f 62  79 74 65 32 31 31 3e 0a  |el=>os_byte211>.|
00050a70  32 31 32 09 26 44 34 09  3c 52 65 61 64 2f 57 72  |212.&D4.<Read/Wr|
00050a80  69 74 65 20 62 65 6c 6c  20 73 6f 75 6e 64 20 76  |ite bell sound v|
00050a90  6f 6c 75 6d 65 3d 3e 6f  73 5f 62 79 74 65 32 31  |olume=>os_byte21|
00050aa0  32 3e 0a 32 31 33 09 26  44 35 09 3c 52 65 61 64  |2>.213.&D5.<Read|
00050ab0  2f 57 72 69 74 65 20 62  65 6c 6c 20 66 72 65 71  |/Write bell freq|
00050ac0  75 65 6e 63 79 3d 3e 6f  73 5f 62 79 74 65 32 31  |uency=>os_byte21|
00050ad0  33 3e 0a 32 31 34 09 26  44 36 09 3c 52 65 61 64  |3>.214.&D6.<Read|
00050ae0  2f 57 72 69 74 65 20 62  65 6c 6c 20 64 75 72 61  |/Write bell dura|
00050af0  74 69 6f 6e 3d 3e 6f 73  5f 62 79 74 65 32 31 34  |tion=>os_byte214|
00050b00  3e 0a 32 31 36 09 26 44  38 09 3c 52 65 61 64 2f  |>.216.&D8.<Read/|
00050b10  57 72 69 74 65 20 6c 65  6e 67 74 68 20 6f 66 20  |Write length of |
00050b20  66 75 6e 63 74 69 6f 6e  20 6b 65 79 20 73 74 72  |function key str|
00050b30  69 6e 67 3d 3e 6f 73 5f  62 79 74 65 32 31 36 3e  |ing=>os_byte216>|
00050b40  0a 32 31 37 09 26 44 39  09 3c 52 65 61 64 2f 57  |.217.&D9.<Read/W|
00050b50  72 69 74 65 20 70 61 67  65 64 20 6d 6f 64 65 20  |rite paged mode |
00050b60  6c 69 6e 65 20 63 6f 75  6e 74 3d 3e 6f 73 5f 62  |line count=>os_b|
00050b70  79 74 65 32 31 37 3e 0a  32 31 38 09 26 44 41 09  |yte217>.218.&DA.|
00050b80  3c 52 65 61 64 2f 57 72  69 74 65 20 62 79 74 65  |<Read/Write byte|
00050b90  73 20 69 6e 20 56 44 55  20 71 75 65 75 65 3d 3e  |s in VDU queue=>|
00050ba0  6f 73 5f 62 79 74 65 32  31 38 3e 0a 32 31 39 09  |os_byte218>.219.|
00050bb0  26 44 42 09 3c 52 65 61  64 2f 57 72 69 74 65 20  |&DB.<Read/Write |
00050bc0  54 61 62 20 6b 65 79 20  63 6f 64 65 3d 3e 6f 73  |Tab key code=>os|
00050bd0  5f 62 79 74 65 32 31 39  3e 0a 32 32 30 09 26 44  |_byte219>.220.&D|
00050be0  43 09 3c 52 65 61 64 2f  57 72 69 74 65 20 65 73  |C.<Read/Write es|
00050bf0  63 61 70 65 20 63 68 61  72 61 63 74 65 72 3d 3e  |cape character=>|
00050c00  6f 73 5f 62 79 74 65 32  32 30 3e 0a 32 32 31 09  |os_byte220>.221.|
00050c10  26 44 44 09 3c 52 65 61  64 2f 57 72 69 74 65 20  |&DD.<Read/Write |
00050c20  69 6e 74 65 72 70 72 65  74 61 74 69 6f 6e 20 6f  |interpretation o|
00050c30  66 20 69 6e 70 75 74 20  76 61 6c 75 65 73 20 26  |f input values &|
00050c40  43 30 2d 26 43 46 3d 3e  6f 73 5f 62 79 74 65 32  |C0-&CF=>os_byte2|
00050c50  32 31 3e 0a 32 32 32 09  26 44 45 09 3c 52 65 61  |21>.222.&DE.<Rea|
00050c60  64 2f 57 72 69 74 65 20  69 6e 74 65 72 70 72 65  |d/Write interpre|
00050c70  74 61 74 69 6f 6e 20 6f  66 20 69 6e 70 75 74 20  |tation of input |
00050c80  76 61 6c 75 65 73 20 26  44 30 2d 26 44 46 3d 3e  |values &D0-&DF=>|
00050c90  6f 73 5f 62 79 74 65 32  32 31 3e 0a 32 32 33 09  |os_byte221>.223.|
00050ca0  26 44 46 09 3c 52 65 61  64 2f 57 72 69 74 65 20  |&DF.<Read/Write |
00050cb0  69 6e 74 65 72 70 72 65  74 61 74 69 6f 6e 20 6f  |interpretation o|
00050cc0  66 20 69 6e 70 75 74 20  76 61 6c 75 65 73 20 26  |f input values &|
00050cd0  45 30 2d 26 45 46 3d 3e  6f 73 5f 62 79 74 65 32  |E0-&EF=>os_byte2|
00050ce0  32 31 3e 0a 32 32 34 09  26 45 30 09 3c 52 65 61  |21>.224.&E0.<Rea|
00050cf0  64 2f 57 72 69 74 65 20  69 6e 74 65 72 70 72 65  |d/Write interpre|
00050d00  74 61 74 69 6f 6e 20 6f  66 20 69 6e 70 75 74 20  |tation of input |
00050d10  76 61 6c 75 65 73 20 26  46 30 2d 26 46 46 3d 3e  |values &F0-&FF=>|
00050d20  6f 73 5f 62 79 74 65 32  32 31 3e 0a 32 32 35 09  |os_byte221>.225.|
00050d30  26 45 31 09 3c 52 65 61  64 2f 57 72 69 74 65 20  |&E1.<Read/Write |
00050d40  66 75 6e 63 74 69 6f 6e  20 6b 65 79 20 69 6e 74  |function key int|
00050d50  65 72 70 72 65 74 61 74  69 6f 6e 3d 3e 6f 73 5f  |erpretation=>os_|
00050d60  62 79 74 65 32 32 31 3e  0a 32 32 36 09 26 45 32  |byte221>.226.&E2|
00050d70  09 3c 52 65 61 64 2f 57  72 69 74 65 20 53 68 69  |.<Read/Write Shi|
00050d80  66 74 20 46 6e 20 69 6e  74 65 72 70 72 65 74 61  |ft Fn interpreta|
00050d90  74 69 6f 6e 3d 3e 6f 73  5f 62 79 74 65 32 32 31  |tion=>os_byte221|
00050da0  3e 0a 32 32 37 09 26 45  33 09 3c 52 65 61 64 2f  |>.227.&E3.<Read/|
00050db0  57 72 69 74 65 20 43 74  72 6c 20 46 6e 20 69 6e  |Write Ctrl Fn in|
00050dc0  74 65 72 70 72 65 74 61  74 69 6f 6e 3d 3e 6f 73  |terpretation=>os|
00050dd0  5f 62 79 74 65 32 32 31  3e 0a 32 32 38 09 26 45  |_byte221>.228.&E|
00050de0  34 09 3c 52 65 61 64 2f  57 72 69 74 65 20 53 68  |4.<Read/Write Sh|
00050df0  69 66 74 20 43 74 72 6c  20 46 6e 20 69 6e 74 65  |ift Ctrl Fn inte|
00050e00  72 70 72 65 74 61 74 69  6f 6e 3d 3e 6f 73 5f 62  |rpretation=>os_b|
00050e10  79 74 65 32 32 31 3e 0a  32 32 39 09 26 45 35 09  |yte221>.229.&E5.|
00050e20  3c 52 65 61 64 2f 57 72  69 74 65 20 65 73 63 61  |<Read/Write esca|
00050e30  70 65 20 6b 65 79 20 73  74 61 74 75 73 3d 3e 6f  |pe key status=>o|
00050e40  73 5f 62 79 74 65 32 32  39 3e 0a 32 33 30 09 26  |s_byte229>.230.&|
00050e50  45 36 09 3c 52 65 61 64  2f 57 72 69 74 65 20 65  |E6.<Read/Write e|
00050e60  73 63 61 70 65 20 65 66  66 65 63 74 73 3d 3e 6f  |scape effects=>o|
00050e70  73 5f 62 79 74 65 32 33  30 3e 0a 32 33 36 09 26  |s_byte230>.236.&|
00050e80  45 43 09 3c 52 65 61 64  2f 57 72 69 74 65 20 63  |EC.<Read/Write c|
00050e90  68 61 72 61 63 74 65 72  20 64 65 73 74 69 6e 61  |haracter destina|
00050ea0  74 69 6f 6e 20 73 74 61  74 75 73 3d 3e 6f 73 5f  |tion status=>os_|
00050eb0  62 79 74 65 32 33 36 3e  0a 32 33 37 09 26 45 44  |byte236>.237.&ED|
00050ec0  09 3c 52 65 61 64 2f 57  72 69 74 65 20 63 75 72  |.<Read/Write cur|
00050ed0  73 6f 72 20 6b 65 79 20  73 74 61 74 75 73 3d 3e  |sor key status=>|
00050ee0  6f 73 5f 62 79 74 65 32  33 37 3e 0a 32 33 38 09  |os_byte237>.238.|
00050ef0  26 45 45 09 3c 52 65 61  64 2f 57 72 69 74 65 20  |&EE.<Read/Write |
00050f00  6e 75 6d 65 72 69 63 20  6b 65 79 70 61 64 20 69  |numeric keypad i|
00050f10  6e 74 65 72 70 72 65 74  61 74 69 6f 6e 3d 3e 6f  |nterpretation=>o|
00050f20  73 5f 62 79 74 65 32 33  38 3e 0a 32 34 30 09 26  |s_byte238>.240.&|
00050f30  46 30 09 3c 52 65 61 64  20 63 6f 75 6e 74 72 79  |F0.<Read country|
00050f40  20 6e 75 6d 62 65 72 3d  3e 6f 73 5f 62 79 74 65  | number=>os_byte|
00050f50  32 34 30 3e 0a 32 34 31  09 26 46 31 09 3c 52 65  |240>.241.&F1.<Re|
00050f60  61 64 2f 57 72 69 74 65  20 75 73 65 72 20 66 6c  |ad/Write user fl|
00050f70  61 67 3d 3e 6f 73 5f 62  79 74 65 32 34 31 3e 0a  |ag=>os_byte241>.|
00050f80  32 34 32 09 26 46 32 09  3c 52 65 61 64 20 73 65  |242.&F2.<Read se|
00050f90  72 69 61 6c 20 62 61 75  64 20 72 61 74 65 73 3d  |rial baud rates=|
00050fa0  3e 6f 73 5f 62 79 74 65  32 34 32 3e 0a 32 34 33  |>os_byte242>.243|
00050fb0  09 26 46 33 09 3c 52 65  61 64 20 74 69 6d 65 72  |.&F3.<Read timer|
00050fc0  20 73 77 69 74 63 68 20  73 74 61 74 65 3d 3e 6f  | switch state=>o|
00050fd0  73 5f 62 79 74 65 32 34  33 3e 0a 32 34 35 09 26  |s_byte243>.245.&|
00050fe0  46 35 09 3c 52 65 61 64  2f 57 72 69 74 65 20 70  |F5.<Read/Write p|
00050ff0  72 69 6e 74 65 72 20 64  72 69 76 65 72 20 74 79  |rinter driver ty|
00051000  70 65 3d 3e 6f 73 5f 62  79 74 65 32 34 35 3e 0a  |pe=>os_byte245>.|
00051010  32 34 36 09 26 46 36 09  3c 52 65 61 64 2f 57 72  |246.&F6.<Read/Wr|
00051020  69 74 65 20 70 72 69 6e  74 65 72 20 69 67 6e 6f  |ite printer igno|
00051030  72 65 20 63 68 61 72 61  63 74 65 72 3d 3e 6f 73  |re character=>os|
00051040  5f 62 79 74 65 32 34 36  3e 0a 32 34 37 09 26 46  |_byte246>.247.&F|
00051050  37 09 3c 52 65 61 64 2f  57 72 69 74 65 20 42 72  |7.<Read/Write Br|
00051060  65 61 6b 20 6b 65 79 20  61 63 74 69 6f 6e 73 3d  |eak key actions=|
00051070  3e 6f 73 5f 62 79 74 65  32 34 37 3e 0a 32 35 30  |>os_byte247>.250|
00051080  09 26 46 41 09 3c 52 65  61 64 20 56 44 55 20 64  |.&FA.<Read VDU d|
00051090  72 69 76 65 72 20 73 63  72 65 65 6e 20 62 61 6e  |river screen ban|
000510a0  6b 20 6e 75 6d 62 65 72  3d 3e 6f 73 5f 62 79 74  |k number=>os_byt|
000510b0  65 32 35 30 3e 0a 32 35  31 09 26 46 42 09 3c 52  |e250>.251.&FB.<R|
000510c0  65 61 64 20 64 69 73 70  6c 61 79 20 73 63 72 65  |ead display scre|
000510d0  65 6e 20 62 61 6e 6b 20  6e 75 6d 62 65 72 3d 3e  |en bank number=>|
000510e0  6f 73 5f 62 79 74 65 32  35 31 3e 0a 32 35 33 09  |os_byte251>.253.|
000510f0  26 46 44 09 3c 52 65 61  64 20 6c 61 73 74 20 62  |&FD.<Read last b|
00051100  72 65 61 6b 20 74 79 70  65 3d 3e 6f 73 5f 62 79  |reak type=>os_by|
00051110  74 65 32 35 33 3e 0a 32  35 34 09 26 46 45 09 3c  |te253>.254.&FE.<|
00051120  53 65 74 20 65 66 66 65  63 74 20 6f 66 20 53 68  |Set effect of Sh|
00051130  69 66 74 2d 43 74 72 6c  20 6f 6e 20 6e 75 6d 65  |ift-Ctrl on nume|
00051140  72 69 63 20 6b 65 79 70  61 64 3d 3e 6f 73 5f 62  |ric keypad=>os_b|
00051150  79 74 65 32 35 34 3e 0a  32 35 35 09 26 46 46 09  |yte254>.255.&FF.|
00051160  3c 52 65 61 64 2f 57 72  69 74 65 20 62 6f 6f 74  |<Read/Write boot|
00051170  20 6f 70 74 69 6f 6e 3d  3e 6f 73 5f 62 79 74 65  | option=>os_byte|
00051180  32 35 35 3e 0a 00 00 00  44 41 54 41 76 01 00 00  |255>....DATAv...|
00051190  4f 53 5f 42 79 74 65 20  31 33 20 20 44 69 73 61  |OS_Byte 13  Disa|
000511a0  62 6c 65 20 65 76 65 6e  74 0a 23 50 61 72 65 6e  |ble event.#Paren|
000511b0  74 20 4f 53 5f 42 79 74  65 49 6e 64 65 78 0a 3d  |t OS_ByteIndex.=|
000511c0  3e 09 52 30 20 3d 09 31  33 20 28 26 30 44 29 0a  |>.R0 =.13 (&0D).|
000511d0  09 52 31 20 3d 09 3c 65  76 65 6e 74 20 6e 75 6d  |.R1 =.<event num|
000511e0  62 65 72 3d 3e 65 76 65  6e 74 5f 69 6e 64 65 78  |ber=>event_index|
000511f0  3e 0a 3c 3d 09 52 30 20  70 72 65 73 65 72 76 65  |>.<=.R0 preserve|
00051200  64 0a 09 52 31 20 3d 09  6f 6c 64 20 65 6e 61 62  |d..R1 =.old enab|
00051210  6c 65 20 73 74 61 74 65  20 28 30 20 6d 65 61 6e  |le state (0 mean|
00051220  73 20 77 61 73 20 61 6c  72 65 61 64 79 20 64 69  |s was already di|
00051230  73 61 62 6c 65 64 29 0a  09 52 32 20 63 6f 72 72  |sabled)..R2 corr|
00051240  75 70 74 65 64 0a 0a 54  68 69 73 20 63 61 6c 6c  |upted..This call|
00051250  20 64 65 63 72 65 61 73  65 73 20 74 68 65 20 63  | decreases the c|
00051260  6f 75 6e 74 20 6f 66 20  65 6e 61 62 6c 65 20 72  |ount of enable r|
00051270  65 71 75 65 73 74 73 20  66 6f 72 20 61 20 70 61  |equests for a pa|
00051280  72 74 69 63 75 6c 61 72  20 65 76 65 6e 74 20 62  |rticular event b|
00051290  65 69 6e 67 20 63 61 6c  6c 65 64 20 74 68 6f 75  |eing called thou|
000512a0  67 68 20 74 68 65 20 3c  45 76 65 6e 74 20 56 65  |gh the <Event Ve|
000512b0  63 74 6f 72 3d 3e 76 65  63 74 6f 72 5f 65 76 65  |ctor=>vector_eve|
000512c0  6e 74 76 3e 2e 20 57 68  65 6e 20 74 68 65 20 63  |ntv>. When the c|
000512d0  6f 75 6e 74 20 72 65 61  63 68 65 73 20 30 20 74  |ount reaches 0 t|
000512e0  68 65 20 65 76 65 6e 74  20 69 73 20 61 63 74 75  |he event is actu|
000512f0  61 6c 6c 79 20 64 69 73  61 62 6c 65 64 2e 00 00  |ally disabled...|
00051300  44 41 54 41 2f 02 00 00  4f 53 5f 42 79 74 65 20  |DATA/...OS_Byte |
00051310  31 34 20 20 45 6e 61 62  6c 65 20 65 76 65 6e 74  |14  Enable event|
00051320  0a 23 50 61 72 65 6e 74  20 4f 53 5f 42 79 74 65  |.#Parent OS_Byte|
00051330  49 6e 64 65 78 0a 3d 3e  09 52 30 20 3d 09 31 34  |Index.=>.R0 =.14|
00051340  20 28 26 30 45 29 0a 09  52 31 20 3d 09 3c 65 76  | (&0E)..R1 =.<ev|
00051350  65 6e 74 20 6e 75 6d 62  65 72 3d 3e 65 76 65 6e  |ent number=>even|
00051360  74 5f 69 6e 64 65 78 3e  0a 3c 3d 09 52 30 20 70  |t_index>.<=.R0 p|
00051370  72 65 73 65 72 76 65 64  0a 09 52 31 20 3d 09 6f  |reserved..R1 =.o|
00051380  6c 64 20 65 6e 61 62 6c  65 20 73 74 61 74 65 20  |ld enable state |
00051390  28 30 20 6d 65 61 6e 73  20 70 72 65 76 69 6f 75  |(0 means previou|
000513a0  73 6c 79 20 64 69 73 61  62 6c 65 64 29 0a 09 52  |sly disabled)..R|
000513b0  32 20 63 6f 72 72 75 70  74 65 64 0a 0a 54 68 69  |2 corrupted..Thi|
000513c0  73 20 63 61 6c 6c 20 65  6e 61 62 6c 65 73 20 61  |s call enables a|
000513d0  20 70 61 72 74 69 63 75  6c 61 72 20 65 76 65 6e  | particular even|
000513e0  74 20 73 6f 20 74 68 61  74 20 69 74 20 69 73 20  |t so that it is |
000513f0  62 65 69 6e 67 20 63 61  6c 6c 65 64 20 74 68 72  |being called thr|
00051400  6f 75 67 68 20 74 68 65  20 3c 45 76 65 6e 74 20  |ough the <Event |
00051410  56 65 63 74 6f 72 3d 3e  76 65 63 74 6f 72 5f 65  |Vector=>vector_e|
00051420  76 65 6e 74 76 3e 2e 20  41 20 63 6f 75 6e 74 20  |ventv>. A count |
00051430  69 73 20 6d 61 69 6e 74  61 69 6e 65 64 20 6f 66  |is maintained of|
00051440  20 74 68 65 20 6e 75 6d  62 65 72 20 6f 66 20 65  | the number of e|
00051450  6e 61 62 6c 65 73 20 61  6e 64 20 64 69 73 61 62  |nables and disab|
00051460  6c 65 73 20 73 65 74 20  73 6f 20 74 68 61 74 20  |les set so that |
00051470  6d 75 6c 74 69 70 6c 65  20 72 6f 75 74 69 6e 65  |multiple routine|
00051480  73 20 65 6e 61 62 6c 69  6e 67 20 61 6e 64 20 64  |s enabling and d|
00051490  69 73 61 62 6c 69 6e 67  20 65 76 65 6e 74 73 20  |isabling events |
000514a0  61 72 65 20 68 61 6e 64  6c 65 64 20 63 6f 72 72  |are handled corr|
000514b0  65 63 74 6c 79 2e 20 41  6e 20 65 76 65 6e 74 20  |ectly. An event |
000514c0  77 69 6c 6c 20 6f 6e 6c  79 20 62 65 20 64 69 73  |will only be dis|
000514d0  61 62 6c 65 64 20 61 66  74 65 72 20 65 71 75 61  |abled after equa|
000514e0  6c 20 6e 75 6d 62 65 72  73 20 6f 66 20 3c 64 69  |l numbers of <di|
000514f0  73 61 62 6c 65 20 65 76  65 6e 74 3d 3e 4f 53 5f  |sable event=>OS_|
00051500  42 79 74 65 30 31 33 3e  20 61 6e 64 20 65 6e 61  |Byte013> and ena|
00051510  62 6c 65 20 65 76 65 6e  74 20 63 61 6c 6c 73 20  |ble event calls |
00051520  68 61 76 65 20 62 65 65  6e 20 6d 61 64 65 2e 00  |have been made..|
00051530  44 41 54 41 ca 00 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00051540  31 36 31 20 20 52 65 61  64 20 43 4d 4f 53 20 52  |161  Read CMOS R|
00051550  41 4d 0a 23 50 61 72 65  6e 74 20 4f 53 5f 42 79  |AM.#Parent OS_By|
00051560  74 65 49 6e 64 65 78 0a  3d 3e 09 52 30 20 3d 09  |teIndex.=>.R0 =.|
00051570  31 36 31 20 28 26 41 31  29 0a 09 52 31 20 3d 09  |161 (&A1)..R1 =.|
00051580  3c 62 79 74 65 20 6e 75  6d 62 65 72 3d 3e 6f 73  |<byte number=>os|
00051590  5f 62 79 74 65 63 6d 6f  73 3e 0a 0a 3c 3d 09 52  |_bytecmos>..<=.R|
000515a0  32 20 3d 09 76 61 6c 75  65 0a 0a 54 68 69 73 20  |2 =.value..This |
000515b0  63 61 6c 6c 20 72 65 61  64 73 20 74 68 65 20 62  |call reads the b|
000515c0  61 74 74 65 72 79 20 62  61 63 6b 65 64 20 52 41  |attery backed RA|
000515d0  4d 20 75 73 65 64 20 74  6f 20 73 74 6f 72 65 20  |M used to store |
000515e0  63 6f 6e 66 69 67 75 72  61 74 69 6f 6e 20 69 6e  |configuration in|
000515f0  66 6f 72 6d 61 74 69 6f  6e 2e 00 00 44 41 54 41  |formation...DATA|
00051600  43 01 00 00 4f 53 5f 42  79 74 65 20 31 36 32 20  |C...OS_Byte 162 |
00051610  20 57 72 69 74 65 20 43  4d 4f 53 20 52 41 4d 0a  | Write CMOS RAM.|
00051620  23 50 61 72 65 6e 74 20  4f 53 5f 42 79 74 65 49  |#Parent OS_ByteI|
00051630  6e 64 65 78 0a 3d 3e 09  52 30 20 3d 09 31 36 32  |ndex.=>.R0 =.162|
00051640  20 28 26 41 32 29 0a 09  52 31 20 3d 09 3c 62 79  | (&A2)..R1 =.<by|
00051650  74 65 20 6e 75 6d 62 65  72 3d 3e 6f 73 5f 62 79  |te number=>os_by|
00051660  74 65 63 6d 6f 73 3e 0a  09 52 32 20 3d 09 76 61  |tecmos>..R2 =.va|
00051670  6c 75 65 0a 0a 54 68 69  73 20 63 61 6c 6c 20 77  |lue..This call w|
00051680  72 69 74 65 73 20 74 6f  20 74 68 65 20 62 61 74  |rites to the bat|
00051690  74 65 72 79 20 62 61 63  6b 65 64 20 52 41 4d 20  |tery backed RAM |
000516a0  75 73 65 64 20 74 6f 20  73 74 6f 72 65 20 63 6f  |used to store co|
000516b0  6e 66 69 67 75 72 61 74  69 6f 6e 20 69 6e 66 6f  |nfiguration info|
000516c0  72 6d 61 74 69 6f 6e 2e  0a 0a 4e 6f 74 65 3a 20  |rmation...Note: |
000516d0  49 66 20 74 68 65 20 62  79 74 65 20 79 6f 75 20  |If the byte you |
000516e0  61 72 65 20 73 65 74 74  69 6e 67 20 63 6f 6e 74  |are setting cont|
000516f0  61 69 6e 73 20 6d 75 6c  74 69 70 6c 65 20 62 69  |ains multiple bi|
00051700  74 73 20 74 68 65 6e 20  79 6f 75 20 6d 75 73 74  |ts then you must|
00051710  20 2a 6f 6e 6c 79 2a 20  6d 6f 64 69 66 79 20 74  | *only* modify t|
00051720  68 6f 73 65 20 62 69 74  73 20 79 6f 75 20 72 65  |hose bits you re|
00051730  71 75 69 72 65 20 74 6f  20 61 6c 74 65 72 2e 00  |quire to alter..|
00051740  44 49 52 24 0c 03 00 00  0c 03 00 00 4c 1a 05 00  |DIR$........L...|
00051750  47 fd ff ff a4 53 1c 1d  54 10 00 00 13 00 00 00  |G....S..T.......|
00051760  00 00 00 00 21 52 6f 6f  74 00 00 00 a0 2a 05 00  |....!Root....*..|
00051770  47 fd ff ff b2 a9 1b 1d  6e 00 00 00 13 00 00 00  |G.......n.......|
00051780  00 00 00 00 31 30 00 00  10 2b 05 00 46 fd ff ff  |....10...+..F...|
00051790  98 8a 59 f5 e7 00 00 00  13 00 00 00 00 00 00 00  |..Y.............|
000517a0  31 31 00 00 f8 2b 05 00  46 fd ff ff 33 ce 59 f5  |11...+..F...3.Y.|
000517b0  96 00 00 00 13 00 00 00  00 00 00 00 31 35 00 00  |............15..|
000517c0  90 2c 05 00 46 fd ff ff  86 df 59 f5 82 00 00 00  |.,..F.....Y.....|
000517d0  13 00 00 00 00 00 00 00  31 36 00 00 14 2d 05 00  |........16...-..|
000517e0  47 fd ff ff cc e6 1b 1d  bc 00 00 00 13 00 00 00  |G...............|
000517f0  00 00 00 00 31 37 00 00  d0 2d 05 00 46 fd ff ff  |....17...-..F...|
00051800  8d 10 69 4d cd 00 00 00  13 00 00 00 00 00 00 00  |..iM............|
00051810  32 38 00 00 a0 2e 05 00  47 fd ff ff 9f 30 1c 1d  |28......G....0..|
00051820  d8 01 00 00 13 00 00 00  00 00 00 00 31 33 32 00  |............132.|
00051830  78 30 05 00 46 fd ff ff  23 aa 59 f5 70 01 00 00  |x0..F...#.Y.p...|
00051840  13 00 00 00 00 00 00 00  31 33 33 00 e8 31 05 00  |........133..1..|
00051850  46 fd ff ff a3 2d 68 4d  87 00 00 00 13 00 00 00  |F....-hM........|
00051860  00 00 00 00 31 33 35 00  70 32 05 00 46 fd ff ff  |....135.p2..F...|
00051870  fa 05 66 4d 89 00 00 00  13 00 00 00 00 00 00 00  |..fM............|
00051880  31 33 36 00 fc 32 05 00  47 fd ff ff b1 5e 1c 1d  |136..2..G....^..|
00051890  5c 00 00 00 13 00 00 00  00 00 00 00 31 34 30 00  |\...........140.|
000518a0  58 33 05 00 46 fd ff ff  0e 4f 66 4d 5e 00 00 00  |X3..F....OfM^...|
000518b0  13 00 00 00 00 00 00 00  31 34 38 00 b8 33 05 00  |........148..3..|
000518c0  47 fd ff ff 28 86 1c 1d  3f 01 00 00 13 00 00 00  |G...(...?.......|
000518d0  00 00 00 00 31 38 38 00  f8 34 05 00 46 fd ff ff  |....188..4..F...|
000518e0  cf b2 66 4d b2 00 00 00  13 00 00 00 00 00 00 00  |..fM............|
000518f0  31 39 33 00 ac 35 05 00  47 fd ff ff 63 b5 1c 1d  |193..5..G...c...|
00051900  fe 00 00 00 13 00 00 00  00 00 00 00 31 39 35 00  |............195.|
00051910  ac 36 05 00 46 fd ff ff  75 ed 69 4d e1 00 00 00  |.6..F...u.iM....|
00051920  13 00 00 00 00 00 00 00  31 39 38 00 90 37 05 00  |........198..7..|
00051930  46 fd ff ff 93 1f 67 4d  50 00 00 00 13 00 00 00  |F.....gMP.......|
00051940  00 00 00 00 32 30 38 00  e0 37 05 00 46 fd ff ff  |....208..7..F...|
00051950  29 da 01 4f c6 00 00 00  13 00 00 00 00 00 00 00  |)..O............|
00051960  32 31 35 00 a8 38 05 00  46 fd ff ff be 7c 67 4d  |215..8..F....|gM|
00051970  c0 00 00 00 13 00 00 00  00 00 00 00 32 32 30 00  |............220.|
00051980  68 39 05 00 46 fd ff ff  39 1f 69 4d 57 00 00 00  |h9..F...9.iMW...|
00051990  13 00 00 00 00 00 00 00  32 38 61 00 c0 39 05 00  |........28a..9..|
000519a0  46 fd ff ff ad 38 69 4d  55 00 00 00 13 00 00 00  |F....8iMU.......|
000519b0  00 00 00 00 32 39 00 00  18 3a 05 00 46 fd ff ff  |....29...:..F...|
000519c0  65 fe 69 4d 5f 00 00 00  13 00 00 00 00 00 00 00  |e.iM_...........|
000519d0  64 69 73 70 6c 61 79 00  78 3a 05 00 46 fd ff ff  |display.x:..F...|
000519e0  57 11 6a 4d 6c 00 00 00  13 00 00 00 00 00 00 00  |W.jMl...........|
000519f0  73 6f 72 74 00 00 00 00  e4 3a 05 00 46 fd ff ff  |sort.....:..F...|
00051a00  09 c8 a0 4d 47 01 00 00  13 00 00 00 00 00 00 00  |...MG...........|
00051a10  31 39 37 00 2c 3c 05 00  46 fd ff ff 12 04 02 4f  |197.,<..F......O|
00051a20  cf 00 00 00 13 00 00 00  00 00 00 00 32 31 36 00  |............216.|
00051a30  fc 3c 05 00 48 fd ff ff  66 19 d6 08 5b 00 00 00  |.<..H...f...[...|
00051a40  13 00 00 00 00 00 00 00  32 34 00 00 44 41 54 41  |........24..DATA|
00051a50  54 10 00 00 4f 53 5f 42  79 74 65 20 43 4d 4f 53  |T...OS_Byte CMOS|
00051a60  20 73 65 74 74 69 6e 67  73 0a 30 09 26 30 30 09  | settings.0.&00.|
00051a70  45 63 6f 6e 65 74 20 73  74 61 74 69 6f 6e 20 6e  |Econet station n|
00051a80  75 6d 62 65 72 0a 31 09  26 30 31 09 45 63 6f 6e  |umber.1.&01.Econ|
00051a90  65 74 20 66 69 6c 65 73  65 72 76 65 72 20 73 74  |et fileserver st|
00051aa0  61 74 69 6f 6e 20 6e 75  6d 62 65 72 2c 20 30 20  |ation number, 0 |
00051ab0  66 6f 72 20 6e 61 6d 65  0a 32 09 26 30 32 09 45  |for name.2.&02.E|
00051ac0  63 6f 6e 65 74 20 66 69  6c 65 73 65 72 76 65 72  |conet fileserver|
00051ad0  20 6e 65 74 77 6f 72 6b  20 6e 75 6d 62 65 72 2f  | network number/|
00051ae0  6e 61 6d 65 0a 33 09 26  30 33 09 45 63 6f 6e 65  |name.3.&03.Econe|
00051af0  74 20 70 72 69 6e 74 65  72 20 73 65 72 76 65 72  |t printer server|
00051b00  20 73 74 61 74 69 6f 6e  20 6e 75 6d 62 65 72 2c  | station number,|
00051b10  20 30 20 66 6f 72 20 6e  61 6d 65 0a 34 09 26 30  | 0 for name.4.&0|
00051b20  34 09 45 63 6f 6e 65 74  20 70 72 69 6e 74 65 72  |4.Econet printer|
00051b30  20 73 65 72 76 65 72 20  6e 65 74 77 6f 72 6b 20  | server network |
00051b40  6e 75 6d 62 65 72 2f 6e  61 6d 65 0a 35 09 26 30  |number/name.5.&0|
00051b50  35 09 46 69 6c 69 6e 67  20 73 79 73 74 65 6d 20  |5.Filing system |
00051b60  6d 6f 64 75 6c 65 0a 36  09 26 30 36 09 55 6e 70  |module.6.&06.Unp|
00051b70  6c 75 67 67 65 64 20 6d  6f 64 75 6c 65 73 20 62  |lugged modules b|
00051b80  79 74 65 20 30 0a 37 09  26 30 37 09 55 6e 70 6c  |yte 0.7.&07.Unpl|
00051b90  75 67 67 65 64 20 6d 6f  64 75 6c 65 73 20 62 79  |ugged modules by|
00051ba0  74 65 20 31 0a 31 30 09  26 30 41 09 3c 4d 69 73  |te 1.10.&0A.<Mis|
00051bb0  63 20 6d 6f 64 65 20 64  61 74 61 3d 3e 6f 73 5f  |c mode data=>os_|
00051bc0  62 79 74 65 63 6d 6f 73  31 30 3e 0a 31 31 09 26  |bytecmos10>.11.&|
00051bd0  30 42 09 3c 44 72 69 76  65 2f 43 61 70 73 2f 4d  |0B.<Drive/Caps/M|
00051be0  6f 75 6e 74 3d 3e 6f 73  5f 62 79 74 65 63 6d 6f  |ount=>os_bytecmo|
00051bf0  73 31 31 3e 0a 31 32 09  26 30 43 09 4b 65 79 62  |s11>.12.&0C.Keyb|
00051c00  6f 61 72 64 20 61 75 74  6f 2d 72 65 70 65 61 74  |oard auto-repeat|
00051c10  20 64 65 6c 61 79 0a 31  33 09 26 30 44 09 4b 65  | delay.13.&0D.Ke|
00051c20  79 62 6f 61 72 64 20 61  75 74 6f 2d 72 65 70 65  |yboard auto-repe|
00051c30  61 74 20 74 69 6d 65 0a  31 34 09 26 30 45 09 50  |at time.14.&0E.P|
00051c40  72 69 6e 74 65 72 20 69  67 6e 6f 72 65 20 63 68  |rinter ignore ch|
00051c50  61 72 61 63 74 65 72 0a  31 35 09 26 30 46 09 3c  |aracter.15.&0F.<|
00051c60  4d 69 73 63 20 70 72 69  6e 74 65 72 2f 53 65 72  |Misc printer/Ser|
00051c70  69 61 6c 20 64 61 74 61  3d 3e 6f 73 5f 62 79 74  |ial data=>os_byt|
00051c80  65 63 6d 6f 73 31 35 3e  0a 31 36 09 26 31 30 09  |ecmos15>.16.&10.|
00051c90  3c 4c 6f 75 64 2f 4e 6f  53 63 72 6f 6c 6c 2f 42  |<Loud/NoScroll/B|
00051ca0  6f 6f 74 2f 53 65 72 69  61 6c 20 66 6f 72 6d 61  |oot/Serial forma|
00051cb0  74 3d 3e 6f 73 5f 62 79  74 65 63 6d 6f 73 31 36  |t=>os_bytecmos16|
00051cc0  3e 0a 31 37 09 26 31 31  09 3c 4e 65 74 46 69 6c  |>.17.&11.<NetFil|
00051cd0  65 72 20 66 6c 61 67 73  3d 3e 6f 73 5f 62 79 74  |er flags=>os_byt|
00051ce0  65 63 6d 6f 73 31 37 3e  0a 31 38 09 26 31 32 09  |ecmos17>.18.&12.|
00051cf0  55 6e 70 6c 75 67 67 65  64 20 6d 6f 64 75 6c 65  |Unplugged module|
00051d00  73 20 62 79 74 65 20 32  0a 31 39 09 26 31 33 09  |s byte 2.19.&13.|
00051d10  55 6e 70 6c 75 67 67 65  64 20 6d 6f 64 75 6c 65  |Unplugged module|
00051d20  73 20 62 79 74 65 20 33  0a 32 30 09 26 31 34 09  |s byte 3.20.&14.|
00051d30  55 6e 70 6c 75 67 67 65  64 20 65 78 74 65 6e 73  |Unplugged extens|
00051d40  69 6f 6e 20 6d 6f 64 75  6c 65 73 20 62 79 74 65  |ion modules byte|
00051d50  20 30 0a 32 31 09 26 31  35 09 55 6e 70 6c 75 67  | 0.21.&15.Unplug|
00051d60  67 65 64 20 65 78 74 65  6e 73 69 6f 6e 20 6d 6f  |ged extension mo|
00051d70  64 75 6c 65 73 20 62 79  74 65 20 31 0a 32 32 09  |dules byte 1.22.|
00051d80  26 31 36 09 57 69 6d 70  20 64 6f 75 62 6c 65 20  |&16.Wimp double |
00051d90  63 6c 69 63 6b 20 6d 6f  76 65 0a 32 33 09 26 31  |click move.23.&1|
00051da0  37 09 57 69 6d 70 20 61  75 74 6f 20 6d 65 6e 75  |7.Wimp auto menu|
00051db0  20 64 65 6c 61 79 0a 32  34 09 26 31 38 09 3c 54  | delay.24.&18.<T|
00051dc0  65 72 72 69 74 6f 72 79  3d 3e 6f 73 5f 62 79 74  |erritory=>os_byt|
00051dd0  65 63 6d 6f 73 32 34 3e  0a 32 35 09 26 31 39 09  |ecmos24>.25.&19.|
00051de0  50 72 69 6e 74 65 72 20  62 75 66 66 65 72 20 73  |Printer buffer s|
00051df0  69 7a 65 0a 32 36 09 26  31 41 09 41 44 46 53 20  |ize.26.&1A.ADFS |
00051e00  73 70 69 6e 64 6f 77 6e  20 28 69 6e 20 35 20 73  |spindown (in 5 s|
00051e10  65 63 6f 6e 64 73 29 0a  32 37 09 26 31 42 09 57  |econds).27.&1B.W|
00051e20  69 6d 70 20 6d 65 6e 75  20 64 72 61 67 20 64 65  |imp menu drag de|
00051e30  6c 61 79 0a 32 38 09 26  31 43 09 3c 54 72 75 6e  |lay.28.&1C.<Trun|
00051e40  63 61 74 65 2f 44 72 61  67 41 53 70 72 69 74 65  |cate/DragASprite|
00051e50  2f 46 69 6c 65 72 41 63  74 69 6f 6e 2f 44 69 74  |/FilerAction/Dit|
00051e60  68 65 72 3d 3e 6f 73 5f  62 79 74 65 63 6d 6f 73  |her=>os_bytecmos|
00051e70  32 38 3e 0a 32 39 09 26  31 44 09 3c 4d 6f 75 73  |28>.29.&1D.<Mous|
00051e80  65 20 74 79 70 65 3d 3e  6f 73 5f 62 79 74 65 63  |e type=>os_bytec|
00051e90  6d 6f 73 32 39 3e 0a 31  32 38 09 26 38 30 09 59  |mos29>.128.&80.Y|
00051ea0  65 61 72 20 62 79 74 65  20 30 0a 31 32 39 09 26  |ear byte 0.129.&|
00051eb0  38 31 09 59 65 61 72 20  62 79 74 65 20 31 0a 31  |81.Year byte 1.1|
00051ec0  33 32 09 26 38 34 09 3c  44 75 6d 70 46 6f 72 6d  |32.&84.<DumpForm|
00051ed0  61 74 2f 4d 69 73 63 20  64 61 74 61 3d 3e 6f 73  |at/Misc data=>os|
00051ee0  5f 62 79 74 65 63 6d 6f  73 31 33 32 3e 0a 31 33  |_bytecmos132>.13|
00051ef0  33 09 26 38 35 09 3c 4d  6f 6e 69 74 6f 72 20 64  |3.&85.<Monitor d|
00051f00  61 74 61 3d 3e 6f 73 5f  62 79 74 65 63 6d 6f 73  |ata=>os_bytecmos|
00051f10  31 33 33 3e 0a 31 33 34  09 26 38 36 09 46 6f 6e  |133>.134.&86.Fon|
00051f20  74 20 73 69 7a 65 20 69  6e 20 34 6b 20 75 6e 69  |t size in 4k uni|
00051f30  74 73 0a 31 33 35 09 26  38 37 09 3c 4e 75 6d 62  |ts.135.&87.<Numb|
00051f40  65 72 20 6f 66 20 64 72  69 76 65 73 3d 3e 6f 73  |er of drives=>os|
00051f50  5f 62 79 74 65 63 6d 6f  73 31 33 35 3e 0a 31 33  |_bytecmos135>.13|
00051f60  36 09 26 38 38 09 3c 46  6c 6f 70 70 79 20 73 74  |6.&88.<Floppy st|
00051f70  65 70 20 72 61 74 65 73  3d 3e 6f 73 5f 62 79 74  |ep rates=>os_byt|
00051f80  65 63 6d 6f 73 31 33 36  3e 0a 31 33 37 09 26 38  |ecmos136>.137.&8|
00051f90  39 09 41 44 46 53 20 62  75 66 66 65 72 73 0a 31  |9.ADFS buffers.1|
00051fa0  33 38 09 26 38 41 09 43  44 46 53 20 66 6c 61 67  |38.&8A.CDFS flag|
00051fb0  73 0a 31 33 39 09 26 38  42 09 54 69 6d 65 20 7a  |s.139.&8B.Time z|
00051fc0  6f 6e 65 20 28 31 35 20  6d 69 6e 73 20 61 73 20  |one (15 mins as |
00051fd0  73 69 67 6e 65 64 29 0a  31 34 30 09 26 38 43 09  |signed).140.&8C.|
00051fe0  3c 4e 65 77 4c 6f 6f 6b  20 66 6c 61 67 73 3d 3e  |<NewLook flags=>|
00051ff0  6f 73 5f 62 79 74 65 63  6d 6f 73 31 34 30 3e 0a  |os_bytecmos140>.|
00052000  31 34 31 09 26 38 44 09  50 72 69 6e 74 65 72 20  |141.&8D.Printer |
00052010  64 65 73 74 69 6e 61 74  69 6f 6e 0a 31 34 32 09  |destination.142.|
00052020  26 38 45 09 54 77 69 6e  20 66 6c 61 67 73 0a 31  |&8E.Twin flags.1|
00052030  34 33 09 26 38 46 09 53  63 72 65 65 6e 20 73 69  |43.&8F.Screen si|
00052040  7a 65 0a 31 34 34 09 26  39 30 09 52 41 4d 46 53  |ze.144.&90.RAMFS|
00052050  20 73 69 7a 65 0a 31 34  35 09 26 39 31 09 53 79  | size.145.&91.Sy|
00052060  73 74 65 6d 20 68 65 61  70 20 73 69 7a 65 0a 31  |stem heap size.1|
00052070  34 36 09 26 39 32 09 52  4d 41 20 73 69 7a 65 0a  |46.&92.RMA size.|
00052080  31 34 37 09 26 39 33 09  53 70 72 69 74 65 20 73  |147.&93.Sprite s|
00052090  69 7a 65 0a 31 34 38 09  26 39 34 09 3c 53 6f 75  |ize.148.&94.<Sou|
000520a0  6e 64 44 65 66 61 75 6c  74 3d 3e 6f 73 5f 62 79  |ndDefault=>os_by|
000520b0  74 65 63 6d 6f 73 31 34  38 3e 0a 31 34 39 09 26  |tecmos148>.149.&|
000520c0  39 35 09 42 61 73 69 63  20 65 64 69 74 6f 72 20  |95.Basic editor |
000520d0  66 6c 61 67 73 20 62 79  74 65 20 30 0a 31 35 30  |flags byte 0.150|
000520e0  09 26 39 36 09 42 61 73  69 63 20 65 64 69 74 6f  |.&96.Basic edito|
000520f0  72 20 66 6c 61 67 73 20  62 79 74 65 20 31 0a 31  |r flags byte 1.1|
00052100  35 31 09 26 39 37 09 42  61 73 69 63 20 65 64 69  |51.&97.Basic edi|
00052110  74 6f 72 20 66 6c 61 67  73 20 62 79 74 65 20 32  |tor flags byte 2|
00052120  0a 31 35 32 09 26 39 38  09 42 61 73 69 63 20 65  |.152.&98.Basic e|
00052130  64 69 74 6f 72 20 66 6c  61 67 73 20 62 79 74 65  |ditor flags byte|
00052140  20 33 0a 31 35 33 09 26  39 39 09 45 63 6f 6e 65  | 3.153.&99.Econe|
00052150  74 20 70 72 69 6e 74 65  72 20 73 65 72 76 65 72  |t printer server|
00052160  20 6e 61 6d 65 20 62 79  74 65 20 31 0a 31 35 34  | name byte 1.154|
00052170  09 26 39 41 09 45 63 6f  6e 65 74 20 70 72 69 6e  |.&9A.Econet prin|
00052180  74 65 72 20 73 65 72 76  65 72 20 6e 61 6d 65 20  |ter server name |
00052190  62 79 74 65 20 32 0a 31  35 35 09 26 39 42 09 45  |byte 2.155.&9B.E|
000521a0  63 6f 6e 65 74 20 70 72  69 6e 74 65 72 20 73 65  |conet printer se|
000521b0  72 76 65 72 20 6e 61 6d  65 20 62 79 74 65 20 33  |rver name byte 3|
000521c0  0a 31 35 36 09 26 39 43  09 45 63 6f 6e 65 74 20  |.156.&9C.Econet |
000521d0  70 72 69 6e 74 65 72 20  73 65 72 76 65 72 20 6e  |printer server n|
000521e0  61 6d 65 20 62 79 74 65  20 34 0a 31 35 37 09 26  |ame byte 4.157.&|
000521f0  39 44 09 45 63 6f 6e 65  74 20 70 72 69 6e 74 65  |9D.Econet printe|
00052200  72 20 73 65 72 76 65 72  20 6e 61 6d 65 20 62 79  |r server name by|
00052210  74 65 20 35 0a 31 35 38  09 26 39 45 09 45 63 6f  |te 5.158.&9E.Eco|
00052220  6e 65 74 20 66 69 6c 65  73 65 72 76 65 72 20 6e  |net fileserver n|
00052230  61 6d 65 20 62 79 74 65  20 31 0a 31 35 39 09 26  |ame byte 1.159.&|
00052240  39 46 09 45 63 6f 6e 65  74 20 66 69 6c 65 73 65  |9F.Econet filese|
00052250  72 76 65 72 20 6e 61 6d  65 20 62 79 74 65 20 32  |rver name byte 2|
00052260  0a 31 36 30 09 26 41 30  09 45 63 6f 6e 65 74 20  |.160.&A0.Econet |
00052270  66 69 6c 65 73 65 72 76  65 72 20 6e 61 6d 65 20  |fileserver name |
00052280  62 79 74 65 20 33 0a 31  36 31 09 26 41 31 09 45  |byte 3.161.&A1.E|
00052290  63 6f 6e 65 74 20 66 69  6c 65 73 65 72 76 65 72  |conet fileserver|
000522a0  20 6e 61 6d 65 20 62 79  74 65 20 34 0a 31 36 32  | name byte 4.162|
000522b0  09 26 41 32 09 45 63 6f  6e 65 74 20 66 69 6c 65  |.&A2.Econet file|
000522c0  73 65 72 76 65 72 20 6e  61 6d 65 20 62 79 74 65  |server name byte|
000522d0  20 35 0a 31 36 33 09 26  41 33 09 45 63 6f 6e 65  | 5.163.&A3.Econe|
000522e0  74 20 66 69 6c 65 73 65  72 76 65 72 20 6e 61 6d  |t fileserver nam|
000522f0  65 20 62 79 74 65 20 36  0a 31 36 34 09 26 41 34  |e byte 6.164.&A4|
00052300  09 45 63 6f 6e 65 74 20  66 69 6c 65 73 65 72 76  |.Econet fileserv|
00052310  65 72 20 6e 61 6d 65 20  62 79 74 65 20 37 0a 31  |er name byte 7.1|
00052320  36 35 09 26 41 35 09 45  63 6f 6e 65 74 20 66 69  |65.&A5.Econet fi|
00052330  6c 65 73 65 72 76 65 72  20 6e 61 6d 65 20 62 79  |leserver name by|
00052340  74 65 20 38 0a 31 36 36  09 26 41 36 09 45 63 6f  |te 8.166.&A6.Eco|
00052350  6e 65 74 20 66 69 6c 65  73 65 72 76 65 72 20 6e  |net fileserver n|
00052360  61 6d 65 20 62 79 74 65  20 39 0a 31 36 37 09 26  |ame byte 9.167.&|
00052370  41 37 09 45 63 6f 6e 65  74 20 66 69 6c 65 73 65  |A7.Econet filese|
00052380  72 76 65 72 20 6e 61 6d  65 20 62 79 74 65 20 31  |rver name byte 1|
00052390  30 0a 31 36 38 09 26 41  38 09 45 63 6f 6e 65 74  |0.168.&A8.Econet|
000523a0  20 66 69 6c 65 73 65 72  76 65 72 20 6e 61 6d 65  | fileserver name|
000523b0  20 62 79 74 65 20 31 31  0a 31 36 39 09 26 41 39  | byte 11.169.&A9|
000523c0  09 45 63 6f 6e 65 74 20  66 69 6c 65 73 65 72 76  |.Econet fileserv|
000523d0  65 72 20 6e 61 6d 65 20  62 79 74 65 20 31 32 0a  |er name byte 12.|
000523e0  31 37 30 09 26 41 41 09  45 63 6f 6e 65 74 20 66  |170.&AA.Econet f|
000523f0  69 6c 65 73 65 72 76 65  72 20 6e 61 6d 65 20 62  |ileserver name b|
00052400  79 74 65 20 31 33 0a 31  37 31 09 26 41 42 09 45  |yte 13.171.&AB.E|
00052410  63 6f 6e 65 74 20 66 69  6c 65 73 65 72 76 65 72  |conet fileserver|
00052420  20 6e 61 6d 65 20 62 79  74 65 20 31 34 0a 31 37  | name byte 14.17|
00052430  32 09 26 41 43 09 45 63  6f 6e 65 74 20 66 69 6c  |2.&AC.Econet fil|
00052440  65 73 65 72 76 65 72 20  6e 61 6d 65 20 62 79 74  |eserver name byt|
00052450  65 20 31 35 0a 31 37 33  09 26 41 44 09 55 6e 70  |e 15.173.&AD.Unp|
00052460  6c 75 67 67 65 64 20 6d  6f 64 75 6c 65 73 20 62  |lugged modules b|
00052470  79 74 65 20 34 0a 31 37  34 09 26 41 45 09 55 6e  |yte 4.174.&AE.Un|
00052480  70 6c 75 67 67 65 64 20  6d 6f 64 75 6c 65 73 20  |plugged modules |
00052490  62 79 74 65 20 35 0a 31  37 35 09 26 41 46 09 55  |byte 5.175.&AF.U|
000524a0  6e 70 6c 75 67 67 65 64  20 6d 6f 64 75 6c 65 73  |nplugged modules|
000524b0  20 62 79 74 65 20 36 0a  31 37 36 09 26 42 30 09  | byte 6.176.&B0.|
000524c0  55 6e 70 6c 75 67 67 65  64 20 6d 6f 64 75 6c 65  |Unplugged module|
000524d0  73 20 62 79 74 65 20 37  0a 31 37 37 09 26 42 31  |s byte 7.177.&B1|
000524e0  09 55 6e 70 6c 75 67 67  65 64 20 65 78 74 65 6e  |.Unplugged exten|
000524f0  73 69 6f 6e 20 63 61 72  64 20 30 0a 31 37 38 09  |sion card 0.178.|
00052500  26 42 32 09 55 6e 70 6c  75 67 67 65 64 20 65 78  |&B2.Unplugged ex|
00052510  74 65 6e 73 69 6f 6e 20  63 61 72 64 20 31 0a 31  |tension card 1.1|
00052520  37 39 09 26 42 33 09 55  6e 70 6c 75 67 67 65 64  |79.&B3.Unplugged|
00052530  20 65 78 74 65 6e 73 69  6f 6e 20 63 61 72 64 20  | extension card |
00052540  32 0a 31 38 30 09 26 42  34 09 55 6e 70 6c 75 67  |2.180.&B4.Unplug|
00052550  67 65 64 20 65 78 74 65  6e 73 69 6f 6e 20 63 61  |ged extension ca|
00052560  72 64 20 33 0a 31 38 31  09 26 42 35 09 42 61 73  |rd 3.181.&B5.Bas|
00052570  69 63 20 65 64 69 74 6f  72 20 77 69 6c 64 20 63  |ic editor wild c|
00052580  61 72 64 20 30 0a 31 38  32 09 26 42 36 09 42 61  |ard 0.182.&B6.Ba|
00052590  73 69 63 20 65 64 69 74  6f 72 20 77 69 6c 64 20  |sic editor wild |
000525a0  63 61 72 64 20 31 0a 31  38 33 09 26 42 37 09 42  |card 1.183.&B7.B|
000525b0  61 73 69 63 20 65 64 69  74 6f 72 20 77 69 6c 64  |asic editor wild|
000525c0  20 63 61 72 64 20 32 0a  31 38 34 09 26 42 38 09  | card 2.184.&B8.|
000525d0  42 61 73 69 63 20 65 64  69 74 6f 72 20 77 69 6c  |Basic editor wil|
000525e0  64 20 63 61 72 64 20 33  0a 31 38 35 09 26 42 39  |d card 3.185.&B9|
000525f0  09 4c 61 6e 67 75 61 67  65 0a 31 38 36 09 26 42  |.Language.186.&B|
00052600  41 09 43 6f 75 6e 74 72  79 0a 31 38 37 09 26 42  |A.Country.187.&B|
00052610  42 09 56 46 53 20 3f 0a  31 38 38 09 26 42 43 09  |B.VFS ?.188.&BC.|
00052620  3c 42 6c 61 6e 6b 65 72  2f 4d 69 73 63 20 64 61  |<Blanker/Misc da|
00052630  74 61 3d 3e 6f 73 5f 62  79 74 65 63 6d 6f 73 31  |ta=>os_bytecmos1|
00052640  38 38 3e 0a 31 38 39 09  26 42 44 09 41 44 46 53  |88>.189.&BD.ADFS|
00052650  20 64 69 73 63 20 73 69  7a 65 20 30 0a 31 39 30  | disc size 0.190|
00052660  09 26 42 45 09 41 44 46  53 20 64 69 73 63 20 73  |.&BE.ADFS disc s|
00052670  69 7a 65 20 31 0a 31 39  31 09 26 42 46 09 41 44  |ize 1.191.&BF.AD|
00052680  46 53 20 64 69 73 63 20  73 69 7a 65 20 32 0a 31  |FS disc size 2.1|
00052690  39 32 09 26 43 30 09 41  44 46 53 20 64 69 73 63  |92.&C0.ADFS disc|
000526a0  20 73 69 7a 65 20 33 0a  31 39 33 09 26 43 31 09  | size 3.193.&C1.|
000526b0  3c 50 72 6f 74 65 63 74  69 6f 6e 20 66 6c 61 67  |<Protection flag|
000526c0  73 3d 3e 6f 73 5f 62 79  74 65 63 6d 6f 73 31 39  |s=>os_bytecmos19|
000526d0  33 3e 0a 31 39 34 09 26  43 32 09 4d 6f 75 73 65  |3>.194.&C2.Mouse|
000526e0  20 73 74 65 70 0a 31 39  35 09 26 43 33 09 3c 42  | step.195.&C3.<B|
000526f0  72 6f 61 64 63 61 73 74  2f 43 61 63 68 65 2f 41  |roadcast/Cache/A|
00052700  75 74 6f 57 69 6d 70 2f  4d 69 73 63 20 64 61 74  |utoWimp/Misc dat|
00052710  61 3d 3e 6f 73 5f 62 79  74 65 63 6d 6f 73 31 39  |a=>os_bytecmos19|
00052720  35 3e 0a 31 39 36 09 26  43 34 09 57 69 6d 70 20  |5>.196.&C4.Wimp |
00052730  6d 6f 64 65 0a 31 39 37  09 26 43 35 09 3c 57 69  |mode.197.&C5.<Wi|
00052740  6d 70 20 66 6c 61 67 73  3d 3e 6f 73 5f 62 79 74  |mp flags=>os_byt|
00052750  65 63 6d 6f 73 31 39 37  3e 0a 31 39 38 09 26 43  |ecmos197>.198.&C|
00052760  36 09 3c 46 69 6c 65 72  20 66 6c 61 67 73 3d 3e  |6.<Filer flags=>|
00052770  6f 73 5f 62 79 74 65 63  6d 6f 73 31 39 38 3e 0a  |os_bytecmos198>.|
00052780  31 39 39 09 26 43 37 09  41 44 46 53 20 64 69 72  |199.&C7.ADFS dir|
00052790  65 63 74 6f 72 79 20 63  61 63 68 65 0a 32 30 30  |ectory cache.200|
000527a0  09 26 43 38 09 46 6f 6e  74 4d 61 78 0a 32 30 31  |.&C8.FontMax.201|
000527b0  09 26 43 39 09 46 6f 6e  74 4d 61 78 31 0a 32 30  |.&C9.FontMax1.20|
000527c0  32 09 26 43 41 09 46 6f  6e 74 4d 61 78 32 0a 32  |2.&CA.FontMax2.2|
000527d0  30 33 09 26 43 42 09 46  6f 6e 74 4d 61 78 33 0a  |03.&CB.FontMax3.|
000527e0  32 30 34 09 26 43 43 09  46 6f 6e 74 4d 61 78 34  |204.&CC.FontMax4|
000527f0  0a 32 30 35 09 26 43 44  09 46 6f 6e 74 4d 61 78  |.205.&CD.FontMax|
00052800  35 0a 32 30 36 09 26 43  45 09 46 6f 6e 74 4d 61  |5.206.&CE.FontMa|
00052810  78 36 0a 32 30 37 09 26  43 46 09 46 6f 6e 74 4d  |x6.207.&CF.FontM|
00052820  61 78 37 0a 32 30 38 09  26 44 30 09 3c 53 43 53  |ax7.208.&D0.<SCS|
00052830  49 46 53 20 64 72 69 76  65 73 3d 3e 6f 73 5f 62  |IFS drives=>os_b|
00052840  79 74 65 63 6d 6f 73 32  30 38 3e 0a 32 30 39 09  |ytecmos208>.209.|
00052850  26 44 31 09 53 43 53 49  46 53 20 62 75 66 66 65  |&D1.SCSIFS buffe|
00052860  72 73 0a 32 31 30 09 26  44 32 09 53 43 53 49 46  |rs.210.&D2.SCSIF|
00052870  53 20 64 69 72 65 63 74  6f 72 79 20 63 61 63 68  |S directory cach|
00052880  65 0a 32 31 31 09 26 44  33 09 53 43 53 49 46 53  |e.211.&D3.SCSIFS|
00052890  20 64 69 73 63 20 73 69  7a 65 20 30 0a 32 31 32  | disc size 0.212|
000528a0  09 26 44 34 09 53 43 53  49 46 53 20 64 69 73 63  |.&D4.SCSIFS disc|
000528b0  20 73 69 7a 65 20 31 0a  32 31 33 09 26 44 35 09  | size 1.213.&D5.|
000528c0  53 43 53 49 46 53 20 64  69 73 63 20 73 69 7a 65  |SCSIFS disc size|
000528d0  20 32 0a 32 31 34 09 26  44 36 09 53 43 53 49 46  | 2.214.&D6.SCSIF|
000528e0  53 20 64 69 73 63 20 73  69 7a 65 20 33 0a 32 31  |S disc size 3.21|
000528f0  35 09 26 44 37 09 3c 41  75 74 6f 20 6c 6f 61 64  |5.&D7.<Auto load|
00052900  20 61 70 70 6c 69 63 61  74 69 6f 6e 73 3d 3e 6f  | applications=>o|
00052910  73 5f 62 79 74 65 63 6d  6f 73 32 31 35 3e 0a 32  |s_bytecmos215>.2|
00052920  31 36 09 26 44 38 09 3c  41 75 74 6f 20 6c 6f 61  |16.&D8.<Auto loa|
00052930  64 20 61 70 70 6c 69 63  61 74 69 6f 6e 73 3d 3e  |d applications=>|
00052940  6f 73 5f 62 79 74 65 63  6d 6f 73 32 31 36 3e 0a  |os_bytecmos216>.|
00052950  32 32 30 09 26 44 43 09  3c 41 6c 61 72 6d 20 66  |220.&DC.<Alarm f|
00052960  6c 61 67 73 2f 44 53 54  3d 3e 6f 73 5f 62 79 74  |lags/DST=>os_byt|
00052970  65 63 6d 6f 73 32 32 30  3e 0a 32 32 31 09 26 44  |ecmos220>.221.&D|
00052980  44 09 57 69 6d 70 20 64  72 61 67 20 63 6c 69 63  |D.Wimp drag clic|
00052990  6b 20 64 65 6c 61 79 0a  32 32 32 09 26 44 45 09  |k delay.222.&DE.|
000529a0  57 69 6d 70 20 64 72 61  67 20 6d 6f 76 65 20 64  |Wimp drag move d|
000529b0  65 6c 61 79 0a 32 32 33  09 26 44 46 09 57 69 6d  |elay.223.&DF.Wim|
000529c0  70 20 64 6f 75 62 6c 65  20 63 6c 69 63 6b 20 64  |p double click d|
000529d0  65 6c 61 79 0a 32 33 33  09 26 45 39 09 46 53 4c  |elay.233.&E9.FSL|
000529e0  6f 63 6b 20 70 61 73 73  77 6f 72 64 20 62 79 74  |ock password byt|
000529f0  65 20 30 0a 32 33 34 09  26 45 41 09 46 53 4c 6f  |e 0.234.&EA.FSLo|
00052a00  63 6b 20 70 61 73 73 77  6f 72 64 20 62 79 74 65  |ck password byte|
00052a10  20 31 0a 32 33 35 09 26  45 42 09 46 53 4c 6f 63  | 1.235.&EB.FSLoc|
00052a20  6b 20 70 61 73 73 77 6f  72 64 20 62 79 74 65 20  |k password byte |
00052a30  32 0a 32 33 36 09 26 45  43 09 46 53 4c 6f 63 6b  |2.236.&EC.FSLock|
00052a40  20 70 61 73 73 77 6f 72  64 20 62 79 74 65 20 33  | password byte 3|
00052a50  0a 32 33 37 09 26 45 44  09 46 53 4c 6f 63 6b 20  |.237.&ED.FSLock |
00052a60  70 61 73 73 77 6f 72 64  20 62 79 74 65 20 34 0a  |password byte 4.|
00052a70  32 33 38 09 26 45 45 09  46 53 4c 6f 63 6b 20 70  |238.&EE.FSLock p|
00052a80  61 73 73 77 6f 72 64 20  62 79 74 65 20 35 0a 32  |assword byte 5.2|
00052a90  33 39 09 26 45 46 09 43  68 65 63 6b 73 75 6d 0a  |39.&EF.Checksum.|
00052aa0  44 41 54 41 6e 00 00 00  4f 53 5f 42 79 74 65 20  |DATAn...OS_Byte |
00052ab0  43 4d 4f 53 20 31 30 0a  42 69 74 28 73 29 09 4d  |CMOS 10.Bit(s).M|
00052ac0  65 61 6e 69 6e 67 0a 23  4c 69 6e 65 0a 30 2c 31  |eaning.#Line.0,1|
00052ad0  2c 32 2c 33 09 4d 6f 64  65 20 28 52 4f 32 20 6f  |,2,3.Mode (RO2 o|
00052ae0  6e 6c 79 29 0a 34 09 49  6e 74 65 72 6c 61 63 65  |nly).4.Interlace|
00052af0  20 61 63 74 69 76 65 0a  35 2c 36 2c 37 09 56 65  | active.5,6,7.Ve|
00052b00  72 74 69 63 61 6c 20 61  64 6a 75 73 74 0a 00 00  |rtical adjust...|
00052b10  44 41 54 41 e7 00 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00052b20  43 4d 4f 53 20 31 31 0a  42 69 74 28 73 29 09 4d  |CMOS 11.Bit(s).M|
00052b30  65 61 6e 69 6e 67 0a 23  4c 69 6e 65 0a 30 2c 31  |eaning.#Line.0,1|
00052b40  2c 32 09 44 72 69 76 65  20 6e 75 6d 62 65 72 0a  |,2.Drive number.|
00052b50  33 2c 34 2c 35 09 3c 43  61 70 73 20 6c 6f 63 6b  |3,4,5.<Caps lock|
00052b60  20 73 74 61 74 75 73 3d  3e 2e 63 61 70 73 3e 0a  | status=>.caps>.|
00052b70  36 09 4d 6f 75 6e 74 20  64 69 73 63 73 20 69 66  |6.Mount discs if|
00052b80  20 73 65 74 0a 23 53 75  62 70 61 67 65 20 63 61  | set.#Subpage ca|
00052b90  70 73 0a 43 61 70 73 20  4c 6f 63 6b 20 73 74 61  |ps.Caps Lock sta|
00052ba0  74 75 73 0a 56 61 6c 75  65 09 4d 65 61 6e 69 6e  |tus.Value.Meanin|
00052bb0  67 0a 23 4c 69 6e 65 3b  57 72 61 70 20 6f 66 66  |g.#Line;Wrap off|
00052bc0  0a 31 09 53 68 69 66 74  20 43 61 70 69 74 61 6c  |.1.Shift Capital|
00052bd0  73 0a 32 09 4e 6f 20 43  61 70 69 74 61 6c 73 20  |s.2.No Capitals |
00052be0  28 43 61 70 73 20 6f 66  66 29 0a 34 09 43 61 70  |(Caps off).4.Cap|
00052bf0  73 20 4c 6f 63 6b 0a 00  44 41 54 41 96 00 00 00  |s Lock..DATA....|
00052c00  4f 53 5f 42 79 74 65 20  43 4d 4f 53 20 31 35 0a  |OS_Byte CMOS 15.|
00052c10  42 69 74 28 73 29 09 4d  65 61 6e 69 6e 67 0a 23  |Bit(s).Meaning.#|
00052c20  4c 69 6e 65 0a 31 09 4e  6f 20 70 72 69 6e 74 65  |Line.1.No printe|
00052c30  72 20 69 67 6e 6f 72 65  20 63 68 61 72 61 63 74  |r ignore charact|
00052c40  65 72 0a 32 2c 33 2c 34  09 3c 53 65 72 69 61 6c  |er.2,3,4.<Serial|
00052c50  20 70 6f 72 74 20 62 61  75 64 20 72 61 74 65 3d  | port baud rate=|
00052c60  3e 4f 53 5f 53 65 72 69  61 6c 4f 70 53 70 65 65  |>OS_SerialOpSpee|
00052c70  64 73 3e 0a 35 2c 36 2c  37 09 50 72 69 6e 74 65  |ds>.5,6,7.Printe|
00052c80  72 20 64 65 73 74 69 6e  61 74 69 6f 6e 0a 00 00  |r destination...|
00052c90  44 41 54 41 82 00 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00052ca0  43 4d 4f 53 20 31 36 0a  42 69 74 28 73 29 09 4d  |CMOS 16.Bit(s).M|
00052cb0  65 61 6e 69 6e 67 0a 23  4c 69 6e 65 0a 31 09 4c  |eaning.#Line.1.L|
00052cc0  6f 75 64 20 62 65 65 70  0a 33 09 4e 6f 53 63 72  |oud beep.3.NoScr|
00052cd0  6f 6c 6c 0a 34 09 42 6f  6f 74 20 66 72 6f 6d 20  |oll.4.Boot from |
00052ce0  64 69 73 63 0a 35 2c 36  2c 37 09 3c 53 65 72 69  |disc.5,6,7.<Seri|
00052cf0  61 6c 20 64 61 74 61 20  66 6f 72 6d 61 74 3d 3e  |al data format=>|
00052d00  4f 53 5f 53 65 72 69 61  6c 4f 70 46 6f 72 6d 61  |OS_SerialOpForma|
00052d10  74 3e 00 00 44 41 54 41  bc 00 00 00 4f 53 5f 42  |t>..DATA....OS_B|
00052d20  79 74 65 20 43 4d 4f 53  20 31 37 0a 42 69 74 28  |yte CMOS 17.Bit(|
00052d30  73 29 09 4d 65 61 6e 69  6e 67 0a 23 4c 69 6e 65  |s).Meaning.#Line|
00052d40  0a 23 57 72 61 70 20 6f  66 66 0a 30 2c 31 09 4e  |.#Wrap off.0,1.N|
00052d50  65 74 46 69 6c 65 72 20  46 53 20 3c 73 6f 72 74  |etFiler FS <sort|
00052d60  20 66 6f 72 6d 61 74 3d  3e 6f 73 5f 62 79 74 65  | format=>os_byte|
00052d70  63 6d 6f 73 73 6f 72 74  3e 0a 32 09 55 73 65 20  |cmossort>.2.Use |
00052d80  41 72 74 68 75 72 4c 69  62 20 66 6f 72 20 6c 69  |ArthurLib for li|
00052d90  62 72 61 72 79 20 6f 6e  20 4c 6f 67 6f 6e 0a 33  |brary on Logon.3|
00052da0  2c 34 09 4e 65 74 46 69  6c 65 72 20 3c 64 69 73  |,4.NetFiler <dis|
00052db0  70 6c 61 79 20 66 6f 72  6d 61 74 3d 3e 6f 73 5f  |play format=>os_|
00052dc0  62 79 74 65 63 6d 6f 73  64 69 73 70 6c 61 79 3e  |bytecmosdisplay>|
00052dd0  44 41 54 41 cd 00 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00052de0  43 4d 4f 53 20 32 38 0a  42 69 74 28 73 29 09 4d  |CMOS 28.Bit(s).M|
00052df0  65 61 6e 69 6e 67 0a 23  4c 69 6e 65 0a 30 09 54  |eaning.#Line.0.T|
00052e00  72 75 6e 63 61 74 65 20  66 69 6c 65 6e 61 6d 65  |runcate filename|
00052e10  73 0a 31 09 44 72 61 67  41 53 70 72 69 74 65 20  |s.1.DragASprite |
00052e20  65 6e 61 62 6c 65 64 0a  32 09 44 6f 6e 27 74 20  |enabled.2.Don't |
00052e30  75 73 65 20 46 69 6c 65  72 41 63 74 69 6f 6e 0a  |use FilerAction.|
00052e40  33 09 44 69 74 68 65 72  20 69 6e 20 34 20 63 6f  |3.Dither in 4 co|
00052e50  6c 6f 75 72 20 6d 6f 64  65 73 0a 34 09 44 6f 6e  |lour modes.4.Don|
00052e60  27 74 20 6f 62 73 63 75  72 65 20 69 63 6f 6e 20  |'t obscure icon |
00052e70  62 61 72 0a 36 2c 37 09  3c 4c 61 73 74 20 73 68  |bar.6,7.<Last sh|
00052e80  75 74 64 6f 77 6e 20 74  79 70 65 3d 3e 6f 73 5f  |utdown type=>os_|
00052e90  62 79 74 65 63 6d 6f 73  32 38 61 3e 0a 00 00 00  |bytecmos28a>....|
00052ea0  44 41 54 41 d8 01 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00052eb0  43 4d 4f 53 20 31 33 32  0a 42 69 74 28 73 29 09  |CMOS 132.Bit(s).|
00052ec0  4d 65 61 6e 69 6e 67 0a  23 4c 69 6e 65 0a 30 2d  |Meaning.#Line.0-|
00052ed0  34 09 3c 44 75 6d 70 20  66 6f 72 6d 61 74 3d 3e  |4.<Dump format=>|
00052ee0  2e 64 75 6d 70 3e 0a 35  09 54 75 62 65 20 65 78  |.dump>.5.Tube ex|
00052ef0  70 61 6e 73 69 6f 6e 20  63 61 72 64 20 65 6e 61  |pansion card ena|
00052f00  62 6c 65 64 0a 36 2c 37  09 54 75 62 65 20 65 78  |bled.6,7.Tube ex|
00052f10  70 61 6e 73 69 6f 6e 20  70 6f 64 75 6c 65 0a 23  |pansion podule.#|
00052f20  53 75 62 70 61 67 65 20  64 75 6d 70 0a 44 75 6d  |Subpage dump.Dum|
00052f30  70 20 66 6f 72 6d 61 74  0a 42 69 74 28 73 29 09  |p format.Bit(s).|
00052f40  4d 65 61 6e 69 6e 67 0a  23 4c 69 6e 65 0a 30 2c  |Meaning.#Line.0,|
00052f50  31 09 3c 49 6e 76 61 6c  69 64 20 63 68 61 72 61  |1.<Invalid chara|
00052f60  63 74 65 72 20 66 6f 72  6d 61 74 3d 3e 2e 69 6e  |cter format=>.in|
00052f70  76 61 6c 69 64 3e 0a 32  09 54 72 65 61 74 20 74  |valid>.2.Treat t|
00052f80  6f 70 20 62 69 74 20 63  68 61 72 61 63 74 65 72  |op bit character|
00052f90  73 20 61 73 20 76 61 6c  69 64 0a 33 09 41 4e 44  |s as valid.3.AND|
00052fa0  20 63 68 61 72 61 63 74  65 72 73 20 77 69 74 68  | characters with|
00052fb0  20 26 37 46 20 69 6e 20  2a 44 75 6d 70 0a 34 09  | &7F in *Dump.4.|
00052fc0  54 61 62 73 20 65 78 70  61 6e 64 20 74 6f 20 38  |Tabs expand to 8|
00052fd0  20 73 70 61 63 65 73 0a  23 53 75 62 70 61 67 65  | spaces.#Subpage|
00052fe0  20 69 6e 76 61 6c 69 64  0a 49 6e 76 61 6c 69 64  | invalid.Invalid|
00052ff0  20 63 68 61 72 61 63 74  65 72 20 63 6f 64 65 73  | character codes|
00053000  0a 23 57 72 61 70 20 6f  66 66 0a 56 61 6c 75 65  |.#Wrap off.Value|
00053010  09 4d 65 61 6e 69 6e 67  20 66 6f 72 20 69 6e 76  |.Meaning for inv|
00053020  61 6c 69 64 20 63 68 61  72 61 63 74 65 72 73 0a  |alid characters.|
00053030  23 4c 69 6e 65 0a 30 09  47 53 54 72 61 6e 73 20  |#Line.0.GSTrans |
00053040  66 6f 72 6d 61 74 0a 31  09 44 6f 74 73 0a 32 09  |format.1.Dots.2.|
00053050  44 65 63 69 6d 61 6c 20  69 6e 20 5c 3c 3e 27 73  |Decimal in \<>'s|
00053060  0a 33 09 48 65 78 61 64  65 63 69 6d 61 6c 20 69  |.3.Hexadecimal i|
00053070  6e 20 5c 3c 3e 27 73 0a  44 41 54 41 70 01 00 00  |n \<>'s.DATAp...|
00053080  4f 53 5f 42 79 74 65 20  43 4d 4f 53 20 31 33 33  |OS_Byte CMOS 133|
00053090  0a 42 69 74 28 73 29 09  4d 65 61 6e 69 6e 67 0a  |.Bit(s).Meaning.|
000530a0  23 4c 69 6e 65 0a 30 20  26 20 37 09 3c 53 79 6e  |#Line.0 & 7.<Syn|
000530b0  63 3d 3e 2e 73 79 6e 63  3e 0a 31 09 54 6f 70 20  |c=>.sync>.1.Top |
000530c0  62 69 74 20 6f 66 20 6d  6f 64 65 0a 32 2d 36 09  |bit of mode.2-6.|
000530d0  3c 4d 6f 6e 69 74 6f 72  20 74 79 70 65 3d 3e 2e  |<Monitor type=>.|
000530e0  6d 6f 6e 69 74 6f 72 73  3e 0a 23 53 75 62 70 61  |monitors>.#Subpa|
000530f0  67 65 20 73 79 6e 63 0a  4d 6f 6e 69 74 6f 72 20  |ge sync.Monitor |
00053100  73 79 6e 63 0a 56 61 6c  75 65 09 4d 65 61 6e 69  |sync.Value.Meani|
00053110  6e 67 0a 23 4c 69 6e 65  0a 30 09 56 65 72 74 69  |ng.#Line.0.Verti|
00053120  63 61 6c 20 73 79 6e 63  0a 31 09 43 6f 6d 70 6f  |cal sync.1.Compo|
00053130  73 69 74 65 20 73 79 6e  63 0a 26 38 31 09 41 75  |site sync.&81.Au|
00053140  74 6f 20 73 65 6c 65 63  74 20 73 79 6e 63 20 6d  |to select sync m|
00053150  6f 64 65 0a 23 53 75 62  70 61 67 65 20 6d 6f 6e  |ode.#Subpage mon|
00053160  69 74 6f 72 73 0a 4d 6f  6e 69 74 6f 72 20 74 79  |itors.Monitor ty|
00053170  70 65 73 0a 56 61 6c 75  65 09 4d 65 61 6e 69 6e  |pes.Value.Meanin|
00053180  67 0a 23 4c 69 6e 65 0a  30 09 53 74 61 6e 64 61  |g.#Line.0.Standa|
00053190  72 64 0a 31 09 4d 75 6c  74 69 2d 66 72 65 71 75  |rd.1.Multi-frequ|
000531a0  65 6e 63 79 0a 32 09 48  69 2d 72 65 73 20 6d 6f  |ency.2.Hi-res mo|
000531b0  6e 6f 0a 33 09 56 47 41  0a 34 09 53 75 70 65 72  |no.3.VGA.4.Super|
000531c0  20 56 47 41 0a 35 09 4c  43 44 0a 26 31 46 09 41  | VGA.5.LCD.&1F.A|
000531d0  75 74 6f 20 73 65 6c 65  63 74 20 6d 6f 6e 69 74  |uto select monit|
000531e0  6f 72 20 74 79 70 65 0a  44 41 54 41 87 00 00 00  |or type.DATA....|
000531f0  4f 53 5f 42 79 74 65 20  43 4d 4f 53 20 31 33 35  |OS_Byte CMOS 135|
00053200  0a 42 69 74 28 73 29 09  4d 65 61 6e 69 6e 67 0a  |.Bit(s).Meaning.|
00053210  23 4c 69 6e 65 0a 23 57  72 61 70 20 6f 66 66 0a  |#Line.#Wrap off.|
00053220  30 2d 32 09 4e 75 6d 62  65 72 20 6f 66 20 66 6c  |0-2.Number of fl|
00053230  6f 70 70 79 20 64 72 69  76 65 73 0a 33 2d 35 09  |oppy drives.3-5.|
00053240  4e 75 6d 62 65 72 20 6f  66 20 68 61 72 64 20 64  |Number of hard d|
00053250  72 69 76 65 73 0a 36 2c  37 09 4e 75 6d 62 65 72  |rives.6,7.Number|
00053260  20 6f 66 20 49 44 45 20  64 72 69 76 65 73 0a 00  | of IDE drives..|
00053270  44 41 54 41 89 00 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00053280  43 4d 4f 53 20 31 33 36  0a 42 69 74 28 73 29 09  |CMOS 136.Bit(s).|
00053290  4d 65 61 6e 69 6e 67 0a  23 4c 69 6e 65 0a 30 2c  |Meaning.#Line.0,|
000532a0  31 09 46 6c 6f 70 70 79  20 30 20 73 74 65 70 20  |1.Floppy 0 step |
000532b0  72 61 74 65 0a 32 2c 33  09 46 6c 6f 70 70 79 20  |rate.2,3.Floppy |
000532c0  31 20 73 74 65 70 20 72  61 74 65 0a 34 2c 35 09  |1 step rate.4,5.|
000532d0  46 6c 6f 70 70 79 20 32  20 73 74 65 70 20 72 61  |Floppy 2 step ra|
000532e0  74 65 0a 36 2c 37 09 46  6c 6f 70 70 79 20 33 20  |te.6,7.Floppy 3 |
000532f0  73 74 65 70 20 72 61 74  65 00 00 00 44 41 54 41  |step rate...DATA|
00053300  5c 00 00 00 4f 53 5f 42  79 74 65 20 43 4d 4f 53  |\...OS_Byte CMOS|
00053310  20 31 34 30 0a 42 69 74  28 73 29 09 4d 65 61 6e  | 140.Bit(s).Mean|
00053320  69 6e 67 0a 23 4c 69 6e  65 0a 30 09 33 44 20 4e  |ing.#Line.0.3D N|
00053330  65 77 6c 6f 6f 6b 20 65  6e 61 62 6c 65 64 0a 32  |ewlook enabled.2|
00053340  2d 34 09 57 69 6d 70 46  6f 6e 74 0a 37 09 44 6f  |-4.WimpFont.7.Do|
00053350  6e 27 74 20 74 69 6c 65  44 41 54 41 5e 00 00 00  |n't tileDATA^...|
00053360  4f 53 5f 42 79 74 65 20  43 4d 4f 53 20 31 34 38  |OS_Byte CMOS 148|
00053370  0a 42 69 74 28 73 29 09  4d 65 61 6e 69 6e 67 0a  |.Bit(s).Meaning.|
00053380  23 4c 69 6e 65 0a 30 2d  33 09 53 6f 75 6e 64 20  |#Line.0-3.Sound |
00053390  76 6f 69 63 65 0a 34 2d  36 09 53 6f 75 6e 64 20  |voice.4-6.Sound |
000533a0  76 6f 6c 75 6d 65 0a 37  09 53 6f 75 6e 64 20 65  |volume.7.Sound e|
000533b0  6e 61 62 6c 65 64 00 00  44 41 54 41 3f 01 00 00  |nabled..DATA?...|
000533c0  4f 53 5f 42 79 74 65 20  43 4d 4f 53 20 31 38 38  |OS_Byte CMOS 188|
000533d0  0a 42 69 74 28 73 29 09  4d 65 61 6e 69 6e 67 0a  |.Bit(s).Meaning.|
000533e0  23 4c 69 6e 65 0a 30 2c  31 09 52 4f 4d 46 53 20  |#Line.0,1.ROMFS |
000533f0  6f 70 74 20 34 20 73 74  61 74 65 0a 32 09 43 61  |opt 4 state.2.Ca|
00053400  63 68 65 20 69 63 6f 6e  20 65 6e 61 62 6c 65 20  |che icon enable |
00053410  73 74 61 74 65 0a 33 2d  35 09 3c 42 6c 61 6e 6b  |state.3-5.<Blank|
00053420  20 74 69 6d 65 3d 3e 2e  74 69 6d 65 73 3e 0a 36  | time=>.times>.6|
00053430  09 55 6e 62 6c 61 6e 6b  20 73 63 72 65 65 6e 20  |.Unblank screen |
00053440  6f 6e 20 77 72 69 74 65  0a 37 09 44 69 73 61 62  |on write.7.Disab|
00053450  6c 65 20 6c 6f 6e 67 20  73 79 73 74 65 6d 20 74  |le long system t|
00053460  65 73 74 0a 23 53 75 62  70 61 67 65 20 74 69 6d  |est.#Subpage tim|
00053470  65 73 0a 53 63 72 65 65  6e 20 62 6c 61 6e 6b 20  |es.Screen blank |
00053480  74 69 6d 65 73 0a 56 61  6c 75 65 09 4d 65 61 6e  |times.Value.Mean|
00053490  69 6e 67 0a 23 4c 69 6e  65 0a 30 09 4f 66 66 0a  |ing.#Line.0.Off.|
000534a0  31 09 33 30 20 73 65 63  6f 6e 64 73 0a 32 09 31  |1.30 seconds.2.1|
000534b0  20 6d 69 6e 75 74 65 0a  33 09 32 20 6d 69 6e 75  | minute.3.2 minu|
000534c0  74 65 73 0a 34 09 35 20  6d 69 6e 75 74 65 73 0a  |tes.4.5 minutes.|
000534d0  35 09 31 30 20 6d 69 6e  75 74 65 73 0a 36 09 31  |5.10 minutes.6.1|
000534e0  35 20 6d 69 6e 75 74 65  73 0a 37 09 33 30 20 6d  |5 minutes.7.30 m|
000534f0  69 6e 75 74 65 73 0a 00  44 41 54 41 b2 00 00 00  |inutes..DATA....|
00053500  4f 53 5f 42 79 74 65 20  43 4d 4f 53 20 31 39 33  |OS_Byte CMOS 193|
00053510  0a 42 69 74 28 73 29 09  4d 65 61 6e 69 6e 67 0a  |.Bit(s).Meaning.|
00053520  23 4c 69 6e 65 0a 30 09  50 72 6f 74 65 63 74 69  |#Line.0.Protecti|
00053530  6f 6e 20 50 65 65 6b 0a  31 09 50 72 6f 74 65 63  |on Peek.1.Protec|
00053540  74 69 6f 6e 20 50 6f 6b  65 0a 32 09 50 72 6f 74  |tion Poke.2.Prot|
00053550  65 63 74 69 6f 6e 20 4a  53 52 0a 33 09 50 72 6f  |ection JSR.3.Pro|
00053560  74 65 63 74 69 6f 6e 20  55 73 65 72 52 50 43 0a  |tection UserRPC.|
00053570  34 09 50 72 6f 74 65 63  74 69 6f 6e 20 4f 53 50  |4.Protection OSP|
00053580  72 6f 63 0a 35 09 50 72  6f 74 65 63 74 69 6f 6e  |roc.5.Protection|
00053590  20 48 61 6c 74 0a 36 09  50 72 6f 74 65 63 74 69  | Halt.6.Protecti|
000535a0  6f 6e 20 47 65 74 52 65  67 73 00 00 44 41 54 41  |on GetRegs..DATA|
000535b0  fe 00 00 00 4f 53 5f 42  79 74 65 20 43 4d 4f 53  |....OS_Byte CMOS|
000535c0  20 31 39 35 0a 42 69 74  28 73 29 09 4d 65 61 6e  | 195.Bit(s).Mean|
000535d0  69 6e 67 0a 23 4c 69 6e  65 0a 30 09 55 73 65 20  |ing.#Line.0.Use |
000535e0  42 6f 6f 74 4e 65 74 0a  31 09 44 79 6e 61 6d 69  |BootNet.1.Dynami|
000535f0  63 20 73 74 61 74 69 6f  6e 0a 32 09 43 4d 4f 53  |c station.2.CMOS|
00053600  20 72 65 73 65 74 20 6c  61 73 74 20 72 65 73 65  | reset last rese|
00053610  74 0a 33 09 50 6f 77 65  72 20 73 61 76 65 20 65  |t.3.Power save e|
00053620  6e 61 62 6c 65 64 0a 34  09 41 75 74 6f 20 73 65  |nabled.4.Auto se|
00053630  6c 65 63 74 20 57 69 6d  70 20 6d 6f 64 65 0a 35  |lect Wimp mode.5|
00053640  09 44 69 73 61 62 6c 65  20 70 72 6f 63 65 73 73  |.Disable process|
00053650  6f 72 20 63 61 63 68 65  0a 36 09 44 69 73 61 62  |or cache.6.Disab|
00053660  6c 65 20 62 72 6f 61 64  63 61 73 74 20 6c 6f 61  |le broadcast loa|
00053670  64 65 72 0a 37 09 45 6e  61 62 6c 65 20 68 6f 75  |der.7.Enable hou|
00053680  72 67 6c 61 73 73 20 63  6f 6c 6f 75 72 20 63 68  |rglass colour ch|
00053690  61 6e 67 69 6e 67 20 62  79 20 62 72 6f 61 64 63  |anging by broadc|
000536a0  61 73 74 20 6c 6f 61 64  65 72 00 00 44 41 54 41  |ast loader..DATA|
000536b0  e1 00 00 00 4f 53 5f 42  79 74 65 20 43 4d 4f 53  |....OS_Byte CMOS|
000536c0  20 31 39 38 0a 42 69 74  28 73 29 09 4d 65 61 6e  | 198.Bit(s).Mean|
000536d0  69 6e 67 0a 23 4c 69 6e  65 0a 30 2c 31 09 46 69  |ing.#Line.0,1.Fi|
000536e0  6c 65 72 20 3c 64 69 73  70 6c 61 79 20 66 6f 72  |ler <display for|
000536f0  6d 61 74 3d 3e 6f 73 5f  62 79 74 65 63 6d 6f 73  |mat=>os_bytecmos|
00053700  64 69 73 70 6c 61 79 3e  0a 32 2c 33 09 46 69 6c  |display>.2,3.Fil|
00053710  65 72 20 3c 73 6f 72 74  20 66 6f 72 6d 61 74 3d  |er <sort format=|
00053720  3e 6f 73 5f 62 79 74 65  63 6d 6f 73 73 6f 72 74  |>os_bytecmossort|
00053730  3e 0a 34 09 46 69 6c 65  72 20 46 6f 72 63 65 20  |>.4.Filer Force |
00053740  65 6e 61 62 6c 65 64 0a  35 09 46 69 6c 65 72 20  |enabled.5.Filer |
00053750  43 6f 6e 66 69 72 6d 20  65 6e 61 62 6c 65 64 0a  |Confirm enabled.|
00053760  36 09 46 69 6c 65 72 20  56 65 72 62 6f 73 65 20  |6.Filer Verbose |
00053770  65 6e 61 62 6c 65 64 0a  37 09 46 69 6c 65 72 20  |enabled.7.Filer |
00053780  4e 65 77 65 72 20 65 6e  61 62 6c 65 64 00 00 00  |Newer enabled...|
00053790  44 41 54 41 50 00 00 00  4f 53 5f 42 79 74 65 20  |DATAP...OS_Byte |
000537a0  43 4d 4f 53 20 32 30 38  0a 42 69 74 28 73 29 09  |CMOS 208.Bit(s).|
000537b0  4d 65 61 6e 69 6e 67 0a  23 4c 69 6e 65 0a 30 2d  |Meaning.#Line.0-|
000537c0  32 09 53 43 53 49 46 53  20 64 69 73 63 73 0a 33  |2.SCSIFS discs.3|
000537d0  2d 35 09 53 43 53 49 46  53 20 64 72 69 76 65 0a  |-5.SCSIFS drive.|
000537e0  44 41 54 41 c6 00 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
000537f0  43 4d 4f 53 20 32 31 35  0a 42 69 74 28 73 29 09  |CMOS 215.Bit(s).|
00053800  4d 65 61 6e 69 6e 67 0a  23 4c 69 6e 65 0a 30 09  |Meaning.#Line.0.|
00053810  41 75 74 6f 2d 6c 6f 61  64 20 21 41 6c 61 72 6d  |Auto-load !Alarm|
00053820  0a 31 09 41 75 74 6f 2d  6c 6f 61 64 20 21 43 61  |.1.Auto-load !Ca|
00053830  6c 63 0a 32 09 41 75 74  6f 2d 6c 6f 61 64 20 21  |lc.2.Auto-load !|
00053840  43 68 61 72 73 0a 33 09  41 75 74 6f 2d 6c 6f 61  |Chars.3.Auto-loa|
00053850  64 20 21 43 6f 6e 66 69  67 75 72 65 0a 34 09 41  |d !Configure.4.A|
00053860  75 74 6f 2d 6c 6f 61 64  20 21 44 72 61 77 0a 35  |uto-load !Draw.5|
00053870  09 41 75 74 6f 2d 6c 6f  61 64 20 21 45 64 69 74  |.Auto-load !Edit|
00053880  0a 36 09 41 75 74 6f 2d  6c 6f 61 64 20 21 48 65  |.6.Auto-load !He|
00053890  6c 70 0a 37 09 41 75 74  6f 2d 6c 6f 61 64 20 21  |lp.7.Auto-load !|
000538a0  50 61 69 6e 74 0a 00 00  44 41 54 41 c0 00 00 00  |Paint...DATA....|
000538b0  4f 53 5f 42 79 74 65 20  43 4d 4f 53 20 32 31 35  |OS_Byte CMOS 215|
000538c0  0a 42 69 74 28 73 29 09  4d 65 61 6e 69 6e 67 0a  |.Bit(s).Meaning.|
000538d0  23 4c 69 6e 65 0a 30 2d  32 09 41 6c 61 72 6d 20  |#Line.0-2.Alarm |
000538e0  66 6f 72 6d 61 74 0a 33  09 41 6c 61 72 6d 20 63  |format.3.Alarm c|
000538f0  6f 6e 66 69 72 6d 20 64  65 6c 65 74 69 6f 6e 73  |onfirm deletions|
00053900  0a 34 09 41 6c 61 72 6d  20 61 75 74 6f 20 73 61  |.4.Alarm auto sa|
00053910  76 65 20 61 66 74 65 72  20 63 68 61 6e 67 65 73  |ve after changes|
00053920  0a 35 09 41 6c 61 72 6d  20 6b 65 65 70 20 74 6f  |.5.Alarm keep to|
00053930  20 77 6f 72 6b 69 6e 67  20 77 65 65 6b 0a 36 09  | working week.6.|
00053940  41 6c 61 72 6d 20 73 69  6c 65 6e 74 20 75 6e 6c  |Alarm silent unl|
00053950  65 73 73 20 75 72 67 65  6e 74 0a 37 09 44 53 54  |ess urgent.7.DST|
00053960  20 61 63 74 69 76 65 0a  44 41 54 41 57 00 00 00  | active.DATAW...|
00053970  53 68 75 74 64 6f 77 6e  20 74 79 70 65 73 0a 56  |Shutdown types.V|
00053980  61 6c 75 65 09 4d 65 61  6e 69 6e 67 0a 23 4c 69  |alue.Meaning.#Li|
00053990  6e 65 0a 30 09 55 6e 6b  6e 6f 77 6e 0a 31 09 46  |ne.0.Unknown.1.F|
000539a0  61 69 6c 65 64 0a 32 09  50 6f 77 65 72 20 6c 6f  |ailed.2.Power lo|
000539b0  73 74 0a 33 09 55 6e 64  65 66 69 6e 65 64 0a 00  |st.3.Undefined..|
000539c0  44 41 54 41 55 00 00 00  4d 6f 75 73 65 20 74 79  |DATAU...Mouse ty|
000539d0  70 65 73 0a 56 61 6c 75  65 09 4d 65 61 6e 69 6e  |pes.Value.Meanin|
000539e0  67 0a 23 4c 69 6e 65 0a  30 09 51 75 61 64 72 61  |g.#Line.0.Quadra|
000539f0  74 75 72 65 0a 31 09 4d  69 63 72 6f 73 6f 66 74  |ture.1.Microsoft|
00053a00  20 73 65 72 69 61 6c 0a  32 09 4d 53 43 20 73 65  | serial.2.MSC se|
00053a10  72 69 61 6c 0a 00 00 00  44 41 54 41 5f 00 00 00  |rial....DATA_...|
00053a20  44 69 73 70 6c 61 79 20  66 6f 72 6d 61 74 73 0a  |Display formats.|
00053a30  56 61 6c 75 65 09 4d 65  61 6e 69 6e 67 0a 23 4c  |Value.Meaning.#L|
00053a40  69 6e 65 0a 30 09 4c 61  72 67 65 20 69 63 6f 6e  |ine.0.Large icon|
00053a50  73 0a 31 09 53 6d 61 6c  6c 20 69 63 6f 6e 73 0a  |s.1.Small icons.|
00053a60  32 09 46 75 6c 6c 20 69  6e 66 6f 0a 33 09 75 6e  |2.Full info.3.un|
00053a70  64 65 66 69 6e 65 64 00  44 41 54 41 6c 00 00 00  |defined.DATAl...|
00053a80  53 6f 72 74 20 74 79 70  65 73 0a 56 61 6c 75 65  |Sort types.Value|
00053a90  09 4d 65 61 6e 69 6e 67  0a 23 4c 69 6e 65 0a 30  |.Meaning.#Line.0|
00053aa0  09 53 6f 72 74 20 62 79  20 6e 61 6d 65 0a 31 09  |.Sort by name.1.|
00053ab0  53 6f 72 74 20 62 79 20  6e 75 6d 62 65 72 20 6f  |Sort by number o|
00053ac0  72 20 74 79 70 65 0a 32  09 53 6f 72 74 20 62 79  |r type.2.Sort by|
00053ad0  20 73 69 7a 65 0a 33 09  53 6f 72 74 20 62 79 20  | size.3.Sort by |
00053ae0  64 61 74 65 44 41 54 41  47 01 00 00 4f 53 5f 42  |dateDATAG...OS_B|
00053af0  79 74 65 20 43 4d 4f 53  20 31 39 37 0a 42 69 74  |yte CMOS 197.Bit|
00053b00  28 73 29 09 4d 65 61 6e  69 6e 67 0a 23 4c 69 6e  |(s).Meaning.#Lin|
00053b10  65 0a 30 09 43 6f 6e 74  69 6e 75 6f 75 73 20 77  |e.0.Continuous w|
00053b20  69 6e 64 6f 77 20 6d 6f  76 65 6d 65 6e 74 0a 31  |indow movement.1|
00053b30  09 43 6f 6e 74 69 6e 75  6f 75 73 20 77 69 6e 64  |.Continuous wind|
00053b40  6f 77 20 72 65 73 69 7a  69 6e 67 0a 32 09 43 6f  |ow resizing.2.Co|
00053b50  6e 74 69 6e 75 6f 75 73  20 68 6f 72 69 7a 6f 6e  |ntinuous horizon|
00053b60  74 61 6c 20 73 63 72 6f  6c 6c 0a 33 09 43 6f 6e  |tal scroll.3.Con|
00053b70  74 69 6e 75 6f 75 73 20  76 65 72 74 69 63 61 6c  |tinuous vertical|
00053b80  20 73 63 72 6f 6c 6c 0a  34 09 44 6f 6e 27 74 20  | scroll.4.Don't |
00053b90  62 65 65 70 20 77 68 65  6e 20 65 72 72 6f 72 20  |beep when error |
00053ba0  62 6f 78 20 61 70 70 65  61 72 73 0a 35 09 41 6c  |box appears.5.Al|
00053bb0  6c 6f 77 20 77 69 6e 64  6f 77 73 20 70 61 72 74  |low windows part|
00053bc0  6c 79 20 6f 66 66 20 73  63 72 65 65 6e 20 28 64  |ly off screen (d|
00053bd0  6f 77 6e 20 72 69 67 68  74 29 0a 36 09 41 6c 6c  |own right).6.All|
00053be0  6f 77 20 77 69 6e 64 6f  77 73 20 70 61 72 74 6c  |ow windows partl|
00053bf0  79 20 6f 66 66 20 73 63  72 65 65 6e 20 28 61 6c  |y off screen (al|
00053c00  6c 20 64 69 72 65 63 74  69 6f 6e 73 29 0a 37 09  |l directions).7.|
00053c10  4f 70 65 6e 20 73 75 62  6d 65 6e 75 73 20 61 75  |Open submenus au|
00053c20  74 6f 6d 61 74 69 63 61  6c 6c 79 00 44 41 54 41  |tomatically.DATA|
00053c30  cf 00 00 00 4f 53 5f 42  79 74 65 20 43 4d 4f 53  |....OS_Byte CMOS|
00053c40  20 32 31 36 0a 42 69 74  28 73 29 09 4d 65 61 6e  | 216.Bit(s).Mean|
00053c50  69 6e 67 0a 23 4c 69 6e  65 0a 30 09 21 42 61 74  |ing.#Line.0.!Bat|
00053c60  4d 61 6e 20 3a 2d 29 0a  0a 4e 6f 2c 20 69 74 20  |Man :-)..No, it |
00053c70  72 65 61 6c 6c 79 20 73  61 79 73 20 74 68 61 74  |really says that|
00053c80  20 3a 0a 0a 23 57 72 61  70 20 6f 66 66 0a 7b 66  | :..#Wrap off.{f|
00053c90  43 6f 64 65 7d 4f 53 42  79 74 65 5f 43 6f 6e 66  |Code}OSByte_Conf|
00053ca0  69 67 75 72 65 52 4f 4d  42 61 74 4d 61 6e 20 20  |igureROMBatMan  |
00053cb0  20 20 20 20 20 2a 20 20  20 20 20 20 20 32 31 36  |     *       216|
00053cc0  0a 4f 53 42 79 74 65 5f  43 6f 6e 66 69 67 75 72  |.OSByte_Configur|
00053cd0  65 52 4f 4d 42 61 74 4d  61 6e 4d 61 73 6b 20 20  |eROMBatManMask  |
00053ce0  20 2a 20 20 20 20 20 20  20 26 31 7b 66 7d 0a 0a  | *       &1{f}..|
00053cf0  53 6f 20 74 68 65 72 65  21 21 21 00 44 41 54 41  |So there!!!.DATA|
00053d00  5b 00 00 00 4f 53 5f 42  79 74 65 20 43 4d 4f 53  |[...OS_Byte CMOS|
00053d10  20 32 34 0a 42 69 74 28  73 29 09 4d 65 61 6e 69  | 24.Bit(s).Meani|
00053d20  6e 67 0a 23 4c 69 6e 65  0a 30 2d 37 09 3c 54 65  |ng.#Line.0-7.<Te|
00053d30  72 72 69 74 6f 72 79 20  6e 75 6d 62 65 72 3d 3e  |rritory number=>|
00053d40  54 65 72 72 69 74 6f 72  79 5f 6e 75 6d 62 65 72  |Territory_number|
00053d50  73 3e 20 2d 20 31 0a 00  44 41 54 41 d6 03 00 00  |s> - 1..DATA....|
00053d60  4f 53 5f 42 79 74 65 20  32 20 20 53 70 65 63 69  |OS_Byte 2  Speci|
00053d70  66 79 20 69 6e 70 75 74  20 73 74 72 65 61 6d 0a  |fy input stream.|
00053d80  23 50 61 72 65 6e 74 20  4f 53 5f 42 79 74 65 49  |#Parent OS_ByteI|
00053d90  6e 64 65 78 0a 3d 3e 09  52 30 20 3d 09 32 20 28  |ndex.=>.R0 =.2 (|
00053da0  26 30 32 29 0a 09 52 31  20 3d 09 3c 73 74 72 65  |&02)..R1 =.<stre|
00053db0  61 6d 20 73 65 6c 65 63  74 69 6f 6e 3d 3e 2e 73  |am selection=>.s|
00053dc0  74 72 65 61 6d 73 3e 0a  0a 3c 3d 09 52 30 20 70  |treams>..<=.R0 p|
00053dd0  72 65 73 65 72 76 65 64  0a 09 52 31 20 3d 09 76  |reserved..R1 =.v|
00053de0  61 6c 75 65 20 62 65 66  6f 72 65 20 62 65 69 6e  |alue before bein|
00053df0  67 20 6f 76 65 72 77 72  69 74 74 65 6e 0a 09 52  |g overwritten..R|
00053e00  32 20 63 6f 72 72 75 70  74 65 64 0a 0a 54 68 69  |2 corrupted..Thi|
00053e10  73 20 63 61 6c 6c 20 73  65 6c 65 63 74 20 74 68  |s call select th|
00053e20  65 20 64 65 76 69 63 65  20 66 72 6f 6d 20 77 68  |e device from wh|
00053e30  69 63 68 20 61 6c 6c 20  73 75 62 73 65 71 75 65  |ich all subseque|
00053e40  6e 74 20 69 6e 70 75 74  20 69 73 20 74 61 6b 65  |nt input is take|
00053e50  6e 20 62 79 20 3c 4f 53  5f 52 65 61 64 43 3e 2e  |n by <OS_ReadC>.|
00053e60  20 4e 6f 74 65 20 74 68  61 74 20 6f 6e 20 65 78  | Note that on ex|
00053e70  69 74 20 6f 6e 6c 79 20  30 20 6f 72 20 31 20 63  |it only 0 or 1 c|
00053e80  61 6e 20 62 65 20 72 65  74 75 72 6e 65 64 2c 20  |an be returned, |
00053e90  73 6f 20 30 20 6d 61 79  20 61 6c 73 6f 20 6d 65  |so 0 may also me|
00053ea0  61 6e 20 32 2e 20 54 68  65 20 73 74 61 74 65 20  |an 2. The state |
00053eb0  6f 66 20 74 68 69 73 20  76 61 72 69 61 62 6c 65  |of this variable|
00053ec0  20 63 61 6e 20 62 65 20  72 65 61 64 20 77 69 74  | can be read wit|
00053ed0  68 20 3c 4f 53 5f 42 79  74 65 20 31 37 37 3d 3e  |h <OS_Byte 177=>|
00053ee0  4f 53 5f 42 79 74 65 31  37 37 3e 2e 20 49 66 20  |OS_Byte177>. If |
00053ef0  45 78 65 63 20 69 73 20  65 6e 61 62 6c 65 64 20  |Exec is enabled |
00053f00  28 73 65 65 20 3c 4f 53  5f 42 79 74 65 20 31 39  |(see <OS_Byte 19|
00053f10  38 3d 3e 4f 53 5f 42 79  74 65 31 39 38 3e 29 20  |8=>OS_Byte198>) |
00053f20  74 68 65 6e 20 74 68 65  20 45 78 65 63 20 66 69  |then the Exec fi|
00053f30  6c 65 20 68 61 6e 64 6c  65 20 69 73 20 75 73 65  |le handle is use|
00053f40  64 20 61 73 20 74 68 65  20 63 75 72 72 65 6e 74  |d as the current|
00053f50  20 69 6e 70 75 74 20 73  74 72 65 61 6d 2e 0a 23  | input stream..#|
00053f60  73 75 62 70 61 67 65 20  73 74 72 65 61 6d 73 0a  |subpage streams.|
00053f70  49 6e 70 75 74 20 73 74  72 65 61 6d 73 0a 56 61  |Input streams.Va|
00053f80  6c 75 65 09 4d 65 61 6e  69 6e 67 0a 30 09 4b 65  |lue.Meaning.0.Ke|
00053f90  79 62 6f 61 72 64 20 69  6e 70 75 74 20 77 69 74  |yboard input wit|
00053fa0  68 20 73 65 72 69 61 6c  20 69 6e 70 75 74 20 62  |h serial input b|
00053fb0  75 66 66 65 72 20 64 69  73 61 62 6c 65 64 0a 31  |uffer disabled.1|
00053fc0  09 53 65 72 69 61 6c 20  69 6e 70 75 74 0a 32 09  |.Serial input.2.|
00053fd0  4b 65 79 62 6f 61 72 64  20 69 6e 70 75 74 20 77  |Keyboard input w|
00053fe0  69 74 68 20 73 65 72 69  61 6c 20 69 6e 70 75 74  |ith serial input|
00053ff0  20 62 75 66 66 65 72 20  65 6e 61 62 6c 65 64 0a  | buffer enabled.|
00054000  0a 54 68 65 20 64 69 66  66 65 72 65 6e 63 65 20  |.The difference |
00054010  62 65 74 77 65 65 6e 20  30 20 61 6e 64 20 32 20  |between 0 and 2 |
00054020  69 73 20 74 68 61 74 20  74 68 65 20 6c 61 74 74  |is that the latt|
00054030  65 72 20 61 6c 6c 6f 77  73 20 63 68 61 72 61 63  |er allows charac|
00054040  74 65 72 73 20 74 6f 20  62 65 20 72 65 63 69 65  |ters to be recie|
00054050  76 65 64 20 69 6e 74 6f  20 74 68 65 20 73 65 72  |ved into the ser|
00054060  69 61 6c 20 62 75 66 66  65 72 20 75 6e 64 65 72  |ial buffer under|
00054070  20 69 6e 74 65 72 72 75  70 74 73 20 61 73 20 74  | interrupts as t|
00054080  68 65 20 73 61 6d 65 20  74 69 6d 65 20 61 73 20  |he same time as |
00054090  74 68 65 20 6b 65 79 62  6f 61 72 64 20 69 73 20  |the keyboard is |
000540a0  62 65 69 6e 67 20 75 73  65 64 20 61 73 20 74 68  |being used as th|
000540b0  65 20 70 72 69 6d 61 72  79 20 69 6e 70 75 74 2e  |e primary input.|
000540c0  20 49 66 20 74 68 65 20  69 6e 70 75 74 20 73 74  | If the input st|
000540d0  72 65 61 6d 73 20 61 72  65 20 73 75 62 73 65 71  |reams are subseq|
000540e0  75 65 6e 74 6c 79 20 73  77 69 74 63 68 65 64 20  |uently switched |
000540f0  74 6f 20 74 68 65 20 73  65 72 69 61 6c 20 64 65  |to the serial de|
00054100  76 69 63 65 2c 20 74 68  65 6e 20 74 68 6f 73 65  |vice, then those|
00054110  20 63 68 61 72 61 63 74  65 72 73 20 63 61 6e 20  | characters can |
00054120  74 68 65 6e 20 62 65 20  72 65 61 64 2e 0a 00 00  |then be read....|
00054130  44 41 54 41 c1 01 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00054140  31 31 20 20 57 72 69 74  65 20 6b 65 79 62 6f 61  |11  Write keyboa|
00054150  72 64 20 61 75 74 6f 20  72 65 70 65 61 74 20 64  |rd auto repeat d|
00054160  65 6c 61 79 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |elay.#Parent OS_|
00054170  42 79 74 65 49 6e 64 65  78 0a 3d 3e 09 52 30 20  |ByteIndex.=>.R0 |
00054180  3d 09 31 31 0a 09 52 31  20 3d 09 64 65 6c 61 79  |=.11..R1 =.delay|
00054190  20 70 65 72 69 6f 64 20  69 6e 20 63 65 6e 74 69  | period in centi|
000541a0  73 65 63 6f 6e 64 73 0a  0a 3c 3d 09 52 30 20 70  |seconds..<=.R0 p|
000541b0  72 65 73 65 72 76 65 64  0a 09 52 31 20 3d 09 70  |reserved..R1 =.p|
000541c0  72 65 76 69 6f 75 73 20  64 65 6c 61 79 20 70 65  |revious delay pe|
000541d0  72 69 6f 64 0a 09 52 32  20 63 6f 72 72 75 70 74  |riod..R2 corrupt|
000541e0  65 64 0a 0a 59 6f 75 20  6d 75 73 74 20 68 6f 6c  |ed..You must hol|
000541f0  64 20 64 6f 77 6e 20 65  61 63 68 20 6b 65 79 20  |d down each key |
00054200  6f 6e 20 74 68 65 20 6b  65 79 62 6f 61 72 64 20  |on the keyboard |
00054210  66 6f 72 20 61 20 6e 75  6d 62 65 72 20 6f 66 20  |for a number of |
00054220  63 65 6e 74 69 73 65 63  6f 6e 64 73 20 62 65 66  |centiseconds bef|
00054230  6f 72 65 20 69 74 20 62  65 67 69 6e 73 20 74 6f  |ore it begins to|
00054240  20 61 75 74 6f 72 65 70  65 61 74 2e 20 54 68 69  | autorepeat. Thi|
00054250  73 20 63 61 6c 6c 20 65  6e 61 62 6c 65 73 20 79  |s call enables y|
00054260  6f 75 20 74 6f 20 63 68  61 6e 67 65 20 74 68 65  |ou to change the|
00054270  20 69 6e 69 74 69 61 6c  20 64 65 6c 61 79 20 66  | initial delay f|
00054280  72 6f 6d 20 74 68 65 20  64 65 66 61 75 6c 74 20  |rom the default |
00054290  73 65 74 20 62 79 20 3c  2a 43 6f 6e 66 69 67 75  |set by <*Configu|
000542a0  72 65 20 44 65 6c 61 79  3d 3e 2a 53 74 61 74 75  |re Delay=>*Statu|
000542b0  73 20 44 65 6c 61 79 3e  2e 20 54 68 69 73 20 76  |s Delay>. This v|
000542c0  61 72 69 61 62 6c 65 20  6d 61 79 20 61 6c 73 6f  |ariable may also|
000542d0  20 62 65 20 72 65 61 64  20 6f 72 20 73 65 74 20  | be read or set |
000542e0  62 79 20 3c 4f 53 5f 42  79 74 65 31 39 36 3e 2e  |by <OS_Byte196>.|
000542f0  0a 00 00 00 44 41 54 41  5c 01 00 00 4f 53 5f 42  |....DATA\...OS_B|
00054300  79 74 65 20 31 35 20 20  46 6c 75 73 68 20 62 75  |yte 15  Flush bu|
00054310  66 66 65 72 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |ffer.#Parent OS_|
00054320  42 79 74 65 49 6e 64 65  78 0a 3d 3e 09 52 30 20  |ByteIndex.=>.R0 |
00054330  3d 09 31 35 20 28 72 65  61 73 6f 6e 20 63 6f 64  |=.15 (reason cod|
00054340  65 29 0a 09 52 31 20 3d  09 30 20 74 6f 20 66 6c  |e)..R1 =.0 to fl|
00054350  75 73 68 20 61 6c 6c 20  62 75 66 66 65 72 73 0a  |ush all buffers.|
00054360  09 20 09 31 20 74 6f 20  66 6c 75 73 68 20 74 68  |. .1 to flush th|
00054370  65 20 63 75 72 72 65 6e  74 20 69 6e 70 75 74 20  |e current input |
00054380  62 75 66 66 65 72 0a 0a  3c 3d 09 52 30 20 70 72  |buffer..<=.R0 pr|
00054390  65 73 65 72 76 65 64 0a  09 52 31 2c 52 32 20 63  |eserved..R1,R2 c|
000543a0  6f 72 72 75 70 74 65 64  0a 0a 54 68 65 20 63 6f  |orrupted..The co|
000543b0  6e 74 65 6e 74 73 20 6f  66 20 65 69 74 68 65 72  |ntents of either|
000543c0  20 61 6c 6c 20 62 75 66  66 65 72 73 20 6f 72 20  | all buffers or |
000543d0  6f 6e 6c 79 20 74 68 65  20 63 75 72 72 65 6e 74  |only the current|
000543e0  20 69 6e 70 75 74 20 62  75 66 66 65 72 20 61 72  | input buffer ar|
000543f0  65 20 64 69 73 63 61 72  64 65 64 2c 20 64 65 70  |e discarded, dep|
00054400  65 6e 64 69 6e 67 20 6f  6e 20 52 31 2e 20 49 6e  |ending on R1. In|
00054410  64 69 76 69 64 75 61 6c  20 62 75 66 66 65 72 73  |dividual buffers|
00054420  20 6d 61 79 20 62 65 20  66 6c 75 73 68 65 64 20  | may be flushed |
00054430  75 73 69 6e 67 20 3c 4f  53 5f 42 79 74 65 20 32  |using <OS_Byte 2|
00054440  31 3d 3e 6f 73 5f 62 79  74 65 30 32 31 3e 2e 0a  |1=>os_byte021>..|
00054450  44 41 54 41 fb 00 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00054460  31 39 20 20 57 61 69 74  20 66 6f 72 20 56 53 79  |19  Wait for VSy|
00054470  6e 63 0a 23 50 61 72 65  6e 74 20 4f 53 5f 42 79  |nc.#Parent OS_By|
00054480  74 65 49 6e 64 65 78 0a  3d 3e 09 52 30 20 3d 09  |teIndex.=>.R0 =.|
00054490  31 39 0a 0a 3c 3d 09 52  30 20 70 72 65 73 65 72  |19..<=.R0 preser|
000544a0  76 65 64 0a 09 52 31 2c  52 32 20 63 6f 72 72 75  |ved..R1,R2 corru|
000544b0  70 74 65 64 0a 0a 54 68  69 73 20 63 61 6c 6c 20  |pted..This call |
000544c0  74 61 6b 65 73 20 74 68  65 20 63 6f 6e 74 72 6f  |takes the contro|
000544d0  6c 20 6f 66 20 74 68 65  20 41 52 4d 20 75 6e 74  |l of the ARM unt|
000544e0  69 6c 20 74 68 65 20 65  6c 65 63 74 72 6f 6e 20  |il the electron |
000544f0  62 65 61 6d 20 6f 66 20  74 68 65 20 6d 6f 6e 69  |beam of the moni|
00054500  74 6f 72 20 68 61 73 20  72 65 61 63 68 65 64 20  |tor has reached |
00054510  69 74 73 20 6c 61 73 74  20 70 6f 73 69 74 69 6f  |its last positio|
00054520  6e 20 61 6e 64 20 6a 75  6d 70 73 20 74 6f 20 74  |n and jumps to t|
00054530  68 65 20 74 6f 70 20 6c  65 66 74 20 6f 66 20 74  |he top left of t|
00054540  68 65 20 73 63 72 65 65  6e 2e 0a 00 44 41 54 41  |he screen...DATA|
00054550  62 01 00 00 4f 53 5f 42  79 74 65 20 32 30 20 20  |b...OS_Byte 20  |
00054560  52 65 73 65 74 20 66 6f  6e 74 20 64 65 66 69 6e  |Reset font defin|
00054570  69 74 69 6f 6e 0a 23 50  61 72 65 6e 74 20 4f 53  |ition.#Parent OS|
00054580  5f 42 79 74 65 49 6e 64  65 78 0a 3d 3e 09 52 30  |_ByteIndex.=>.R0|
00054590  20 3d 09 32 30 0a 0a 3c  3d 09 52 30 20 70 72 65  | =.20..<=.R0 pre|
000545a0  73 65 72 76 65 64 0a 09  52 31 2c 52 32 20 63 6f  |served..R1,R2 co|
000545b0  72 72 75 70 74 65 64 0a  0a 54 68 69 73 20 63 61  |rrupted..This ca|
000545c0  6c 6c 20 69 73 20 75 73  65 64 20 74 6f 20 72 65  |ll is used to re|
000545d0  73 65 74 20 74 68 65 20  73 68 61 70 65 20 6f 66  |set the shape of|
000545e0  20 74 68 65 20 70 72 69  6e 74 61 62 6c 65 20 41  | the printable A|
000545f0  53 43 49 49 20 63 68 61  72 61 63 74 65 72 73 20  |SCII characters |
00054600  69 6e 20 74 68 65 20 72  61 6e 67 65 20 6f 66 20  |in the range of |
00054610  33 32 2d 31 32 37 2c 20  77 68 69 63 68 20 6d 61  |32-127, which ma|
00054620  79 20 62 65 20 6d 6f 64  69 66 69 65 64 20 77 69  |y be modified wi|
00054630  74 68 20 3c 56 44 55 20  32 33 2c 33 32 2d 32 35  |th <VDU 23,32-25|
00054640  35 3d 3e 56 44 55 3a 32  33 2c 33 32 2b 3e 2e 20  |5=>VDU:23,32+>. |
00054650  54 6f 20 72 65 73 65 74  20 74 68 65 20 77 68 6f  |To reset the who|
00054660  6c 65 20 6f 72 20 61 20  73 6d 61 6c 6c 65 72 20  |le or a smaller |
00054670  67 72 6f 75 70 20 6f 66  20 63 68 61 72 61 63 74  |group of charact|
00054680  65 72 20 64 65 66 69 6e  69 74 69 6f 6e 73 2c 20  |er definitions, |
00054690  75 73 65 20 3c 4f 53 5f  42 79 74 65 20 32 35 3d  |use <OS_Byte 25=|
000546a0  3e 6f 73 5f 62 79 74 65  30 32 35 3e 2e 0a 00 00  |>os_byte025>....|
000546b0  44 41 54 41 bc 00 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
000546c0  32 31 20 20 46 6c 75 73  68 20 73 70 65 63 69 66  |21  Flush specif|
000546d0  69 65 64 20 62 75 66 66  65 72 0a 23 50 61 72 65  |ied buffer.#Pare|
000546e0  6e 74 20 4f 53 5f 42 79  74 65 49 6e 64 65 78 0a  |nt OS_ByteIndex.|
000546f0  3d 3e 09 52 30 20 3d 09  32 31 0a 09 52 31 20 3d  |=>.R0 =.21..R1 =|
00054700  09 3c 62 75 66 66 65 72  20 6e 75 6d 62 65 72 3d  |.<buffer number=|
00054710  3e 42 75 66 66 65 72 5f  62 75 66 66 65 72 73 3e  |>Buffer_buffers>|
00054720  0a 0a 3c 3d 09 52 30 2c  52 31 20 70 72 65 73 65  |..<=.R0,R1 prese|
00054730  72 76 65 64 0a 09 52 32  20 63 6f 72 72 75 70 74  |rved..R2 corrupt|
00054740  65 64 0a 0a 54 68 69 73  20 63 61 6c 6c 20 66 6c  |ed..This call fl|
00054750  75 73 68 65 73 20 74 68  65 20 73 70 65 63 69 66  |ushes the specif|
00054760  69 65 64 20 62 75 66 66  65 72 2e 0a 44 41 54 41  |ied buffer..DATA|
00054770  db 01 00 00 4f 53 5f 42  79 74 65 20 32 35 20 20  |....OS_Byte 25  |
00054780  52 65 73 65 74 20 67 72  6f 75 70 73 20 6f 66 20  |Reset groups of |
00054790  66 6f 6e 74 20 64 65 66  69 6e 69 74 69 6f 6e 0a  |font definition.|
000547a0  23 50 61 72 65 6e 74 20  4f 53 5f 42 79 74 65 49  |#Parent OS_ByteI|
000547b0  6e 64 65 78 0a 3d 3e 09  52 30 20 3d 09 32 35 0a  |ndex.=>.R0 =.25.|
000547c0  09 52 31 20 3d 09 3c 67  72 6f 75 70 20 74 6f 20  |.R1 =.<group to |
000547d0  72 65 73 74 6f 72 65 3d  3e 2e 67 72 6f 75 70 73  |restore=>.groups|
000547e0  3e 0a 0a 3c 3d 09 52 30  20 70 72 65 73 65 72 76  |>..<=.R0 preserv|
000547f0  65 64 0a 09 52 31 2c 52  32 20 63 6f 72 72 75 70  |ed..R1,R2 corrup|
00054800  74 65 64 0a 0a 54 68 69  73 20 63 61 6c 6c 20 72  |ted..This call r|
00054810  65 73 74 6f 72 65 73 20  74 68 65 20 63 68 61 72  |estores the char|
00054820  61 63 74 65 72 73 20 65  76 65 6e 74 75 61 6c 6c  |acters eventuall|
00054830  79 20 72 65 64 65 66 69  6e 65 64 20 62 79 20 74  |y redefined by t|
00054840  68 65 20 3c 56 44 55 20  32 33 2c 33 32 2d 33 35  |he <VDU 23,32-35|
00054850  35 3d 3e 56 44 55 3a 32  33 2c 33 32 2d 32 35 35  |5=>VDU:23,32-255|
00054860  3e 20 63 6f 6d 6d 61 6e  64 20 69 6e 20 74 68 65  |> command in the|
00054870  20 72 61 6e 67 65 20 6f  66 20 33 32 2d 32 35 35  | range of 32-255|
00054880  2e 20 57 68 69 63 68 20  63 68 61 72 61 63 74 65  |. Which characte|
00054890  72 73 20 61 72 65 20 74  6f 20 62 65 20 72 65 73  |rs are to be res|
000548a0  65 74 20 69 73 20 67 69  76 65 6e 20 69 6e 20 52  |et is given in R|
000548b0  31 2e 0a 23 53 75 62 70  61 67 65 20 67 72 6f 75  |1..#Subpage grou|
000548c0  70 73 0a 43 68 61 72 61  63 74 65 72 20 67 72 6f  |ps.Character gro|
000548d0  75 70 73 0a 56 61 6c 75  65 09 52 61 6e 67 65 20  |ups.Value.Range |
000548e0  6f 66 20 6b 65 79 73 20  74 6f 20 62 65 20 72 65  |of keys to be re|
000548f0  73 74 6f 72 65 64 0a 23  4c 69 6e 65 0a 30 09 33  |stored.#Line.0.3|
00054900  32 2d 32 35 35 0a 31 09  33 32 2d 36 33 0a 32 09  |2-255.1.32-63.2.|
00054910  36 34 2d 39 35 0a 33 09  39 36 2d 31 32 37 0a 34  |64-95.3.96-127.4|
00054920  09 31 32 38 2d 31 35 39  0a 35 09 31 36 30 2d 31  |.128-159.5.160-1|
00054930  39 31 0a 36 09 31 39 32  2d 32 32 33 0a 37 09 32  |91.6.192-223.7.2|
00054940  32 34 2d 32 35 35 0a 00  44 41 54 41 d4 02 00 00  |24-255..DATA....|
00054950  4f 53 5f 42 79 74 65 20  31 30 36 20 20 53 65 6c  |OS_Byte 106  Sel|
00054960  65 63 74 20 70 6f 69 6e  74 65 72 2f 61 63 74 69  |ect pointer/acti|
00054970  76 61 74 65 20 6d 6f 75  73 65 0a 23 50 61 72 65  |vate mouse.#Pare|
00054980  6e 74 20 4f 53 5f 42 79  74 65 49 6e 64 65 78 0a  |nt OS_ByteIndex.|
00054990  3d 3e 09 52 30 20 3d 09  31 30 36 0a 09 52 31 20  |=>.R0 =.106..R1 |
000549a0  3d 09 3c 70 6f 69 6e 74  65 72 20 73 68 61 70 65  |=.<pointer shape|
000549b0  20 61 6e 64 20 6c 69 6e  6b 61 67 65 20 66 6c 61  | and linkage fla|
000549c0  67 3d 3e 2e 66 6c 61 67  73 3e 2c 20 6f 72 20 2d  |g=>.flags>, or -|
000549d0  31 20 74 6f 20 72 65 61  64 0a 23 20 47 65 72 70  |1 to read.# Gerp|
000549e0  68 3e 20 54 68 69 73 20  6d 61 79 20 62 65 20 75  |h> This may be u|
000549f0  6e 64 6f 63 75 6d 65 6e  74 65 64 20 69 6e 20 74  |ndocumented in t|
00054a00  68 65 20 50 52 4d 27 73  0a 0a 3c 3d 09 52 30 20  |he PRM's..<=.R0 |
00054a10  70 72 65 73 65 72 76 65  64 0a 09 52 31 20 3d 09  |preserved..R1 =.|
00054a20  73 68 61 70 65 20 61 6e  64 20 6c 69 6e 6b 61 67  |shape and linkag|
00054a30  65 20 66 6c 61 67 20 62  65 66 6f 72 65 20 6f 76  |e flag before ov|
00054a40  65 72 77 72 69 74 74 65  6e 0a 09 52 32 20 63 6f  |erwritten..R2 co|
00054a50  72 72 75 70 74 65 64 0a  0a 59 6f 75 20 63 61 6e  |rrupted..You can|
00054a60  20 64 65 66 69 6e 65 20  66 6f 75 72 20 27 70 6f  | define four 'po|
00054a70  69 6e 74 65 72 20 62 75  66 66 65 72 73 27 20 75  |inter buffers' u|
00054a80  73 69 6e 67 20 3c 4f 53  5f 57 6f 72 64 20 32 31  |sing <OS_Word 21|
00054a90  3d 3e 4f 53 5f 57 6f 72  64 32 31 3e 2c 20 65 61  |=>OS_Word21>, ea|
00054aa0  63 68 20 68 6f 6c 64 69  6e 67 20 61 20 64 69 66  |ch holding a dif|
00054ab0  66 65 72 65 6e 74 20 73  68 61 70 65 20 64 65 66  |ferent shape def|
00054ac0  69 6e 69 74 69 6f 6e 20  66 6f 72 20 74 68 65 20  |inition for the |
00054ad0  6d 6f 75 73 65 20 70 6f  69 6e 74 65 72 2e 20 54  |mouse pointer. T|
00054ae0  68 69 73 20 63 61 6c 6c  20 61 6c 6c 6f 77 73 20  |his call allows |
00054af0  79 6f 75 20 74 6f 20 73  65 6c 65 63 74 20 6f 6e  |you to select on|
00054b00  65 20 6f 66 20 74 68 65  73 65 20 64 65 66 69 6e  |e of these defin|
00054b10  69 74 69 6f 6e 73 20 66  6f 72 20 66 75 74 75 72  |itions for futur|
00054b20  65 20 75 73 65 2c 20 6f  72 20 74 6f 20 74 75 72  |e use, or to tur|
00054b30  6e 20 6f 66 66 20 74 68  65 20 70 6f 69 6e 74 65  |n off the pointe|
00054b40  72 20 64 65 70 65 6e 64  69 6e 67 20 6f 6e 20 74  |r depending on t|
00054b50  68 65 20 62 6f 74 74 6f  6d 20 3c 73 65 76 65 6e  |he bottom <seven|
00054b60  20 62 69 74 73 20 6f 66  20 52 31 3d 3e 2e 66 6c  | bits of R1=>.fl|
00054b70  61 67 73 3e 2e 0a 23 53  75 62 70 61 67 65 20 66  |ags>..#Subpage f|
00054b80  6c 61 67 73 0a 50 6f 69  6e 74 65 72 20 66 6c 61  |lags.Pointer fla|
00054b90  67 73 0a 42 69 74 09 4d  65 61 6e 69 6e 67 0a 23  |gs.Bit.Meaning.#|
00054ba0  4c 69 6e 65 0a 30 2d 32  09 53 65 6c 65 63 74 20  |Line.0-2.Select |
00054bb0  70 6f 69 6e 74 65 72 20  6e 75 6d 62 65 72 20 28  |pointer number (|
00054bc0  31 20 74 6f 20 34 2c 20  6f 72 20 30 20 74 6f 20  |1 to 4, or 0 to |
00054bd0  74 75 72 6e 20 6f 66 66  29 0a 37 09 4c 69 6e 6b  |turn off).7.Link|
00054be0  20 70 6f 69 6e 74 65 72  20 74 6f 20 6d 6f 75 73  | pointer to mous|
00054bf0  65 20 69 66 20 75 6e 73  65 74 0a 23 20 47 65 72  |e if unset.# Ger|
00054c00  70 68 3e 20 43 68 65 63  6b 20 74 68 69 73 20 69  |ph> Check this i|
00054c10  6e 20 74 68 65 20 50 52  4d 73 0a 0a 44 41 54 41  |n the PRMs..DATA|
00054c20  0a 02 00 00 4f 53 5f 42  79 74 65 20 31 31 32 20  |....OS_Byte 112 |
00054c30  20 57 72 69 74 65 20 56  44 55 20 64 72 69 76 65  | Write VDU drive|
00054c40  72 20 73 63 72 65 65 6e  20 62 61 6e 6b 0a 23 50  |r screen bank.#P|
00054c50  61 72 65 6e 74 20 4f 53  5f 42 79 74 65 49 6e 64  |arent OS_ByteInd|
00054c60  65 78 0a 3d 3e 09 52 30  20 3d 09 31 31 32 0a 09  |ex.=>.R0 =.112..|
00054c70  52 31 20 3d 09 62 61 6e  6b 20 6e 75 6d 62 65 72  |R1 =.bank number|
00054c80  0a 0a 3c 3d 09 52 30 20  70 72 65 73 65 72 76 65  |..<=.R0 preserve|
00054c90  64 0a 09 52 31 20 3d 09  70 72 65 76 69 6f 75 73  |d..R1 =.previous|
00054ca0  20 62 61 6e 6b 20 6e 75  6d 62 65 72 0a 09 52 32  | bank number..R2|
00054cb0  20 63 6f 72 72 75 70 74  65 64 0a 0a 54 68 69 73  | corrupted..This|
00054cc0  20 63 61 6c 6c 20 73 65  6c 65 63 74 73 20 74 68  | call selects th|
00054cd0  65 20 62 61 6e 6b 20 6f  66 20 73 63 72 65 65 6e  |e bank of screen|
00054ce0  20 6d 65 6d 6f 72 79 20  77 68 69 63 68 20 69 73  | memory which is|
00054cf0  20 74 6f 20 62 65 20 75  73 65 64 20 62 79 20 74  | to be used by t|
00054d00  68 65 20 56 44 55 20 64  72 69 76 65 72 73 20 61  |he VDU drivers a|
00054d10  63 63 6f 72 64 69 6e 67  20 74 6f 20 52 31 2c 20  |ccording to R1, |
00054d20  77 68 65 72 65 20 30 20  6d 65 61 6e 73 20 74 68  |where 0 means th|
00054d30  65 20 64 65 66 61 75 6c  74 20 66 6f 72 20 74 68  |e default for th|
00054d40  65 20 63 75 72 72 65 6e  74 20 6d 6f 64 65 20 28  |e current mode (|
00054d50  31 20 6f 72 20 32 29 2e  20 41 6e 79 20 6f 74 68  |1 or 2). Any oth|
00054d60  65 72 20 76 61 6c 75 65  20 6d 65 61 6e 73 20 74  |er value means t|
00054d70  6f 20 73 65 74 20 74 68  65 20 73 63 72 65 65 6e  |o set the screen|
00054d80  62 61 6e 6b 20 77 68 69  63 68 20 73 74 61 72 74  |bank which start|
00054d90  73 20 61 74 20 53 63 72  65 65 6e 73 74 61 72 74  |s at Screenstart|
00054da0  2b 28 52 31 2a 4d 6f 64  65 73 69 7a 65 29 2e 20  |+(R1*Modesize). |
00054db0  54 68 65 20 6d 61 78 69  6d 75 6d 20 62 61 6e 6b  |The maximum bank|
00054dc0  20 6e 75 6d 62 65 72 20  69 73 20 54 6f 74 61 6c  | number is Total|
00054dd0  53 63 72 65 65 6e 73 69  7a 65 2f 4d 6f 64 65 53  |Screensize/ModeS|
00054de0  69 7a 65 2e 20 54 68 65  20 64 65 66 61 75 6c 74  |ize. The default|
00054df0  20 62 61 6e 6b 20 69 73  20 66 6f 72 20 61 20 6e  | bank is for a n|
00054e00  6f 6e 2d 73 68 61 64 6f  77 20 6d 6f 64 65 20 31  |on-shadow mode 1|
00054e10  2c 20 66 6f 72 20 61 20  73 68 61 64 6f 77 20 6d  |, for a shadow m|
00054e20  6f 64 65 20 32 2e 00 00  44 41 54 41 51 01 00 00  |ode 2...DATAQ...|
00054e30  4f 53 5f 42 79 74 65 20  31 31 33 20 20 57 72 69  |OS_Byte 113  Wri|
00054e40  74 65 20 64 69 73 70 6c  61 79 20 68 61 72 64 77  |te display hardw|
00054e50  61 72 65 20 73 63 72 65  65 6e 20 62 61 6e 6b 0a  |are screen bank.|
00054e60  23 50 61 72 65 6e 74 20  4f 53 5f 42 79 74 65 49  |#Parent OS_ByteI|
00054e70  6e 64 65 78 0a 3d 3e 09  52 30 20 3d 09 31 31 33  |ndex.=>.R0 =.113|
00054e80  0a 09 52 31 20 3d 09 62  61 6e 6b 20 6e 75 6d 62  |..R1 =.bank numb|
00054e90  65 72 2c 20 6f 72 20 30  20 66 6f 72 20 64 65 66  |er, or 0 for def|
00054ea0  61 75 6c 74 0a 0a 3c 3d  09 52 30 20 70 72 65 73  |ault..<=.R0 pres|
00054eb0  65 72 76 65 64 0a 09 52  31 20 3d 09 76 61 6c 75  |erved..R1 =.valu|
00054ec0  65 20 62 65 66 6f 72 65  20 62 65 69 6e 67 20 6f  |e before being o|
00054ed0  76 65 72 77 72 69 74 74  65 6e 0a 09 52 32 20 63  |verwritten..R2 c|
00054ee0  6f 72 72 75 70 74 65 64  0a 0a 54 68 69 73 20 63  |orrupted..This c|
00054ef0  61 6c 6c 20 73 65 6c 65  63 74 73 20 74 68 65 20  |all selects the |
00054f00  62 61 6e 6b 20 6f 66 20  73 63 72 65 65 6e 20 6d  |bank of screen m|
00054f10  65 6d 6f 72 79 20 77 68  69 63 68 20 69 73 20 74  |emory which is t|
00054f20  6f 20 62 65 20 75 73 65  64 20 62 79 20 74 68 65  |o be used by the|
00054f30  20 64 69 73 70 6c 61 79  20 68 61 72 64 77 61 72  | display hardwar|
00054f40  65 2e 20 54 68 65 20 76  61 6c 75 65 20 6d 61 79  |e. The value may|
00054f50  20 62 65 20 72 65 61 64  20 77 69 74 68 20 3c 4f  | be read with <O|
00054f60  53 5f 42 79 74 65 20 32  35 31 3d 3e 4f 53 5f 42  |S_Byte 251=>OS_B|
00054f70  79 74 65 32 35 31 3e 2e  0a 00 00 00 44 41 54 41  |yte251>.....DATA|
00054f80  2d 02 00 00 4f 53 5f 42  79 74 65 20 31 31 37 20  |-...OS_Byte 117 |
00054f90  20 52 65 61 64 20 56 44  55 20 73 74 61 74 75 73  | Read VDU status|
00054fa0  0a 23 50 61 72 65 6e 74  20 4f 53 5f 42 79 74 65  |.#Parent OS_Byte|
00054fb0  49 6e 64 65 78 0a 3d 3e  09 52 30 20 3d 09 31 31  |Index.=>.R0 =.11|
00054fc0  37 0a 0a 3c 3d 09 52 30  20 70 72 65 73 65 72 76  |7..<=.R0 preserv|
00054fd0  65 64 0a 09 52 31 20 3d  09 3c 73 74 61 74 75 73  |ed..R1 =.<status|
00054fe0  20 66 6c 61 67 73 3d 3e  2e 66 6c 61 67 73 3e 0a  | flags=>.flags>.|
00054ff0  0a 54 68 69 73 20 63 61  6c 6c 20 72 65 74 75 72  |.This call retur|
00055000  6e 73 20 74 68 65 20 63  6f 6e 74 65 6e 74 20 6f  |ns the content o|
00055010  66 20 74 68 65 20 56 44  55 20 73 74 61 74 75 73  |f the VDU status|
00055020  20 62 79 74 65 2e 20 54  68 69 73 20 62 79 74 65  | byte. This byte|
00055030  20 67 69 76 65 73 20 69  6e 66 6f 72 6d 61 74 69  | gives informati|
00055040  6f 6e 20 6f 6e 20 74 68  65 20 77 61 79 20 69 6e  |on on the way in|
00055050  20 77 68 69 63 68 20 63  68 61 72 61 63 74 65 72  | which character|
00055060  73 20 61 72 65 20 6f 75  74 70 75 74 2e 0a 23 53  |s are output..#S|
00055070  75 62 70 61 67 65 20 66  6c 61 67 73 0a 56 44 55  |ubpage flags.VDU|
00055080  20 53 74 61 74 75 73 0a  42 69 74 09 53 74 61 74  | Status.Bit.Stat|
00055090  75 73 20 77 68 65 6e 20  73 65 74 0a 23 4c 69 6e  |us when set.#Lin|
000550a0  65 0a 30 09 50 72 69 6e  74 20 6f 75 74 70 75 74  |e.0.Print output|
000550b0  20 65 6e 61 62 6c 65 64  20 62 79 20 3c 56 44 55  | enabled by <VDU|
000550c0  20 32 3d 3e 56 44 55 3a  32 3e 0a 31 09 55 6e 75  | 2=>VDU:2>.1.Unu|
000550d0  73 65 64 0a 32 09 50 61  67 65 64 20 73 63 72 6f  |sed.2.Paged scro|
000550e0  6c 6c 69 6e 67 20 73 65  6c 65 63 74 65 64 20 62  |lling selected b|
000550f0  79 20 3c 56 44 55 20 31  34 3d 3e 56 44 55 3a 31  |y <VDU 14=>VDU:1|
00055100  34 3e 0a 33 09 54 65 78  74 20 77 69 6e 64 6f 77  |4>.3.Text window|
00055110  20 69 6e 20 66 6f 72 63  65 20 7b 2f 7d 69 2e 65  | in force {/}i.e|
00055120  2e 7b 2f 7d 20 73 6f 66  74 77 61 72 65 20 73 63  |.{/} software sc|
00055130  72 6f 6c 6c 69 6e 67 0a  34 09 49 6e 20 61 20 73  |rolling.4.In a s|
00055140  68 61 64 6f 77 20 6d 6f  64 65 0a 35 09 49 6e 20  |hadow mode.5.In |
00055150  3c 56 44 55 20 35 3d 3e  56 44 55 3a 35 3e 20 6d  |<VDU 5=>VDU:5> m|
00055160  6f 64 65 0a 36 09 43 75  72 73 6f 72 20 65 64 69  |ode.6.Cursor edi|
00055170  74 69 6e 67 20 69 6e 20  70 72 6f 67 72 65 73 73  |ting in progress|
00055180  0a 37 09 53 63 72 65 65  6e 20 64 69 73 61 62 6c  |.7.Screen disabl|
00055190  65 64 20 77 69 74 68 20  3c 56 44 55 20 32 31 3d  |ed with <VDU 21=|
000551a0  3e 56 44 55 3a 32 31 3e  0a 00 00 00 44 41 54 41  |>VDU:21>....DATA|
000551b0  48 02 00 00 4f 53 5f 42  79 74 65 20 31 31 38 20  |H...OS_Byte 118 |
000551c0  20 52 65 66 6c 65 63 74  20 6b 65 79 62 6f 61 72  | Reflect keyboar|
000551d0  64 20 73 74 61 74 75 73  20 69 6e 20 4c 45 44 73  |d status in LEDs|
000551e0  0a 23 50 61 72 65 6e 74  20 4f 53 5f 42 79 74 65  |.#Parent OS_Byte|
000551f0  49 6e 64 65 78 0a 3d 3e  09 52 30 20 3d 09 31 31  |Index.=>.R0 =.11|
00055200  38 0a 0a 3c 3d 09 52 30  20 70 72 65 73 65 72 76  |8..<=.R0 preserv|
00055210  65 64 0a 09 52 31 2c 52  32 20 63 6f 72 72 75 70  |ed..R1,R2 corrup|
00055220  74 65 64 0a 0a 54 68 65  20 73 65 74 74 69 6e 67  |ted..The setting|
00055230  73 20 6f 66 20 43 61 70  73 20 4c 6f 63 6b 2c 20  |s of Caps Lock, |
00055240  53 63 72 6f 6c 6c 20 4c  6f 63 6b 20 61 6e 64 20  |Scroll Lock and |
00055250  4e 75 6d 20 4c 6f 63 6b  20 61 72 65 20 68 65 6c  |Num Lock are hel|
00055260  64 20 69 6e 20 61 20 6c  6f 63 61 74 69 6f 6e 20  |d in a location |
00055270  72 65 66 65 72 72 65 64  20 74 6f 20 61 73 20 74  |referred to as t|
00055280  68 65 20 6b 65 79 62 6f  61 72 64 20 73 74 61 74  |he keyboard stat|
00055290  75 73 20 62 79 74 65 2e  20 53 65 65 20 3c 4f 53  |us byte. See <OS|
000552a0  5f 42 79 74 65 20 32 30  32 3d 3e 4f 53 5f 42 79  |_Byte 202=>OS_By|
000552b0  74 65 32 30 32 3e 20 66  6f 72 20 64 65 74 61 69  |te202> for detai|
000552c0  6c 73 20 6f 66 20 74 68  69 73 2e 20 55 6e 64 65  |ls of this. Unde|
000552d0  72 20 6e 6f 72 6d 61 6c  20 63 69 72 63 75 6d 73  |r normal circums|
000552e0  74 61 6e 63 65 73 20 74  68 65 79 20 61 72 65 20  |tances they are |
000552f0  73 68 6f 77 6e 20 62 79  20 74 68 65 20 6b 65 79  |shown by the key|
00055300  62 6f 61 72 64 20 4c 45  44 73 20 77 68 69 63 68  |board LEDs which|
00055310  20 61 72 65 20 73 65 74  20 69 6e 74 6f 20 74 68  | are set into th|
00055320  65 20 6b 65 79 63 61 70  73 2e 20 48 6f 77 65 76  |e keycaps. Howev|
00055330  65 72 2c 20 69 66 20 74  68 65 20 6b 65 79 62 6f  |er, if the keybo|
00055340  61 72 64 20 73 74 61 74  75 73 20 62 79 74 65 20  |ard status byte |
00055350  69 73 20 77 72 69 74 74  65 6e 20 74 6f 20 75 73  |is written to us|
00055360  69 6e 67 20 4f 53 5f 42  79 74 65 20 32 30 32 2c  |ing OS_Byte 202,|
00055370  20 74 68 65 6e 20 74 68  65 20 4c 45 44 73 20 77  | then the LEDs w|
00055380  69 6c 6c 20 6e 6f 74 20  75 70 64 61 74 65 2e 20  |ill not update. |
00055390  54 68 69 73 20 63 61 6c  6c 20 65 6e 73 75 72 65  |This call ensure|
000553a0  73 2c 20 74 68 61 74 20  74 68 65 20 63 75 72 72  |s, that the curr|
000553b0  65 6e 74 20 63 6f 6e 74  65 6e 74 73 20 6f 66 20  |ent contents of |
000553c0  74 68 65 20 6b 65 79 62  6f 61 72 64 20 73 74 61  |the keyboard sta|
000553d0  74 75 73 20 62 79 74 65  20 61 72 65 20 72 65 66  |tus byte are ref|
000553e0  6c 65 63 74 65 64 20 69  6e 20 74 68 65 20 4c 45  |lected in the LE|
000553f0  44 73 2e 0a 44 41 54 41  90 01 00 00 4f 53 5f 42  |Ds..DATA....OS_B|
00055400  79 74 65 20 31 33 34 20  20 52 65 61 64 20 74 65  |yte 134  Read te|
00055410  78 74 20 63 75 72 73 6f  72 20 70 6f 73 69 74 69  |xt cursor positi|
00055420  6f 6e 0a 23 50 61 72 65  6e 74 20 4f 53 5f 42 79  |on.#Parent OS_By|
00055430  74 65 49 6e 64 65 78 0a  3d 3e 09 52 30 20 3d 09  |teIndex.=>.R0 =.|
00055440  31 33 34 0a 0a 3c 3d 09  52 30 20 70 72 65 73 65  |134..<=.R0 prese|
00055450  72 76 65 64 0a 09 52 31  20 3d 09 70 6f 73 69 74  |rved..R1 =.posit|
00055460  69 6f 6e 20 69 6e 20 78  20 64 69 72 65 63 74 69  |ion in x directi|
00055470  6f 6e 0a 09 52 32 20 3d  09 70 6f 73 69 74 69 6f  |on..R2 =.positio|
00055480  6e 20 69 6e 20 79 20 64  69 72 65 63 74 69 6f 6e  |n in y direction|
00055490  0a 0a 54 68 69 73 20 63  61 6c 6c 20 72 65 74 75  |..This call retu|
000554a0  72 6e 73 20 74 68 65 20  74 65 78 74 20 63 75 72  |rns the text cur|
000554b0  73 6f 72 20 70 6f 73 69  74 69 6f 6e 20 75 6e 6c  |sor position unl|
000554c0  65 73 73 20 63 75 72 73  6f 72 20 65 64 69 74 69  |ess cursor editi|
000554d0  6e 67 20 69 73 20 69 6e  20 70 72 6f 67 72 65 73  |ng is in progres|
000554e0  73 2c 20 69 6e 20 77 68  69 63 68 20 63 61 73 65  |s, in which case|
000554f0  20 74 68 65 20 70 6f 73  69 74 69 6f 6e 20 72 65  | the position re|
00055500  74 75 72 6e 65 64 20 69  73 20 74 68 61 74 20 6f  |turned is that o|
00055510  66 20 74 68 65 20 69 6e  70 75 74 20 63 75 72 73  |f the input curs|
00055520  6f 72 2e 20 3c 4f 53 5f  42 79 74 65 20 31 36 35  |or. <OS_Byte 165|
00055530  3d 3e 4f 53 5f 42 79 74  65 31 36 35 3e 20 72 65  |=>OS_Byte165> re|
00055540  61 64 73 20 74 68 65 20  70 6f 73 69 74 69 6f 6e  |ads the position|
00055550  20 6f 66 20 74 68 65 20  63 75 72 73 6f 72 20 69  | of the cursor i|
00055560  72 72 65 73 70 65 63 74  69 76 65 20 6f 66 20 63  |rrespective of c|
00055570  75 72 73 6f 72 20 65 64  69 74 69 6e 67 20 6d 6f  |ursor editing mo|
00055580  64 65 2e 0a 44 41 54 41  29 02 00 00 4f 53 5f 42  |de..DATA)...OS_B|
00055590  79 74 65 20 31 33 35 20  20 52 65 61 64 20 63 68  |yte 135  Read ch|
000555a0  61 72 20 61 74 20 63 75  72 73 6f 72 20 70 6f 73  |ar at cursor pos|
000555b0  69 74 69 6f 6e 20 61 6e  64 20 73 63 72 65 65 6e  |ition and screen|
000555c0  20 6d 6f 64 65 0a 23 50  61 72 65 6e 74 20 4f 53  | mode.#Parent OS|
000555d0  5f 42 79 74 65 49 6e 64  65 78 0a 3d 3e 09 52 30  |_ByteIndex.=>.R0|
000555e0  20 3d 09 31 33 35 0a 0a  3c 3d 09 52 30 20 70 72  | =.135..<=.R0 pr|
000555f0  65 73 65 72 76 65 64 0a  09 52 31 20 3d 09 41 53  |eserved..R1 =.AS|
00055600  43 49 49 20 76 61 6c 75  65 20 6f 66 20 63 68 61  |CII value of cha|
00055610  72 61 63 74 65 72 20 28  30 20 69 66 20 75 6e 72  |racter (0 if unr|
00055620  65 61 64 61 62 6c 65 29  0a 09 52 32 20 3d 09 73  |eadable)..R2 =.s|
00055630  63 72 65 65 6e 20 6d 6f  64 65 0a 0a 54 68 69 73  |creen mode..This|
00055640  20 63 61 6c 6c 20 72 65  74 75 72 6e 73 20 74 68  | call returns th|
00055650  65 20 73 63 72 65 65 6e  20 6d 6f 64 65 20 61 6e  |e screen mode an|
00055660  64 20 74 68 65 20 41 53  43 49 49 20 63 6f 64 65  |d the ASCII code|
00055670  20 6f 66 20 74 68 65 20  63 68 61 72 61 63 74 65  | of the characte|
00055680  72 20 61 74 20 74 68 65  20 74 65 78 74 20 63 75  |r at the text cu|
00055690  72 73 6f 72 20 70 6f 73  69 74 69 6f 6e 2e 20 49  |rsor position. I|
000556a0  66 20 63 75 72 73 6f 72  20 65 64 69 74 69 6e 67  |f cursor editing|
000556b0  20 69 73 20 69 6e 20 70  72 6f 67 72 65 73 73 2c  | is in progress,|
000556c0  20 69 74 20 72 65 74 75  72 6e 73 20 74 68 65 20  | it returns the |
000556d0  63 68 61 72 61 63 74 65  72 20 63 6f 64 65 20 72  |character code r|
000556e0  65 74 75 72 6e 65 64 20  62 79 20 74 68 65 20 63  |eturned by the c|
000556f0  68 61 72 61 63 74 65 72  20 61 74 20 74 68 65 20  |haracter at the |
00055700  69 6e 70 75 74 20 63 75  72 73 6f 72 73 20 70 6f  |input cursors po|
00055710  73 69 74 69 6f 6e 20 28  69 65 20 74 68 65 20 63  |sition (ie the c|
00055720  68 61 72 61 63 74 65 72  20 77 6f 75 6c 64 20 62  |haracter would b|
00055730  65 20 63 6f 70 69 65 64  20 61 73 20 69 6e 70 75  |e copied as inpu|
00055740  74 20 74 68 65 20 6e 65  78 74 20 74 69 6d 65 20  |t the next time |
00055750  63 6f 70 79 20 69 73 20  70 72 65 73 73 65 64 2e  |copy is pressed.|
00055760  29 20 4e 6f 74 65 20 74  68 61 74 20 74 68 65 20  |) Note that the |
00055770  73 63 72 65 65 6e 20 6d  6f 64 65 20 6e 65 76 65  |screen mode neve|
00055780  72 20 68 61 73 20 62 69  74 20 37 20 73 65 74 2c  |r has bit 7 set,|
00055790  20 65 76 65 6e 20 69 66  20 69 74 27 73 20 61 20  | even if it's a |
000557a0  73 68 61 64 6f 77 20 6d  6f 64 65 2e 0a 00 00 00  |shadow mode.....|
000557b0  44 41 54 41 8f 01 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
000557c0  31 34 34 20 20 53 65 74  20 76 65 72 74 69 63 61  |144  Set vertica|
000557d0  6c 20 73 68 69 66 74 20  61 6e 64 20 69 6e 74 65  |l shift and inte|
000557e0  72 6c 61 63 65 0a 23 50  61 72 65 6e 74 20 4f 53  |rlace.#Parent OS|
000557f0  5f 42 79 74 65 49 6e 64  65 78 0a 3d 3e 09 52 30  |_ByteIndex.=>.R0|
00055800  20 3d 09 31 34 34 0a 09  52 31 20 3d 09 76 65 72  | =.144..R1 =.ver|
00055810  74 69 63 61 6c 20 73 63  72 65 65 6e 20 73 68 69  |tical screen shi|
00055820  66 74 20 28 61 73 20 61  20 73 69 67 6e 65 64 20  |ft (as a signed |
00055830  38 20 62 69 74 20 6e 75  6d 62 65 72 29 0a 09 52  |8 bit number)..R|
00055840  32 20 3d 09 69 6e 74 65  72 6c 61 63 65 20 66 6c  |2 =.interlace fl|
00055850  61 67 2c 20 30 3d 6f 6e  2c 20 31 3d 6f 66 66 0a  |ag, 0=on, 1=off.|
00055860  0a 3c 3d 09 52 30 20 70  72 65 73 65 72 76 65 64  |.<=.R0 preserved|
00055870  0a 09 52 31 20 3d 09 70  72 65 76 69 6f 75 73 20  |..R1 =.previous |
00055880  76 65 72 74 69 63 61 6c  20 73 63 72 65 65 6e 20  |vertical screen |
00055890  73 68 69 66 74 0a 09 52  32 20 3d 09 70 72 65 76  |shift..R2 =.prev|
000558a0  69 6f 75 73 20 69 6e 74  65 72 6c 61 63 65 20 66  |ious interlace f|
000558b0  6c 61 67 0a 0a 54 68 69  73 20 63 61 6c 6c 20 73  |lag..This call s|
000558c0  70 65 63 69 66 69 65 73  20 74 68 65 20 76 65 72  |pecifies the ver|
000558d0  74 69 63 61 6c 20 73 63  72 65 65 6e 20 61 6c 69  |tical screen ali|
000558e0  67 6e 6d 65 6e 74 20 61  6e 64 20 69 6e 74 65 72  |gnment and inter|
000558f0  6c 61 63 65 20 6f 70 74  69 6f 6e 73 20 61 66 74  |lace options aft|
00055900  65 72 20 74 68 65 20 6e  65 78 74 20 6d 6f 64 65  |er the next mode|
00055910  20 63 68 61 6e 67 65 2e  20 54 68 69 73 20 69 73  | change. This is|
00055920  20 65 71 75 69 76 61 6c  65 6e 74 20 74 6f 20 3c  | equivalent to <|
00055930  2a 54 56 3d 3e 2a 48 65  6c 70 20 54 56 3e 2e 00  |*TV=>*Help TV>..|
00055940  44 41 54 41 00 01 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00055950  31 36 35 20 20 52 65 61  64 20 6f 75 74 70 75 74  |165  Read output|
00055960  20 63 75 72 73 6f 72 20  70 6f 73 69 74 69 6f 6e  | cursor position|
00055970  0a 23 50 61 72 65 6e 74  20 4f 53 5f 42 79 74 65  |.#Parent OS_Byte|
00055980  49 6e 64 65 78 0a 3d 3e  09 52 30 20 3d 09 31 36  |Index.=>.R0 =.16|
00055990  35 0a 0a 3c 3d 09 52 30  20 70 72 65 73 65 72 76  |5..<=.R0 preserv|
000559a0  65 64 0a 09 52 31 20 3d  09 70 6f 73 69 74 69 6f  |ed..R1 =.positio|
000559b0  6e 20 69 6e 20 78 20 64  69 72 65 63 74 69 6f 6e  |n in x direction|
000559c0  0a 09 52 32 20 3d 09 70  6f 73 69 74 69 6f 6e 20  |..R2 =.position |
000559d0  69 6e 20 79 20 64 69 72  65 63 74 69 6f 6e 0a 0a  |in y direction..|
000559e0  54 68 69 73 20 63 61 6c  6c 20 72 65 74 75 72 6e  |This call return|
000559f0  73 20 74 68 65 20 70 6f  73 69 74 69 6f 6e 20 6f  |s the position o|
00055a00  66 20 74 68 65 20 6f 75  74 70 75 74 20 63 75 72  |f the output cur|
00055a10  73 6f 72 2c 20 65 76 65  6e 20 77 68 69 6c 73 74  |sor, even whilst|
00055a20  20 63 75 72 73 6f 72 20  65 64 69 74 69 6e 67 20  | cursor editing |
00055a30  69 73 20 69 6e 20 70 72  6f 67 72 65 73 73 2e 0a  |is in progress..|
00055a40  44 41 54 41 b6 01 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00055a50  31 37 37 20 20 52 65 61  64 20 69 6e 70 75 74 20  |177  Read input |
00055a60  73 6f 75 72 63 65 0a 23  50 61 72 65 6e 74 20 4f  |source.#Parent O|
00055a70  53 5f 42 79 74 65 49 6e  64 65 78 0a 3d 3e 09 52  |S_ByteIndex.=>.R|
00055a80  30 20 3d 09 31 37 37 0a  09 52 31 20 3d 09 30 0a  |0 =.177..R1 =.0.|
00055a90  09 52 32 20 3d 09 32 35  35 0a 0a 3c 3d 09 52 30  |.R2 =.255..<=.R0|
00055aa0  20 70 72 65 73 65 72 76  65 64 0a 09 52 31 20 3d  | preserved..R1 =|
00055ab0  09 3c 76 61 6c 75 65 20  6f 66 20 73 74 72 65 61  |.<value of strea|
00055ac0  6d 20 73 65 6c 65 63 74  69 6f 6e 3d 3e 4f 53 5f  |m selection=>OS_|
00055ad0  42 79 74 65 69 6e 70 75  74 73 6f 75 72 63 65 73  |Byteinputsources|
00055ae0  3e 0a 09 52 32 20 63 6f  72 72 75 70 74 65 64 0a  |>..R2 corrupted.|
00055af0  0a 54 68 69 73 20 72 65  74 75 72 6e 73 20 74 68  |.This returns th|
00055b00  65 20 6e 75 6d 62 65 72  20 6f 66 20 74 68 65 20  |e number of the |
00055b10  62 75 66 66 65 72 20 66  72 6f 6d 20 77 68 69 63  |buffer from whic|
00055b20  68 20 63 68 61 72 61 63  74 65 72 20 69 6e 70 75  |h character inpu|
00055b30  74 20 67 65 74 73 20 63  68 61 72 61 63 74 65 72  |t gets character|
00055b40  73 20 28 61 73 73 75 6d  69 6e 67 20 45 78 65 63  |s (assuming Exec|
00055b50  20 69 73 20 6e 6f 74 20  65 6e 61 62 6c 65 64 20  | is not enabled |
00055b60  20 2d 20 73 65 65 20 3c  4f 53 5f 42 79 74 65 20  | - see <OS_Byte |
00055b70  31 39 38 3d 3e 4f 53 5f  42 79 74 65 31 39 38 3e  |198=>OS_Byte198>|
00055b80  29 2e 20 59 6f 75 20 2a  6d 75 73 74 20 6e 6f 74  |). You *must not|
00055b90  2a 20 75 73 65 20 61 6e  79 20 6e 75 6d 62 65 72  |* use any number|
00055ba0  73 20 74 68 61 6e 20 30  20 61 6e 64 20 32 35 35  |s than 0 and 255|
00055bb0  20 66 6f 72 20 52 31 20  61 6e 64 20 52 32 20 2d  | for R1 and R2 -|
00055bc0  20 74 6f 20 63 68 61 6e  67 65 20 74 68 69 73 20  | to change this |
00055bd0  76 61 72 69 61 62 6c 65  20 75 73 65 20 3c 4f 53  |variable use <OS|
00055be0  5f 42 79 74 65 20 32 3d  3e 4f 53 5f 42 79 74 65  |_Byte 2=>OS_Byte|
00055bf0  30 30 32 3e 2e 0a 00 00  44 41 54 41 25 01 00 00  |002>....DATA%...|
00055c00  4f 53 5f 42 79 74 65 20  31 39 36 20 20 52 65 61  |OS_Byte 196  Rea|
00055c10  64 2f 57 72 69 74 65 20  6b 65 79 62 6f 61 72 64  |d/Write keyboard|
00055c20  20 61 75 74 6f 20 72 65  70 65 61 74 20 64 65 6c  | auto repeat del|
00055c30  61 79 0a 23 50 61 72 65  6e 74 20 4f 53 5f 42 79  |ay.#Parent OS_By|
00055c40  74 65 49 6e 64 65 78 0a  3d 3e 09 52 30 20 3d 09  |teIndex.=>.R0 =.|
00055c50  31 39 36 0a 09 52 31 20  3d 09 45 4f 52 20 76 61  |196..R1 =.EOR va|
00055c60  6c 75 65 0a 09 52 32 20  3d 09 41 4e 44 20 76 61  |lue..R2 =.AND va|
00055c70  6c 75 65 0a 0a 3c 3d 09  52 30 20 70 72 65 73 65  |lue..<=.R0 prese|
00055c80  72 76 65 64 0a 09 52 31  20 3d 09 76 61 6c 75 65  |rved..R1 =.value|
00055c90  20 62 65 66 6f 72 65 20  62 65 69 6e 67 20 6f 76  | before being ov|
00055ca0  65 72 77 72 69 74 74 65  6e 0a 09 52 32 20 3d 09  |erwritten..R2 =.|
00055cb0  6b 65 79 62 6f 61 72 64  20 61 75 74 6f 20 72 65  |keyboard auto re|
00055cc0  70 65 61 74 20 72 61 74  65 20 28 73 65 65 20 3c  |peat rate (see <|
00055cd0  4f 53 5f 42 79 74 65 20  31 39 37 3d 3e 4f 53 5f  |OS_Byte 197=>OS_|
00055ce0  42 79 74 65 31 39 37 3e  29 0a 0a 53 65 65 20 3c  |Byte197>)..See <|
00055cf0  4f 53 5f 42 79 74 65 20  31 31 3d 3e 4f 53 5f 42  |OS_Byte 11=>OS_B|
00055d00  79 74 65 30 31 31 3e 20  66 6f 72 20 6d 6f 72 65  |yte011> for more|
00055d10  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 2e 00 00 00  | information....|
00055d20  44 41 54 41 62 01 00 00  4f 53 5f 42 79 74 65 20  |DATAb...OS_Byte |
00055d30  31 39 37 20 20 52 65 61  64 2f 57 72 69 74 65 20  |197  Read/Write |
00055d40  6b 65 79 62 6f 61 72 64  20 61 75 74 6f 20 72 65  |keyboard auto re|
00055d50  70 65 61 74 20 72 61 74  65 0a 23 50 61 72 65 6e  |peat rate.#Paren|
00055d60  74 20 4f 53 5f 42 79 74  65 49 6e 64 65 78 0a 3d  |t OS_ByteIndex.=|
00055d70  3e 09 52 30 20 3d 09 31  39 37 0a 09 52 31 20 3d  |>.R0 =.197..R1 =|
00055d80  09 45 4f 52 20 76 61 6c  75 65 0a 09 52 32 20 3d  |.EOR value..R2 =|
00055d90  09 41 4e 44 20 76 61 6c  75 65 0a 0a 3c 3d 09 52  |.AND value..<=.R|
00055da0  30 20 70 72 65 73 65 72  76 65 64 0a 09 52 31 20  |0 preserved..R1 |
00055db0  3d 09 76 61 6c 75 65 20  62 65 66 6f 72 65 20 62  |=.value before b|
00055dc0  65 69 6e 67 20 6f 76 65  72 77 72 69 74 74 65 6e  |eing overwritten|
00055dd0  0a 09 52 32 20 3d 09 63  6f 72 72 75 70 74 65 64  |..R2 =.corrupted|
00055de0  0a 0a 4e 6f 74 65 2c 20  74 68 61 74 20 2a 46 58  |..Note, that *FX|
00055df0  20 31 32 2c 30 20 72 65  73 65 74 73 20 74 68 65  | 12,0 resets the|
00055e00  20 61 75 74 6f 20 72 65  70 65 61 74 20 72 61 74  | auto repeat rat|
00055e10  65 2f 64 65 6c 61 79 20  74 6f 20 64 65 66 61 75  |e/delay to defau|
00055e20  6c 74 20 2a 46 58 20 31  39 37 2c 30 20 73 65 74  |lt *FX 197,0 set|
00055e30  73 20 74 68 65 20 61 75  74 6f 20 72 65 70 65 61  |s the auto repea|
00055e40  74 20 72 61 74 65 20 74  6f 20 7a 65 72 6f 2e 20  |t rate to zero. |
00055e50  53 65 65 20 3c 4f 53 5f  42 79 74 65 20 31 32 3d  |See <OS_Byte 12=|
00055e60  3e 4f 53 5f 42 79 74 65  30 31 32 3e 20 66 6f 72  |>OS_Byte012> for|
00055e70  20 6d 6f 72 65 20 69 6e  66 6f 72 6d 61 74 69 6f  | more informatio|
00055e80  6e 2e 00 00 44 41 54 41  13 04 00 00 4f 53 5f 42  |n...DATA....OS_B|
00055e90  79 74 65 20 32 30 32 20  20 52 65 61 64 2f 57 72  |yte 202  Read/Wr|
00055ea0  69 74 65 20 6b 65 79 62  6f 61 72 64 20 73 74 61  |ite keyboard sta|
00055eb0  74 75 73 20 62 79 74 65  0a 23 50 61 72 65 6e 74  |tus byte.#Parent|
00055ec0  20 4f 53 5f 42 79 74 65  49 6e 64 65 78 0a 3d 3e  | OS_ByteIndex.=>|
00055ed0  09 52 30 20 3d 09 32 30  32 0a 09 52 31 20 3d 09  |.R0 =.202..R1 =.|
00055ee0  45 4f 52 20 76 61 6c 75  65 0a 09 52 32 20 3d 09  |EOR value..R2 =.|
00055ef0  41 4e 44 20 76 61 6c 75  65 0a 0a 3c 3d 09 52 30  |AND value..<=.R0|
00055f00  20 70 72 65 73 65 72 76  65 64 0a 09 52 31 20 3d  | preserved..R1 =|
00055f10  09 3c 73 74 61 74 75 73  20 62 65 66 6f 72 65 20  |.<status before |
00055f20  62 65 69 6e 67 20 6f 76  65 72 77 72 69 74 74 65  |being overwritte|
00055f30  6e 3d 3e 2e 73 74 61 74  75 73 3e 0a 09 52 32 20  |n=>.status>..R2 |
00055f40  3d 09 73 65 72 69 61 6c  20 69 6e 70 75 74 20 74  |=.serial input t|
00055f50  68 72 65 73 68 6f 6c 64  20 28 73 65 65 20 3c 4f  |hreshold (see <O|
00055f60  53 5f 42 79 74 65 20 32  30 33 3d 3e 4f 53 5f 42  |S_Byte 203=>OS_B|
00055f70  79 74 65 32 30 33 3e 29  0a 0a 54 68 65 20 6b 65  |yte203>)..The ke|
00055f80  79 62 6f 61 72 64 20 73  74 61 74 75 73 20 62 79  |yboard status by|
00055f90  74 65 20 68 6f 6c 64 73  20 69 6e 66 6f 72 6d 61  |te holds informa|
00055fa0  74 69 6f 6e 20 6f 6e 20  74 68 65 20 63 75 72 72  |tion on the curr|
00055fb0  65 6e 74 20 73 74 61 74  75 73 20 6f 66 20 74 68  |ent status of th|
00055fc0  65 20 6b 65 79 62 6f 61  72 64 2c 20 73 75 63 68  |e keyboard, such|
00055fd0  20 61 73 20 74 68 65 20  73 65 74 74 69 6e 67 20  | as the setting |
00055fe0  6f 66 20 43 61 70 73 20  4c 6f 63 6b 2e 20 54 68  |of Caps Lock. Th|
00055ff0  69 73 20 63 61 6c 6c 20  65 6e 61 62 6c 65 73 20  |is call enables |
00056000  79 6f 75 20 74 6f 20 72  65 61 64 20 61 6e 64 20  |you to read and |
00056010  63 68 61 6e 67 65 20 74  68 65 73 65 20 73 65 74  |change these set|
00056020  74 69 6e 67 73 2e 20 4e  6f 74 65 20 74 68 61 74  |tings. Note that|
00056030  20 74 68 69 73 20 63 61  6c 6c 20 64 6f 65 73 20  | this call does |
00056040  6e 6f 74 20 75 70 64 61  74 65 20 74 68 65 20 4c  |not update the L|
00056050  45 44 73 2e 20 49 66 20  79 6f 75 20 64 6f 6e 27  |EDs. If you don'|
00056060  74 20 73 74 61 6d 70 20  74 68 69 73 20 73 74 61  |t stamp this sta|
00056070  74 65 20 77 69 74 68 20  3c 4f 53 5f 42 79 74 65  |te with <OS_Byte|
00056080  20 31 31 38 3d 3e 4f 53  5f 42 79 74 65 31 31 38  | 118=>OS_Byte118|
00056090  3e 2c 20 74 68 65 20 4c  45 44 73 20 77 6f 6e 27  |>, the LEDs won'|
000560a0  74 20 62 65 20 73 77 69  74 63 68 65 64 20 6f 6e  |t be switched on|
000560b0  20 6f 72 20 6f 66 66 2e  0a 23 53 75 62 70 61 67  | or off..#Subpag|
000560c0  65 20 73 74 61 74 75 73  0a 53 74 61 74 75 73 20  |e status.Status |
000560d0  62 79 74 65 20 66 6f 72  6d 61 74 0a 42 69 74 09  |byte format.Bit.|
000560e0  56 61 6c 75 65 09 53 74  61 74 65 09 4d 65 61 6e  |Value.State.Mean|
000560f0  69 6e 67 0a 23 4c 69 6e  65 0a 30 09 2d 09 2d 09  |ing.#Line.0.-.-.|
00056100  52 65 73 65 72 76 65 64  20 66 6f 72 20 74 68 65  |Reserved for the|
00056110  20 6b 65 79 62 6f 61 72  64 20 68 61 6e 64 6c 65  | keyboard handle|
00056120  72 2c 20 6d 75 73 74 20  62 65 20 70 72 65 73 65  |r, must be prese|
00056130  72 76 65 64 20 77 68 65  6e 20 77 72 69 74 69 6e  |rved when writin|
00056140  67 0a 31 09 30 09 6f 66  66 09 53 63 72 6f 6c 6c  |g.1.0.off.Scroll|
00056150  20 6c 6f 63 6b 0a 09 31  09 6f 6e 0a 32 09 30 09  | lock..1.on.2.0.|
00056160  6f 6e 09 4e 75 6d 20 4c  6f 63 6b 0a 09 31 09 6f  |on.Num Lock..1.o|
00056170  66 66 0a 33 09 30 09 6f  66 66 09 53 68 69 66 74  |ff.3.0.off.Shift|
00056180  0a 09 31 09 6f 6e 0a 34  09 30 09 6f 6e 09 43 61  |..1.on.4.0.on.Ca|
00056190  70 73 20 4c 6f 63 6b 0a  09 31 09 6f 66 66 0a 35  |ps Lock..1.off.5|
000561a0  09 20 09 20 09 4e 6f 72  6d 61 6c 6c 79 20 73 65  |. . .Normally se|
000561b0  74 0a 36 09 30 09 6f 66  66 09 43 6f 6e 74 72 6f  |t.6.0.off.Contro|
000561c0  6c 0a 09 31 09 6f 6e 0a  37 09 30 09 6f 66 66 09  |l..1.on.7.0.off.|
000561d0  53 68 69 66 74 20 45 6e  61 62 6c 65 0a 09 31 09  |Shift Enable..1.|
000561e0  6f 6e 0a 0a 4f 6e 20 6d  65 61 6e 73 20 4c 45 44  |on..On means LED|
000561f0  20 6f 6e 20 6f 72 20 6b  65 79 20 70 72 65 73 73  | on or key press|
00056200  65 64 2c 20 6f 66 66 20  74 68 65 20 6f 70 70 6f  |ed, off the oppo|
00056210  73 69 74 65 2e 20 49 66  20 43 61 70 73 20 4c 6f  |site. If Caps Lo|
00056220  63 6b 20 69 73 20 6f 6e  20 61 6e 64 20 53 68 69  |ck is on and Shi|
00056230  66 74 20 45 6e 61 62 6c  65 20 6f 66 66 2c 20 53  |ft Enable off, S|
00056240  68 69 66 74 20 77 69 6c  6c 20 68 61 76 65 20 6e  |hift will have n|
00056250  6f 20 65 66 66 65 63 74  20 6f 6e 20 74 68 65 20  |o effect on the |
00056260  6c 65 74 74 65 72 73 2c  20 69 66 20 53 68 69 66  |letters, if Shif|
00056270  74 20 65 6e 61 62 6c 65  20 69 73 20 6f 6e 2c 20  |t enable is on, |
00056280  79 6f 75 27 6c 6c 20 67  65 74 20 6c 6f 77 65 72  |you'll get lower|
00056290  20 63 61 73 65 2e 0a 00  44 41 54 41 04 04 00 00  | case...DATA....|
000562a0  4f 53 5f 42 79 74 65 20  32 35 35 20 20 52 65 61  |OS_Byte 255  Rea|
000562b0  64 2f 57 72 69 74 65 20  62 6f 6f 74 20 6f 70 74  |d/Write boot opt|
000562c0  69 6f 6e 0a 23 50 61 72  65 6e 74 20 4f 53 5f 42  |ion.#Parent OS_B|
000562d0  79 74 65 49 6e 64 65 78  0a 3d 3e 09 52 30 20 3d  |yteIndex.=>.R0 =|
000562e0  09 32 35 35 0a 09 52 31  20 3d 09 45 4f 52 20 76  |.255..R1 =.EOR v|
000562f0  61 6c 75 65 0a 09 52 32  20 3d 09 41 4e 44 20 76  |alue..R2 =.AND v|
00056300  61 6c 75 65 0a 0a 3c 3d  09 52 30 20 70 72 65 73  |alue..<=.R0 pres|
00056310  65 72 76 65 64 0a 09 52  31 20 3d 09 70 72 65 76  |erved..R1 =.prev|
00056320  69 6f 75 73 20 73 74 61  74 65 0a 09 52 32 20 63  |ious state..R2 c|
00056330  6f 72 72 75 70 74 65 64  0a 0a 54 68 69 73 20 63  |orrupted..This c|
00056340  61 6c 6c 20 72 65 61 64  73 20 6f 72 20 73 65 74  |all reads or set|
00056350  73 20 74 68 65 20 63 75  72 72 65 6e 74 20 61 75  |s the current au|
00056360  74 6f 20 62 6f 6f 74 20  66 6c 61 67 20 69 6e 20  |to boot flag in |
00056370  3c 43 4d 4f 53 3d 3e 4f  53 5f 62 79 74 65 63 6d  |<CMOS=>OS_bytecm|
00056380  6f 73 3e 20 52 41 4d 2e  20 42 65 63 61 75 73 65  |os> RAM. Because|
00056390  20 74 68 69 73 20 63 61  6c 6c 20 69 73 20 6f 62  | this call is ob|
000563a0  73 6f 6c 65 74 65 2c 20  79 6f 75 20 73 68 6f 75  |solete, you shou|
000563b0  6c 64 20 75 73 65 20 3c  4f 53 5f 46 53 43 6f 6e  |ld use <OS_FSCon|
000563c0  74 72 6f 6c 20 31 30 3d  3e 4f 53 5f 46 53 43 6f  |trol 10=>OS_FSCo|
000563d0  6e 74 72 6f 6c 31 30 3e  20 69 6e 20 70 72 65 66  |ntrol10> in pref|
000563e0  65 72 65 6e 63 65 2e 20  49 66 20 4e 6f 42 6f 6f  |erence. If NoBoo|
000563f0  74 20 69 73 20 73 65 74  2c 20 61 66 74 65 72 20  |t is set, after |
00056400  61 20 72 65 73 65 74 20  74 68 65 20 63 6f 6d 70  |a reset the comp|
00056410  75 74 65 72 20 69 73 6e  27 74 20 61 75 74 6f 6d  |uter isn't autom|
00056420  61 74 69 63 61 6c 6c 79  20 62 6f 6f 74 65 64 2e  |atically booted.|
00056430  20 49 66 20 42 6f 6f 74  20 69 73 20 73 65 74 2c  | If Boot is set,|
00056440  20 74 68 65 20 62 6f 6f  74 20 66 69 6c 65 20 6f  | the boot file o|
00056450  6e 20 74 68 65 20 66 69  6c 69 6e 67 20 73 79 73  |n the filing sys|
00056460  74 65 6d 20 69 73 20 61  63 63 65 73 73 65 64 20  |tem is accessed |
00056470  6f 6e 20 72 65 73 65 74  2e 20 54 6f 20 69 6e 76  |on reset. To inv|
00056480  65 72 74 20 74 68 69 73  20 73 65 74 74 69 6e 67  |ert this setting|
00056490  2c 20 68 6f 6c 64 20 53  68 69 66 74 20 64 6f 77  |, hold Shift dow|
000564a0  6e 20 61 66 74 65 72 20  72 65 6c 65 61 73 69 6e  |n after releasin|
000564b0  67 20 74 68 65 20 72 65  73 65 74 20 6b 65 79 73  |g the reset keys|
000564c0  2e 20 54 68 65 20 62 69  74 20 33 20 6f 66 20 52  |. The bit 3 of R|
000564d0  31 20 69 6e 64 69 63 61  74 65 73 20 74 68 65 20  |1 indicates the |
000564e0  6e 61 6d 65 64 20 6f 70  74 69 6f 6e 2e 20 53 65  |named option. Se|
000564f0  74 20 6d 65 61 6e 73 20  4e 6f 42 6f 6f 74 2c 20  |t means NoBoot, |
00056500  43 6c 65 61 72 20 6d 65  61 6e 73 20 42 6f 6f 74  |Clear means Boot|
00056510  2e 0a 0a 48 75 6d 2e 20  59 65 73 2e 20 54 68 69  |...Hum. Yes. Thi|
00056520  73 20 69 73 20 77 68 61  74 20 74 68 65 20 50 52  |s is what the PR|
00056530  4d 20 73 61 79 73 2c 20  61 6e 64 20 69 74 27 73  |M says, and it's|
00056540  20 75 74 74 65 72 20 67  61 72 62 61 67 65 2e 0a  | utter garbage..|
00056550  0a 54 68 69 73 20 63 61  6c 6c 20 72 65 61 64 73  |.This call reads|
00056560  20 6f 72 20 73 65 74 73  20 74 68 65 20 2a 73 6f  | or sets the *so|
00056570  66 74 2a 20 63 6f 70 79  2c 20 77 68 69 63 68 20  |ft* copy, which |
00056580  64 65 66 61 75 6c 74 73  20 74 6f 20 74 68 65 20  |defaults to the |
00056590  63 6f 6e 74 65 6e 74 73  20 6f 66 20 74 68 65 20  |contents of the |
000565a0  43 4d 4f 53 20 72 61 6d  2e 20 42 75 74 20 79 6f  |CMOS ram. But yo|
000565b0  75 20 63 61 6e 20 63 68  61 6e 67 65 20 69 74 2e  |u can change it.|
000565c0  20 41 6e 64 20 4f 53 5f  46 53 43 6f 6e 74 72 6f  | And OS_FSContro|
000565d0  6c 20 31 30 20 2a 73 65  74 73 2a 20 74 68 65 20  |l 10 *sets* the |
000565e0  2a 62 6f 6f 74 2a 20 6f  70 74 69 6f 6e 2c 20 77  |*boot* option, w|
000565f0  68 69 63 68 20 69 73 20  73 6f 6d 65 74 68 69 6e  |hich is somethin|
00056600  67 20 65 6c 73 65 20 28  65 76 65 6e 20 69 66 20  |g else (even if |
00056610  6d 61 63 68 69 6e 65 20  77 69 6c 6c 20 74 72 79  |machine will try|
00056620  20 74 6f 20 62 6f 6f 74  2c 20 69 66 20 74 68 65  | to boot, if the|
00056630  20 62 6f 6f 74 20 6f 70  74 69 6f 6e 20 6f 6e 20  | boot option on |
00056640  74 68 65 20 64 69 73 63  20 69 73 20 6f 66 66 2c  |the disc is off,|
00056650  20 6e 6f 74 68 69 6e 67  20 68 61 70 70 65 6e 73  | nothing happens|
00056660  2e 29 20 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 20  |.) OS_FSControl |
00056670  31 30 20 63 61 6e 6e 6f  74 20 2a 72 65 61 64 2a  |10 cannot *read*|
00056680  20 61 6e 79 74 68 69 6e  67 2e 20 49 74 27 73 20  | anything. It's |
00056690  77 72 69 74 65 20 6f 6e  6c 79 2e 0a 44 41 54 41  |write only..DATA|
000566a0  05 02 00 00 4f 53 5f 42  79 74 65 20 31 32 20 20  |....OS_Byte 12  |
000566b0  57 72 69 74 65 20 6b 65  79 62 6f 61 72 64 20 61  |Write keyboard a|
000566c0  75 74 6f 20 72 65 70 65  61 74 20 72 61 74 65 0a  |uto repeat rate.|
000566d0  23 50 61 72 65 6e 74 20  4f 53 5f 42 79 74 65 0a  |#Parent OS_Byte.|
000566e0  3d 3e 09 52 30 20 3d 09  31 32 0a 09 52 31 20 3d  |=>.R0 =.12..R1 =|
000566f0  09 72 65 70 65 61 74 20  72 61 74 65 20 69 6e 20  |.repeat rate in |
00056700  63 65 6e 74 69 73 65 63  6f 6e 64 73 20 28 30 20  |centiseconds (0 |
00056710  74 6f 20 73 65 74 20 72  65 70 65 61 74 20 64 65  |to set repeat de|
00056720  6c 61 79 2f 72 61 74 65  20 74 6f 20 64 65 66 61  |lay/rate to defa|
00056730  75 6c 74 29 0a 0a 3c 3d  09 52 30 20 70 72 65 73  |ult)..<=.R0 pres|
00056740  65 72 76 65 64 0a 09 52  31 20 3d 09 70 72 65 76  |erved..R1 =.prev|
00056750  69 6f 75 73 20 72 65 70  65 61 74 20 72 61 74 65  |ious repeat rate|
00056760  0a 09 52 32 20 63 6f 72  72 75 70 74 65 64 0a 0a  |..R2 corrupted..|
00056770  41 66 74 65 72 20 74 68  65 20 61 75 74 6f 2d 72  |After the auto-r|
00056780  65 70 65 61 74 20 64 65  6c 61 79 20 73 70 65 63  |epeat delay spec|
00056790  69 66 69 65 64 20 62 79  20 3c 4f 53 5f 42 79 74  |ified by <OS_Byt|
000567a0  65 20 31 31 3d 3e 4f 53  5f 42 79 74 65 30 31 31  |e 11=>OS_Byte011|
000567b0  3e 2c 20 65 61 63 68 20  6b 65 79 20 77 69 6c 6c  |>, each key will|
000567c0  20 72 65 70 65 61 74 20  75 6e 74 69 6c 20 72 65  | repeat until re|
000567d0  6c 65 61 73 65 64 20 61  74 20 74 68 65 20 72 61  |leased at the ra|
000567e0  74 65 20 70 61 73 73 65  64 20 74 6f 20 74 68 69  |te passed to thi|
000567f0  73 20 63 61 6c 6c 2e 20  54 68 69 73 20 65 6e 61  |s call. This ena|
00056800  62 6c 65 73 20 79 6f 75  20 74 6f 20 63 68 61 6e  |bles you to chan|
00056810  67 65 20 74 68 65 20 69  6e 69 74 69 61 6c 20 72  |ge the initial r|
00056820  61 74 65 20 66 72 6f 6d  20 74 68 65 20 64 65 66  |ate from the def|
00056830  61 75 6c 74 20 73 65 74  20 62 79 20 3c 2a 43 6f  |ault set by <*Co|
00056840  6e 66 69 67 75 72 65 20  52 65 70 65 61 74 3d 3e  |nfigure Repeat=>|
00056850  2a 53 74 61 74 75 73 20  52 65 70 65 61 74 3e 20  |*Status Repeat> |
00056860  54 68 69 73 20 76 61 72  69 61 62 6c 65 20 6d 61  |This variable ma|
00056870  79 20 61 6c 73 6f 20 62  65 20 73 65 74 2f 72 65  |y also be set/re|
00056880  61 64 20 62 79 20 3c 4f  53 5f 42 79 74 65 20 31  |ad by <OS_Byte 1|
00056890  39 37 3d 3e 4f 53 5f 42  79 74 65 31 39 37 3e 2e  |97=>OS_Byte197>.|
000568a0  0a 00 00 00 44 41 54 41  7b 02 00 00 4f 53 5f 42  |....DATA{...OS_B|
000568b0  79 74 65 20 33 20 20 53  70 65 63 69 66 79 20 6f  |yte 3  Specify o|
000568c0  75 74 70 75 74 20 73 74  72 65 61 6d 0a 23 50 61  |utput stream.#Pa|
000568d0  72 65 6e 74 20 4f 53 5f  42 79 74 65 49 6e 64 65  |rent OS_ByteInde|
000568e0  78 0a 3d 3e 09 52 30 20  3d 09 33 20 28 26 30 33  |x.=>.R0 =.3 (&03|
000568f0  29 0a 09 52 31 20 3d 09  3c 62 69 74 20 6d 61 73  |)..R1 =.<bit mas|
00056900  6b 20 66 6f 72 20 6f 75  74 70 75 74 20 73 74 72  |k for output str|
00056910  65 61 6d 73 3d 3e 4f 53  5f 42 79 74 65 30 30 33  |eams=>OS_Byte003|
00056920  73 74 61 74 65 3e 0a 0a  3c 3d 09 52 30 20 70 72  |state>..<=.R0 pr|
00056930  65 73 65 72 76 65 64 0a  09 52 31 20 3d 09 76 61  |eserved..R1 =.va|
00056940  6c 75 65 20 62 65 66 6f  72 65 20 62 65 69 6e 67  |lue before being|
00056950  20 6f 76 65 72 77 72 69  74 74 65 6e 0a 09 52 32  | overwritten..R2|
00056960  20 63 6f 72 72 75 70 74  65 64 0a 0a 54 68 69 73  | corrupted..This|
00056970  20 63 61 6c 6c 20 73 65  6c 65 63 74 20 74 68 65  | call select the|
00056980  20 64 65 76 69 63 65 28  73 29 20 74 6f 20 77 68  | device(s) to wh|
00056990  69 63 68 20 61 6c 6c 20  73 75 62 73 65 71 75 65  |ich all subseque|
000569a0  6e 74 20 6f 75 74 70 75  74 20 66 72 6f 6d 20 3c  |nt output from <|
000569b0  4f 53 5f 57 72 69 74 65  43 20 65 74 63 2e 3d 3e  |OS_WriteC etc.=>|
000569c0  76 65 63 74 6f 72 5f 77  72 63 68 76 3e 20 69 73  |vector_wrchv> is|
000569d0  20 73 65 6e 74 2e 20 54  68 65 20 73 74 61 74 65  | sent. The state|
000569e0  20 6f 66 20 74 68 69 73  20 76 61 72 69 61 62 6c  | of this variabl|
000569f0  65 20 63 61 6e 20 62 65  20 72 65 61 64 20 61 6e  |e can be read an|
00056a00  64 20 77 72 69 74 74 65  6e 20 77 69 74 68 20 3c  |d written with <|
00056a10  4f 53 5f 42 79 74 65 20  32 33 36 3d 3e 4f 53 5f  |OS_Byte 236=>OS_|
00056a20  42 79 74 65 32 33 36 3e  2e 0a 0a 45 6e 61 62 6c  |Byte236>...Enabl|
00056a30  69 6e 67 20 74 68 65 20  73 65 72 69 61 6c 20 64  |ing the serial d|
00056a40  65 76 69 63 65 20 61 6e  64 20 70 72 69 6e 74 65  |evice and printe|
00056a50  72 20 77 69 74 68 20 74  68 69 73 20 4f 53 5f 42  |r with this OS_B|
00056a60  79 74 65 20 2a 61 6e 64  2a 20 73 65 74 74 69 6e  |yte *and* settin|
00056a70  67 20 74 68 65 20 70 72  69 6e 74 65 72 20 74 6f  |g the printer to|
00056a80  20 74 68 65 20 73 65 72  69 61 6c 20 64 65 76 69  | the serial devi|
00056a90  63 65 20 77 69 74 68 20  3c 4f 53 5f 42 79 74 65  |ce with <OS_Byte|
00056aa0  20 35 3d 3e 4f 53 5f 42  79 74 65 30 30 35 3e 20  | 5=>OS_Byte005> |
00056ab0  63 61 75 73 65 73 20 63  68 61 72 61 63 74 65 72  |causes character|
00056ac0  73 20 74 6f 20 62 65 20  70 6c 61 63 65 64 20 69  |s to be placed i|
00056ad0  6e 20 62 6f 74 68 20 73  65 72 69 61 6c 20 61 6e  |n both serial an|
00056ae0  64 20 70 72 69 6e 74 65  72 20 62 75 66 66 65 72  |d printer buffer|
00056af0  73 2c 20 77 68 69 63 68  20 62 6f 74 68 20 61 72  |s, which both ar|
00056b00  65 20 74 68 65 6e 20 66  65 64 20 74 6f 20 74 68  |e then fed to th|
00056b10  65 20 73 65 72 69 61 6c  20 70 6f 72 74 2e 0a 00  |e serial port...|
00056b20  44 41 54 41 ad 02 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00056b30  30 20 20 44 69 73 70 6c  61 79 20 4f 53 20 76 65  |0  Display OS ve|
00056b40  72 73 69 6f 6e 0a 23 50  61 72 65 6e 74 20 4f 53  |rsion.#Parent OS|
00056b50  5f 42 79 74 65 49 6e 64  65 78 0a 3d 3e 09 52 30  |_ByteIndex.=>.R0|
00056b60  20 3d 09 30 0a 09 52 31  20 3d 09 30 20 74 6f 20  | =.0..R1 =.0 to |
00056b70  64 69 73 70 6c 61 79 20  4f 53 20 76 65 72 73 69  |display OS versi|
00056b80  6f 6e 0a 09 20 09 31 20  74 6f 20 72 65 74 75 72  |on.. .1 to retur|
00056b90  6e 20 6d 61 63 68 69 6e  65 20 69 6e 66 6f 0a 0a  |n machine info..|
00056ba0  44 69 73 70 6c 61 79 20  4f 53 20 76 65 72 73 69  |Display OS versi|
00056bb0  6f 6e 0a 3c 3d 09 52 30  20 3d 09 70 6f 69 6e 74  |on.<=.R0 =.point|
00056bc0  65 72 20 74 6f 20 4f 53  20 76 65 72 73 69 6f 6e  |er to OS version|
00056bd0  20 73 74 72 69 6e 67 20  61 73 20 61 6e 20 65 72  | string as an er|
00056be0  72 6f 72 20 62 6c 6f 63  6b 0a 09 52 31 20 70 72  |ror block..R1 pr|
00056bf0  65 73 65 72 76 65 64 0a  09 52 32 20 63 6f 72 72  |eserved..R2 corr|
00056c00  75 70 74 65 64 0a 09 56  20 73 65 74 0a 0a 52 65  |upted..V set..Re|
00056c10  74 75 72 6e 20 6d 61 63  68 69 6e 65 20 69 6e 66  |turn machine inf|
00056c20  6f 0a 3c 3d 09 52 30 20  70 72 65 73 65 72 76 65  |o.<=.R0 preserve|
00056c30  64 0a 09 52 31 20 3d 09  3c 6d 61 63 68 69 6e 65  |d..R1 =.<machine|
00056c40  20 74 79 70 65 3d 3e 2e  74 79 70 65 73 3e 0a 09  | type=>.types>..|
00056c50  52 32 20 63 6f 72 72 75  70 74 65 64 0a 0a 49 66  |R2 corrupted..If|
00056c60  20 52 31 3d 30 20 74 68  69 73 20 63 61 6c 6c 20  | R1=0 this call |
00056c70  64 69 73 70 6c 61 79 73  20 74 68 65 20 4f 53 20  |displays the OS |
00056c80  76 65 72 73 69 6f 6e 20  62 79 20 72 65 74 75 72  |version by retur|
00056c90  6e 69 6e 67 20 69 74 20  61 73 20 61 6e 20 65 72  |ning it as an er|
00056ca0  72 6f 72 20 73 74 72 69  6e 67 2c 20 77 69 74 68  |ror string, with|
00056cb0  20 56 20 73 65 74 2e 0a  0a 49 66 20 52 31 3d 31  | V set...If R1=1|
00056cc0  20 74 68 69 73 20 63 61  6c 6c 20 72 65 74 75 72  | this call retur|
00056cd0  6e 73 20 74 68 65 20 6d  61 63 68 69 6e 65 20 74  |ns the machine t|
00056ce0  79 70 65 20 69 6e 20 52  31 20 2d 20 61 6c 6c 20  |ype in R1 - all |
00056cf0  52 49 53 43 20 4f 53 20  6d 61 63 68 69 6e 65 73  |RISC OS machines|
00056d00  20 72 65 74 75 72 6e 20  36 2e 0a 23 53 75 62 70  | return 6..#Subp|
00056d10  61 67 65 20 74 79 70 65  73 0a 4f 53 5f 42 79 74  |age types.OS_Byt|
00056d20  65 20 30 20 4f 53 20 76  65 72 73 69 6f 6e 20 72  |e 0 OS version r|
00056d30  65 74 75 72 6e 20 74 79  70 65 73 0a 4e 75 6d 62  |eturn types.Numb|
00056d40  65 72 09 4f 53 0a 23 4c  69 6e 65 0a 30 09 45 6c  |er.OS.#Line.0.El|
00056d50  65 63 74 72 6f 6e 0a 31  09 42 42 43 0a 32 09 42  |ectron.1.BBC.2.B|
00056d60  42 43 0a 33 09 4d 61 73  74 65 72 20 31 32 38 0a  |BC.3.Master 128.|
00056d70  34 09 4d 61 73 74 65 72  20 31 32 38 20 45 63 6f  |4.Master 128 Eco|
00056d80  6e 65 74 20 54 65 72 6d  69 6e 61 6c 0a 35 09 4d  |net Terminal.5.M|
00056d90  61 73 74 65 72 20 31 32  38 20 43 6f 6d 70 61 63  |aster 128 Compac|
00056da0  74 0a 36 09 41 72 63 68  69 6d 65 64 65 73 20 28  |t.6.Archimedes (|
00056db0  41 72 74 68 75 72 20 61  6e 64 20 52 49 53 43 20  |Arthur and RISC |
00056dc0  4f 53 29 0a 3f 09 42 72  61 7a 69 6c 0a 00 00 00  |OS).?.Brazil....|
00056dd0  44 41 54 41 79 01 00 00  4f 53 5f 42 79 74 65 20  |DATAy...OS_Byte |
00056de0  31 20 20 57 72 69 74 65  20 75 73 65 72 20 66 6c  |1  Write user fl|
00056df0  61 67 0a 23 50 61 72 65  6e 74 20 4f 53 5f 42 79  |ag.#Parent OS_By|
00056e00  74 65 49 6e 64 65 78 0a  3d 3e 09 52 30 20 3d 09  |teIndex.=>.R0 =.|
00056e10  31 0a 09 52 31 20 3d 09  6e 65 77 20 76 61 6c 75  |1..R1 =.new valu|
00056e20  65 0a 0a 3c 3d 09 52 30  20 70 72 65 73 65 72 76  |e..<=.R0 preserv|
00056e30  65 64 0a 09 52 31 20 3d  09 6d 61 63 68 69 6e 65  |ed..R1 =.machine|
00056e40  20 74 79 70 65 0a 09 52  32 20 63 6f 72 72 75 70  | type..R2 corrup|
00056e50  74 65 64 0a 0a 54 68 69  73 20 63 61 6c 6c 20 77  |ted..This call w|
00056e60  72 69 74 65 73 20 61 20  6c 6f 63 61 74 69 6f 6e  |rites a location|
00056e70  20 74 68 61 74 20 69 73  20 75 6e 75 73 65 64 20  | that is unused |
00056e80  62 79 20 74 68 65 20 4f  53 2c 20 77 68 69 63 68  |by the OS, which|
00056e90  20 63 61 6e 20 62 65 20  75 73 65 64 20 74 6f 20  | can be used to |
00056ea0  70 61 73 73 20 72 65 73  75 6c 74 73 20 62 65 74  |pass results bet|
00056eb0  77 65 65 6e 20 70 72 6f  67 72 61 6d 73 2e 20 54  |ween programs. T|
00056ec0  68 65 20 6c 6f 63 61 74  69 6f 6e 20 6d 61 79 20  |he location may |
00056ed0  62 65 20 72 65 61 64 20  28 61 6e 64 20 77 72 69  |be read (and wri|
00056ee0  74 74 65 6e 29 20 77 69  74 68 20 3c 4f 53 5f 42  |tten) with <OS_B|
00056ef0  79 74 65 20 32 34 31 3d  3e 4f 53 5f 42 79 74 65  |yte 241=>OS_Byte|
00056f00  32 34 31 3e 2e 20 53 79  73 74 65 6d 20 76 61 72  |241>. System var|
00056f10  69 61 62 6c 65 73 20 6e  6f 77 20 70 72 6f 76 69  |iables now provi|
00056f20  64 65 20 61 20 6d 75 63  68 20 62 65 74 74 65 72  |de a much better|
00056f30  20 77 61 79 20 6f 66 20  70 61 73 73 69 6e 67 20  | way of passing |
00056f40  72 65 73 75 6c 74 73 2e  0a 00 00 00 44 41 54 41  |results.....DATA|
00056f50  38 01 00 00 4f 53 5f 42  79 74 65 20 35 20 20 57  |8...OS_Byte 5  W|
00056f60  72 69 74 65 20 70 72 69  6e 74 65 72 20 64 72 69  |rite printer dri|
00056f70  76 65 72 20 74 79 70 65  0a 23 50 61 72 65 6e 74  |ver type.#Parent|
00056f80  20 4f 53 5f 42 79 74 65  49 6e 64 65 78 0a 3d 3e  | OS_ByteIndex.=>|
00056f90  09 52 30 20 3d 09 35 0a  09 52 31 20 3d 09 70 72  |.R0 =.5..R1 =.pr|
00056fa0  69 6e 74 65 72 20 64 72  69 76 65 72 20 3c 74 79  |inter driver <ty|
00056fb0  70 65 3d 3e 4f 53 5f 42  79 74 65 70 72 69 6e 74  |pe=>OS_Byteprint|
00056fc0  65 72 73 3e 0a 0a 3c 3d  09 52 30 20 70 72 65 73  |ers>..<=.R0 pres|
00056fd0  65 72 76 65 64 0a 09 52  31 20 3d 09 70 72 65 76  |erved..R1 =.prev|
00056fe0  69 6f 75 73 20 70 72 69  6e 74 65 72 20 64 72 69  |ious printer dri|
00056ff0  76 65 72 20 74 79 70 65  0a 09 52 32 20 63 6f 72  |ver type..R2 cor|
00057000  72 75 70 74 65 64 0a 0a  54 68 69 73 20 63 61 6c  |rupted..This cal|
00057010  6c 20 64 65 74 65 72 6d  69 6e 65 73 20 74 68 65  |l determines the|
00057020  20 70 61 74 68 20 74 6f  20 75 73 65 20 66 6f 72  | path to use for|
00057030  20 70 72 69 6e 74 65 72  20 6f 75 74 70 75 74 2e  | printer output.|
00057040  20 54 68 65 20 74 79 70  65 20 6d 61 79 20 62 65  | The type may be|
00057050  20 72 65 61 64 20 28 61  6e 64 20 77 72 69 74 74  | read (and writt|
00057060  65 6e 29 20 77 69 74 68  20 3c 4f 53 5f 42 79 74  |en) with <OS_Byt|
00057070  65 20 32 34 35 3d 3e 4f  53 5f 42 79 74 65 32 34  |e 245=>OS_Byte24|
00057080  35 3e 2e 0a 44 41 54 41  e8 00 00 00 4f 53 5f 42  |5>..DATA....OS_B|
00057090  79 74 65 20 31 32 37 20  20 43 68 65 63 6b 20 66  |yte 127  Check f|
000570a0  6f 72 20 65 6e 64 20 6f  66 20 66 69 6c 65 0a 23  |or end of file.#|
000570b0  50 61 72 65 6e 74 20 4f  53 5f 42 79 74 65 49 6e  |Parent OS_ByteIn|
000570c0  64 65 78 0a 3d 3e 09 52  30 20 3d 09 31 32 37 0a  |dex.=>.R0 =.127.|
000570d0  09 52 31 20 3d 09 66 69  6c 65 20 68 61 6e 64 6c  |.R1 =.file handl|
000570e0  65 0a 0a 3c 3d 09 52 30  20 70 72 65 73 65 72 76  |e..<=.R0 preserv|
000570f0  65 64 0a 09 52 31 20 3d  09 6e 6f 6e 2d 7a 65 72  |ed..R1 =.non-zer|
00057100  6f 20 66 6f 72 20 45 4f  46 0a 09 52 32 20 63 6f  |o for EOF..R2 co|
00057110  72 72 75 70 74 65 64 0a  0a 54 68 69 73 20 63 61  |rrupted..This ca|
00057120  6c 6c 20 63 68 65 63 6b  73 20 66 6f 72 20 65 6e  |ll checks for en|
00057130  64 20 6f 66 20 66 69 6c  65 2e 20 49 74 20 75 73  |d of file. It us|
00057140  65 73 20 3c 4f 53 5f 41  72 67 73 20 35 3d 3e 4f  |es <OS_Args 5=>O|
00057150  53 5f 41 72 67 73 30 30  35 3e 20 2d 20 73 6f 20  |S_Args005> - so |
00057160  73 68 6f 75 6c 64 20 79  6f 75 2e 0a 44 41 54 41  |should you..DATA|
00057170  eb 00 00 00 4f 53 5f 42  79 74 65 20 31 33 39 20  |....OS_Byte 139 |
00057180  20 57 72 69 74 65 20 66  69 6c 69 6e 67 20 73 79  | Write filing sy|
00057190  73 74 65 6d 20 6f 70 74  69 6f 6e 73 0a 23 50 61  |stem options.#Pa|
000571a0  72 65 6e 74 20 4f 53 5f  42 79 74 65 49 6e 64 65  |rent OS_ByteInde|
000571b0  78 0a 3d 3e 09 52 30 20  3d 09 31 33 39 0a 09 52  |x.=>.R0 =.139..R|
000571c0  31 20 3d 09 3c 6f 70 74  69 6f 6e 3d 3e 66 73 79  |1 =.<option=>fsy|
000571d0  73 5f 6f 70 74 73 3e 0a  09 52 32 20 3d 09 76 61  |s_opts>..R2 =.va|
000571e0  6c 75 65 0a 0a 3c 3d 09  52 30 20 70 72 65 73 65  |lue..<=.R0 prese|
000571f0  72 76 65 64 0a 09 52 31  2c 20 52 32 20 63 6f 72  |rved..R1, R2 cor|
00057200  72 75 70 74 65 64 0a 0a  54 68 69 73 20 63 61 6c  |rupted..This cal|
00057210  6c 20 75 73 65 73 20 3c  4f 53 5f 46 53 43 6f 6e  |l uses <OS_FSCon|
00057220  74 72 6f 6c 20 31 30 3d  3e 4f 53 5f 46 53 43 6f  |trol 10=>OS_FSCo|
00057230  6e 74 72 6f 6c 31 30 3e  20 74 6f 20 73 65 74 20  |ntrol10> to set |
00057240  66 69 6c 69 6e 67 20 73  79 73 74 65 6d 20 6f 70  |filing system op|
00057250  74 69 6f 6e 73 2e 0a 00  44 41 54 41 d7 01 00 00  |tions...DATA....|
00057260  4f 53 5f 42 79 74 65 20  32 34 31 20 20 52 65 61  |OS_Byte 241  Rea|
00057270  64 2f 57 72 69 74 65 20  75 73 65 72 20 66 6c 61  |d/Write user fla|
00057280  67 0a 23 50 61 72 65 6e  74 20 4f 53 5f 42 79 74  |g.#Parent OS_Byt|
00057290  65 49 6e 64 65 78 0a 3d  3e 09 52 30 20 3d 09 32  |eIndex.=>.R0 =.2|
000572a0  34 31 20 28 26 46 31 29  0a 09 52 31 20 3d 09 45  |41 (&F1)..R1 =.E|
000572b0  4f 52 20 76 61 6c 75 65  0a 09 52 32 20 3d 09 41  |OR value..R2 =.A|
000572c0  4e 44 20 76 61 6c 75 65  0a 0a 3c 3d 09 52 30 20  |ND value..<=.R0 |
000572d0  70 72 65 73 65 72 76 65  64 0a 09 52 31 20 3d 09  |preserved..R1 =.|
000572e0  76 61 6c 75 65 20 62 65  66 6f 72 65 20 62 65 69  |value before bei|
000572f0  6e 67 20 6f 76 65 72 77  72 69 74 74 65 6e 0a 09  |ng overwritten..|
00057300  52 32 20 63 6f 72 72 75  70 74 65 64 0a 20 20 20  |R2 corrupted.   |
00057310  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00057330  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
00057340  54 68 69 73 20 63 61 6c  6c 20 61 6c 74 65 72 73  |This call alters|
00057350  20 61 20 6c 6f 63 61 74  69 6f 6e 20 74 68 61 74  | a location that|
00057360  20 69 73 20 75 6e 75 73  65 64 20 62 79 20 74 68  | is unused by th|
00057370  65 20 4f 53 2c 20 77 68  69 63 68 20 63 61 6e 20  |e OS, which can |
00057380  62 65 20 75 73 65 64 20  74 6f 20 70 61 73 73 20  |be used to pass |
00057390  72 65 73 75 6c 74 73 20  62 65 74 77 65 65 6e 20  |results between |
000573a0  70 72 6f 67 72 61 6d 73  2e 20 54 68 65 20 6c 6f  |programs. The lo|
000573b0  63 61 74 69 6f 6e 20 6d  61 79 20 62 65 20 61 6c  |cation may be al|
000573c0  73 6f 20 62 65 20 77 72  69 74 74 65 6e 20 77 69  |so be written wi|
000573d0  74 68 20 3c 4f 53 5f 42  79 74 65 20 31 3d 3e 4f  |th <OS_Byte 1=>O|
000573e0  53 5f 42 79 74 65 30 30  31 3e 2e 20 53 79 73 74  |S_Byte001>. Syst|
000573f0  65 6d 20 76 61 72 69 61  62 6c 65 73 20 6e 6f 77  |em variables now|
00057400  20 70 72 6f 76 69 64 65  20 61 20 6d 75 63 68 20  | provide a much |
00057410  62 65 74 74 65 72 20 77  61 79 20 6f 66 20 70 61  |better way of pa|
00057420  73 73 69 6e 67 20 72 65  73 75 6c 74 73 2e 0a 00  |ssing results...|
00057430  44 41 54 41 7c 01 00 00  4f 53 5f 42 79 74 65 20  |DATA|...OS_Byte |
00057440  32 34 35 20 20 52 65 61  64 2f 57 72 69 74 65 20  |245  Read/Write |
00057450  70 72 69 6e 74 65 72 20  64 72 69 76 65 72 20 74  |printer driver t|
00057460  79 70 65 0a 23 50 61 72  65 6e 74 20 4f 53 5f 42  |ype.#Parent OS_B|
00057470  79 74 65 49 6e 64 65 78  0a 3d 3e 09 52 30 20 3d  |yteIndex.=>.R0 =|
00057480  09 32 34 35 20 28 26 46  35 29 0a 09 52 31 20 3d  |.245 (&F5)..R1 =|
00057490  09 45 4f 52 20 76 61 6c  75 65 0a 09 52 32 20 3d  |.EOR value..R2 =|
000574a0  09 41 4e 44 20 76 61 6c  75 65 0a 0a 3c 3d 09 52  |.AND value..<=.R|
000574b0  30 20 70 72 65 73 65 72  76 65 64 0a 09 52 31 20  |0 preserved..R1 |
000574c0  3d 09 76 61 6c 75 65 20  62 65 66 6f 72 65 20 62  |=.value before b|
000574d0  65 69 6e 67 20 6f 76 65  72 77 72 69 74 74 65 6e  |eing overwritten|
000574e0  0a 09 52 32 20 63 6f 72  72 75 70 74 65 64 0a 20  |..R2 corrupted. |
000574f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00057520  20 0a 54 68 69 73 20 63  61 6c 6c 20 72 65 61 64  | .This call read|
00057530  73 20 6f 72 20 73 65 74  73 20 74 68 65 20 70 61  |s or sets the pa|
00057540  74 68 20 74 6f 20 75 73  65 20 66 6f 72 20 70 72  |th to use for pr|
00057550  69 6e 74 65 72 20 6f 75  74 70 75 74 2e 20 54 68  |inter output. Th|
00057560  65 20 3c 74 79 70 65 3d  3e 4f 53 5f 42 79 74 65  |e <type=>OS_Byte|
00057570  70 72 69 6e 74 65 72 73  3e 20 6d 61 79 20 61 6c  |printers> may al|
00057580  73 6f 20 62 65 20 77 72  69 74 74 65 6e 20 77 69  |so be written wi|
00057590  74 68 20 3c 4f 53 5f 42  79 74 65 20 35 3d 3e 4f  |th <OS_Byte 5=>O|
000575a0  53 5f 42 79 74 65 30 30  35 3e 2e 0a 44 41 54 41  |S_Byte005>..DATA|
000575b0  a6 01 00 00 4f 53 5f 42  79 74 65 20 50 72 69 6e  |....OS_Byte Prin|
000575c0  74 65 72 20 64 72 69 76  65 72 20 74 79 70 65 73  |ter driver types|
000575d0  0a 23 50 61 72 65 6e 74  20 4f 53 5f 42 79 74 65  |.#Parent OS_Byte|
000575e0  32 34 35 0a 54 68 65 20  76 61 6c 75 65 20 6f 66  |245.The value of|
000575f0  20 74 68 65 20 70 72 69  6e 74 65 72 20 64 72 69  | the printer dri|
00057600  76 65 72 2c 20 2f 6e 2f  2c 20 73 65 6c 65 63 74  |ver, /n/, select|
00057610  73 20 77 68 69 63 68 20  7b 66 43 6f 64 65 7d 50  |s which {fCode}P|
00057620  72 69 6e 74 65 72 54 79  70 65 24 7b 2f 7d 6e 7b  |rinterType${/}n{|
00057630  2f 7d 7b 66 7d 20 76 61  72 69 61 62 6c 65 20 69  |/}{f} variable i|
00057640  73 20 75 73 65 64 20 61  73 20 74 68 65 20 70 61  |s used as the pa|
00057650  74 68 20 6f 66 20 74 68  65 20 70 72 69 6e 74 65  |th of the printe|
00057660  72 2e 20 54 68 65 20 64  65 66 61 75 6c 74 20 76  |r. The default v|
00057670  61 6c 75 65 73 20 61 72  65 3a 0a 0a 2f 6e 2f 09  |alues are:../n/.|
00057680  50 72 69 6e 74 65 72 09  09 09 4e 6f 74 65 0a 23  |Printer...Note.#|
00057690  4c 69 6e 65 0a 30 09 4e  75 6c 6c 3a 09 09 09 28  |Line.0.Null:...(|
000576a0  70 72 69 6e 74 65 72 20  73 69 6e 6b 29 0a 31 09  |printer sink).1.|
000576b0  50 61 72 61 6c 6c 65 6c  20 64 65 76 69 63 65 0a  |Parallel device.|
000576c0  32 09 53 65 72 69 61 6c  20 64 65 76 69 63 65 0a  |2.Serial device.|
000576d0  33 09 7b 66 43 6f 64 65  7d 50 72 69 6e 74 65 72  |3.{fCode}Printer|
000576e0  54 79 70 65 24 33 7b 66  7d 09 72 65 73 65 72 76  |Type$3{f}.reserv|
000576f0  65 64 20 66 6f 72 20 75  73 65 72 20 70 72 69 6e  |ed for user prin|
00057700  74 65 72 20 64 72 69 76  65 72 0a 34 09 4e 65 74  |ter driver.4.Net|
00057710  77 6f 72 6b 20 70 72 69  6e 74 65 72 0a 35 2d 32  |work printer.5-2|
00057720  35 35 09 2f 6e 2f 20 66  6f 72 20 7b 66 43 6f 64  |55./n/ for {fCod|
00057730  65 7d 50 72 69 6e 74 65  72 54 79 70 65 24 7b 2f  |e}PrinterType${/|
00057740  7d 6e 7b 2f 7d 7b 66 7d  20 76 61 72 69 61 62 6c  |}n{/}{f} variabl|
00057750  65 0a 00 00 44 41 54 41  6d 02 00 00 4f 75 74 70  |e...DATAm...Outp|
00057760  75 74 20 73 74 72 65 61  6d 20 73 74 61 74 75 73  |ut stream status|
00057770  0a 23 50 61 72 65 6e 74  20 4f 53 5f 42 79 74 65  |.#Parent OS_Byte|
00057780  30 30 33 0a 42 69 74 09  53 74 72 65 61 6d 20 61  |003.Bit.Stream a|
00057790  66 66 65 63 74 65 64 0a  23 4c 69 6e 65 0a 30 09  |ffected.#Line.0.|
000577a0  45 6e 61 62 6c 65 73 20  73 65 72 69 61 6c 20 64  |Enables serial d|
000577b0  72 69 76 65 72 0a 31 09  44 69 73 61 62 6c 65 73  |river.1.Disables|
000577c0  20 56 44 55 20 64 72 69  76 65 72 73 0a 32 09 44  | VDU drivers.2.D|
000577d0  69 73 61 62 6c 65 73 20  56 44 55 20 70 72 69 6e  |isables VDU prin|
000577e0  74 65 72 20 73 74 72 65  61 6d 0a 33 09 45 6e 61  |ter stream.3.Ena|
000577f0  62 6c 65 73 20 70 72 69  6e 74 65 72 0a 34 09 44  |bles printer.4.D|
00057800  69 73 61 62 6c 65 73 20  73 70 6f 6f 6c 65 64 20  |isables spooled |
00057810  6f 75 74 70 75 74 0a 35  09 43 61 6c 6c 73 20 3c  |output.5.Calls <|
00057820  56 44 55 58 56 3d 3e 56  65 63 74 6f 72 5f 76 64  |VDUXV=>Vector_vd|
00057830  75 78 76 3e 20 69 6e 73  74 65 61 64 20 6f 66 20  |uxv> instead of |
00057840  56 44 55 20 64 72 69 76  65 72 73 0a 36 09 44 69  |VDU drivers.6.Di|
00057850  73 61 62 6c 65 73 20 70  72 69 6e 74 65 72 2c 20  |sables printer, |
00057860  65 78 63 65 70 74 20 66  6f 72 20 3c 56 44 55 20  |except for <VDU |
00057870  31 2c 6e 3d 3e 56 44 55  3a 31 3e 0a 0a 42 69 74  |1,n=>VDU:1>..Bit|
00057880  20 31 20 69 73 20 6e 6f  74 20 74 68 65 20 73 61  | 1 is not the sa|
00057890  6d 65 20 61 73 20 3c 56  44 55 20 32 31 3d 3e 56  |me as <VDU 21=>V|
000578a0  44 55 3a 32 31 3e 20 2d  20 77 69 74 68 20 56 44  |DU:21> - with VD|
000578b0  55 20 32 31 20 62 79 74  65 73 20 61 72 65 20 73  |U 21 bytes are s|
000578c0  74 69 6c 6c 20 73 65 6e  74 20 74 6f 20 74 68 65  |till sent to the|
000578d0  20 70 72 69 6e 74 65 72  20 69 66 20 69 74 20 68  | printer if it h|
000578e0  61 73 20 62 65 65 6e 20  65 6e 61 62 6c 65 73 20  |as been enables |
000578f0  77 69 74 68 20 3c 56 44  55 20 32 3d 3e 56 44 55  |with <VDU 2=>VDU|
00057900  3a 32 3e 2e 0a 0a 42 69  74 20 33 20 69 73 20 6e  |:2>...Bit 3 is n|
00057910  6f 74 20 74 68 65 20 73  61 6d 65 20 61 73 20 3c  |ot the same as <|
00057920  56 44 55 20 32 3d 3e 56  44 55 3a 32 3e 20 2d 20  |VDU 2=>VDU:2> - |
00057930  77 68 65 6e 20 73 65 74  20 28 61 6e 64 20 62 69  |when set (and bi|
00057940  74 73 20 32 20 61 6e 64  20 36 20 63 6c 65 61 72  |ts 2 and 6 clear|
00057950  21 29 20 2a 61 6c 6c 2a  20 62 79 74 65 73 20 65  |!) *all* bytes e|
00057960  78 63 65 70 74 20 74 68  65 20 70 72 69 6e 74 65  |xcept the printe|
00057970  72 20 69 67 6e 6f 72 65  20 63 68 61 72 61 63 74  |r ignore charact|
00057980  65 72 20 28 73 65 65 20  3c 4f 53 5f 42 79 74 65  |er (see <OS_Byte|
00057990  20 36 3d 3e 4f 53 5f 42  79 74 65 30 30 36 3e 29  | 6=>OS_Byte006>)|
000579a0  20 61 72 65 20 73 65 6e  74 20 74 6f 20 74 68 65  | are sent to the|
000579b0  20 70 72 69 6e 74 65 72  20 73 74 72 65 61 6d 2e  | printer stream.|
000579c0  0a 00 00 00 44 41 54 41  aa 01 00 00 43 75 72 73  |....DATA....Curs|
000579d0  6f 72 20 6b 65 79 20 73  74 61 74 65 0a 23 50 61  |or key state.#Pa|
000579e0  72 65 6e 74 20 4f 53 5f  42 79 74 65 34 0a 30 20  |rent OS_Byte4.0 |
000579f0  3a 09 45 6e 61 62 6c 65  73 20 63 75 72 73 6f 72  |:.Enables cursor|
00057a00  20 65 64 69 74 69 6e 67  20 28 64 65 66 61 75 6c  | editing (defaul|
00057a10  74 20 73 74 61 74 65 29  2e 0a 0a 31 20 3a 09 44  |t state)...1 :.D|
00057a20  69 73 61 62 6c 65 73 20  63 75 72 73 6f 72 20 65  |isables cursor e|
00057a30  64 69 74 69 6e 67 2e 20  54 68 65 79 20 72 65 74  |diting. They ret|
00057a40  75 72 6e 20 74 68 65 20  66 6f 6c 6c 6f 77 69 6e  |urn the followin|
00057a50  67 20 41 53 43 49 49 20  76 61 6c 75 65 73 3a 0a  |g ASCII values:.|
00057a60  09 20 20 43 6f 70 79 09  09 3d 3e 20 31 33 35 0a  |.  Copy..=> 135.|
00057a70  09 20 20 4c 65 66 74 20  61 72 72 6f 77 09 3d 3e  |.  Left arrow.=>|
00057a80  20 31 33 36 0a 09 20 20  52 69 67 68 74 20 61 72  | 136..  Right ar|
00057a90  72 6f 77 09 3d 3e 20 31  33 37 0a 09 20 20 44 6f  |row.=> 137..  Do|
00057aa0  77 6e 20 61 72 72 6f 77  09 3d 3e 20 31 33 38 0a  |wn arrow.=> 138.|
00057ab0  09 20 20 55 70 20 61 72  72 6f 77 09 3d 3e 20 31  |.  Up arrow.=> 1|
00057ac0  33 39 0a 0a 32 20 3a 09  43 75 72 73 6f 72 20 6b  |39..2 :.Cursor k|
00057ad0  65 79 73 20 61 63 74 20  61 73 20 66 75 6e 63 74  |eys act as funct|
00057ae0  69 6f 6e 20 6b 65 79 73  2e 20 54 68 65 20 66 75  |ion keys. The fu|
00057af0  6e 63 74 69 6f 6e 20 6b  65 79 20 6e 75 6d 62 65  |nction key numbe|
00057b00  72 73 20 61 73 73 69 67  6e 65 64 20 61 72 65 3a  |rs assigned are:|
00057b10  0a 09 20 20 43 6f 70 79  09 09 3d 3e 20 31 31 0a  |..  Copy..=> 11.|
00057b20  09 20 20 4c 65 66 74 20  61 72 72 6f 77 09 3d 3e  |.  Left arrow.=>|
00057b30  20 31 32 0a 09 20 20 52  69 67 68 74 20 61 72 72  | 12..  Right arr|
00057b40  6f 77 09 3d 3e 20 31 33  0a 09 20 20 44 6f 77 6e  |ow.=> 13..  Down|
00057b50  20 61 72 72 6f 77 09 3d  3e 20 31 34 0a 09 20 20  | arrow.=> 14..  |
00057b60  55 70 20 61 72 72 6f 77  09 3d 3e 20 31 35 00 00  |Up arrow.=> 15..|
00057b70  44 41 54 41 90 01 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00057b80  36 20 20 57 72 69 74 65  20 70 72 69 6e 74 65 72  |6  Write printer|
00057b90  20 69 67 6e 6f 72 65 20  63 68 61 72 61 63 74 65  | ignore characte|
00057ba0  72 0a 23 50 61 72 65 6e  74 20 4f 53 5f 42 79 74  |r.#Parent OS_Byt|
00057bb0  65 49 6e 64 65 78 0a 3d  3e 09 52 30 20 3d 09 36  |eIndex.=>.R0 =.6|
00057bc0  0a 09 52 31 20 3d 09 41  53 43 49 49 20 63 6f 64  |..R1 =.ASCII cod|
00057bd0  65 20 6f 66 20 69 67 6e  6f 72 65 20 63 68 61 72  |e of ignore char|
00057be0  61 63 74 65 72 0a 0a 3c  3d 09 52 30 20 70 72 65  |acter..<=.R0 pre|
00057bf0  73 65 72 76 65 64 0a 09  52 31 20 3d 09 70 72 65  |served..R1 =.pre|
00057c00  76 69 6f 75 73 20 69 67  6e 6f 72 65 20 63 68 61  |vious ignore cha|
00057c10  72 61 63 74 65 72 0a 09  52 32 20 63 6f 72 72 75  |racter..R2 corru|
00057c20  70 74 65 64 0a 0a 54 68  69 73 20 63 61 6c 6c 20  |pted..This call |
00057c30  77 72 69 74 65 73 20 74  68 65 20 70 72 69 6e 74  |writes the print|
00057c40  65 72 20 69 67 6e 6f 72  65 20 63 68 61 72 61 63  |er ignore charac|
00057c50  74 65 72 2e 20 49 74 20  6d 61 79 20 62 65 20 72  |ter. It may be r|
00057c60  65 61 64 20 28 61 6e 64  20 77 72 69 74 74 65 6e  |ead (and written|
00057c70  29 20 77 69 74 68 20 3c  4f 53 5f 42 79 74 65 20  |) with <OS_Byte |
00057c80  32 34 36 3d 3e 4f 53 5f  42 79 74 65 32 34 36 3e  |246=>OS_Byte246>|
00057c90  2e 20 54 6f 20 75 6e 73  65 74 20 74 68 65 20 69  |. To unset the i|
00057ca0  67 6e 6f 72 65 20 63 68  61 72 61 63 74 65 72 20  |gnore character |
00057cb0  28 4e 6f 49 67 6e 6f 72  65 29 20 79 6f 75 20 63  |(NoIgnore) you c|
00057cc0  61 6e 6e 6f 74 20 75 73  65 20 74 68 69 73 20 63  |annot use this c|
00057cd0  61 6c 6c 2c 20 79 6f 75  20 6e 65 65 64 20 74 6f  |all, you need to|
00057ce0  20 75 73 65 20 3c 4f 53  5f 42 79 74 65 20 31 38  | use <OS_Byte 18|
00057cf0  32 3d 3e 4f 53 5f 42 79  74 65 31 38 32 3e 2e 0a  |2=>OS_Byte182>..|
00057d00  44 41 54 41 fa 00 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00057d10  38 20 20 57 72 69 74 65  20 52 53 32 33 32 20 74  |8  Write RS232 t|
00057d20  72 61 6e 73 6d 69 74 20  72 61 74 65 0a 23 50 61  |ransmit rate.#Pa|
00057d30  72 65 6e 74 20 4f 53 5f  42 79 74 65 49 6e 64 65  |rent OS_ByteInde|
00057d40  78 0a 3d 3e 09 52 30 20  3d 09 38 0a 09 52 31 20  |x.=>.R0 =.8..R1 |
00057d50  3d 09 3c 62 61 75 64 20  72 61 74 65 20 63 6f 64  |=.<baud rate cod|
00057d60  65 3d 3e 4f 53 5f 53 65  72 69 61 6c 4f 70 53 70  |e=>OS_SerialOpSp|
00057d70  65 65 64 73 3e 0a 0a 3c  3d 09 52 30 20 70 72 65  |eeds>..<=.R0 pre|
00057d80  73 65 72 76 65 64 0a 09  52 31 2c 52 32 20 63 6f  |served..R1,R2 co|
00057d90  72 72 75 70 74 65 64 0a  0a 54 68 69 73 20 63 61  |rrupted..This ca|
00057da0  6c 6c 20 77 72 69 74 65  73 20 74 68 65 20 52 53  |ll writes the RS|
00057db0  32 33 32 20 74 72 61 6e  73 6d 69 74 20 72 61 74  |232 transmit rat|
00057dc0  65 20 2d 20 3c 4f 53 5f  53 65 72 69 61 6c 4f 70  |e - <OS_SerialOp|
00057dd0  20 36 3d 3e 4f 53 5f 53  65 72 69 61 6c 4f 70 36  | 6=>OS_SerialOp6|
00057de0  3e 20 73 68 6f 75 6c 64  20 62 65 20 75 73 65 64  |> should be used|
00057df0  20 69 6e 73 74 65 61 64  2e 0a 00 00 44 41 54 41  | instead....DATA|
00057e00  96 01 00 00 4f 53 5f 42  79 74 65 20 39 20 20 57  |....OS_Byte 9  W|
00057e10  72 69 74 65 20 64 75 72  61 74 69 6f 6e 20 6f 66  |rite duration of|
00057e20  20 66 69 72 73 74 20 66  6c 61 73 68 20 63 6f 6c  | first flash col|
00057e30  6f 75 72 0a 23 50 61 72  65 6e 74 20 4f 53 5f 42  |our.#Parent OS_B|
00057e40  79 74 65 49 6e 64 65 78  0a 3d 3e 09 52 30 20 3d  |yteIndex.=>.R0 =|
00057e50  09 39 0a 09 52 31 20 3d  09 6e 65 77 20 64 75 72  |.9..R1 =.new dur|
00057e60  61 74 69 6f 6e 20 28 69  6e 20 76 69 64 65 6f 20  |ation (in video |
00057e70  66 72 61 6d 65 73 29 0a  0a 3c 3d 09 52 30 20 70  |frames)..<=.R0 p|
00057e80  72 65 73 65 72 76 65 64  0a 09 52 31 20 3d 09 70  |reserved..R1 =.p|
00057e90  72 65 76 69 6f 75 73 20  64 75 72 61 74 69 6f 6e  |revious duration|
00057ea0  0a 09 52 32 20 63 6f 72  72 75 70 74 65 64 0a 0a  |..R2 corrupted..|
00057eb0  54 68 69 73 20 63 61 6c  6c 20 73 65 74 73 20 74  |This call sets t|
00057ec0  68 65 20 64 75 72 61 74  69 6f 6e 20 6f 66 20 74  |he duration of t|
00057ed0  68 65 20 66 69 72 73 74  20 66 6c 61 73 68 20 63  |he first flash c|
00057ee0  6f 6c 6f 75 72 2e 20 41  20 64 75 72 61 74 69 6f  |olour. A duratio|
00057ef0  6e 20 6f 66 20 30 20 6d  65 61 6e 73 20 64 69 73  |n of 0 means dis|
00057f00  70 6c 61 79 20 74 68 65  20 66 69 72 73 74 20 63  |play the first c|
00057f10  6f 6c 6f 75 72 20 63 6f  6e 73 74 61 6e 74 6c 79  |olour constantly|
00057f20  2e 20 54 68 65 20 63 75  72 72 65 6e 74 20 64 75  |. The current du|
00057f30  72 61 74 69 6f 6e 20 6d  61 79 20 62 65 20 72 65  |ration may be re|
00057f40  61 64 20 77 69 74 68 20  3c 4f 53 5f 42 79 74 65  |ad with <OS_Byte|
00057f50  20 31 39 35 3d 3e 4f 53  5f 42 79 74 65 31 39 35  | 195=>OS_Byte195|
00057f60  3e 2c 20 61 6e 64 20 6d  61 79 20 61 6c 73 6f 20  |>, and may also |
00057f70  62 65 20 73 65 74 20 77  69 74 68 20 3c 56 44 55  |be set with <VDU|
00057f80  20 32 33 2c 39 3d 3e 56  44 55 3a 32 33 2c 39 3e  | 23,9=>VDU:23,9>|
00057f90  2e 0a 00 00 44 41 54 41  9e 01 00 00 4f 53 5f 42  |....DATA....OS_B|
00057fa0  79 74 65 20 31 30 20 20  57 72 69 74 65 20 64 75  |yte 10  Write du|
00057fb0  72 61 74 69 6f 6e 20 6f  66 20 73 65 63 6f 6e 64  |ration of second|
00057fc0  20 66 6c 61 73 68 20 63  6f 6c 6f 75 72 0a 23 50  | flash colour.#P|
00057fd0  61 72 65 6e 74 20 4f 53  5f 42 79 74 65 49 6e 64  |arent OS_ByteInd|
00057fe0  65 78 0a 3d 3e 09 52 30  20 3d 09 31 30 0a 09 52  |ex.=>.R0 =.10..R|
00057ff0  31 20 3d 09 6e 65 77 20  64 75 72 61 74 69 6f 6e  |1 =.new duration|
00058000  20 28 69 6e 20 76 69 64  65 6f 20 66 72 61 6d 65  | (in video frame|
00058010  73 29 0a 0a 3c 3d 09 52  30 20 70 72 65 73 65 72  |s)..<=.R0 preser|
00058020  76 65 64 0a 09 52 31 20  3d 09 70 72 65 76 69 6f  |ved..R1 =.previo|
00058030  75 73 20 64 75 72 61 74  69 6f 6e 0a 09 52 32 20  |us duration..R2 |
00058040  63 6f 72 72 75 70 74 65  64 0a 0a 54 68 69 73 20  |corrupted..This |
00058050  63 61 6c 6c 20 73 65 74  73 20 74 68 65 20 64 75  |call sets the du|
00058060  72 61 74 69 6f 6e 20 6f  66 20 74 68 65 20 73 65  |ration of the se|
00058070  63 6f 6e 64 20 66 6c 61  73 68 20 63 6f 6c 6f 75  |cond flash colou|
00058080  72 2e 20 41 20 64 75 72  61 74 69 6f 6e 20 6f 66  |r. A duration of|
00058090  20 30 20 6d 65 61 6e 73  20 64 69 73 70 6c 61 79  | 0 means display|
000580a0  20 74 68 65 20 73 65 63  6f 6e 64 74 20 63 6f 6c  | the secondt col|
000580b0  6f 75 72 20 63 6f 6e 73  74 61 6e 74 6c 79 2e 20  |our constantly. |
000580c0  54 68 65 20 63 75 72 72  65 6e 74 20 64 75 72 61  |The current dura|
000580d0  74 69 6f 6e 20 6d 61 79  20 62 65 20 72 65 61 64  |tion may be read|
000580e0  20 77 69 74 68 20 3c 4f  53 5f 42 79 74 65 20 31  | with <OS_Byte 1|
000580f0  39 34 3d 3e 4f 53 5f 42  79 74 65 31 39 34 3e 2c  |94=>OS_Byte194>,|
00058100  20 61 6e 64 20 6d 61 79  20 61 6c 73 6f 20 62 65  | and may also be|
00058110  20 73 65 74 20 77 69 74  68 20 3c 56 44 55 20 32  | set with <VDU 2|
00058120  33 2c 31 30 3d 3e 56 44  55 3a 32 33 2c 31 30 3e  |3,10=>VDU:23,10>|
00058130  2e 0a 00 00 44 41 54 41  f8 00 00 00 4f 53 5f 42  |....DATA....OS_B|
00058140  79 74 65 20 37 20 20 57  72 69 74 65 20 52 53 32  |yte 7  Write RS2|
00058150  33 32 20 72 65 63 65 69  76 65 20 72 61 74 65 0a  |32 receive rate.|
00058160  23 50 61 72 65 6e 74 20  4f 53 5f 42 79 74 65 49  |#Parent OS_ByteI|
00058170  6e 64 65 78 0a 3d 3e 09  52 30 20 3d 09 37 0a 09  |ndex.=>.R0 =.7..|
00058180  52 31 20 3d 09 3c 62 61  75 64 20 72 61 74 65 20  |R1 =.<baud rate |
00058190  63 6f 64 65 3d 3e 4f 53  5f 53 65 72 69 61 6c 4f  |code=>OS_SerialO|
000581a0  70 53 70 65 65 64 73 3e  0a 0a 3c 3d 09 52 30 20  |pSpeeds>..<=.R0 |
000581b0  70 72 65 73 65 72 76 65  64 0a 09 52 31 2c 52 32  |preserved..R1,R2|
000581c0  20 63 6f 72 72 75 70 74  65 64 0a 0a 54 68 69 73  | corrupted..This|
000581d0  20 63 61 6c 6c 20 77 72  69 74 65 73 20 74 68 65  | call writes the|
000581e0  20 52 53 32 33 32 20 72  65 63 65 69 76 65 20 72  | RS232 receive r|
000581f0  61 74 65 20 2d 20 3c 4f  53 5f 53 65 72 69 61 6c  |ate - <OS_Serial|
00058200  4f 70 20 35 3d 3e 4f 53  5f 53 65 72 69 61 6c 4f  |Op 5=>OS_SerialO|
00058210  70 35 3e 20 73 68 6f 75  6c 64 20 62 65 20 75 73  |p5> should be us|
00058220  65 64 20 69 6e 73 74 65  61 64 2e 0a 44 41 54 41  |ed instead..DATA|
00058230  7f 01 00 00 4f 53 5f 42  79 74 65 20 31 38 20 20  |....OS_Byte 18  |
00058240  52 65 73 65 74 20 66 75  6e 63 74 69 6f 6e 20 6b  |Reset function k|
00058250  65 79 20 64 65 66 69 6e  69 74 69 6f 6e 73 0a 23  |ey definitions.#|
00058260  50 61 72 65 6e 74 20 4f  53 5f 42 79 74 65 49 6e  |Parent OS_ByteIn|
00058270  64 65 78 0a 3d 3e 09 52  30 20 3d 09 31 38 20 28  |dex.=>.R0 =.18 (|
00058280  72 65 61 73 6f 6e 20 63  6f 64 65 29 0a 0a 3c 3d  |reason code)..<=|
00058290  09 52 30 20 70 72 65 73  65 72 76 65 64 0a 09 52  |.R0 preserved..R|
000582a0  31 2c 52 32 20 63 6f 72  72 75 70 74 65 64 0a 0a  |1,R2 corrupted..|
000582b0  54 68 65 20 63 6f 6e 74  65 6e 74 73 20 75 6e 73  |The contents uns|
000582c0  65 74 73 20 74 68 65 20  73 79 73 74 65 6d 20 76  |ets the system v|
000582d0  61 72 69 61 62 6c 65 73  20 7b 66 43 6f 64 65 7d  |ariables {fCode}|
000582e0  4b 65 79 24 30 7b 66 7d  20 74 6f 20 7b 66 43 6f  |Key$0{f} to {fCo|
000582f0  64 65 7d 4b 65 79 24 31  35 7b 66 7d 20 61 6e 64  |de}Key$15{f} and|
00058300  20 63 61 6e 63 65 6c 73  20 61 6e 79 20 63 75 72  | cancels any cur|
00058310  72 65 6e 74 20 66 75 6e  63 74 69 6f 6e 20 6b 65  |rent function ke|
00058320  79 20 65 78 70 61 6e 73  69 6f 6e 2e 20 46 75 6e  |y expansion. Fun|
00058330  63 74 69 6f 6e 20 6b 65  79 20 65 78 70 61 6e 73  |ction key expans|
00058340  69 6f 6e 20 63 61 6e 20  61 6c 73 6f 20 62 65 20  |ion can also be |
00058350  63 61 6e 63 65 6c 6c 65  64 20 77 69 74 68 20 3c  |cancelled with <|
00058360  4f 53 5f 42 79 74 65 20  32 31 36 3d 3e 4f 53 5f  |OS_Byte 216=>OS_|
00058370  42 79 74 65 32 31 36 3e  2e 0a 23 20 41 6e 64 20  |Byte216>..# And |
00058380  74 68 65 20 50 52 4d 20  64 6f 65 73 6e 27 74 20  |the PRM doesn't |
00058390  6d 61 6b 65 20 74 68 69  73 20 63 72 6f 73 73 20  |make this cross |
000583a0  72 65 66 65 72 65 6e 63  65 21 0a 00 44 41 54 41  |reference!..DATA|
000583b0  c1 01 00 00 4f 53 5f 42  79 74 65 20 37 30 20 20  |....OS_Byte 70  |
000583c0  52 65 61 64 2f 57 72 69  74 65 20 63 6f 75 6e 74  |Read/Write count|
000583d0  72 79 20 6e 75 6d 62 65  72 0a 23 50 61 72 65 6e  |ry number.#Paren|
000583e0  74 20 4f 53 5f 42 79 74  65 49 6e 64 65 78 0a 3d  |t OS_ByteIndex.=|
000583f0  3e 09 52 30 20 3d 09 37  30 20 28 26 34 36 29 0a  |>.R0 =.70 (&46).|
00058400  09 52 31 20 3d 09 3c 63  6f 75 6e 74 72 79 20 6e  |.R1 =.<country n|
00058410  75 6d 62 65 72 3d 3e 54  65 72 72 69 74 6f 72 79  |umber=>Territory|
00058420  5f 6e 75 6d 62 65 72 73  3e 2c 20 6f 72 20 31 32  |_numbers>, or 12|
00058430  37 20 74 6f 20 72 65 61  64 0a 0a 3c 3d 09 52 30  |7 to read..<=.R0|
00058440  20 3d 09 70 72 65 73 65  72 76 65 64 0a 09 52 31  | =.preserved..R1|
00058450  20 3d 09 30 20 69 66 20  69 6e 76 61 6c 69 64 20  | =.0 if invalid |
00058460  63 6f 75 6e 74 72 79 20  6e 75 6d 62 65 72 20 70  |country number p|
00058470  61 73 73 65 64 0a 09 20  09 63 6f 75 6e 74 72 79  |assed.. .country|
00058480  20 6e 75 6d 62 65 72 20  62 65 66 6f 72 65 20 62  | number before b|
00058490  65 69 6e 67 20 6f 76 65  72 77 72 69 74 74 65 6e  |eing overwritten|
000584a0  0a 09 52 32 20 63 6f 72  72 75 70 74 65 64 0a 20  |..R2 corrupted. |
000584b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000584e0  20 0a 54 68 69 73 20 63  61 6c 6c 20 72 65 61 64  | .This call read|
000584f0  73 20 6f 72 20 77 72 69  74 65 73 20 74 68 65 20  |s or writes the |
00058500  63 6f 75 6e 74 72 79 20  6e 75 6d 62 65 72 20 75  |country number u|
00058510  73 65 64 20 62 79 20 74  68 65 20 69 6e 74 65 72  |sed by the inter|
00058520  6e 61 74 69 6f 6e 61 6c  20 6d 6f 64 75 6c 65 2e  |national module.|
00058530  20 54 68 69 73 20 76 61  6c 75 65 20 63 61 6e 20  | This value can |
00058540  61 6c 73 6f 20 62 65 20  72 65 61 64 20 77 69 74  |also be read wit|
00058550  68 20 3c 4f 53 5f 42 79  74 65 20 32 34 30 3d 3e  |h <OS_Byte 240=>|
00058560  4f 53 5f 42 79 74 65 32  34 30 3e 2e 0a 00 00 00  |OS_Byte240>.....|
00058570  44 41 54 41 81 02 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00058580  37 31 20 20 52 65 61 64  2f 57 72 69 74 65 20 61  |71  Read/Write a|
00058590  6c 70 68 61 62 65 74 20  6f 72 20 6b 65 79 62 6f  |lphabet or keybo|
000585a0  61 72 64 0a 23 50 61 72  65 6e 74 20 4f 53 5f 42  |ard.#Parent OS_B|
000585b0  79 74 65 49 6e 64 65 78  0a 3d 3e 09 52 30 20 3d  |yteIndex.=>.R0 =|
000585c0  09 37 31 20 28 26 34 37  29 0a 09 52 31 20 3d 09  |.71 (&47)..R1 =.|
000585d0  30 2d 31 32 36 09 73 65  74 20 3c 61 6c 70 68 61  |0-126.set <alpha|
000585e0  62 65 74 20 6e 75 6d 62  65 72 3d 3e 54 65 72 72  |bet number=>Terr|
000585f0  69 74 6f 72 79 5f 61 6e  75 6d 62 65 72 73 3e 0a  |itory_anumbers>.|
00058600  09 20 09 31 32 37 09 72  65 61 64 20 61 6c 70 68  |. .127.read alph|
00058610  61 62 65 74 20 6e 75 6d  62 65 72 0a 09 20 09 31  |abet number.. .1|
00058620  32 38 2d 32 35 34 09 73  65 74 20 3c 6b 65 79 62  |28-254.set <keyb|
00058630  6f 61 72 64 20 6e 75 6d  62 65 72 3d 3e 4f 53 5f  |oard number=>OS_|
00058640  6b 65 79 62 6f 61 72 64  69 64 3e 20 61 73 20 52  |keyboardid> as R|
00058650  31 20 2d 20 31 32 38 0a  09 20 09 32 35 35 09 72  |1 - 128.. .255.r|
00058660  65 61 64 20 6b 65 79 62  6f 61 72 64 20 6e 75 6d  |ead keyboard num|
00058670  62 65 72 0a 0a 3c 3d 09  52 30 20 3d 09 70 72 65  |ber..<=.R0 =.pre|
00058680  73 65 72 76 65 64 0a 09  52 31 20 3d 09 30 20 69  |served..R1 =.0 i|
00058690  66 20 69 6e 76 61 6c 69  64 20 61 6c 70 68 61 62  |f invalid alphab|
000586a0  65 74 20 6f 72 20 6b 65  79 62 6f 61 72 64 20 20  |et or keyboard  |
000586b0  6e 75 6d 62 65 72 20 70  61 73 73 65 64 0a 09 20  |number passed.. |
000586c0  09 6f 72 20 63 6f 75 6e  74 72 79 2f 6b 65 79 62  |.or country/keyb|
000586d0  6f 61 72 64 20 6e 75 6d  62 65 72 20 62 65 66 6f  |oard number befo|
000586e0  72 65 20 62 65 69 6e 67  20 6f 76 65 72 77 72 69  |re being overwri|
000586f0  74 74 65 6e 0a 09 52 32  20 63 6f 72 72 75 70 74  |tten..R2 corrupt|
00058700  65 64 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |ed.             |
00058710  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00058730  20 20 20 20 20 0a 54 68  69 73 20 63 61 6c 6c 20  |     .This call |
00058740  72 65 61 64 73 20 6f 72  20 77 72 69 74 65 73 20  |reads or writes |
00058750  74 68 65 20 61 6c 70 68  61 62 65 74 20 6f 72 20  |the alphabet or |
00058760  6b 65 79 62 6f 61 72 64  20 6e 75 6d 62 65 72 20  |keyboard number |
00058770  75 73 65 64 20 62 79 20  74 68 65 20 69 6e 74 65  |used by the inte|
00058780  72 6e 61 74 69 6f 6e 61  6c 20 6d 6f 64 75 6c 65  |rnational module|
00058790  2e 20 41 6c 74 68 6f 75  67 68 20 6b 65 79 62 6f  |. Although keybo|
000587a0  61 72 64 20 6e 75 6d 62  65 72 73 20 61 72 65 20  |ard numbers are |
000587b0  70 61 73 73 65 64 20 69  6e 20 77 69 74 68 20 31  |passed in with 1|
000587c0  32 38 20 61 64 64 65 64  2c 20 74 68 65 79 20 61  |28 added, they a|
000587d0  72 65 20 72 65 74 75 72  6e 65 64 20 61 73 20 74  |re returned as t|
000587e0  68 65 20 61 63 74 75 61  6c 20 76 61 6c 75 65 2e  |he actual value.|
000587f0  0a 00 00 00 44 41 54 41  f8 90 00 00 44 72 61 77  |....DATA....Draw|
00058800  c9 00 00 00 00 00 00 00  44 72 61 77 20 50 6c 75  |........Draw Plu|
00058810  73 20 20 20 7a 28 00 00  10 4f fe ff 7a 9f 04 00  |s   z(...O..z...|
00058820  72 13 02 00 00 00 00 00  18 00 00 00 16 48 6f 6d  |r............Hom|
00058830  65 72 74 6f 6e 2e 42 6f  6c 64 00 00 06 00 00 00  |erton.Bold......|
00058840  54 86 00 00 7a 28 00 00  10 4f fe ff 7a 9f 04 00  |T...z(...O..z...|
00058850  72 13 02 00 20 20 20 20  20 20 20 20 20 20 20 20  |r...            |
00058860  02 00 00 00 64 00 00 00  7a 28 00 00 b2 4c 00 00  |....d...z(...L..|
00058870  7a 9f 04 00 32 4f 00 00  ff ff ff ff 00 00 00 00  |z...2O..........|
00058880  80 02 00 00 c2 00 10 20  00 00 00 00 06 00 00 00  |....... ........|
00058890  00 09 00 00 00 09 00 00  00 09 00 00 00 09 00 00  |................|
000588a0  00 09 00 00 00 09 00 00  02 00 00 00 7a 9f 04 00  |............z...|
000588b0  f2 4d 00 00 08 00 00 00  8e 23 00 00 f2 4d 00 00  |.M.......#...M..|
000588c0  00 00 00 00 02 00 00 00  64 00 00 00 d6 91 01 00  |........d.......|
000588d0  10 4f fe ff 56 94 01 00  f2 4d 00 00 ff ff ff ff  |.O..V....M......|
000588e0  00 00 00 00 80 02 00 00  c2 00 10 20 00 00 00 00  |........... ....|
000588f0  06 00 00 00 00 09 00 00  00 09 00 00 00 09 00 00  |................|
00058900  00 09 00 00 00 09 00 00  00 09 00 00 02 00 00 00  |................|
00058910  16 93 01 00 f2 4d 00 00  08 00 00 00 16 93 01 00  |.....M..........|
00058920  10 4f fe ff 00 00 00 00  06 00 00 00 48 04 00 00  |.O..........H...|
00058930  de 75 03 00 36 5d fe ff  62 4b 04 00 ea f8 ff ff  |.u..6]..bK......|
00058940  20 20 20 20 20 20 20 20  20 20 20 20 06 00 00 00  |            ....|
00058950  e8 03 00 00 de 75 03 00  f6 83 fe ff 62 4b 04 00  |.....u......bK..|
00058960  ea f8 ff ff 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
00058970  02 00 00 00 6c 00 00 00  de 75 03 00 f6 83 fe ff  |....l....u......|
00058980  62 4b 04 00 c4 c3 ff ff  ff ff ff ff 00 00 00 00  |bK..............|
00058990  f0 00 00 00 4c 00 a0 a0  02 00 00 00 56 76 03 00  |....L.......Vv..|
000589a0  4c c3 ff ff 08 00 00 00  ea 4a 04 00 4c c3 ff ff  |L........J..L...|
000589b0  08 00 00 00 ea 4a 04 00  6e 84 fe ff 08 00 00 00  |.....J..n.......|
000589c0  56 76 03 00 6e 84 fe ff  08 00 00 00 56 76 03 00  |Vv..n.......Vv..|
000589d0  4c c3 ff ff 05 00 00 00  00 00 00 00 02 00 00 00  |L...............|
000589e0  6c 00 00 00 c0 95 03 00  8a 58 ff ff 34 c1 03 00  |l........X..4...|
000589f0  e2 a3 ff ff ff ff ff ff  00 00 00 00 f0 00 00 00  |................|
00058a00  4c 00 a0 a0 02 00 00 00  38 96 03 00 6a a3 ff ff  |L.......8...j...|
00058a10  08 00 00 00 bc c0 03 00  6a a3 ff ff 08 00 00 00  |........j.......|
00058a20  bc c0 03 00 02 59 ff ff  08 00 00 00 38 96 03 00  |.....Y......8...|
00058a30  02 59 ff ff 08 00 00 00  38 96 03 00 6a a3 ff ff  |.Y......8...j...|
00058a40  05 00 00 00 00 00 00 00  02 00 00 00 6c 00 00 00  |............l...|
00058a50  e6 ca 03 00 8a 58 ff ff  5a f6 03 00 e2 a3 ff ff  |.....X..Z.......|
00058a60  ff ff ff ff 00 00 00 00  f0 00 00 00 4c 00 a0 a0  |............L...|
00058a70  02 00 00 00 5e cb 03 00  6a a3 ff ff 08 00 00 00  |....^...j.......|
00058a80  e2 f5 03 00 6a a3 ff ff  08 00 00 00 e2 f5 03 00  |....j...........|
00058a90  02 59 ff ff 08 00 00 00  5e cb 03 00 02 59 ff ff  |.Y......^....Y..|
00058aa0  08 00 00 00 5e cb 03 00  6a a3 ff ff 05 00 00 00  |....^...j.......|
00058ab0  00 00 00 00 02 00 00 00  6c 00 00 00 0a 00 04 00  |........l.......|
00058ac0  8a 58 ff ff 7e 2b 04 00  e2 a3 ff ff ff ff ff ff  |.X..~+..........|
00058ad0  00 00 00 00 f0 00 00 00  4c 00 a0 a0 02 00 00 00  |........L.......|
00058ae0  82 00 04 00 6a a3 ff ff  08 00 00 00 06 2b 04 00  |....j........+..|
00058af0  6a a3 ff ff 08 00 00 00  06 2b 04 00 02 59 ff ff  |j........+...Y..|
00058b00  08 00 00 00 82 00 04 00  02 59 ff ff 08 00 00 00  |.........Y......|
00058b10  82 00 04 00 6a a3 ff ff  05 00 00 00 00 00 00 00  |....j...........|
00058b20  02 00 00 00 44 00 00 00  56 76 03 00 a8 38 ff ff  |....D...Vv...8..|
00058b30  ea 4a 04 00 98 39 ff ff  ff ff ff ff 00 00 00 00  |.J...9..........|
00058b40  f0 00 00 00 40 00 a0 a0  02 00 00 00 56 76 03 00  |....@.......Vv..|
00058b50  20 39 ff ff 08 00 00 00  ea 4a 04 00 20 39 ff ff  | 9.......J.. 9..|
00058b60  00 00 00 00 02 00 00 00  5c 00 00 00 4c c0 03 00  |........\...L...|
00058b70  20 c3 ff ff f1 00 04 00  ea f8 ff ff ff ff ff ff  | ...............|
00058b80  00 00 00 00 f0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
00058b90  bc c0 03 00 4c c3 ff ff  08 00 00 00 fe d5 03 00  |....L...........|
00058ba0  72 f8 ff ff 08 00 00 00  40 eb 03 00 72 f8 ff ff  |r.......@...r...|
00058bb0  08 00 00 00 82 00 04 00  4c c3 ff ff 00 00 00 00  |........L.......|
00058bc0  02 00 00 00 44 00 00 00  5e cb 03 00 16 d8 ff ff  |....D...^.......|
00058bd0  e2 f5 03 00 06 d9 ff ff  ff ff ff ff 00 00 00 00  |................|
00058be0  f0 00 00 00 40 00 a0 a0  02 00 00 00 5e cb 03 00  |....@.......^...|
00058bf0  8e d8 ff ff 08 00 00 00  e2 f5 03 00 8e d8 ff ff  |................|
00058c00  00 00 00 00 02 00 00 00  44 00 00 00 5e cb 03 00  |........D...^...|
00058c10  b8 e2 ff ff e2 f5 03 00  a8 e3 ff ff ff ff ff ff  |................|
00058c20  00 00 00 00 f0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
00058c30  5e cb 03 00 30 e3 ff ff  08 00 00 00 e2 f5 03 00  |^...0...........|
00058c40  30 e3 ff ff 00 00 00 00  02 00 00 00 44 00 00 00  |0...........D...|
00058c50  fe d5 03 00 58 ed ff ff  40 eb 03 00 48 ee ff ff  |....X...@...H...|
00058c60  ff ff ff ff 00 00 00 00  f0 00 00 00 40 00 a0 a0  |............@...|
00058c70  02 00 00 00 fe d5 03 00  d0 ed ff ff 08 00 00 00  |................|
00058c80  40 eb 03 00 d0 ed ff ff  00 00 00 00 01 00 00 00  |@...............|
00058c90  38 00 00 00 e2 a4 03 00  51 78 ff ff ae b4 03 00  |8.......Qx......|
00058ca0  b0 90 ff ff 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
00058cb0  80 20 00 00 80 20 00 00  fa a3 03 00 e6 78 ff ff  |. ... .......x..|
00058cc0  39 00 00 00 01 00 00 00  38 00 00 00 66 d1 03 00  |9.......8...f...|
00058cd0  51 78 ff ff 18 f2 03 00  9f 90 ff ff 00 00 00 00  |Qx..............|
00058ce0  00 ff ff ff 16 00 00 00  80 20 00 00 80 20 00 00  |......... ... ..|
00058cf0  52 cf 03 00 e6 78 ff ff  31 30 00 00 01 00 00 00  |R....x..10......|
00058d00  38 00 00 00 b8 09 04 00  e6 78 ff ff dd 25 04 00  |8........x...%..|
00058d10  09 90 ff ff 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
00058d20  80 20 00 00 80 20 00 00  a4 07 04 00 e6 78 ff ff  |. ... .......x..|
00058d30  31 31 00 00 01 00 00 00  3c 00 00 00 c5 94 03 00  |11......<.......|
00058d40  36 5d fe ff ee 0f 04 00  21 7b fe ff 00 00 00 00  |6]......!{......|
00058d50  00 ff ff ff 16 00 00 00  00 28 00 00 00 28 00 00  |.........(...(..|
00058d60  36 92 03 00 ee 5d fe ff  4d 6f 75 73 65 00 00 00  |6....]..Mouse...|
00058d70  06 00 00 00 4c 16 00 00  0e e9 01 00 96 55 fe ff  |....L........U..|
00058d80  f2 f6 02 00 92 dc ff ff  20 20 20 20 20 20 20 20  |........        |
00058d90  20 20 20 20 01 00 00 00  40 00 00 00 25 fd 01 00  |    ....@...%...|
00058da0  96 55 fe ff a0 dc 02 00  95 7b fe ff 00 00 00 00  |.U.......{......|
00058db0  00 ff ff ff 16 00 00 00  00 28 00 00 00 28 00 00  |.........(...(..|
00058dc0  96 fc 01 00 62 5e fe ff  54 68 65 20 4b 65 79 70  |....b^..The Keyp|
00058dd0  61 64 00 00 06 00 00 00  e8 15 00 00 0e e9 01 00  |ad..............|
00058de0  d1 87 fe ff f2 f6 02 00  92 dc ff ff 20 20 20 20  |............    |
00058df0  20 20 20 20 20 20 20 20  02 00 00 00 f4 00 00 00  |        ........|
00058e00  0e e9 01 00 42 a3 ff ff  5e 22 02 00 92 dc ff ff  |....B...^"......|
00058e10  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
00058e20  02 00 00 00 9e fe 01 00  42 dc ff ff 08 00 00 00  |........B.......|
00058e30  e2 13 02 00 42 dc ff ff  06 00 00 00 f6 1a 02 00  |....B...........|
00058e40  42 dc ff ff 0e 22 02 00  2e d5 ff ff 0e 22 02 00  |B...."......."..|
00058e50  16 ce ff ff 08 00 00 00  0e 22 02 00 be b1 ff ff  |........."......|
00058e60  06 00 00 00 0e 22 02 00  aa aa ff ff f6 1a 02 00  |....."..........|
00058e70  92 a3 ff ff e2 13 02 00  92 a3 ff ff 08 00 00 00  |................|
00058e80  8a f7 01 00 92 a3 ff ff  06 00 00 00 72 f0 01 00  |............r...|
00058e90  92 a3 ff ff 5e e9 01 00  aa aa ff ff 5e e9 01 00  |....^.......^...|
00058ea0  be b1 ff ff 08 00 00 00  5e e9 01 00 16 ce ff ff  |........^.......|
00058eb0  06 00 00 00 5e e9 01 00  2e d5 ff ff 72 f0 01 00  |....^.......r...|
00058ec0  42 dc ff ff 8a f7 01 00  42 dc ff ff 08 00 00 00  |B.......B.......|
00058ed0  9e fe 01 00 42 dc ff ff  08 00 00 00 9e fe 01 00  |....B...........|
00058ee0  42 dc ff ff 05 00 00 00  00 00 00 00 02 00 00 00  |B...............|
00058ef0  f4 00 00 00 ea 2f 02 00  42 a3 ff ff 3a 69 02 00  |...../..B...:i..|
00058f00  92 dc ff ff ff ff ff ff  00 00 00 00 a0 00 00 00  |................|
00058f10  40 00 a0 a0 02 00 00 00  7a 45 02 00 42 dc ff ff  |@.......zE..B...|
00058f20  08 00 00 00 be 5a 02 00  42 dc ff ff 06 00 00 00  |.....Z..B.......|
00058f30  d2 61 02 00 42 dc ff ff  ea 68 02 00 2e d5 ff ff  |.a..B....h......|
00058f40  ea 68 02 00 16 ce ff ff  08 00 00 00 ea 68 02 00  |.h...........h..|
00058f50  be b1 ff ff 06 00 00 00  ea 68 02 00 aa aa ff ff  |.........h......|
00058f60  d2 61 02 00 92 a3 ff ff  be 5a 02 00 92 a3 ff ff  |.a.......Z......|
00058f70  08 00 00 00 66 3e 02 00  92 a3 ff ff 06 00 00 00  |....f>..........|
00058f80  4e 37 02 00 92 a3 ff ff  3a 30 02 00 aa aa ff ff  |N7......:0......|
00058f90  3a 30 02 00 be b1 ff ff  08 00 00 00 3a 30 02 00  |:0..........:0..|
00058fa0  16 ce ff ff 06 00 00 00  3a 30 02 00 2e d5 ff ff  |........:0......|
00058fb0  4e 37 02 00 42 dc ff ff  66 3e 02 00 42 dc ff ff  |N7..B...f>..B...|
00058fc0  08 00 00 00 7a 45 02 00  42 dc ff ff 08 00 00 00  |....zE..B.......|
00058fd0  7a 45 02 00 42 dc ff ff  05 00 00 00 00 00 00 00  |zE..B...........|
00058fe0  02 00 00 00 f4 00 00 00  c6 76 02 00 42 a3 ff ff  |.........v..B...|
00058ff0  16 b0 02 00 92 dc ff ff  ff ff ff ff 00 00 00 00  |................|
00059000  a0 00 00 00 40 00 a0 a0  02 00 00 00 56 8c 02 00  |....@.......V...|
00059010  42 dc ff ff 08 00 00 00  9a a1 02 00 42 dc ff ff  |B...........B...|
00059020  06 00 00 00 ae a8 02 00  42 dc ff ff c6 af 02 00  |........B.......|
00059030  2e d5 ff ff c6 af 02 00  16 ce ff ff 08 00 00 00  |................|
00059040  c6 af 02 00 be b1 ff ff  06 00 00 00 c6 af 02 00  |................|
00059050  aa aa ff ff ae a8 02 00  92 a3 ff ff 9a a1 02 00  |................|
00059060  92 a3 ff ff 08 00 00 00  42 85 02 00 92 a3 ff ff  |........B.......|
00059070  06 00 00 00 2a 7e 02 00  92 a3 ff ff 16 77 02 00  |....*~.......w..|
00059080  aa aa ff ff 16 77 02 00  be b1 ff ff 08 00 00 00  |.....w..........|
00059090  16 77 02 00 16 ce ff ff  06 00 00 00 16 77 02 00  |.w...........w..|
000590a0  2e d5 ff ff 2a 7e 02 00  42 dc ff ff 42 85 02 00  |....*~..B...B...|
000590b0  42 dc ff ff 08 00 00 00  56 8c 02 00 42 dc ff ff  |B.......V...B...|
000590c0  08 00 00 00 56 8c 02 00  42 dc ff ff 05 00 00 00  |....V...B.......|
000590d0  00 00 00 00 02 00 00 00  f4 00 00 00 a2 bd 02 00  |................|
000590e0  42 a3 ff ff f2 f6 02 00  92 dc ff ff ff ff ff ff  |B...............|
000590f0  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
00059100  32 d3 02 00 42 dc ff ff  08 00 00 00 76 e8 02 00  |2...B.......v...|
00059110  42 dc ff ff 06 00 00 00  8a ef 02 00 42 dc ff ff  |B...........B...|
00059120  a2 f6 02 00 2e d5 ff ff  a2 f6 02 00 16 ce ff ff  |................|
00059130  08 00 00 00 a2 f6 02 00  be b1 ff ff 06 00 00 00  |................|
00059140  a2 f6 02 00 aa aa ff ff  8a ef 02 00 92 a3 ff ff  |................|
00059150  76 e8 02 00 92 a3 ff ff  08 00 00 00 1e cc 02 00  |v...............|
00059160  92 a3 ff ff 06 00 00 00  06 c5 02 00 92 a3 ff ff  |................|
00059170  f2 bd 02 00 aa aa ff ff  f2 bd 02 00 be b1 ff ff  |................|
00059180  08 00 00 00 f2 bd 02 00  16 ce ff ff 06 00 00 00  |................|
00059190  f2 bd 02 00 2e d5 ff ff  06 c5 02 00 42 dc ff ff  |............B...|
000591a0  1e cc 02 00 42 dc ff ff  08 00 00 00 32 d3 02 00  |....B.......2...|
000591b0  42 dc ff ff 08 00 00 00  32 d3 02 00 42 dc ff ff  |B.......2...B...|
000591c0  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
000591d0  0e e9 01 00 66 5c ff ff  5e 22 02 00 b6 95 ff ff  |....f\..^"......|
000591e0  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
000591f0  02 00 00 00 9e fe 01 00  66 95 ff ff 08 00 00 00  |........f.......|
00059200  e2 13 02 00 66 95 ff ff  06 00 00 00 f6 1a 02 00  |....f...........|
00059210  66 95 ff ff 0e 22 02 00  52 8e ff ff 0e 22 02 00  |f...."..R...."..|
00059220  3a 87 ff ff 08 00 00 00  0e 22 02 00 e2 6a ff ff  |:........"...j..|
00059230  06 00 00 00 0e 22 02 00  ce 63 ff ff f6 1a 02 00  |....."...c......|
00059240  b6 5c ff ff e2 13 02 00  b6 5c ff ff 08 00 00 00  |.\.......\......|
00059250  8a f7 01 00 b6 5c ff ff  06 00 00 00 72 f0 01 00  |.....\......r...|
00059260  b6 5c ff ff 5e e9 01 00  ce 63 ff ff 5e e9 01 00  |.\..^....c..^...|
00059270  e2 6a ff ff 08 00 00 00  5e e9 01 00 3a 87 ff ff  |.j......^...:...|
00059280  06 00 00 00 5e e9 01 00  52 8e ff ff 72 f0 01 00  |....^...R...r...|
00059290  66 95 ff ff 8a f7 01 00  66 95 ff ff 08 00 00 00  |f.......f.......|
000592a0  9e fe 01 00 66 95 ff ff  08 00 00 00 9e fe 01 00  |....f...........|
000592b0  66 95 ff ff 05 00 00 00  00 00 00 00 02 00 00 00  |f...............|
000592c0  f4 00 00 00 ea 2f 02 00  66 5c ff ff 3a 69 02 00  |...../..f\..:i..|
000592d0  b6 95 ff ff ff ff ff ff  00 00 00 00 a0 00 00 00  |................|
000592e0  40 00 a0 a0 02 00 00 00  7a 45 02 00 66 95 ff ff  |@.......zE..f...|
000592f0  08 00 00 00 be 5a 02 00  66 95 ff ff 06 00 00 00  |.....Z..f.......|
00059300  d2 61 02 00 66 95 ff ff  ea 68 02 00 52 8e ff ff  |.a..f....h..R...|
00059310  ea 68 02 00 3a 87 ff ff  08 00 00 00 ea 68 02 00  |.h..:........h..|
00059320  e2 6a ff ff 06 00 00 00  ea 68 02 00 ce 63 ff ff  |.j.......h...c..|
00059330  d2 61 02 00 b6 5c ff ff  be 5a 02 00 b6 5c ff ff  |.a...\...Z...\..|
00059340  08 00 00 00 66 3e 02 00  b6 5c ff ff 06 00 00 00  |....f>...\......|
00059350  4e 37 02 00 b6 5c ff ff  3a 30 02 00 ce 63 ff ff  |N7...\..:0...c..|
00059360  3a 30 02 00 e2 6a ff ff  08 00 00 00 3a 30 02 00  |:0...j......:0..|
00059370  3a 87 ff ff 06 00 00 00  3a 30 02 00 52 8e ff ff  |:.......:0..R...|
00059380  4e 37 02 00 66 95 ff ff  66 3e 02 00 66 95 ff ff  |N7..f...f>..f...|
00059390  08 00 00 00 7a 45 02 00  66 95 ff ff 08 00 00 00  |....zE..f.......|
000593a0  7a 45 02 00 66 95 ff ff  05 00 00 00 00 00 00 00  |zE..f...........|
000593b0  02 00 00 00 f4 00 00 00  c6 76 02 00 66 5c ff ff  |.........v..f\..|
000593c0  16 b0 02 00 b6 95 ff ff  ff ff ff ff 00 00 00 00  |................|
000593d0  a0 00 00 00 40 00 a0 a0  02 00 00 00 56 8c 02 00  |....@.......V...|
000593e0  66 95 ff ff 08 00 00 00  9a a1 02 00 66 95 ff ff  |f...........f...|
000593f0  06 00 00 00 ae a8 02 00  66 95 ff ff c6 af 02 00  |........f.......|
00059400  52 8e ff ff c6 af 02 00  3a 87 ff ff 08 00 00 00  |R.......:.......|
00059410  c6 af 02 00 e2 6a ff ff  06 00 00 00 c6 af 02 00  |.....j..........|
00059420  ce 63 ff ff ae a8 02 00  b6 5c ff ff 9a a1 02 00  |.c.......\......|
00059430  b6 5c ff ff 08 00 00 00  42 85 02 00 b6 5c ff ff  |.\......B....\..|
00059440  06 00 00 00 2a 7e 02 00  b6 5c ff ff 16 77 02 00  |....*~...\...w..|
00059450  ce 63 ff ff 16 77 02 00  e2 6a ff ff 08 00 00 00  |.c...w...j......|
00059460  16 77 02 00 3a 87 ff ff  06 00 00 00 16 77 02 00  |.w..:........w..|
00059470  52 8e ff ff 2a 7e 02 00  66 95 ff ff 42 85 02 00  |R...*~..f...B...|
00059480  66 95 ff ff 08 00 00 00  56 8c 02 00 66 95 ff ff  |f.......V...f...|
00059490  08 00 00 00 56 8c 02 00  66 95 ff ff 05 00 00 00  |....V...f.......|
000594a0  00 00 00 00 02 00 00 00  f4 00 00 00 a2 bd 02 00  |................|
000594b0  66 5c ff ff f2 f6 02 00  b6 95 ff ff ff ff ff ff  |f\..............|
000594c0  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
000594d0  32 d3 02 00 66 95 ff ff  08 00 00 00 76 e8 02 00  |2...f.......v...|
000594e0  66 95 ff ff 06 00 00 00  8a ef 02 00 66 95 ff ff  |f...........f...|
000594f0  a2 f6 02 00 52 8e ff ff  a2 f6 02 00 3a 87 ff ff  |....R.......:...|
00059500  08 00 00 00 a2 f6 02 00  e2 6a ff ff 06 00 00 00  |.........j......|
00059510  a2 f6 02 00 ce 63 ff ff  8a ef 02 00 b6 5c ff ff  |.....c.......\..|
00059520  76 e8 02 00 b6 5c ff ff  08 00 00 00 1e cc 02 00  |v....\..........|
00059530  b6 5c ff ff 06 00 00 00  06 c5 02 00 b6 5c ff ff  |.\...........\..|
00059540  f2 bd 02 00 ce 63 ff ff  f2 bd 02 00 e2 6a ff ff  |.....c.......j..|
00059550  08 00 00 00 f2 bd 02 00  3a 87 ff ff 06 00 00 00  |........:.......|
00059560  f2 bd 02 00 52 8e ff ff  06 c5 02 00 66 95 ff ff  |....R.......f...|
00059570  1e cc 02 00 66 95 ff ff  08 00 00 00 32 d3 02 00  |....f.......2...|
00059580  66 95 ff ff 08 00 00 00  32 d3 02 00 66 95 ff ff  |f.......2...f...|
00059590  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
000595a0  0e e9 01 00 8a 15 ff ff  5e 22 02 00 da 4e ff ff  |........^"...N..|
000595b0  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
000595c0  02 00 00 00 9e fe 01 00  8a 4e ff ff 08 00 00 00  |.........N......|
000595d0  e2 13 02 00 8a 4e ff ff  06 00 00 00 f6 1a 02 00  |.....N..........|
000595e0  8a 4e ff ff 0e 22 02 00  76 47 ff ff 0e 22 02 00  |.N..."..vG..."..|
000595f0  5e 40 ff ff 08 00 00 00  0e 22 02 00 06 24 ff ff  |^@......."...$..|
00059600  06 00 00 00 0e 22 02 00  f2 1c ff ff f6 1a 02 00  |....."..........|
00059610  da 15 ff ff e2 13 02 00  da 15 ff ff 08 00 00 00  |................|
00059620  8a f7 01 00 da 15 ff ff  06 00 00 00 72 f0 01 00  |............r...|
00059630  da 15 ff ff 5e e9 01 00  f2 1c ff ff 5e e9 01 00  |....^.......^...|
00059640  06 24 ff ff 08 00 00 00  5e e9 01 00 5e 40 ff ff  |.$......^...^@..|
00059650  06 00 00 00 5e e9 01 00  76 47 ff ff 72 f0 01 00  |....^...vG..r...|
00059660  8a 4e ff ff 8a f7 01 00  8a 4e ff ff 08 00 00 00  |.N.......N......|
00059670  9e fe 01 00 8a 4e ff ff  08 00 00 00 9e fe 01 00  |.....N..........|
00059680  8a 4e ff ff 05 00 00 00  00 00 00 00 02 00 00 00  |.N..............|
00059690  f4 00 00 00 ea 2f 02 00  8a 15 ff ff 3a 69 02 00  |...../......:i..|
000596a0  da 4e ff ff ff ff ff ff  00 00 00 00 a0 00 00 00  |.N..............|
000596b0  40 00 a0 a0 02 00 00 00  7a 45 02 00 8a 4e ff ff  |@.......zE...N..|
000596c0  08 00 00 00 be 5a 02 00  8a 4e ff ff 06 00 00 00  |.....Z...N......|
000596d0  d2 61 02 00 8a 4e ff ff  ea 68 02 00 76 47 ff ff  |.a...N...h..vG..|
000596e0  ea 68 02 00 5e 40 ff ff  08 00 00 00 ea 68 02 00  |.h..^@.......h..|
000596f0  06 24 ff ff 06 00 00 00  ea 68 02 00 f2 1c ff ff  |.$.......h......|
00059700  d2 61 02 00 da 15 ff ff  be 5a 02 00 da 15 ff ff  |.a.......Z......|
00059710  08 00 00 00 66 3e 02 00  da 15 ff ff 06 00 00 00  |....f>..........|
00059720  4e 37 02 00 da 15 ff ff  3a 30 02 00 f2 1c ff ff  |N7......:0......|
00059730  3a 30 02 00 06 24 ff ff  08 00 00 00 3a 30 02 00  |:0...$......:0..|
00059740  5e 40 ff ff 06 00 00 00  3a 30 02 00 76 47 ff ff  |^@......:0..vG..|
00059750  4e 37 02 00 8a 4e ff ff  66 3e 02 00 8a 4e ff ff  |N7...N..f>...N..|
00059760  08 00 00 00 7a 45 02 00  8a 4e ff ff 08 00 00 00  |....zE...N......|
00059770  7a 45 02 00 8a 4e ff ff  05 00 00 00 00 00 00 00  |zE...N..........|
00059780  02 00 00 00 f4 00 00 00  c6 76 02 00 8a 15 ff ff  |.........v......|
00059790  16 b0 02 00 da 4e ff ff  ff ff ff ff 00 00 00 00  |.....N..........|
000597a0  a0 00 00 00 40 00 a0 a0  02 00 00 00 56 8c 02 00  |....@.......V...|
000597b0  8a 4e ff ff 08 00 00 00  9a a1 02 00 8a 4e ff ff  |.N...........N..|
000597c0  06 00 00 00 ae a8 02 00  8a 4e ff ff c6 af 02 00  |.........N......|
000597d0  76 47 ff ff c6 af 02 00  5e 40 ff ff 08 00 00 00  |vG......^@......|
000597e0  c6 af 02 00 06 24 ff ff  06 00 00 00 c6 af 02 00  |.....$..........|
000597f0  f2 1c ff ff ae a8 02 00  da 15 ff ff 9a a1 02 00  |................|
00059800  da 15 ff ff 08 00 00 00  42 85 02 00 da 15 ff ff  |........B.......|
00059810  06 00 00 00 2a 7e 02 00  da 15 ff ff 16 77 02 00  |....*~.......w..|
00059820  f2 1c ff ff 16 77 02 00  06 24 ff ff 08 00 00 00  |.....w...$......|
00059830  16 77 02 00 5e 40 ff ff  06 00 00 00 16 77 02 00  |.w..^@.......w..|
00059840  76 47 ff ff 2a 7e 02 00  8a 4e ff ff 42 85 02 00  |vG..*~...N..B...|
00059850  8a 4e ff ff 08 00 00 00  56 8c 02 00 8a 4e ff ff  |.N......V....N..|
00059860  08 00 00 00 56 8c 02 00  8a 4e ff ff 05 00 00 00  |....V....N......|
00059870  00 00 00 00 02 00 00 00  f4 00 00 00 a2 bd 02 00  |................|
00059880  8a 15 ff ff f2 f6 02 00  da 4e ff ff ff ff ff ff  |.........N......|
00059890  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
000598a0  32 d3 02 00 8a 4e ff ff  08 00 00 00 76 e8 02 00  |2....N......v...|
000598b0  8a 4e ff ff 06 00 00 00  8a ef 02 00 8a 4e ff ff  |.N...........N..|
000598c0  a2 f6 02 00 76 47 ff ff  a2 f6 02 00 5e 40 ff ff  |....vG......^@..|
000598d0  08 00 00 00 a2 f6 02 00  06 24 ff ff 06 00 00 00  |.........$......|
000598e0  a2 f6 02 00 f2 1c ff ff  8a ef 02 00 da 15 ff ff  |................|
000598f0  76 e8 02 00 da 15 ff ff  08 00 00 00 1e cc 02 00  |v...............|
00059900  da 15 ff ff 06 00 00 00  06 c5 02 00 da 15 ff ff  |................|
00059910  f2 bd 02 00 f2 1c ff ff  f2 bd 02 00 06 24 ff ff  |.............$..|
00059920  08 00 00 00 f2 bd 02 00  5e 40 ff ff 06 00 00 00  |........^@......|
00059930  f2 bd 02 00 76 47 ff ff  06 c5 02 00 8a 4e ff ff  |....vG.......N..|
00059940  1e cc 02 00 8a 4e ff ff  08 00 00 00 32 d3 02 00  |.....N......2...|
00059950  8a 4e ff ff 08 00 00 00  32 d3 02 00 8a 4e ff ff  |.N......2....N..|
00059960  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
00059970  0e e9 01 00 ae ce fe ff  5e 22 02 00 fe 07 ff ff  |........^"......|
00059980  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
00059990  02 00 00 00 9e fe 01 00  ae 07 ff ff 08 00 00 00  |................|
000599a0  e2 13 02 00 ae 07 ff ff  06 00 00 00 f6 1a 02 00  |................|
000599b0  ae 07 ff ff 0e 22 02 00  9a 00 ff ff 0e 22 02 00  |....."......."..|
000599c0  82 f9 fe ff 08 00 00 00  0e 22 02 00 2a dd fe ff  |........."..*...|
000599d0  06 00 00 00 0e 22 02 00  16 d6 fe ff f6 1a 02 00  |....."..........|
000599e0  fe ce fe ff e2 13 02 00  fe ce fe ff 08 00 00 00  |................|
000599f0  8a f7 01 00 fe ce fe ff  06 00 00 00 72 f0 01 00  |............r...|
00059a00  fe ce fe ff 5e e9 01 00  16 d6 fe ff 5e e9 01 00  |....^.......^...|
00059a10  2a dd fe ff 08 00 00 00  5e e9 01 00 82 f9 fe ff  |*.......^.......|
00059a20  06 00 00 00 5e e9 01 00  9a 00 ff ff 72 f0 01 00  |....^.......r...|
00059a30  ae 07 ff ff 8a f7 01 00  ae 07 ff ff 08 00 00 00  |................|
00059a40  9e fe 01 00 ae 07 ff ff  08 00 00 00 9e fe 01 00  |................|
00059a50  ae 07 ff ff 05 00 00 00  00 00 00 00 02 00 00 00  |................|
00059a60  f4 00 00 00 ea 2f 02 00  ae ce fe ff 3a 69 02 00  |...../......:i..|
00059a70  fe 07 ff ff ff ff ff ff  00 00 00 00 a0 00 00 00  |................|
00059a80  40 00 a0 a0 02 00 00 00  7a 45 02 00 ae 07 ff ff  |@.......zE......|
00059a90  08 00 00 00 be 5a 02 00  ae 07 ff ff 06 00 00 00  |.....Z..........|
00059aa0  d2 61 02 00 ae 07 ff ff  ea 68 02 00 9a 00 ff ff  |.a.......h......|
00059ab0  ea 68 02 00 82 f9 fe ff  08 00 00 00 ea 68 02 00  |.h...........h..|
00059ac0  2a dd fe ff 06 00 00 00  ea 68 02 00 16 d6 fe ff  |*........h......|
00059ad0  d2 61 02 00 fe ce fe ff  be 5a 02 00 fe ce fe ff  |.a.......Z......|
00059ae0  08 00 00 00 66 3e 02 00  fe ce fe ff 06 00 00 00  |....f>..........|
00059af0  4e 37 02 00 fe ce fe ff  3a 30 02 00 16 d6 fe ff  |N7......:0......|
00059b00  3a 30 02 00 2a dd fe ff  08 00 00 00 3a 30 02 00  |:0..*.......:0..|
00059b10  82 f9 fe ff 06 00 00 00  3a 30 02 00 9a 00 ff ff  |........:0......|
00059b20  4e 37 02 00 ae 07 ff ff  66 3e 02 00 ae 07 ff ff  |N7......f>......|
00059b30  08 00 00 00 7a 45 02 00  ae 07 ff ff 08 00 00 00  |....zE..........|
00059b40  7a 45 02 00 ae 07 ff ff  05 00 00 00 00 00 00 00  |zE..............|
00059b50  02 00 00 00 f4 00 00 00  c6 76 02 00 ae ce fe ff  |.........v......|
00059b60  16 b0 02 00 fe 07 ff ff  ff ff ff ff 00 00 00 00  |................|
00059b70  a0 00 00 00 40 00 a0 a0  02 00 00 00 56 8c 02 00  |....@.......V...|
00059b80  ae 07 ff ff 08 00 00 00  9a a1 02 00 ae 07 ff ff  |................|
00059b90  06 00 00 00 ae a8 02 00  ae 07 ff ff c6 af 02 00  |................|
00059ba0  9a 00 ff ff c6 af 02 00  82 f9 fe ff 08 00 00 00  |................|
00059bb0  c6 af 02 00 2a dd fe ff  06 00 00 00 c6 af 02 00  |....*...........|
00059bc0  16 d6 fe ff ae a8 02 00  fe ce fe ff 9a a1 02 00  |................|
00059bd0  fe ce fe ff 08 00 00 00  42 85 02 00 fe ce fe ff  |........B.......|
00059be0  06 00 00 00 2a 7e 02 00  fe ce fe ff 16 77 02 00  |....*~.......w..|
00059bf0  16 d6 fe ff 16 77 02 00  2a dd fe ff 08 00 00 00  |.....w..*.......|
00059c00  16 77 02 00 82 f9 fe ff  06 00 00 00 16 77 02 00  |.w...........w..|
00059c10  9a 00 ff ff 2a 7e 02 00  ae 07 ff ff 42 85 02 00  |....*~......B...|
00059c20  ae 07 ff ff 08 00 00 00  56 8c 02 00 ae 07 ff ff  |........V.......|
00059c30  08 00 00 00 56 8c 02 00  ae 07 ff ff 05 00 00 00  |....V...........|
00059c40  00 00 00 00 02 00 00 00  f4 00 00 00 6d e9 01 00  |............m...|
00059c50  d1 87 fe ff 86 68 02 00  22 c1 fe ff ff ff ff ff  |.....h..".......|
00059c60  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
00059c70  2a 19 02 00 d2 c0 fe ff  08 00 00 00 be 5a 02 00  |*............Z..|
00059c80  d2 c0 fe ff 06 00 00 00  d2 61 02 00 d2 c0 fe ff  |.........a......|
00059c90  36 68 02 00 c6 b9 fe ff  36 68 02 00 ba b2 fe ff  |6h......6h......|
00059ca0  08 00 00 00 36 68 02 00  8a 96 fe ff 06 00 00 00  |....6h..........|
00059cb0  36 68 02 00 7e 8f fe ff  d2 61 02 00 22 88 fe ff  |6h..~....a.."...|
00059cc0  be 5a 02 00 22 88 fe ff  08 00 00 00 8a f7 01 00  |.Z.."...........|
00059cd0  22 88 fe ff 06 00 00 00  72 f0 01 00 22 88 fe ff  |".......r..."...|
00059ce0  be e9 01 00 7e 8f fe ff  be e9 01 00 8a 96 fe ff  |....~...........|
00059cf0  08 00 00 00 be e9 01 00  ba b2 fe ff 06 00 00 00  |................|
00059d00  be e9 01 00 c6 b9 fe ff  72 f0 01 00 d2 c0 fe ff  |........r.......|
00059d10  8a f7 01 00 d2 c0 fe ff  08 00 00 00 2a 19 02 00  |............*...|
00059d20  d2 c0 fe ff 08 00 00 00  2a 19 02 00 d2 c0 fe ff  |........*.......|
00059d30  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
00059d40  c6 76 02 00 d2 87 fe ff  16 b0 02 00 22 c1 fe ff  |.v.........."...|
00059d50  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
00059d60  02 00 00 00 56 8c 02 00  d2 c0 fe ff 08 00 00 00  |....V...........|
00059d70  9a a1 02 00 d2 c0 fe ff  06 00 00 00 ae a8 02 00  |................|
00059d80  d2 c0 fe ff c6 af 02 00  be b9 fe ff c6 af 02 00  |................|
00059d90  a6 b2 fe ff 08 00 00 00  c6 af 02 00 4e 96 fe ff  |............N...|
00059da0  06 00 00 00 c6 af 02 00  3a 8f fe ff ae a8 02 00  |........:.......|
00059db0  22 88 fe ff 9a a1 02 00  22 88 fe ff 08 00 00 00  |".......".......|
00059dc0  42 85 02 00 22 88 fe ff  06 00 00 00 2a 7e 02 00  |B...".......*~..|
00059dd0  22 88 fe ff 16 77 02 00  3a 8f fe ff 16 77 02 00  |"....w..:....w..|
00059de0  4e 96 fe ff 08 00 00 00  16 77 02 00 a6 b2 fe ff  |N........w......|
00059df0  06 00 00 00 16 77 02 00  be b9 fe ff 2a 7e 02 00  |.....w......*~..|
00059e00  d2 c0 fe ff 42 85 02 00  d2 c0 fe ff 08 00 00 00  |....B...........|
00059e10  56 8c 02 00 d2 c0 fe ff  08 00 00 00 56 8c 02 00  |V...........V...|
00059e20  d2 c0 fe ff 05 00 00 00  00 00 00 00 02 00 00 00  |................|
00059e30  f4 00 00 00 76 bd 02 00  5a 88 fe ff c6 f6 02 00  |....v...Z.......|
00059e40  72 07 ff ff ff ff ff ff  00 00 00 00 a0 00 00 00  |r...............|
00059e50  40 00 a0 a0 02 00 00 00  c6 bd 02 00 1a b8 fe ff  |@...............|
00059e60  08 00 00 00 c6 bd 02 00  aa f9 fe ff 06 00 00 00  |................|
00059e70  c6 bd 02 00 c2 00 ff ff  d2 c4 02 00 22 07 ff ff  |............"...|
00059e80  de cb 02 00 22 07 ff ff  08 00 00 00 0e e8 02 00  |...."...........|
00059e90  22 07 ff ff 06 00 00 00  1a ef 02 00 22 07 ff ff  |"..........."...|
00059ea0  76 f6 02 00 be 00 ff ff  76 f6 02 00 aa f9 fe ff  |v.......v.......|
00059eb0  08 00 00 00 76 f6 02 00  76 96 fe ff 06 00 00 00  |....v...v.......|
00059ec0  76 f6 02 00 5e 8f fe ff  1a ef 02 00 aa 88 fe ff  |v...^...........|
00059ed0  0e e8 02 00 aa 88 fe ff  08 00 00 00 de cb 02 00  |................|
00059ee0  ae 88 fe ff 06 00 00 00  d2 c4 02 00 ae 88 fe ff  |................|
00059ef0  c6 bd 02 00 62 8f fe ff  c6 bd 02 00 76 96 fe ff  |....b.......v...|
00059f00  08 00 00 00 c6 bd 02 00  1a b8 fe ff 08 00 00 00  |................|
00059f10  c6 bd 02 00 1a b8 fe ff  05 00 00 00 00 00 00 00  |................|
00059f20  01 00 00 00 38 00 00 00  70 f8 01 00 d6 b8 ff ff  |....8...p.......|
00059f30  0f 18 02 00 32 ce ff ff  00 00 00 00 00 ff ff ff  |....2...........|
00059f40  16 00 00 00 00 1e 00 00  00 1e 00 00 8a f7 01 00  |................|
00059f50  d6 b8 ff ff 37 37 00 00  01 00 00 00 38 00 00 00  |....77......8...|
00059f60  4c 3f 02 00 d6 b8 ff ff  bd 5e 02 00 32 ce ff ff  |L?.......^..2...|
00059f70  00 00 00 00 00 ff ff ff  16 00 00 00 00 1e 00 00  |................|
00059f80  00 1e 00 00 66 3e 02 00  d6 b8 ff ff 37 34 00 00  |....f>......74..|
00059f90  01 00 00 00 38 00 00 00  19 86 02 00 4c b8 ff ff  |....8.......L...|
00059fa0  28 a1 02 00 cb ce ff ff  00 00 00 00 00 ff ff ff  |(...............|
00059fb0  16 00 00 00 00 1e 00 00  00 1e 00 00 42 85 02 00  |............B...|
00059fc0  d6 b8 ff ff 39 31 00 00  01 00 00 00 38 00 00 00  |....91......8...|
00059fd0  f5 cc 02 00 4c b8 ff ff  37 ec 02 00 cb ce ff ff  |....L...7.......|
00059fe0  00 00 00 00 00 ff ff ff  16 00 00 00 00 1e 00 00  |................|
00059ff0  00 1e 00 00 1e cc 02 00  d6 b8 ff ff 39 30 00 00  |............90..|
0005a000  01 00 00 00 38 00 00 00  61 f8 01 00 fa 71 ff ff  |....8...a....q..|
0005a010  0f 18 02 00 e0 87 ff ff  00 00 00 00 00 ff ff ff  |................|
0005a020  16 00 00 00 00 1e 00 00  00 1e 00 00 8a f7 01 00  |................|
0005a030  fa 71 ff ff 32 37 00 00  01 00 00 00 38 00 00 00  |.q..27......8...|
0005a040  1e 3f 02 00 fa 71 ff ff  7f 5e 02 00 e0 87 ff ff  |.?...q...^......|
0005a050  00 00 00 00 00 ff ff ff  16 00 00 00 00 1e 00 00  |................|
0005a060  00 1e 00 00 66 3e 02 00  fa 71 ff ff 34 32 00 00  |....f>...q..42..|
0005a070  01 00 00 00 38 00 00 00  fa 85 02 00 70 71 ff ff  |....8.......pq..|
0005a080  5b a5 02 00 ef 87 ff ff  00 00 00 00 00 ff ff ff  |[...............|
0005a090  16 00 00 00 00 1e 00 00  00 1e 00 00 42 85 02 00  |............B...|
0005a0a0  fa 71 ff ff 34 33 00 00  01 00 00 00 38 00 00 00  |.q..43......8...|
0005a0b0  d6 cc 02 00 70 71 ff ff  37 ec 02 00 ef 87 ff ff  |....pq..7.......|
0005a0c0  00 00 00 00 00 ff ff ff  16 00 00 00 00 1e 00 00  |................|
0005a0d0  00 1e 00 00 1e cc 02 00  fa 71 ff ff 35 39 00 00  |.........q..59..|
0005a0e0  01 00 00 00 38 00 00 00  5d ef 01 00 1e 2b ff ff  |....8...]....+..|
0005a0f0  39 1e 02 00 04 41 ff ff  00 00 00 00 00 ff ff ff  |9....A..........|
0005a100  16 00 00 00 00 1e 00 00  00 1e 00 00 72 ed 01 00  |............r...|
0005a110  1e 2b ff ff 31 32 32 00  01 00 00 00 38 00 00 00  |.+..122.....8...|
0005a120  39 36 02 00 94 2a ff ff  15 65 02 00 13 41 ff ff  |96...*...e...A..|
0005a130  00 00 00 00 00 ff ff ff  16 00 00 00 00 1e 00 00  |................|
0005a140  00 1e 00 00 4e 34 02 00  1e 2b ff ff 31 32 33 00  |....N4...+..123.|
0005a150  01 00 00 00 38 00 00 00  19 86 02 00 94 2a ff ff  |....8........*..|
0005a160  5b a5 02 00 04 41 ff ff  00 00 00 00 00 ff ff ff  |[....A..........|
0005a170  16 00 00 00 00 1e 00 00  00 1e 00 00 42 85 02 00  |............B...|
0005a180  1e 2b ff ff 32 36 00 00  01 00 00 00 38 00 00 00  |.+..26......8...|
0005a190  d6 cc 02 00 94 2a ff ff  c1 ec 02 00 04 41 ff ff  |.....*.......A..|
0005a1a0  00 00 00 00 00 ff ff ff  16 00 00 00 00 1e 00 00  |................|
0005a1b0  00 1e 00 00 1e cc 02 00  1e 2b ff ff 35 38 00 00  |.........+..58..|
0005a1c0  01 00 00 00 38 00 00 00  5d ef 01 00 b8 e3 fe ff  |....8...].......|
0005a1d0  a5 1e 02 00 28 fa fe ff  00 00 00 00 00 ff ff ff  |....(...........|
0005a1e0  16 00 00 00 00 1e 00 00  00 1e 00 00 72 ed 01 00  |............r...|
0005a1f0  42 e4 fe ff 31 30 37 00  01 00 00 00 38 00 00 00  |B...107.....8...|
0005a200  39 36 02 00 42 e4 fe ff  53 65 02 00 28 fa fe ff  |96..B...Se..(...|
0005a210  00 00 00 00 00 ff ff ff  16 00 00 00 00 1e 00 00  |................|
0005a220  00 1e 00 00 4e 34 02 00  42 e4 fe ff 31 32 34 00  |....N4..B...124.|
0005a230  01 00 00 00 38 00 00 00  15 7d 02 00 b8 e3 fe ff  |....8....}......|
0005a240  7b ac 02 00 28 fa fe ff  00 00 00 00 00 ff ff ff  |{...(...........|
0005a250  16 00 00 00 00 1e 00 00  00 1e 00 00 2a 7b 02 00  |............*{..|
0005a260  42 e4 fe ff 31 30 38 00  01 00 00 00 38 00 00 00  |B...108.....8...|
0005a270  f5 cc 02 00 48 c0 fe ff  37 ec 02 00 b8 d6 fe ff  |....H...7.......|
0005a280  00 00 00 00 00 ff ff ff  16 00 00 00 00 1e 00 00  |................|
0005a290  00 1e 00 00 1e cc 02 00  d2 c0 fe ff 36 30 00 00  |............60..|
0005a2a0  01 00 00 00 38 00 00 00  28 86 02 00 dc 9c fe ff  |....8...(.......|
0005a2b0  5b a5 02 00 4c b3 fe ff  00 00 00 00 00 ff ff ff  |[...L...........|
0005a2c0  16 00 00 00 00 1e 00 00  00 1e 00 00 42 85 02 00  |............B...|
0005a2d0  66 9d fe ff 37 36 00 00  01 00 00 00 38 00 00 00  |f...76......8...|
0005a2e0  cd 12 02 00 dc 9c fe ff  a9 41 02 00 4c b3 fe ff  |.........A..L...|
0005a2f0  00 00 00 00 00 ff ff ff  16 00 00 00 00 1e 00 00  |................|
0005a300  00 1e 00 00 e2 10 02 00  66 9d fe ff 31 30 36 00  |........f...106.|
0005a310  02 00 00 00 ac 00 00 00  56 10 02 00 36 cf ff ff  |........V...6...|
0005a320  0a 18 02 00 e6 d6 ff ff  00 00 cc 00 00 00 00 00  |................|
0005a330  a0 00 00 00 40 00 a0 a0  02 00 00 00 ba 17 02 00  |....@...........|
0005a340  86 cf ff ff 06 00 00 00  c6 15 02 00 92 cd ff ff  |................|
0005a350  9a 12 02 00 92 cd ff ff  a6 10 02 00 86 cf ff ff  |................|
0005a360  06 00 00 00 b2 0e 02 00  7a d1 ff ff b2 0e 02 00  |........z.......|
0005a370  a2 d4 ff ff a6 10 02 00  96 d6 ff ff 06 00 00 00  |................|
0005a380  9a 12 02 00 8a d8 ff ff  c6 15 02 00 8a d8 ff ff  |................|
0005a390  ba 17 02 00 96 d6 ff ff  06 00 00 00 ae 19 02 00  |................|
0005a3a0  a2 d4 ff ff ae 19 02 00  7a d1 ff ff ba 17 02 00  |........z.......|
0005a3b0  86 cf ff ff 05 00 00 00  00 00 00 00 02 00 00 00  |................|
0005a3c0  64 00 00 00 d2 2c 03 00  10 4f fe ff 52 2f 03 00  |d....,...O..R/..|
0005a3d0  f2 4d 00 00 ff ff ff ff  00 00 00 00 80 02 00 00  |.M..............|
0005a3e0  c2 00 10 20 00 00 00 00  06 00 00 00 00 09 00 00  |... ............|
0005a3f0  00 09 00 00 00 09 00 00  00 09 00 00 00 09 00 00  |................|
0005a400  00 09 00 00 02 00 00 00  12 2e 03 00 f2 4d 00 00  |.............M..|
0005a410  08 00 00 00 12 2e 03 00  10 4f fe ff 00 00 00 00  |.........O......|
0005a420  0c 00 00 00 5c 00 00 00  18 69 04 00 42 e1 00 00  |....\....i..B...|
0005a430  17 8f 04 00 7f 94 01 00  00 00 00 00 00 00 ff ff  |................|
0005a440  00 00 01 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0005a450  00 00 00 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
0005a460  00 28 00 00 00 28 00 00  e4 71 04 00 0e 97 01 00  |.(...(...q......|
0005a470  4b 65 79 62 6f 61 72 64  00 00 00 00 06 00 00 00  |Keyboard........|
0005a480  70 10 00 00 c2 86 00 00  36 5d fe ff ca 4d 01 00  |p.......6]...M..|
0005a490  b2 38 00 00 20 20 20 20  20 20 20 20 20 20 20 20  |.8..            |
0005a4a0  01 00 00 00 40 00 00 00  c5 96 00 00 36 5d fe ff  |....@.......6]..|
0005a4b0  ee 37 01 00 d9 7b fe ff  00 00 00 00 00 ff ff ff  |.7...{..........|
0005a4c0  16 00 00 00 00 28 00 00  00 28 00 00 ee 94 00 00  |.....(...(......|
0005a4d0  ee 5d fe ff 43 6f 6e 74  72 6f 6c 73 00 00 00 00  |.]..Controls....|
0005a4e0  06 00 00 00 0c 10 00 00  c2 86 00 00 d2 87 fe ff  |................|
0005a4f0  ca 4d 01 00 b2 38 00 00  20 20 20 20 20 20 20 20  |.M...8..        |
0005a500  20 20 20 20 02 00 00 00  f4 00 00 00 c2 86 00 00  |    ............|
0005a510  42 a3 ff ff 12 c0 00 00  92 dc ff ff ff ff ff ff  |B...............|
0005a520  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005a530  52 9c 00 00 42 dc ff ff  08 00 00 00 96 b1 00 00  |R...B...........|
0005a540  42 dc ff ff 06 00 00 00  aa b8 00 00 42 dc ff ff  |B...........B...|
0005a550  c2 bf 00 00 2e d5 ff ff  c2 bf 00 00 16 ce ff ff  |................|
0005a560  08 00 00 00 c2 bf 00 00  be b1 ff ff 06 00 00 00  |................|
0005a570  c2 bf 00 00 aa aa ff ff  aa b8 00 00 92 a3 ff ff  |................|
0005a580  96 b1 00 00 92 a3 ff ff  08 00 00 00 3e 95 00 00  |............>...|
0005a590  92 a3 ff ff 06 00 00 00  26 8e 00 00 92 a3 ff ff  |........&.......|
0005a5a0  12 87 00 00 aa aa ff ff  12 87 00 00 be b1 ff ff  |................|
0005a5b0  08 00 00 00 12 87 00 00  16 ce ff ff 06 00 00 00  |................|
0005a5c0  12 87 00 00 2e d5 ff ff  26 8e 00 00 42 dc ff ff  |........&...B...|
0005a5d0  3e 95 00 00 42 dc ff ff  08 00 00 00 52 9c 00 00  |>...B.......R...|
0005a5e0  42 dc ff ff 08 00 00 00  52 9c 00 00 42 dc ff ff  |B.......R...B...|
0005a5f0  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005a600  9e cd 00 00 42 a3 ff ff  ee 06 01 00 92 dc ff ff  |....B...........|
0005a610  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005a620  02 00 00 00 2e e3 00 00  42 dc ff ff 08 00 00 00  |........B.......|
0005a630  72 f8 00 00 42 dc ff ff  06 00 00 00 86 ff 00 00  |r...B...........|
0005a640  42 dc ff ff 9e 06 01 00  2e d5 ff ff 9e 06 01 00  |B...............|
0005a650  16 ce ff ff 08 00 00 00  9e 06 01 00 be b1 ff ff  |................|
0005a660  06 00 00 00 9e 06 01 00  aa aa ff ff 86 ff 00 00  |................|
0005a670  92 a3 ff ff 72 f8 00 00  92 a3 ff ff 08 00 00 00  |....r...........|
0005a680  1a dc 00 00 92 a3 ff ff  06 00 00 00 02 d5 00 00  |................|
0005a690  92 a3 ff ff ee cd 00 00  aa aa ff ff ee cd 00 00  |................|
0005a6a0  be b1 ff ff 08 00 00 00  ee cd 00 00 16 ce ff ff  |................|
0005a6b0  06 00 00 00 ee cd 00 00  2e d5 ff ff 02 d5 00 00  |................|
0005a6c0  42 dc ff ff 1a dc 00 00  42 dc ff ff 08 00 00 00  |B.......B.......|
0005a6d0  2e e3 00 00 42 dc ff ff  08 00 00 00 2e e3 00 00  |....B...........|
0005a6e0  42 dc ff ff 05 00 00 00  00 00 00 00 02 00 00 00  |B...............|
0005a6f0  f4 00 00 00 7a 14 01 00  42 a3 ff ff ca 4d 01 00  |....z...B....M..|
0005a700  92 dc ff ff ff ff ff ff  00 00 00 00 a0 00 00 00  |................|
0005a710  40 00 a0 a0 02 00 00 00  0a 2a 01 00 42 dc ff ff  |@........*..B...|
0005a720  08 00 00 00 4e 3f 01 00  42 dc ff ff 06 00 00 00  |....N?..B.......|
0005a730  62 46 01 00 42 dc ff ff  7a 4d 01 00 2e d5 ff ff  |bF..B...zM......|
0005a740  7a 4d 01 00 16 ce ff ff  08 00 00 00 7a 4d 01 00  |zM..........zM..|
0005a750  be b1 ff ff 06 00 00 00  7a 4d 01 00 aa aa ff ff  |........zM......|
0005a760  62 46 01 00 92 a3 ff ff  4e 3f 01 00 92 a3 ff ff  |bF......N?......|
0005a770  08 00 00 00 f6 22 01 00  92 a3 ff ff 06 00 00 00  |....."..........|
0005a780  de 1b 01 00 92 a3 ff ff  ca 14 01 00 aa aa ff ff  |................|
0005a790  ca 14 01 00 be b1 ff ff  08 00 00 00 ca 14 01 00  |................|
0005a7a0  16 ce ff ff 06 00 00 00  ca 14 01 00 2e d5 ff ff  |................|
0005a7b0  de 1b 01 00 42 dc ff ff  f6 22 01 00 42 dc ff ff  |....B...."..B...|
0005a7c0  08 00 00 00 0a 2a 01 00  42 dc ff ff 08 00 00 00  |.....*..B.......|
0005a7d0  0a 2a 01 00 42 dc ff ff  05 00 00 00 00 00 00 00  |.*..B...........|
0005a7e0  02 00 00 00 f4 00 00 00  c2 86 00 00 66 5c ff ff  |............f\..|
0005a7f0  12 c0 00 00 b6 95 ff ff  ff ff ff ff 00 00 00 00  |................|
0005a800  a0 00 00 00 40 00 a0 a0  02 00 00 00 52 9c 00 00  |....@.......R...|
0005a810  66 95 ff ff 08 00 00 00  96 b1 00 00 66 95 ff ff  |f...........f...|
0005a820  06 00 00 00 aa b8 00 00  66 95 ff ff c2 bf 00 00  |........f.......|
0005a830  52 8e ff ff c2 bf 00 00  3a 87 ff ff 08 00 00 00  |R.......:.......|
0005a840  c2 bf 00 00 e2 6a ff ff  06 00 00 00 c2 bf 00 00  |.....j..........|
0005a850  ce 63 ff ff aa b8 00 00  b6 5c ff ff 96 b1 00 00  |.c.......\......|
0005a860  b6 5c ff ff 08 00 00 00  3e 95 00 00 b6 5c ff ff  |.\......>....\..|
0005a870  06 00 00 00 26 8e 00 00  b6 5c ff ff 12 87 00 00  |....&....\......|
0005a880  ce 63 ff ff 12 87 00 00  e2 6a ff ff 08 00 00 00  |.c.......j......|
0005a890  12 87 00 00 3a 87 ff ff  06 00 00 00 12 87 00 00  |....:...........|
0005a8a0  52 8e ff ff 26 8e 00 00  66 95 ff ff 3e 95 00 00  |R...&...f...>...|
0005a8b0  66 95 ff ff 08 00 00 00  52 9c 00 00 66 95 ff ff  |f.......R...f...|
0005a8c0  08 00 00 00 52 9c 00 00  66 95 ff ff 05 00 00 00  |....R...f.......|
0005a8d0  00 00 00 00 02 00 00 00  f4 00 00 00 9e cd 00 00  |................|
0005a8e0  66 5c ff ff ee 06 01 00  b6 95 ff ff ff ff ff ff  |f\..............|
0005a8f0  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005a900  2e e3 00 00 66 95 ff ff  08 00 00 00 72 f8 00 00  |....f.......r...|
0005a910  66 95 ff ff 06 00 00 00  86 ff 00 00 66 95 ff ff  |f...........f...|
0005a920  9e 06 01 00 52 8e ff ff  9e 06 01 00 3a 87 ff ff  |....R.......:...|
0005a930  08 00 00 00 9e 06 01 00  e2 6a ff ff 06 00 00 00  |.........j......|
0005a940  9e 06 01 00 ce 63 ff ff  86 ff 00 00 b6 5c ff ff  |.....c.......\..|
0005a950  72 f8 00 00 b6 5c ff ff  08 00 00 00 1a dc 00 00  |r....\..........|
0005a960  b6 5c ff ff 06 00 00 00  02 d5 00 00 b6 5c ff ff  |.\...........\..|
0005a970  ee cd 00 00 ce 63 ff ff  ee cd 00 00 e2 6a ff ff  |.....c.......j..|
0005a980  08 00 00 00 ee cd 00 00  3a 87 ff ff 06 00 00 00  |........:.......|
0005a990  ee cd 00 00 52 8e ff ff  02 d5 00 00 66 95 ff ff  |....R.......f...|
0005a9a0  1a dc 00 00 66 95 ff ff  08 00 00 00 2e e3 00 00  |....f...........|
0005a9b0  66 95 ff ff 08 00 00 00  2e e3 00 00 66 95 ff ff  |f...........f...|
0005a9c0  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005a9d0  7a 14 01 00 66 5c ff ff  ca 4d 01 00 b6 95 ff ff  |z...f\...M......|
0005a9e0  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005a9f0  02 00 00 00 0a 2a 01 00  66 95 ff ff 08 00 00 00  |.....*..f.......|
0005aa00  4e 3f 01 00 66 95 ff ff  06 00 00 00 62 46 01 00  |N?..f.......bF..|
0005aa10  66 95 ff ff 7a 4d 01 00  52 8e ff ff 7a 4d 01 00  |f...zM..R...zM..|
0005aa20  3a 87 ff ff 08 00 00 00  7a 4d 01 00 e2 6a ff ff  |:.......zM...j..|
0005aa30  06 00 00 00 7a 4d 01 00  ce 63 ff ff 62 46 01 00  |....zM...c..bF..|
0005aa40  b6 5c ff ff 4e 3f 01 00  b6 5c ff ff 08 00 00 00  |.\..N?...\......|
0005aa50  f6 22 01 00 b6 5c ff ff  06 00 00 00 de 1b 01 00  |."...\..........|
0005aa60  b6 5c ff ff ca 14 01 00  ce 63 ff ff ca 14 01 00  |.\.......c......|
0005aa70  e2 6a ff ff 08 00 00 00  ca 14 01 00 3a 87 ff ff  |.j..........:...|
0005aa80  06 00 00 00 ca 14 01 00  52 8e ff ff de 1b 01 00  |........R.......|
0005aa90  66 95 ff ff f6 22 01 00  66 95 ff ff 08 00 00 00  |f...."..f.......|
0005aaa0  0a 2a 01 00 66 95 ff ff  08 00 00 00 0a 2a 01 00  |.*..f........*..|
0005aab0  66 95 ff ff 05 00 00 00  00 00 00 00 02 00 00 00  |f...............|
0005aac0  f4 00 00 00 c2 86 00 00  d2 87 fe ff 12 c0 00 00  |................|
0005aad0  22 c1 fe ff ff ff ff ff  00 00 00 00 a0 00 00 00  |"...............|
0005aae0  40 00 a0 a0 02 00 00 00  52 9c 00 00 d2 c0 fe ff  |@.......R.......|
0005aaf0  08 00 00 00 96 b1 00 00  d2 c0 fe ff 06 00 00 00  |................|
0005ab00  aa b8 00 00 d2 c0 fe ff  c2 bf 00 00 be b9 fe ff  |................|
0005ab10  c2 bf 00 00 a6 b2 fe ff  08 00 00 00 c2 bf 00 00  |................|
0005ab20  4e 96 fe ff 06 00 00 00  c2 bf 00 00 3a 8f fe ff  |N...........:...|
0005ab30  aa b8 00 00 22 88 fe ff  96 b1 00 00 22 88 fe ff  |...."......."...|
0005ab40  08 00 00 00 3e 95 00 00  22 88 fe ff 06 00 00 00  |....>...".......|
0005ab50  26 8e 00 00 22 88 fe ff  12 87 00 00 3a 8f fe ff  |&...".......:...|
0005ab60  12 87 00 00 4e 96 fe ff  08 00 00 00 12 87 00 00  |....N...........|
0005ab70  a6 b2 fe ff 06 00 00 00  12 87 00 00 be b9 fe ff  |................|
0005ab80  26 8e 00 00 d2 c0 fe ff  3e 95 00 00 d2 c0 fe ff  |&.......>.......|
0005ab90  08 00 00 00 52 9c 00 00  d2 c0 fe ff 08 00 00 00  |....R...........|
0005aba0  52 9c 00 00 d2 c0 fe ff  05 00 00 00 00 00 00 00  |R...............|
0005abb0  02 00 00 00 f4 00 00 00  9e cd 00 00 d2 87 fe ff  |................|
0005abc0  ee 06 01 00 22 c1 fe ff  ff ff ff ff 00 00 00 00  |...."...........|
0005abd0  a0 00 00 00 40 00 a0 a0  02 00 00 00 2e e3 00 00  |....@...........|
0005abe0  d2 c0 fe ff 08 00 00 00  72 f8 00 00 d2 c0 fe ff  |........r.......|
0005abf0  06 00 00 00 86 ff 00 00  d2 c0 fe ff 9e 06 01 00  |................|
0005ac00  be b9 fe ff 9e 06 01 00  a6 b2 fe ff 08 00 00 00  |................|
0005ac10  9e 06 01 00 4e 96 fe ff  06 00 00 00 9e 06 01 00  |....N...........|
0005ac20  3a 8f fe ff 86 ff 00 00  22 88 fe ff 72 f8 00 00  |:......."...r...|
0005ac30  22 88 fe ff 08 00 00 00  1a dc 00 00 22 88 fe ff  |"..........."...|
0005ac40  06 00 00 00 02 d5 00 00  22 88 fe ff ee cd 00 00  |........".......|
0005ac50  3a 8f fe ff ee cd 00 00  4e 96 fe ff 08 00 00 00  |:.......N.......|
0005ac60  ee cd 00 00 a6 b2 fe ff  06 00 00 00 ee cd 00 00  |................|
0005ac70  be b9 fe ff 02 d5 00 00  d2 c0 fe ff 1a dc 00 00  |................|
0005ac80  d2 c0 fe ff 08 00 00 00  2e e3 00 00 d2 c0 fe ff  |................|
0005ac90  08 00 00 00 2e e3 00 00  d2 c0 fe ff 05 00 00 00  |................|
0005aca0  00 00 00 00 02 00 00 00  f4 00 00 00 7a 14 01 00  |............z...|
0005acb0  d2 87 fe ff ca 4d 01 00  22 c1 fe ff ff ff ff ff  |.....M..".......|
0005acc0  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005acd0  0a 2a 01 00 d2 c0 fe ff  08 00 00 00 4e 3f 01 00  |.*..........N?..|
0005ace0  d2 c0 fe ff 06 00 00 00  62 46 01 00 d2 c0 fe ff  |........bF......|
0005acf0  7a 4d 01 00 be b9 fe ff  7a 4d 01 00 a6 b2 fe ff  |zM......zM......|
0005ad00  08 00 00 00 7a 4d 01 00  4e 96 fe ff 06 00 00 00  |....zM..N.......|
0005ad10  7a 4d 01 00 3a 8f fe ff  62 46 01 00 22 88 fe ff  |zM..:...bF.."...|
0005ad20  4e 3f 01 00 22 88 fe ff  08 00 00 00 f6 22 01 00  |N?.."........"..|
0005ad30  22 88 fe ff 06 00 00 00  de 1b 01 00 22 88 fe ff  |"..........."...|
0005ad40  ca 14 01 00 3a 8f fe ff  ca 14 01 00 4e 96 fe ff  |....:.......N...|
0005ad50  08 00 00 00 ca 14 01 00  a6 b2 fe ff 06 00 00 00  |................|
0005ad60  ca 14 01 00 be b9 fe ff  de 1b 01 00 d2 c0 fe ff  |................|
0005ad70  f6 22 01 00 d2 c0 fe ff  08 00 00 00 0a 2a 01 00  |."...........*..|
0005ad80  d2 c0 fe ff 08 00 00 00  0a 2a 01 00 d2 c0 fe ff  |.........*......|
0005ad90  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005ada0  9e cd 00 00 ae ce fe ff  ee 06 01 00 fe 07 ff ff  |................|
0005adb0  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005adc0  02 00 00 00 2e e3 00 00  ae 07 ff ff 08 00 00 00  |................|
0005add0  72 f8 00 00 ae 07 ff ff  06 00 00 00 86 ff 00 00  |r...............|
0005ade0  ae 07 ff ff 9e 06 01 00  9a 00 ff ff 9e 06 01 00  |................|
0005adf0  82 f9 fe ff 08 00 00 00  9e 06 01 00 2a dd fe ff  |............*...|
0005ae00  06 00 00 00 9e 06 01 00  16 d6 fe ff 86 ff 00 00  |................|
0005ae10  fe ce fe ff 72 f8 00 00  fe ce fe ff 08 00 00 00  |....r...........|
0005ae20  1a dc 00 00 fe ce fe ff  06 00 00 00 02 d5 00 00  |................|
0005ae30  fe ce fe ff ee cd 00 00  16 d6 fe ff ee cd 00 00  |................|
0005ae40  2a dd fe ff 08 00 00 00  ee cd 00 00 82 f9 fe ff  |*...............|
0005ae50  06 00 00 00 ee cd 00 00  9a 00 ff ff 02 d5 00 00  |................|
0005ae60  ae 07 ff ff 1a dc 00 00  ae 07 ff ff 08 00 00 00  |................|
0005ae70  2e e3 00 00 ae 07 ff ff  08 00 00 00 2e e3 00 00  |................|
0005ae80  ae 07 ff ff 05 00 00 00  00 00 00 00 02 00 00 00  |................|
0005ae90  f4 00 00 00 c2 86 00 00  62 ff ff ff 12 c0 00 00  |........b.......|
0005aea0  b2 38 00 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |.8..............|
0005aeb0  40 00 a0 a0 02 00 00 00  52 9c 00 00 62 38 00 00  |@.......R...b8..|
0005aec0  08 00 00 00 96 b1 00 00  62 38 00 00 06 00 00 00  |........b8......|
0005aed0  aa b8 00 00 62 38 00 00  c2 bf 00 00 4a 31 00 00  |....b8......J1..|
0005aee0  c2 bf 00 00 36 2a 00 00  08 00 00 00 c2 bf 00 00  |....6*..........|
0005aef0  de 0d 00 00 06 00 00 00  c2 bf 00 00 c6 06 00 00  |................|
0005af00  aa b8 00 00 b2 ff ff ff  96 b1 00 00 b2 ff ff ff  |................|
0005af10  08 00 00 00 3e 95 00 00  b2 ff ff ff 06 00 00 00  |....>...........|
0005af20  26 8e 00 00 b2 ff ff ff  12 87 00 00 c6 06 00 00  |&...............|
0005af30  12 87 00 00 de 0d 00 00  08 00 00 00 12 87 00 00  |................|
0005af40  36 2a 00 00 06 00 00 00  12 87 00 00 4a 31 00 00  |6*..........J1..|
0005af50  26 8e 00 00 62 38 00 00  3e 95 00 00 62 38 00 00  |&...b8..>...b8..|
0005af60  08 00 00 00 52 9c 00 00  62 38 00 00 08 00 00 00  |....R...b8......|
0005af70  52 9c 00 00 62 38 00 00  05 00 00 00 00 00 00 00  |R...b8..........|
0005af80  02 00 00 00 f4 00 00 00  9e cd 00 00 62 ff ff ff  |............b...|
0005af90  ee 06 01 00 b2 38 00 00  ff ff ff ff 00 00 00 00  |.....8..........|
0005afa0  a0 00 00 00 40 00 a0 a0  02 00 00 00 2e e3 00 00  |....@...........|
0005afb0  62 38 00 00 08 00 00 00  72 f8 00 00 62 38 00 00  |b8......r...b8..|
0005afc0  06 00 00 00 86 ff 00 00  62 38 00 00 9e 06 01 00  |........b8......|
0005afd0  4a 31 00 00 9e 06 01 00  36 2a 00 00 08 00 00 00  |J1......6*......|
0005afe0  9e 06 01 00 de 0d 00 00  06 00 00 00 9e 06 01 00  |................|
0005aff0  c6 06 00 00 86 ff 00 00  b2 ff ff ff 72 f8 00 00  |............r...|
0005b000  b2 ff ff ff 08 00 00 00  1a dc 00 00 b2 ff ff ff  |................|
0005b010  06 00 00 00 02 d5 00 00  b2 ff ff ff ee cd 00 00  |................|
0005b020  c6 06 00 00 ee cd 00 00  de 0d 00 00 08 00 00 00  |................|
0005b030  ee cd 00 00 36 2a 00 00  06 00 00 00 ee cd 00 00  |....6*..........|
0005b040  4a 31 00 00 02 d5 00 00  62 38 00 00 1a dc 00 00  |J1......b8......|
0005b050  62 38 00 00 08 00 00 00  2e e3 00 00 62 38 00 00  |b8..........b8..|
0005b060  08 00 00 00 2e e3 00 00  62 38 00 00 05 00 00 00  |........b8......|
0005b070  00 00 00 00 02 00 00 00  f4 00 00 00 7a 14 01 00  |............z...|
0005b080  62 ff ff ff ca 4d 01 00  b2 38 00 00 ff ff ff ff  |b....M...8......|
0005b090  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005b0a0  0a 2a 01 00 62 38 00 00  08 00 00 00 4e 3f 01 00  |.*..b8......N?..|
0005b0b0  62 38 00 00 06 00 00 00  62 46 01 00 62 38 00 00  |b8......bF..b8..|
0005b0c0  7a 4d 01 00 4a 31 00 00  7a 4d 01 00 36 2a 00 00  |zM..J1..zM..6*..|
0005b0d0  08 00 00 00 7a 4d 01 00  de 0d 00 00 06 00 00 00  |....zM..........|
0005b0e0  7a 4d 01 00 c6 06 00 00  62 46 01 00 b2 ff ff ff  |zM......bF......|
0005b0f0  4e 3f 01 00 b2 ff ff ff  08 00 00 00 f6 22 01 00  |N?..........."..|
0005b100  b2 ff ff ff 06 00 00 00  de 1b 01 00 b2 ff ff ff  |................|
0005b110  ca 14 01 00 c6 06 00 00  ca 14 01 00 de 0d 00 00  |................|
0005b120  08 00 00 00 ca 14 01 00  36 2a 00 00 06 00 00 00  |........6*......|
0005b130  ca 14 01 00 4a 31 00 00  de 1b 01 00 62 38 00 00  |....J1......b8..|
0005b140  f6 22 01 00 62 38 00 00  08 00 00 00 0a 2a 01 00  |."..b8.......*..|
0005b150  62 38 00 00 08 00 00 00  0a 2a 01 00 62 38 00 00  |b8.......*..b8..|
0005b160  05 00 00 00 00 00 00 00  01 00 00 00 38 00 00 00  |............8...|
0005b170  15 96 00 00 68 14 00 00  57 b5 00 00 e7 2a 00 00  |....h...W....*..|
0005b180  00 00 00 00 00 ff ff ff  16 00 00 00 00 1e 00 00  |................|
0005b190  00 1e 00 00 3e 95 00 00  f2 14 00 00 33 32 00 00  |....>.......32..|
0005b1a0  01 00 00 00 38 00 00 00  f1 dc 00 00 68 14 00 00  |....8.......h...|
0005b1b0  00 f8 00 00 e7 2a 00 00  00 00 00 00 00 ff ff ff  |.....*..........|
0005b1c0  16 00 00 00 00 1e 00 00  00 1e 00 00 1a dc 00 00  |................|
0005b1d0  f2 14 00 00 33 31 00 00  01 00 00 00 38 00 00 00  |....31......8...|
0005b1e0  ae 23 01 00 f2 14 00 00  4d 43 01 00 4e 2a 00 00  |.#......MC..N*..|
0005b1f0  00 00 00 00 00 ff ff ff  16 00 00 00 00 1e 00 00  |................|
0005b200  00 1e 00 00 f6 22 01 00  f2 14 00 00 34 34 00 00  |....."......44..|
0005b210  01 00 00 00 38 00 00 00  15 96 00 00 dc 9c fe ff  |....8...........|
0005b220  57 b5 00 00 4c b3 fe ff  00 00 00 00 00 ff ff ff  |W...L...........|
0005b230  16 00 00 00 00 1e 00 00  00 1e 00 00 3e 95 00 00  |............>...|
0005b240  66 9d fe ff 32 35 00 00  01 00 00 00 38 00 00 00  |f...25......8...|
0005b250  d2 dc 00 00 66 9d fe ff  00 f8 00 00 c2 b2 fe ff  |....f...........|
0005b260  00 00 00 00 00 ff ff ff  16 00 00 00 00 1e 00 00  |................|
0005b270  00 1e 00 00 1a dc 00 00  66 9d fe ff 34 31 00 00  |........f...41..|
0005b280  01 00 00 00 38 00 00 00  c9 18 01 00 66 9d fe ff  |....8.......f...|
0005b290  72 43 01 00 4c b3 fe ff  00 00 00 00 00 ff ff ff  |rC..L...........|
0005b2a0  16 00 00 00 00 1e 00 00  00 1e 00 00 de 16 01 00  |................|
0005b2b0  66 9d fe ff 31 32 31 00  01 00 00 00 38 00 00 00  |f...121.....8...|
0005b2c0  d2 dc 00 00 b8 e3 fe ff  9f fc 00 00 9e f9 fe ff  |................|
0005b2d0  00 00 00 00 00 ff ff ff  16 00 00 00 00 1e 00 00  |................|
0005b2e0  00 1e 00 00 1a dc 00 00  42 e4 fe ff 35 37 00 00  |........B...57..|
0005b2f0  01 00 00 00 38 00 00 00  15 96 00 00 70 71 ff ff  |....8.......pq..|
0005b300  57 b5 00 00 ef 87 ff ff  00 00 00 00 00 ff ff ff  |W...............|
0005b310  16 00 00 00 00 1e 00 00  00 1e 00 00 3e 95 00 00  |............>...|
0005b320  fa 71 ff ff 38 39 00 00  01 00 00 00 38 00 00 00  |.q..89......8...|
0005b330  ed d1 00 00 70 71 ff ff  c9 00 01 00 e0 87 ff ff  |....pq..........|
0005b340  00 00 00 00 00 ff ff ff  16 00 00 00 00 1e 00 00  |................|
0005b350  00 1e 00 00 02 d0 00 00  fa 71 ff ff 31 30 35 00  |.........q..105.|
0005b360  01 00 00 00 38 00 00 00  dc 23 01 00 70 71 ff ff  |....8....#..pq..|
0005b370  99 43 01 00 e0 87 ff ff  00 00 00 00 00 ff ff ff  |.C..............|
0005b380  16 00 00 00 00 1e 00 00  00 1e 00 00 f6 22 01 00  |............."..|
0005b390  fa 71 ff ff 37 38 00 00  01 00 00 00 38 00 00 00  |.q..78......8...|
0005b3a0  15 96 00 00 4c b8 ff ff  24 b1 00 00 bc ce ff ff  |....L...$.......|
0005b3b0  00 00 00 00 00 ff ff ff  16 00 00 00 00 1e 00 00  |................|
0005b3c0  00 1e 00 00 3e 95 00 00  d6 b8 ff ff 36 31 00 00  |....>.......61..|
0005b3d0  01 00 00 00 38 00 00 00  f1 dc 00 00 4c b8 ff ff  |....8.......L...|
0005b3e0  33 fc 00 00 bc ce ff ff  00 00 00 00 00 ff ff ff  |3...............|
0005b3f0  16 00 00 00 00 1e 00 00  00 1e 00 00 1a dc 00 00  |................|
0005b400  d6 b8 ff ff 36 32 00 00  01 00 00 00 38 00 00 00  |....62......8...|
0005b410  cd 23 01 00 4c b8 ff ff  0f 43 01 00 cb ce ff ff  |.#..L....C......|
0005b420  00 00 00 00 00 ff ff ff  16 00 00 00 00 1e 00 00  |................|
0005b430  00 1e 00 00 f6 22 01 00  d6 b8 ff ff 36 33 00 00  |....."......63..|
0005b440  02 00 00 00 ac 00 00 00  0a f6 00 00 a6 29 00 00  |.............)..|
0005b450  be fd 00 00 56 31 00 00  00 00 cc 00 00 00 00 00  |....V1..........|
0005b460  a0 00 00 00 40 00 a0 a0  02 00 00 00 6e fd 00 00  |....@.......n...|
0005b470  f6 29 00 00 06 00 00 00  7a fb 00 00 02 28 00 00  |.)......z....(..|
0005b480  4e f8 00 00 02 28 00 00  5a f6 00 00 f6 29 00 00  |N....(..Z....)..|
0005b490  06 00 00 00 66 f4 00 00  ea 2b 00 00 66 f4 00 00  |....f....+..f...|
0005b4a0  12 2f 00 00 5a f6 00 00  06 31 00 00 06 00 00 00  |./..Z....1......|
0005b4b0  4e f8 00 00 fa 32 00 00  7a fb 00 00 fa 32 00 00  |N....2..z....2..|
0005b4c0  6e fd 00 00 06 31 00 00  06 00 00 00 62 ff 00 00  |n....1......b...|
0005b4d0  12 2f 00 00 62 ff 00 00  ea 2b 00 00 6e fd 00 00  |./..b....+..n...|
0005b4e0  f6 29 00 00 05 00 00 00  00 00 00 00 06 00 00 00  |.)..............|
0005b4f0  a4 59 00 00 ba 31 00 00  92 62 00 00 12 4b 04 00  |.Y...1...b...K..|
0005b500  72 13 02 00 20 20 20 20  20 20 20 20 20 20 20 20  |r...            |
0005b510  02 00 00 00 6c 00 00 00  96 78 00 00 6e a9 00 00  |....l....x..n...|
0005b520  ce aa 00 00 be e2 00 00  00 dd dd dd 00 00 00 00  |................|
0005b530  a0 00 00 00 40 00 a0 a0  02 00 00 00 e6 78 00 00  |....@........x..|
0005b540  6e e2 00 00 08 00 00 00  7e aa 00 00 6e e2 00 00  |n.......~...n...|
0005b550  08 00 00 00 7e aa 00 00  be a9 00 00 08 00 00 00  |....~...........|
0005b560  e6 78 00 00 be a9 00 00  08 00 00 00 e6 78 00 00  |.x...........x..|
0005b570  6e e2 00 00 05 00 00 00  00 00 00 00 02 00 00 00  |n...............|
0005b580  f4 00 00 00 ba 31 00 00  02 7e 01 00 0a 6b 00 00  |.....1...~...k..|
0005b590  52 b7 01 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |R...............|
0005b5a0  40 00 a0 a0 02 00 00 00  4a 47 00 00 02 b7 01 00  |@.......JG......|
0005b5b0  08 00 00 00 8e 5c 00 00  02 b7 01 00 06 00 00 00  |.....\..........|
0005b5c0  a2 63 00 00 02 b7 01 00  ba 6a 00 00 ee af 01 00  |.c.......j......|
0005b5d0  ba 6a 00 00 d6 a8 01 00  08 00 00 00 ba 6a 00 00  |.j...........j..|
0005b5e0  7e 8c 01 00 06 00 00 00  ba 6a 00 00 6a 85 01 00  |~........j..j...|
0005b5f0  a2 63 00 00 52 7e 01 00  8e 5c 00 00 52 7e 01 00  |.c..R~...\..R~..|
0005b600  08 00 00 00 36 40 00 00  52 7e 01 00 06 00 00 00  |....6@..R~......|
0005b610  1e 39 00 00 52 7e 01 00  0a 32 00 00 6a 85 01 00  |.9..R~...2..j...|
0005b620  0a 32 00 00 7e 8c 01 00  08 00 00 00 0a 32 00 00  |.2..~........2..|
0005b630  d6 a8 01 00 06 00 00 00  0a 32 00 00 ee af 01 00  |.........2......|
0005b640  1e 39 00 00 02 b7 01 00  36 40 00 00 02 b7 01 00  |.9......6@......|
0005b650  08 00 00 00 4a 47 00 00  02 b7 01 00 08 00 00 00  |....JG..........|
0005b660  4a 47 00 00 02 b7 01 00  05 00 00 00 00 00 00 00  |JG..............|
0005b670  02 00 00 00 f4 00 00 00  96 78 00 00 02 7e 01 00  |.........x...~..|
0005b680  e6 b1 00 00 52 b7 01 00  ff ff ff ff 00 00 00 00  |....R...........|
0005b690  a0 00 00 00 40 00 a0 a0  02 00 00 00 26 8e 00 00  |....@.......&...|
0005b6a0  02 b7 01 00 08 00 00 00  6a a3 00 00 02 b7 01 00  |........j.......|
0005b6b0  06 00 00 00 7e aa 00 00  02 b7 01 00 96 b1 00 00  |....~...........|
0005b6c0  ee af 01 00 96 b1 00 00  d6 a8 01 00 08 00 00 00  |................|
0005b6d0  96 b1 00 00 7e 8c 01 00  06 00 00 00 96 b1 00 00  |....~...........|
0005b6e0  6a 85 01 00 7e aa 00 00  52 7e 01 00 6a a3 00 00  |j...~...R~..j...|
0005b6f0  52 7e 01 00 08 00 00 00  12 87 00 00 52 7e 01 00  |R~..........R~..|
0005b700  06 00 00 00 fa 7f 00 00  52 7e 01 00 e6 78 00 00  |........R~...x..|
0005b710  6a 85 01 00 e6 78 00 00  7e 8c 01 00 08 00 00 00  |j....x..~.......|
0005b720  e6 78 00 00 d6 a8 01 00  06 00 00 00 e6 78 00 00  |.x...........x..|
0005b730  ee af 01 00 fa 7f 00 00  02 b7 01 00 12 87 00 00  |................|
0005b740  02 b7 01 00 08 00 00 00  26 8e 00 00 02 b7 01 00  |........&.......|
0005b750  08 00 00 00 26 8e 00 00  02 b7 01 00 05 00 00 00  |....&...........|
0005b760  00 00 00 00 02 00 00 00  f4 00 00 00 72 bf 00 00  |............r...|
0005b770  02 7e 01 00 c2 f8 00 00  52 b7 01 00 ff ff ff ff  |.~......R.......|
0005b780  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005b790  02 d5 00 00 02 b7 01 00  08 00 00 00 46 ea 00 00  |............F...|
0005b7a0  02 b7 01 00 06 00 00 00  5a f1 00 00 02 b7 01 00  |........Z.......|
0005b7b0  72 f8 00 00 ee af 01 00  72 f8 00 00 d6 a8 01 00  |r.......r.......|
0005b7c0  08 00 00 00 72 f8 00 00  7e 8c 01 00 06 00 00 00  |....r...~.......|
0005b7d0  72 f8 00 00 6a 85 01 00  5a f1 00 00 52 7e 01 00  |r...j...Z...R~..|
0005b7e0  46 ea 00 00 52 7e 01 00  08 00 00 00 ee cd 00 00  |F...R~..........|
0005b7f0  52 7e 01 00 06 00 00 00  d6 c6 00 00 52 7e 01 00  |R~..........R~..|
0005b800  c2 bf 00 00 6a 85 01 00  c2 bf 00 00 7e 8c 01 00  |....j.......~...|
0005b810  08 00 00 00 c2 bf 00 00  d6 a8 01 00 06 00 00 00  |................|
0005b820  c2 bf 00 00 ee af 01 00  d6 c6 00 00 02 b7 01 00  |................|
0005b830  ee cd 00 00 02 b7 01 00  08 00 00 00 02 d5 00 00  |................|
0005b840  02 b7 01 00 08 00 00 00  02 d5 00 00 02 b7 01 00  |................|
0005b850  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005b860  4e 06 01 00 02 7e 01 00  9e 3f 01 00 52 b7 01 00  |N....~...?..R...|
0005b870  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005b880  02 00 00 00 de 1b 01 00  02 b7 01 00 08 00 00 00  |................|
0005b890  22 31 01 00 02 b7 01 00  06 00 00 00 36 38 01 00  |"1..........68..|
0005b8a0  02 b7 01 00 4e 3f 01 00  ee af 01 00 4e 3f 01 00  |....N?......N?..|
0005b8b0  d6 a8 01 00 08 00 00 00  4e 3f 01 00 7e 8c 01 00  |........N?..~...|
0005b8c0  06 00 00 00 4e 3f 01 00  6a 85 01 00 36 38 01 00  |....N?..j...68..|
0005b8d0  52 7e 01 00 22 31 01 00  52 7e 01 00 08 00 00 00  |R~.."1..R~......|
0005b8e0  ca 14 01 00 52 7e 01 00  06 00 00 00 b2 0d 01 00  |....R~..........|
0005b8f0  52 7e 01 00 9e 06 01 00  6a 85 01 00 9e 06 01 00  |R~......j.......|
0005b900  7e 8c 01 00 08 00 00 00  9e 06 01 00 d6 a8 01 00  |~...............|
0005b910  06 00 00 00 9e 06 01 00  ee af 01 00 b2 0d 01 00  |................|
0005b920  02 b7 01 00 ca 14 01 00  02 b7 01 00 08 00 00 00  |................|
0005b930  de 1b 01 00 02 b7 01 00  08 00 00 00 de 1b 01 00  |................|
0005b940  02 b7 01 00 05 00 00 00  00 00 00 00 02 00 00 00  |................|
0005b950  f4 00 00 00 2a 4d 01 00  02 7e 01 00 7a 86 01 00  |....*M...~..z...|
0005b960  52 b7 01 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |R...............|
0005b970  40 00 a0 a0 02 00 00 00  ba 62 01 00 02 b7 01 00  |@........b......|
0005b980  08 00 00 00 fe 77 01 00  02 b7 01 00 06 00 00 00  |.....w..........|
0005b990  12 7f 01 00 02 b7 01 00  2a 86 01 00 ee af 01 00  |........*.......|
0005b9a0  2a 86 01 00 d6 a8 01 00  08 00 00 00 2a 86 01 00  |*...........*...|
0005b9b0  7e 8c 01 00 06 00 00 00  2a 86 01 00 6a 85 01 00  |~.......*...j...|
0005b9c0  12 7f 01 00 52 7e 01 00  fe 77 01 00 52 7e 01 00  |....R~...w..R~..|
0005b9d0  08 00 00 00 a6 5b 01 00  52 7e 01 00 06 00 00 00  |.....[..R~......|
0005b9e0  8e 54 01 00 52 7e 01 00  7a 4d 01 00 6a 85 01 00  |.T..R~..zM..j...|
0005b9f0  7a 4d 01 00 7e 8c 01 00  08 00 00 00 7a 4d 01 00  |zM..~.......zM..|
0005ba00  d6 a8 01 00 06 00 00 00  7a 4d 01 00 ee af 01 00  |........zM......|
0005ba10  8e 54 01 00 02 b7 01 00  a6 5b 01 00 02 b7 01 00  |.T.......[......|
0005ba20  08 00 00 00 ba 62 01 00  02 b7 01 00 08 00 00 00  |.....b..........|
0005ba30  ba 62 01 00 02 b7 01 00  05 00 00 00 00 00 00 00  |.b..............|
0005ba40  02 00 00 00 f4 00 00 00  06 94 01 00 02 7e 01 00  |.............~..|
0005ba50  56 cd 01 00 52 b7 01 00  ff ff ff ff 00 00 00 00  |V...R...........|
0005ba60  a0 00 00 00 40 00 a0 a0  02 00 00 00 96 a9 01 00  |....@...........|
0005ba70  02 b7 01 00 08 00 00 00  da be 01 00 02 b7 01 00  |................|
0005ba80  06 00 00 00 ee c5 01 00  02 b7 01 00 06 cd 01 00  |................|
0005ba90  ee af 01 00 06 cd 01 00  d6 a8 01 00 08 00 00 00  |................|
0005baa0  06 cd 01 00 7e 8c 01 00  06 00 00 00 06 cd 01 00  |....~...........|
0005bab0  6a 85 01 00 ee c5 01 00  52 7e 01 00 da be 01 00  |j.......R~......|
0005bac0  52 7e 01 00 08 00 00 00  82 a2 01 00 52 7e 01 00  |R~..........R~..|
0005bad0  06 00 00 00 6a 9b 01 00  52 7e 01 00 56 94 01 00  |....j...R~..V...|
0005bae0  6a 85 01 00 56 94 01 00  7e 8c 01 00 08 00 00 00  |j...V...~.......|
0005baf0  56 94 01 00 d6 a8 01 00  06 00 00 00 56 94 01 00  |V...........V...|
0005bb00  ee af 01 00 6a 9b 01 00  02 b7 01 00 82 a2 01 00  |....j...........|
0005bb10  02 b7 01 00 08 00 00 00  96 a9 01 00 02 b7 01 00  |................|
0005bb20  08 00 00 00 96 a9 01 00  02 b7 01 00 05 00 00 00  |................|
0005bb30  00 00 00 00 02 00 00 00  f4 00 00 00 e2 da 01 00  |................|
0005bb40  02 7e 01 00 32 14 02 00  52 b7 01 00 ff ff ff ff  |.~..2...R.......|
0005bb50  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005bb60  72 f0 01 00 02 b7 01 00  08 00 00 00 b6 05 02 00  |r...............|
0005bb70  02 b7 01 00 06 00 00 00  ca 0c 02 00 02 b7 01 00  |................|
0005bb80  e2 13 02 00 ee af 01 00  e2 13 02 00 d6 a8 01 00  |................|
0005bb90  08 00 00 00 e2 13 02 00  7e 8c 01 00 06 00 00 00  |........~.......|
0005bba0  e2 13 02 00 6a 85 01 00  ca 0c 02 00 52 7e 01 00  |....j.......R~..|
0005bbb0  b6 05 02 00 52 7e 01 00  08 00 00 00 5e e9 01 00  |....R~......^...|
0005bbc0  52 7e 01 00 06 00 00 00  46 e2 01 00 52 7e 01 00  |R~......F...R~..|
0005bbd0  32 db 01 00 6a 85 01 00  32 db 01 00 7e 8c 01 00  |2...j...2...~...|
0005bbe0  08 00 00 00 32 db 01 00  d6 a8 01 00 06 00 00 00  |....2...........|
0005bbf0  32 db 01 00 ee af 01 00  46 e2 01 00 02 b7 01 00  |2.......F.......|
0005bc00  5e e9 01 00 02 b7 01 00  08 00 00 00 72 f0 01 00  |^...........r...|
0005bc10  02 b7 01 00 08 00 00 00  72 f0 01 00 02 b7 01 00  |........r.......|
0005bc20  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005bc30  be 21 02 00 02 7e 01 00  0e 5b 02 00 52 b7 01 00  |.!...~...[..R...|
0005bc40  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005bc50  02 00 00 00 4e 37 02 00  02 b7 01 00 08 00 00 00  |....N7..........|
0005bc60  92 4c 02 00 02 b7 01 00  06 00 00 00 a6 53 02 00  |.L...........S..|
0005bc70  02 b7 01 00 be 5a 02 00  ee af 01 00 be 5a 02 00  |.....Z.......Z..|
0005bc80  d6 a8 01 00 08 00 00 00  be 5a 02 00 7e 8c 01 00  |.........Z..~...|
0005bc90  06 00 00 00 be 5a 02 00  6a 85 01 00 a6 53 02 00  |.....Z..j....S..|
0005bca0  52 7e 01 00 92 4c 02 00  52 7e 01 00 08 00 00 00  |R~...L..R~......|
0005bcb0  3a 30 02 00 52 7e 01 00  06 00 00 00 22 29 02 00  |:0..R~......")..|
0005bcc0  52 7e 01 00 0e 22 02 00  6a 85 01 00 0e 22 02 00  |R~..."..j...."..|
0005bcd0  7e 8c 01 00 08 00 00 00  0e 22 02 00 d6 a8 01 00  |~........"......|
0005bce0  06 00 00 00 0e 22 02 00  ee af 01 00 22 29 02 00  |....."......")..|
0005bcf0  02 b7 01 00 3a 30 02 00  02 b7 01 00 08 00 00 00  |....:0..........|
0005bd00  4e 37 02 00 02 b7 01 00  08 00 00 00 4e 37 02 00  |N7..........N7..|
0005bd10  02 b7 01 00 05 00 00 00  00 00 00 00 02 00 00 00  |................|
0005bd20  f4 00 00 00 9a 68 02 00  02 7e 01 00 ea a1 02 00  |.....h...~......|
0005bd30  52 b7 01 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |R...............|
0005bd40  40 00 a0 a0 02 00 00 00  2a 7e 02 00 02 b7 01 00  |@.......*~......|
0005bd50  08 00 00 00 6e 93 02 00  02 b7 01 00 06 00 00 00  |....n...........|
0005bd60  82 9a 02 00 02 b7 01 00  9a a1 02 00 ee af 01 00  |................|
0005bd70  9a a1 02 00 d6 a8 01 00  08 00 00 00 9a a1 02 00  |................|
0005bd80  7e 8c 01 00 06 00 00 00  9a a1 02 00 6a 85 01 00  |~...........j...|
0005bd90  82 9a 02 00 52 7e 01 00  6e 93 02 00 52 7e 01 00  |....R~..n...R~..|
0005bda0  08 00 00 00 16 77 02 00  52 7e 01 00 06 00 00 00  |.....w..R~......|
0005bdb0  fe 6f 02 00 52 7e 01 00  ea 68 02 00 6a 85 01 00  |.o..R~...h..j...|
0005bdc0  ea 68 02 00 7e 8c 01 00  08 00 00 00 ea 68 02 00  |.h..~........h..|
0005bdd0  d6 a8 01 00 06 00 00 00  ea 68 02 00 ee af 01 00  |.........h......|
0005bde0  fe 6f 02 00 02 b7 01 00  16 77 02 00 02 b7 01 00  |.o.......w......|
0005bdf0  08 00 00 00 2a 7e 02 00  02 b7 01 00 08 00 00 00  |....*~..........|
0005be00  2a 7e 02 00 02 b7 01 00  05 00 00 00 00 00 00 00  |*~..............|
0005be10  02 00 00 00 f4 00 00 00  76 af 02 00 02 7e 01 00  |........v....~..|
0005be20  c6 e8 02 00 52 b7 01 00  ff ff ff ff 00 00 00 00  |....R...........|
0005be30  a0 00 00 00 40 00 a0 a0  02 00 00 00 06 c5 02 00  |....@...........|
0005be40  02 b7 01 00 08 00 00 00  4a da 02 00 02 b7 01 00  |........J.......|
0005be50  06 00 00 00 5e e1 02 00  02 b7 01 00 76 e8 02 00  |....^.......v...|
0005be60  ee af 01 00 76 e8 02 00  d6 a8 01 00 08 00 00 00  |....v...........|
0005be70  76 e8 02 00 7e 8c 01 00  06 00 00 00 76 e8 02 00  |v...~.......v...|
0005be80  6a 85 01 00 5e e1 02 00  52 7e 01 00 4a da 02 00  |j...^...R~..J...|
0005be90  52 7e 01 00 08 00 00 00  f2 bd 02 00 52 7e 01 00  |R~..........R~..|
0005bea0  06 00 00 00 da b6 02 00  52 7e 01 00 c6 af 02 00  |........R~......|
0005beb0  6a 85 01 00 c6 af 02 00  7e 8c 01 00 08 00 00 00  |j.......~.......|
0005bec0  c6 af 02 00 d6 a8 01 00  06 00 00 00 c6 af 02 00  |................|
0005bed0  ee af 01 00 da b6 02 00  02 b7 01 00 f2 bd 02 00  |................|
0005bee0  02 b7 01 00 08 00 00 00  06 c5 02 00 02 b7 01 00  |................|
0005bef0  08 00 00 00 06 c5 02 00  02 b7 01 00 05 00 00 00  |................|
0005bf00  00 00 00 00 02 00 00 00  f4 00 00 00 52 f6 02 00  |............R...|
0005bf10  02 7e 01 00 a2 2f 03 00  52 b7 01 00 ff ff ff ff  |.~.../..R.......|
0005bf20  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005bf30  e2 0b 03 00 02 b7 01 00  08 00 00 00 26 21 03 00  |............&!..|
0005bf40  02 b7 01 00 06 00 00 00  3a 28 03 00 02 b7 01 00  |........:(......|
0005bf50  52 2f 03 00 ee af 01 00  52 2f 03 00 d6 a8 01 00  |R/......R/......|
0005bf60  08 00 00 00 52 2f 03 00  7e 8c 01 00 06 00 00 00  |....R/..~.......|
0005bf70  52 2f 03 00 6a 85 01 00  3a 28 03 00 52 7e 01 00  |R/..j...:(..R~..|
0005bf80  26 21 03 00 52 7e 01 00  08 00 00 00 ce 04 03 00  |&!..R~..........|
0005bf90  52 7e 01 00 06 00 00 00  b6 fd 02 00 52 7e 01 00  |R~..........R~..|
0005bfa0  a2 f6 02 00 6a 85 01 00  a2 f6 02 00 7e 8c 01 00  |....j.......~...|
0005bfb0  08 00 00 00 a2 f6 02 00  d6 a8 01 00 06 00 00 00  |................|
0005bfc0  a2 f6 02 00 ee af 01 00  b6 fd 02 00 02 b7 01 00  |................|
0005bfd0  ce 04 03 00 02 b7 01 00  08 00 00 00 e2 0b 03 00  |................|
0005bfe0  02 b7 01 00 08 00 00 00  e2 0b 03 00 02 b7 01 00  |................|
0005bff0  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005c000  2e 3d 03 00 02 7e 01 00  7e 76 03 00 52 b7 01 00  |.=...~..~v..R...|
0005c010  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005c020  02 00 00 00 be 52 03 00  02 b7 01 00 08 00 00 00  |.....R..........|
0005c030  02 68 03 00 02 b7 01 00  06 00 00 00 16 6f 03 00  |.h...........o..|
0005c040  02 b7 01 00 2e 76 03 00  ee af 01 00 2e 76 03 00  |.....v.......v..|
0005c050  d6 a8 01 00 08 00 00 00  2e 76 03 00 7e 8c 01 00  |.........v..~...|
0005c060  06 00 00 00 2e 76 03 00  6a 85 01 00 16 6f 03 00  |.....v..j....o..|
0005c070  52 7e 01 00 02 68 03 00  52 7e 01 00 08 00 00 00  |R~...h..R~......|
0005c080  aa 4b 03 00 52 7e 01 00  06 00 00 00 92 44 03 00  |.K..R~.......D..|
0005c090  52 7e 01 00 7e 3d 03 00  6a 85 01 00 7e 3d 03 00  |R~..~=..j...~=..|
0005c0a0  7e 8c 01 00 08 00 00 00  7e 3d 03 00 d6 a8 01 00  |~.......~=......|
0005c0b0  06 00 00 00 7e 3d 03 00  ee af 01 00 92 44 03 00  |....~=.......D..|
0005c0c0  02 b7 01 00 aa 4b 03 00  02 b7 01 00 08 00 00 00  |.....K..........|
0005c0d0  be 52 03 00 02 b7 01 00  08 00 00 00 be 52 03 00  |.R...........R..|
0005c0e0  02 b7 01 00 05 00 00 00  00 00 00 00 02 00 00 00  |................|
0005c0f0  f4 00 00 00 0a 84 03 00  02 7e 01 00 5a bd 03 00  |.........~..Z...|
0005c100  52 b7 01 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |R...............|
0005c110  40 00 a0 a0 02 00 00 00  9a 99 03 00 02 b7 01 00  |@...............|
0005c120  08 00 00 00 de ae 03 00  02 b7 01 00 06 00 00 00  |................|
0005c130  f2 b5 03 00 02 b7 01 00  0a bd 03 00 ee af 01 00  |................|
0005c140  0a bd 03 00 d6 a8 01 00  08 00 00 00 0a bd 03 00  |................|
0005c150  7e 8c 01 00 06 00 00 00  0a bd 03 00 6a 85 01 00  |~...........j...|
0005c160  f2 b5 03 00 52 7e 01 00  de ae 03 00 52 7e 01 00  |....R~......R~..|
0005c170  08 00 00 00 86 92 03 00  52 7e 01 00 06 00 00 00  |........R~......|
0005c180  6e 8b 03 00 52 7e 01 00  5a 84 03 00 6a 85 01 00  |n...R~..Z...j...|
0005c190  5a 84 03 00 7e 8c 01 00  08 00 00 00 5a 84 03 00  |Z...~.......Z...|
0005c1a0  d6 a8 01 00 06 00 00 00  5a 84 03 00 ee af 01 00  |........Z.......|
0005c1b0  6e 8b 03 00 02 b7 01 00  86 92 03 00 02 b7 01 00  |n...............|
0005c1c0  08 00 00 00 9a 99 03 00  02 b7 01 00 08 00 00 00  |................|
0005c1d0  9a 99 03 00 02 b7 01 00  05 00 00 00 00 00 00 00  |................|
0005c1e0  02 00 00 00 f4 00 00 00  e6 ca 03 00 02 7e 01 00  |.............~..|
0005c1f0  36 04 04 00 52 b7 01 00  ff ff ff ff 00 00 00 00  |6...R...........|
0005c200  a0 00 00 00 40 00 a0 a0  02 00 00 00 76 e0 03 00  |....@.......v...|
0005c210  02 b7 01 00 08 00 00 00  ba f5 03 00 02 b7 01 00  |................|
0005c220  06 00 00 00 ce fc 03 00  02 b7 01 00 e6 03 04 00  |................|
0005c230  ee af 01 00 e6 03 04 00  d6 a8 01 00 08 00 00 00  |................|
0005c240  e6 03 04 00 7e 8c 01 00  06 00 00 00 e6 03 04 00  |....~...........|
0005c250  6a 85 01 00 ce fc 03 00  52 7e 01 00 ba f5 03 00  |j.......R~......|
0005c260  52 7e 01 00 08 00 00 00  62 d9 03 00 52 7e 01 00  |R~......b...R~..|
0005c270  06 00 00 00 4a d2 03 00  52 7e 01 00 36 cb 03 00  |....J...R~..6...|
0005c280  6a 85 01 00 36 cb 03 00  7e 8c 01 00 08 00 00 00  |j...6...~.......|
0005c290  36 cb 03 00 d6 a8 01 00  06 00 00 00 36 cb 03 00  |6...........6...|
0005c2a0  ee af 01 00 4a d2 03 00  02 b7 01 00 62 d9 03 00  |....J.......b...|
0005c2b0  02 b7 01 00 08 00 00 00  76 e0 03 00 02 b7 01 00  |........v.......|
0005c2c0  08 00 00 00 76 e0 03 00  02 b7 01 00 05 00 00 00  |....v...........|
0005c2d0  00 00 00 00 02 00 00 00  f4 00 00 00 c2 11 04 00  |................|
0005c2e0  02 7e 01 00 12 4b 04 00  52 b7 01 00 ff ff ff ff  |.~...K..R.......|
0005c2f0  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005c300  52 27 04 00 02 b7 01 00  08 00 00 00 96 3c 04 00  |R'...........<..|
0005c310  02 b7 01 00 06 00 00 00  aa 43 04 00 02 b7 01 00  |.........C......|
0005c320  c2 4a 04 00 ee af 01 00  c2 4a 04 00 d6 a8 01 00  |.J.......J......|
0005c330  08 00 00 00 c2 4a 04 00  7e 8c 01 00 06 00 00 00  |.....J..~.......|
0005c340  c2 4a 04 00 6a 85 01 00  aa 43 04 00 52 7e 01 00  |.J..j....C..R~..|
0005c350  96 3c 04 00 52 7e 01 00  08 00 00 00 3e 20 04 00  |.<..R~......> ..|
0005c360  52 7e 01 00 06 00 00 00  26 19 04 00 52 7e 01 00  |R~......&...R~..|
0005c370  12 12 04 00 6a 85 01 00  12 12 04 00 7e 8c 01 00  |....j.......~...|
0005c380  08 00 00 00 12 12 04 00  d6 a8 01 00 06 00 00 00  |................|
0005c390  12 12 04 00 ee af 01 00  26 19 04 00 02 b7 01 00  |........&.......|
0005c3a0  3e 20 04 00 02 b7 01 00  08 00 00 00 52 27 04 00  |> ..........R'..|
0005c3b0  02 b7 01 00 08 00 00 00  52 27 04 00 02 b7 01 00  |........R'......|
0005c3c0  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005c3d0  0a 84 03 00 22 da 01 00  5a bd 03 00 72 13 02 00  |...."...Z...r...|
0005c3e0  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005c3f0  02 00 00 00 9a 99 03 00  22 13 02 00 08 00 00 00  |........".......|
0005c400  de ae 03 00 22 13 02 00  06 00 00 00 f2 b5 03 00  |...."...........|
0005c410  22 13 02 00 0a bd 03 00  0a 0c 02 00 0a bd 03 00  |"...............|
0005c420  f6 04 02 00 08 00 00 00  0a bd 03 00 9e e8 01 00  |................|
0005c430  06 00 00 00 0a bd 03 00  86 e1 01 00 f2 b5 03 00  |................|
0005c440  72 da 01 00 de ae 03 00  72 da 01 00 08 00 00 00  |r.......r.......|
0005c450  86 92 03 00 72 da 01 00  06 00 00 00 6e 8b 03 00  |....r.......n...|
0005c460  72 da 01 00 5a 84 03 00  86 e1 01 00 5a 84 03 00  |r...Z.......Z...|
0005c470  9e e8 01 00 08 00 00 00  5a 84 03 00 f6 04 02 00  |........Z.......|
0005c480  06 00 00 00 5a 84 03 00  0a 0c 02 00 6e 8b 03 00  |....Z.......n...|
0005c490  22 13 02 00 86 92 03 00  22 13 02 00 08 00 00 00  |".......".......|
0005c4a0  9a 99 03 00 22 13 02 00  08 00 00 00 9a 99 03 00  |...."...........|
0005c4b0  22 13 02 00 05 00 00 00  00 00 00 00 02 00 00 00  |"...............|
0005c4c0  f4 00 00 00 e6 ca 03 00  22 da 01 00 36 04 04 00  |........"...6...|
0005c4d0  72 13 02 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |r...............|
0005c4e0  40 00 a0 a0 02 00 00 00  76 e0 03 00 22 13 02 00  |@.......v..."...|
0005c4f0  08 00 00 00 ba f5 03 00  22 13 02 00 06 00 00 00  |........".......|
0005c500  ce fc 03 00 22 13 02 00  e6 03 04 00 0a 0c 02 00  |...."...........|
0005c510  e6 03 04 00 f6 04 02 00  08 00 00 00 e6 03 04 00  |................|
0005c520  9e e8 01 00 06 00 00 00  e6 03 04 00 86 e1 01 00  |................|
0005c530  ce fc 03 00 72 da 01 00  ba f5 03 00 72 da 01 00  |....r.......r...|
0005c540  08 00 00 00 62 d9 03 00  72 da 01 00 06 00 00 00  |....b...r.......|
0005c550  4a d2 03 00 72 da 01 00  36 cb 03 00 86 e1 01 00  |J...r...6.......|
0005c560  36 cb 03 00 9e e8 01 00  08 00 00 00 36 cb 03 00  |6...........6...|
0005c570  f6 04 02 00 06 00 00 00  36 cb 03 00 0a 0c 02 00  |........6.......|
0005c580  4a d2 03 00 22 13 02 00  62 d9 03 00 22 13 02 00  |J..."...b..."...|
0005c590  08 00 00 00 76 e0 03 00  22 13 02 00 08 00 00 00  |....v...".......|
0005c5a0  76 e0 03 00 22 13 02 00  05 00 00 00 00 00 00 00  |v..."...........|
0005c5b0  02 00 00 00 f4 00 00 00  c2 11 04 00 22 da 01 00  |............"...|
0005c5c0  12 4b 04 00 72 13 02 00  ff ff ff ff 00 00 00 00  |.K..r...........|
0005c5d0  a0 00 00 00 40 00 a0 a0  02 00 00 00 52 27 04 00  |....@.......R'..|
0005c5e0  22 13 02 00 08 00 00 00  96 3c 04 00 22 13 02 00  |"........<.."...|
0005c5f0  06 00 00 00 aa 43 04 00  22 13 02 00 c2 4a 04 00  |.....C.."....J..|
0005c600  0a 0c 02 00 c2 4a 04 00  f6 04 02 00 08 00 00 00  |.....J..........|
0005c610  c2 4a 04 00 9e e8 01 00  06 00 00 00 c2 4a 04 00  |.J...........J..|
0005c620  86 e1 01 00 aa 43 04 00  72 da 01 00 96 3c 04 00  |.....C..r....<..|
0005c630  72 da 01 00 08 00 00 00  3e 20 04 00 72 da 01 00  |r.......> ..r...|
0005c640  06 00 00 00 26 19 04 00  72 da 01 00 12 12 04 00  |....&...r.......|
0005c650  86 e1 01 00 12 12 04 00  9e e8 01 00 08 00 00 00  |................|
0005c660  12 12 04 00 f6 04 02 00  06 00 00 00 12 12 04 00  |................|
0005c670  0a 0c 02 00 26 19 04 00  22 13 02 00 3e 20 04 00  |....&..."...> ..|
0005c680  22 13 02 00 08 00 00 00  52 27 04 00 22 13 02 00  |".......R'.."...|
0005c690  08 00 00 00 52 27 04 00  22 13 02 00 05 00 00 00  |....R'..".......|
0005c6a0  00 00 00 00 02 00 00 00  f4 00 00 00 2e 3d 03 00  |.............=..|
0005c6b0  22 da 01 00 7e 76 03 00  72 13 02 00 ff ff ff ff  |"...~v..r.......|
0005c6c0  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005c6d0  be 52 03 00 22 13 02 00  08 00 00 00 02 68 03 00  |.R.."........h..|
0005c6e0  22 13 02 00 06 00 00 00  16 6f 03 00 22 13 02 00  |"........o.."...|
0005c6f0  2e 76 03 00 0a 0c 02 00  2e 76 03 00 f6 04 02 00  |.v.......v......|
0005c700  08 00 00 00 2e 76 03 00  9e e8 01 00 06 00 00 00  |.....v..........|
0005c710  2e 76 03 00 86 e1 01 00  16 6f 03 00 72 da 01 00  |.v.......o..r...|
0005c720  02 68 03 00 72 da 01 00  08 00 00 00 aa 4b 03 00  |.h..r........K..|
0005c730  72 da 01 00 06 00 00 00  92 44 03 00 72 da 01 00  |r........D..r...|
0005c740  7e 3d 03 00 86 e1 01 00  7e 3d 03 00 9e e8 01 00  |~=......~=......|
0005c750  08 00 00 00 7e 3d 03 00  f6 04 02 00 06 00 00 00  |....~=..........|
0005c760  7e 3d 03 00 0a 0c 02 00  92 44 03 00 22 13 02 00  |~=.......D.."...|
0005c770  aa 4b 03 00 22 13 02 00  08 00 00 00 be 52 03 00  |.K.."........R..|
0005c780  22 13 02 00 08 00 00 00  be 52 03 00 22 13 02 00  |"........R.."...|
0005c790  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005c7a0  ba 31 00 00 22 da 01 00  0a 6b 00 00 72 13 02 00  |.1.."....k..r...|
0005c7b0  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005c7c0  02 00 00 00 4a 47 00 00  22 13 02 00 08 00 00 00  |....JG..".......|
0005c7d0  8e 5c 00 00 22 13 02 00  06 00 00 00 a2 63 00 00  |.\.."........c..|
0005c7e0  22 13 02 00 ba 6a 00 00  0a 0c 02 00 ba 6a 00 00  |"....j.......j..|
0005c7f0  f6 04 02 00 08 00 00 00  ba 6a 00 00 9e e8 01 00  |.........j......|
0005c800  06 00 00 00 ba 6a 00 00  86 e1 01 00 a2 63 00 00  |.....j.......c..|
0005c810  72 da 01 00 8e 5c 00 00  72 da 01 00 08 00 00 00  |r....\..r.......|
0005c820  36 40 00 00 72 da 01 00  06 00 00 00 1e 39 00 00  |6@..r........9..|
0005c830  72 da 01 00 0a 32 00 00  86 e1 01 00 0a 32 00 00  |r....2.......2..|
0005c840  9e e8 01 00 08 00 00 00  0a 32 00 00 f6 04 02 00  |.........2......|
0005c850  06 00 00 00 0a 32 00 00  0a 0c 02 00 1e 39 00 00  |.....2.......9..|
0005c860  22 13 02 00 36 40 00 00  22 13 02 00 08 00 00 00  |"...6@..".......|
0005c870  4a 47 00 00 22 13 02 00  08 00 00 00 4a 47 00 00  |JG..".......JG..|
0005c880  22 13 02 00 05 00 00 00  00 00 00 00 02 00 00 00  |"...............|
0005c890  f4 00 00 00 02 9c 00 00  26 37 01 00 52 d5 00 00  |........&7..R...|
0005c8a0  76 70 01 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |vp..............|
0005c8b0  40 00 a0 a0 02 00 00 00  96 b1 00 00 26 70 01 00  |@...........&p..|
0005c8c0  08 00 00 00 d6 c6 00 00  26 70 01 00 06 00 00 00  |........&p......|
0005c8d0  ee cd 00 00 26 70 01 00  02 d5 00 00 12 69 01 00  |....&p.......i..|
0005c8e0  02 d5 00 00 fa 61 01 00  08 00 00 00 02 d5 00 00  |.....a..........|
0005c8f0  a2 45 01 00 06 00 00 00  02 d5 00 00 8e 3e 01 00  |.E...........>..|
0005c900  ee cd 00 00 76 37 01 00  d6 c6 00 00 76 37 01 00  |....v7......v7..|
0005c910  08 00 00 00 7e aa 00 00  76 37 01 00 06 00 00 00  |....~...v7......|
0005c920  6a a3 00 00 76 37 01 00  52 9c 00 00 8e 3e 01 00  |j...v7..R....>..|
0005c930  52 9c 00 00 a2 45 01 00  08 00 00 00 52 9c 00 00  |R....E......R...|
0005c940  fa 61 01 00 06 00 00 00  52 9c 00 00 12 69 01 00  |.a......R....i..|
0005c950  6a a3 00 00 26 70 01 00  7e aa 00 00 26 70 01 00  |j...&p..~...&p..|
0005c960  08 00 00 00 96 b1 00 00  26 70 01 00 08 00 00 00  |........&p......|
0005c970  96 b1 00 00 26 70 01 00  05 00 00 00 00 00 00 00  |....&p..........|
0005c980  02 00 00 00 f4 00 00 00  de e2 00 00 26 37 01 00  |............&7..|
0005c990  2e 1c 01 00 76 70 01 00  ff ff ff ff 00 00 00 00  |....vp..........|
0005c9a0  a0 00 00 00 40 00 a0 a0  02 00 00 00 72 f8 00 00  |....@.......r...|
0005c9b0  26 70 01 00 08 00 00 00  b2 0d 01 00 26 70 01 00  |&p..........&p..|
0005c9c0  06 00 00 00 ca 14 01 00  26 70 01 00 de 1b 01 00  |........&p......|
0005c9d0  12 69 01 00 de 1b 01 00  fa 61 01 00 08 00 00 00  |.i.......a......|
0005c9e0  de 1b 01 00 a2 45 01 00  06 00 00 00 de 1b 01 00  |.....E..........|
0005c9f0  8e 3e 01 00 ca 14 01 00  76 37 01 00 b2 0d 01 00  |.>......v7......|
0005ca00  76 37 01 00 08 00 00 00  5a f1 00 00 76 37 01 00  |v7......Z...v7..|
0005ca10  06 00 00 00 46 ea 00 00  76 37 01 00 2e e3 00 00  |....F...v7......|
0005ca20  8e 3e 01 00 2e e3 00 00  a2 45 01 00 08 00 00 00  |.>.......E......|
0005ca30  2e e3 00 00 fa 61 01 00  06 00 00 00 2e e3 00 00  |.....a..........|
0005ca40  12 69 01 00 46 ea 00 00  26 70 01 00 5a f1 00 00  |.i..F...&p..Z...|
0005ca50  26 70 01 00 08 00 00 00  72 f8 00 00 26 70 01 00  |&p......r...&p..|
0005ca60  08 00 00 00 72 f8 00 00  26 70 01 00 05 00 00 00  |....r...&p......|
0005ca70  00 00 00 00 02 00 00 00  f4 00 00 00 ba 29 01 00  |.............)..|
0005ca80  26 37 01 00 0a 63 01 00  76 70 01 00 ff ff ff ff  |&7...c..vp......|
0005ca90  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005caa0  4e 3f 01 00 26 70 01 00  08 00 00 00 8e 54 01 00  |N?..&p.......T..|
0005cab0  26 70 01 00 06 00 00 00  a6 5b 01 00 26 70 01 00  |&p.......[..&p..|
0005cac0  ba 62 01 00 12 69 01 00  ba 62 01 00 fa 61 01 00  |.b...i...b...a..|
0005cad0  08 00 00 00 ba 62 01 00  a2 45 01 00 06 00 00 00  |.....b...E......|
0005cae0  ba 62 01 00 8e 3e 01 00  a6 5b 01 00 76 37 01 00  |.b...>...[..v7..|
0005caf0  8e 54 01 00 76 37 01 00  08 00 00 00 36 38 01 00  |.T..v7......68..|
0005cb00  76 37 01 00 06 00 00 00  22 31 01 00 76 37 01 00  |v7......"1..v7..|
0005cb10  0a 2a 01 00 8e 3e 01 00  0a 2a 01 00 a2 45 01 00  |.*...>...*...E..|
0005cb20  08 00 00 00 0a 2a 01 00  fa 61 01 00 06 00 00 00  |.....*...a......|
0005cb30  0a 2a 01 00 12 69 01 00  22 31 01 00 26 70 01 00  |.*...i.."1..&p..|
0005cb40  36 38 01 00 26 70 01 00  08 00 00 00 4e 3f 01 00  |68..&p......N?..|
0005cb50  26 70 01 00 08 00 00 00  4e 3f 01 00 26 70 01 00  |&p......N?..&p..|
0005cb60  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005cb70  96 70 01 00 26 37 01 00  e6 a9 01 00 76 70 01 00  |.p..&7......vp..|
0005cb80  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005cb90  02 00 00 00 2a 86 01 00  26 70 01 00 08 00 00 00  |....*...&p......|
0005cba0  6a 9b 01 00 26 70 01 00  06 00 00 00 82 a2 01 00  |j...&p..........|
0005cbb0  26 70 01 00 96 a9 01 00  12 69 01 00 96 a9 01 00  |&p.......i......|
0005cbc0  fa 61 01 00 08 00 00 00  96 a9 01 00 a2 45 01 00  |.a...........E..|
0005cbd0  06 00 00 00 96 a9 01 00  8e 3e 01 00 82 a2 01 00  |.........>......|
0005cbe0  76 37 01 00 6a 9b 01 00  76 37 01 00 08 00 00 00  |v7..j...v7......|
0005cbf0  12 7f 01 00 76 37 01 00  06 00 00 00 fe 77 01 00  |....v7.......w..|
0005cc00  76 37 01 00 e6 70 01 00  8e 3e 01 00 e6 70 01 00  |v7...p...>...p..|
0005cc10  a2 45 01 00 08 00 00 00  e6 70 01 00 fa 61 01 00  |.E.......p...a..|
0005cc20  06 00 00 00 e6 70 01 00  12 69 01 00 fe 77 01 00  |.....p...i...w..|
0005cc30  26 70 01 00 12 7f 01 00  26 70 01 00 08 00 00 00  |&p......&p......|
0005cc40  2a 86 01 00 26 70 01 00  08 00 00 00 2a 86 01 00  |*...&p......*...|
0005cc50  26 70 01 00 05 00 00 00  00 00 00 00 02 00 00 00  |&p..............|
0005cc60  f4 00 00 00 72 b7 01 00  26 37 01 00 c2 f0 01 00  |....r...&7......|
0005cc70  76 70 01 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |vp..............|
0005cc80  40 00 a0 a0 02 00 00 00  06 cd 01 00 26 70 01 00  |@...........&p..|
0005cc90  08 00 00 00 46 e2 01 00  26 70 01 00 06 00 00 00  |....F...&p......|
0005cca0  5e e9 01 00 26 70 01 00  72 f0 01 00 12 69 01 00  |^...&p..r....i..|
0005ccb0  72 f0 01 00 fa 61 01 00  08 00 00 00 72 f0 01 00  |r....a......r...|
0005ccc0  a2 45 01 00 06 00 00 00  72 f0 01 00 8e 3e 01 00  |.E......r....>..|
0005ccd0  5e e9 01 00 76 37 01 00  46 e2 01 00 76 37 01 00  |^...v7..F...v7..|
0005cce0  08 00 00 00 ee c5 01 00  76 37 01 00 06 00 00 00  |........v7......|
0005ccf0  da be 01 00 76 37 01 00  c2 b7 01 00 8e 3e 01 00  |....v7.......>..|
0005cd00  c2 b7 01 00 a2 45 01 00  08 00 00 00 c2 b7 01 00  |.....E..........|
0005cd10  fa 61 01 00 06 00 00 00  c2 b7 01 00 12 69 01 00  |.a...........i..|
0005cd20  da be 01 00 26 70 01 00  ee c5 01 00 26 70 01 00  |....&p......&p..|
0005cd30  08 00 00 00 06 cd 01 00  26 70 01 00 08 00 00 00  |........&p......|
0005cd40  06 cd 01 00 26 70 01 00  05 00 00 00 00 00 00 00  |....&p..........|
0005cd50  02 00 00 00 f4 00 00 00  4e fe 01 00 26 37 01 00  |........N...&7..|
0005cd60  9e 37 02 00 76 70 01 00  ff ff ff ff 00 00 00 00  |.7..vp..........|
0005cd70  a0 00 00 00 40 00 a0 a0  02 00 00 00 e2 13 02 00  |....@...........|
0005cd80  26 70 01 00 08 00 00 00  22 29 02 00 26 70 01 00  |&p......")..&p..|
0005cd90  06 00 00 00 3a 30 02 00  26 70 01 00 4e 37 02 00  |....:0..&p..N7..|
0005cda0  12 69 01 00 4e 37 02 00  fa 61 01 00 08 00 00 00  |.i..N7...a......|
0005cdb0  4e 37 02 00 a2 45 01 00  06 00 00 00 4e 37 02 00  |N7...E......N7..|
0005cdc0  8e 3e 01 00 3a 30 02 00  76 37 01 00 22 29 02 00  |.>..:0..v7..")..|
0005cdd0  76 37 01 00 08 00 00 00  ca 0c 02 00 76 37 01 00  |v7..........v7..|
0005cde0  06 00 00 00 b6 05 02 00  76 37 01 00 9e fe 01 00  |........v7......|
0005cdf0  8e 3e 01 00 9e fe 01 00  a2 45 01 00 08 00 00 00  |.>.......E......|
0005ce00  9e fe 01 00 fa 61 01 00  06 00 00 00 9e fe 01 00  |.....a..........|
0005ce10  12 69 01 00 b6 05 02 00  26 70 01 00 ca 0c 02 00  |.i......&p......|
0005ce20  26 70 01 00 08 00 00 00  e2 13 02 00 26 70 01 00  |&p..........&p..|
0005ce30  08 00 00 00 e2 13 02 00  26 70 01 00 05 00 00 00  |........&p......|
0005ce40  00 00 00 00 02 00 00 00  f4 00 00 00 2a 45 02 00  |............*E..|
0005ce50  26 37 01 00 7a 7e 02 00  76 70 01 00 ff ff ff ff  |&7..z~..vp......|
0005ce60  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005ce70  be 5a 02 00 26 70 01 00  08 00 00 00 fe 6f 02 00  |.Z..&p.......o..|
0005ce80  26 70 01 00 06 00 00 00  16 77 02 00 26 70 01 00  |&p.......w..&p..|
0005ce90  2a 7e 02 00 12 69 01 00  2a 7e 02 00 fa 61 01 00  |*~...i..*~...a..|
0005cea0  08 00 00 00 2a 7e 02 00  a2 45 01 00 06 00 00 00  |....*~...E......|
0005ceb0  2a 7e 02 00 8e 3e 01 00  16 77 02 00 76 37 01 00  |*~...>...w..v7..|
0005cec0  fe 6f 02 00 76 37 01 00  08 00 00 00 a6 53 02 00  |.o..v7.......S..|
0005ced0  76 37 01 00 06 00 00 00  92 4c 02 00 76 37 01 00  |v7.......L..v7..|
0005cee0  7a 45 02 00 8e 3e 01 00  7a 45 02 00 a2 45 01 00  |zE...>..zE...E..|
0005cef0  08 00 00 00 7a 45 02 00  fa 61 01 00 06 00 00 00  |....zE...a......|
0005cf00  7a 45 02 00 12 69 01 00  92 4c 02 00 26 70 01 00  |zE...i...L..&p..|
0005cf10  a6 53 02 00 26 70 01 00  08 00 00 00 be 5a 02 00  |.S..&p.......Z..|
0005cf20  26 70 01 00 08 00 00 00  be 5a 02 00 26 70 01 00  |&p.......Z..&p..|
0005cf30  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005cf40  06 8c 02 00 26 37 01 00  56 c5 02 00 76 70 01 00  |....&7..V...vp..|
0005cf50  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005cf60  02 00 00 00 9a a1 02 00  26 70 01 00 08 00 00 00  |........&p......|
0005cf70  da b6 02 00 26 70 01 00  06 00 00 00 f2 bd 02 00  |....&p..........|
0005cf80  26 70 01 00 06 c5 02 00  12 69 01 00 06 c5 02 00  |&p.......i......|
0005cf90  fa 61 01 00 08 00 00 00  06 c5 02 00 a2 45 01 00  |.a...........E..|
0005cfa0  06 00 00 00 06 c5 02 00  8e 3e 01 00 f2 bd 02 00  |.........>......|
0005cfb0  76 37 01 00 da b6 02 00  76 37 01 00 08 00 00 00  |v7......v7......|
0005cfc0  82 9a 02 00 76 37 01 00  06 00 00 00 6e 93 02 00  |....v7......n...|
0005cfd0  76 37 01 00 56 8c 02 00  8e 3e 01 00 56 8c 02 00  |v7..V....>..V...|
0005cfe0  a2 45 01 00 08 00 00 00  56 8c 02 00 fa 61 01 00  |.E......V....a..|
0005cff0  06 00 00 00 56 8c 02 00  12 69 01 00 6e 93 02 00  |....V....i..n...|
0005d000  26 70 01 00 82 9a 02 00  26 70 01 00 08 00 00 00  |&p......&p......|
0005d010  9a a1 02 00 26 70 01 00  08 00 00 00 9a a1 02 00  |....&p..........|
0005d020  26 70 01 00 05 00 00 00  00 00 00 00 02 00 00 00  |&p..............|
0005d030  f4 00 00 00 e2 d2 02 00  26 37 01 00 32 0c 03 00  |........&7..2...|
0005d040  76 70 01 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |vp..............|
0005d050  40 00 a0 a0 02 00 00 00  76 e8 02 00 26 70 01 00  |@.......v...&p..|
0005d060  08 00 00 00 b6 fd 02 00  26 70 01 00 06 00 00 00  |........&p......|
0005d070  ce 04 03 00 26 70 01 00  e2 0b 03 00 12 69 01 00  |....&p.......i..|
0005d080  e2 0b 03 00 fa 61 01 00  08 00 00 00 e2 0b 03 00  |.....a..........|
0005d090  a2 45 01 00 06 00 00 00  e2 0b 03 00 8e 3e 01 00  |.E...........>..|
0005d0a0  ce 04 03 00 76 37 01 00  b6 fd 02 00 76 37 01 00  |....v7......v7..|
0005d0b0  08 00 00 00 5e e1 02 00  76 37 01 00 06 00 00 00  |....^...v7......|
0005d0c0  4a da 02 00 76 37 01 00  32 d3 02 00 8e 3e 01 00  |J...v7..2....>..|
0005d0d0  32 d3 02 00 a2 45 01 00  08 00 00 00 32 d3 02 00  |2....E......2...|
0005d0e0  fa 61 01 00 06 00 00 00  32 d3 02 00 12 69 01 00  |.a......2....i..|
0005d0f0  4a da 02 00 26 70 01 00  5e e1 02 00 26 70 01 00  |J...&p..^...&p..|
0005d100  08 00 00 00 76 e8 02 00  26 70 01 00 08 00 00 00  |....v...&p......|
0005d110  76 e8 02 00 26 70 01 00  05 00 00 00 00 00 00 00  |v...&p..........|
0005d120  02 00 00 00 f4 00 00 00  be 19 03 00 26 37 01 00  |............&7..|
0005d130  0e 53 03 00 76 70 01 00  ff ff ff ff 00 00 00 00  |.S..vp..........|
0005d140  a0 00 00 00 40 00 a0 a0  02 00 00 00 52 2f 03 00  |....@.......R/..|
0005d150  26 70 01 00 08 00 00 00  92 44 03 00 26 70 01 00  |&p.......D..&p..|
0005d160  06 00 00 00 aa 4b 03 00  26 70 01 00 be 52 03 00  |.....K..&p...R..|
0005d170  12 69 01 00 be 52 03 00  fa 61 01 00 08 00 00 00  |.i...R...a......|
0005d180  be 52 03 00 a2 45 01 00  06 00 00 00 be 52 03 00  |.R...E.......R..|
0005d190  8e 3e 01 00 aa 4b 03 00  76 37 01 00 92 44 03 00  |.>...K..v7...D..|
0005d1a0  76 37 01 00 08 00 00 00  3a 28 03 00 76 37 01 00  |v7......:(..v7..|
0005d1b0  06 00 00 00 26 21 03 00  76 37 01 00 0e 1a 03 00  |....&!..v7......|
0005d1c0  8e 3e 01 00 0e 1a 03 00  a2 45 01 00 08 00 00 00  |.>.......E......|
0005d1d0  0e 1a 03 00 fa 61 01 00  06 00 00 00 0e 1a 03 00  |.....a..........|
0005d1e0  12 69 01 00 26 21 03 00  26 70 01 00 3a 28 03 00  |.i..&!..&p..:(..|
0005d1f0  26 70 01 00 08 00 00 00  52 2f 03 00 26 70 01 00  |&p......R/..&p..|
0005d200  08 00 00 00 52 2f 03 00  26 70 01 00 05 00 00 00  |....R/..&p......|
0005d210  00 00 00 00 02 00 00 00  f4 00 00 00 9a 60 03 00  |.............`..|
0005d220  26 37 01 00 ea 99 03 00  76 70 01 00 ff ff ff ff  |&7......vp......|
0005d230  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005d240  2e 76 03 00 26 70 01 00  08 00 00 00 6e 8b 03 00  |.v..&p......n...|
0005d250  26 70 01 00 06 00 00 00  86 92 03 00 26 70 01 00  |&p..........&p..|
0005d260  9a 99 03 00 12 69 01 00  9a 99 03 00 fa 61 01 00  |.....i.......a..|
0005d270  08 00 00 00 9a 99 03 00  a2 45 01 00 06 00 00 00  |.........E......|
0005d280  9a 99 03 00 8e 3e 01 00  86 92 03 00 76 37 01 00  |.....>......v7..|
0005d290  6e 8b 03 00 76 37 01 00  08 00 00 00 16 6f 03 00  |n...v7.......o..|
0005d2a0  76 37 01 00 06 00 00 00  02 68 03 00 76 37 01 00  |v7.......h..v7..|
0005d2b0  ea 60 03 00 8e 3e 01 00  ea 60 03 00 a2 45 01 00  |.`...>...`...E..|
0005d2c0  08 00 00 00 ea 60 03 00  fa 61 01 00 06 00 00 00  |.....`...a......|
0005d2d0  ea 60 03 00 12 69 01 00  02 68 03 00 26 70 01 00  |.`...i...h..&p..|
0005d2e0  16 6f 03 00 26 70 01 00  08 00 00 00 2e 76 03 00  |.o..&p.......v..|
0005d2f0  26 70 01 00 08 00 00 00  2e 76 03 00 26 70 01 00  |&p.......v..&p..|
0005d300  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005d310  76 a7 03 00 26 37 01 00  c6 e0 03 00 76 70 01 00  |v...&7......vp..|
0005d320  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005d330  02 00 00 00 0a bd 03 00  26 70 01 00 08 00 00 00  |........&p......|
0005d340  4a d2 03 00 26 70 01 00  06 00 00 00 62 d9 03 00  |J...&p......b...|
0005d350  26 70 01 00 76 e0 03 00  12 69 01 00 76 e0 03 00  |&p..v....i..v...|
0005d360  fa 61 01 00 08 00 00 00  76 e0 03 00 a2 45 01 00  |.a......v....E..|
0005d370  06 00 00 00 76 e0 03 00  8e 3e 01 00 62 d9 03 00  |....v....>..b...|
0005d380  76 37 01 00 4a d2 03 00  76 37 01 00 08 00 00 00  |v7..J...v7......|
0005d390  f2 b5 03 00 76 37 01 00  06 00 00 00 de ae 03 00  |....v7..........|
0005d3a0  76 37 01 00 c6 a7 03 00  8e 3e 01 00 c6 a7 03 00  |v7.......>......|
0005d3b0  a2 45 01 00 08 00 00 00  c6 a7 03 00 fa 61 01 00  |.E...........a..|
0005d3c0  06 00 00 00 c6 a7 03 00  12 69 01 00 de ae 03 00  |.........i......|
0005d3d0  26 70 01 00 f2 b5 03 00  26 70 01 00 08 00 00 00  |&p......&p......|
0005d3e0  0a bd 03 00 26 70 01 00  08 00 00 00 0a bd 03 00  |....&p..........|
0005d3f0  26 70 01 00 05 00 00 00  00 00 00 00 02 00 00 00  |&p..............|
0005d400  f4 00 00 00 52 ee 03 00  26 37 01 00 12 4b 04 00  |....R...&7...K..|
0005d410  76 70 01 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |vp..............|
0005d420  40 00 a0 a0 02 00 00 00  e6 03 04 00 26 70 01 00  |@...........&p..|
0005d430  08 00 00 00 96 3c 04 00  26 70 01 00 06 00 00 00  |.....<..&p......|
0005d440  aa 43 04 00 26 70 01 00  c2 4a 04 00 12 69 01 00  |.C..&p...J...i..|
0005d450  c2 4a 04 00 fa 61 01 00  08 00 00 00 c2 4a 04 00  |.J...a.......J..|
0005d460  a2 45 01 00 06 00 00 00  c2 4a 04 00 8e 3e 01 00  |.E.......J...>..|
0005d470  aa 43 04 00 76 37 01 00  96 3c 04 00 76 37 01 00  |.C..v7...<..v7..|
0005d480  08 00 00 00 ce fc 03 00  76 37 01 00 06 00 00 00  |........v7......|
0005d490  ba f5 03 00 76 37 01 00  a2 ee 03 00 8e 3e 01 00  |....v7.......>..|
0005d4a0  a2 ee 03 00 a2 45 01 00  08 00 00 00 a2 ee 03 00  |.....E..........|
0005d4b0  fa 61 01 00 06 00 00 00  a2 ee 03 00 12 69 01 00  |.a...........i..|
0005d4c0  ba f5 03 00 26 70 01 00  ce fc 03 00 26 70 01 00  |....&p......&p..|
0005d4d0  08 00 00 00 e6 03 04 00  26 70 01 00 08 00 00 00  |........&p......|
0005d4e0  e6 03 04 00 26 70 01 00  05 00 00 00 00 00 00 00  |....&p..........|
0005d4f0  02 00 00 00 f4 00 00 00  ba 31 00 00 26 37 01 00  |.........1..&7..|
0005d500  76 8e 00 00 76 70 01 00  ff ff ff ff 00 00 00 00  |v...vp..........|
0005d510  a0 00 00 00 40 00 a0 a0  02 00 00 00 4a 47 00 00  |....@.......JG..|
0005d520  26 70 01 00 08 00 00 00  fa 7f 00 00 26 70 01 00  |&p..........&p..|
0005d530  06 00 00 00 12 87 00 00  26 70 01 00 26 8e 00 00  |........&p..&...|
0005d540  12 69 01 00 26 8e 00 00  fa 61 01 00 08 00 00 00  |.i..&....a......|
0005d550  26 8e 00 00 a2 45 01 00  06 00 00 00 26 8e 00 00  |&....E......&...|
0005d560  8e 3e 01 00 12 87 00 00  76 37 01 00 fa 7f 00 00  |.>......v7......|
0005d570  76 37 01 00 08 00 00 00  36 40 00 00 76 37 01 00  |v7......6@..v7..|
0005d580  06 00 00 00 1e 39 00 00  76 37 01 00 0a 32 00 00  |.....9..v7...2..|
0005d590  8e 3e 01 00 0a 32 00 00  a2 45 01 00 08 00 00 00  |.>...2...E......|
0005d5a0  0a 32 00 00 fa 61 01 00  06 00 00 00 0a 32 00 00  |.2...a.......2..|
0005d5b0  12 69 01 00 1e 39 00 00  26 70 01 00 36 40 00 00  |.i...9..&p..6@..|
0005d5c0  26 70 01 00 08 00 00 00  4a 47 00 00 26 70 01 00  |&p......JG..&p..|
0005d5d0  08 00 00 00 4a 47 00 00  26 70 01 00 05 00 00 00  |....JG..&p......|
0005d5e0  00 00 00 00 02 00 00 00  f4 00 00 00 46 b1 00 00  |............F...|
0005d5f0  4a f0 00 00 96 ea 00 00  9a 29 01 00 ff ff ff ff  |J........)......|
0005d600  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005d610  d6 c6 00 00 4a 29 01 00  08 00 00 00 1a dc 00 00  |....J)..........|
0005d620  4a 29 01 00 06 00 00 00  2e e3 00 00 4a 29 01 00  |J)..........J)..|
0005d630  46 ea 00 00 36 22 01 00  46 ea 00 00 1e 1b 01 00  |F...6"..F.......|
0005d640  08 00 00 00 46 ea 00 00  c6 fe 00 00 06 00 00 00  |....F...........|
0005d650  46 ea 00 00 b2 f7 00 00  2e e3 00 00 9a f0 00 00  |F...............|
0005d660  1a dc 00 00 9a f0 00 00  08 00 00 00 c2 bf 00 00  |................|
0005d670  9a f0 00 00 06 00 00 00  aa b8 00 00 9a f0 00 00  |................|
0005d680  96 b1 00 00 b2 f7 00 00  96 b1 00 00 c6 fe 00 00  |................|
0005d690  08 00 00 00 96 b1 00 00  1e 1b 01 00 06 00 00 00  |................|
0005d6a0  96 b1 00 00 36 22 01 00  aa b8 00 00 4a 29 01 00  |....6"......J)..|
0005d6b0  c2 bf 00 00 4a 29 01 00  08 00 00 00 d6 c6 00 00  |....J)..........|
0005d6c0  4a 29 01 00 08 00 00 00  d6 c6 00 00 4a 29 01 00  |J)..........J)..|
0005d6d0  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005d6e0  22 f8 00 00 4a f0 00 00  72 31 01 00 9a 29 01 00  |"...J...r1...)..|
0005d6f0  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005d700  02 00 00 00 b2 0d 01 00  4a 29 01 00 08 00 00 00  |........J)......|
0005d710  f6 22 01 00 4a 29 01 00  06 00 00 00 0a 2a 01 00  |."..J).......*..|
0005d720  4a 29 01 00 22 31 01 00  36 22 01 00 22 31 01 00  |J).."1..6".."1..|
0005d730  1e 1b 01 00 08 00 00 00  22 31 01 00 c6 fe 00 00  |........"1......|
0005d740  06 00 00 00 22 31 01 00  b2 f7 00 00 0a 2a 01 00  |...."1.......*..|
0005d750  9a f0 00 00 f6 22 01 00  9a f0 00 00 08 00 00 00  |....."..........|
0005d760  9e 06 01 00 9a f0 00 00  06 00 00 00 86 ff 00 00  |................|
0005d770  9a f0 00 00 72 f8 00 00  b2 f7 00 00 72 f8 00 00  |....r.......r...|
0005d780  c6 fe 00 00 08 00 00 00  72 f8 00 00 1e 1b 01 00  |........r.......|
0005d790  06 00 00 00 72 f8 00 00  36 22 01 00 86 ff 00 00  |....r...6"......|
0005d7a0  4a 29 01 00 9e 06 01 00  4a 29 01 00 08 00 00 00  |J)......J)......|
0005d7b0  b2 0d 01 00 4a 29 01 00  08 00 00 00 b2 0d 01 00  |....J)..........|
0005d7c0  4a 29 01 00 05 00 00 00  00 00 00 00 02 00 00 00  |J)..............|
0005d7d0  f4 00 00 00 fe 3e 01 00  4a f0 00 00 4e 78 01 00  |.....>..J...Nx..|
0005d7e0  9a 29 01 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |.)..............|
0005d7f0  40 00 a0 a0 02 00 00 00  8e 54 01 00 4a 29 01 00  |@........T..J)..|
0005d800  08 00 00 00 d2 69 01 00  4a 29 01 00 06 00 00 00  |.....i..J)......|
0005d810  e6 70 01 00 4a 29 01 00  fe 77 01 00 36 22 01 00  |.p..J)...w..6"..|
0005d820  fe 77 01 00 1e 1b 01 00  08 00 00 00 fe 77 01 00  |.w...........w..|
0005d830  c6 fe 00 00 06 00 00 00  fe 77 01 00 b2 f7 00 00  |.........w......|
0005d840  e6 70 01 00 9a f0 00 00  d2 69 01 00 9a f0 00 00  |.p.......i......|
0005d850  08 00 00 00 7a 4d 01 00  9a f0 00 00 06 00 00 00  |....zM..........|
0005d860  62 46 01 00 9a f0 00 00  4e 3f 01 00 b2 f7 00 00  |bF......N?......|
0005d870  4e 3f 01 00 c6 fe 00 00  08 00 00 00 4e 3f 01 00  |N?..........N?..|
0005d880  1e 1b 01 00 06 00 00 00  4e 3f 01 00 36 22 01 00  |........N?..6"..|
0005d890  62 46 01 00 4a 29 01 00  7a 4d 01 00 4a 29 01 00  |bF..J)..zM..J)..|
0005d8a0  08 00 00 00 8e 54 01 00  4a 29 01 00 08 00 00 00  |.....T..J)......|
0005d8b0  8e 54 01 00 4a 29 01 00  05 00 00 00 00 00 00 00  |.T..J)..........|
0005d8c0  02 00 00 00 f4 00 00 00  da 85 01 00 4a f0 00 00  |............J...|
0005d8d0  2a bf 01 00 9a 29 01 00  ff ff ff ff 00 00 00 00  |*....)..........|
0005d8e0  a0 00 00 00 40 00 a0 a0  02 00 00 00 6a 9b 01 00  |....@.......j...|
0005d8f0  4a 29 01 00 08 00 00 00  ae b0 01 00 4a 29 01 00  |J)..........J)..|
0005d900  06 00 00 00 c2 b7 01 00  4a 29 01 00 da be 01 00  |........J)......|
0005d910  36 22 01 00 da be 01 00  1e 1b 01 00 08 00 00 00  |6"..............|
0005d920  da be 01 00 c6 fe 00 00  06 00 00 00 da be 01 00  |................|
0005d930  b2 f7 00 00 c2 b7 01 00  9a f0 00 00 ae b0 01 00  |................|
0005d940  9a f0 00 00 08 00 00 00  56 94 01 00 9a f0 00 00  |........V.......|
0005d950  06 00 00 00 3e 8d 01 00  9a f0 00 00 2a 86 01 00  |....>.......*...|
0005d960  b2 f7 00 00 2a 86 01 00  c6 fe 00 00 08 00 00 00  |....*...........|
0005d970  2a 86 01 00 1e 1b 01 00  06 00 00 00 2a 86 01 00  |*...........*...|
0005d980  36 22 01 00 3e 8d 01 00  4a 29 01 00 56 94 01 00  |6"..>...J)..V...|
0005d990  4a 29 01 00 08 00 00 00  6a 9b 01 00 4a 29 01 00  |J)......j...J)..|
0005d9a0  08 00 00 00 6a 9b 01 00  4a 29 01 00 05 00 00 00  |....j...J)......|
0005d9b0  00 00 00 00 02 00 00 00  f4 00 00 00 b6 cc 01 00  |................|
0005d9c0  4a f0 00 00 06 06 02 00  9a 29 01 00 ff ff ff ff  |J........)......|
0005d9d0  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005d9e0  46 e2 01 00 4a 29 01 00  08 00 00 00 8a f7 01 00  |F...J)..........|
0005d9f0  4a 29 01 00 06 00 00 00  9e fe 01 00 4a 29 01 00  |J)..........J)..|
0005da00  b6 05 02 00 36 22 01 00  b6 05 02 00 1e 1b 01 00  |....6"..........|
0005da10  08 00 00 00 b6 05 02 00  c6 fe 00 00 06 00 00 00  |................|
0005da20  b6 05 02 00 b2 f7 00 00  9e fe 01 00 9a f0 00 00  |................|
0005da30  8a f7 01 00 9a f0 00 00  08 00 00 00 32 db 01 00  |............2...|
0005da40  9a f0 00 00 06 00 00 00  1a d4 01 00 9a f0 00 00  |................|
0005da50  06 cd 01 00 b2 f7 00 00  06 cd 01 00 c6 fe 00 00  |................|
0005da60  08 00 00 00 06 cd 01 00  1e 1b 01 00 06 00 00 00  |................|
0005da70  06 cd 01 00 36 22 01 00  1a d4 01 00 4a 29 01 00  |....6"......J)..|
0005da80  32 db 01 00 4a 29 01 00  08 00 00 00 46 e2 01 00  |2...J)......F...|
0005da90  4a 29 01 00 08 00 00 00  46 e2 01 00 4a 29 01 00  |J)......F...J)..|
0005daa0  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005dab0  92 13 02 00 4a f0 00 00  e2 4c 02 00 9a 29 01 00  |....J....L...)..|
0005dac0  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005dad0  02 00 00 00 22 29 02 00  4a 29 01 00 08 00 00 00  |....")..J)......|
0005dae0  66 3e 02 00 4a 29 01 00  06 00 00 00 7a 45 02 00  |f>..J)......zE..|
0005daf0  4a 29 01 00 92 4c 02 00  36 22 01 00 92 4c 02 00  |J)...L..6"...L..|
0005db00  1e 1b 01 00 08 00 00 00  92 4c 02 00 c6 fe 00 00  |.........L......|
0005db10  06 00 00 00 92 4c 02 00  b2 f7 00 00 7a 45 02 00  |.....L......zE..|
0005db20  9a f0 00 00 66 3e 02 00  9a f0 00 00 08 00 00 00  |....f>..........|
0005db30  0e 22 02 00 9a f0 00 00  06 00 00 00 f6 1a 02 00  |."..............|
0005db40  9a f0 00 00 e2 13 02 00  b2 f7 00 00 e2 13 02 00  |................|
0005db50  c6 fe 00 00 08 00 00 00  e2 13 02 00 1e 1b 01 00  |................|
0005db60  06 00 00 00 e2 13 02 00  36 22 01 00 f6 1a 02 00  |........6"......|
0005db70  4a 29 01 00 0e 22 02 00  4a 29 01 00 08 00 00 00  |J)..."..J)......|
0005db80  22 29 02 00 4a 29 01 00  08 00 00 00 22 29 02 00  |")..J)......")..|
0005db90  4a 29 01 00 05 00 00 00  00 00 00 00 02 00 00 00  |J)..............|
0005dba0  f4 00 00 00 6e 5a 02 00  4a f0 00 00 be 93 02 00  |....nZ..J.......|
0005dbb0  9a 29 01 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |.)..............|
0005dbc0  40 00 a0 a0 02 00 00 00  fe 6f 02 00 4a 29 01 00  |@........o..J)..|
0005dbd0  08 00 00 00 42 85 02 00  4a 29 01 00 06 00 00 00  |....B...J)......|
0005dbe0  56 8c 02 00 4a 29 01 00  6e 93 02 00 36 22 01 00  |V...J)..n...6"..|
0005dbf0  6e 93 02 00 1e 1b 01 00  08 00 00 00 6e 93 02 00  |n...........n...|
0005dc00  c6 fe 00 00 06 00 00 00  6e 93 02 00 b2 f7 00 00  |........n.......|
0005dc10  56 8c 02 00 9a f0 00 00  42 85 02 00 9a f0 00 00  |V.......B.......|
0005dc20  08 00 00 00 ea 68 02 00  9a f0 00 00 06 00 00 00  |.....h..........|
0005dc30  d2 61 02 00 9a f0 00 00  be 5a 02 00 b2 f7 00 00  |.a.......Z......|
0005dc40  be 5a 02 00 c6 fe 00 00  08 00 00 00 be 5a 02 00  |.Z...........Z..|
0005dc50  1e 1b 01 00 06 00 00 00  be 5a 02 00 36 22 01 00  |.........Z..6"..|
0005dc60  d2 61 02 00 4a 29 01 00  ea 68 02 00 4a 29 01 00  |.a..J)...h..J)..|
0005dc70  08 00 00 00 fe 6f 02 00  4a 29 01 00 08 00 00 00  |.....o..J)......|
0005dc80  fe 6f 02 00 4a 29 01 00  05 00 00 00 00 00 00 00  |.o..J)..........|
0005dc90  02 00 00 00 f4 00 00 00  4a a1 02 00 4a f0 00 00  |........J...J...|
0005dca0  9a da 02 00 9a 29 01 00  ff ff ff ff 00 00 00 00  |.....)..........|
0005dcb0  a0 00 00 00 40 00 a0 a0  02 00 00 00 da b6 02 00  |....@...........|
0005dcc0  4a 29 01 00 08 00 00 00  1e cc 02 00 4a 29 01 00  |J)..........J)..|
0005dcd0  06 00 00 00 32 d3 02 00  4a 29 01 00 4a da 02 00  |....2...J)..J...|
0005dce0  36 22 01 00 4a da 02 00  1e 1b 01 00 08 00 00 00  |6"..J...........|
0005dcf0  4a da 02 00 c6 fe 00 00  06 00 00 00 4a da 02 00  |J...........J...|
0005dd00  b2 f7 00 00 32 d3 02 00  9a f0 00 00 1e cc 02 00  |....2...........|
0005dd10  9a f0 00 00 08 00 00 00  c6 af 02 00 9a f0 00 00  |................|
0005dd20  06 00 00 00 ae a8 02 00  9a f0 00 00 9a a1 02 00  |................|
0005dd30  b2 f7 00 00 9a a1 02 00  c6 fe 00 00 08 00 00 00  |................|
0005dd40  9a a1 02 00 1e 1b 01 00  06 00 00 00 9a a1 02 00  |................|
0005dd50  36 22 01 00 ae a8 02 00  4a 29 01 00 c6 af 02 00  |6"......J)......|
0005dd60  4a 29 01 00 08 00 00 00  da b6 02 00 4a 29 01 00  |J)..........J)..|
0005dd70  08 00 00 00 da b6 02 00  4a 29 01 00 05 00 00 00  |........J)......|
0005dd80  00 00 00 00 02 00 00 00  f4 00 00 00 26 e8 02 00  |............&...|
0005dd90  4a f0 00 00 76 21 03 00  9a 29 01 00 ff ff ff ff  |J...v!...)......|
0005dda0  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005ddb0  b6 fd 02 00 4a 29 01 00  08 00 00 00 fa 12 03 00  |....J)..........|
0005ddc0  4a 29 01 00 06 00 00 00  0e 1a 03 00 4a 29 01 00  |J)..........J)..|
0005ddd0  26 21 03 00 36 22 01 00  26 21 03 00 1e 1b 01 00  |&!..6"..&!......|
0005dde0  08 00 00 00 26 21 03 00  c6 fe 00 00 06 00 00 00  |....&!..........|
0005ddf0  26 21 03 00 b2 f7 00 00  0e 1a 03 00 9a f0 00 00  |&!..............|
0005de00  fa 12 03 00 9a f0 00 00  08 00 00 00 a2 f6 02 00  |................|
0005de10  9a f0 00 00 06 00 00 00  8a ef 02 00 9a f0 00 00  |................|
0005de20  76 e8 02 00 b2 f7 00 00  76 e8 02 00 c6 fe 00 00  |v.......v.......|
0005de30  08 00 00 00 76 e8 02 00  1e 1b 01 00 06 00 00 00  |....v...........|
0005de40  76 e8 02 00 36 22 01 00  8a ef 02 00 4a 29 01 00  |v...6"......J)..|
0005de50  a2 f6 02 00 4a 29 01 00  08 00 00 00 b6 fd 02 00  |....J)..........|
0005de60  4a 29 01 00 08 00 00 00  b6 fd 02 00 4a 29 01 00  |J)..........J)..|
0005de70  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005de80  02 2f 03 00 4a f0 00 00  52 68 03 00 9a 29 01 00  |./..J...Rh...)..|
0005de90  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005dea0  02 00 00 00 92 44 03 00  4a 29 01 00 08 00 00 00  |.....D..J)......|
0005deb0  d6 59 03 00 4a 29 01 00  06 00 00 00 ea 60 03 00  |.Y..J).......`..|
0005dec0  4a 29 01 00 02 68 03 00  36 22 01 00 02 68 03 00  |J)...h..6"...h..|
0005ded0  1e 1b 01 00 08 00 00 00  02 68 03 00 c6 fe 00 00  |.........h......|
0005dee0  06 00 00 00 02 68 03 00  b2 f7 00 00 ea 60 03 00  |.....h.......`..|
0005def0  9a f0 00 00 d6 59 03 00  9a f0 00 00 08 00 00 00  |.....Y..........|
0005df00  7e 3d 03 00 9a f0 00 00  06 00 00 00 66 36 03 00  |~=..........f6..|
0005df10  9a f0 00 00 52 2f 03 00  b2 f7 00 00 52 2f 03 00  |....R/......R/..|
0005df20  c6 fe 00 00 08 00 00 00  52 2f 03 00 1e 1b 01 00  |........R/......|
0005df30  06 00 00 00 52 2f 03 00  36 22 01 00 66 36 03 00  |....R/..6"..f6..|
0005df40  4a 29 01 00 7e 3d 03 00  4a 29 01 00 08 00 00 00  |J)..~=..J)......|
0005df50  92 44 03 00 4a 29 01 00  08 00 00 00 92 44 03 00  |.D..J).......D..|
0005df60  4a 29 01 00 05 00 00 00  00 00 00 00 02 00 00 00  |J)..............|
0005df70  f4 00 00 00 de 75 03 00  4a f0 00 00 2e af 03 00  |.....u..J.......|
0005df80  9a 29 01 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |.)..............|
0005df90  40 00 a0 a0 02 00 00 00  6e 8b 03 00 4a 29 01 00  |@.......n...J)..|
0005dfa0  08 00 00 00 b2 a0 03 00  4a 29 01 00 06 00 00 00  |........J)......|
0005dfb0  c6 a7 03 00 4a 29 01 00  de ae 03 00 36 22 01 00  |....J)......6"..|
0005dfc0  de ae 03 00 1e 1b 01 00  08 00 00 00 de ae 03 00  |................|
0005dfd0  c6 fe 00 00 06 00 00 00  de ae 03 00 b2 f7 00 00  |................|
0005dfe0  c6 a7 03 00 9a f0 00 00  b2 a0 03 00 9a f0 00 00  |................|
0005dff0  08 00 00 00 5a 84 03 00  9a f0 00 00 06 00 00 00  |....Z...........|
0005e000  42 7d 03 00 9a f0 00 00  2e 76 03 00 b2 f7 00 00  |B}.......v......|
0005e010  2e 76 03 00 c6 fe 00 00  08 00 00 00 2e 76 03 00  |.v...........v..|
0005e020  1e 1b 01 00 06 00 00 00  2e 76 03 00 36 22 01 00  |.........v..6"..|
0005e030  42 7d 03 00 4a 29 01 00  5a 84 03 00 4a 29 01 00  |B}..J)..Z...J)..|
0005e040  08 00 00 00 6e 8b 03 00  4a 29 01 00 08 00 00 00  |....n...J)......|
0005e050  6e 8b 03 00 4a 29 01 00  05 00 00 00 00 00 00 00  |n...J)..........|
0005e060  02 00 00 00 f4 00 00 00  02 9c 00 00 6e a9 00 00  |............n...|
0005e070  52 d5 00 00 be e2 00 00  00 ff ff ff 00 00 00 00  |R...............|
0005e080  a0 00 00 00 40 00 a0 a0  02 00 00 00 96 b1 00 00  |....@...........|
0005e090  6e e2 00 00 08 00 00 00  d6 c6 00 00 6e e2 00 00  |n...........n...|
0005e0a0  06 00 00 00 ee cd 00 00  6e e2 00 00 02 d5 00 00  |........n.......|
0005e0b0  5a db 00 00 02 d5 00 00  42 d4 00 00 08 00 00 00  |Z.......B.......|
0005e0c0  02 d5 00 00 ea b7 00 00  06 00 00 00 02 d5 00 00  |................|
0005e0d0  d6 b0 00 00 ee cd 00 00  be a9 00 00 d6 c6 00 00  |................|
0005e0e0  be a9 00 00 08 00 00 00  7e aa 00 00 be a9 00 00  |........~.......|
0005e0f0  06 00 00 00 6a a3 00 00  be a9 00 00 52 9c 00 00  |....j.......R...|
0005e100  d6 b0 00 00 52 9c 00 00  ea b7 00 00 08 00 00 00  |....R...........|
0005e110  52 9c 00 00 42 d4 00 00  06 00 00 00 52 9c 00 00  |R...B.......R...|
0005e120  5a db 00 00 6a a3 00 00  6e e2 00 00 7e aa 00 00  |Z...j...n...~...|
0005e130  6e e2 00 00 08 00 00 00  96 b1 00 00 6e e2 00 00  |n...........n...|
0005e140  08 00 00 00 96 b1 00 00  6e e2 00 00 05 00 00 00  |........n.......|
0005e150  00 00 00 00 02 00 00 00  f4 00 00 00 de e2 00 00  |................|
0005e160  6e a9 00 00 2e 1c 01 00  be e2 00 00 ff ff ff ff  |n...............|
0005e170  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005e180  72 f8 00 00 6e e2 00 00  08 00 00 00 b2 0d 01 00  |r...n...........|
0005e190  6e e2 00 00 06 00 00 00  ca 14 01 00 6e e2 00 00  |n...........n...|
0005e1a0  de 1b 01 00 5a db 00 00  de 1b 01 00 42 d4 00 00  |....Z.......B...|
0005e1b0  08 00 00 00 de 1b 01 00  ea b7 00 00 06 00 00 00  |................|
0005e1c0  de 1b 01 00 d6 b0 00 00  ca 14 01 00 be a9 00 00  |................|
0005e1d0  b2 0d 01 00 be a9 00 00  08 00 00 00 5a f1 00 00  |............Z...|
0005e1e0  be a9 00 00 06 00 00 00  46 ea 00 00 be a9 00 00  |........F.......|
0005e1f0  2e e3 00 00 d6 b0 00 00  2e e3 00 00 ea b7 00 00  |................|
0005e200  08 00 00 00 2e e3 00 00  42 d4 00 00 06 00 00 00  |........B.......|
0005e210  2e e3 00 00 5a db 00 00  46 ea 00 00 6e e2 00 00  |....Z...F...n...|
0005e220  5a f1 00 00 6e e2 00 00  08 00 00 00 72 f8 00 00  |Z...n.......r...|
0005e230  6e e2 00 00 08 00 00 00  72 f8 00 00 6e e2 00 00  |n.......r...n...|
0005e240  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005e250  ba 29 01 00 6e a9 00 00  0a 63 01 00 be e2 00 00  |.)..n....c......|
0005e260  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005e270  02 00 00 00 4e 3f 01 00  6e e2 00 00 08 00 00 00  |....N?..n.......|
0005e280  8e 54 01 00 6e e2 00 00  06 00 00 00 a6 5b 01 00  |.T..n........[..|
0005e290  6e e2 00 00 ba 62 01 00  5a db 00 00 ba 62 01 00  |n....b..Z....b..|
0005e2a0  42 d4 00 00 08 00 00 00  ba 62 01 00 ea b7 00 00  |B........b......|
0005e2b0  06 00 00 00 ba 62 01 00  d6 b0 00 00 a6 5b 01 00  |.....b.......[..|
0005e2c0  be a9 00 00 8e 54 01 00  be a9 00 00 08 00 00 00  |.....T..........|
0005e2d0  36 38 01 00 be a9 00 00  06 00 00 00 22 31 01 00  |68.........."1..|
0005e2e0  be a9 00 00 0a 2a 01 00  d6 b0 00 00 0a 2a 01 00  |.....*.......*..|
0005e2f0  ea b7 00 00 08 00 00 00  0a 2a 01 00 42 d4 00 00  |.........*..B...|
0005e300  06 00 00 00 0a 2a 01 00  5a db 00 00 22 31 01 00  |.....*..Z..."1..|
0005e310  6e e2 00 00 36 38 01 00  6e e2 00 00 08 00 00 00  |n...68..n.......|
0005e320  4e 3f 01 00 6e e2 00 00  08 00 00 00 4e 3f 01 00  |N?..n.......N?..|
0005e330  6e e2 00 00 05 00 00 00  00 00 00 00 02 00 00 00  |n...............|
0005e340  f4 00 00 00 96 70 01 00  6e a9 00 00 e6 a9 01 00  |.....p..n.......|
0005e350  be e2 00 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |................|
0005e360  40 00 a0 a0 02 00 00 00  2a 86 01 00 6e e2 00 00  |@.......*...n...|
0005e370  08 00 00 00 6a 9b 01 00  6e e2 00 00 06 00 00 00  |....j...n.......|
0005e380  82 a2 01 00 6e e2 00 00  96 a9 01 00 5a db 00 00  |....n.......Z...|
0005e390  96 a9 01 00 42 d4 00 00  08 00 00 00 96 a9 01 00  |....B...........|
0005e3a0  ea b7 00 00 06 00 00 00  96 a9 01 00 d6 b0 00 00  |................|
0005e3b0  82 a2 01 00 be a9 00 00  6a 9b 01 00 be a9 00 00  |........j.......|
0005e3c0  08 00 00 00 12 7f 01 00  be a9 00 00 06 00 00 00  |................|
0005e3d0  fe 77 01 00 be a9 00 00  e6 70 01 00 d6 b0 00 00  |.w.......p......|
0005e3e0  e6 70 01 00 ea b7 00 00  08 00 00 00 e6 70 01 00  |.p...........p..|
0005e3f0  42 d4 00 00 06 00 00 00  e6 70 01 00 5a db 00 00  |B........p..Z...|
0005e400  fe 77 01 00 6e e2 00 00  12 7f 01 00 6e e2 00 00  |.w..n.......n...|
0005e410  08 00 00 00 2a 86 01 00  6e e2 00 00 08 00 00 00  |....*...n.......|
0005e420  2a 86 01 00 6e e2 00 00  05 00 00 00 00 00 00 00  |*...n...........|
0005e430  02 00 00 00 f4 00 00 00  72 b7 01 00 6e a9 00 00  |........r...n...|
0005e440  c2 f0 01 00 be e2 00 00  ff ff ff ff 00 00 00 00  |................|
0005e450  a0 00 00 00 40 00 a0 a0  02 00 00 00 06 cd 01 00  |....@...........|
0005e460  6e e2 00 00 08 00 00 00  46 e2 01 00 6e e2 00 00  |n.......F...n...|
0005e470  06 00 00 00 5e e9 01 00  6e e2 00 00 72 f0 01 00  |....^...n...r...|
0005e480  5a db 00 00 72 f0 01 00  42 d4 00 00 08 00 00 00  |Z...r...B.......|
0005e490  72 f0 01 00 ea b7 00 00  06 00 00 00 72 f0 01 00  |r...........r...|
0005e4a0  d6 b0 00 00 5e e9 01 00  be a9 00 00 46 e2 01 00  |....^.......F...|
0005e4b0  be a9 00 00 08 00 00 00  ee c5 01 00 be a9 00 00  |................|
0005e4c0  06 00 00 00 da be 01 00  be a9 00 00 c2 b7 01 00  |................|
0005e4d0  d6 b0 00 00 c2 b7 01 00  ea b7 00 00 08 00 00 00  |................|
0005e4e0  c2 b7 01 00 42 d4 00 00  06 00 00 00 c2 b7 01 00  |....B...........|
0005e4f0  5a db 00 00 da be 01 00  6e e2 00 00 ee c5 01 00  |Z.......n.......|
0005e500  6e e2 00 00 08 00 00 00  06 cd 01 00 6e e2 00 00  |n...........n...|
0005e510  08 00 00 00 06 cd 01 00  6e e2 00 00 05 00 00 00  |........n.......|
0005e520  00 00 00 00 02 00 00 00  f4 00 00 00 4e fe 01 00  |............N...|
0005e530  6e a9 00 00 9e 37 02 00  be e2 00 00 ff ff ff ff  |n....7..........|
0005e540  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005e550  e2 13 02 00 6e e2 00 00  08 00 00 00 22 29 02 00  |....n.......")..|
0005e560  6e e2 00 00 06 00 00 00  3a 30 02 00 6e e2 00 00  |n.......:0..n...|
0005e570  4e 37 02 00 5a db 00 00  4e 37 02 00 42 d4 00 00  |N7..Z...N7..B...|
0005e580  08 00 00 00 4e 37 02 00  ea b7 00 00 06 00 00 00  |....N7..........|
0005e590  4e 37 02 00 d6 b0 00 00  3a 30 02 00 be a9 00 00  |N7......:0......|
0005e5a0  22 29 02 00 be a9 00 00  08 00 00 00 ca 0c 02 00  |")..............|
0005e5b0  be a9 00 00 06 00 00 00  b6 05 02 00 be a9 00 00  |................|
0005e5c0  9e fe 01 00 d6 b0 00 00  9e fe 01 00 ea b7 00 00  |................|
0005e5d0  08 00 00 00 9e fe 01 00  42 d4 00 00 06 00 00 00  |........B.......|
0005e5e0  9e fe 01 00 5a db 00 00  b6 05 02 00 6e e2 00 00  |....Z.......n...|
0005e5f0  ca 0c 02 00 6e e2 00 00  08 00 00 00 e2 13 02 00  |....n...........|
0005e600  6e e2 00 00 08 00 00 00  e2 13 02 00 6e e2 00 00  |n...........n...|
0005e610  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005e620  2a 45 02 00 6e a9 00 00  7a 7e 02 00 be e2 00 00  |*E..n...z~......|
0005e630  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005e640  02 00 00 00 be 5a 02 00  6e e2 00 00 08 00 00 00  |.....Z..n.......|
0005e650  fe 6f 02 00 6e e2 00 00  06 00 00 00 16 77 02 00  |.o..n........w..|
0005e660  6e e2 00 00 2a 7e 02 00  5a db 00 00 2a 7e 02 00  |n...*~..Z...*~..|
0005e670  42 d4 00 00 08 00 00 00  2a 7e 02 00 ea b7 00 00  |B.......*~......|
0005e680  06 00 00 00 2a 7e 02 00  d6 b0 00 00 16 77 02 00  |....*~.......w..|
0005e690  be a9 00 00 fe 6f 02 00  be a9 00 00 08 00 00 00  |.....o..........|
0005e6a0  a6 53 02 00 be a9 00 00  06 00 00 00 92 4c 02 00  |.S...........L..|
0005e6b0  be a9 00 00 7a 45 02 00  d6 b0 00 00 7a 45 02 00  |....zE......zE..|
0005e6c0  ea b7 00 00 08 00 00 00  7a 45 02 00 42 d4 00 00  |........zE..B...|
0005e6d0  06 00 00 00 7a 45 02 00  5a db 00 00 92 4c 02 00  |....zE..Z....L..|
0005e6e0  6e e2 00 00 a6 53 02 00  6e e2 00 00 08 00 00 00  |n....S..n.......|
0005e6f0  be 5a 02 00 6e e2 00 00  08 00 00 00 be 5a 02 00  |.Z..n........Z..|
0005e700  6e e2 00 00 05 00 00 00  00 00 00 00 02 00 00 00  |n...............|
0005e710  f4 00 00 00 06 8c 02 00  6e a9 00 00 56 c5 02 00  |........n...V...|
0005e720  be e2 00 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |................|
0005e730  40 00 a0 a0 02 00 00 00  9a a1 02 00 6e e2 00 00  |@...........n...|
0005e740  08 00 00 00 da b6 02 00  6e e2 00 00 06 00 00 00  |........n.......|
0005e750  f2 bd 02 00 6e e2 00 00  06 c5 02 00 5a db 00 00  |....n.......Z...|
0005e760  06 c5 02 00 42 d4 00 00  08 00 00 00 06 c5 02 00  |....B...........|
0005e770  ea b7 00 00 06 00 00 00  06 c5 02 00 d6 b0 00 00  |................|
0005e780  f2 bd 02 00 be a9 00 00  da b6 02 00 be a9 00 00  |................|
0005e790  08 00 00 00 82 9a 02 00  be a9 00 00 06 00 00 00  |................|
0005e7a0  6e 93 02 00 be a9 00 00  56 8c 02 00 d6 b0 00 00  |n.......V.......|
0005e7b0  56 8c 02 00 ea b7 00 00  08 00 00 00 56 8c 02 00  |V...........V...|
0005e7c0  42 d4 00 00 06 00 00 00  56 8c 02 00 5a db 00 00  |B.......V...Z...|
0005e7d0  6e 93 02 00 6e e2 00 00  82 9a 02 00 6e e2 00 00  |n...n.......n...|
0005e7e0  08 00 00 00 9a a1 02 00  6e e2 00 00 08 00 00 00  |........n.......|
0005e7f0  9a a1 02 00 6e e2 00 00  05 00 00 00 00 00 00 00  |....n...........|
0005e800  02 00 00 00 f4 00 00 00  e2 d2 02 00 6e a9 00 00  |............n...|
0005e810  32 0c 03 00 be e2 00 00  ff ff ff ff 00 00 00 00  |2...............|
0005e820  a0 00 00 00 40 00 a0 a0  02 00 00 00 76 e8 02 00  |....@.......v...|
0005e830  6e e2 00 00 08 00 00 00  b6 fd 02 00 6e e2 00 00  |n...........n...|
0005e840  06 00 00 00 ce 04 03 00  6e e2 00 00 e2 0b 03 00  |........n.......|
0005e850  5a db 00 00 e2 0b 03 00  42 d4 00 00 08 00 00 00  |Z.......B.......|
0005e860  e2 0b 03 00 ea b7 00 00  06 00 00 00 e2 0b 03 00  |................|
0005e870  d6 b0 00 00 ce 04 03 00  be a9 00 00 b6 fd 02 00  |................|
0005e880  be a9 00 00 08 00 00 00  5e e1 02 00 be a9 00 00  |........^.......|
0005e890  06 00 00 00 4a da 02 00  be a9 00 00 32 d3 02 00  |....J.......2...|
0005e8a0  d6 b0 00 00 32 d3 02 00  ea b7 00 00 08 00 00 00  |....2...........|
0005e8b0  32 d3 02 00 42 d4 00 00  06 00 00 00 32 d3 02 00  |2...B.......2...|
0005e8c0  5a db 00 00 4a da 02 00  6e e2 00 00 5e e1 02 00  |Z...J...n...^...|
0005e8d0  6e e2 00 00 08 00 00 00  76 e8 02 00 6e e2 00 00  |n.......v...n...|
0005e8e0  08 00 00 00 76 e8 02 00  6e e2 00 00 05 00 00 00  |....v...n.......|
0005e8f0  00 00 00 00 02 00 00 00  f4 00 00 00 be 19 03 00  |................|
0005e900  6e a9 00 00 0e 53 03 00  be e2 00 00 ff ff ff ff  |n....S..........|
0005e910  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005e920  52 2f 03 00 6e e2 00 00  08 00 00 00 92 44 03 00  |R/..n........D..|
0005e930  6e e2 00 00 06 00 00 00  aa 4b 03 00 6e e2 00 00  |n........K..n...|
0005e940  be 52 03 00 5a db 00 00  be 52 03 00 42 d4 00 00  |.R..Z....R..B...|
0005e950  08 00 00 00 be 52 03 00  ea b7 00 00 06 00 00 00  |.....R..........|
0005e960  be 52 03 00 d6 b0 00 00  aa 4b 03 00 be a9 00 00  |.R.......K......|
0005e970  92 44 03 00 be a9 00 00  08 00 00 00 3a 28 03 00  |.D..........:(..|
0005e980  be a9 00 00 06 00 00 00  26 21 03 00 be a9 00 00  |........&!......|
0005e990  0e 1a 03 00 d6 b0 00 00  0e 1a 03 00 ea b7 00 00  |................|
0005e9a0  08 00 00 00 0e 1a 03 00  42 d4 00 00 06 00 00 00  |........B.......|
0005e9b0  0e 1a 03 00 5a db 00 00  26 21 03 00 6e e2 00 00  |....Z...&!..n...|
0005e9c0  3a 28 03 00 6e e2 00 00  08 00 00 00 52 2f 03 00  |:(..n.......R/..|
0005e9d0  6e e2 00 00 08 00 00 00  52 2f 03 00 6e e2 00 00  |n.......R/..n...|
0005e9e0  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005e9f0  9a 60 03 00 6e a9 00 00  ea 99 03 00 be e2 00 00  |.`..n...........|
0005ea00  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005ea10  02 00 00 00 2e 76 03 00  6e e2 00 00 08 00 00 00  |.....v..n.......|
0005ea20  6e 8b 03 00 6e e2 00 00  06 00 00 00 86 92 03 00  |n...n...........|
0005ea30  6e e2 00 00 9a 99 03 00  5a db 00 00 9a 99 03 00  |n.......Z.......|
0005ea40  42 d4 00 00 08 00 00 00  9a 99 03 00 ea b7 00 00  |B...............|
0005ea50  06 00 00 00 9a 99 03 00  d6 b0 00 00 86 92 03 00  |................|
0005ea60  be a9 00 00 6e 8b 03 00  be a9 00 00 08 00 00 00  |....n...........|
0005ea70  16 6f 03 00 be a9 00 00  06 00 00 00 02 68 03 00  |.o...........h..|
0005ea80  be a9 00 00 ea 60 03 00  d6 b0 00 00 ea 60 03 00  |.....`.......`..|
0005ea90  ea b7 00 00 08 00 00 00  ea 60 03 00 42 d4 00 00  |.........`..B...|
0005eaa0  06 00 00 00 ea 60 03 00  5a db 00 00 02 68 03 00  |.....`..Z....h..|
0005eab0  6e e2 00 00 16 6f 03 00  6e e2 00 00 08 00 00 00  |n....o..n.......|
0005eac0  2e 76 03 00 6e e2 00 00  08 00 00 00 2e 76 03 00  |.v..n........v..|
0005ead0  6e e2 00 00 05 00 00 00  00 00 00 00 02 00 00 00  |n...............|
0005eae0  f4 00 00 00 76 a7 03 00  6e a9 00 00 12 4b 04 00  |....v...n....K..|
0005eaf0  be e2 00 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |................|
0005eb00  40 00 a0 a0 02 00 00 00  e6 03 04 00 6e e2 00 00  |@...........n...|
0005eb10  08 00 00 00 96 3c 04 00  6e e2 00 00 06 00 00 00  |.....<..n.......|
0005eb20  aa 43 04 00 6e e2 00 00  c2 4a 04 00 5a db 00 00  |.C..n....J..Z...|
0005eb30  c2 4a 04 00 42 d4 00 00  08 00 00 00 c2 4a 04 00  |.J..B........J..|
0005eb40  ea b7 00 00 06 00 00 00  c2 4a 04 00 d6 b0 00 00  |.........J......|
0005eb50  aa 43 04 00 be a9 00 00  96 3c 04 00 be a9 00 00  |.C.......<......|
0005eb60  08 00 00 00 f2 b5 03 00  be a9 00 00 06 00 00 00  |................|
0005eb70  de ae 03 00 be a9 00 00  c6 a7 03 00 d6 b0 00 00  |................|
0005eb80  c6 a7 03 00 ea b7 00 00  08 00 00 00 c6 a7 03 00  |................|
0005eb90  42 d4 00 00 06 00 00 00  c6 a7 03 00 5a db 00 00  |B...........Z...|
0005eba0  de ae 03 00 6e e2 00 00  f2 b5 03 00 6e e2 00 00  |....n.......n...|
0005ebb0  08 00 00 00 8e e7 03 00  6e e2 00 00 08 00 00 00  |........n.......|
0005ebc0  e6 03 04 00 6e e2 00 00  05 00 00 00 00 00 00 00  |....n...........|
0005ebd0  02 00 00 00 f4 00 00 00  ba 31 00 00 6e a9 00 00  |.........1..n...|
0005ebe0  76 8e 00 00 be e2 00 00  00 ff ff ff 00 00 00 00  |v...............|
0005ebf0  a0 00 00 00 40 00 a0 a0  02 00 00 00 4a 47 00 00  |....@.......JG..|
0005ec00  6e e2 00 00 08 00 00 00  fa 7f 00 00 6e e2 00 00  |n...........n...|
0005ec10  06 00 00 00 12 87 00 00  6e e2 00 00 26 8e 00 00  |........n...&...|
0005ec20  5a db 00 00 26 8e 00 00  42 d4 00 00 08 00 00 00  |Z...&...B.......|
0005ec30  26 8e 00 00 ea b7 00 00  06 00 00 00 26 8e 00 00  |&...........&...|
0005ec40  d6 b0 00 00 12 87 00 00  be a9 00 00 fa 7f 00 00  |................|
0005ec50  be a9 00 00 08 00 00 00  36 40 00 00 be a9 00 00  |........6@......|
0005ec60  06 00 00 00 1e 39 00 00  be a9 00 00 0a 32 00 00  |.....9.......2..|
0005ec70  d6 b0 00 00 0a 32 00 00  ea b7 00 00 08 00 00 00  |.....2..........|
0005ec80  0a 32 00 00 42 d4 00 00  06 00 00 00 0a 32 00 00  |.2..B........2..|
0005ec90  5a db 00 00 1e 39 00 00  6e e2 00 00 36 40 00 00  |Z....9..n...6@..|
0005eca0  6e e2 00 00 08 00 00 00  4a 47 00 00 6e e2 00 00  |n.......JG..n...|
0005ecb0  08 00 00 00 4a 47 00 00  6e e2 00 00 05 00 00 00  |....JG..n.......|
0005ecc0  00 00 00 00 02 00 00 00  f4 00 00 00 de e2 00 00  |................|
0005ecd0  92 62 00 00 9e 3f 01 00  e2 9b 00 00 00 ff ff ff  |.b...?..........|
0005ece0  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005ecf0  72 f8 00 00 92 9b 00 00  08 00 00 00 22 31 01 00  |r..........."1..|
0005ed00  92 9b 00 00 06 00 00 00  36 38 01 00 92 9b 00 00  |........68......|
0005ed10  4e 3f 01 00 7e 94 00 00  4e 3f 01 00 66 8d 00 00  |N?..~...N?..f...|
0005ed20  08 00 00 00 4e 3f 01 00  0e 71 00 00 06 00 00 00  |....N?...q......|
0005ed30  4e 3f 01 00 fa 69 00 00  36 38 01 00 e2 62 00 00  |N?...i..68...b..|
0005ed40  22 31 01 00 e2 62 00 00  08 00 00 00 5a f1 00 00  |"1...b......Z...|
0005ed50  e2 62 00 00 06 00 00 00  46 ea 00 00 e2 62 00 00  |.b......F....b..|
0005ed60  2e e3 00 00 fa 69 00 00  2e e3 00 00 0e 71 00 00  |.....i.......q..|
0005ed70  08 00 00 00 2e e3 00 00  66 8d 00 00 06 00 00 00  |........f.......|
0005ed80  2e e3 00 00 7e 94 00 00  46 ea 00 00 92 9b 00 00  |....~...F.......|
0005ed90  5a f1 00 00 92 9b 00 00  08 00 00 00 72 f8 00 00  |Z...........r...|
0005eda0  92 9b 00 00 08 00 00 00  72 f8 00 00 92 9b 00 00  |........r.......|
0005edb0  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005edc0  ba 31 00 00 4a f0 00 00  ba a3 00 00 9a 29 01 00  |.1..J........)..|
0005edd0  00 ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005ede0  02 00 00 00 4a 47 00 00  4a 29 01 00 08 00 00 00  |....JG..J)......|
0005edf0  3e 95 00 00 4a 29 01 00  06 00 00 00 52 9c 00 00  |>...J)......R...|
0005ee00  4a 29 01 00 6a a3 00 00  36 22 01 00 6a a3 00 00  |J)..j...6"..j...|
0005ee10  1e 1b 01 00 08 00 00 00  6a a3 00 00 c6 fe 00 00  |........j.......|
0005ee20  06 00 00 00 6a a3 00 00  b2 f7 00 00 52 9c 00 00  |....j.......R...|
0005ee30  9a f0 00 00 3e 95 00 00  9a f0 00 00 08 00 00 00  |....>...........|
0005ee40  36 40 00 00 9a f0 00 00  06 00 00 00 1e 39 00 00  |6@...........9..|
0005ee50  9a f0 00 00 0a 32 00 00  b2 f7 00 00 0a 32 00 00  |.....2.......2..|
0005ee60  c6 fe 00 00 08 00 00 00  0a 32 00 00 1e 1b 01 00  |.........2......|
0005ee70  06 00 00 00 0a 32 00 00  36 22 01 00 1e 39 00 00  |.....2..6"...9..|
0005ee80  4a 29 01 00 36 40 00 00  4a 29 01 00 08 00 00 00  |J)..6@..J)......|
0005ee90  4a 47 00 00 4a 29 01 00  08 00 00 00 4a 47 00 00  |JG..J)......JG..|
0005eea0  4a 29 01 00 05 00 00 00  00 00 00 00 02 00 00 00  |J)..............|
0005eeb0  f4 00 00 00 56 5b 01 00  92 62 00 00 76 21 03 00  |....V[...b..v!..|
0005eec0  e2 9b 00 00 00 ff ff ff  00 00 00 00 a0 00 00 00  |................|
0005eed0  40 00 a0 a0 02 00 00 00  e6 70 01 00 92 9b 00 00  |@........p......|
0005eee0  08 00 00 00 fa 12 03 00  92 9b 00 00 06 00 00 00  |................|
0005eef0  0e 1a 03 00 92 9b 00 00  26 21 03 00 7e 94 00 00  |........&!..~...|
0005ef00  26 21 03 00 66 8d 00 00  08 00 00 00 26 21 03 00  |&!..f.......&!..|
0005ef10  0e 71 00 00 06 00 00 00  26 21 03 00 fa 69 00 00  |.q......&!...i..|
0005ef20  0e 1a 03 00 e2 62 00 00  fa 12 03 00 e2 62 00 00  |.....b.......b..|
0005ef30  08 00 00 00 d2 69 01 00  e2 62 00 00 06 00 00 00  |.....i...b......|
0005ef40  ba 62 01 00 e2 62 00 00  a6 5b 01 00 fa 69 00 00  |.b...b...[...i..|
0005ef50  a6 5b 01 00 0e 71 00 00  08 00 00 00 a6 5b 01 00  |.[...q.......[..|
0005ef60  66 8d 00 00 06 00 00 00  a6 5b 01 00 7e 94 00 00  |f........[..~...|
0005ef70  ba 62 01 00 92 9b 00 00  d2 69 01 00 92 9b 00 00  |.b.......i......|
0005ef80  08 00 00 00 e6 70 01 00  92 9b 00 00 08 00 00 00  |.....p..........|
0005ef90  e6 70 01 00 92 9b 00 00  05 00 00 00 00 00 00 00  |.p..............|
0005efa0  02 00 00 00 f4 00 00 00  2e 3d 03 00 92 62 00 00  |.........=...b..|
0005efb0  ea 99 03 00 e2 9b 00 00  00 ff ff ff 00 00 00 00  |................|
0005efc0  a0 00 00 00 40 00 a0 a0  02 00 00 00 be 52 03 00  |....@........R..|
0005efd0  92 9b 00 00 08 00 00 00  6e 8b 03 00 92 9b 00 00  |........n.......|
0005efe0  06 00 00 00 86 92 03 00  92 9b 00 00 9a 99 03 00  |................|
0005eff0  7e 94 00 00 9a 99 03 00  66 8d 00 00 08 00 00 00  |~.......f.......|
0005f000  9a 99 03 00 0e 71 00 00  06 00 00 00 9a 99 03 00  |.....q..........|
0005f010  fa 69 00 00 86 92 03 00  e2 62 00 00 6e 8b 03 00  |.i.......b..n...|
0005f020  e2 62 00 00 08 00 00 00  aa 4b 03 00 e2 62 00 00  |.b.......K...b..|
0005f030  06 00 00 00 92 44 03 00  e2 62 00 00 7e 3d 03 00  |.....D...b..~=..|
0005f040  fa 69 00 00 7e 3d 03 00  0e 71 00 00 08 00 00 00  |.i..~=...q......|
0005f050  7e 3d 03 00 66 8d 00 00  06 00 00 00 7e 3d 03 00  |~=..f.......~=..|
0005f060  7e 94 00 00 92 44 03 00  92 9b 00 00 aa 4b 03 00  |~....D.......K..|
0005f070  92 9b 00 00 08 00 00 00  be 52 03 00 92 9b 00 00  |.........R......|
0005f080  08 00 00 00 be 52 03 00  92 9b 00 00 05 00 00 00  |.....R..........|
0005f090  00 00 00 00 02 00 00 00  f4 00 00 00 52 ee 03 00  |............R...|
0005f0a0  92 62 00 00 12 4b 04 00  e2 9b 00 00 00 ff ff ff  |.b...K..........|
0005f0b0  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005f0c0  e6 03 04 00 92 9b 00 00  08 00 00 00 96 3c 04 00  |.............<..|
0005f0d0  92 9b 00 00 06 00 00 00  aa 43 04 00 92 9b 00 00  |.........C......|
0005f0e0  c2 4a 04 00 7e 94 00 00  c2 4a 04 00 66 8d 00 00  |.J..~....J..f...|
0005f0f0  08 00 00 00 c2 4a 04 00  0e 71 00 00 06 00 00 00  |.....J...q......|
0005f100  c2 4a 04 00 fa 69 00 00  aa 43 04 00 e2 62 00 00  |.J...i...C...b..|
0005f110  96 3c 04 00 e2 62 00 00  08 00 00 00 ce fc 03 00  |.<...b..........|
0005f120  e2 62 00 00 06 00 00 00  ba f5 03 00 e2 62 00 00  |.b...........b..|
0005f130  a2 ee 03 00 fa 69 00 00  a2 ee 03 00 0e 71 00 00  |.....i.......q..|
0005f140  08 00 00 00 a2 ee 03 00  66 8d 00 00 06 00 00 00  |........f.......|
0005f150  a2 ee 03 00 7e 94 00 00  ba f5 03 00 92 9b 00 00  |....~...........|
0005f160  ce fc 03 00 92 9b 00 00  08 00 00 00 e6 03 04 00  |................|
0005f170  92 9b 00 00 08 00 00 00  e6 03 04 00 92 9b 00 00  |................|
0005f180  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005f190  ba bc 03 00 4a f0 00 00  12 4b 04 00 9a 29 01 00  |....J....K...)..|
0005f1a0  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005f1b0  02 00 00 00 4a d2 03 00  4a 29 01 00 08 00 00 00  |....J...J)......|
0005f1c0  96 3c 04 00 4a 29 01 00  06 00 00 00 aa 43 04 00  |.<..J).......C..|
0005f1d0  4a 29 01 00 c2 4a 04 00  36 22 01 00 c2 4a 04 00  |J)...J..6"...J..|
0005f1e0  1e 1b 01 00 08 00 00 00  c2 4a 04 00 c6 fe 00 00  |.........J......|
0005f1f0  06 00 00 00 c2 4a 04 00  b2 f7 00 00 aa 43 04 00  |.....J.......C..|
0005f200  9a f0 00 00 96 3c 04 00  9a f0 00 00 08 00 00 00  |.....<..........|
0005f210  36 cb 03 00 9a f0 00 00  06 00 00 00 1e c4 03 00  |6...............|
0005f220  9a f0 00 00 0a bd 03 00  b2 f7 00 00 0a bd 03 00  |................|
0005f230  c6 fe 00 00 08 00 00 00  0a bd 03 00 1e 1b 01 00  |................|
0005f240  06 00 00 00 0a bd 03 00  36 22 01 00 1e c4 03 00  |........6"......|
0005f250  4a 29 01 00 36 cb 03 00  4a 29 01 00 08 00 00 00  |J)..6...J)......|
0005f260  4a d2 03 00 4a 29 01 00  08 00 00 00 4a d2 03 00  |J...J)......J...|
0005f270  4a 29 01 00 05 00 00 00  00 00 00 00 02 00 00 00  |J)..............|
0005f280  f4 00 00 00 16 3e 02 00  22 da 01 00 66 77 02 00  |.....>.."...fw..|
0005f290  72 13 02 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |r...............|
0005f2a0  40 00 a0 a0 02 00 00 00  a6 53 02 00 22 13 02 00  |@........S.."...|
0005f2b0  08 00 00 00 ea 68 02 00  22 13 02 00 06 00 00 00  |.....h..".......|
0005f2c0  fe 6f 02 00 22 13 02 00  16 77 02 00 0a 0c 02 00  |.o.."....w......|
0005f2d0  16 77 02 00 f6 04 02 00  08 00 00 00 16 77 02 00  |.w...........w..|
0005f2e0  9e e8 01 00 06 00 00 00  16 77 02 00 86 e1 01 00  |.........w......|
0005f2f0  fe 6f 02 00 72 da 01 00  ea 68 02 00 72 da 01 00  |.o..r....h..r...|
0005f300  08 00 00 00 92 4c 02 00  72 da 01 00 06 00 00 00  |.....L..r.......|
0005f310  7a 45 02 00 72 da 01 00  66 3e 02 00 86 e1 01 00  |zE..r...f>......|
0005f320  66 3e 02 00 9e e8 01 00  08 00 00 00 66 3e 02 00  |f>..........f>..|
0005f330  f6 04 02 00 06 00 00 00  66 3e 02 00 0a 0c 02 00  |........f>......|
0005f340  7a 45 02 00 22 13 02 00  92 4c 02 00 22 13 02 00  |zE.."....L.."...|
0005f350  08 00 00 00 a6 53 02 00  22 13 02 00 08 00 00 00  |.....S..".......|
0005f360  a6 53 02 00 22 13 02 00  05 00 00 00 00 00 00 00  |.S.."...........|
0005f370  02 00 00 00 f4 00 00 00  f2 84 02 00 22 da 01 00  |............"...|
0005f380  42 be 02 00 72 13 02 00  ff ff ff ff 00 00 00 00  |B...r...........|
0005f390  a0 00 00 00 40 00 a0 a0  02 00 00 00 82 9a 02 00  |....@...........|
0005f3a0  22 13 02 00 08 00 00 00  c6 af 02 00 22 13 02 00  |"..........."...|
0005f3b0  06 00 00 00 da b6 02 00  22 13 02 00 f2 bd 02 00  |........".......|
0005f3c0  0a 0c 02 00 f2 bd 02 00  f6 04 02 00 08 00 00 00  |................|
0005f3d0  f2 bd 02 00 9e e8 01 00  06 00 00 00 f2 bd 02 00  |................|
0005f3e0  86 e1 01 00 da b6 02 00  72 da 01 00 c6 af 02 00  |........r.......|
0005f3f0  72 da 01 00 08 00 00 00  6e 93 02 00 72 da 01 00  |r.......n...r...|
0005f400  06 00 00 00 56 8c 02 00  72 da 01 00 42 85 02 00  |....V...r...B...|
0005f410  86 e1 01 00 42 85 02 00  9e e8 01 00 08 00 00 00  |....B...........|
0005f420  42 85 02 00 f6 04 02 00  06 00 00 00 42 85 02 00  |B...........B...|
0005f430  0a 0c 02 00 56 8c 02 00  22 13 02 00 6e 93 02 00  |....V..."...n...|
0005f440  22 13 02 00 08 00 00 00  82 9a 02 00 22 13 02 00  |"..........."...|
0005f450  08 00 00 00 82 9a 02 00  22 13 02 00 05 00 00 00  |........".......|
0005f460  00 00 00 00 02 00 00 00  f4 00 00 00 ce cb 02 00  |................|
0005f470  22 da 01 00 1e 05 03 00  72 13 02 00 ff ff ff ff  |".......r.......|
0005f480  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005f490  5e e1 02 00 22 13 02 00  08 00 00 00 a2 f6 02 00  |^..."...........|
0005f4a0  22 13 02 00 06 00 00 00  b6 fd 02 00 22 13 02 00  |"..........."...|
0005f4b0  ce 04 03 00 0a 0c 02 00  ce 04 03 00 f6 04 02 00  |................|
0005f4c0  08 00 00 00 ce 04 03 00  9e e8 01 00 06 00 00 00  |................|
0005f4d0  ce 04 03 00 86 e1 01 00  b6 fd 02 00 72 da 01 00  |............r...|
0005f4e0  a2 f6 02 00 72 da 01 00  08 00 00 00 4a da 02 00  |....r.......J...|
0005f4f0  72 da 01 00 06 00 00 00  32 d3 02 00 72 da 01 00  |r.......2...r...|
0005f500  1e cc 02 00 86 e1 01 00  1e cc 02 00 9e e8 01 00  |................|
0005f510  08 00 00 00 1e cc 02 00  f6 04 02 00 06 00 00 00  |................|
0005f520  1e cc 02 00 0a 0c 02 00  32 d3 02 00 22 13 02 00  |........2..."...|
0005f530  4a da 02 00 22 13 02 00  08 00 00 00 5e e1 02 00  |J...".......^...|
0005f540  22 13 02 00 08 00 00 00  5e e1 02 00 22 13 02 00  |".......^..."...|
0005f550  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005f560  3a f7 01 00 22 da 01 00  8a 30 02 00 72 13 02 00  |:..."....0..r...|
0005f570  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005f580  02 00 00 00 ca 0c 02 00  22 13 02 00 08 00 00 00  |........".......|
0005f590  0e 22 02 00 22 13 02 00  06 00 00 00 22 29 02 00  |."..".......")..|
0005f5a0  22 13 02 00 3a 30 02 00  0a 0c 02 00 3a 30 02 00  |"...:0......:0..|
0005f5b0  f6 04 02 00 08 00 00 00  3a 30 02 00 9e e8 01 00  |........:0......|
0005f5c0  06 00 00 00 3a 30 02 00  86 e1 01 00 22 29 02 00  |....:0......")..|
0005f5d0  72 da 01 00 0e 22 02 00  72 da 01 00 08 00 00 00  |r...."..r.......|
0005f5e0  b6 05 02 00 72 da 01 00  06 00 00 00 9e fe 01 00  |....r...........|
0005f5f0  72 da 01 00 8a f7 01 00  86 e1 01 00 8a f7 01 00  |r...............|
0005f600  9e e8 01 00 08 00 00 00  8a f7 01 00 f6 04 02 00  |................|
0005f610  06 00 00 00 8a f7 01 00  0a 0c 02 00 9e fe 01 00  |................|
0005f620  22 13 02 00 b6 05 02 00  22 13 02 00 08 00 00 00  |".......".......|
0005f630  ca 0c 02 00 22 13 02 00  08 00 00 00 ca 0c 02 00  |...."...........|
0005f640  22 13 02 00 05 00 00 00  00 00 00 00 02 00 00 00  |"...............|
0005f650  f4 00 00 00 22 f8 00 00  22 da 01 00 72 31 01 00  |...."..."...r1..|
0005f660  72 13 02 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |r...............|
0005f670  40 00 a0 a0 02 00 00 00  b2 0d 01 00 22 13 02 00  |@..........."...|
0005f680  08 00 00 00 f6 22 01 00  22 13 02 00 06 00 00 00  |....."..".......|
0005f690  0a 2a 01 00 22 13 02 00  22 31 01 00 0a 0c 02 00  |.*.."..."1......|
0005f6a0  22 31 01 00 f6 04 02 00  08 00 00 00 22 31 01 00  |"1.........."1..|
0005f6b0  9e e8 01 00 06 00 00 00  22 31 01 00 86 e1 01 00  |........"1......|
0005f6c0  0a 2a 01 00 72 da 01 00  f6 22 01 00 72 da 01 00  |.*..r...."..r...|
0005f6d0  08 00 00 00 9e 06 01 00  72 da 01 00 06 00 00 00  |........r.......|
0005f6e0  86 ff 00 00 72 da 01 00  72 f8 00 00 86 e1 01 00  |....r...r.......|
0005f6f0  72 f8 00 00 9e e8 01 00  08 00 00 00 72 f8 00 00  |r...........r...|
0005f700  f6 04 02 00 06 00 00 00  72 f8 00 00 0a 0c 02 00  |........r.......|
0005f710  86 ff 00 00 22 13 02 00  9e 06 01 00 22 13 02 00  |...."......."...|
0005f720  08 00 00 00 b2 0d 01 00  22 13 02 00 08 00 00 00  |........".......|
0005f730  b2 0d 01 00 22 13 02 00  05 00 00 00 00 00 00 00  |...."...........|
0005f740  02 00 00 00 f4 00 00 00  fe 3e 01 00 22 da 01 00  |.........>.."...|
0005f750  4e 78 01 00 72 13 02 00  ff ff ff ff 00 00 00 00  |Nx..r...........|
0005f760  a0 00 00 00 40 00 a0 a0  02 00 00 00 8e 54 01 00  |....@........T..|
0005f770  22 13 02 00 08 00 00 00  d2 69 01 00 22 13 02 00  |"........i.."...|
0005f780  06 00 00 00 e6 70 01 00  22 13 02 00 fe 77 01 00  |.....p.."....w..|
0005f790  0a 0c 02 00 fe 77 01 00  f6 04 02 00 08 00 00 00  |.....w..........|
0005f7a0  fe 77 01 00 9e e8 01 00  06 00 00 00 fe 77 01 00  |.w...........w..|
0005f7b0  86 e1 01 00 e6 70 01 00  72 da 01 00 d2 69 01 00  |.....p..r....i..|
0005f7c0  72 da 01 00 08 00 00 00  7a 4d 01 00 72 da 01 00  |r.......zM..r...|
0005f7d0  06 00 00 00 62 46 01 00  72 da 01 00 4e 3f 01 00  |....bF..r...N?..|
0005f7e0  86 e1 01 00 4e 3f 01 00  9e e8 01 00 08 00 00 00  |....N?..........|
0005f7f0  4e 3f 01 00 f6 04 02 00  06 00 00 00 4e 3f 01 00  |N?..........N?..|
0005f800  0a 0c 02 00 62 46 01 00  22 13 02 00 7a 4d 01 00  |....bF.."...zM..|
0005f810  22 13 02 00 08 00 00 00  8e 54 01 00 22 13 02 00  |"........T.."...|
0005f820  08 00 00 00 8e 54 01 00  22 13 02 00 05 00 00 00  |.....T..".......|
0005f830  00 00 00 00 02 00 00 00  f4 00 00 00 da 85 01 00  |................|
0005f840  22 da 01 00 2a bf 01 00  72 13 02 00 ff ff ff ff  |"...*...r.......|
0005f850  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0005f860  6a 9b 01 00 22 13 02 00  08 00 00 00 ae b0 01 00  |j..."...........|
0005f870  22 13 02 00 06 00 00 00  c2 b7 01 00 22 13 02 00  |"..........."...|
0005f880  da be 01 00 0a 0c 02 00  da be 01 00 f6 04 02 00  |................|
0005f890  08 00 00 00 da be 01 00  9e e8 01 00 06 00 00 00  |................|
0005f8a0  da be 01 00 86 e1 01 00  c2 b7 01 00 72 da 01 00  |............r...|
0005f8b0  ae b0 01 00 72 da 01 00  08 00 00 00 56 94 01 00  |....r.......V...|
0005f8c0  72 da 01 00 06 00 00 00  3e 8d 01 00 72 da 01 00  |r.......>...r...|
0005f8d0  2a 86 01 00 86 e1 01 00  2a 86 01 00 9e e8 01 00  |*.......*.......|
0005f8e0  08 00 00 00 2a 86 01 00  f6 04 02 00 06 00 00 00  |....*...........|
0005f8f0  2a 86 01 00 0a 0c 02 00  3e 8d 01 00 22 13 02 00  |*.......>..."...|
0005f900  56 94 01 00 22 13 02 00  08 00 00 00 6a 9b 01 00  |V...".......j...|
0005f910  22 13 02 00 08 00 00 00  6a 9b 01 00 22 13 02 00  |".......j..."...|
0005f920  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0005f930  46 b1 00 00 22 da 01 00  96 ea 00 00 72 13 02 00  |F...".......r...|
0005f940  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0005f950  02 00 00 00 d6 c6 00 00  22 13 02 00 08 00 00 00  |........".......|
0005f960  1a dc 00 00 22 13 02 00  06 00 00 00 2e e3 00 00  |...."...........|
0005f970  22 13 02 00 46 ea 00 00  0a 0c 02 00 46 ea 00 00  |"...F.......F...|
0005f980  f6 04 02 00 08 00 00 00  46 ea 00 00 9e e8 01 00  |........F.......|
0005f990  06 00 00 00 46 ea 00 00  86 e1 01 00 2e e3 00 00  |....F...........|
0005f9a0  72 da 01 00 1a dc 00 00  72 da 01 00 08 00 00 00  |r.......r.......|
0005f9b0  c2 bf 00 00 72 da 01 00  06 00 00 00 aa b8 00 00  |....r...........|
0005f9c0  72 da 01 00 96 b1 00 00  86 e1 01 00 96 b1 00 00  |r...............|
0005f9d0  9e e8 01 00 08 00 00 00  96 b1 00 00 f6 04 02 00  |................|
0005f9e0  06 00 00 00 96 b1 00 00  0a 0c 02 00 aa b8 00 00  |................|
0005f9f0  22 13 02 00 c2 bf 00 00  22 13 02 00 08 00 00 00  |".......".......|
0005fa00  d6 c6 00 00 22 13 02 00  08 00 00 00 d6 c6 00 00  |...."...........|
0005fa10  22 13 02 00 05 00 00 00  00 00 00 00 01 00 00 00  |"...............|
0005fa20  38 00 00 00 09 36 00 00  b2 ef 01 00 e5 64 00 00  |8....6.......d..|
0005fa30  98 05 02 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
0005fa40  00 1e 00 00 00 1e 00 00  1e 34 00 00 b2 ef 01 00  |.........4......|
0005fa50  31 31 32 00 01 00 00 00  38 00 00 00 95 b5 00 00  |112.....8.......|
0005fa60  28 ef 01 00 71 e4 00 00  a7 05 02 00 00 00 00 00  |(...q...........|
0005fa70  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0005fa80  aa b3 00 00 b2 ef 01 00  31 31 33 00 01 00 00 00  |........113.....|
0005fa90  38 00 00 00 71 fc 00 00  b2 ef 01 00 8b 2b 01 00  |8...q........+..|
0005faa0  0e 05 02 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
0005fab0  00 1e 00 00 00 1e 00 00  86 fa 00 00 b2 ef 01 00  |................|
0005fac0  31 31 34 00 01 00 00 00  38 00 00 00 4d 43 01 00  |114.....8...MC..|
0005fad0  28 ef 01 00 29 72 01 00  0e 05 02 00 00 00 00 00  |(...)r..........|
0005fae0  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0005faf0  62 41 01 00 b2 ef 01 00  31 31 35 00 01 00 00 00  |bA......115.....|
0005fb00  38 00 00 00 3e 8d 01 00  28 ef 01 00 ae b5 01 00  |8...>...(.......|
0005fb10  98 05 02 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
0005fb20  00 1e 00 00 00 1e 00 00  3e 8d 01 00 b2 ef 01 00  |........>.......|
0005fb30  20 32 30 00 01 00 00 00  38 00 00 00 89 fb 01 00  | 20.....8.......|
0005fb40  28 ef 01 00 65 2a 02 00  98 05 02 00 00 00 00 00  |(...e*..........|
0005fb50  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0005fb60  9e f9 01 00 b2 ef 01 00  31 31 36 00 01 00 00 00  |........116.....|
0005fb70  38 00 00 00 65 42 02 00  b2 ef 01 00 ad 71 02 00  |8...eB.......q..|
0005fb80  0e 05 02 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
0005fb90  00 1e 00 00 00 1e 00 00  7a 40 02 00 b2 ef 01 00  |........z@......|
0005fba0  31 31 37 00 01 00 00 00  38 00 00 00 45 94 02 00  |117.....8...E...|
0005fbb0  b2 ef 01 00 87 b3 02 00  98 05 02 00 00 00 00 00  |................|
0005fbc0  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0005fbd0  6e 93 02 00 b2 ef 01 00  32 32 00 00 01 00 00 00  |n.......22......|
0005fbe0  38 00 00 00 1d d0 02 00  28 ef 01 00 83 ff 02 00  |8.......(.......|
0005fbf0  98 05 02 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
0005fc00  00 1e 00 00 00 1e 00 00  32 ce 02 00 b2 ef 01 00  |........2.......|
0005fc10  31 31 38 00 01 00 00 00  38 00 00 00 7d 41 03 00  |118.....8...}A..|
0005fc20  28 ef 01 00 59 70 03 00  a7 05 02 00 00 00 00 00  |(...Yp..........|
0005fc30  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0005fc40  92 3f 03 00 b2 ef 01 00  31 31 39 00 01 00 00 00  |.?......119.....|
0005fc50  38 00 00 00 5d 93 03 00  28 ef 01 00 9f b2 03 00  |8...]...(.......|
0005fc60  a7 05 02 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
0005fc70  00 1e 00 00 00 1e 00 00  86 92 03 00 b2 ef 01 00  |................|
0005fc80  33 30 00 00 01 00 00 00  38 00 00 00 39 da 03 00  |30......8...9...|
0005fc90  28 ef 01 00 05 fa 03 00  98 05 02 00 00 00 00 00  |(...............|
0005fca0  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0005fcb0  62 d9 03 00 b2 ef 01 00  32 38 00 00 01 00 00 00  |b.......28......|
0005fcc0  38 00 00 00 15 21 04 00  28 ef 01 00 57 40 04 00  |8....!..(...W@..|
0005fcd0  a7 05 02 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
0005fce0  00 1e 00 00 00 1e 00 00  3e 20 04 00 b2 ef 01 00  |........> ......|
0005fcf0  32 39 00 00 01 00 00 00  38 00 00 00 a0 f6 03 00  |29......8.......|
0005fd00  54 05 01 00 d3 15 04 00  d3 1b 01 00 00 00 00 00  |T...............|
0005fd10  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0005fd20  ba f5 03 00 de 05 01 00  37 33 00 00 01 00 00 00  |........73......|
0005fd30  38 00 00 00 e5 07 04 00  30 4c 01 00 c1 36 04 00  |8.......0L...6..|
0005fd40  a0 62 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |.b..............|
0005fd50  00 1e 00 00 00 1e 00 00  fa 05 04 00 ba 4c 01 00  |.............L..|
0005fd60  31 32 30 00 01 00 00 00  38 00 00 00 f6 20 04 00  |120.....8.... ..|
0005fd70  96 93 01 00 c3 40 04 00  f2 a8 01 00 00 00 00 00  |.....@..........|
0005fd80  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0005fd90  3e 20 04 00 96 93 01 00  34 37 00 00 01 00 00 00  |> ......47......|
0005fda0  38 00 00 00 f9 29 02 00  9c 77 00 00 c5 49 02 00  |8....)...w...I..|
0005fdb0  1b 8e 00 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
0005fdc0  00 1e 00 00 00 1e 00 00  22 29 02 00 26 78 00 00  |........")..&x..|
0005fdd0  39 38 00 00 01 00 00 00  38 00 00 00 55 ab 00 00  |98......8...U...|
0005fde0  78 be 00 00 d5 ca 00 00  f7 d4 00 00 00 00 00 00  |x...............|
0005fdf0  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0005fe00  7e aa 00 00 02 bf 00 00  39 34 00 00 01 00 00 00  |~.......94......|
0005fe10  38 00 00 00 31 f2 00 00  78 be 00 00 df 11 01 00  |8...1...x.......|
0005fe20  f7 d4 00 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
0005fe30  00 1e 00 00 00 1e 00 00  5a f1 00 00 02 bf 00 00  |........Z.......|
0005fe40  39 37 00 00 01 00 00 00  38 00 00 00 0d 39 01 00  |97......8....9..|
0005fe50  78 be 00 00 4f 58 01 00  e8 d4 00 00 00 00 00 00  |x...OX..........|
0005fe60  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0005fe70  36 38 01 00 02 bf 00 00  36 36 00 00 01 00 00 00  |68......66......|
0005fe80  38 00 00 00 e9 7f 01 00  78 be 00 00 2b 9f 01 00  |8.......x...+...|
0005fe90  e8 d4 00 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
0005fea0  00 1e 00 00 00 1e 00 00  12 7f 01 00 02 bf 00 00  |................|
0005feb0  38 32 00 00 01 00 00 00  38 00 00 00 c5 c6 01 00  |82......8.......|
0005fec0  78 be 00 00 07 e6 01 00  f7 d4 00 00 00 00 00 00  |x...............|
0005fed0  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0005fee0  ee c5 01 00 02 bf 00 00  39 39 00 00 01 00 00 00  |........99......|
0005fef0  38 00 00 00 a1 02 02 00  78 be 00 00 7d 31 02 00  |8.......x...}1..|
0005ff00  e8 d4 00 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
0005ff10  00 1e 00 00 00 1e 00 00  b6 00 02 00 02 bf 00 00  |................|
0005ff20  31 30 30 00 01 00 00 00  38 00 00 00 7d 54 02 00  |100.....8...}T..|
0005ff30  78 be 00 00 bf 73 02 00  e8 d4 00 00 00 00 00 00  |x....s..........|
0005ff40  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0005ff50  a6 53 02 00 02 bf 00 00  38 35 00 00 01 00 00 00  |.S......85......|
0005ff60  38 00 00 00 59 90 02 00  78 be 00 00 02 bb 02 00  |8...Y...x.......|
0005ff70  e8 d4 00 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
0005ff80  00 1e 00 00 00 1e 00 00  6e 8e 02 00 02 bf 00 00  |........n.......|
0005ff90  31 30 31 00 01 00 00 00  38 00 00 00 35 d7 02 00  |101.....8...5...|
0005ffa0  78 be 00 00 11 06 03 00  e8 d4 00 00 00 00 00 00  |x...............|
0005ffb0  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0005ffc0  4a d5 02 00 02 bf 00 00  31 30 32 00 01 00 00 00  |J.......102.....|
0005ffd0  38 00 00 00 11 1e 03 00  78 be 00 00 ed 4c 03 00  |8.......x....L..|
0005ffe0  f7 d4 00 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
0005fff0  00 1e 00 00 00 1e 00 00  26 1c 03 00 02 bf 00 00  |........&.......|
00060000  31 30 33 00 01 00 00 00  38 00 00 00 ed 64 03 00  |103.....8....d..|
00060010  78 be 00 00 07 94 03 00  e8 d4 00 00 00 00 00 00  |x...............|
00060020  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
00060030  02 63 03 00 02 bf 00 00  31 30 34 00 01 00 00 00  |.c......104.....|
00060040  38 00 00 00 99 c0 00 00  54 05 01 00 db df 00 00  |8.......T.......|
00060050  c4 1b 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
00060060  00 1e 00 00 00 1e 00 00  c2 bf 00 00 de 05 01 00  |................|
00060070  36 35 00 00 01 00 00 00  38 00 00 00 75 07 01 00  |65......8...u...|
00060080  54 05 01 00 84 22 01 00  c4 1b 01 00 00 00 00 00  |T...."..........|
00060090  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
000600a0  9e 06 01 00 de 05 01 00  38 31 00 00 01 00 00 00  |........81......|
000600b0  38 00 00 00 32 4e 01 00  54 05 01 00 93 6d 01 00  |8...2N..T....m..|
000600c0  c4 1b 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
000600d0  00 1e 00 00 00 1e 00 00  7a 4d 01 00 de 05 01 00  |........zM......|
000600e0  35 30 00 00 01 00 00 00  38 00 00 00 2d 95 01 00  |50......8...-...|
000600f0  54 05 01 00 db b4 01 00  c4 1b 01 00 00 00 00 00  |T...............|
00060100  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
00060110  56 94 01 00 de 05 01 00  36 37 00 00 01 00 00 00  |V.......67......|
00060120  38 00 00 00 09 dc 01 00  54 05 01 00 4b fb 01 00  |8.......T...K...|
00060130  d3 1b 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
00060140  00 1e 00 00 00 1e 00 00  32 db 01 00 de 05 01 00  |........2.......|
00060150  38 33 00 00 01 00 00 00  38 00 00 00 e5 22 02 00  |83......8...."..|
00060160  54 05 01 00 65 42 02 00  c4 1b 01 00 00 00 00 00  |T...eB..........|
00060170  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
00060180  0e 22 02 00 de 05 01 00  38 34 00 00 01 00 00 00  |."......84......|
00060190  38 00 00 00 c1 69 02 00  54 05 01 00 03 89 02 00  |8....i..T.......|
000601a0  d3 1b 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
000601b0  00 1e 00 00 00 1e 00 00  ea 68 02 00 de 05 01 00  |.........h......|
000601c0  36 39 00 00 01 00 00 00  38 00 00 00 ac b0 02 00  |69......8.......|
000601d0  54 05 01 00 df cf 02 00  c4 1b 01 00 00 00 00 00  |T...............|
000601e0  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
000601f0  c6 af 02 00 de 05 01 00  37 30 00 00 01 00 00 00  |........70......|
00060200  38 00 00 00 79 f7 02 00  54 05 01 00 bb 16 03 00  |8...y...T.......|
00060210  c4 1b 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
00060220  00 1e 00 00 00 1e 00 00  a2 f6 02 00 de 05 01 00  |................|
00060230  38 36 00 00 01 00 00 00  38 00 00 00 40 85 03 00  |86......8...@...|
00060240  54 05 01 00 73 a4 03 00  d3 1b 01 00 00 00 00 00  |T...s...........|
00060250  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
00060260  5a 84 03 00 de 05 01 00  37 39 00 00 01 00 00 00  |Z.......79......|
00060270  38 00 00 00 c9 b6 03 00  30 4c 01 00 95 d6 03 00  |8.......0L......|
00060280  a0 62 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |.b..............|
00060290  00 1e 00 00 00 1e 00 00  f2 b5 03 00 ba 4c 01 00  |.............L..|
000602a0  38 38 00 00 01 00 00 00  38 00 00 00 ce 6f 03 00  |88......8....o..|
000602b0  30 4c 01 00 2f 8f 03 00  a0 62 01 00 00 00 00 00  |0L../....b......|
000602c0  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
000602d0  16 6f 03 00 ba 4c 01 00  35 36 00 00 01 00 00 00  |.o...L..56......|
000602e0  38 00 00 00 f2 28 03 00  30 4c 01 00 53 48 03 00  |8....(..0L..SH..|
000602f0  16 62 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |.b..............|
00060300  00 1e 00 00 00 1e 00 00  3a 28 03 00 ba 4c 01 00  |........:(...L..|
00060310  35 35 00 00 01 00 00 00  38 00 00 00 16 e2 02 00  |55......8.......|
00060320  30 4c 01 00 b5 01 03 00  16 62 01 00 00 00 00 00  |0L.......b......|
00060330  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
00060340  5e e1 02 00 ba 4c 01 00  35 34 00 00 01 00 00 00  |^....L..54......|
00060350  38 00 00 00 59 9b 02 00  30 4c 01 00 07 bb 02 00  |8...Y...0L......|
00060360  af 62 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |.b..............|
00060370  00 1e 00 00 00 1e 00 00  82 9a 02 00 ba 4c 01 00  |.............L..|
00060380  33 37 00 00 01 00 00 00  38 00 00 00 5e 54 02 00  |37......8...^T..|
00060390  30 4c 01 00 bf 73 02 00  af 62 01 00 00 00 00 00  |0L...s...b......|
000603a0  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
000603b0  a6 53 02 00 ba 4c 01 00  35 33 00 00 01 00 00 00  |.S...L..53......|
000603c0  38 00 00 00 a1 0d 02 00  30 4c 01 00 6d 2d 02 00  |8.......0L..m-..|
000603d0  a0 62 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |.b..............|
000603e0  00 1e 00 00 00 1e 00 00  ca 0c 02 00 ba 4c 01 00  |.............L..|
000603f0  36 38 00 00 01 00 00 00  38 00 00 00 c5 c6 01 00  |68......8.......|
00060400  30 4c 01 00 07 e6 01 00  af 62 01 00 00 00 00 00  |0L.......b......|
00060410  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
00060420  ee c5 01 00 ba 4c 01 00  33 35 00 00 01 00 00 00  |.....L..35......|
00060430  38 00 00 00 ca 7f 01 00  30 4c 01 00 f8 9a 01 00  |8.......0L......|
00060440  16 62 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |.b..............|
00060450  00 1e 00 00 00 1e 00 00  12 7f 01 00 ba 4c 01 00  |.............L..|
00060460  35 31 00 00 01 00 00 00  38 00 00 00 0d 39 01 00  |51......8....9..|
00060470  30 4c 01 00 8d 58 01 00  af 62 01 00 00 00 00 00  |0L...X...b......|
00060480  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
00060490  36 38 01 00 ba 4c 01 00  33 34 00 00 01 00 00 00  |68...L..34......|
000604a0  38 00 00 00 31 f2 00 00  30 4c 01 00 73 11 01 00  |8...1...0L..s...|
000604b0  af 62 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |.b..............|
000604c0  00 1e 00 00 00 1e 00 00  5a f1 00 00 ba 4c 01 00  |........Z....L..|
000604d0  33 33 00 00 01 00 00 00  38 00 00 00 69 ac 00 00  |33......8...i...|
000604e0  30 4c 01 00 97 ca 00 00  a0 62 01 00 00 00 00 00  |0L.......b......|
000604f0  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
00060500  7e aa 00 00 ba 4c 01 00  31 36 00 00 01 00 00 00  |~....L..16......|
00060510  38 00 00 00 4d 56 00 00  30 4c 01 00 8f 75 00 00  |8...MV..0L...u..|
00060520  af 62 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |.b..............|
00060530  00 1e 00 00 00 1e 00 00  76 55 00 00 ba 4c 01 00  |........vU...L..|
00060540  39 36 00 00 01 00 00 00  38 00 00 00 ee 40 00 00  |96......8....@..|
00060550  0c 93 01 00 4f 60 00 00  f2 a8 01 00 00 00 00 00  |....O`..........|
00060560  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
00060570  36 40 00 00 96 93 01 00  34 35 00 00 01 00 00 00  |6@......45......|
00060580  38 00 00 00 ca 87 00 00  0c 93 01 00 b5 a7 00 00  |8...............|
00060590  7c a9 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  ||...............|
000605a0  00 1e 00 00 00 1e 00 00  12 87 00 00 96 93 01 00  |................|
000605b0  34 38 00 00 01 00 00 00  38 00 00 00 b5 16 01 00  |48......8.......|
000605c0  96 93 01 00 4f 35 01 00  f2 a8 01 00 00 00 00 00  |....O5..........|
000605d0  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
000605e0  ca 14 01 00 96 93 01 00  31 37 00 00 01 00 00 00  |........17......|
000605f0  38 00 00 00 91 5d 01 00  0c 93 01 00 49 7c 01 00  |8....]......I|..|
00060600  7c a9 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  ||...............|
00060610  00 1e 00 00 00 1e 00 00  a6 5b 01 00 96 93 01 00  |.........[......|
00060620  31 38 00 00 01 00 00 00  38 00 00 00 6d a4 01 00  |18......8...m...|
00060630  0c 93 01 00 9b c2 01 00  8b a9 01 00 00 00 00 00  |................|
00060640  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
00060650  82 a2 01 00 96 93 01 00  31 39 00 00 01 00 00 00  |........19......|
00060660  38 00 00 00 11 31 02 00  0c 93 01 00 53 50 02 00  |8....1......SP..|
00060670  8b a9 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
00060680  00 1e 00 00 00 1e 00 00  3a 30 02 00 96 93 01 00  |........:0......|
00060690  33 36 00 00 01 00 00 00  38 00 00 00 ed 77 02 00  |36......8....w..|
000606a0  96 93 01 00 fc 92 02 00  7c a9 01 00 00 00 00 00  |........|.......|
000606b0  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
000606c0  16 77 02 00 96 93 01 00  32 31 00 00 01 00 00 00  |.w......21......|
000606d0  38 00 00 00 c9 be 02 00  0c 93 01 00 95 de 02 00  |8...............|
000606e0  8b a9 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
000606f0  00 1e 00 00 00 1e 00 00  f2 bd 02 00 96 93 01 00  |................|
00060700  33 38 00 00 01 00 00 00  38 00 00 00 a5 05 03 00  |38......8.......|
00060710  0c 93 01 00 e7 24 03 00  8b a9 01 00 00 00 00 00  |.....$..........|
00060720  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
00060730  ce 04 03 00 96 93 01 00  33 39 00 00 01 00 00 00  |........39......|
00060740  38 00 00 00 5d 93 03 00  0c 93 01 00 9f b2 03 00  |8...]...........|
00060750  8b a9 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
00060760  00 1e 00 00 00 1e 00 00  86 92 03 00 96 93 01 00  |................|
00060770  39 33 00 00 01 00 00 00  38 00 00 00 1a da 03 00  |93......8.......|
00060780  0c 93 01 00 7b f9 03 00  7c a9 01 00 00 00 00 00  |....{...|.......|
00060790  00 ff ff ff 16 00 00 00  00 1e 00 00 00 1e 00 00  |................|
000607a0  62 d9 03 00 96 93 01 00  34 36 00 00 01 00 00 00  |b.......46......|
000607b0  38 00 00 00 bf 1a 04 00  52 81 00 00 7f 22 04 00  |8.......R...."..|
000607c0  1e 93 00 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
000607d0  00 19 00 00 00 19 00 00  26 19 04 00 52 81 00 00  |........&...R...|
000607e0  31 00 00 00 01 00 00 00  38 00 00 00 e6 19 04 00  |1.......8.......|
000607f0  52 6b 00 00 59 26 04 00  1e 7d 00 00 00 00 00 00  |Rk..Y&...}......|
00060800  00 ff ff ff 16 00 00 00  00 19 00 00 00 19 00 00  |................|
00060810  26 19 04 00 52 6b 00 00  37 00 00 00 01 00 00 00  |&...Rk..7.......|
00060820  38 00 00 00 b5 68 03 00  52 81 00 00 db 74 03 00  |8....h..R....t..|
00060830  92 93 00 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
00060840  00 19 00 00 00 19 00 00  02 68 03 00 52 81 00 00  |.........h..R...|
00060850  32 00 00 00 01 00 00 00  38 00 00 00 b5 68 03 00  |2.......8....h..|
00060860  df 6a 00 00 4e 75 03 00  92 7d 00 00 00 00 00 00  |.j..Nu...}......|
00060870  00 ff ff ff 16 00 00 00  00 19 00 00 00 19 00 00  |................|
00060880  02 68 03 00 52 6b 00 00  38 00 00 00 01 00 00 00  |.h..Rk..8.......|
00060890  38 00 00 00 6d f6 03 00  bb c7 00 00 93 02 04 00  |8...m...........|
000608a0  6e da 00 00 00 00 00 00  00 ff ff ff 16 00 00 00  |n...............|
000608b0  00 19 00 00 00 19 00 00  ba f5 03 00 2e c8 00 00  |................|
000608c0  30 00 00 00 01 00 00 00  38 00 00 00 6d f6 03 00  |0.......8...m...|
000608d0  bb b1 00 00 93 02 04 00  6e c4 00 00 00 00 00 00  |........n.......|
000608e0  00 ff ff ff 16 00 00 00  00 19 00 00 00 19 00 00  |................|
000608f0  ba f5 03 00 2e b2 00 00  36 00 00 00 01 00 00 00  |........6.......|
00060900  38 00 00 00 71 4a 03 00  4f 9e 01 00 7e 64 03 00  |8...qJ..O...~d..|
00060910  0e b1 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
00060920  00 19 00 00 00 19 00 00  be 49 03 00 c2 9e 01 00  |.........I......|
00060930  32 33 00 00 01 00 00 00  38 00 00 00 57 4a 03 00  |23......8...WJ..|
00060940  4f 88 01 00 7e 64 03 00  02 9b 01 00 00 00 00 00  |O...~d..........|
00060950  00 ff ff ff 16 00 00 00  00 19 00 00 00 19 00 00  |................|
00060960  be 49 03 00 c2 88 01 00  34 30 00 00 01 00 00 00  |.I......40......|
00060970  38 00 00 00 3e 41 03 00  0a 0f 01 00 3e 5b 03 00  |8...>A......>[..|
00060980  4a 21 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |J!..............|
00060990  00 19 00 00 00 19 00 00  7e 40 03 00 0a 0f 01 00  |........~@......|
000609a0  37 32 00 00 01 00 00 00  38 00 00 00 31 41 03 00  |72......8...1A..|
000609b0  97 f8 00 00 97 5b 03 00  4a 0b 01 00 00 00 00 00  |.....[..J.......|
000609c0  00 ff ff ff 16 00 00 00  00 19 00 00 00 19 00 00  |................|
000609d0  7e 40 03 00 0a f9 00 00  38 37 00 00 01 00 00 00  |~@......87......|
000609e0  38 00 00 00 25 ea 01 00  c2 9e 01 00 65 04 02 00  |8...%.......e...|
000609f0  02 b1 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
00060a00  00 19 00 00 00 19 00 00  72 e9 01 00 c2 9e 01 00  |........r.......|
00060a10  32 34 00 00 01 00 00 00  38 00 00 00 0b ea 01 00  |24......8.......|
00060a20  4f 88 01 00 32 04 02 00  02 9b 01 00 00 00 00 00  |O...2...........|
00060a30  00 ff ff ff 16 00 00 00  00 19 00 00 00 19 00 00  |................|
00060a40  72 e9 01 00 c2 88 01 00  35 32 00 00 01 00 00 00  |r.......52......|
00060a50  38 00 00 00 65 0e 01 00  52 81 00 00 8b 1a 01 00  |8...e...R.......|
00060a60  92 93 00 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
00060a70  00 19 00 00 00 19 00 00  b2 0d 01 00 52 81 00 00  |............R...|
00060a80  32 00 00 00 01 00 00 00  38 00 00 00 4b 0e 01 00  |2.......8...K...|
00060a90  df 6a 00 00 8b 1a 01 00  1e 7d 00 00 00 00 00 00  |.j.......}......|
00060aa0  00 ff ff ff 16 00 00 00  00 19 00 00 00 19 00 00  |................|
00060ab0  b2 0d 01 00 52 6b 00 00  35 00 00 00 01 00 00 00  |....Rk..5.......|
00060ac0  38 00 00 00 41 5d 00 00  bb c7 00 00 67 69 00 00  |8...A]......gi..|
00060ad0  6e da 00 00 00 00 00 00  00 ff ff ff 16 00 00 00  |n...............|
00060ae0  00 19 00 00 00 19 00 00  8e 5c 00 00 2e c8 00 00  |.........\......|
00060af0  30 00 00 00 01 00 00 00  38 00 00 00 41 5d 00 00  |0.......8...A]..|
00060b00  bb b1 00 00 67 69 00 00  7a c4 00 00 00 00 00 00  |....gi..z.......|
00060b10  00 ff ff ff 16 00 00 00  00 19 00 00 00 19 00 00  |................|
00060b20  8e 5c 00 00 2e b2 00 00  33 00 00 00 01 00 00 00  |.\......3.......|
00060b30  38 00 00 00 3b 65 00 00  0a 0f 01 00 fb 6c 00 00  |8...;e.......l..|
00060b40  d6 20 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |. ..............|
00060b50  00 19 00 00 00 19 00 00  a2 63 00 00 0a 0f 01 00  |.........c......|
00060b60  31 00 00 00 01 00 00 00  38 00 00 00 3b 64 00 00  |1.......8...;d..|
00060b70  0a f9 00 00 ae 70 00 00  d6 0a 01 00 00 00 00 00  |.....p..........|
00060b80  00 ff ff ff 16 00 00 00  00 19 00 00 00 19 00 00  |................|
00060b90  a2 63 00 00 0a f9 00 00  34 00 00 00 01 00 00 00  |.c......4.......|
00060ba0  38 00 00 00 9b ce 00 00  4f 9e 01 00 c2 e8 00 00  |8.......O.......|
00060bb0  0e b1 01 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
00060bc0  00 19 00 00 00 19 00 00  02 ce 00 00 c2 9e 01 00  |................|
00060bd0  34 39 00 00 01 00 00 00  38 00 00 00 c2 ce 00 00  |49......8.......|
00060be0  c2 88 01 00 42 e5 00 00  8e 9a 01 00 00 00 00 00  |....B...........|
00060bf0  00 ff ff ff 16 00 00 00  00 19 00 00 00 19 00 00  |................|
00060c00  02 ce 00 00 c2 88 01 00  37 31 00 00 02 00 00 00  |........71......|
00060c10  ac 00 00 00 52 77 00 00  d6 8a 00 00 06 7f 00 00  |....Rw..........|
00060c20  86 92 00 00 00 00 cc 00  00 00 00 00 a0 00 00 00  |................|
00060c30  40 00 a0 a0 02 00 00 00  b6 7e 00 00 26 8b 00 00  |@........~..&...|
00060c40  06 00 00 00 c2 7c 00 00  32 89 00 00 96 79 00 00  |.....|..2....y..|
00060c50  32 89 00 00 a2 77 00 00  26 8b 00 00 06 00 00 00  |2....w..&.......|
00060c60  ae 75 00 00 1a 8d 00 00  ae 75 00 00 42 90 00 00  |.u.......u..B...|
00060c70  a2 77 00 00 36 92 00 00  06 00 00 00 96 79 00 00  |.w..6........y..|
00060c80  2a 94 00 00 c2 7c 00 00  2a 94 00 00 b6 7e 00 00  |*....|..*....~..|
00060c90  36 92 00 00 06 00 00 00  aa 80 00 00 42 90 00 00  |6...........B...|
00060ca0  aa 80 00 00 1a 8d 00 00  b6 7e 00 00 26 8b 00 00  |.........~..&...|
00060cb0  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
00060cc0  ba 31 00 00 92 62 00 00  76 8e 00 00 e2 9b 00 00  |.1...b..v.......|
00060cd0  00 ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
00060ce0  02 00 00 00 4a 47 00 00  92 9b 00 00 08 00 00 00  |....JG..........|
00060cf0  fa 7f 00 00 92 9b 00 00  06 00 00 00 12 87 00 00  |................|
00060d00  92 9b 00 00 26 8e 00 00  7e 94 00 00 26 8e 00 00  |....&...~...&...|
00060d10  66 8d 00 00 08 00 00 00  26 8e 00 00 0e 71 00 00  |f.......&....q..|
00060d20  06 00 00 00 26 8e 00 00  fa 69 00 00 12 87 00 00  |....&....i......|
00060d30  e2 62 00 00 fa 7f 00 00  e2 62 00 00 08 00 00 00  |.b.......b......|
00060d40  36 40 00 00 e2 62 00 00  06 00 00 00 1e 39 00 00  |6@...b.......9..|
00060d50  e2 62 00 00 0a 32 00 00  fa 69 00 00 0a 32 00 00  |.b...2...i...2..|
00060d60  0e 71 00 00 08 00 00 00  0a 32 00 00 66 8d 00 00  |.q.......2..f...|
00060d70  06 00 00 00 0a 32 00 00  7e 94 00 00 1e 39 00 00  |.....2..~....9..|
00060d80  92 9b 00 00 36 40 00 00  92 9b 00 00 08 00 00 00  |....6@..........|
00060d90  4a 47 00 00 92 9b 00 00  08 00 00 00 4a 47 00 00  |JG..........JG..|
00060da0  92 9b 00 00 05 00 00 00  00 00 00 00 01 00 00 00  |................|
00060db0  38 00 00 00 39 4f 00 00  9c 77 00 00 b9 6e 00 00  |8...9O...w...n..|
00060dc0  0c 8e 00 00 00 00 00 00  00 ff ff ff 16 00 00 00  |................|
00060dd0  00 1e 00 00 00 1e 00 00  62 4e 00 00 26 78 00 00  |........bN..&x..|
00060de0  36 34 00 00 02 00 00 00  ac 00 00 00 92 7d 00 00  |64...........}..|
00060df0  db 8c 00 00 46 85 00 00  8b 94 00 00 00 00 cc 00  |....F...........|
00060e00  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
00060e10  f6 84 00 00 2b 8d 00 00  06 00 00 00 02 83 00 00  |....+...........|
00060e20  37 8b 00 00 d6 7f 00 00  37 8b 00 00 e2 7d 00 00  |7.......7....}..|
00060e30  2b 8d 00 00 06 00 00 00  ee 7b 00 00 1f 8f 00 00  |+........{......|
00060e40  ee 7b 00 00 47 92 00 00  e2 7d 00 00 3b 94 00 00  |.{..G....}..;...|
00060e50  06 00 00 00 d6 7f 00 00  2f 96 00 00 02 83 00 00  |......../.......|
00060e60  2f 96 00 00 f6 84 00 00  3b 94 00 00 06 00 00 00  |/.......;.......|
00060e70  ea 86 00 00 47 92 00 00  ea 86 00 00 1f 8f 00 00  |....G...........|
00060e80  f6 84 00 00 2b 8d 00 00  05 00 00 00 00 00 00 00  |....+...........|
00060e90  65 00 01 00 8c 00 00 00  00 00 00 00 00 00 00 00  |e...............|
00060ea0  0a 00 00 00 0a 00 00 00  04 00 00 00 01 00 00 00  |................|
00060eb0  00 00 00 00 01 00 00 00  00 00 00 00 01 00 00 00  |................|
00060ec0  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00060ed0  00 00 00 00 00 00 00 00  01 00 00 00 01 00 00 00  |................|
00060ee0  01 00 00 00 00 00 f0 3f  00 00 00 00 00 00 f0 3f  |.......?.......?|
00060ef0  00 00 00 00 dd 46 00 00  dd 46 00 00 dd 46 00 00  |.....F...F...F..|
00060f00  dd 46 00 00 03 00 00 00  01 00 00 00 01 00 00 00  |.F..............|
00060f10  00 00 00 00 00 00 00 00  00 00 00 00 65 00 01 00  |............e...|
00060f20  38 00 00 00 00 00 00 00  00 00 00 00 0a 00 00 00  |8...............|
00060f30  0a 00 00 00 04 00 00 00  02 00 00 00 1a 00 00 00  |................|
00060f40  00 19 00 00 00 19 00 00  00 00 00 00 00 ff ff ff  |................|
00060f50  02 00 00 00 65 00 01 00  44 00 00 00 00 00 00 00  |....e...D.......|
00060f60  00 00 00 00 0a 00 00 00  0a 00 00 00 04 00 00 00  |................|
00060f70  09 00 00 00 00 00 00 00  ff ff ff ff 00 00 00 00  |................|
00060f80  ff ff ff ff 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00060f90  20 20 00 00 01 00 00 00  65 00 01 00 e4 08 00 00  |  ......e.......|
00060fa0  00 00 00 00 00 00 00 00  0a 00 00 00 0a 00 00 00  |................|
00060fb0  04 00 00 00 04 00 00 00  00 00 00 00 02 00 00 00  |................|
00060fc0  00 09 00 00 00 09 00 00  00 00 00 00 00 00 00 00  |................|
00060fd0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00061020  00 00 00 00 00 00 00 00  02 00 00 00 00 12 00 00  |................|
00061030  00 12 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00061040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00061090  00 00 00 00 02 00 00 00  00 24 00 00 00 24 00 00  |.........$...$..|
000610a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00061100  04 00 00 00 00 24 00 00  00 09 00 00 00 09 00 00  |.....$..........|
00061110  00 09 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00061120  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00061160  00 00 00 00 00 00 00 00  00 00 00 00 02 00 00 00  |................|
00061170  00 09 00 00 00 12 00 00  00 00 00 00 00 00 00 00  |................|
00061180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000611d0  00 00 00 00 00 00 00 00  02 00 00 00 00 09 00 00  |................|
000611e0  00 24 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.$..............|
000611f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00061240  00 00 00 00 02 00 00 00  00 12 00 00 00 24 00 00  |.............$..|
00061250  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000612b0  04 00 00 00 00 09 00 00  00 09 00 00 00 12 00 00  |................|
000612c0  00 24 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.$..............|
000612d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00061310  00 00 00 00 00 00 00 00  00 00 00 00 04 00 00 00  |................|
00061320  00 09 00 00 00 12 00 00  00 24 00 00 00 12 00 00  |.........$......|
00061330  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00061380  00 00 00 00 00 00 00 00  04 00 00 00 00 09 00 00  |................|
00061390  00 09 00 00 00 12 00 00  00 09 00 00 00 00 00 00  |................|
000613a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000613f0  01 00 00 00 01 00 00 00  01 00 00 00 53 74 61 6e  |............Stan|
00061400  64 61 72 64 00 00 00 00  00 00 00 00 00 00 00 00  |dard............|
00061410  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00061870  00 00 00 00 01 00 00 00  01 00 00 00 65 00 01 00  |............e...|
00061880  70 00 00 00 00 00 00 00  00 00 00 00 0a 00 00 00  |p...............|
00061890  0a 00 00 00 04 00 00 00  05 00 00 00 01 00 00 00  |................|
000618a0  04 00 00 00 02 00 00 00  01 00 00 00 01 00 00 00  |................|
000618b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000618e0  00 00 00 00 00 00 00 00  00 00 00 00 44 41 54 41  |............DATA|
000618f0  7a 01 00 00 4f 53 5f 42  79 74 65 20 31 31 34 20  |z...OS_Byte 114 |
00061900  20 57 72 69 74 65 20 73  68 61 64 6f 77 2f 6e 6f  | Write shadow/no|
00061910  6e 2d 73 68 61 64 6f 77  20 73 74 61 74 65 0a 23  |n-shadow state.#|
00061920  50 61 72 65 6e 74 20 4f  53 5f 42 79 74 65 49 6e  |Parent OS_ByteIn|
00061930  64 65 78 0a 3d 3e 09 52  30 20 3d 09 31 31 34 0a  |dex.=>.R0 =.114.|
00061940  09 52 31 20 3d 09 30 09  6d 6f 64 65 73 20 77 69  |.R1 =.0.modes wi|
00061950  6c 6c 20 62 65 20 73 68  61 64 6f 77 0a 09 20 09  |ll be shadow.. .|
00061960  31 09 6d 6f 64 65 73 20  77 69 6c 6c 20 62 65 20  |1.modes will be |
00061970  6e 6f 6e 2d 73 68 61 64  6f 77 0a 0a 3c 3d 09 52  |non-shadow..<=.R|
00061980  30 20 70 72 65 73 65 72  76 65 64 0a 09 52 31 20  |0 preserved..R1 |
00061990  3d 09 70 72 65 76 69 6f  75 73 20 73 68 61 64 6f  |=.previous shado|
000619a0  77 20 73 61 74 65 0a 09  52 32 20 63 6f 72 72 75  |w sate..R2 corru|
000619b0  70 74 65 64 0a 0a 54 68  69 73 20 63 61 6c 6c 20  |pted..This call |
000619c0  64 65 74 65 72 6d 69 6e  65 73 20 77 68 65 74 68  |determines wheth|
000619d0  65 72 20 66 75 74 75 72  65 20 3c 6d 6f 64 65 20  |er future <mode |
000619e0  63 68 61 6e 67 65 73 3d  3e 56 44 55 3a 32 32 3e  |changes=>VDU:22>|
000619f0  20 77 69 6c 6c 20 62 65  20 66 6f 72 63 65 64 20  | will be forced |
00061a00  74 6f 20 75 73 65 20 73  68 61 64 6f 77 20 73 74  |to use shadow st|
00061a10  61 74 65 2e 20 3c 4f 53  5f 42 79 74 65 20 31 31  |ate. <OS_Byte 11|
00061a20  32 3d 3e 4f 53 5f 42 79  74 65 31 31 32 3e 20 61  |2=>OS_Byte112> a|
00061a30  6e 64 20 3c 31 31 33 3d  3e 4f 53 5f 42 79 74 65  |nd <113=>OS_Byte|
00061a40  31 31 33 3e 20 63 6f 6e  74 72 6f 6c 20 74 68 65  |113> control the|
00061a50  20 75 73 65 20 6f 66 20  73 68 61 64 6f 77 20 62  | use of shadow b|
00061a60  61 6e 6b 73 2e 0a 00 00  44 41 54 41 60 01 00 00  |anks....DATA`...|
00061a70  4f 53 5f 42 79 74 65 20  31 32 30 20 20 54 65 6d  |OS_Byte 120  Tem|
00061a80  70 6f 72 61 72 69 6c 79  20 6c 6f 63 6b 20 61 75  |porarily lock au|
00061a90  74 6f 2d 72 65 70 65 61  74 0a 23 50 61 72 65 6e  |to-repeat.#Paren|
00061aa0  74 20 4f 53 5f 42 79 74  65 49 6e 64 65 78 0a 3d  |t OS_ByteIndex.=|
00061ab0  3e 09 52 30 20 3d 09 31  32 30 20 28 26 37 38 29  |>.R0 =.120 (&78)|
00061ac0  0a 09 52 31 20 3d 09 30  0a 09 52 32 20 3d 09 30  |..R1 =.0..R2 =.0|
00061ad0  0a 0a 3c 3d 09 52 30 20  70 72 65 73 65 72 76 65  |..<=.R0 preserve|
00061ae0  64 0a 09 52 31 2c 52 32  20 63 6f 72 72 75 70 74  |d..R1,R2 corrupt|
00061af0  65 64 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |ed.             |
00061b00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00061b20  20 20 20 20 20 0a 54 68  69 73 20 63 61 6c 6c 20  |     .This call |
00061b30  69 73 20 6b 65 70 74 20  66 6f 72 20 63 6f 6d 70  |is kept for comp|
00061b40  61 74 69 62 69 6c 69 74  79 20 77 69 74 68 20 74  |atibility with t|
00061b50  68 65 20 42 42 43 2f 4d  61 73 74 65 72 20 31 32  |he BBC/Master 12|
00061b60  38 2e 20 49 74 20 6c 6f  63 6b 73 20 74 68 65 20  |8. It locks the |
00061b70  61 75 74 6f 2d 72 65 70  65 61 74 20 6d 65 63 68  |auto-repeat mech|
00061b80  61 6e 69 73 6d 20 66 6f  72 20 74 68 65 20 64 75  |anism for the du|
00061b90  72 61 74 69 6f 6e 20 6f  66 20 61 20 6b 65 79 20  |ration of a key |
00061ba0  62 65 69 6e 67 20 64 6f  77 6e 20 28 74 6f 20 70  |being down (to p|
00061bb0  72 65 76 65 6e 74 20 6d  75 6c 74 69 70 6c 65 20  |revent multiple |
00061bc0  69 6e 70 75 74 29 2e 0a  44 41 54 41 3c 01 00 00  |input)..DATA<...|
00061bd0  4f 53 5f 42 79 74 65 20  31 32 32 20 20 4b 65 79  |OS_Byte 122  Key|
00061be0  62 6f 61 72 64 20 73 63  61 6e 20 66 72 6f 6d 20  |board scan from |
00061bf0  31 36 20 64 65 63 69 6d  61 6c 0a 23 50 61 72 65  |16 decimal.#Pare|
00061c00  6e 74 20 4f 53 5f 42 79  74 65 49 6e 64 65 78 0a  |nt OS_ByteIndex.|
00061c10  3d 3e 09 52 30 20 3d 09  31 32 32 20 28 26 37 41  |=>.R0 =.122 (&7A|
00061c20  29 0a 0a 3c 3d 09 52 30  20 70 72 65 73 65 72 76  |)..<=.R0 preserv|
00061c30  65 64 0a 09 52 31 20 3d  09 3c 6b 65 79 20 70 72  |ed..R1 =.<key pr|
00061c40  65 73 73 65 64 3d 3e 6f  73 5f 62 79 74 65 31 32  |essed=>os_byte12|
00061c50  31 61 3e 2c 20 6f 72 20  26 46 46 20 69 66 20 6e  |1a>, or &FF if n|
00061c60  6f 6e 65 20 70 72 65 73  73 65 64 0a 09 52 32 20  |one pressed..R2 |
00061c70  3d 09 63 6f 72 72 75 70  74 65 64 0a 0a 54 68 69  |=.corrupted..Thi|
00061c80  73 20 63 61 6c 6c 20 69  73 20 65 71 75 69 76 61  |s call is equiva|
00061c90  6c 65 6e 74 20 74 6f 20  3c 4f 53 5f 42 79 74 65  |lent to <OS_Byte|
00061ca0  20 31 32 31 3d 3e 6f 73  5f 62 79 74 65 31 32 31  | 121=>os_byte121|
00061cb0  3e 20 77 69 74 68 20 52  31 3d 31 36 2e 20 49 74  |> with R1=16. It|
00061cc0  20 73 63 61 6e 73 20 74  68 65 20 6b 65 79 62 6f  | scans the keybo|
00061cd0  61 72 64 20 69 67 6e 6f  72 69 6e 67 20 53 68 69  |ard ignoring Shi|
00061ce0  66 74 2c 20 43 6f 6e 74  72 6f 6c 2c 20 41 6c 74  |ft, Control, Alt|
00061cf0  20 61 6e 64 20 6d 6f 75  73 65 20 62 75 74 74 6f  | and mouse butto|
00061d00  6e 73 2e 0a 44 41 54 41  79 01 00 00 4f 53 5f 42  |ns..DATAy...OS_B|
00061d10  79 74 65 20 31 32 34 20  20 43 6c 65 61 72 20 65  |yte 124  Clear e|
00061d20  73 63 61 70 65 20 63 6f  6e 64 69 74 69 6f 6e 0a  |scape condition.|
00061d30  23 50 61 72 65 6e 74 20  4f 53 5f 42 79 74 65 49  |#Parent OS_ByteI|
00061d40  6e 64 65 78 0a 3d 3e 09  52 30 20 3d 09 31 32 34  |ndex.=>.R0 =.124|
00061d50  20 28 26 37 43 29 0a 0a  3c 3d 09 52 30 20 70 72  | (&7C)..<=.R0 pr|
00061d60  65 73 65 72 76 65 64 0a  09 52 31 2c 52 32 20 63  |eserved..R1,R2 c|
00061d70  6f 72 72 75 70 74 65 64  0a 20 20 20 20 20 20 20  |orrupted.       |
00061d80  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00061da0  20 20 20 20 20 20 20 20  20 20 20 0a 54 68 69 73  |           .This|
00061db0  20 63 61 6c 6c 20 63 6c  65 61 72 73 20 61 6e 79  | call clears any|
00061dc0  20 65 73 63 61 70 65 20  63 6f 6e 64 69 74 69 6f  | escape conditio|
00061dd0  6e 20 62 79 20 63 61 6c  6c 69 6e 67 20 74 68 65  |n by calling the|
00061de0  20 3c 65 73 63 61 70 65  20 68 61 6e 64 6c 65 72  | <escape handler|
00061df0  3d 3e 4f 53 5f 68 61 6e  64 6c 65 72 73 5f 65 73  |=>OS_handlers_es|
00061e00  63 61 70 65 3e 20 77 69  74 68 20 52 31 31 3d 30  |cape> with R11=0|
00061e10  2c 20 74 68 65 6e 20 72  65 74 75 72 6e 73 2e 20  |, then returns. |
00061e20  28 55 6e 6c 65 73 73 20  79 6f 75 20 72 65 61 64  |(Unless you read|
00061e30  20 70 61 67 65 20 31 2d  38 34 38 20 6f 66 20 74  | page 1-848 of t|
00061e40  68 65 20 50 52 4d 2c 20  77 68 69 63 68 20 73 61  |he PRM, which sa|
00061e50  79 73 20 74 68 61 74 20  69 74 20 64 6f 65 73 6e  |ys that it doesn|
00061e60  27 74 20 63 61 6c 6c 20  74 68 65 20 65 73 63 61  |'t call the esca|
00061e70  70 65 20 68 61 6e 64 6c  65 72 2e 29 0a 00 00 00  |pe handler.)....|
00061e80  44 41 54 41 31 01 00 00  4f 53 5f 42 79 74 65 20  |DATA1...OS_Byte |
00061e90  31 32 35 20 20 53 65 74  20 65 73 63 61 70 65 20  |125  Set escape |
00061ea0  63 6f 6e 64 69 74 69 6f  6e 0a 23 50 61 72 65 6e  |condition.#Paren|
00061eb0  74 20 4f 53 5f 42 79 74  65 49 6e 64 65 78 0a 3d  |t OS_ByteIndex.=|
00061ec0  3e 09 52 30 20 3d 09 31  32 35 20 28 26 37 44 29  |>.R0 =.125 (&7D)|
00061ed0  0a 0a 3c 3d 09 52 30 20  70 72 65 73 65 72 76 65  |..<=.R0 preserve|
00061ee0  64 0a 09 52 31 2c 52 32  20 63 6f 72 72 75 70 74  |d..R1,R2 corrupt|
00061ef0  65 64 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |ed.             |
00061f00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00061f20  20 20 20 20 20 0a 54 68  69 73 20 63 61 6c 6c 20  |     .This call |
00061f30  73 65 74 73 20 61 6e 20  65 73 63 61 70 65 20 63  |sets an escape c|
00061f40  6f 6e 64 69 74 69 6f 6e  20 28 63 61 6c 6c 69 6e  |ondition (callin|
00061f50  67 20 74 68 65 20 3c 65  73 63 61 70 65 20 68 61  |g the <escape ha|
00061f60  6e 64 6c 65 72 3d 3e 4f  53 5f 68 61 6e 64 6c 65  |ndler=>OS_handle|
00061f70  72 73 5f 65 73 63 61 70  65 3e 29 2c 20 62 75 74  |rs_escape>), but|
00061f80  20 64 6f 65 73 20 2a 6e  6f 74 2a 20 67 65 6e 65  | does *not* gene|
00061f90  72 61 74 65 20 61 6e 20  3c 65 73 63 61 70 65 5f  |rate an <escape_|
00061fa0  65 76 65 6e 74 3d 3e 65  76 65 6e 74 5f 36 3e 2e  |event=>event_6>.|
00061fb0  0a 00 00 00 44 41 54 41  0c 02 00 00 4f 53 5f 42  |....DATA....OS_B|
00061fc0  79 74 65 20 31 32 36 20  20 41 63 6b 6e 6f 77 6c  |yte 126  Acknowl|
00061fd0  65 64 67 65 20 65 73 63  61 70 65 20 63 6f 6e 64  |edge escape cond|
00061fe0  69 74 69 6f 6e 0a 23 50  61 72 65 6e 74 20 4f 53  |ition.#Parent OS|
00061ff0  5f 42 79 74 65 49 6e 64  65 78 0a 3d 3e 09 52 30  |_ByteIndex.=>.R0|
00062000  20 3d 09 31 32 36 20 28  26 37 45 29 0a 0a 3c 3d  | =.126 (&7E)..<=|
00062010  09 52 30 20 70 72 65 73  65 72 76 65 64 0a 09 52  |.R0 preserved..R|
00062020  31 20 3d 09 30 20 69 66  20 6e 6f 20 65 73 63 61  |1 =.0 if no esca|
00062030  70 65 20 63 6f 6e 64 69  74 69 6f 6e 0a 09 20 09  |pe condition.. .|
00062040  32 35 35 20 69 66 20 65  73 63 61 70 65 20 63 6f  |255 if escape co|
00062050  6e 64 69 74 69 6f 6e 20  63 6c 65 61 72 65 64 0a  |ndition cleared.|
00062060  09 52 32 20 63 6f 72 72  75 70 74 65 64 0a 20 20  |.R2 corrupted.  |
00062070  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000620a0  0a 54 68 69 73 20 63 61  6c 6c 20 61 74 74 65 6d  |.This call attem|
000620b0  70 74 73 20 74 6f 20 63  6c 65 61 72 20 61 6e 20  |pts to clear an |
000620c0  65 73 63 61 70 65 20 63  6f 6e 64 69 74 69 6f 6e  |escape condition|
000620d0  2e 20 49 66 20 61 6e 20  65 73 63 61 70 65 20 63  |. If an escape c|
000620e0  6f 6e 64 69 74 69 6f 6e  20 65 78 69 73 74 73 2c  |ondition exists,|
000620f0  20 69 74 20 70 65 72 66  6f 72 6d 73 20 74 68 65  | it performs the|
00062100  20 65 73 63 61 70 65 20  63 6f 6e 64 69 74 69 6f  | escape conditio|
00062110  6e 20 73 69 64 65 20 65  66 66 65 63 74 73 20 69  |n side effects i|
00062120  66 20 74 68 65 73 65 20  68 61 76 65 20 62 65 65  |f these have bee|
00062130  6e 20 65 6e 61 62 6c 65  64 20 77 69 74 68 20 3c  |n enabled with <|
00062140  4f 53 5f 42 79 74 65 20  32 33 30 3d 3e 4f 53 5f  |OS_Byte 230=>OS_|
00062150  42 79 74 65 32 33 30 3e  2c 20 61 6e 64 20 74 68  |Byte230>, and th|
00062160  65 6e 20 63 61 6c 6c 73  20 74 68 65 20 3c 65 73  |en calls the <es|
00062170  63 61 70 65 20 68 61 6e  64 6c 65 72 3d 3e 4f 53  |cape handler=>OS|
00062180  5f 68 61 6e 64 6c 65 72  73 5f 65 73 63 61 70 65  |_handlers_escape|
00062190  3e 20 74 6f 20 69 6e 64  69 63 61 74 65 20 74 68  |> to indicate th|
000621a0  61 74 20 74 68 65 20 65  73 63 61 70 65 20 68 61  |at the escape ha|
000621b0  73 20 62 65 65 6e 20 63  6c 65 61 72 65 64 2e 0a  |s been cleared..|
000621c0  44 41 54 41 18 03 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
000621d0  31 32 38 20 20 47 65 74  20 62 75 66 66 65 72 2f  |128  Get buffer/|
000621e0  6d 6f 75 73 65 20 73 74  61 74 75 73 0a 23 50 61  |mouse status.#Pa|
000621f0  72 65 6e 74 20 4f 53 5f  42 79 74 65 49 6e 64 65  |rent OS_ByteInde|
00062200  78 0a 3d 3e 09 52 30 20  3d 09 31 32 38 0a 09 52  |x.=>.R0 =.128..R|
00062210  31 20 3d 09 3c 72 65 61  73 6f 6e 20 63 6f 64 65  |1 =.<reason code|
00062220  3d 3e 2e 72 65 61 73 6f  6e 3e 0a 0a 3c 3d 09 52  |=>.reason>..<=.R|
00062230  30 20 70 72 65 73 65 72  76 65 64 0a 09 52 31 20  |0 preserved..R1 |
00062240  3d 09 62 69 74 73 20 30  2d 37 20 67 69 76 65 20  |=.bits 0-7 give |
00062250  4c 53 42 20 6f 66 20 61  6e 73 77 65 72 0a 09 52  |LSB of answer..R|
00062260  32 20 3d 09 62 69 74 73  20 30 2d 32 33 20 67 69  |2 =.bits 0-23 gi|
00062270  76 65 20 62 69 74 73 20  38 2d 33 31 20 6f 66 20  |ve bits 8-31 of |
00062280  61 6e 73 77 65 72 0a 0a  54 68 69 73 20 63 61 6c  |answer..This cal|
00062290  6c 20 63 68 65 63 6b 73  20 74 68 65 20 28 62 75  |l checks the (bu|
000622a0  66 66 65 72 65 64 29 20  6d 6f 75 73 65 20 70 6f  |ffered) mouse po|
000622b0  73 69 74 69 6f 6e 20 6f  72 20 74 68 65 20 66 72  |sition or the fr|
000622c0  65 65 20 73 70 61 63 65  20 69 6e 20 73 79 73 74  |ee space in syst|
000622d0  65 6d 20 62 75 66 66 65  72 73 2c 20 64 65 70 65  |em buffers, depe|
000622e0  6e 64 69 6e 67 20 6f 6e  20 74 68 65 20 72 65 61  |nding on the rea|
000622f0  73 6f 6e 20 63 6f 64 65  20 70 61 73 73 65 64 20  |son code passed |
00062300  69 6e 20 52 31 2e 20 49  74 20 69 73 20 72 65 63  |in R1. It is rec|
00062310  6f 6d 6d 65 6e 64 65 64  20 74 6f 20 75 73 65 20  |ommended to use |
00062320  3c 4f 53 5f 4d 6f 75 73  65 3e 20 74 6f 20 72 65  |<OS_Mouse> to re|
00062330  61 64 20 74 68 65 20 6d  6f 75 73 65 20 70 6f 73  |ad the mouse pos|
00062340  69 74 69 6f 6e 2c 20 61  73 20 74 68 69 73 20 72  |ition, as this r|
00062350  65 61 64 73 20 74 68 65  20 63 75 72 72 65 6e 74  |eads the current|
00062360  20 28 75 6e 62 75 66 66  65 72 65 64 29 20 70 6f  | (unbuffered) po|
00062370  73 69 74 69 6f 6e 2e 0a  23 73 75 62 70 61 67 65  |sition..#subpage|
00062380  20 72 65 61 73 6f 6e 0a  4f 53 5f 42 79 74 65 20  | reason.OS_Byte |
00062390  31 32 38 20 72 65 61 73  6f 6e 20 63 6f 64 65 73  |128 reason codes|
000623a0  0a 65 6e 74 72 79 20 52  31 09 76 61 6c 75 65 20  |.entry R1.value |
000623b0  72 65 74 75 72 6e 65 64  0a 23 4c 69 6e 65 0a 37  |returned.#Line.7|
000623c0  09 09 6d 6f 75 73 65 20  78 0a 38 09 09 6d 6f 75  |..mouse x.8..mou|
000623d0  73 65 20 79 0a 32 34 36  09 09 66 72 65 65 20 62  |se y.246..free b|
000623e0  79 74 65 73 20 69 6e 20  6d 6f 75 73 65 20 62 75  |ytes in mouse bu|
000623f0  66 66 65 72 0a 32 35 32  09 09 66 72 65 65 20 62  |ffer.252..free b|
00062400  79 74 65 73 20 69 6e 20  70 72 69 6e 74 65 72 20  |ytes in printer |
00062410  62 75 66 66 65 72 0a 32  35 33 09 09 66 72 65 65  |buffer.253..free|
00062420  20 62 79 74 65 73 20 69  6e 20 73 65 72 69 61 6c  | bytes in serial|
00062430  20 6f 75 74 70 75 74 20  62 75 66 66 65 72 0a 32  | output buffer.2|
00062440  35 34 09 09 66 72 65 65  20 62 79 74 65 73 20 69  |54..free bytes i|
00062450  6e 20 73 65 72 69 61 6c  20 69 6e 70 75 74 20 62  |n serial input b|
00062460  75 66 66 65 72 0a 32 35  35 09 09 66 72 65 65 20  |uffer.255..free |
00062470  62 79 74 65 73 20 69 6e  20 6b 65 79 62 6f 61 72  |bytes in keyboar|
00062480  64 20 62 75 66 66 65 72  0a 0a 4e 6f 74 65 20 74  |d buffer..Note t|
00062490  68 61 74 20 66 6f 72 20  72 65 61 64 69 6e 67 20  |hat for reading |
000624a0  66 72 65 65 20 73 70 61  63 65 2c 20 52 31 20 3d  |free space, R1 =|
000624b0  20 32 35 35 20 2d 20 3c  62 75 66 66 65 72 20 6e  | 255 - <buffer n|
000624c0  75 6d 62 65 72 3d 3e 42  75 66 66 65 72 5f 62 75  |umber=>Buffer_bu|
000624d0  66 66 65 72 73 3e 2e 0a  44 41 54 41 77 06 00 00  |ffers>..DATAw...|
000624e0  4f 53 5f 42 79 74 65 20  31 32 39 20 20 47 65 74  |OS_Byte 129  Get|
000624f0  20 62 75 66 66 65 72 2f  6d 6f 75 73 65 20 73 74  | buffer/mouse st|
00062500  61 74 75 73 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |atus.#Parent OS_|
00062510  42 79 74 65 49 6e 64 65  78 0a 3d 3e 09 52 30 20  |ByteIndex.=>.R0 |
00062520  3d 09 31 32 39 20 28 26  38 31 29 0a 0a 54 6f 20  |=.129 (&81)..To |
00062530  72 65 61 64 20 61 20 6b  65 79 20 77 69 74 68 69  |read a key withi|
00062540  6e 20 61 20 74 69 6d 65  20 6c 69 6d 69 74 0a 09  |n a time limit..|
00062550  52 31 20 3d 09 30 2d 32  35 35 09 09 74 69 6d 65  |R1 =.0-255..time|
00062560  20 6c 69 6d 69 74 20 6c  6f 77 20 62 79 74 65 0a  | limit low byte.|
00062570  09 52 32 20 3d 09 7b 2a  7d 26 30 30 20 2d 20 26  |.R2 =.{*}&00 - &|
00062580  37 46 7b 2a 7d 09 74 69  6d 65 20 6c 69 6d 69 74  |7F{*}.time limit|
00062590  20 68 69 67 68 20 62 79  74 65 0a 0a 3c 3d 09 52  | high byte..<=.R|
000625a0  31 20 3d 09 41 53 43 49  49 20 63 6f 64 65 20 6f  |1 =.ASCII code o|
000625b0  66 20 63 68 61 72 61 63  74 65 72 20 72 65 61 64  |f character read|
000625c0  2c 20 75 6e 64 65 66 69  6e 65 64 20 69 66 20 6e  |, undefined if n|
000625d0  6f 74 20 72 65 61 64 0a  09 52 32 20 3d 09 30 09  |ot read..R2 =.0.|
000625e0  09 63 68 61 72 61 63 74  65 72 20 72 65 61 64 0a  |.character read.|
000625f0  09 20 09 32 37 09 09 65  73 63 61 70 65 20 63 6f  |. .27..escape co|
00062600  6e 64 69 74 69 6f 6e 0a  09 20 09 32 35 35 09 09  |ndition.. .255..|
00062610  74 69 6d 65 6f 75 74 0a  0a 54 6f 20 72 65 61 64  |timeout..To read|
00062620  20 74 68 65 20 4f 53 20  76 65 72 73 69 6f 6e 20  | the OS version |
00062630  69 64 65 6e 74 69 66 69  65 72 0a 09 52 31 20 3d  |identifier..R1 =|
00062640  09 7b 2a 7d 30 7b 2a 7d  0a 09 52 32 20 3d 09 7b  |.{*}0{*}..R2 =.{|
00062650  2a 7d 26 46 46 7b 2a 7d  0a 0a 3c 3d 09 52 31 20  |*}&FF{*}..<=.R1 |
00062660  3d 09 3c 76 61 6c 75 65  20 69 64 65 6e 74 69 66  |=.<value identif|
00062670  79 69 6e 67 20 4f 53 3d  3e 2e 69 64 65 6e 74 69  |ying OS=>.identi|
00062680  66 69 65 72 3e 0a 09 52  32 20 3d 09 30 0a 0a 54  |fier>..R2 =.0..T|
00062690  6f 20 73 63 61 6e 20 74  68 65 20 6b 65 79 62 6f  |o scan the keybo|
000626a0  61 72 64 20 66 6f 72 20  61 20 72 61 6e 67 65 20  |ard for a range |
000626b0  6f 66 20 6b 65 79 73 0a  09 52 31 20 3d 09 7b 2a  |of keys..R1 =.{*|
000626c0  7d 26 30 31 2d 26 37 46  7b 2a 7d 09 6c 6f 77 65  |}&01-&7F{*}.lowe|
000626d0  73 74 20 3c 69 6e 74 65  72 6e 61 6c 20 6b 65 79  |st <internal key|
000626e0  20 6e 75 6d 62 65 72 3d  3e 4f 53 5f 42 79 74 65  | number=>OS_Byte|
000626f0  31 32 31 61 3e 20 45 4f  52 20 26 37 46 0a 09 52  |121a> EOR &7F..R|
00062700  32 20 3d 09 7b 2a 7d 26  46 46 7b 2a 7d 0a 0a 3c  |2 =.{*}&FF{*}..<|
00062710  3d 09 52 31 20 3d 09 69  6e 74 65 72 6e 61 6c 20  |=.R1 =.internal |
00062720  6b 65 79 20 6e 75 6d 62  65 72 0a 09 20 09 32 35  |key number.. .25|
00062730  35 20 69 66 20 6e 6f 6e  65 20 70 72 65 73 73 65  |5 if none presse|
00062740  64 0a 09 52 32 20 63 6f  72 72 75 70 74 65 64 0a  |d..R2 corrupted.|
00062750  0a 54 6f 20 73 63 61 6e  20 74 68 65 20 6b 65 79  |.To scan the key|
00062760  62 6f 61 72 64 20 66 6f  72 20 61 20 73 69 6e 67  |board for a sing|
00062770  6c 65 20 6b 65 79 0a 09  52 31 20 3d 09 7b 2a 7d  |le key..R1 =.{*}|
00062780  26 38 30 2d 26 46 46 7b  2a 7d 09 3c 69 6e 74 65  |&80-&FF{*}.<inte|
00062790  72 6e 61 6c 20 6b 65 79  20 6e 75 6d 62 65 72 3d  |rnal key number=|
000627a0  3e 4f 53 5f 42 79 74 65  31 32 31 61 3e 20 45 4f  |>OS_Byte121a> EO|
000627b0  52 20 26 46 46 0a 09 52  32 20 3d 09 7b 2a 7d 26  |R &FF..R2 =.{*}&|
000627c0  46 46 7b 2a 7d 0a 0a 3c  3d 09 52 31 20 3d 09 30  |FF{*}..<=.R1 =.0|
000627d0  20 69 66 20 6e 6f 74 20  70 72 65 73 73 65 64 0a  | if not pressed.|
000627e0  09 20 09 32 35 35 20 69  66 20 70 72 65 73 73 65  |. .255 if presse|
000627f0  64 0a 09 52 32 20 3d 09  30 20 69 66 20 6e 6f 74  |d..R2 =.0 if not|
00062800  20 70 72 65 73 73 65 64  0a 09 20 09 32 35 35 20  | pressed.. .255 |
00062810  69 66 20 70 72 65 73 73  65 64 0a 0a 54 68 69 73  |if pressed..This|
00062820  20 63 61 6c 6c 20 70 72  6f 76 69 64 65 73 20 66  | call provides f|
00062830  6f 75 72 20 64 69 73 74  69 6e 63 74 20 6f 70 65  |our distinct ope|
00062840  72 61 74 69 6f 6e 73 2c  20 64 69 73 74 69 6e 67  |rations, disting|
00062850  75 69 73 68 65 64 20 62  79 20 74 68 65 20 76 61  |uished by the va|
00062860  6c 75 65 73 20 69 6e 20  2a 62 6f 74 68 2a 20 52  |lues in *both* R|
00062870  31 20 61 6e 64 20 52 32  2e 0a 0a 52 65 61 64 20  |1 and R2...Read |
00062880  6b 65 79 20 77 69 74 68  69 6e 20 61 20 74 69 6d  |key within a tim|
00062890  65 20 6c 69 6d 69 74 20  77 69 6c 6c 20 65 78 74  |e limit will ext|
000628a0  72 61 63 74 20 61 20 63  68 61 72 61 63 74 65 72  |ract a character|
000628b0  20 66 72 6f 6d 20 74 68  65 20 6b 65 79 62 6f 61  | from the keyboa|
000628c0  72 64 20 62 75 66 66 65  72 2f 63 75 72 72 65 6e  |rd buffer/curren|
000628d0  74 20 66 75 6e 63 74 69  6f 6e 20 6b 65 79 20 65  |t function key e|
000628e0  78 70 61 6e 73 69 6f 6e  20 69 66 20 6f 6e 65 20  |xpansion if one |
000628f0  69 73 20 61 76 61 69 6c  61 62 6c 65 2c 20 65 6c  |is available, el|
00062900  73 65 20 77 69 6c 6c 20  77 61 69 74 20 66 6f 72  |se will wait for|
00062910  20 28 52 32 20 2a 20 32  35 36 20 2b 20 52 31 29  | (R2 * 256 + R1)|
00062920  20 63 65 6e 74 69 73 65  63 6f 6e 64 73 2c 20 77  | centiseconds, w|
00062930  68 65 72 65 20 74 68 65  20 6d 61 78 69 6d 75 6d  |here the maximum|
00062940  20 77 61 69 74 20 69 73  20 33 32 37 2e 36 37 20  | wait is 327.67 |
00062950  73 65 63 6f 6e 64 73 2c  20 61 73 20 52 32 20 3c  |seconds, as R2 <|
00062960  3d 20 31 32 37 2e 20 43  75 72 73 6f 72 20 65 64  |= 127. Cursor ed|
00062970  69 74 20 6d 6f 64 65 20  77 69 6c 6c 20 6f 70 65  |it mode will ope|
00062980  72 61 74 65 20 69 66 20  65 6e 61 62 6c 65 64 20  |rate if enabled |
00062990  77 69 74 68 20 3c 4f 53  5f 42 79 74 65 20 34 3d  |with <OS_Byte 4=|
000629a0  3e 4f 53 5f 42 79 74 65  30 30 34 3e 2e 20 49 66  |>OS_Byte004>. If|
000629b0  20 61 6e 20 65 73 63 61  70 65 20 63 6f 6e 64 69  | an escape condi|
000629c0  74 69 6f 6e 20 69 73 20  64 65 74 65 63 74 65 64  |tion is detected|
000629d0  20 74 68 65 20 61 70 70  6c 69 63 61 74 69 6f 6e  | the application|
000629e0  20 73 68 6f 75 6c 64 20  65 69 74 68 65 72 20 61  | should either a|
000629f0  63 6b 6e 6f 77 6c 65 64  67 65 20 69 74 20 77 69  |cknowledge it wi|
00062a00  74 68 20 3c 4f 53 5f 42  79 74 65 20 31 32 36 3d  |th <OS_Byte 126=|
00062a10  3e 4f 53 5f 42 79 74 65  31 32 36 3e 20 6f 72 20  |>OS_Byte126> or |
00062a20  63 6c 65 61 72 20 69 74  20 77 69 74 68 20 3c 4f  |clear it with <O|
00062a30  53 5f 42 79 74 65 20 31  32 34 3d 3e 4f 53 5f 42  |S_Byte 124=>OS_B|
00062a40  79 74 65 31 32 34 3e 2e  0a 23 73 75 62 70 61 67  |yte124>..#subpag|
00062a50  65 20 69 64 65 6e 74 69  66 69 65 72 0a 4f 53 5f  |e identifier.OS_|
00062a60  42 79 74 65 20 31 32 39  20 4f 70 65 72 61 74 69  |Byte 129 Operati|
00062a70  6e 67 20 53 79 73 74 65  6d 20 76 65 72 73 69 6f  |ng System versio|
00062a80  6e 20 69 64 65 6e 74 69  66 69 65 72 73 0a 52 31  |n identifiers.R1|
00062a90  20 76 61 6c 75 65 09 56  65 72 73 69 6f 6e 0a 23  | value.Version.#|
00062aa0  4c 69 6e 65 0a 26 41 30  09 09 41 72 74 68 75 72  |Line.&A0..Arthur|
00062ab0  09 31 2e 32 30 0a 26 41  31 09 09 52 49 53 43 20  |.1.20.&A1..RISC |
00062ac0  4f 53 09 32 2e 30 30 0a  26 41 32 09 09 52 49 53  |OS.2.00.&A2..RIS|
00062ad0  43 20 4f 53 09 32 2e 30  31 0a 26 41 33 09 09 52  |C OS.2.01.&A3..R|
00062ae0  49 53 43 20 4f 53 09 33  2e 30 30 0a 26 41 34 09  |ISC OS.3.00.&A4.|
00062af0  09 52 49 53 43 20 4f 53  09 33 2e 31 30 20 61 6e  |.RISC OS.3.10 an|
00062b00  64 20 33 2e 31 31 0a 23  20 43 68 65 63 6b 09 09  |d 3.11.# Check..|
00062b10  26 41 35 09 09 52 49 53  43 20 4f 53 09 33 2e 35  |&A5..RISC OS.3.5|
00062b20  30 0a 23 20 54 68 65 73  65 09 09 26 41 36 09 09  |0.# These..&A6..|
00062b30  52 49 53 43 20 4f 53 09  33 2e 36 30 0a 26 41 37  |RISC OS.3.60.&A7|
00062b40  09 09 52 49 53 43 20 4f  53 09 33 2e 37 30 0a 00  |..RISC OS.3.70..|
00062b50  44 41 54 41 8a 03 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00062b60  31 33 38 20 20 49 6e 73  65 72 74 20 62 79 74 65  |138  Insert byte|
00062b70  20 69 6e 74 6f 20 62 75  66 66 65 72 0a 23 50 61  | into buffer.#Pa|
00062b80  72 65 6e 74 20 4f 53 5f  42 79 74 65 49 6e 64 65  |rent OS_ByteInde|
00062b90  78 0a 3d 3e 09 52 30 20  3d 09 31 33 38 0a 09 52  |x.=>.R0 =.138..R|
00062ba0  31 20 3d 09 3c 62 75 66  66 65 72 20 6e 75 6d 62  |1 =.<buffer numb|
00062bb0  65 72 3d 3e 42 75 66 66  65 72 5f 62 75 66 66 65  |er=>Buffer_buffe|
00062bc0  72 73 3e 0a 09 52 32 20  3d 09 62 79 74 65 20 74  |rs>..R2 =.byte t|
00062bd0  6f 20 69 6e 73 65 72 74  0a 0a 3c 3d 09 52 30 2d  |o insert..<=.R0-|
00062be0  52 32 20 70 72 65 73 65  72 76 65 64 0a 09 43 20  |R2 preserved..C |
00062bf0  66 6c 61 67 09 73 65 74  20 69 66 20 62 75 66 66  |flag.set if buff|
00062c00  65 72 20 77 61 73 20 66  75 6c 6c 2c 20 6f 74 68  |er was full, oth|
00062c10  65 72 77 69 73 65 20 63  6c 65 61 72 0a 0a 54 68  |erwise clear..Th|
00062c20  69 73 20 63 61 6c 6c 20  69 6e 73 65 72 74 73 20  |is call inserts |
00062c30  61 20 62 79 74 65 20 69  6e 74 6f 20 61 20 62 75  |a byte into a bu|
00062c40  66 66 65 72 2e 20 57 68  69 6c 65 20 69 6e 73 65  |ffer. While inse|
00062c50  72 74 69 6e 67 20 39 20  62 79 74 65 73 20 69 6e  |rting 9 bytes in|
00062c60  74 6f 20 74 68 65 20 6d  6f 75 73 65 20 62 75 66  |to the mouse buf|
00062c70  66 65 72 20 79 6f 75 20  6d 75 73 74 20 64 69 73  |fer you must dis|
00062c80  61 62 6c 65 20 69 6e 74  65 72 75 70 74 73 20 74  |able interupts t|
00062c90  6f 20 70 72 65 76 65 6e  74 20 61 20 72 65 61 6c  |o prevent a real|
00062ca0  20 6d 6f 73 74 20 74 72  61 6e 73 69 74 69 6f 6e  | most transition|
00062cb0  20 66 72 6f 6d 20 62 65  69 6e 67 20 65 6e 74 65  | from being ente|
00062cc0  72 65 64 20 69 6e 74 6f  20 74 68 65 20 6d 69 64  |red into the mid|
00062cd0  64 6c 65 20 6f 66 20 79  6f 75 72 20 64 61 74 61  |dle of your data|
00062ce0  2e 0a 0a 4e 6f 74 65 20  74 68 61 74 20 63 68 61  |...Note that cha|
00062cf0  72 61 63 74 65 72 73 20  30 20 61 6e 64 20 31 32  |racters 0 and 12|
00062d00  38 2d 32 35 35 20 61 72  65 20 69 6e 73 65 72 74  |8-255 are insert|
00062d10  65 64 20 69 6e 74 6f 20  74 68 65 20 6b 65 79 62  |ed into the keyb|
00062d20  6f 61 72 64 20 62 75 66  66 65 72 20 61 73 20 74  |oard buffer as t|
00062d30  77 6f 20 62 79 65 73 20  30 2c 7b 2f 7d 6e 7b 2f  |wo byes 0,{/}n{/|
00062d40  7d 20 74 6f 20 64 69 73  74 69 6e 67 75 69 73 68  |} to distinguish|
00062d50  20 74 68 65 6d 20 66 72  6f 6d 20 66 75 6e 63 74  | them from funct|
00062d60  69 6f 6e 20 6b 65 79 73  20 2d 20 69 66 20 79 6f  |ion keys - if yo|
00062d70  75 20 61 72 65 20 69 6e  73 65 72 74 69 6e 67 20  |u are inserting |
00062d80  73 74 72 69 6e 67 73 20  69 6e 74 6f 20 74 68 65  |strings into the|
00062d90  20 6b 65 79 62 6f 61 72  64 20 62 75 66 66 65 72  | keyboard buffer|
00062da0  20 79 6f 75 20 73 68 6f  75 6c 64 20 62 65 20 63  | you should be c|
00062db0  61 72 65 66 75 6c 20 74  6f 20 63 68 65 63 6b 20  |areful to check |
00062dc0  66 6f 72 20 74 6f 70 20  62 69 74 20 73 65 74 20  |for top bit set |
00062dd0  63 68 61 72 61 63 74 65  72 73 20 61 6e 64 20 70  |characters and p|
00062de0  72 65 63 65 64 20 74 68  65 6d 20 77 69 74 68 20  |reced them with |
00062df0  61 20 30 20 62 79 74 65  2c 20 65 6c 73 65 20 79  |a 0 byte, else y|
00062e00  6f 75 20 6d 61 79 20 65  72 72 6f 6e 65 6f 75 73  |ou may erroneous|
00062e10  6c 79 20 69 6e 73 65 72  74 20 66 75 6e 63 74 69  |ly insert functi|
00062e20  6f 6e 20 6b 65 79 20 6b  65 79 70 72 65 73 73 65  |on key keypresse|
00062e30  73 20 2d 20 27 cc 27 20  69 73 20 65 71 75 69 76  |s - '.' is equiv|
00062e40  61 6c 65 6e 74 20 74 6f  20 70 72 65 73 73 69 6e  |alent to pressin|
00062e50  67 20 46 31 32 2c 20 27  fc 27 20 74 6f 20 70 72  |g F12, '.' to pr|
00062e60  65 73 73 69 6e 67 20 43  6f 6e 74 72 6f 6c 2c 20  |essing Control, |
00062e70  53 68 69 66 74 20 46 31  32 2c 20 77 68 69 63 68  |Shift F12, which|
00062e80  20 69 6e 20 74 68 65 20  64 65 73 6b 74 6f 70 20  | in the desktop |
00062e90  2a 77 69 6c 6c 2a 20 72  65 73 70 65 63 74 69 76  |*will* respectiv|
00062ea0  65 6c 79 20 67 65 6e 65  72 61 74 65 20 61 20 43  |ely generate a C|
00062eb0  4c 49 20 70 72 6f 6d 70  74 2c 20 61 6e 64 20 69  |LI prompt, and i|
00062ec0  6e 69 74 69 61 74 65 20  64 65 73 6b 74 6f 70 20  |nitiate desktop |
00062ed0  73 68 75 74 64 6f 77 6e  2e 0a 00 00 44 41 54 41  |shutdown....DATA|
00062ee0  fc 00 00 00 4f 53 5f 42  79 74 65 20 31 34 33 20  |....OS_Byte 143 |
00062ef0  20 49 73 73 75 65 20 6d  6f 64 75 6c 65 20 73 65  | Issue module se|
00062f00  72 76 69 63 65 20 63 61  6c 6c 0a 23 50 61 72 65  |rvice call.#Pare|
00062f10  6e 74 20 4f 53 5f 42 79  74 65 49 6e 64 65 78 0a  |nt OS_ByteIndex.|
00062f20  3d 3e 09 52 30 20 3d 09  31 34 33 0a 09 52 31 20  |=>.R0 =.143..R1 |
00062f30  3d 09 73 65 72 76 69 63  65 20 74 79 70 65 0a 09  |=.service type..|
00062f40  52 32 20 3d 09 61 72 67  75 6d 65 6e 74 20 66 6f  |R2 =.argument fo|
00062f50  72 20 73 65 72 76 69 63  65 0a 0a 3c 3d 09 52 30  |r service..<=.R0|
00062f60  2c 52 31 20 70 72 65 73  65 72 76 65 64 0a 09 52  |,R1 preserved..R|
00062f70  32 20 3d 09 70 6f 73 73  69 62 6c 65 20 72 65 74  |2 =.possible ret|
00062f80  75 72 6e 20 61 72 67 75  6d 65 6e 74 0a 0a 54 68  |urn argument..Th|
00062f90  69 73 20 63 61 6c 6c 20  69 73 20 70 72 6f 76 69  |is call is provi|
00062fa0  64 65 64 20 66 6f 72 20  42 42 43 20 63 6f 6d 70  |ded for BBC comp|
00062fb0  61 74 69 62 69 6c 74 79  2e 20 55 73 65 20 3c 4f  |atibilty. Use <O|
00062fc0  53 5f 53 65 72 76 69 63  65 43 61 6c 6c 3e 20 69  |S_ServiceCall> i|
00062fd0  6e 73 74 65 61 64 2e 0a  44 41 54 41 d5 01 00 00  |nstead..DATA....|
00062fe0  4f 53 5f 42 79 74 65 20  31 34 35 20 20 47 65 74  |OS_Byte 145  Get|
00062ff0  20 63 68 61 72 20 66 72  6f 6d 20 62 75 66 66 65  | char from buffe|
00063000  72 0a 23 50 61 72 65 6e  74 20 4f 53 5f 42 79 74  |r.#Parent OS_Byt|
00063010  65 49 6e 64 65 78 0a 3d  3e 09 52 30 20 3d 09 31  |eIndex.=>.R0 =.1|
00063020  34 35 20 28 26 39 31 29  0a 09 52 31 20 3d 09 3c  |45 (&91)..R1 =.<|
00063030  62 75 66 66 65 72 20 6e  75 6d 62 65 72 3d 3e 42  |buffer number=>B|
00063040  75 66 66 65 72 5f 62 75  66 66 65 72 73 3e 0a 0a  |uffer_buffers>..|
00063050  3c 3d 09 52 30 2c 20 52  31 20 70 72 65 73 65 72  |<=.R0, R1 preser|
00063060  76 65 64 0a 09 52 32 20  3d 09 62 79 74 65 20 72  |ved..R2 =.byte r|
00063070  65 6d 6f 76 65 64 0a 09  43 20 66 6c 61 67 09 73  |emoved..C flag.s|
00063080  65 74 20 69 66 20 62 75  66 66 65 72 20 77 61 73  |et if buffer was|
00063090  20 65 6d 70 74 79 20 6f  6e 20 65 6e 74 72 79 0a  | empty on entry.|
000630a0  09 20 09 63 6c 65 61 72  20 69 66 20 62 79 74 65  |. .clear if byte|
000630b0  20 77 61 73 20 73 75 63  63 65 73 73 66 75 6c 6c  | was successfull|
000630c0  79 20 72 65 6d 6f 76 65  64 0a 20 20 20 20 20 20  |y removed.      |
000630d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000630f0  20 20 20 20 20 20 20 20  20 20 20 20 0a 54 68 69  |            .Thi|
00063100  73 20 63 61 6c 6c 20 65  78 74 72 61 63 74 73 20  |s call extracts |
00063110  74 68 65 20 6e 65 78 74  20 62 79 74 65 20 66 72  |the next byte fr|
00063120  6f 6d 20 74 68 65 20 67  69 76 65 6e 20 62 75 66  |om the given buf|
00063130  66 65 72 2e 20 54 68 65  20 62 75 66 66 65 72 20  |fer. The buffer |
00063140  6e 75 6d 62 65 72 20 69  73 20 2a 6e 6f 74 2a 20  |number is *not* |
00063150  76 61 6c 69 64 61 74 65  64 20 2d 20 75 6e 64 65  |validated - unde|
00063160  66 69 6e 65 64 20 72 65  73 75 6c 74 73 20 28 72  |fined results (r|
00063170  61 74 68 65 72 20 74 68  61 6e 20 61 6e 20 65 72  |ather than an er|
00063180  72 6f 72 29 20 6f 63 63  75 72 20 69 66 20 61 20  |ror) occur if a |
00063190  62 61 64 20 62 75 66 66  65 72 20 6e 75 6d 62 65  |bad buffer numbe|
000631a0  72 20 69 73 20 70 61 73  73 65 64 2e 0a 00 00 00  |r is passed.....|
000631b0  44 41 54 41 1f 02 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
000631c0  31 35 32 20 20 45 78 61  6d 69 6e 65 20 73 74 61  |152  Examine sta|
000631d0  74 75 73 20 6f 66 20 61  20 62 75 66 66 65 72 0a  |tus of a buffer.|
000631e0  23 50 61 72 65 6e 74 20  4f 53 5f 42 79 74 65 49  |#Parent OS_ByteI|
000631f0  6e 64 65 78 0a 3d 3e 09  52 30 20 3d 09 31 35 32  |ndex.=>.R0 =.152|
00063200  20 28 26 39 38 29 0a 09  52 31 20 3d 09 3c 62 75  | (&98)..R1 =.<bu|
00063210  66 66 65 72 20 6e 75 6d  62 65 72 3d 3e 42 75 66  |ffer number=>Buf|
00063220  66 65 72 5f 62 75 66 66  65 72 73 3e 0a 0a 3c 3d  |fer_buffers>..<=|
00063230  09 52 30 2c 20 52 31 20  70 72 65 73 65 72 76 65  |.R0, R1 preserve|
00063240  64 0a 09 52 32 20 3d 09  6e 65 78 74 20 62 79 74  |d..R2 =.next byt|
00063250  65 20 69 6e 20 62 75 66  66 65 72 2c 20 63 6f 72  |e in buffer, cor|
00063260  72 75 70 74 65 64 20 69  66 20 62 75 66 66 65 72  |rupted if buffer|
00063270  20 65 6d 70 74 79 0a 09  43 20 66 6c 61 67 09 73  | empty..C flag.s|
00063280  65 74 20 69 66 20 62 75  66 66 65 72 20 69 73 20  |et if buffer is |
00063290  65 6d 70 74 79 2c 20 6f  74 68 65 72 77 69 73 65  |empty, otherwise|
000632a0  20 63 6c 65 61 72 0a 20  20 20 20 20 20 20 20 20  | clear.         |
000632b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000632d0  20 20 20 20 20 20 20 20  20 0a 54 68 69 73 20 63  |         .This c|
000632e0  61 6c 6c 20 63 68 65 63  6b 73 20 77 68 65 74 68  |all checks wheth|
000632f0  65 72 20 61 20 67 69 76  65 6e 20 62 75 66 66 65  |er a given buffe|
00063300  72 20 69 73 20 65 6d 70  74 79 2c 20 61 6e 64 20  |r is empty, and |
00063310  69 66 20 61 20 62 79 74  65 20 69 73 20 61 76 61  |if a byte is ava|
00063320  69 6c 61 62 6c 65 20 72  65 74 75 72 6e 73 20 69  |ilable returns i|
00063330  74 20 77 69 74 68 6f 75  74 20 72 65 6d 6f 76 69  |t without removi|
00063340  6e 67 20 69 74 20 66 72  6f 6d 20 74 68 65 20 62  |ng it from the b|
00063350  75 66 66 65 72 2e 20 54  68 65 20 62 75 66 66 65  |uffer. The buffe|
00063360  72 20 6e 75 6d 62 65 72  20 69 73 20 2a 6e 6f 74  |r number is *not|
00063370  2a 20 76 61 6c 69 64 61  74 65 64 20 2d 20 75 6e  |* validated - un|
00063380  64 65 66 69 6e 65 64 20  72 65 73 75 6c 74 73 20  |defined results |
00063390  28 72 61 74 68 65 72 20  74 68 61 6e 20 61 6e 20  |(rather than an |
000633a0  65 72 72 6f 72 29 20 6f  63 63 75 72 20 69 66 20  |error) occur if |
000633b0  61 20 62 61 64 20 62 75  66 66 65 72 20 6e 75 6d  |a bad buffer num|
000633c0  62 65 72 20 69 73 20 70  61 73 73 65 64 2e 0a 00  |ber is passed...|
000633d0  44 41 54 41 5a 03 00 00  4f 53 5f 42 79 74 65 20  |DATAZ...OS_Byte |
000633e0  31 35 33 20 20 49 6e 73  65 72 74 20 63 68 61 72  |153  Insert char|
000633f0  20 69 6e 74 6f 20 69 6e  70 75 74 20 62 75 66 66  | into input buff|
00063400  65 72 0a 23 50 61 72 65  6e 74 20 4f 53 5f 42 79  |er.#Parent OS_By|
00063410  74 65 49 6e 64 65 78 0a  3d 3e 09 52 30 20 3d 09  |teIndex.=>.R0 =.|
00063420  31 35 33 20 28 26 39 39  29 0a 09 52 31 20 3d 09  |153 (&99)..R1 =.|
00063430  3c 69 6e 70 75 74 20 62  75 66 66 65 72 20 6e 75  |<input buffer nu|
00063440  6d 62 65 72 3d 3e 4f 53  5f 42 79 74 65 69 6e 70  |mber=>OS_Byteinp|
00063450  75 74 73 6f 75 72 63 65  73 3e 0a 09 52 32 20 3d  |utsources>..R2 =|
00063460  09 62 79 74 65 20 74 6f  20 69 6e 73 65 72 74 0a  |.byte to insert.|
00063470  0a 3c 3d 09 52 30 20 70  72 65 73 65 72 76 65 64  |.<=.R0 preserved|
00063480  0a 09 52 31 2c 20 52 32  20 63 6f 72 72 75 70 74  |..R1, R2 corrupt|
00063490  65 64 0a 09 43 20 66 6c  61 67 09 73 65 74 20 69  |ed..C flag.set i|
000634a0  66 20 62 75 66 66 65 72  20 77 61 73 20 66 75 6c  |f buffer was ful|
000634b0  6c 2c 20 6f 74 68 65 72  77 69 73 65 20 63 6c 65  |l, otherwise cle|
000634c0  61 72 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |ar.             |
000634d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000634f0  20 20 20 20 20 0a 54 68  69 73 20 63 61 6c 6c 20  |     .This call |
00063500  69 6e 73 65 72 74 73 20  61 20 63 68 61 72 61 63  |inserts a charac|
00063510  74 65 72 20 69 6e 74 6f  20 65 69 74 68 65 72 20  |ter into either |
00063520  74 68 65 20 6b 65 79 62  6f 61 72 64 20 6f 72 20  |the keyboard or |
00063530  73 65 72 69 61 6c 20 62  75 66 66 65 72 2e 0a 0a  |serial buffer...|
00063540  49 66 09 74 68 65 20 63  75 72 72 65 6e 74 20 65  |If.the current e|
00063550  73 63 61 70 65 20 63 68  61 72 61 63 74 65 72 20  |scape character |
00063560  28 73 65 74 20 77 69 74  68 20 3c 4f 53 5f 42 79  |(set with <OS_By|
00063570  74 65 20 32 32 30 3d 3e  4f 53 5f 42 79 74 65 32  |te 220=>OS_Byte2|
00063580  32 30 3e 29 20 69 73 20  69 6e 73 65 72 74 65 64  |20>) is inserted|
00063590  20 61 6e 64 20 65 73 63  61 70 65 20 67 65 6e 65  | and escape gene|
000635a0  72 61 74 69 6f 6e 20 69  73 20 6e 6f 74 20 64 69  |ration is not di|
000635b0  73 61 62 6c 65 64 20 28  73 65 65 20 3c 4f 53 5f  |sabled (see <OS_|
000635c0  42 79 74 65 20 32 32 39  3d 3e 4f 53 5f 42 79 74  |Byte 229=>OS_Byt|
000635d0  65 32 32 39 3e 20 2a 61  6e 64 2a 20 3c 4f 53 5f  |e229> *and* <OS_|
000635e0  42 79 74 65 20 32 30 30  3d 3e 4f 53 5f 42 79 74  |Byte 200=>OS_Byt|
000635f0  65 32 30 30 3e 29 0a 74  68 65 6e 09 61 6e 20 65  |e200>).then.an e|
00063600  73 63 61 70 65 20 63 6f  6e 64 69 74 69 6f 6e 20  |scape condition |
00063610  6f 63 63 75 72 73 0a 09  65 69 74 68 65 72 09 61  |occurs..either.a|
00063620  6e 20 3c 65 73 63 61 70  65 20 65 76 65 6e 74 3d  |n <escape event=|
00063630  3e 65 76 65 6e 74 5f 36  3e 20 69 73 20 67 65 6e  |>event_6> is gen|
00063640  65 72 61 74 65 64 20 28  69 66 20 65 6e 61 62 6c  |erated (if enabl|
00063650  65 64 20 77 69 74 68 20  3c 4f 53 5f 42 79 74 65  |ed with <OS_Byte|
00063660  20 31 34 2c 36 3d 3e 4f  53 5f 42 79 74 65 30 31  | 14,6=>OS_Byte01|
00063670  34 3e 29 0a 09 6f 72 09  74 68 65 20 3c 65 73 63  |4>)..or.the <esc|
00063680  61 70 65 20 68 61 6e 64  6c 65 72 3d 3e 4f 53 5f  |ape handler=>OS_|
00063690  68 61 6e 64 6c 65 72 73  5f 65 73 63 61 70 65 3e  |handlers_escape>|
000636a0  20 69 73 20 63 61 6c 6c  65 64 2e 0a 09 54 68 65  | is called...The|
000636b0  20 65 66 66 65 63 74 73  20 73 65 74 20 62 79 20  | effects set by |
000636c0  3c 4f 53 5f 42 79 74 65  20 32 33 30 3d 3e 4f 53  |<OS_Byte 230=>OS|
000636d0  5f 42 79 74 65 32 33 30  3e 20 6f 63 63 75 72 20  |_Byte230> occur |
000636e0  77 68 65 6e 20 74 68 65  20 65 73 63 61 70 65 20  |when the escape |
000636f0  63 6f 6e 64 69 74 69 6f  6e 20 69 73 20 61 63 6b  |condition is ack|
00063700  6e 6f 77 6c 65 64 67 65  64 20 77 69 74 68 20 3c  |nowledged with <|
00063710  4f 53 5f 42 79 74 65 20  31 32 36 3d 3e 4f 53 5f  |OS_Byte 126=>OS_|
00063720  42 79 74 65 31 32 36 3e  2e 0a 00 00 44 41 54 41  |Byte126>....DATA|
00063730  59 05 00 00 4f 53 5f 42  79 74 65 20 31 35 36 20  |Y...OS_Byte 156 |
00063740  20 52 65 61 64 2f 57 72  69 74 65 20 73 65 72 69  | Read/Write seri|
00063750  61 6c 20 70 6f 72 74 20  73 74 61 74 65 0a 23 50  |al port state.#P|
00063760  61 72 65 6e 74 20 4f 53  5f 42 79 74 65 49 6e 64  |arent OS_ByteInd|
00063770  65 78 0a 3d 3e 09 52 30  20 3d 09 31 35 36 20 28  |ex.=>.R0 =.156 (|
00063780  26 39 43 29 0a 09 52 31  20 3d 09 45 4f 52 20 76  |&9C)..R1 =.EOR v|
00063790  61 6c 75 65 0a 09 52 32  20 3d 09 41 4e 44 20 76  |alue..R2 =.AND v|
000637a0  61 6c 75 65 0a 0a 3c 3d  09 52 30 20 3d 09 70 72  |alue..<=.R0 =.pr|
000637b0  65 73 65 72 76 65 64 0a  09 52 31 20 3d 09 73 74  |eserved..R1 =.st|
000637c0  61 74 65 20 62 65 66 6f  72 65 20 62 65 69 6e 67  |ate before being|
000637d0  20 6f 76 65 72 77 72 69  74 74 65 6e 0a 09 52 32  | overwritten..R2|
000637e0  20 3d 09 6b 65 79 62 6f  61 72 64 20 64 69 73 61  | =.keyboard disa|
000637f0  62 6c 65 20 66 6c 61 67  20 28 73 65 65 20 3c 4f  |ble flag (see <O|
00063800  53 5f 42 79 74 65 20 32  30 31 3d 3e 4f 53 5f 42  |S_Byte 201=>OS_B|
00063810  79 74 65 32 30 31 3e 29  0a 20 20 20 20 20 20 20  |yte201>).       |
00063820  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00063840  20 20 20 20 20 20 20 20  20 20 20 0a 54 68 69 73  |           .This|
00063850  20 63 61 6c 6c 20 72 65  61 64 73 20 6f 72 20 77  | call reads or w|
00063860  72 69 74 65 73 20 74 68  65 20 73 65 72 69 61 6c  |rites the serial|
00063870  20 70 6f 72 74 20 73 74  61 74 65 2e 20 49 74 20  | port state. It |
00063880  69 73 20 70 72 6f 76 69  64 65 64 20 66 6f 72 20  |is provided for |
00063890  62 61 63 6b 77 61 72 64  73 20 63 6f 6d 70 61 74  |backwards compat|
000638a0  69 62 69 6c 69 74 79 20  2d 20 75 73 65 20 3c 4f  |ibility - use <O|
000638b0  53 5f 53 65 72 69 61 6c  4f 70 20 30 20 61 6e 64  |S_SerialOp 0 and|
000638c0  20 31 3d 3e 4f 53 5f 53  65 72 69 61 6c 4f 70 3e  | 1=>OS_SerialOp>|
000638d0  20 69 6e 73 74 65 61 64  2c 20 61 6e 64 20 3c 4f  | instead, and <O|
000638e0  53 5f 42 79 74 65 20 32  3d 3e 4f 53 5f 42 79 74  |S_Byte 2=>OS_Byt|
000638f0  65 30 30 32 3e 20 74 6f  20 63 68 61 6e 67 65 20  |e002> to change |
00063900  74 68 65 20 72 65 63 65  69 76 65 20 69 6e 74 65  |the receive inte|
00063910  72 72 75 70 74 2f 63 6f  6e 74 72 6f 6c 20 62 69  |rrupt/control bi|
00063920  74 2e 0a 0a 57 68 65 6e  20 77 72 69 74 69 6e 67  |t...When writing|
00063930  20 74 68 65 20 65 66 66  65 63 74 73 20 64 65 70  | the effects dep|
00063940  65 6e 64 20 6f 6e 20 52  31 3a 0a 0a 23 54 61 62  |end on R1:..#Tab|
00063950  0a 42 69 74 73 09 56 61  6c 75 65 09 45 66 66 65  |.Bits.Value.Effe|
00063960  63 74 0a 23 6c 69 6e 65  0a 30 2d 31 09 30 2d 32  |ct.#line.0-1.0-2|
00063970  09 4e 6f 20 65 66 66 65  63 74 0a 09 33 09 52 65  |.No effect..3.Re|
00063980  73 65 74 20 74 72 61 6e  73 6d 69 74 2c 20 72 65  |set transmit, re|
00063990  63 65 69 76 65 2c 20 63  6f 6e 74 72 6f 6c 20 72  |ceive, control r|
000639a0  65 67 69 73 74 65 72 73  0a 32 2d 34 09 30 09 37  |egisters.2-4.0.7|
000639b0  20 62 69 74 2c 20 65 76  65 6e 20 70 61 72 69 74  | bit, even parit|
000639c0  79 2c 20 32 20 73 74 6f  70 20 62 69 74 73 20 28  |y, 2 stop bits (|
000639d0  37 45 32 29 0a 09 31 09  37 20 62 69 74 2c 20 6f  |7E2)..1.7 bit, o|
000639e0  64 64 20 70 61 72 69 74  79 2c 20 32 20 73 74 6f  |dd parity, 2 sto|
000639f0  70 20 62 69 74 73 20 28  37 4f 32 29 0a 09 32 09  |p bits (7O2)..2.|
00063a00  37 20 62 69 74 2c 20 65  76 65 6e 20 70 61 72 69  |7 bit, even pari|
00063a10  74 79 2c 20 31 20 73 74  6f 70 20 62 69 74 73 20  |ty, 1 stop bits |
00063a20  28 37 45 31 29 0a 09 33  09 37 20 62 69 74 2c 20  |(7E1)..3.7 bit, |
00063a30  6f 64 64 20 70 61 72 69  74 79 2c 20 31 20 73 74  |odd parity, 1 st|
00063a40  6f 70 20 62 69 74 20 28  37 4f 31 29 0a 09 34 09  |op bit (7O1)..4.|
00063a50  38 20 62 69 74 2c 20 6e  6f 20 70 61 72 69 74 79  |8 bit, no parity|
00063a60  2c 20 32 20 73 74 6f 70  20 62 69 74 73 20 28 38  |, 2 stop bits (8|
00063a70  4e 32 29 0a 09 35 09 38  20 62 69 74 2c 20 6e 6f  |N2)..5.8 bit, no|
00063a80  20 70 61 72 69 74 79 2c  20 31 20 73 74 6f 70 20  | parity, 1 stop |
00063a90  62 69 74 73 20 28 38 4e  31 29 0a 09 36 09 38 20  |bits (8N1)..6.8 |
00063aa0  62 69 74 2c 20 65 76 65  6e 20 70 61 72 69 74 79  |bit, even parity|
00063ab0  2c 20 31 20 73 74 6f 70  20 62 69 74 73 20 28 38  |, 1 stop bits (8|
00063ac0  45 31 29 0a 09 37 09 38  20 62 69 74 2c 20 6f 64  |E1)..7.8 bit, od|
00063ad0  64 20 70 61 72 69 74 79  2c 20 31 20 73 74 6f 70  |d parity, 1 stop|
00063ae0  20 62 69 74 20 28 38 4f  31 29 0a 35 2d 36 09 30  | bit (8O1).5-6.0|
00063af0  09 52 54 53 20 6c 6f 77  2c 20 74 72 61 6e 73 6d  |.RTS low, transm|
00063b00  69 74 20 69 6e 74 65 72  72 75 70 74 20 64 69 73  |it interrupt dis|
00063b10  61 62 6c 65 64 0a 09 31  09 52 54 53 20 6c 6f 77  |abled..1.RTS low|
00063b20  2c 20 74 72 61 6e 73 6d  69 74 20 69 6e 74 65 72  |, transmit inter|
00063b30  72 75 70 74 20 65 6e 61  62 6c 65 64 0a 09 32 09  |rupt enabled..2.|
00063b40  52 54 53 20 68 69 67 68  2c 20 74 72 61 6e 73 6d  |RTS high, transm|
00063b50  69 74 20 69 6e 74 65 72  72 75 70 74 20 64 69 73  |it interrupt dis|
00063b60  61 62 6c 65 64 0a 09 33  09 52 54 53 20 6c 6f 77  |abled..3.RTS low|
00063b70  2c 20 74 72 61 6e 73 6d  69 74 20 69 6e 74 65 72  |, transmit inter|
00063b80  72 75 70 74 20 64 69 73  61 62 6c 65 64 2c 20 62  |rupt disabled, b|
00063b90  72 65 61 6b 20 6c 65 76  65 6c 20 6f 6e 20 74 72  |reak level on tr|
00063ba0  61 6e 73 6d 69 74 20 64  61 74 61 0a 37 09 30 09  |ansmit data.7.0.|
00063bb0  52 65 63 65 69 76 65 20  69 6e 74 65 72 72 75 70  |Receive interrup|
00063bc0  74 20 64 69 73 61 62 6c  65 64 0a 09 31 09 52 65  |t disabled..1.Re|
00063bd0  63 65 69 76 65 20 69 6e  74 65 72 72 75 70 74 20  |ceive interrupt |
00063be0  65 6e 61 62 6c 65 64 0a  0a 59 6f 75 20 73 68 6f  |enabled..You sho|
00063bf0  75 6c 64 20 6f 6e 6c 79  20 77 72 69 74 65 20 62  |uld only write b|
00063c00  69 74 20 37 20 77 69 74  68 20 74 68 69 73 20 63  |it 7 with this c|
00063c10  61 6c 6c 20 28 61 6e 64  20 72 65 61 6c 6c 79 20  |all (and really |
00063c20  73 68 6f 75 6c 64 20 62  65 20 75 73 69 6e 67 20  |should be using |
00063c30  3c 4f 53 5f 42 79 74 65  20 32 3d 3e 4f 53 5f 42  |<OS_Byte 2=>OS_B|
00063c40  79 74 65 30 30 32 3e 29  2e 20 54 68 65 20 76 61  |yte002>). The va|
00063c50  6c 75 65 20 63 61 6e 20  61 6c 73 6f 20 62 65 20  |lue can also be |
00063c60  72 65 61 64 20 77 69 74  68 20 3c 4f 53 5f 42 79  |read with <OS_By|
00063c70  74 65 20 31 39 32 3d 3e  4f 53 5f 42 79 74 65 31  |te 192=>OS_Byte1|
00063c80  39 32 3e 2e 0a 00 00 00  44 41 54 41 59 04 00 00  |92>.....DATAY...|
00063c90  4f 53 5f 42 79 74 65 20  31 36 30 20 20 52 65 61  |OS_Byte 160  Rea|
00063ca0  64 20 56 44 55 20 76 61  72 69 61 62 6c 65 20 6e  |d VDU variable n|
00063cb0  75 6d 62 65 72 0a 23 50  61 72 65 6e 74 20 4f 53  |umber.#Parent OS|
00063cc0  5f 42 79 74 65 49 6e 64  65 78 0a 3d 3e 09 52 30  |_ByteIndex.=>.R0|
00063cd0  20 3d 09 31 36 30 20 28  26 41 30 29 0a 09 52 31  | =.160 (&A0)..R1|
00063ce0  20 3d 09 3c 56 44 55 20  76 61 72 69 61 62 6c 65  | =.<VDU variable|
00063cf0  20 6e 75 6d 62 65 72 3d  3e 2e 6e 75 6d 62 65 72  | number=>.number|
00063d00  73 3e 0a 0a 3c 3d 09 52  30 20 70 72 65 73 65 72  |s>..<=.R0 preser|
00063d10  76 65 64 0a 09 52 32 20  3d 09 76 61 6c 75 65 20  |ved..R2 =.value |
00063d20  6f 66 20 76 61 72 69 61  62 6c 65 0a 09 52 32 20  |of variable..R2 |
00063d30  3d 09 76 61 6c 75 65 20  6f 66 20 6e 65 78 74 20  |=.value of next |
00063d40  76 61 72 69 61 62 6c 65  20 28 65 6e 74 72 79 20  |variable (entry |
00063d50  52 31 20 2b 20 31 29 0a  0a 54 68 69 73 20 63 61  |R1 + 1)..This ca|
00063d60  6c 6c 20 69 73 20 70 72  6f 76 69 64 65 64 20 66  |ll is provided f|
00063d70  6f 72 20 63 6f 6d 70 61  74 69 62 69 6c 69 74 79  |or compatibility|
00063d80  20 77 69 74 68 20 74 68  65 20 42 42 43 2f 4d 61  | with the BBC/Ma|
00063d90  73 74 65 72 20 31 32 38  2c 20 61 6e 64 20 72 65  |ster 128, and re|
00063da0  61 64 73 20 76 61 72 69  6f 75 73 20 56 44 55 20  |ads various VDU |
00063db0  76 61 72 69 61 62 6c 65  73 2e 20 4e 6f 74 65 20  |variables. Note |
00063dc0  74 68 61 74 20 69 74 20  64 6f 65 73 20 6e 6f 74  |that it does not|
00063dd0  20 75 73 65 20 74 68 65  20 73 61 6d 65 20 6e 75  | use the same nu|
00063de0  6d 62 65 72 73 20 66 6f  72 20 76 61 72 69 61 62  |mbers for variab|
00063df0  6c 65 73 20 61 73 20 3c  4f 53 5f 52 65 61 64 56  |les as <OS_ReadV|
00063e00  44 55 56 61 72 69 61 62  6c 65 73 3e 2c 20 61 6e  |DUVariables>, an|
00063e10  64 20 74 68 61 74 20 74  68 61 74 20 53 57 49 20  |d that that SWI |
00063e20  63 61 6e 20 72 65 61 64  20 6d 61 6e 79 20 6d 6f  |can read many mo|
00063e30  72 65 20 76 61 72 69 61  62 6c 65 73 2e 0a 23 53  |re variables..#S|
00063e40  75 62 50 61 67 65 20 6e  75 6d 62 65 72 73 0a 4f  |ubPage numbers.O|
00063e50  53 5f 42 79 74 65 20 31  36 30 20 56 44 55 20 76  |S_Byte 160 VDU v|
00063e60  61 72 69 61 62 6c 65 20  6e 75 6d 62 65 72 73 0a  |ariable numbers.|
00063e70  4e 75 6d 62 65 72 09 56  61 6c 75 65 0a 23 4c 69  |Number.Value.#Li|
00063e80  6e 65 0a 30 09 4c 53 42  20 6f 66 20 67 72 61 70  |ne.0.LSB of grap|
00063e90  68 69 63 73 20 77 69 6e  64 6f 77 20 6c 65 66 74  |hics window left|
00063ea0  20 63 6f 6c 75 6d 6e 09  28 69 63 29 0a 31 09 4d  | column.(ic).1.M|
00063eb0  53 42 20 6f 66 20 67 72  61 70 68 69 63 73 20 77  |SB of graphics w|
00063ec0  69 6e 64 6f 77 20 6c 65  66 74 20 63 6f 6c 75 6d  |indow left colum|
00063ed0  6e 09 28 69 63 29 0a 32  09 4c 53 42 20 6f 66 20  |n.(ic).2.LSB of |
00063ee0  67 72 61 70 68 69 63 73  20 77 69 6e 64 6f 77 20  |graphics window |
00063ef0  62 6f 74 74 6f 6d 20 72  6f 77 09 28 69 63 29 0a  |bottom row.(ic).|
00063f00  33 09 4d 53 42 20 6f 66  20 67 72 61 70 68 69 63  |3.MSB of graphic|
00063f10  73 20 77 69 6e 64 6f 77  20 62 6f 74 74 6f 6d 20  |s window bottom |
00063f20  72 6f 77 09 28 69 63 29  0a 34 09 4c 53 42 20 6f  |row.(ic).4.LSB o|
00063f30  66 20 67 72 61 70 68 69  63 73 20 77 69 6e 64 6f  |f graphics windo|
00063f40  77 20 72 69 67 68 74 20  63 6f 6c 75 6d 6e 09 28  |w right column.(|
00063f50  69 63 29 0a 35 09 4d 53  42 20 6f 66 20 67 72 61  |ic).5.MSB of gra|
00063f60  70 68 69 63 73 20 77 69  6e 64 6f 77 20 72 69 67  |phics window rig|
00063f70  68 74 20 63 6f 6c 75 6d  6e 09 28 69 63 29 0a 36  |ht column.(ic).6|
00063f80  09 4c 53 42 20 6f 66 20  67 72 61 70 68 69 63 73  |.LSB of graphics|
00063f90  20 77 69 6e 64 6f 77 20  74 6f 70 20 72 6f 77 09  | window top row.|
00063fa0  28 69 63 29 0a 37 09 4d  53 42 20 6f 66 20 67 72  |(ic).7.MSB of gr|
00063fb0  61 70 68 69 63 73 20 77  69 6e 64 6f 77 20 74 6f  |aphics window to|
00063fc0  70 20 72 6f 77 09 28 69  63 29 0a 38 09 74 65 78  |p row.(ic).8.tex|
00063fd0  74 20 77 69 6e 64 6f 77  20 6c 65 66 74 20 63 6f  |t window left co|
00063fe0  6c 75 6d 6e 0a 39 09 74  65 78 74 20 77 69 6e 64  |lumn.9.text wind|
00063ff0  6f 77 20 62 6f 74 74 6f  6d 20 72 6f 77 0a 31 30  |ow bottom row.10|
00064000  09 74 65 78 74 20 77 69  6e 64 6f 77 20 72 69 67  |.text window rig|
00064010  68 74 20 63 6f 6c 75 6d  6e 0a 31 31 09 74 65 78  |ht column.11.tex|
00064020  74 20 77 69 6e 64 6f 77  20 74 6f 70 20 72 6f 77  |t window top row|
00064030  0a 31 32 09 4c 53 42 20  6f 66 20 67 72 61 70 68  |.12.LSB of graph|
00064040  69 63 73 20 6f 72 69 67  69 6e 20 78 20 63 6f 6f  |ics origin x coo|
00064050  72 64 69 6e 61 74 65 09  28 65 63 29 0a 31 33 09  |rdinate.(ec).13.|
00064060  4d 53 42 20 6f 66 20 67  72 61 70 68 69 63 73 20  |MSB of graphics |
00064070  6f 72 69 67 69 6e 20 78  20 63 6f 6f 72 64 69 6e  |origin x coordin|
00064080  61 74 65 09 28 65 63 29  0a 31 34 09 4c 53 42 20  |ate.(ec).14.LSB |
00064090  6f 66 20 67 72 61 70 68  69 63 73 20 6f 72 69 67  |of graphics orig|
000640a0  69 6e 20 79 20 63 6f 6f  72 64 69 6e 61 74 65 09  |in y coordinate.|
000640b0  28 65 63 29 0a 31 35 09  4d 53 42 20 6f 66 20 67  |(ec).15.MSB of g|
000640c0  72 61 70 68 69 63 73 20  6f 72 69 67 69 6e 20 79  |raphics origin y|
000640d0  20 63 6f 6f 72 64 69 6e  61 74 65 09 28 65 63 29  | coordinate.(ec)|
000640e0  0a 00 00 00 44 41 54 41  44 04 00 00 4f 53 5f 42  |....DATAD...OS_B|
000640f0  79 74 65 20 31 36 33 20  20 52 65 61 64 20 67 65  |yte 163  Read ge|
00064100  6e 65 72 61 6c 20 67 72  61 70 68 69 63 73 20 69  |neral graphics i|
00064110  6e 66 6f 72 6d 61 74 69  6f 6e 0a 23 50 61 72 65  |nformation.#Pare|
00064120  6e 74 20 4f 53 5f 42 79  74 65 49 6e 64 65 78 0a  |nt OS_ByteIndex.|
00064130  3d 3e 09 52 30 20 3d 09  31 36 33 0a 09 52 31 20  |=>.R0 =.163..R1 |
00064140  3d 09 32 34 32 0a 09 52  32 20 3d 09 3c 6c 65 6e  |=.242..R2 =.<len|
00064150  67 74 68 20 6f 72 20 61  63 74 69 6f 6e 20 63 6f  |gth or action co|
00064160  64 65 3d 3e 2e 63 6f 64  65 73 3e 0a 0a 3c 3d 09  |de=>.codes>..<=.|
00064170  52 30 20 70 72 65 73 65  72 76 65 64 0a 09 52 31  |R0 preserved..R1|
00064180  2c 52 32 20 64 65 70 65  6e 64 20 6f 6e 20 65 6e  |,R2 depend on en|
00064190  74 72 79 20 52 32 0a 0a  54 68 69 73 20 63 61 6c  |try R2..This cal|
000641a0  6c 20 72 65 61 64 73 2c  20 73 65 74 73 20 6f 72  |l reads, sets or|
000641b0  20 72 65 73 65 74 73 20  74 68 65 20 64 6f 74 2d  | resets the dot-|
000641c0  64 61 73 68 20 70 61 74  74 65 72 6e 20 6c 65 6e  |dash pattern len|
000641d0  67 74 68 20 6f 72 20 72  65 74 75 72 6e 73 20 73  |gth or returns s|
000641e0  74 61 74 75 73 20 69 6e  66 6f 72 6d 61 74 69 6f  |tatus informatio|
000641f0  6e 20 64 65 70 65 6e 64  65 6e 74 20 6f 6e 20 74  |n dependent on t|
00064200  68 65 20 76 61 6c 75 65  20 6f 66 20 52 32 2e 0a  |he value of R2..|
00064210  23 53 75 62 50 61 67 65  20 63 6f 64 65 73 0a 4f  |#SubPage codes.O|
00064220  53 5f 42 79 74 65 20 31  36 33 20 63 6f 64 65 73  |S_Byte 163 codes|
00064230  0a 23 20 54 68 69 73 20  6f 6e 65 20 69 73 20 67  |.# This one is g|
00064240  6f 69 6e 67 20 74 6f 20  62 65 20 61 20 73 6f 64  |oing to be a sod|
00064250  20 74 6f 20 77 72 61 70  20 2d 20 74 68 65 20 64  | to wrap - the d|
00064260  65 66 61 6c 74 20 62 65  68 61 76 69 6f 75 72 20  |efalt behaviour |
00064270  6f 66 20 6f 6e 6c 79 20  77 72 61 70 70 69 6e 67  |of only wrapping|
00064280  20 74 68 65 20 6c 61 73  74 20 63 6f 6c 75 6d 6e  | the last column|
00064290  20 72 65 61 6c 6c 79 20  6c 6f 6f 6b 73 20 6e 61  | really looks na|
000642a0  66 66 2c 20 62 75 74 20  74 75 72 6e 69 6e 67 20  |ff, but turning |
000642b0  77 72 61 70 20 6f 66 66  20 63 6f 6d 70 6c 65 74  |wrap off complet|
000642c0  65 6c 79 20 6d 61 79 20  6d 61 6b 65 20 74 68 65  |ely may make the|
000642d0  20 70 61 67 65 20 74 6f  6f 20 77 69 64 65 20 66  | page too wide f|
000642e0  6f 72 20 73 6f 6d 65 20  6d 6f 6e 69 74 6f 72 73  |or some monitors|
000642f0  2e 0a 23 57 72 61 70 20  6f 66 66 0a 52 32 20 56  |..#Wrap off.R2 V|
00064300  61 6c 75 65 09 41 63 74  69 6f 6e 09 09 09 09 09  |alue.Action.....|
00064310  09 72 65 74 75 72 6e 20  52 31 09 09 72 65 74 75  |.return R1..retu|
00064320  72 6e 20 52 32 0a 23 57  72 61 70 20 0a 23 4c 69  |rn R2.#Wrap .#Li|
00064330  6e 65 0a 30 09 09 72 65  73 65 74 20 64 6f 74 2d  |ne.0..reset dot-|
00064340  64 61 73 68 20 70 61 74  74 65 72 6e 20 61 6e 64  |dash pattern and|
00064350  20 6c 65 6e 67 74 68 20  74 6f 20 64 65 66 61 75  | length to defau|
00064360  6c 74 73 09 70 72 65 73  65 72 76 65 64 09 09 70  |lts.preserved..p|
00064370  72 65 73 65 72 76 65 64  0a 31 2d 36 34 09 09 73  |reserved.1-64..s|
00064380  65 74 20 64 6f 74 2d 64  61 73 68 20 70 61 74 74  |et dot-dash patt|
00064390  65 72 6e 20 72 65 70 65  61 74 20 6c 65 6e 67 74  |ern repeat lengt|
000643a0  68 09 09 70 72 65 73 65  72 76 65 64 09 09 70 72  |h..preserved..pr|
000643b0  65 73 65 72 76 65 64 0a  36 35 09 09 72 65 74 75  |eserved.65..retu|
000643c0  72 6e 20 73 74 61 74 75  73 20 69 6e 66 6f 72 6d  |rn status inform|
000643d0  61 74 69 6f 6e 09 09 09  3c 70 61 63 6b 65 64 20  |ation...<packed |
000643e0  69 6e 66 6f 3d 3e 2e 69  6e 66 6f 3e 09 73 79 73  |info=>.info>.sys|
000643f0  74 65 6d 20 73 70 72 69  74 65 20 61 72 65 61 20  |tem sprite area |
00064400  73 69 7a 65 20 28 62 79  74 65 73 29 0a 23 57 72  |size (bytes).#Wr|
00064410  61 70 20 6f 66 66 0a 36  36 09 09 72 65 74 75 72  |ap off.66..retur|
00064420  6e 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 20 6f 6e  |n information on|
00064430  20 63 75 72 72 65 6e 74  20 73 70 72 69 74 65 09  | current sprite.|
00064440  09 77 69 64 74 68 20 28  70 69 78 65 6c 73 29 09  |.width (pixels).|
00064450  09 68 65 69 67 68 74 20  28 70 69 78 65 6c 73 29  |.height (pixels)|
00064460  0a 23 57 72 61 70 20 0a  23 53 75 62 50 61 67 65  |.#Wrap .#SubPage|
00064470  20 69 6e 66 6f 0a 4f 53  5f 42 79 74 65 20 31 36  | info.OS_Byte 16|
00064480  33 20 73 74 61 74 75 73  20 69 6e 66 6f 72 6d 61  |3 status informa|
00064490  74 69 6f 6e 0a 42 69 74  73 09 4d 65 61 6e 69 6e  |tion.Bits.Meanin|
000644a0  67 0a 23 4c 69 6e 65 0a  37 09 69 66 20 73 65 74  |g.#Line.7.if set|
000644b0  20 73 70 72 69 74 65 73  20 61 72 65 20 61 6c 77  | sprites are alw|
000644c0  61 79 73 20 61 63 74 69  76 65 0a 36 09 69 66 20  |ays active.6.if |
000644d0  73 65 74 20 66 6c 6f 6f  64 20 66 69 6c 6c 20 69  |set flood fill i|
000644e0  73 20 61 6c 77 61 79 73  20 61 63 74 69 76 65 0a  |s always active.|
000644f0  30 2d 35 09 63 75 72 72  65 6e 74 20 64 6f 74 2d  |0-5.current dot-|
00064500  64 61 73 68 20 70 61 74  74 65 72 6e 20 72 65 70  |dash pattern rep|
00064510  65 61 74 20 6c 65 6e 67  74 68 20 28 30 20 6d 65  |eat length (0 me|
00064520  61 6e 73 20 36 34 29 0a  44 41 54 41 c6 01 00 00  |ans 64).DATA....|
00064530  4f 53 5f 42 79 74 65 20  31 37 36 20 20 52 65 61  |OS_Byte 176  Rea|
00064540  64 2f 57 72 69 74 65 20  35 30 48 7a 20 63 6f 75  |d/Write 50Hz cou|
00064550  6e 74 65 72 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |nter.#Parent OS_|
00064560  42 79 74 65 49 6e 64 65  78 0a 3d 3e 09 52 30 20  |ByteIndex.=>.R0 |
00064570  3d 09 31 37 36 20 28 26  42 30 29 0a 09 52 31 20  |=.176 (&B0)..R1 |
00064580  3d 09 45 4f 52 20 76 61  6c 75 65 0a 09 52 32 20  |=.EOR value..R2 |
00064590  3d 09 41 4e 44 20 76 61  6c 75 65 0a 0a 3c 3d 09  |=.AND value..<=.|
000645a0  52 30 20 70 72 65 73 65  72 76 65 64 0a 09 52 31  |R0 preserved..R1|
000645b0  20 3d 09 76 61 6c 75 65  20 62 65 66 6f 72 65 20  | =.value before |
000645c0  62 65 69 6e 67 20 6f 76  65 72 77 72 69 74 74 65  |being overwritte|
000645d0  6e 0a 09 52 32 20 63 6f  72 72 75 70 74 65 64 0a  |n..R2 corrupted.|
000645e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00064610  20 20 0a 54 68 69 73 20  63 61 6c 6c 20 72 65 61  |  .This call rea|
00064620  64 73 20 6f 72 20 73 65  74 73 20 74 68 65 20 22  |ds or sets the "|
00064630  35 30 48 7a 22 20 63 6f  75 6e 74 65 72 2c 20 61  |50Hz" counter, a|
00064640  20 31 20 62 79 74 65 20  63 6f 75 6e 74 65 72 20  | 1 byte counter |
00064650  77 68 69 63 68 20 69 73  20 64 65 63 72 65 61 73  |which is decreas|
00064660  65 64 20 65 76 65 72 79  20 76 53 79 6e 63 2e 20  |ed every vSync. |
00064670  41 73 20 61 20 63 6f 6e  73 65 71 75 65 6e 63 65  |As a consequence|
00064680  20 74 68 65 20 72 61 74  65 20 6f 66 20 74 68 69  | the rate of thi|
00064690  73 20 63 6f 75 6e 74 65  72 20 69 73 20 61 63 74  |s counter is act|
000646a0  75 61 6c 6c 79 20 6d 6f  64 65 20 61 6e 64 20 6d  |ually mode and m|
000646b0  6f 6e 69 74 6f 72 20 64  65 70 65 6e 64 65 6e 74  |onitor dependent|
000646c0  2c 20 61 6e 64 20 73 68  6f 75 6c 64 20 6e 6f 74  |, and should not|
000646d0  20 62 65 20 75 73 65 64  20 66 6f 72 20 61 63 63  | be used for acc|
000646e0  75 72 61 74 65 20 74 69  6d 69 6e 67 2e 0a 00 00  |urate timing....|
000646f0  44 41 54 41 75 00 00 00  49 6e 70 75 74 20 73 6f  |DATAu...Input so|
00064700  75 72 63 65 73 0a 23 50  61 72 65 6e 74 20 4f 53  |urces.#Parent OS|
00064710  5f 42 79 74 65 31 37 37  0a 4e 75 6d 62 65 72 09  |_Byte177.Number.|
00064720  53 74 72 65 61 6d 0a 23  4c 69 6e 65 0a 23 57 72  |Stream.#Line.#Wr|
00064730  61 70 20 6f 66 66 0a 30  09 4b 65 79 62 6f 61 72  |ap off.0.Keyboar|
00064740  64 20 62 75 66 66 65 72  0a 31 09 53 65 72 69 61  |d buffer.1.Seria|
00064750  6c 20 69 6e 70 75 74 20  62 75 66 66 65 72 0a 23  |l input buffer.#|
00064760  57 72 61 70 0a 00 00 00  44 41 54 41 4b 01 00 00  |Wrap....DATAK...|
00064770  4f 53 5f 42 79 74 65 20  31 37 38 20 20 52 65 61  |OS_Byte 178  Rea|
00064780  64 2f 57 72 69 74 65 20  6b 65 79 62 6f 61 72 64  |d/Write keyboard|
00064790  20 73 65 6d 61 70 68 6f  72 65 0a 23 50 61 72 65  | semaphore.#Pare|
000647a0  6e 74 20 4f 53 5f 42 79  74 65 49 6e 64 65 78 0a  |nt OS_ByteIndex.|
000647b0  3d 3e 09 52 30 20 3d 09  31 37 38 20 28 26 42 32  |=>.R0 =.178 (&B2|
000647c0  29 0a 09 52 31 20 3d 09  45 4f 52 20 76 61 6c 75  |)..R1 =.EOR valu|
000647d0  65 0a 09 52 32 20 3d 09  41 4e 44 20 76 61 6c 75  |e..R2 =.AND valu|
000647e0  65 0a 0a 3c 3d 09 52 30  20 70 72 65 73 65 72 76  |e..<=.R0 preserv|
000647f0  65 64 0a 09 52 31 20 3d  09 76 61 6c 75 65 20 62  |ed..R1 =.value b|
00064800  65 66 6f 72 65 20 62 65  69 6e 67 20 6f 76 65 72  |efore being over|
00064810  77 72 69 74 74 65 6e 0a  09 52 32 20 63 6f 72 72  |written..R2 corr|
00064820  75 70 74 65 64 0a 20 20  20 20 20 20 20 20 20 20  |upted.          |
00064830  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00064850  20 20 20 20 20 20 20 20  0a 54 68 69 73 20 63 61  |        .This ca|
00064860  6c 6c 20 69 73 20 6f 62  73 6f 6c 65 74 65 20 61  |ll is obsolete a|
00064870  6e 64 20 73 68 6f 75 6c  64 20 6e 6f 74 20 62 65  |nd should not be|
00064880  20 75 73 65 64 2e 20 49  74 20 69 73 20 6e 6f 74  | used. It is not|
00064890  20 64 6f 63 75 6d 65 6e  74 65 64 20 69 6e 20 74  | documented in t|
000648a0  68 65 20 52 49 53 43 20  4f 53 20 33 20 50 52 4d  |he RISC OS 3 PRM|
000648b0  73 2e 0a 00 44 41 54 41  d0 02 00 00 4f 53 5f 42  |s...DATA....OS_B|
000648c0  79 74 65 20 31 38 31 20  20 52 65 61 64 2f 57 72  |yte 181  Read/Wr|
000648d0  69 74 65 20 73 65 72 69  61 6c 20 69 6e 70 75 74  |ite serial input|
000648e0  20 69 6e 74 65 72 70 72  65 74 61 74 69 6f 6e 20  | interpretation |
000648f0  73 74 61 74 75 73 0a 23  50 61 72 65 6e 74 20 4f  |status.#Parent O|
00064900  53 5f 42 79 74 65 49 6e  64 65 78 0a 3d 3e 09 52  |S_ByteIndex.=>.R|
00064910  30 20 3d 09 31 38 31 20  28 26 42 35 29 0a 09 52  |0 =.181 (&B5)..R|
00064920  31 20 3d 09 45 4f 52 20  76 61 6c 75 65 0a 09 52  |1 =.EOR value..R|
00064930  32 20 3d 09 41 4e 44 20  76 61 6c 75 65 0a 0a 3c  |2 =.AND value..<|
00064940  3d 09 52 30 20 70 72 65  73 65 72 76 65 64 0a 09  |=.R0 preserved..|
00064950  52 31 20 3d 09 73 74 61  74 75 73 20 62 65 66 6f  |R1 =.status befo|
00064960  72 65 20 62 65 69 6e 67  20 6f 76 65 72 77 72 69  |re being overwri|
00064970  74 74 65 6e 0a 09 52 32  20 3d 09 4e 6f 49 67 6e  |tten..R2 =.NoIgn|
00064980  6f 72 65 20 73 74 61 74  65 20 28 73 65 65 20 3c  |ore state (see <|
00064990  4f 53 5f 42 79 74 65 20  31 38 32 3d 3e 4f 53 5f  |OS_Byte 182=>OS_|
000649a0  42 79 74 65 31 38 32 3e  29 0a 20 20 20 20 20 20  |Byte182>).      |
000649b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000649d0  20 20 20 20 20 20 20 20  20 20 20 20 0a 54 68 69  |            .Thi|
000649e0  73 20 63 61 6c 6c 20 72  65 61 64 73 20 6f 72 20  |s call reads or |
000649f0  73 65 74 73 20 74 68 65  20 73 74 61 74 65 20 6f  |sets the state o|
00064a00  66 20 73 65 72 69 61 6c  20 69 6e 74 65 72 70 72  |f serial interpr|
00064a10  65 74 61 74 69 6f 6e 0a  0a 53 74 61 74 75 73 09  |etation..Status.|
00064a20  4d 65 61 69 6e 69 6e 67  0a 23 4c 69 6e 65 0a 30  |Meaining.#Line.0|
00064a30  09 43 68 61 72 61 63 74  65 72 73 20 72 65 61 64  |.Characters read|
00064a40  20 66 72 6f 6d 20 74 68  65 20 73 65 72 69 61 6c  | from the serial|
00064a50  20 62 75 66 66 65 72 20  61 72 65 20 67 69 76 65  | buffer are give|
00064a60  6e 20 74 68 65 20 73 61  6d 65 20 69 6e 74 65 72  |n the same inter|
00064a70  70 72 65 74 61 74 69 6f  6e 20 61 73 20 74 68 6f  |pretation as tho|
00064a80  73 65 20 72 65 61 64 20  66 72 6f 6d 20 74 68 65  |se read from the|
00064a90  20 6b 65 79 62 6f 61 72  64 20 62 75 66 66 65 72  | keyboard buffer|
00064aa0  3a 0a 09 09 8f 09 43 75  72 72 65 6e 74 20 65 73  |:.....Current es|
00064ab0  63 61 70 65 20 63 68 61  72 61 63 74 65 72 20 67  |cape character g|
00064ac0  65 6e 65 72 61 74 65 73  20 61 6e 20 65 73 63 61  |enerates an esca|
00064ad0  70 65 20 63 6f 6e 64 69  74 69 6f 6e 0a 09 09 8f  |pe condition....|
00064ae0  09 46 75 6e 63 74 69 6f  6e 20 6b 65 79 73 20 61  |.Function keys a|
00064af0  72 65 20 65 78 70 61 6e  64 65 64 0a 09 09 8f 09  |re expanded.....|
00064b00  3c 45 73 63 61 70 65 3d  3e 65 76 65 6e 74 5f 36  |<Escape=>event_6|
00064b10  3e 20 61 6e 64 20 3c 63  68 61 72 61 63 74 65 72  |> and <character|
00064b20  20 65 6e 74 65 72 69 6e  67 20 62 75 66 66 65 72  | entering buffer|
00064b30  3d 3e 65 76 65 6e 74 5f  32 3e 20 65 76 65 6e 74  |=>event_2> event|
00064b40  73 20 61 72 65 20 67 65  6e 65 72 61 74 65 64 0a  |s are generated.|
00064b50  31 20 28 64 65 66 61 75  6c 74 29 09 4e 6f 20 6b  |1 (default).No k|
00064b60  65 79 62 6f 61 72 64 20  69 6e 74 65 72 70 72 65  |eyboard interpre|
00064b70  74 61 74 69 6f 6e 20 69  73 20 70 65 72 66 6f 72  |tation is perfor|
00064b80  6d 65 64 0a 44 41 54 41  fd 01 00 00 4f 53 5f 42  |med.DATA....OS_B|
00064b90  79 74 65 20 31 38 32 20  20 52 65 61 64 2f 57 72  |yte 182  Read/Wr|
00064ba0  69 74 65 20 70 72 69 6e  74 65 72 20 4e 6f 49 67  |ite printer NoIg|
00064bb0  6e 6f 72 65 20 73 74 61  74 65 0a 23 50 61 72 65  |nore state.#Pare|
00064bc0  6e 74 20 4f 53 5f 42 79  74 65 49 6e 64 65 78 0a  |nt OS_ByteIndex.|
00064bd0  3d 3e 09 52 30 20 3d 09  31 38 32 20 28 26 42 36  |=>.R0 =.182 (&B6|
00064be0  29 0a 09 52 31 20 3d 09  45 4f 52 20 76 61 6c 75  |)..R1 =.EOR valu|
00064bf0  65 0a 09 52 32 20 3d 09  41 4e 44 20 76 61 6c 75  |e..R2 =.AND valu|
00064c00  65 0a 0a 3c 3d 09 52 30  20 70 72 65 73 65 72 76  |e..<=.R0 preserv|
00064c10  65 64 0a 09 52 31 20 3d  09 76 61 6c 75 65 20 62  |ed..R1 =.value b|
00064c20  65 66 6f 72 65 20 62 65  69 6e 67 20 6f 76 65 72  |efore being over|
00064c30  77 72 69 74 74 65 6e 0a  09 52 32 20 63 6f 72 72  |written..R2 corr|
00064c40  75 70 74 65 64 0a 20 20  20 20 20 20 20 20 20 20  |upted.          |
00064c50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00064c70  20 20 20 20 20 20 20 20  0a 54 68 69 73 20 63 61  |        .This ca|
00064c80  6c 6c 20 72 65 61 64 73  20 6f 72 20 73 65 74 73  |ll reads or sets|
00064c90  20 74 68 65 20 70 72 69  6e 74 65 72 20 4e 6f 49  | the printer NoI|
00064ca0  67 6e 6f 72 65 20 73 74  61 74 65 2e 20 49 66 20  |gnore state. If |
00064cb0  62 69 74 20 37 20 69 73  20 63 6c 65 61 72 20 74  |bit 7 is clear t|
00064cc0  68 65 6e 20 74 68 65 20  69 67 6e 6f 72 65 20 63  |hen the ignore c|
00064cd0  68 61 72 61 63 74 65 72  20 73 65 74 20 62 79 20  |haracter set by |
00064ce0  3c 4f 53 5f 42 79 74 65  20 36 3d 3e 4f 53 5f 42  |<OS_Byte 6=>OS_B|
00064cf0  79 74 65 30 30 36 3e 20  6f 72 20 3c 4f 53 5f 42  |yte006> or <OS_B|
00064d00  79 74 65 20 32 34 36 3d  3e 4f 53 5f 42 79 74 65  |yte 246=>OS_Byte|
00064d10  32 34 36 3e 20 69 73 20  66 69 6c 74 65 72 65 64  |246> is filtered|
00064d20  20 66 72 6f 6d 20 74 68  65 20 70 72 69 6e 74 65  | from the printe|
00064d30  72 20 6f 75 74 70 75 74  20 73 74 72 65 61 6d 2e  |r output stream.|
00064d40  20 49 66 20 62 69 74 20  37 20 69 73 20 73 65 74  | If bit 7 is set|
00064d50  2c 20 74 68 65 6e 20 74  68 65 20 70 72 69 6e 74  |, then the print|
00064d60  65 72 20 73 74 72 65 61  6d 20 70 61 73 73 65 73  |er stream passes|
00064d70  20 61 6c 6c 20 63 68 61  72 61 63 74 65 72 73 2e  | all characters.|
00064d80  0a 00 00 00 44 41 54 41  85 01 00 00 4f 53 5f 42  |....DATA....OS_B|
00064d90  79 74 65 20 31 39 31 20  20 52 65 61 64 2f 57 72  |yte 191  Read/Wr|
00064da0  69 74 65 20 73 65 72 69  61 6c 20 62 75 73 79 20  |ite serial busy |
00064db0  66 6c 61 67 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |flag.#Parent OS_|
00064dc0  42 79 74 65 49 6e 64 65  78 0a 3d 3e 09 52 30 20  |ByteIndex.=>.R0 |
00064dd0  3d 09 31 39 31 20 28 26  42 46 29 0a 09 52 31 20  |=.191 (&BF)..R1 |
00064de0  3d 09 45 4f 52 20 76 61  6c 75 65 0a 09 52 32 20  |=.EOR value..R2 |
00064df0  3d 09 41 4e 44 20 76 61  6c 75 65 0a 0a 3c 3d 09  |=.AND value..<=.|
00064e00  52 30 20 70 72 65 73 65  72 76 65 64 0a 09 52 31  |R0 preserved..R1|
00064e10  20 3d 09 76 61 6c 75 65  20 62 65 66 6f 72 65 20  | =.value before |
00064e20  62 65 69 6e 67 20 6f 76  65 72 77 72 69 74 74 65  |being overwritte|
00064e30  6e 0a 09 52 32 20 3d 09  73 65 72 69 61 6c 20 70  |n..R2 =.serial p|
00064e40  6f 72 74 20 73 74 61 74  65 20 28 73 65 65 20 3c  |ort state (see <|
00064e50  4f 53 5f 42 79 74 65 20  31 39 32 3d 3e 4f 53 5f  |OS_Byte 192=>OS_|
00064e60  42 79 74 65 31 39 32 3e  29 0a 20 20 20 20 20 20  |Byte192>).      |
00064e70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00064e90  20 20 20 20 20 20 20 20  20 20 20 20 0a 54 68 69  |            .Thi|
00064ea0  73 20 63 61 6c 6c 20 69  73 20 6f 62 73 6f 6c 65  |s call is obsole|
00064eb0  74 65 20 2d 20 6f 6e 20  74 68 65 20 42 42 43 2f  |te - on the BBC/|
00064ec0  4d 61 73 74 65 72 20 31  32 38 20 74 68 65 20 63  |Master 128 the c|
00064ed0  61 73 73 65 74 74 65 20  69 6e 74 65 72 66 61 63  |assette interfac|
00064ee0  65 20 61 6e 64 20 52 53  34 32 33 20 73 65 72 69  |e and RS423 seri|
00064ef0  61 6c 20 70 6f 72 74 20  73 68 61 72 65 64 20 68  |al port shared h|
00064f00  61 72 64 77 61 72 65 2e  0a 00 00 00 44 41 54 41  |ardware.....DATA|
00064f10  38 02 00 00 4f 53 5f 42  79 74 65 20 31 39 32 20  |8...OS_Byte 192 |
00064f20  20 52 65 61 64 20 73 65  72 69 61 6c 20 70 6f 72  | Read serial por|
00064f30  74 20 73 74 61 74 65 0a  23 50 61 72 65 6e 74 20  |t state.#Parent |
00064f40  4f 53 5f 42 79 74 65 49  6e 64 65 78 0a 3d 3e 09  |OS_ByteIndex.=>.|
00064f50  52 30 20 3d 09 31 39 32  20 28 26 43 30 29 0a 09  |R0 =.192 (&C0)..|
00064f60  52 31 20 3d 09 30 0a 09  52 32 20 3d 09 32 35 35  |R1 =.0..R2 =.255|
00064f70  0a 0a 3c 3d 09 52 30 20  3d 09 70 72 65 73 65 72  |..<=.R0 =.preser|
00064f80  76 65 64 0a 09 52 31 20  3d 09 63 6f 6d 6d 75 6e  |ved..R1 =.commun|
00064f90  69 63 61 74 69 6f 6e 73  20 73 74 61 74 65 0a 09  |ications state..|
00064fa0  52 32 20 3d 09 66 6c 61  73 68 20 63 6f 75 6e 74  |R2 =.flash count|
00064fb0  65 72 20 28 73 65 65 20  3c 4f 53 5f 42 79 74 65  |er (see <OS_Byte|
00064fc0  20 31 39 33 3d 3e 4f 53  5f 42 79 74 65 31 39 33  | 193=>OS_Byte193|
00064fd0  3e 29 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |>).             |
00064fe0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00065000  20 20 20 20 20 0a 54 68  69 73 20 63 61 6c 6c 20  |     .This call |
00065010  72 65 61 64 73 20 74 68  65 20 73 65 72 69 61 6c  |reads the serial|
00065020  20 70 6f 72 74 20 73 74  61 74 65 20 2d 20 65 71  | port state - eq|
00065030  75 69 76 61 6c 65 6e 74  20 74 6f 20 61 20 72 65  |uivalent to a re|
00065040  61 64 20 6f 70 65 72 61  74 69 6f 6e 20 77 69 74  |ad operation wit|
00065050  68 20 3c 4f 53 5f 42 79  74 65 20 31 35 36 3d 3e  |h <OS_Byte 156=>|
00065060  4f 53 5f 42 79 74 65 31  35 36 3e 2e 20 49 74 20  |OS_Byte156>. It |
00065070  69 73 20 70 72 6f 76 69  64 65 64 20 66 6f 72 20  |is provided for |
00065080  62 61 63 6b 77 61 72 64  73 20 63 6f 6d 70 61 74  |backwards compat|
00065090  69 62 69 6c 69 74 79 20  2d 20 75 73 65 20 3c 4f  |ibility - use <O|
000650a0  53 5f 53 65 72 69 61 6c  4f 70 20 30 20 61 6e 64  |S_SerialOp 0 and|
000650b0  20 31 3d 3e 4f 53 5f 53  65 72 69 61 6c 4f 70 3e  | 1=>OS_SerialOp>|
000650c0  20 69 6e 73 74 65 61 64  2e 20 54 68 69 73 20 63  | instead. This c|
000650d0  61 6c 6c 20 73 68 6f 75  6c 64 20 6e 6f 74 20 62  |all should not b|
000650e0  65 20 75 73 65 64 20 74  6f 20 77 72 69 74 65 20  |e used to write |
000650f0  74 68 65 20 76 61 6c 75  65 20 2d 20 64 6f 69 6e  |the value - doin|
00065100  67 20 73 6f 20 77 6f 75  6c 64 20 6d 61 6b 65 20  |g so would make |
00065110  74 68 65 20 76 61 6c 75  65 20 69 6e 20 6d 65 6d  |the value in mem|
00065120  6f 72 79 20 69 6e 63 6f  6e 73 69 73 74 65 6e 74  |ory inconsistent|
00065130  20 77 69 74 68 20 74 68  65 20 68 61 72 64 77 61  | with the hardwa|
00065140  72 65 2e 0a 44 41 54 41  67 01 00 00 4f 53 5f 42  |re..DATAg...OS_B|
00065150  79 74 65 20 31 39 38 20  20 52 65 61 64 2f 57 72  |yte 198  Read/Wr|
00065160  69 74 65 20 2a 45 78 65  63 20 66 69 6c 65 20 68  |ite *Exec file h|
00065170  61 6e 64 6c 65 0a 23 50  61 72 65 6e 74 20 4f 53  |andle.#Parent OS|
00065180  5f 42 79 74 65 49 6e 64  65 78 0a 3d 3e 09 52 30  |_ByteIndex.=>.R0|
00065190  20 3d 09 31 39 38 0a 09  52 31 20 3d 09 45 4f 52  | =.198..R1 =.EOR|
000651a0  20 76 61 6c 75 65 0a 09  52 32 20 3d 09 41 4e 44  | value..R2 =.AND|
000651b0  20 76 61 6c 75 65 0a 0a  3c 3d 09 52 30 20 70 72  | value..<=.R0 pr|
000651c0  65 73 65 72 76 65 64 0a  09 52 31 20 3d 09 70 72  |eserved..R1 =.pr|
000651d0  65 76 69 6f 75 73 20 66  69 6c 65 20 68 61 6e 64  |evious file hand|
000651e0  6c 65 0a 09 52 32 20 63  6f 72 72 75 70 74 65 64  |le..R2 corrupted|
000651f0  0a 0a 54 68 69 73 20 63  61 6c 6c 20 72 65 61 64  |..This call read|
00065200  73 20 6f 72 20 73 65 74  73 20 74 68 65 20 7b 66  |s or sets the {f|
00065210  43 6f 64 65 7d 2a 45 78  65 63 7b 66 7d 20 66 69  |Code}*Exec{f} fi|
00065220  6c 65 20 68 61 6e 64 6c  65 2e 20 41 20 68 61 6e  |le handle. A han|
00065230  64 6c 65 20 6f 66 20 30  20 6d 65 61 6e 73 20 74  |dle of 0 means t|
00065240  68 61 74 20 45 78 65 63  20 69 73 20 64 69 73 61  |hat Exec is disa|
00065250  62 6c 65 64 2e 20 41 20  6e 6f 6e 2d 7a 65 72 6f  |bled. A non-zero|
00065260  20 68 61 6e 64 6c 65 20  6d 65 61 6e 73 20 74 68  | handle means th|
00065270  61 74 20 45 78 65 63 20  69 73 20 65 6e 61 62 6c  |at Exec is enabl|
00065280  65 64 2c 20 61 6e 64 20  68 65 6e 63 65 20 69 73  |ed, and hence is|
00065290  20 74 68 65 20 63 75 72  72 65 6e 74 20 69 6e 70  | the current inp|
000652a0  75 74 20 73 74 72 65 61  6d 2e 0a 00 44 41 54 41  |ut stream...DATA|
000652b0  3e 02 00 00 4f 53 5f 42  79 74 65 20 31 39 39 20  |>...OS_Byte 199 |
000652c0  20 52 65 61 64 2f 57 72  69 74 65 20 2a 53 70 6f  | Read/Write *Spo|
000652d0  6f 6c 20 66 69 6c 65 20  68 61 6e 64 6c 65 0a 23  |ol file handle.#|
000652e0  50 61 72 65 6e 74 20 4f  53 5f 42 79 74 65 49 6e  |Parent OS_ByteIn|
000652f0  64 65 78 0a 3d 3e 09 52  30 20 3d 09 31 39 39 0a  |dex.=>.R0 =.199.|
00065300  09 52 31 20 3d 09 45 4f  52 20 76 61 6c 75 65 0a  |.R1 =.EOR value.|
00065310  09 52 32 20 3d 09 41 4e  44 20 76 61 6c 75 65 0a  |.R2 =.AND value.|
00065320  0a 3c 3d 09 52 30 20 70  72 65 73 65 72 76 65 64  |.<=.R0 preserved|
00065330  0a 09 52 31 20 3d 09 70  72 65 76 69 6f 75 73 20  |..R1 =.previous |
00065340  66 69 6c 65 20 68 61 6e  64 6c 65 0a 09 52 32 20  |file handle..R2 |
00065350  63 6f 72 72 75 70 74 65  64 0a 0a 54 68 69 73 20  |corrupted..This |
00065360  63 61 6c 6c 20 72 65 61  64 73 20 6f 72 20 73 65  |call reads or se|
00065370  74 73 20 74 68 65 20 7b  66 43 6f 64 65 7d 2a 53  |ts the {fCode}*S|
00065380  70 6f 6f 6c 7b 66 7d 20  66 69 6c 65 20 68 61 6e  |pool{f} file han|
00065390  64 6c 65 2e 20 41 20 68  61 6e 64 6c 65 20 6f 66  |dle. A handle of|
000653a0  20 30 20 6d 65 61 6e 73  20 74 68 61 74 20 73 70  | 0 means that sp|
000653b0  6f 6f 6c 69 6e 67 20 69  73 20 64 69 73 61 62 6c  |ooling is disabl|
000653c0  65 64 2c 20 61 20 6e 6f  6e 2d 7a 65 72 6f 20 68  |ed, a non-zero h|
000653d0  61 6e 64 6c 65 20 6d 65  61 6e 73 20 74 68 61 74  |andle means that|
000653e0  20 73 70 6f 6f 6c 69 6e  67 20 69 73 20 65 6e 61  | spooling is ena|
000653f0  62 6c 65 64 20 28 75 6e  6c 65 73 73 20 64 69 73  |bled (unless dis|
00065400  61 62 6c 65 64 20 77 69  74 68 20 3c 4f 53 5f 42  |abled with <OS_B|
00065410  79 74 65 20 33 3d 3e 4f  53 5f 42 79 74 65 30 30  |yte 3=>OS_Byte00|
00065420  33 3e 29 2e 20 43 68 61  6e 67 69 6e 67 20 74 68  |3>). Changing th|
00065430  65 20 73 70 6f 6f 6c 20  68 61 6e 64 6c 65 20 74  |e spool handle t|
00065440  6f 20 61 6e 20 69 6e 76  61 6c 69 64 20 66 69 6c  |o an invalid fil|
00065450  65 20 68 61 6e 64 6c 65  20 63 61 6e 20 72 65 61  |e handle can rea|
00065460  6c 6c 79 20 72 75 69 6e  20 79 6f 75 72 20 64 61  |lly ruin your da|
00065470  79 20 28 65 76 65 72 79  20 63 61 6c 6c 20 74 6f  |y (every call to|
00065480  20 3c 4f 53 5f 57 72 69  74 65 43 3e 20 7b 2f 7d  | <OS_WriteC> {/}|
00065490  65 74 63 2e 7b 2f 7d 20  77 69 6c 6c 20 72 65 74  |etc.{/} will ret|
000654a0  75 72 6e 20 61 6e 20 65  72 72 6f 72 2c 20 69 6e  |urn an error, in|
000654b0  63 6c 75 64 69 6e 67 20  74 68 65 20 63 61 6c 6c  |cluding the call|
000654c0  73 20 75 73 65 64 20 74  6f 20 72 65 70 6f 72 74  |s used to report|
000654d0  20 74 68 65 20 65 72 72  6f 72 20 74 6f 20 73 63  | the error to sc|
000654e0  72 65 65 6e 2e 2e 2e 29  2e 0a 00 00 44 41 54 41  |reen...)....DATA|
000654f0  a5 01 00 00 4f 53 5f 42  79 74 65 20 32 30 31 20  |....OS_Byte 201 |
00065500  20 52 65 61 64 2f 57 72  69 74 65 20 6b 65 79 62  | Read/Write keyb|
00065510  6f 61 72 64 20 64 69 73  61 62 6c 65 20 66 6c 61  |oard disable fla|
00065520  67 0a 23 50 61 72 65 6e  74 20 4f 53 5f 42 79 74  |g.#Parent OS_Byt|
00065530  65 49 6e 64 65 78 0a 3d  3e 09 52 30 20 3d 09 32  |eIndex.=>.R0 =.2|
00065540  30 31 20 28 26 43 39 29  0a 09 52 31 20 3d 09 45  |01 (&C9)..R1 =.E|
00065550  4f 52 20 76 61 6c 75 65  0a 09 52 32 20 3d 09 41  |OR value..R2 =.A|
00065560  4e 44 20 76 61 6c 75 65  0a 0a 3c 3d 09 52 30 20  |ND value..<=.R0 |
00065570  70 72 65 73 65 72 76 65  64 0a 09 52 31 20 3d 09  |preserved..R1 =.|
00065580  66 6c 61 67 20 62 65 66  6f 72 65 20 62 65 69 6e  |flag before bein|
00065590  67 20 6f 76 65 72 77 72  69 74 74 65 6e 0a 09 52  |g overwritten..R|
000655a0  32 20 63 6f 72 72 75 70  74 65 64 0a 20 20 20 20  |2 corrupted.    |
000655b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000655d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0a 54  |              .T|
000655e0  68 69 73 20 63 61 6c 6c  20 65 6e 61 62 6c 65 73  |his call enables|
000655f0  20 6f 72 20 64 69 73 61  62 6c 65 73 20 74 68 65  | or disables the|
00065600  20 6b 65 79 62 6f 61 72  64 2e 20 30 20 77 69 6c  | keyboard. 0 wil|
00065610  6c 20 65 6e 61 62 6c 65  20 74 68 65 20 6b 65 79  |l enable the key|
00065620  62 6f 61 72 64 20 28 61  73 20 6e 6f 72 6d 61 6c  |board (as normal|
00065630  29 2e 20 41 6e 79 20 6f  74 68 65 72 20 76 61 6c  |). Any other val|
00065640  75 65 20 77 69 6c 6c 20  73 74 6f 70 20 74 68 65  |ue will stop the|
00065650  20 69 6e 74 65 72 75 70  74 20 72 6f 75 74 69 6e  | interupt routin|
00065660  65 20 69 6e 73 65 72 74  69 6e 67 20 6b 65 79 70  |e inserting keyp|
00065670  72 65 73 73 65 73 20 69  6e 74 6f 20 74 68 65 20  |resses into the |
00065680  6b 65 79 62 6f 61 72 64  20 62 75 66 66 65 72 2e  |keyboard buffer.|
00065690  0a 00 00 00 44 41 54 41  1c 02 00 00 4f 53 5f 42  |....DATA....OS_B|
000656a0  79 74 65 20 32 30 33 20  20 52 65 61 64 2f 57 72  |yte 203  Read/Wr|
000656b0  69 74 65 20 73 65 72 69  61 6c 20 62 75 66 66 65  |ite serial buffe|
000656c0  72 20 74 68 72 65 73 68  6f 6c 64 0a 23 50 61 72  |r threshold.#Par|
000656d0  65 6e 74 20 4f 53 5f 42  79 74 65 49 6e 64 65 78  |ent OS_ByteIndex|
000656e0  0a 3d 3e 09 52 30 20 3d  09 32 30 33 20 28 26 43  |.=>.R0 =.203 (&C|
000656f0  42 29 0a 09 52 31 20 3d  09 45 4f 52 20 76 61 6c  |B)..R1 =.EOR val|
00065700  75 65 0a 09 52 32 20 3d  09 41 4e 44 20 76 61 6c  |ue..R2 =.AND val|
00065710  75 65 0a 0a 3c 3d 09 52  30 20 70 72 65 73 65 72  |ue..<=.R0 preser|
00065720  76 65 64 0a 09 52 31 20  3d 09 76 61 6c 75 65 20  |ved..R1 =.value |
00065730  62 65 66 6f 72 65 20 62  65 69 6e 67 20 6f 76 65  |before being ove|
00065740  72 77 72 69 74 74 65 6e  0a 09 52 32 20 3d 09 73  |rwritten..R2 =.s|
00065750  65 72 69 61 6c 20 69 67  6e 6f 72 65 20 66 6c 61  |erial ignore fla|
00065760  67 20 28 73 65 65 20 3c  4f 53 5f 42 79 74 65 20  |g (see <OS_Byte |
00065770  32 30 34 3d 3e 4f 53 5f  42 79 74 65 32 30 34 3e  |204=>OS_Byte204>|
00065780  29 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |).              |
00065790  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000657b0  20 20 20 20 0a 54 68 69  73 20 63 61 6c 6c 20 72  |    .This call r|
000657c0  65 61 64 73 20 6f 72 20  73 65 74 73 20 74 68 65  |eads or sets the|
000657d0  20 73 65 72 69 61 6c 20  62 75 66 66 65 72 20 74  | serial buffer t|
000657e0  68 72 65 73 68 6f 6c 64  2e 20 57 68 69 6c 65 20  |hreshold. While |
000657f0  74 68 65 20 66 72 65 65  20 73 70 61 63 65 20 69  |the free space i|
00065800  73 20 62 65 6c 6f 77 20  74 68 69 73 20 76 61 6c  |s below this val|
00065810  75 65 20 74 68 65 20 73  65 72 69 61 6c 20 68 61  |ue the serial ha|
00065820  72 77 61 72 65 20 77 69  6c 6c 20 61 74 74 65 6d  |rware will attem|
00065830  70 74 20 74 6f 20 68 61  6c 74 20 69 6e 63 6f 6d  |pt to halt incom|
00065840  69 6e 67 20 64 61 74 61  2e 20 3c 4f 53 5f 53 65  |ing data. <OS_Se|
00065850  72 69 61 6c 4f 70 20 30  3d 3e 4f 53 5f 53 65 72  |rialOp 0=>OS_Ser|
00065860  69 61 6c 4f 70 30 3e 20  63 6f 6e 74 72 6f 6c 73  |ialOp0> controls|
00065870  20 74 68 65 20 68 61 6e  64 73 68 61 6b 69 6e 67  | the handshaking|
00065880  20 6d 65 74 68 6f 64 2e  20 54 68 65 20 64 65 66  | method. The def|
00065890  61 75 6c 74 20 74 68 72  65 73 68 6f 6c 64 20 69  |ault threshold i|
000658a0  73 20 39 20 63 68 61 72  61 63 74 65 72 73 2e 0a  |s 9 characters..|
000658b0  44 41 54 41 d3 01 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
000658c0  32 30 34 20 20 52 65 61  64 2f 57 72 69 74 65 20  |204  Read/Write |
000658d0  73 65 72 69 61 6c 20 69  67 6e 6f 72 65 20 66 6c  |serial ignore fl|
000658e0  61 67 0a 23 50 61 72 65  6e 74 20 4f 53 5f 42 79  |ag.#Parent OS_By|
000658f0  74 65 49 6e 64 65 78 0a  3d 3e 09 52 30 20 3d 09  |teIndex.=>.R0 =.|
00065900  32 30 34 20 28 26 43 43  29 0a 09 52 31 20 3d 09  |204 (&CC)..R1 =.|
00065910  45 4f 52 20 76 61 6c 75  65 0a 09 52 32 20 3d 09  |EOR value..R2 =.|
00065920  41 4e 44 20 76 61 6c 75  65 0a 0a 3c 3d 09 52 30  |AND value..<=.R0|
00065930  20 70 72 65 73 65 72 76  65 64 0a 09 52 31 20 3d  | preserved..R1 =|
00065940  09 66 6c 61 67 20 62 65  66 6f 72 65 20 62 65 69  |.flag before bei|
00065950  6e 67 20 6f 76 65 72 77  72 69 74 74 65 6e 0a 09  |ng overwritten..|
00065960  52 32 20 63 6f 72 72 75  70 74 65 64 0a 20 20 20  |R2 corrupted.   |
00065970  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00065990  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
000659a0  54 68 69 73 20 63 61 6c  6c 20 65 6e 61 62 6c 65  |This call enable|
000659b0  73 20 6f 72 20 64 69 73  61 62 6c 65 73 20 73 65  |s or disables se|
000659c0  72 69 61 6c 20 69 6e 70  75 74 20 62 75 66 66 65  |rial input buffe|
000659d0  72 69 6e 67 2e 20 30 20  77 69 6c 6c 20 65 6e 61  |ring. 0 will ena|
000659e0  62 6c 65 20 62 75 66 66  65 72 69 6e 67 20 6f 66  |ble buffering of|
000659f0  20 72 65 63 69 65 76 65  64 20 64 61 74 61 2e 20  | recieved data. |
00065a00  41 6e 79 20 6f 74 68 65  72 20 76 61 6c 75 65 20  |Any other value |
00065a10  77 69 6c 6c 20 70 72 65  76 65 6e 74 20 62 75 66  |will prevent buf|
00065a20  66 65 72 69 6e 67 2c 20  62 75 74 20 65 72 72 6f  |fering, but erro|
00065a30  72 73 20 77 69 6c 6c 20  73 74 69 6c 6c 20 67 65  |rs will still ge|
00065a40  6e 65 72 61 74 65 20 3c  65 76 65 6e 74 73 3d 3e  |nerate <events=>|
00065a50  65 76 65 6e 74 5f 37 3e  20 69 66 20 65 6e 61 62  |event_7> if enab|
00065a60  6c 65 64 20 77 69 74 68  20 3c 4f 53 5f 42 79 74  |led with <OS_Byt|
00065a70  65 20 31 34 3d 3e 4f 53  5f 42 79 74 65 30 31 34  |e 14=>OS_Byte014|
00065a80  3e 2e 0a 00 44 41 54 41  53 01 00 00 4f 53 5f 42  |>...DATAS...OS_B|
00065a90  79 74 65 20 32 31 31 20  20 52 65 61 64 2f 57 72  |yte 211  Read/Wr|
00065aa0  69 74 65 20 62 65 6c 6c  20 63 68 61 6e 6e 65 6c  |ite bell channel|
00065ab0  0a 23 50 61 72 65 6e 74  20 4f 53 5f 42 79 74 65  |.#Parent OS_Byte|
00065ac0  49 6e 64 65 78 0a 3d 3e  09 52 30 20 3d 09 32 31  |Index.=>.R0 =.21|
00065ad0  31 20 28 26 44 43 29 0a  09 52 31 20 3d 09 45 4f  |1 (&DC)..R1 =.EO|
00065ae0  52 20 76 61 6c 75 65 0a  09 52 32 20 3d 09 41 4e  |R value..R2 =.AN|
00065af0  44 20 76 61 6c 75 65 0a  0a 3c 3d 09 52 30 20 70  |D value..<=.R0 p|
00065b00  72 65 73 65 72 76 65 64  0a 09 52 31 20 3d 09 70  |reserved..R1 =.p|
00065b10  72 65 76 69 6f 75 73 20  63 68 61 6e 6e 65 6c 0a  |revious channel.|
00065b20  09 52 32 20 3d 09 62 65  6c 6c 20 76 6f 6c 75 6d  |.R2 =.bell volum|
00065b30  65 20 28 73 65 65 20 3c  4f 53 5f 42 79 74 65 20  |e (see <OS_Byte |
00065b40  32 31 32 3d 3e 4f 53 5f  42 79 74 65 32 31 32 3e  |212=>OS_Byte212>|
00065b50  29 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |).              |
00065b60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00065b80  20 20 20 20 0a 54 68 69  73 20 63 61 6c 6c 20 72  |    .This call r|
00065b90  65 61 64 73 20 6f 72 20  73 65 74 73 20 74 68 65  |eads or sets the|
00065ba0  20 73 6f 75 6e 64 20 63  68 61 6e 6e 65 6c 20 66  | sound channel f|
00065bb0  6f 72 20 74 68 65 20 62  65 6c 6c 2e 20 54 68 65  |or the bell. The|
00065bc0  20 64 65 66 61 75 6c 74  20 63 68 61 6e 6e 65 6c  | default channel|
00065bd0  20 69 73 20 31 2e 0a 00  44 41 54 41 ab 01 00 00  | is 1...DATA....|
00065be0  4f 53 5f 42 79 74 65 20  32 31 32 20 20 52 65 61  |OS_Byte 212  Rea|
00065bf0  64 2f 57 72 69 74 65 20  62 65 6c 6c 20 76 6f 6c  |d/Write bell vol|
00065c00  75 6d 65 0a 23 50 61 72  65 6e 74 20 4f 53 5f 42  |ume.#Parent OS_B|
00065c10  79 74 65 49 6e 64 65 78  0a 3d 3e 09 52 30 20 3d  |yteIndex.=>.R0 =|
00065c20  09 32 31 32 20 28 26 44  34 29 0a 09 52 31 20 3d  |.212 (&D4)..R1 =|
00065c30  09 45 4f 52 20 76 61 6c  75 65 0a 09 52 32 20 3d  |.EOR value..R2 =|
00065c40  09 41 4e 44 20 76 61 6c  75 65 0a 0a 3c 3d 09 52  |.AND value..<=.R|
00065c50  30 20 70 72 65 73 65 72  76 65 64 0a 09 52 31 20  |0 preserved..R1 |
00065c60  3d 09 70 72 65 76 69 6f  75 73 20 76 6f 6c 75 6d  |=.previous volum|
00065c70  65 0a 09 52 32 20 3d 09  62 65 6c 6c 20 66 72 65  |e..R2 =.bell fre|
00065c80  71 75 65 6e 63 79 20 28  73 65 65 20 3c 4f 53 5f  |quency (see <OS_|
00065c90  42 79 74 65 20 32 31 33  3d 3e 4f 53 5f 42 79 74  |Byte 213=>OS_Byt|
00065ca0  65 32 31 33 3e 29 0a 20  20 20 20 20 20 20 20 20  |e213>).         |
00065cb0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00065cd0  20 20 20 20 20 20 20 20  20 0a 54 68 69 73 20 63  |         .This c|
00065ce0  61 6c 6c 20 72 65 61 64  73 20 6f 72 20 73 65 74  |all reads or set|
00065cf0  73 20 74 68 65 20 62 65  6c 6c 20 76 6f 6c 75 6d  |s the bell volum|
00065d00  65 2c 20 74 68 65 20 72  61 6e 67 65 20 31 32 38  |e, the range 128|
00065d10  20 28 6c 6f 75 64 29 20  2d 20 32 34 38 20 28 73  | (loud) - 248 (s|
00065d20  6f 66 74 29 2e 20 54 68  65 20 64 65 66 61 75 6c  |oft). The defaul|
00065d30  74 20 76 6f 6c 75 6d 65  20 69 73 20 26 39 30 20  |t volume is &90 |
00065d40  66 6f 72 20 7b 66 43 6f  64 65 7d 2a 43 6f 6e 66  |for {fCode}*Conf|
00065d50  69 67 75 72 65 20 4c 6f  75 64 7b 66 7d 2c 20 26  |igure Loud{f}, &|
00065d60  44 30 20 66 6f 72 20 7b  66 43 6f 64 65 7d 2a 43  |D0 for {fCode}*C|
00065d70  6f 6e 66 69 67 75 72 65  20 51 75 69 65 74 7b 66  |onfigure Quiet{f|
00065d80  7d 2e 0a 00 44 41 54 41  9c 8c 00 00 44 72 61 77  |}...DATA....Draw|
00065d90  c9 00 00 00 00 00 00 00  44 72 61 77 20 20 20 20  |........Draw    |
00065da0  20 20 20 20 7a 0a 00 00  10 07 00 00 7a 81 04 00  |    z.......z...|
00065db0  72 cb 03 00 00 00 00 00  18 00 00 00 01 48 6f 6d  |r............Hom|
00065dc0  65 72 74 6f 6e 2e 42 6f  6c 64 00 00 0b 00 00 00  |erton.Bold......|
00065dd0  58 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |X...............|
00065de0  00 00 00 00 00 06 00 00  11 01 00 00 00 00 f0 3f  |...............?|
00065df0  00 00 00 00 02 00 00 00  00 00 00 00 00 00 00 00  |................|
00065e00  00 00 00 00 00 00 00 00  01 00 00 00 01 00 00 00  |................|
00065e10  01 00 00 00 00 00 00 00  01 00 00 00 80 00 00 00  |................|
00065e20  88 13 00 00 06 00 00 00  a0 81 00 00 7a 0a 00 00  |............z...|
00065e30  10 07 00 00 7a 81 04 00  72 cb 03 00 20 20 20 20  |....z...r...    |
00065e40  20 20 20 20 20 20 20 20  02 00 00 00 64 00 00 00  |        ....d...|
00065e50  7a 0a 00 00 b2 04 02 00  7a 81 04 00 32 07 02 00  |z.......z...2...|
00065e60  ff ff ff ff 00 00 00 00  80 02 00 00 c2 00 10 20  |............... |
00065e70  00 00 00 00 06 00 00 00  00 09 00 00 00 09 00 00  |................|
00065e80  00 09 00 00 00 09 00 00  00 09 00 00 00 09 00 00  |................|
00065e90  02 00 00 00 7a 81 04 00  f2 05 02 00 08 00 00 00  |....z...........|
00065ea0  8e 05 00 00 f2 05 02 00  00 00 00 00 02 00 00 00  |................|
00065eb0  64 00 00 00 d6 73 01 00  10 07 00 00 56 76 01 00  |d....s......Vv..|
00065ec0  f2 05 02 00 ff ff ff ff  00 00 00 00 80 02 00 00  |................|
00065ed0  c2 00 10 20 00 00 00 00  06 00 00 00 00 09 00 00  |... ............|
00065ee0  00 09 00 00 00 09 00 00  00 09 00 00 00 09 00 00  |................|
00065ef0  00 09 00 00 02 00 00 00  16 75 01 00 f2 05 02 00  |.........u......|
00065f00  08 00 00 00 16 75 01 00  10 07 00 00 00 00 00 00  |.....u..........|
00065f10  0c 00 00 00 5c 00 00 00  18 4b 04 00 42 99 02 00  |....\....K..B...|
00065f20  17 71 04 00 7f 4c 03 00  00 00 00 00 00 00 ff ff  |.q...L..........|
00065f30  00 00 01 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00065f40  00 00 00 00 00 00 00 00  00 ff ff ff 01 00 00 00  |................|
00065f50  00 28 00 00 00 28 00 00  e4 53 04 00 0e 4f 03 00  |.(...(...S...O..|
00065f60  4b 65 79 62 6f 61 72 64  00 00 00 00 06 00 00 00  |Keyboard........|
00065f70  48 04 00 00 de 57 03 00  ae 14 00 00 62 2d 04 00  |H....W......b-..|
00065f80  ea b0 01 00 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
00065f90  06 00 00 00 e8 03 00 00  de 57 03 00 f6 3b 00 00  |.........W...;..|
00065fa0  62 2d 04 00 ea b0 01 00  20 20 20 20 20 20 20 20  |b-......        |
00065fb0  20 20 20 20 02 00 00 00  6c 00 00 00 de 57 03 00  |    ....l....W..|
00065fc0  f6 3b 00 00 62 2d 04 00  c4 7b 01 00 ff ff ff ff  |.;..b-...{......|
00065fd0  00 00 00 00 f0 00 00 00  4c 00 a0 a0 02 00 00 00  |........L.......|
00065fe0  56 58 03 00 4c 7b 01 00  08 00 00 00 ea 2c 04 00  |VX..L{.......,..|
00065ff0  4c 7b 01 00 08 00 00 00  ea 2c 04 00 6e 3c 00 00  |L{.......,..n<..|
00066000  08 00 00 00 56 58 03 00  6e 3c 00 00 08 00 00 00  |....VX..n<......|
00066010  56 58 03 00 4c 7b 01 00  05 00 00 00 00 00 00 00  |VX..L{..........|
00066020  02 00 00 00 6c 00 00 00  c0 77 03 00 8a 10 01 00  |....l....w......|
00066030  34 a3 03 00 e2 5b 01 00  ff ff ff ff 00 00 00 00  |4....[..........|
00066040  f0 00 00 00 4c 00 a0 a0  02 00 00 00 38 78 03 00  |....L.......8x..|
00066050  6a 5b 01 00 08 00 00 00  bc a2 03 00 6a 5b 01 00  |j[..........j[..|
00066060  08 00 00 00 bc a2 03 00  02 11 01 00 08 00 00 00  |................|
00066070  38 78 03 00 02 11 01 00  08 00 00 00 38 78 03 00  |8x..........8x..|
00066080  6a 5b 01 00 05 00 00 00  00 00 00 00 02 00 00 00  |j[..............|
00066090  6c 00 00 00 e6 ac 03 00  8a 10 01 00 5a d8 03 00  |l...........Z...|
000660a0  e2 5b 01 00 ff ff ff ff  00 00 00 00 f0 00 00 00  |.[..............|
000660b0  4c 00 a0 a0 02 00 00 00  5e ad 03 00 6a 5b 01 00  |L.......^...j[..|
000660c0  08 00 00 00 e2 d7 03 00  6a 5b 01 00 08 00 00 00  |........j[......|
000660d0  e2 d7 03 00 02 11 01 00  08 00 00 00 5e ad 03 00  |............^...|
000660e0  02 11 01 00 08 00 00 00  5e ad 03 00 6a 5b 01 00  |........^...j[..|
000660f0  05 00 00 00 00 00 00 00  02 00 00 00 6c 00 00 00  |............l...|
00066100  0a e2 03 00 8a 10 01 00  7e 0d 04 00 e2 5b 01 00  |........~....[..|
00066110  ff ff ff ff 00 00 00 00  f0 00 00 00 4c 00 a0 a0  |............L...|
00066120  02 00 00 00 82 e2 03 00  6a 5b 01 00 08 00 00 00  |........j[......|
00066130  06 0d 04 00 6a 5b 01 00  08 00 00 00 06 0d 04 00  |....j[..........|
00066140  02 11 01 00 08 00 00 00  82 e2 03 00 02 11 01 00  |................|
00066150  08 00 00 00 82 e2 03 00  6a 5b 01 00 05 00 00 00  |........j[......|
00066160  00 00 00 00 02 00 00 00  44 00 00 00 56 58 03 00  |........D...VX..|
00066170  a8 f0 00 00 ea 2c 04 00  98 f1 00 00 ff ff ff ff  |.....,..........|
00066180  00 00 00 00 f0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
00066190  56 58 03 00 20 f1 00 00  08 00 00 00 ea 2c 04 00  |VX.. ........,..|
000661a0  20 f1 00 00 00 00 00 00  02 00 00 00 5c 00 00 00  | ...........\...|
000661b0  4c a2 03 00 20 7b 01 00  f1 e2 03 00 ea b0 01 00  |L... {..........|
000661c0  ff ff ff ff 00 00 00 00  f0 00 00 00 40 00 a0 a0  |............@...|
000661d0  02 00 00 00 bc a2 03 00  4c 7b 01 00 08 00 00 00  |........L{......|
000661e0  fe b7 03 00 72 b0 01 00  08 00 00 00 40 cd 03 00  |....r.......@...|
000661f0  72 b0 01 00 08 00 00 00  82 e2 03 00 4c 7b 01 00  |r...........L{..|
00066200  00 00 00 00 02 00 00 00  44 00 00 00 5e ad 03 00  |........D...^...|
00066210  16 90 01 00 e2 d7 03 00  06 91 01 00 ff ff ff ff  |................|
00066220  00 00 00 00 f0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
00066230  5e ad 03 00 8e 90 01 00  08 00 00 00 e2 d7 03 00  |^...............|
00066240  8e 90 01 00 00 00 00 00  02 00 00 00 44 00 00 00  |............D...|
00066250  5e ad 03 00 b8 9a 01 00  e2 d7 03 00 a8 9b 01 00  |^...............|
00066260  ff ff ff ff 00 00 00 00  f0 00 00 00 40 00 a0 a0  |............@...|
00066270  02 00 00 00 5e ad 03 00  30 9b 01 00 08 00 00 00  |....^...0.......|
00066280  e2 d7 03 00 30 9b 01 00  00 00 00 00 02 00 00 00  |....0...........|
00066290  44 00 00 00 fe b7 03 00  58 a5 01 00 40 cd 03 00  |D.......X...@...|
000662a0  48 a6 01 00 ff ff ff ff  00 00 00 00 f0 00 00 00  |H...............|
000662b0  40 00 a0 a0 02 00 00 00  fe b7 03 00 d0 a5 01 00  |@...............|
000662c0  08 00 00 00 40 cd 03 00  d0 a5 01 00 00 00 00 00  |....@...........|
000662d0  01 00 00 00 38 00 00 00  7a 86 03 00 e6 2f 01 00  |....8...z..../..|
000662e0  3a 97 03 00 26 49 01 00  00 00 00 00 00 ff ff ff  |:...&I..........|
000662f0  01 00 00 00 80 20 00 00  80 20 00 00 fa 85 03 00  |..... ... ......|
00066300  e6 30 01 00 39 00 00 00  01 00 00 00 38 00 00 00  |.0..9.......8...|
00066310  d2 b2 03 00 e6 2f 01 00  92 d4 03 00 26 49 01 00  |...../......&I..|
00066320  00 00 00 00 00 ff ff ff  01 00 00 00 80 20 00 00  |............. ..|
00066330  80 20 00 00 52 b1 03 00  e6 30 01 00 31 30 00 00  |. ..R....0..10..|
00066340  01 00 00 00 38 00 00 00  24 eb 03 00 66 30 01 00  |....8...$...f0..|
00066350  64 08 04 00 a6 48 01 00  00 00 00 00 00 ff ff ff  |d....H..........|
00066360  01 00 00 00 80 20 00 00  80 20 00 00 a4 e9 03 00  |..... ... ......|
00066370  e6 30 01 00 31 31 00 00  01 00 00 00 3c 00 00 00  |.0..11......<...|
00066380  36 76 03 00 ae 14 00 00  36 f2 03 00 ae 33 00 00  |6v......6....3..|
00066390  00 00 00 00 00 ff ff ff  01 00 00 00 00 28 00 00  |.............(..|
000663a0  00 28 00 00 36 74 03 00  ee 15 00 00 4d 6f 75 73  |.(..6t......Mous|
000663b0  65 00 00 00 02 00 00 00  64 00 00 00 d2 0e 03 00  |e.......d.......|
000663c0  10 07 00 00 52 11 03 00  f2 05 02 00 ff ff ff ff  |....R...........|
000663d0  00 00 00 00 80 02 00 00  c2 00 10 20 00 00 00 00  |........... ....|
000663e0  06 00 00 00 00 09 00 00  00 09 00 00 00 09 00 00  |................|
000663f0  00 09 00 00 00 09 00 00  00 09 00 00 02 00 00 00  |................|
00066400  12 10 03 00 f2 05 02 00  08 00 00 00 12 10 03 00  |................|
00066410  10 07 00 00 00 00 00 00  06 00 00 00 c4 0f 00 00  |................|
00066420  c2 68 00 00 ae 14 00 00  ca 2f 01 00 b2 f0 01 00  |.h......./......|
00066430  20 20 20 20 20 20 20 20  20 20 20 20 01 00 00 00  |            ....|
00066440  40 00 00 00 2e 78 00 00  ae 14 00 00 2e 1a 01 00  |@....x..........|
00066450  6e 34 00 00 00 00 00 00  00 ff ff ff 01 00 00 00  |n4..............|
00066460  00 28 00 00 00 28 00 00  ee 76 00 00 ee 15 00 00  |.(...(...v......|
00066470  43 6f 6e 74 72 6f 6c 73  00 00 00 00 06 00 00 00  |Controls........|
00066480  60 0f 00 00 c2 68 00 00  d2 3f 00 00 ca 2f 01 00  |`....h...?.../..|
00066490  b2 f0 01 00 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
000664a0  02 00 00 00 f4 00 00 00  c2 68 00 00 42 5b 01 00  |.........h..B[..|
000664b0  12 a2 00 00 92 94 01 00  ff ff ff ff 00 00 00 00  |................|
000664c0  a0 00 00 00 40 00 a0 a0  02 00 00 00 52 7e 00 00  |....@.......R~..|
000664d0  42 94 01 00 08 00 00 00  96 93 00 00 42 94 01 00  |B...........B...|
000664e0  06 00 00 00 aa 9a 00 00  42 94 01 00 c2 a1 00 00  |........B.......|
000664f0  2e 8d 01 00 c2 a1 00 00  16 86 01 00 08 00 00 00  |................|
00066500  c2 a1 00 00 be 69 01 00  06 00 00 00 c2 a1 00 00  |.....i..........|
00066510  aa 62 01 00 aa 9a 00 00  92 5b 01 00 96 93 00 00  |.b.......[......|
00066520  92 5b 01 00 08 00 00 00  3e 77 00 00 92 5b 01 00  |.[......>w...[..|
00066530  06 00 00 00 26 70 00 00  92 5b 01 00 12 69 00 00  |....&p...[...i..|
00066540  aa 62 01 00 12 69 00 00  be 69 01 00 08 00 00 00  |.b...i...i......|
00066550  12 69 00 00 16 86 01 00  06 00 00 00 12 69 00 00  |.i...........i..|
00066560  2e 8d 01 00 26 70 00 00  42 94 01 00 3e 77 00 00  |....&p..B...>w..|
00066570  42 94 01 00 08 00 00 00  52 7e 00 00 42 94 01 00  |B.......R~..B...|
00066580  08 00 00 00 52 7e 00 00  42 94 01 00 05 00 00 00  |....R~..B.......|
00066590  00 00 00 00 02 00 00 00  f4 00 00 00 9e af 00 00  |................|
000665a0  42 5b 01 00 ee e8 00 00  92 94 01 00 ff ff ff ff  |B[..............|
000665b0  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
000665c0  2e c5 00 00 42 94 01 00  08 00 00 00 72 da 00 00  |....B.......r...|
000665d0  42 94 01 00 06 00 00 00  86 e1 00 00 42 94 01 00  |B...........B...|
000665e0  9e e8 00 00 2e 8d 01 00  9e e8 00 00 16 86 01 00  |................|
000665f0  08 00 00 00 9e e8 00 00  be 69 01 00 06 00 00 00  |.........i......|
00066600  9e e8 00 00 aa 62 01 00  86 e1 00 00 92 5b 01 00  |.....b.......[..|
00066610  72 da 00 00 92 5b 01 00  08 00 00 00 1a be 00 00  |r....[..........|
00066620  92 5b 01 00 06 00 00 00  02 b7 00 00 92 5b 01 00  |.[...........[..|
00066630  ee af 00 00 aa 62 01 00  ee af 00 00 be 69 01 00  |.....b.......i..|
00066640  08 00 00 00 ee af 00 00  16 86 01 00 06 00 00 00  |................|
00066650  ee af 00 00 2e 8d 01 00  02 b7 00 00 42 94 01 00  |............B...|
00066660  1a be 00 00 42 94 01 00  08 00 00 00 2e c5 00 00  |....B...........|
00066670  42 94 01 00 08 00 00 00  2e c5 00 00 42 94 01 00  |B...........B...|
00066680  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
00066690  7a f6 00 00 42 5b 01 00  ca 2f 01 00 92 94 01 00  |z...B[.../......|
000666a0  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
000666b0  02 00 00 00 0a 0c 01 00  42 94 01 00 08 00 00 00  |........B.......|
000666c0  4e 21 01 00 42 94 01 00  06 00 00 00 62 28 01 00  |N!..B.......b(..|
000666d0  42 94 01 00 7a 2f 01 00  2e 8d 01 00 7a 2f 01 00  |B...z/......z/..|
000666e0  16 86 01 00 08 00 00 00  7a 2f 01 00 be 69 01 00  |........z/...i..|
000666f0  06 00 00 00 7a 2f 01 00  aa 62 01 00 62 28 01 00  |....z/...b..b(..|
00066700  92 5b 01 00 4e 21 01 00  92 5b 01 00 08 00 00 00  |.[..N!...[......|
00066710  f6 04 01 00 92 5b 01 00  06 00 00 00 de fd 00 00  |.....[..........|
00066720  92 5b 01 00 ca f6 00 00  aa 62 01 00 ca f6 00 00  |.[.......b......|
00066730  be 69 01 00 08 00 00 00  ca f6 00 00 16 86 01 00  |.i..............|
00066740  06 00 00 00 ca f6 00 00  2e 8d 01 00 de fd 00 00  |................|
00066750  42 94 01 00 f6 04 01 00  42 94 01 00 08 00 00 00  |B.......B.......|
00066760  0a 0c 01 00 42 94 01 00  08 00 00 00 0a 0c 01 00  |....B...........|
00066770  42 94 01 00 05 00 00 00  00 00 00 00 02 00 00 00  |B...............|
00066780  f4 00 00 00 c2 68 00 00  66 14 01 00 12 a2 00 00  |.....h..f.......|
00066790  b6 4d 01 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |.M..............|
000667a0  40 00 a0 a0 02 00 00 00  52 7e 00 00 66 4d 01 00  |@.......R~..fM..|
000667b0  08 00 00 00 96 93 00 00  66 4d 01 00 06 00 00 00  |........fM......|
000667c0  aa 9a 00 00 66 4d 01 00  c2 a1 00 00 52 46 01 00  |....fM......RF..|
000667d0  c2 a1 00 00 3a 3f 01 00  08 00 00 00 c2 a1 00 00  |....:?..........|
000667e0  e2 22 01 00 06 00 00 00  c2 a1 00 00 ce 1b 01 00  |."..............|
000667f0  aa 9a 00 00 b6 14 01 00  96 93 00 00 b6 14 01 00  |................|
00066800  08 00 00 00 3e 77 00 00  b6 14 01 00 06 00 00 00  |....>w..........|
00066810  26 70 00 00 b6 14 01 00  12 69 00 00 ce 1b 01 00  |&p.......i......|
00066820  12 69 00 00 e2 22 01 00  08 00 00 00 12 69 00 00  |.i...".......i..|
00066830  3a 3f 01 00 06 00 00 00  12 69 00 00 52 46 01 00  |:?.......i..RF..|
00066840  26 70 00 00 66 4d 01 00  3e 77 00 00 66 4d 01 00  |&p..fM..>w..fM..|
00066850  08 00 00 00 52 7e 00 00  66 4d 01 00 08 00 00 00  |....R~..fM......|
00066860  52 7e 00 00 66 4d 01 00  05 00 00 00 00 00 00 00  |R~..fM..........|
00066870  02 00 00 00 f4 00 00 00  9e af 00 00 66 14 01 00  |............f...|
00066880  ee e8 00 00 b6 4d 01 00  ff ff ff ff 00 00 00 00  |.....M..........|
00066890  a0 00 00 00 40 00 a0 a0  02 00 00 00 2e c5 00 00  |....@...........|
000668a0  66 4d 01 00 08 00 00 00  72 da 00 00 66 4d 01 00  |fM......r...fM..|
000668b0  06 00 00 00 86 e1 00 00  66 4d 01 00 9e e8 00 00  |........fM......|
000668c0  52 46 01 00 9e e8 00 00  3a 3f 01 00 08 00 00 00  |RF......:?......|
000668d0  9e e8 00 00 e2 22 01 00  06 00 00 00 9e e8 00 00  |....."..........|
000668e0  ce 1b 01 00 86 e1 00 00  b6 14 01 00 72 da 00 00  |............r...|
000668f0  b6 14 01 00 08 00 00 00  1a be 00 00 b6 14 01 00  |................|
00066900  06 00 00 00 02 b7 00 00  b6 14 01 00 ee af 00 00  |................|
00066910  ce 1b 01 00 ee af 00 00  e2 22 01 00 08 00 00 00  |........."......|
00066920  ee af 00 00 3a 3f 01 00  06 00 00 00 ee af 00 00  |....:?..........|
00066930  52 46 01 00 02 b7 00 00  66 4d 01 00 1a be 00 00  |RF......fM......|
00066940  66 4d 01 00 08 00 00 00  2e c5 00 00 66 4d 01 00  |fM..........fM..|
00066950  08 00 00 00 2e c5 00 00  66 4d 01 00 05 00 00 00  |........fM......|
00066960  00 00 00 00 02 00 00 00  f4 00 00 00 7a f6 00 00  |............z...|
00066970  66 14 01 00 ca 2f 01 00  b6 4d 01 00 ff ff ff ff  |f..../...M......|
00066980  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
00066990  0a 0c 01 00 66 4d 01 00  08 00 00 00 4e 21 01 00  |....fM......N!..|
000669a0  66 4d 01 00 06 00 00 00  62 28 01 00 66 4d 01 00  |fM......b(..fM..|
000669b0  7a 2f 01 00 52 46 01 00  7a 2f 01 00 3a 3f 01 00  |z/..RF..z/..:?..|
000669c0  08 00 00 00 7a 2f 01 00  e2 22 01 00 06 00 00 00  |....z/..."......|
000669d0  7a 2f 01 00 ce 1b 01 00  62 28 01 00 b6 14 01 00  |z/......b(......|
000669e0  4e 21 01 00 b6 14 01 00  08 00 00 00 f6 04 01 00  |N!..............|
000669f0  b6 14 01 00 06 00 00 00  de fd 00 00 b6 14 01 00  |................|
00066a00  ca f6 00 00 ce 1b 01 00  ca f6 00 00 e2 22 01 00  |............."..|
00066a10  08 00 00 00 ca f6 00 00  3a 3f 01 00 06 00 00 00  |........:?......|
00066a20  ca f6 00 00 52 46 01 00  de fd 00 00 66 4d 01 00  |....RF......fM..|
00066a30  f6 04 01 00 66 4d 01 00  08 00 00 00 0a 0c 01 00  |....fM..........|
00066a40  66 4d 01 00 08 00 00 00  0a 0c 01 00 66 4d 01 00  |fM..........fM..|
00066a50  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
00066a60  c2 68 00 00 d2 3f 00 00  12 a2 00 00 22 79 00 00  |.h...?......"y..|
00066a70  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
00066a80  02 00 00 00 52 7e 00 00  d2 78 00 00 08 00 00 00  |....R~...x......|
00066a90  96 93 00 00 d2 78 00 00  06 00 00 00 aa 9a 00 00  |.....x..........|
00066aa0  d2 78 00 00 c2 a1 00 00  be 71 00 00 c2 a1 00 00  |.x.......q......|
00066ab0  a6 6a 00 00 08 00 00 00  c2 a1 00 00 4e 4e 00 00  |.j..........NN..|
00066ac0  06 00 00 00 c2 a1 00 00  3a 47 00 00 aa 9a 00 00  |........:G......|
00066ad0  22 40 00 00 96 93 00 00  22 40 00 00 08 00 00 00  |"@......"@......|
00066ae0  3e 77 00 00 22 40 00 00  06 00 00 00 26 70 00 00  |>w.."@......&p..|
00066af0  22 40 00 00 12 69 00 00  3a 47 00 00 12 69 00 00  |"@...i..:G...i..|
00066b00  4e 4e 00 00 08 00 00 00  12 69 00 00 a6 6a 00 00  |NN.......i...j..|
00066b10  06 00 00 00 12 69 00 00  be 71 00 00 26 70 00 00  |.....i...q..&p..|
00066b20  d2 78 00 00 3e 77 00 00  d2 78 00 00 08 00 00 00  |.x..>w...x......|
00066b30  52 7e 00 00 d2 78 00 00  08 00 00 00 52 7e 00 00  |R~...x......R~..|
00066b40  d2 78 00 00 05 00 00 00  00 00 00 00 02 00 00 00  |.x..............|
00066b50  f4 00 00 00 9e af 00 00  d2 3f 00 00 ee e8 00 00  |.........?......|
00066b60  22 79 00 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |"y..............|
00066b70  40 00 a0 a0 02 00 00 00  2e c5 00 00 d2 78 00 00  |@............x..|
00066b80  08 00 00 00 72 da 00 00  d2 78 00 00 06 00 00 00  |....r....x......|
00066b90  86 e1 00 00 d2 78 00 00  9e e8 00 00 be 71 00 00  |.....x.......q..|
00066ba0  9e e8 00 00 a6 6a 00 00  08 00 00 00 9e e8 00 00  |.....j..........|
00066bb0  4e 4e 00 00 06 00 00 00  9e e8 00 00 3a 47 00 00  |NN..........:G..|
00066bc0  86 e1 00 00 22 40 00 00  72 da 00 00 22 40 00 00  |...."@..r..."@..|
00066bd0  08 00 00 00 1a be 00 00  22 40 00 00 06 00 00 00  |........"@......|
00066be0  02 b7 00 00 22 40 00 00  ee af 00 00 3a 47 00 00  |...."@......:G..|
00066bf0  ee af 00 00 4e 4e 00 00  08 00 00 00 ee af 00 00  |....NN..........|
00066c00  a6 6a 00 00 06 00 00 00  ee af 00 00 be 71 00 00  |.j...........q..|
00066c10  02 b7 00 00 d2 78 00 00  1a be 00 00 d2 78 00 00  |.....x.......x..|
00066c20  08 00 00 00 2e c5 00 00  d2 78 00 00 08 00 00 00  |.........x......|
00066c30  2e c5 00 00 d2 78 00 00  05 00 00 00 00 00 00 00  |.....x..........|
00066c40  02 00 00 00 f4 00 00 00  7a f6 00 00 d2 3f 00 00  |........z....?..|
00066c50  ca 2f 01 00 22 79 00 00  ff ff ff ff 00 00 00 00  |./.."y..........|
00066c60  a0 00 00 00 40 00 a0 a0  02 00 00 00 0a 0c 01 00  |....@...........|
00066c70  d2 78 00 00 08 00 00 00  4e 21 01 00 d2 78 00 00  |.x......N!...x..|
00066c80  06 00 00 00 62 28 01 00  d2 78 00 00 7a 2f 01 00  |....b(...x..z/..|
00066c90  be 71 00 00 7a 2f 01 00  a6 6a 00 00 08 00 00 00  |.q..z/...j......|
00066ca0  7a 2f 01 00 4e 4e 00 00  06 00 00 00 7a 2f 01 00  |z/..NN......z/..|
00066cb0  3a 47 00 00 62 28 01 00  22 40 00 00 4e 21 01 00  |:G..b(.."@..N!..|
00066cc0  22 40 00 00 08 00 00 00  f6 04 01 00 22 40 00 00  |"@.........."@..|
00066cd0  06 00 00 00 de fd 00 00  22 40 00 00 ca f6 00 00  |........"@......|
00066ce0  3a 47 00 00 ca f6 00 00  4e 4e 00 00 08 00 00 00  |:G......NN......|
00066cf0  ca f6 00 00 a6 6a 00 00  06 00 00 00 ca f6 00 00  |.....j..........|
00066d00  be 71 00 00 de fd 00 00  d2 78 00 00 f6 04 01 00  |.q.......x......|
00066d10  d2 78 00 00 08 00 00 00  0a 0c 01 00 d2 78 00 00  |.x...........x..|
00066d20  08 00 00 00 0a 0c 01 00  d2 78 00 00 05 00 00 00  |.........x......|
00066d30  00 00 00 00 02 00 00 00  f4 00 00 00 9e af 00 00  |................|
00066d40  ae 86 00 00 ee e8 00 00  fe bf 00 00 ff ff ff ff  |................|
00066d50  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
00066d60  2e c5 00 00 ae bf 00 00  08 00 00 00 72 da 00 00  |............r...|
00066d70  ae bf 00 00 06 00 00 00  86 e1 00 00 ae bf 00 00  |................|
00066d80  9e e8 00 00 9a b8 00 00  9e e8 00 00 82 b1 00 00  |................|
00066d90  08 00 00 00 9e e8 00 00  2a 95 00 00 06 00 00 00  |........*.......|
00066da0  9e e8 00 00 16 8e 00 00  86 e1 00 00 fe 86 00 00  |................|
00066db0  72 da 00 00 fe 86 00 00  08 00 00 00 1a be 00 00  |r...............|
00066dc0  fe 86 00 00 06 00 00 00  02 b7 00 00 fe 86 00 00  |................|
00066dd0  ee af 00 00 16 8e 00 00  ee af 00 00 2a 95 00 00  |............*...|
00066de0  08 00 00 00 ee af 00 00  82 b1 00 00 06 00 00 00  |................|
00066df0  ee af 00 00 9a b8 00 00  02 b7 00 00 ae bf 00 00  |................|
00066e00  1a be 00 00 ae bf 00 00  08 00 00 00 2e c5 00 00  |................|
00066e10  ae bf 00 00 08 00 00 00  2e c5 00 00 ae bf 00 00  |................|
00066e20  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
00066e30  c2 68 00 00 62 b7 01 00  12 a2 00 00 b2 f0 01 00  |.h..b...........|
00066e40  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
00066e50  02 00 00 00 52 7e 00 00  62 f0 01 00 08 00 00 00  |....R~..b.......|
00066e60  96 93 00 00 62 f0 01 00  06 00 00 00 aa 9a 00 00  |....b...........|
00066e70  62 f0 01 00 c2 a1 00 00  4a e9 01 00 c2 a1 00 00  |b.......J.......|
00066e80  36 e2 01 00 08 00 00 00  c2 a1 00 00 de c5 01 00  |6...............|
00066e90  06 00 00 00 c2 a1 00 00  c6 be 01 00 aa 9a 00 00  |................|
00066ea0  b2 b7 01 00 96 93 00 00  b2 b7 01 00 08 00 00 00  |................|
00066eb0  3e 77 00 00 b2 b7 01 00  06 00 00 00 26 70 00 00  |>w..........&p..|
00066ec0  b2 b7 01 00 12 69 00 00  c6 be 01 00 12 69 00 00  |.....i.......i..|
00066ed0  de c5 01 00 08 00 00 00  12 69 00 00 36 e2 01 00  |.........i..6...|
00066ee0  06 00 00 00 12 69 00 00  4a e9 01 00 26 70 00 00  |.....i..J...&p..|
00066ef0  62 f0 01 00 3e 77 00 00  62 f0 01 00 08 00 00 00  |b...>w..b.......|
00066f00  52 7e 00 00 62 f0 01 00  08 00 00 00 52 7e 00 00  |R~..b.......R~..|
00066f10  62 f0 01 00 05 00 00 00  00 00 00 00 02 00 00 00  |b...............|
00066f20  f4 00 00 00 9e af 00 00  62 b7 01 00 ee e8 00 00  |........b.......|
00066f30  b2 f0 01 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |................|
00066f40  40 00 a0 a0 02 00 00 00  2e c5 00 00 62 f0 01 00  |@...........b...|
00066f50  08 00 00 00 72 da 00 00  62 f0 01 00 06 00 00 00  |....r...b.......|
00066f60  86 e1 00 00 62 f0 01 00  9e e8 00 00 4a e9 01 00  |....b.......J...|
00066f70  9e e8 00 00 36 e2 01 00  08 00 00 00 9e e8 00 00  |....6...........|
00066f80  de c5 01 00 06 00 00 00  9e e8 00 00 c6 be 01 00  |................|
00066f90  86 e1 00 00 b2 b7 01 00  72 da 00 00 b2 b7 01 00  |........r.......|
00066fa0  08 00 00 00 1a be 00 00  b2 b7 01 00 06 00 00 00  |................|
00066fb0  02 b7 00 00 b2 b7 01 00  ee af 00 00 c6 be 01 00  |................|
00066fc0  ee af 00 00 de c5 01 00  08 00 00 00 ee af 00 00  |................|
00066fd0  36 e2 01 00 06 00 00 00  ee af 00 00 4a e9 01 00  |6...........J...|
00066fe0  02 b7 00 00 62 f0 01 00  1a be 00 00 62 f0 01 00  |....b.......b...|
00066ff0  08 00 00 00 2e c5 00 00  62 f0 01 00 08 00 00 00  |........b.......|
00067000  2e c5 00 00 62 f0 01 00  05 00 00 00 00 00 00 00  |....b...........|
00067010  02 00 00 00 f4 00 00 00  7a f6 00 00 62 b7 01 00  |........z...b...|
00067020  ca 2f 01 00 b2 f0 01 00  ff ff ff ff 00 00 00 00  |./..............|
00067030  a0 00 00 00 40 00 a0 a0  02 00 00 00 0a 0c 01 00  |....@...........|
00067040  62 f0 01 00 08 00 00 00  4e 21 01 00 62 f0 01 00  |b.......N!..b...|
00067050  06 00 00 00 62 28 01 00  62 f0 01 00 7a 2f 01 00  |....b(..b...z/..|
00067060  4a e9 01 00 7a 2f 01 00  36 e2 01 00 08 00 00 00  |J...z/..6.......|
00067070  7a 2f 01 00 de c5 01 00  06 00 00 00 7a 2f 01 00  |z/..........z/..|
00067080  c6 be 01 00 62 28 01 00  b2 b7 01 00 4e 21 01 00  |....b(......N!..|
00067090  b2 b7 01 00 08 00 00 00  f6 04 01 00 b2 b7 01 00  |................|
000670a0  06 00 00 00 de fd 00 00  b2 b7 01 00 ca f6 00 00  |................|
000670b0  c6 be 01 00 ca f6 00 00  de c5 01 00 08 00 00 00  |................|
000670c0  ca f6 00 00 36 e2 01 00  06 00 00 00 ca f6 00 00  |....6...........|
000670d0  4a e9 01 00 de fd 00 00  62 f0 01 00 f6 04 01 00  |J.......b.......|
000670e0  62 f0 01 00 08 00 00 00  0a 0c 01 00 62 f0 01 00  |b...........b...|
000670f0  08 00 00 00 0a 0c 01 00  62 f0 01 00 05 00 00 00  |........b.......|
00067100  00 00 00 00 01 00 00 00  38 00 00 00 7e 77 00 00  |........8...~w..|
00067110  f2 cb 01 00 be 97 00 00  72 e3 01 00 00 00 00 00  |........r.......|
00067120  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
00067130  3e 77 00 00 f2 cc 01 00  33 32 00 00 01 00 00 00  |>w......32......|
00067140  38 00 00 00 5a be 00 00  f2 cb 01 00 5a da 00 00  |8...Z.......Z...|
00067150  72 e3 01 00 00 00 00 00  00 ff ff ff 01 00 00 00  |r...............|
00067160  00 1e 00 00 00 1e 00 00  1a be 00 00 f2 cc 01 00  |................|
00067170  33 31 00 00 01 00 00 00  38 00 00 00 36 05 01 00  |31......8...6...|
00067180  72 cc 01 00 b6 25 01 00  b2 e2 01 00 00 00 00 00  |r....%..........|
00067190  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
000671a0  f6 04 01 00 f2 cc 01 00  34 34 00 00 01 00 00 00  |........44......|
000671b0  38 00 00 00 7e 77 00 00  66 54 00 00 be 97 00 00  |8...~w..fT......|
000671c0  e6 6b 00 00 00 00 00 00  00 ff ff ff 01 00 00 00  |.k..............|
000671d0  00 1e 00 00 00 1e 00 00  3e 77 00 00 66 55 00 00  |........>w..fU..|
000671e0  32 35 00 00 01 00 00 00  38 00 00 00 5a be 00 00  |25......8...Z...|
000671f0  e6 54 00 00 5a da 00 00  26 6b 00 00 00 00 00 00  |.T..Z...&k......|
00067200  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
00067210  1a be 00 00 66 55 00 00  34 31 00 00 01 00 00 00  |....fU..41......|
00067220  38 00 00 00 5e fa 00 00  e6 54 00 00 de 25 01 00  |8...^....T...%..|
00067230  e6 6b 00 00 00 00 00 00  00 ff ff ff 01 00 00 00  |.k..............|
00067240  00 1e 00 00 00 1e 00 00  de f8 00 00 66 55 00 00  |............fU..|
00067250  31 32 31 00 01 00 00 00  38 00 00 00 5a be 00 00  |121.....8...Z...|
00067260  42 9b 00 00 da de 00 00  02 b2 00 00 00 00 00 00  |B...............|
00067270  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
00067280  1a be 00 00 42 9c 00 00  35 37 00 00 01 00 00 00  |....B...57......|
00067290  38 00 00 00 7e 77 00 00  fa 28 01 00 be 97 00 00  |8...~w...(......|
000672a0  7a 40 01 00 00 00 00 00  00 ff ff ff 01 00 00 00  |z@..............|
000672b0  00 1e 00 00 00 1e 00 00  3e 77 00 00 fa 29 01 00  |........>w...)..|
000672c0  38 39 00 00 01 00 00 00  38 00 00 00 82 b3 00 00  |89......8.......|
000672d0  fa 28 01 00 42 e3 00 00  7a 40 01 00 00 00 00 00  |.(..B...z@......|
000672e0  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
000672f0  02 b2 00 00 fa 29 01 00  31 30 35 00 01 00 00 00  |.....)..105.....|
00067300  38 00 00 00 76 05 01 00  fa 28 01 00 f6 25 01 00  |8...v....(...%..|
00067310  7a 40 01 00 00 00 00 00  00 ff ff ff 01 00 00 00  |z@..............|
00067320  00 1e 00 00 00 1e 00 00  f6 04 01 00 fa 29 01 00  |.............)..|
00067330  37 38 00 00 01 00 00 00  38 00 00 00 7e 77 00 00  |78......8...~w..|
00067340  d6 6f 01 00 7e 93 00 00  56 87 01 00 00 00 00 00  |.o..~...V.......|
00067350  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
00067360  3e 77 00 00 d6 70 01 00  36 31 00 00 01 00 00 00  |>w...p..61......|
00067370  38 00 00 00 5a be 00 00  d6 6f 01 00 9a de 00 00  |8...Z....o......|
00067380  56 87 01 00 00 00 00 00  00 ff ff ff 01 00 00 00  |V...............|
00067390  00 1e 00 00 00 1e 00 00  1a be 00 00 d6 70 01 00  |.............p..|
000673a0  36 32 00 00 01 00 00 00  38 00 00 00 36 05 01 00  |62......8...6...|
000673b0  d6 6f 01 00 76 25 01 00  56 87 01 00 00 00 00 00  |.o..v%..V.......|
000673c0  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
000673d0  f6 04 01 00 d6 70 01 00  36 33 00 00 06 00 00 00  |.....p..63......|
000673e0  74 14 00 00 0e cb 01 00  22 0d 00 00 f2 d8 02 00  |t.......".......|
000673f0  92 94 01 00 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
00067400  01 00 00 00 40 00 00 00  96 de 01 00 22 0d 00 00  |....@......."...|
00067410  16 bf 02 00 22 34 00 00  00 00 00 00 00 ff ff ff  |...."4..........|
00067420  01 00 00 00 00 28 00 00  00 28 00 00 96 de 01 00  |.....(...(......|
00067430  62 16 00 00 54 68 65 20  4b 65 79 70 61 64 00 00  |b...The Keypad..|
00067440  06 00 00 00 10 14 00 00  0e cb 01 00 d2 3f 00 00  |.............?..|
00067450  f2 d8 02 00 92 94 01 00  20 20 20 20 20 20 20 20  |........        |
00067460  20 20 20 20 02 00 00 00  f4 00 00 00 0e cb 01 00  |    ............|
00067470  42 5b 01 00 5e 04 02 00  92 94 01 00 ff ff ff ff  |B[..^...........|
00067480  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
00067490  9e e0 01 00 42 94 01 00  08 00 00 00 e2 f5 01 00  |....B...........|
000674a0  42 94 01 00 06 00 00 00  f6 fc 01 00 42 94 01 00  |B...........B...|
000674b0  0e 04 02 00 2e 8d 01 00  0e 04 02 00 16 86 01 00  |................|
000674c0  08 00 00 00 0e 04 02 00  be 69 01 00 06 00 00 00  |.........i......|
000674d0  0e 04 02 00 aa 62 01 00  f6 fc 01 00 92 5b 01 00  |.....b.......[..|
000674e0  e2 f5 01 00 92 5b 01 00  08 00 00 00 8a d9 01 00  |.....[..........|
000674f0  92 5b 01 00 06 00 00 00  72 d2 01 00 92 5b 01 00  |.[......r....[..|
00067500  5e cb 01 00 aa 62 01 00  5e cb 01 00 be 69 01 00  |^....b..^....i..|
00067510  08 00 00 00 5e cb 01 00  16 86 01 00 06 00 00 00  |....^...........|
00067520  5e cb 01 00 2e 8d 01 00  72 d2 01 00 42 94 01 00  |^.......r...B...|
00067530  8a d9 01 00 42 94 01 00  08 00 00 00 9e e0 01 00  |....B...........|
00067540  42 94 01 00 08 00 00 00  9e e0 01 00 42 94 01 00  |B...........B...|
00067550  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
00067560  ea 11 02 00 42 5b 01 00  3a 4b 02 00 92 94 01 00  |....B[..:K......|
00067570  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
00067580  02 00 00 00 7a 27 02 00  42 94 01 00 08 00 00 00  |....z'..B.......|
00067590  be 3c 02 00 42 94 01 00  06 00 00 00 d2 43 02 00  |.<..B........C..|
000675a0  42 94 01 00 ea 4a 02 00  2e 8d 01 00 ea 4a 02 00  |B....J.......J..|
000675b0  16 86 01 00 08 00 00 00  ea 4a 02 00 be 69 01 00  |.........J...i..|
000675c0  06 00 00 00 ea 4a 02 00  aa 62 01 00 d2 43 02 00  |.....J...b...C..|
000675d0  92 5b 01 00 be 3c 02 00  92 5b 01 00 08 00 00 00  |.[...<...[......|
000675e0  66 20 02 00 92 5b 01 00  06 00 00 00 4e 19 02 00  |f ...[......N...|
000675f0  92 5b 01 00 3a 12 02 00  aa 62 01 00 3a 12 02 00  |.[..:....b..:...|
00067600  be 69 01 00 08 00 00 00  3a 12 02 00 16 86 01 00  |.i......:.......|
00067610  06 00 00 00 3a 12 02 00  2e 8d 01 00 4e 19 02 00  |....:.......N...|
00067620  42 94 01 00 66 20 02 00  42 94 01 00 08 00 00 00  |B...f ..B.......|
00067630  7a 27 02 00 42 94 01 00  08 00 00 00 7a 27 02 00  |z'..B.......z'..|
00067640  42 94 01 00 05 00 00 00  00 00 00 00 02 00 00 00  |B...............|
00067650  f4 00 00 00 c6 58 02 00  42 5b 01 00 16 92 02 00  |.....X..B[......|
00067660  92 94 01 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |................|
00067670  40 00 a0 a0 02 00 00 00  56 6e 02 00 42 94 01 00  |@.......Vn..B...|
00067680  08 00 00 00 9a 83 02 00  42 94 01 00 06 00 00 00  |........B.......|
00067690  ae 8a 02 00 42 94 01 00  c6 91 02 00 2e 8d 01 00  |....B...........|
000676a0  c6 91 02 00 16 86 01 00  08 00 00 00 c6 91 02 00  |................|
000676b0  be 69 01 00 06 00 00 00  c6 91 02 00 aa 62 01 00  |.i...........b..|
000676c0  ae 8a 02 00 92 5b 01 00  9a 83 02 00 92 5b 01 00  |.....[.......[..|
000676d0  08 00 00 00 42 67 02 00  92 5b 01 00 06 00 00 00  |....Bg...[......|
000676e0  2a 60 02 00 92 5b 01 00  16 59 02 00 aa 62 01 00  |*`...[...Y...b..|
000676f0  16 59 02 00 be 69 01 00  08 00 00 00 16 59 02 00  |.Y...i.......Y..|
00067700  16 86 01 00 06 00 00 00  16 59 02 00 2e 8d 01 00  |.........Y......|
00067710  2a 60 02 00 42 94 01 00  42 67 02 00 42 94 01 00  |*`..B...Bg..B...|
00067720  08 00 00 00 56 6e 02 00  42 94 01 00 08 00 00 00  |....Vn..B.......|
00067730  56 6e 02 00 42 94 01 00  05 00 00 00 00 00 00 00  |Vn..B...........|
00067740  02 00 00 00 f4 00 00 00  a2 9f 02 00 42 5b 01 00  |............B[..|
00067750  f2 d8 02 00 92 94 01 00  ff ff ff ff 00 00 00 00  |................|
00067760  a0 00 00 00 40 00 a0 a0  02 00 00 00 32 b5 02 00  |....@.......2...|
00067770  42 94 01 00 08 00 00 00  76 ca 02 00 42 94 01 00  |B.......v...B...|
00067780  06 00 00 00 8a d1 02 00  42 94 01 00 a2 d8 02 00  |........B.......|
00067790  2e 8d 01 00 a2 d8 02 00  16 86 01 00 08 00 00 00  |................|
000677a0  a2 d8 02 00 be 69 01 00  06 00 00 00 a2 d8 02 00  |.....i..........|
000677b0  aa 62 01 00 8a d1 02 00  92 5b 01 00 76 ca 02 00  |.b.......[..v...|
000677c0  92 5b 01 00 08 00 00 00  1e ae 02 00 92 5b 01 00  |.[...........[..|
000677d0  06 00 00 00 06 a7 02 00  92 5b 01 00 f2 9f 02 00  |.........[......|
000677e0  aa 62 01 00 f2 9f 02 00  be 69 01 00 08 00 00 00  |.b.......i......|
000677f0  f2 9f 02 00 16 86 01 00  06 00 00 00 f2 9f 02 00  |................|
00067800  2e 8d 01 00 06 a7 02 00  42 94 01 00 1e ae 02 00  |........B.......|
00067810  42 94 01 00 08 00 00 00  32 b5 02 00 42 94 01 00  |B.......2...B...|
00067820  08 00 00 00 32 b5 02 00  42 94 01 00 05 00 00 00  |....2...B.......|
00067830  00 00 00 00 02 00 00 00  f4 00 00 00 0e cb 01 00  |................|
00067840  66 14 01 00 5e 04 02 00  b6 4d 01 00 ff ff ff ff  |f...^....M......|
00067850  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
00067860  9e e0 01 00 66 4d 01 00  08 00 00 00 e2 f5 01 00  |....fM..........|
00067870  66 4d 01 00 06 00 00 00  f6 fc 01 00 66 4d 01 00  |fM..........fM..|
00067880  0e 04 02 00 52 46 01 00  0e 04 02 00 3a 3f 01 00  |....RF......:?..|
00067890  08 00 00 00 0e 04 02 00  e2 22 01 00 06 00 00 00  |........."......|
000678a0  0e 04 02 00 ce 1b 01 00  f6 fc 01 00 b6 14 01 00  |................|
000678b0  e2 f5 01 00 b6 14 01 00  08 00 00 00 8a d9 01 00  |................|
000678c0  b6 14 01 00 06 00 00 00  72 d2 01 00 b6 14 01 00  |........r.......|
000678d0  5e cb 01 00 ce 1b 01 00  5e cb 01 00 e2 22 01 00  |^.......^...."..|
000678e0  08 00 00 00 5e cb 01 00  3a 3f 01 00 06 00 00 00  |....^...:?......|
000678f0  5e cb 01 00 52 46 01 00  72 d2 01 00 66 4d 01 00  |^...RF..r...fM..|
00067900  8a d9 01 00 66 4d 01 00  08 00 00 00 9e e0 01 00  |....fM..........|
00067910  66 4d 01 00 08 00 00 00  9e e0 01 00 66 4d 01 00  |fM..........fM..|
00067920  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
00067930  ea 11 02 00 66 14 01 00  3a 4b 02 00 b6 4d 01 00  |....f...:K...M..|
00067940  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
00067950  02 00 00 00 7a 27 02 00  66 4d 01 00 08 00 00 00  |....z'..fM......|
00067960  be 3c 02 00 66 4d 01 00  06 00 00 00 d2 43 02 00  |.<..fM.......C..|
00067970  66 4d 01 00 ea 4a 02 00  52 46 01 00 ea 4a 02 00  |fM...J..RF...J..|
00067980  3a 3f 01 00 08 00 00 00  ea 4a 02 00 e2 22 01 00  |:?.......J..."..|
00067990  06 00 00 00 ea 4a 02 00  ce 1b 01 00 d2 43 02 00  |.....J.......C..|
000679a0  b6 14 01 00 be 3c 02 00  b6 14 01 00 08 00 00 00  |.....<..........|
000679b0  66 20 02 00 b6 14 01 00  06 00 00 00 4e 19 02 00  |f ..........N...|
000679c0  b6 14 01 00 3a 12 02 00  ce 1b 01 00 3a 12 02 00  |....:.......:...|
000679d0  e2 22 01 00 08 00 00 00  3a 12 02 00 3a 3f 01 00  |."......:...:?..|
000679e0  06 00 00 00 3a 12 02 00  52 46 01 00 4e 19 02 00  |....:...RF..N...|
000679f0  66 4d 01 00 66 20 02 00  66 4d 01 00 08 00 00 00  |fM..f ..fM......|
00067a00  7a 27 02 00 66 4d 01 00  08 00 00 00 7a 27 02 00  |z'..fM......z'..|
00067a10  66 4d 01 00 05 00 00 00  00 00 00 00 02 00 00 00  |fM..............|
00067a20  f4 00 00 00 c6 58 02 00  66 14 01 00 16 92 02 00  |.....X..f.......|
00067a30  b6 4d 01 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |.M..............|
00067a40  40 00 a0 a0 02 00 00 00  56 6e 02 00 66 4d 01 00  |@.......Vn..fM..|
00067a50  08 00 00 00 9a 83 02 00  66 4d 01 00 06 00 00 00  |........fM......|
00067a60  ae 8a 02 00 66 4d 01 00  c6 91 02 00 52 46 01 00  |....fM......RF..|
00067a70  c6 91 02 00 3a 3f 01 00  08 00 00 00 c6 91 02 00  |....:?..........|
00067a80  e2 22 01 00 06 00 00 00  c6 91 02 00 ce 1b 01 00  |."..............|
00067a90  ae 8a 02 00 b6 14 01 00  9a 83 02 00 b6 14 01 00  |................|
00067aa0  08 00 00 00 42 67 02 00  b6 14 01 00 06 00 00 00  |....Bg..........|
00067ab0  2a 60 02 00 b6 14 01 00  16 59 02 00 ce 1b 01 00  |*`.......Y......|
00067ac0  16 59 02 00 e2 22 01 00  08 00 00 00 16 59 02 00  |.Y...".......Y..|
00067ad0  3a 3f 01 00 06 00 00 00  16 59 02 00 52 46 01 00  |:?.......Y..RF..|
00067ae0  2a 60 02 00 66 4d 01 00  42 67 02 00 66 4d 01 00  |*`..fM..Bg..fM..|
00067af0  08 00 00 00 56 6e 02 00  66 4d 01 00 08 00 00 00  |....Vn..fM......|
00067b00  56 6e 02 00 66 4d 01 00  05 00 00 00 00 00 00 00  |Vn..fM..........|
00067b10  02 00 00 00 f4 00 00 00  0e cb 01 00 8a cd 00 00  |................|
00067b20  5e 04 02 00 da 06 01 00  ff ff ff ff 00 00 00 00  |^...............|
00067b30  a0 00 00 00 40 00 a0 a0  02 00 00 00 9e e0 01 00  |....@...........|
00067b40  8a 06 01 00 08 00 00 00  e2 f5 01 00 8a 06 01 00  |................|
00067b50  06 00 00 00 f6 fc 01 00  8a 06 01 00 0e 04 02 00  |................|
00067b60  76 ff 00 00 0e 04 02 00  5e f8 00 00 08 00 00 00  |v.......^.......|
00067b70  0e 04 02 00 06 dc 00 00  06 00 00 00 0e 04 02 00  |................|
00067b80  f2 d4 00 00 f6 fc 01 00  da cd 00 00 e2 f5 01 00  |................|
00067b90  da cd 00 00 08 00 00 00  8a d9 01 00 da cd 00 00  |................|
00067ba0  06 00 00 00 72 d2 01 00  da cd 00 00 5e cb 01 00  |....r.......^...|
00067bb0  f2 d4 00 00 5e cb 01 00  06 dc 00 00 08 00 00 00  |....^...........|
00067bc0  5e cb 01 00 5e f8 00 00  06 00 00 00 5e cb 01 00  |^...^.......^...|
00067bd0  76 ff 00 00 72 d2 01 00  8a 06 01 00 8a d9 01 00  |v...r...........|
00067be0  8a 06 01 00 08 00 00 00  9e e0 01 00 8a 06 01 00  |................|
00067bf0  08 00 00 00 9e e0 01 00  8a 06 01 00 05 00 00 00  |................|
00067c00  00 00 00 00 02 00 00 00  f4 00 00 00 ea 11 02 00  |................|
00067c10  8a cd 00 00 3a 4b 02 00  da 06 01 00 ff ff ff ff  |....:K..........|
00067c20  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
00067c30  7a 27 02 00 8a 06 01 00  08 00 00 00 be 3c 02 00  |z'...........<..|
00067c40  8a 06 01 00 06 00 00 00  d2 43 02 00 8a 06 01 00  |.........C......|
00067c50  ea 4a 02 00 76 ff 00 00  ea 4a 02 00 5e f8 00 00  |.J..v....J..^...|
00067c60  08 00 00 00 ea 4a 02 00  06 dc 00 00 06 00 00 00  |.....J..........|
00067c70  ea 4a 02 00 f2 d4 00 00  d2 43 02 00 da cd 00 00  |.J.......C......|
00067c80  be 3c 02 00 da cd 00 00  08 00 00 00 66 20 02 00  |.<..........f ..|
00067c90  da cd 00 00 06 00 00 00  4e 19 02 00 da cd 00 00  |........N.......|
00067ca0  3a 12 02 00 f2 d4 00 00  3a 12 02 00 06 dc 00 00  |:.......:.......|
00067cb0  08 00 00 00 3a 12 02 00  5e f8 00 00 06 00 00 00  |....:...^.......|
00067cc0  3a 12 02 00 76 ff 00 00  4e 19 02 00 8a 06 01 00  |:...v...N.......|
00067cd0  66 20 02 00 8a 06 01 00  08 00 00 00 7a 27 02 00  |f ..........z'..|
00067ce0  8a 06 01 00 08 00 00 00  7a 27 02 00 8a 06 01 00  |........z'......|
00067cf0  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
00067d00  c6 58 02 00 8a cd 00 00  16 92 02 00 da 06 01 00  |.X..............|
00067d10  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
00067d20  02 00 00 00 56 6e 02 00  8a 06 01 00 08 00 00 00  |....Vn..........|
00067d30  9a 83 02 00 8a 06 01 00  06 00 00 00 ae 8a 02 00  |................|
00067d40  8a 06 01 00 c6 91 02 00  76 ff 00 00 c6 91 02 00  |........v.......|
00067d50  5e f8 00 00 08 00 00 00  c6 91 02 00 06 dc 00 00  |^...............|
00067d60  06 00 00 00 c6 91 02 00  f2 d4 00 00 ae 8a 02 00  |................|
00067d70  da cd 00 00 9a 83 02 00  da cd 00 00 08 00 00 00  |................|
00067d80  42 67 02 00 da cd 00 00  06 00 00 00 2a 60 02 00  |Bg..........*`..|
00067d90  da cd 00 00 16 59 02 00  f2 d4 00 00 16 59 02 00  |.....Y.......Y..|
00067da0  06 dc 00 00 08 00 00 00  16 59 02 00 5e f8 00 00  |.........Y..^...|
00067db0  06 00 00 00 16 59 02 00  76 ff 00 00 2a 60 02 00  |.....Y..v...*`..|
00067dc0  8a 06 01 00 42 67 02 00  8a 06 01 00 08 00 00 00  |....Bg..........|
00067dd0  56 6e 02 00 8a 06 01 00  08 00 00 00 56 6e 02 00  |Vn..........Vn..|
00067de0  8a 06 01 00 05 00 00 00  00 00 00 00 02 00 00 00  |................|
00067df0  f4 00 00 00 0e cb 01 00  ae 86 00 00 5e 04 02 00  |............^...|
00067e00  fe bf 00 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |................|
00067e10  40 00 a0 a0 02 00 00 00  9e e0 01 00 ae bf 00 00  |@...............|
00067e20  08 00 00 00 e2 f5 01 00  ae bf 00 00 06 00 00 00  |................|
00067e30  f6 fc 01 00 ae bf 00 00  0e 04 02 00 9a b8 00 00  |................|
00067e40  0e 04 02 00 82 b1 00 00  08 00 00 00 0e 04 02 00  |................|
00067e50  2a 95 00 00 06 00 00 00  0e 04 02 00 16 8e 00 00  |*...............|
00067e60  f6 fc 01 00 fe 86 00 00  e2 f5 01 00 fe 86 00 00  |................|
00067e70  08 00 00 00 8a d9 01 00  fe 86 00 00 06 00 00 00  |................|
00067e80  72 d2 01 00 fe 86 00 00  5e cb 01 00 16 8e 00 00  |r.......^.......|
00067e90  5e cb 01 00 2a 95 00 00  08 00 00 00 5e cb 01 00  |^...*.......^...|
00067ea0  82 b1 00 00 06 00 00 00  5e cb 01 00 9a b8 00 00  |........^.......|
00067eb0  72 d2 01 00 ae bf 00 00  8a d9 01 00 ae bf 00 00  |r...............|
00067ec0  08 00 00 00 9e e0 01 00  ae bf 00 00 08 00 00 00  |................|
00067ed0  9e e0 01 00 ae bf 00 00  05 00 00 00 00 00 00 00  |................|
00067ee0  02 00 00 00 f4 00 00 00  ea 11 02 00 ae 86 00 00  |................|
00067ef0  3a 4b 02 00 fe bf 00 00  ff ff ff ff 00 00 00 00  |:K..............|
00067f00  a0 00 00 00 40 00 a0 a0  02 00 00 00 7a 27 02 00  |....@.......z'..|
00067f10  ae bf 00 00 08 00 00 00  be 3c 02 00 ae bf 00 00  |.........<......|
00067f20  06 00 00 00 d2 43 02 00  ae bf 00 00 ea 4a 02 00  |.....C.......J..|
00067f30  9a b8 00 00 ea 4a 02 00  82 b1 00 00 08 00 00 00  |.....J..........|
00067f40  ea 4a 02 00 2a 95 00 00  06 00 00 00 ea 4a 02 00  |.J..*........J..|
00067f50  16 8e 00 00 d2 43 02 00  fe 86 00 00 be 3c 02 00  |.....C.......<..|
00067f60  fe 86 00 00 08 00 00 00  66 20 02 00 fe 86 00 00  |........f ......|
00067f70  06 00 00 00 4e 19 02 00  fe 86 00 00 3a 12 02 00  |....N.......:...|
00067f80  16 8e 00 00 3a 12 02 00  2a 95 00 00 08 00 00 00  |....:...*.......|
00067f90  3a 12 02 00 82 b1 00 00  06 00 00 00 3a 12 02 00  |:...........:...|
00067fa0  9a b8 00 00 4e 19 02 00  ae bf 00 00 66 20 02 00  |....N.......f ..|
00067fb0  ae bf 00 00 08 00 00 00  7a 27 02 00 ae bf 00 00  |........z'......|
00067fc0  08 00 00 00 7a 27 02 00  ae bf 00 00 05 00 00 00  |....z'..........|
00067fd0  00 00 00 00 02 00 00 00  f4 00 00 00 c6 58 02 00  |.............X..|
00067fe0  ae 86 00 00 16 92 02 00  fe bf 00 00 ff ff ff ff  |................|
00067ff0  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
00068000  56 6e 02 00 ae bf 00 00  08 00 00 00 9a 83 02 00  |Vn..............|
00068010  ae bf 00 00 06 00 00 00  ae 8a 02 00 ae bf 00 00  |................|
00068020  c6 91 02 00 9a b8 00 00  c6 91 02 00 82 b1 00 00  |................|
00068030  08 00 00 00 c6 91 02 00  2a 95 00 00 06 00 00 00  |........*.......|
00068040  c6 91 02 00 16 8e 00 00  ae 8a 02 00 fe 86 00 00  |................|
00068050  9a 83 02 00 fe 86 00 00  08 00 00 00 42 67 02 00  |............Bg..|
00068060  fe 86 00 00 06 00 00 00  2a 60 02 00 fe 86 00 00  |........*`......|
00068070  16 59 02 00 16 8e 00 00  16 59 02 00 2a 95 00 00  |.Y.......Y..*...|
00068080  08 00 00 00 16 59 02 00  82 b1 00 00 06 00 00 00  |.....Y..........|
00068090  16 59 02 00 9a b8 00 00  2a 60 02 00 ae bf 00 00  |.Y......*`......|
000680a0  42 67 02 00 ae bf 00 00  08 00 00 00 56 6e 02 00  |Bg..........Vn..|
000680b0  ae bf 00 00 08 00 00 00  56 6e 02 00 ae bf 00 00  |........Vn......|
000680c0  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
000680d0  6e cb 01 00 d2 3f 00 00  86 4a 02 00 22 79 00 00  |n....?...J.."y..|
000680e0  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
000680f0  02 00 00 00 2a fb 01 00  d2 78 00 00 08 00 00 00  |....*....x......|
00068100  be 3c 02 00 d2 78 00 00  06 00 00 00 d2 43 02 00  |.<...x.......C..|
00068110  d2 78 00 00 36 4a 02 00  c6 71 00 00 36 4a 02 00  |.x..6J...q..6J..|
00068120  ba 6a 00 00 08 00 00 00  36 4a 02 00 8a 4e 00 00  |.j......6J...N..|
00068130  06 00 00 00 36 4a 02 00  7e 47 00 00 d2 43 02 00  |....6J..~G...C..|
00068140  22 40 00 00 be 3c 02 00  22 40 00 00 08 00 00 00  |"@...<.."@......|
00068150  8a d9 01 00 22 40 00 00  06 00 00 00 72 d2 01 00  |...."@......r...|
00068160  22 40 00 00 be cb 01 00  7e 47 00 00 be cb 01 00  |"@......~G......|
00068170  8a 4e 00 00 08 00 00 00  be cb 01 00 ba 6a 00 00  |.N...........j..|
00068180  06 00 00 00 be cb 01 00  c6 71 00 00 72 d2 01 00  |.........q..r...|
00068190  d2 78 00 00 8a d9 01 00  d2 78 00 00 08 00 00 00  |.x.......x......|
000681a0  2a fb 01 00 d2 78 00 00  08 00 00 00 2a fb 01 00  |*....x......*...|
000681b0  d2 78 00 00 05 00 00 00  00 00 00 00 02 00 00 00  |.x..............|
000681c0  f4 00 00 00 c6 58 02 00  d2 3f 00 00 16 92 02 00  |.....X...?......|
000681d0  22 79 00 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |"y..............|
000681e0  40 00 a0 a0 02 00 00 00  56 6e 02 00 d2 78 00 00  |@.......Vn...x..|
000681f0  08 00 00 00 9a 83 02 00  d2 78 00 00 06 00 00 00  |.........x......|
00068200  ae 8a 02 00 d2 78 00 00  c6 91 02 00 be 71 00 00  |.....x.......q..|
00068210  c6 91 02 00 a6 6a 00 00  08 00 00 00 c6 91 02 00  |.....j..........|
00068220  4e 4e 00 00 06 00 00 00  c6 91 02 00 3a 47 00 00  |NN..........:G..|
00068230  ae 8a 02 00 22 40 00 00  9a 83 02 00 22 40 00 00  |...."@......"@..|
00068240  08 00 00 00 42 67 02 00  22 40 00 00 06 00 00 00  |....Bg.."@......|
00068250  2a 60 02 00 22 40 00 00  16 59 02 00 3a 47 00 00  |*`.."@...Y..:G..|
00068260  16 59 02 00 4e 4e 00 00  08 00 00 00 16 59 02 00  |.Y..NN.......Y..|
00068270  a6 6a 00 00 06 00 00 00  16 59 02 00 be 71 00 00  |.j.......Y...q..|
00068280  2a 60 02 00 d2 78 00 00  42 67 02 00 d2 78 00 00  |*`...x..Bg...x..|
00068290  08 00 00 00 56 6e 02 00  d2 78 00 00 08 00 00 00  |....Vn...x......|
000682a0  56 6e 02 00 d2 78 00 00  05 00 00 00 00 00 00 00  |Vn...x..........|
000682b0  02 00 00 00 f4 00 00 00  76 9f 02 00 5a 40 00 00  |........v...Z@..|
000682c0  c6 d8 02 00 72 bf 00 00  ff ff ff ff 00 00 00 00  |....r...........|
000682d0  a0 00 00 00 40 00 a0 a0  02 00 00 00 c6 9f 02 00  |....@...........|
000682e0  1a 70 00 00 08 00 00 00  c6 9f 02 00 aa b1 00 00  |.p..............|
000682f0  06 00 00 00 c6 9f 02 00  c2 b8 00 00 d2 a6 02 00  |................|
00068300  22 bf 00 00 de ad 02 00  22 bf 00 00 08 00 00 00  |".......".......|
00068310  0e ca 02 00 22 bf 00 00  06 00 00 00 1a d1 02 00  |...."...........|
00068320  22 bf 00 00 76 d8 02 00  be b8 00 00 76 d8 02 00  |"...v.......v...|
00068330  aa b1 00 00 08 00 00 00  76 d8 02 00 76 4e 00 00  |........v...vN..|
00068340  06 00 00 00 76 d8 02 00  5e 47 00 00 1a d1 02 00  |....v...^G......|
00068350  aa 40 00 00 0e ca 02 00  aa 40 00 00 08 00 00 00  |.@.......@......|
00068360  de ad 02 00 ae 40 00 00  06 00 00 00 d2 a6 02 00  |.....@..........|
00068370  ae 40 00 00 c6 9f 02 00  62 47 00 00 c6 9f 02 00  |.@......bG......|
00068380  76 4e 00 00 08 00 00 00  c6 9f 02 00 1a 70 00 00  |vN...........p..|
00068390  08 00 00 00 c6 9f 02 00  1a 70 00 00 05 00 00 00  |.........p......|
000683a0  00 00 00 00 02 00 00 00  f4 00 00 00 76 9f 02 00  |............v...|
000683b0  14 ce 00 00 c6 d8 02 00  2c 4d 01 00 ff ff ff ff  |........,M......|
000683c0  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
000683d0  c6 9f 02 00 d4 fd 00 00  08 00 00 00 c6 9f 02 00  |................|
000683e0  64 3f 01 00 06 00 00 00  c6 9f 02 00 7c 46 01 00  |d?..........|F..|
000683f0  d2 a6 02 00 dc 4c 01 00  de ad 02 00 dc 4c 01 00  |.....L.......L..|
00068400  08 00 00 00 0e ca 02 00  dc 4c 01 00 06 00 00 00  |.........L......|
00068410  1a d1 02 00 dc 4c 01 00  76 d8 02 00 78 46 01 00  |.....L..v...xF..|
00068420  76 d8 02 00 64 3f 01 00  08 00 00 00 76 d8 02 00  |v...d?......v...|
00068430  30 dc 00 00 06 00 00 00  76 d8 02 00 18 d5 00 00  |0.......v.......|
00068440  1a d1 02 00 64 ce 00 00  0e ca 02 00 64 ce 00 00  |....d.......d...|
00068450  08 00 00 00 de ad 02 00  68 ce 00 00 06 00 00 00  |........h.......|
00068460  d2 a6 02 00 68 ce 00 00  c6 9f 02 00 1c d5 00 00  |....h...........|
00068470  c6 9f 02 00 30 dc 00 00  08 00 00 00 c6 9f 02 00  |....0...........|
00068480  d4 fd 00 00 08 00 00 00  c6 9f 02 00 d4 fd 00 00  |................|
00068490  05 00 00 00 00 00 00 00  01 00 00 00 38 00 00 00  |............8...|
000684a0  0a da 01 00 56 70 01 00  4a fa 01 00 96 86 01 00  |....Vp..J.......|
000684b0  00 00 00 00 00 ff ff ff  01 00 00 00 00 1e 00 00  |................|
000684c0  00 1e 00 00 8a d9 01 00  d6 70 01 00 37 37 00 00  |.........p..77..|
000684d0  01 00 00 00 38 00 00 00  e6 20 02 00 56 70 01 00  |....8.... ..Vp..|
000684e0  26 41 02 00 96 86 01 00  00 00 00 00 00 ff ff ff  |&A..............|
000684f0  01 00 00 00 00 1e 00 00  00 1e 00 00 66 20 02 00  |............f ..|
00068500  d6 70 01 00 37 34 00 00  01 00 00 00 38 00 00 00  |.p..74......8...|
00068510  82 67 02 00 d6 6f 01 00  82 83 02 00 56 87 01 00  |.g...o......V...|
00068520  00 00 00 00 00 ff ff ff  01 00 00 00 00 1e 00 00  |................|
00068530  00 1e 00 00 42 67 02 00  d6 70 01 00 39 31 00 00  |....Bg...p..91..|
00068540  01 00 00 00 38 00 00 00  ca d9 01 00 7a 29 01 00  |....8.......z)..|
00068550  4a fa 01 00 7a 40 01 00  00 00 00 00 00 ff ff ff  |J...z@..........|
00068560  01 00 00 00 00 1e 00 00  00 1e 00 00 8a d9 01 00  |................|
00068570  fa 29 01 00 32 37 00 00  01 00 00 00 38 00 00 00  |.)..27......8...|
00068580  a6 20 02 00 7a 29 01 00  e6 40 02 00 7a 40 01 00  |. ..z)...@..z@..|
00068590  00 00 00 00 00 ff ff ff  01 00 00 00 00 1e 00 00  |................|
000685a0  00 1e 00 00 66 20 02 00  fa 29 01 00 34 32 00 00  |....f ...)..42..|
000685b0  01 00 00 00 38 00 00 00  82 67 02 00 fa 28 01 00  |....8....g...(..|
000685c0  c2 87 02 00 7a 40 01 00  00 00 00 00 00 ff ff ff  |....z@..........|
000685d0  01 00 00 00 00 1e 00 00  00 1e 00 00 42 67 02 00  |............Bg..|
000685e0  fa 29 01 00 34 33 00 00  01 00 00 00 38 00 00 00  |.)..43......8...|
000685f0  5e ae 02 00 d7 6f 01 00  9e ce 02 00 57 87 01 00  |^....o......W...|
00068600  00 00 00 00 00 ff ff ff  01 00 00 00 00 1e 00 00  |................|
00068610  00 1e 00 00 1e ae 02 00  d7 70 01 00 35 39 00 00  |.........p..59..|
00068620  01 00 00 00 38 00 00 00  f2 d0 01 00 9e e2 00 00  |....8...........|
00068630  b2 00 02 00 9e f9 00 00  00 00 00 00 00 ff ff ff  |................|
00068640  01 00 00 00 00 1e 00 00  00 1e 00 00 72 cf 01 00  |............r...|
00068650  1e e3 00 00 31 32 32 00  01 00 00 00 38 00 00 00  |....122.....8...|
00068660  ce 17 02 00 1e e2 00 00  8e 47 02 00 9e f9 00 00  |.........G......|
00068670  00 00 00 00 00 ff ff ff  01 00 00 00 00 1e 00 00  |................|
00068680  00 1e 00 00 4e 16 02 00  1e e3 00 00 31 32 33 00  |....N.......123.|
00068690  01 00 00 00 38 00 00 00  82 67 02 00 1e e2 00 00  |....8....g......|
000686a0  c2 87 02 00 9e f9 00 00  00 00 00 00 00 ff ff ff  |................|
000686b0  01 00 00 00 00 1e 00 00  00 1e 00 00 42 67 02 00  |............Bg..|
000686c0  1e e3 00 00 32 36 00 00  01 00 00 00 38 00 00 00  |....26......8...|
000686d0  5e ae 02 00 8c 05 01 00  1e cf 02 00 0c 1d 01 00  |^...............|
000686e0  00 00 00 00 00 ff ff ff  01 00 00 00 00 1e 00 00  |................|
000686f0  00 1e 00 00 1e ae 02 00  8c 06 01 00 35 38 00 00  |............58..|
00068700  01 00 00 00 38 00 00 00  f2 d0 01 00 42 9b 00 00  |....8.......B...|
00068710  f2 00 02 00 c2 b2 00 00  00 00 00 00 00 ff ff ff  |................|
00068720  01 00 00 00 00 1e 00 00  00 1e 00 00 72 cf 01 00  |............r...|
00068730  42 9c 00 00 31 30 37 00  01 00 00 00 38 00 00 00  |B...107.....8...|
00068740  ce 17 02 00 c2 9b 00 00  ce 47 02 00 c2 b2 00 00  |.........G......|
00068750  00 00 00 00 00 ff ff ff  01 00 00 00 00 1e 00 00  |................|
00068760  00 1e 00 00 4e 16 02 00  42 9c 00 00 31 32 34 00  |....N...B...124.|
00068770  01 00 00 00 38 00 00 00  aa 5e 02 00 42 9b 00 00  |....8....^..B...|
00068780  ea 8e 02 00 c2 b2 00 00  00 00 00 00 00 ff ff ff  |................|
00068790  01 00 00 00 00 1e 00 00  00 1e 00 00 2a 5d 02 00  |............*]..|
000687a0  42 9c 00 00 31 30 38 00  01 00 00 00 38 00 00 00  |B...108.....8...|
000687b0  5e ae 02 00 d2 77 00 00  9e ce 02 00 52 8f 00 00  |^....w......R...|
000687c0  00 00 00 00 00 ff ff ff  01 00 00 00 00 1e 00 00  |................|
000687d0  00 1e 00 00 1e ae 02 00  d2 78 00 00 36 30 00 00  |.........x..60..|
000687e0  01 00 00 00 38 00 00 00  c2 67 02 00 66 54 00 00  |....8....g..fT..|
000687f0  c2 87 02 00 e6 6b 00 00  00 00 00 00 00 ff ff ff  |.....k..........|
00068800  01 00 00 00 00 1e 00 00  00 1e 00 00 42 67 02 00  |............Bg..|
00068810  66 55 00 00 37 36 00 00  01 00 00 00 38 00 00 00  |fU..76......8...|
00068820  62 f4 01 00 66 54 00 00  22 24 02 00 e6 6b 00 00  |b...fT.."$...k..|
00068830  00 00 00 00 00 ff ff ff  01 00 00 00 00 1e 00 00  |................|
00068840  00 1e 00 00 e2 f2 01 00  66 55 00 00 31 30 36 00  |........fU..106.|
00068850  06 00 00 00 74 57 00 00  ba 13 00 00 92 1a 02 00  |....tW..........|
00068860  12 2d 04 00 72 cb 03 00  20 20 20 20 20 20 20 20  |.-..r...        |
00068870  20 20 20 20 02 00 00 00  e8 00 00 00 ba 13 00 00  |    ............|
00068880  6e 61 02 00 4a 62 00 00  be 9a 02 00 00 ff ff ff  |na..Jb..........|
00068890  00 00 00 00 a0 00 00 00  42 00 00 00 02 00 00 00  |........B.......|
000688a0  4a 29 00 00 6e 9a 02 00  08 00 00 00 ce 53 00 00  |J)..n........S..|
000688b0  6e 9a 02 00 06 00 00 00  e6 5a 00 00 6e 9a 02 00  |n........Z..n...|
000688c0  fa 61 00 00 5a 93 02 00  fa 61 00 00 42 8c 02 00  |.a..Z....a..B...|
000688d0  08 00 00 00 fa 61 00 00  ea 6f 02 00 06 00 00 00  |.....a...o......|
000688e0  fa 61 00 00 d6 68 02 00  e6 5a 00 00 be 61 02 00  |.a...h...Z...a..|
000688f0  ce 53 00 00 be 61 02 00  08 00 00 00 36 22 00 00  |.S...a......6"..|
00068900  be 61 02 00 06 00 00 00  1e 1b 00 00 be 61 02 00  |.a...........a..|
00068910  0a 14 00 00 d6 68 02 00  0a 14 00 00 ea 6f 02 00  |.....h.......o..|
00068920  08 00 00 00 0a 14 00 00  42 8c 02 00 06 00 00 00  |........B.......|
00068930  0a 14 00 00 5a 93 02 00  1e 1b 00 00 6e 9a 02 00  |....Z.......n...|
00068940  36 22 00 00 6e 9a 02 00  08 00 00 00 4a 29 00 00  |6"..n.......J)..|
00068950  6e 9a 02 00 05 00 00 00  00 00 00 00 02 00 00 00  |n...............|
00068960  f4 00 00 00 ba 13 00 00  02 36 03 00 0a 4d 00 00  |.........6...M..|
00068970  52 6f 03 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |Ro..............|
00068980  40 00 a0 a0 02 00 00 00  4a 29 00 00 02 6f 03 00  |@.......J)...o..|
00068990  08 00 00 00 8e 3e 00 00  02 6f 03 00 06 00 00 00  |.....>...o......|
000689a0  a2 45 00 00 02 6f 03 00  ba 4c 00 00 ee 67 03 00  |.E...o...L...g..|
000689b0  ba 4c 00 00 d6 60 03 00  08 00 00 00 ba 4c 00 00  |.L...`.......L..|
000689c0  7e 44 03 00 06 00 00 00  ba 4c 00 00 6a 3d 03 00  |~D.......L..j=..|
000689d0  a2 45 00 00 52 36 03 00  8e 3e 00 00 52 36 03 00  |.E..R6...>..R6..|
000689e0  08 00 00 00 36 22 00 00  52 36 03 00 06 00 00 00  |....6"..R6......|
000689f0  1e 1b 00 00 52 36 03 00  0a 14 00 00 6a 3d 03 00  |....R6......j=..|
00068a00  0a 14 00 00 7e 44 03 00  08 00 00 00 0a 14 00 00  |....~D..........|
00068a10  d6 60 03 00 06 00 00 00  0a 14 00 00 ee 67 03 00  |.`...........g..|
00068a20  1e 1b 00 00 02 6f 03 00  36 22 00 00 02 6f 03 00  |.....o..6"...o..|
00068a30  08 00 00 00 4a 29 00 00  02 6f 03 00 08 00 00 00  |....J)...o......|
00068a40  4a 29 00 00 02 6f 03 00  05 00 00 00 00 00 00 00  |J)...o..........|
00068a50  02 00 00 00 f4 00 00 00  96 5a 00 00 02 36 03 00  |.........Z...6..|
00068a60  e6 93 00 00 52 6f 03 00  ff ff ff ff 00 00 00 00  |....Ro..........|
00068a70  a0 00 00 00 40 00 a0 a0  02 00 00 00 26 70 00 00  |....@.......&p..|
00068a80  02 6f 03 00 08 00 00 00  6a 85 00 00 02 6f 03 00  |.o......j....o..|
00068a90  06 00 00 00 7e 8c 00 00  02 6f 03 00 96 93 00 00  |....~....o......|
00068aa0  ee 67 03 00 96 93 00 00  d6 60 03 00 08 00 00 00  |.g.......`......|
00068ab0  96 93 00 00 7e 44 03 00  06 00 00 00 96 93 00 00  |....~D..........|
00068ac0  6a 3d 03 00 7e 8c 00 00  52 36 03 00 6a 85 00 00  |j=..~...R6..j...|
00068ad0  52 36 03 00 08 00 00 00  12 69 00 00 52 36 03 00  |R6.......i..R6..|
00068ae0  06 00 00 00 fa 61 00 00  52 36 03 00 e6 5a 00 00  |.....a..R6...Z..|
00068af0  6a 3d 03 00 e6 5a 00 00  7e 44 03 00 08 00 00 00  |j=...Z..~D......|
00068b00  e6 5a 00 00 d6 60 03 00  06 00 00 00 e6 5a 00 00  |.Z...`.......Z..|
00068b10  ee 67 03 00 fa 61 00 00  02 6f 03 00 12 69 00 00  |.g...a...o...i..|
00068b20  02 6f 03 00 08 00 00 00  26 70 00 00 02 6f 03 00  |.o......&p...o..|
00068b30  08 00 00 00 26 70 00 00  02 6f 03 00 05 00 00 00  |....&p...o......|
00068b40  00 00 00 00 02 00 00 00  f4 00 00 00 72 a1 00 00  |............r...|
00068b50  02 36 03 00 c2 da 00 00  52 6f 03 00 ff ff ff ff  |.6......Ro......|
00068b60  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
00068b70  02 b7 00 00 02 6f 03 00  08 00 00 00 46 cc 00 00  |.....o......F...|
00068b80  02 6f 03 00 06 00 00 00  5a d3 00 00 02 6f 03 00  |.o......Z....o..|
00068b90  72 da 00 00 ee 67 03 00  72 da 00 00 d6 60 03 00  |r....g..r....`..|
00068ba0  08 00 00 00 72 da 00 00  7e 44 03 00 06 00 00 00  |....r...~D......|
00068bb0  72 da 00 00 6a 3d 03 00  5a d3 00 00 52 36 03 00  |r...j=..Z...R6..|
00068bc0  46 cc 00 00 52 36 03 00  08 00 00 00 ee af 00 00  |F...R6..........|
00068bd0  52 36 03 00 06 00 00 00  d6 a8 00 00 52 36 03 00  |R6..........R6..|
00068be0  c2 a1 00 00 6a 3d 03 00  c2 a1 00 00 7e 44 03 00  |....j=......~D..|
00068bf0  08 00 00 00 c2 a1 00 00  d6 60 03 00 06 00 00 00  |.........`......|
00068c00  c2 a1 00 00 ee 67 03 00  d6 a8 00 00 02 6f 03 00  |.....g.......o..|
00068c10  ee af 00 00 02 6f 03 00  08 00 00 00 02 b7 00 00  |.....o..........|
00068c20  02 6f 03 00 08 00 00 00  02 b7 00 00 02 6f 03 00  |.o...........o..|
00068c30  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
00068c40  4e e8 00 00 02 36 03 00  9e 21 01 00 52 6f 03 00  |N....6...!..Ro..|
00068c50  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
00068c60  02 00 00 00 de fd 00 00  02 6f 03 00 08 00 00 00  |.........o......|
00068c70  22 13 01 00 02 6f 03 00  06 00 00 00 36 1a 01 00  |"....o......6...|
00068c80  02 6f 03 00 4e 21 01 00  ee 67 03 00 4e 21 01 00  |.o..N!...g..N!..|
00068c90  d6 60 03 00 08 00 00 00  4e 21 01 00 7e 44 03 00  |.`......N!..~D..|
00068ca0  06 00 00 00 4e 21 01 00  6a 3d 03 00 36 1a 01 00  |....N!..j=..6...|
00068cb0  52 36 03 00 22 13 01 00  52 36 03 00 08 00 00 00  |R6.."...R6......|
00068cc0  ca f6 00 00 52 36 03 00  06 00 00 00 b2 ef 00 00  |....R6..........|
00068cd0  52 36 03 00 9e e8 00 00  6a 3d 03 00 9e e8 00 00  |R6......j=......|
00068ce0  7e 44 03 00 08 00 00 00  9e e8 00 00 d6 60 03 00  |~D...........`..|
00068cf0  06 00 00 00 9e e8 00 00  ee 67 03 00 b2 ef 00 00  |.........g......|
00068d00  02 6f 03 00 ca f6 00 00  02 6f 03 00 08 00 00 00  |.o.......o......|
00068d10  de fd 00 00 02 6f 03 00  08 00 00 00 de fd 00 00  |.....o..........|
00068d20  02 6f 03 00 05 00 00 00  00 00 00 00 02 00 00 00  |.o..............|
00068d30  f4 00 00 00 2a 2f 01 00  02 36 03 00 7a 68 01 00  |....*/...6..zh..|
00068d40  52 6f 03 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |Ro..............|
00068d50  40 00 a0 a0 02 00 00 00  ba 44 01 00 02 6f 03 00  |@........D...o..|
00068d60  08 00 00 00 fe 59 01 00  02 6f 03 00 06 00 00 00  |.....Y...o......|
00068d70  12 61 01 00 02 6f 03 00  2a 68 01 00 ee 67 03 00  |.a...o..*h...g..|
00068d80  2a 68 01 00 d6 60 03 00  08 00 00 00 2a 68 01 00  |*h...`......*h..|
00068d90  7e 44 03 00 06 00 00 00  2a 68 01 00 6a 3d 03 00  |~D......*h..j=..|
00068da0  12 61 01 00 52 36 03 00  fe 59 01 00 52 36 03 00  |.a..R6...Y..R6..|
00068db0  08 00 00 00 a6 3d 01 00  52 36 03 00 06 00 00 00  |.....=..R6......|
00068dc0  8e 36 01 00 52 36 03 00  7a 2f 01 00 6a 3d 03 00  |.6..R6..z/..j=..|
00068dd0  7a 2f 01 00 7e 44 03 00  08 00 00 00 7a 2f 01 00  |z/..~D......z/..|
00068de0  d6 60 03 00 06 00 00 00  7a 2f 01 00 ee 67 03 00  |.`......z/...g..|
00068df0  8e 36 01 00 02 6f 03 00  a6 3d 01 00 02 6f 03 00  |.6...o...=...o..|
00068e00  08 00 00 00 ba 44 01 00  02 6f 03 00 08 00 00 00  |.....D...o......|
00068e10  ba 44 01 00 02 6f 03 00  05 00 00 00 00 00 00 00  |.D...o..........|
00068e20  02 00 00 00 f4 00 00 00  06 76 01 00 02 36 03 00  |.........v...6..|
00068e30  56 af 01 00 52 6f 03 00  ff ff ff ff 00 00 00 00  |V...Ro..........|
00068e40  a0 00 00 00 40 00 a0 a0  02 00 00 00 96 8b 01 00  |....@...........|
00068e50  02 6f 03 00 08 00 00 00  da a0 01 00 02 6f 03 00  |.o...........o..|
00068e60  06 00 00 00 ee a7 01 00  02 6f 03 00 06 af 01 00  |.........o......|
00068e70  ee 67 03 00 06 af 01 00  d6 60 03 00 08 00 00 00  |.g.......`......|
00068e80  06 af 01 00 7e 44 03 00  06 00 00 00 06 af 01 00  |....~D..........|
00068e90  6a 3d 03 00 ee a7 01 00  52 36 03 00 da a0 01 00  |j=......R6......|
00068ea0  52 36 03 00 08 00 00 00  82 84 01 00 52 36 03 00  |R6..........R6..|
00068eb0  06 00 00 00 6a 7d 01 00  52 36 03 00 56 76 01 00  |....j}..R6..Vv..|
00068ec0  6a 3d 03 00 56 76 01 00  7e 44 03 00 08 00 00 00  |j=..Vv..~D......|
00068ed0  56 76 01 00 d6 60 03 00  06 00 00 00 56 76 01 00  |Vv...`......Vv..|
00068ee0  ee 67 03 00 6a 7d 01 00  02 6f 03 00 82 84 01 00  |.g..j}...o......|
00068ef0  02 6f 03 00 08 00 00 00  96 8b 01 00 02 6f 03 00  |.o...........o..|
00068f00  08 00 00 00 96 8b 01 00  02 6f 03 00 05 00 00 00  |.........o......|
00068f10  00 00 00 00 02 00 00 00  f4 00 00 00 e2 bc 01 00  |................|
00068f20  02 36 03 00 32 f6 01 00  52 6f 03 00 ff ff ff ff  |.6..2...Ro......|
00068f30  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
00068f40  72 d2 01 00 02 6f 03 00  08 00 00 00 b6 e7 01 00  |r....o..........|
00068f50  02 6f 03 00 06 00 00 00  ca ee 01 00 02 6f 03 00  |.o...........o..|
00068f60  e2 f5 01 00 ee 67 03 00  e2 f5 01 00 d6 60 03 00  |.....g.......`..|
00068f70  08 00 00 00 e2 f5 01 00  7e 44 03 00 06 00 00 00  |........~D......|
00068f80  e2 f5 01 00 6a 3d 03 00  ca ee 01 00 52 36 03 00  |....j=......R6..|
00068f90  b6 e7 01 00 52 36 03 00  08 00 00 00 5e cb 01 00  |....R6......^...|
00068fa0  52 36 03 00 06 00 00 00  46 c4 01 00 52 36 03 00  |R6......F...R6..|
00068fb0  32 bd 01 00 6a 3d 03 00  32 bd 01 00 7e 44 03 00  |2...j=..2...~D..|
00068fc0  08 00 00 00 32 bd 01 00  d6 60 03 00 06 00 00 00  |....2....`......|
00068fd0  32 bd 01 00 ee 67 03 00  46 c4 01 00 02 6f 03 00  |2....g..F....o..|
00068fe0  5e cb 01 00 02 6f 03 00  08 00 00 00 72 d2 01 00  |^....o......r...|
00068ff0  02 6f 03 00 08 00 00 00  72 d2 01 00 02 6f 03 00  |.o......r....o..|
00069000  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
00069010  be 03 02 00 02 36 03 00  0e 3d 02 00 52 6f 03 00  |.....6...=..Ro..|
00069020  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
00069030  02 00 00 00 4e 19 02 00  02 6f 03 00 08 00 00 00  |....N....o......|
00069040  92 2e 02 00 02 6f 03 00  06 00 00 00 a6 35 02 00  |.....o.......5..|
00069050  02 6f 03 00 be 3c 02 00  ee 67 03 00 be 3c 02 00  |.o...<...g...<..|
00069060  d6 60 03 00 08 00 00 00  be 3c 02 00 7e 44 03 00  |.`.......<..~D..|
00069070  06 00 00 00 be 3c 02 00  6a 3d 03 00 a6 35 02 00  |.....<..j=...5..|
00069080  52 36 03 00 92 2e 02 00  52 36 03 00 08 00 00 00  |R6......R6......|
00069090  3a 12 02 00 52 36 03 00  06 00 00 00 22 0b 02 00  |:...R6......"...|
000690a0  52 36 03 00 0e 04 02 00  6a 3d 03 00 0e 04 02 00  |R6......j=......|
000690b0  7e 44 03 00 08 00 00 00  0e 04 02 00 d6 60 03 00  |~D...........`..|
000690c0  06 00 00 00 0e 04 02 00  ee 67 03 00 22 0b 02 00  |.........g.."...|
000690d0  02 6f 03 00 3a 12 02 00  02 6f 03 00 08 00 00 00  |.o..:....o......|
000690e0  4e 19 02 00 02 6f 03 00  08 00 00 00 4e 19 02 00  |N....o......N...|
000690f0  02 6f 03 00 05 00 00 00  00 00 00 00 02 00 00 00  |.o..............|
00069100  f4 00 00 00 9a 4a 02 00  02 36 03 00 ea 83 02 00  |.....J...6......|
00069110  52 6f 03 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |Ro..............|
00069120  40 00 a0 a0 02 00 00 00  2a 60 02 00 02 6f 03 00  |@.......*`...o..|
00069130  08 00 00 00 6e 75 02 00  02 6f 03 00 06 00 00 00  |....nu...o......|
00069140  82 7c 02 00 02 6f 03 00  9a 83 02 00 ee 67 03 00  |.|...o.......g..|
00069150  9a 83 02 00 d6 60 03 00  08 00 00 00 9a 83 02 00  |.....`..........|
00069160  7e 44 03 00 06 00 00 00  9a 83 02 00 6a 3d 03 00  |~D..........j=..|
00069170  82 7c 02 00 52 36 03 00  6e 75 02 00 52 36 03 00  |.|..R6..nu..R6..|
00069180  08 00 00 00 16 59 02 00  52 36 03 00 06 00 00 00  |.....Y..R6......|
00069190  fe 51 02 00 52 36 03 00  ea 4a 02 00 6a 3d 03 00  |.Q..R6...J..j=..|
000691a0  ea 4a 02 00 7e 44 03 00  08 00 00 00 ea 4a 02 00  |.J..~D.......J..|
000691b0  d6 60 03 00 06 00 00 00  ea 4a 02 00 ee 67 03 00  |.`.......J...g..|
000691c0  fe 51 02 00 02 6f 03 00  16 59 02 00 02 6f 03 00  |.Q...o...Y...o..|
000691d0  08 00 00 00 2a 60 02 00  02 6f 03 00 08 00 00 00  |....*`...o......|
000691e0  2a 60 02 00 02 6f 03 00  05 00 00 00 00 00 00 00  |*`...o..........|
000691f0  02 00 00 00 f4 00 00 00  76 91 02 00 02 36 03 00  |........v....6..|
00069200  c6 ca 02 00 52 6f 03 00  ff ff ff ff 00 00 00 00  |....Ro..........|
00069210  a0 00 00 00 40 00 a0 a0  02 00 00 00 06 a7 02 00  |....@...........|
00069220  02 6f 03 00 08 00 00 00  4a bc 02 00 02 6f 03 00  |.o......J....o..|
00069230  06 00 00 00 5e c3 02 00  02 6f 03 00 76 ca 02 00  |....^....o..v...|
00069240  ee 67 03 00 76 ca 02 00  d6 60 03 00 08 00 00 00  |.g..v....`......|
00069250  76 ca 02 00 7e 44 03 00  06 00 00 00 76 ca 02 00  |v...~D......v...|
00069260  6a 3d 03 00 5e c3 02 00  52 36 03 00 4a bc 02 00  |j=..^...R6..J...|
00069270  52 36 03 00 08 00 00 00  f2 9f 02 00 52 36 03 00  |R6..........R6..|
00069280  06 00 00 00 da 98 02 00  52 36 03 00 c6 91 02 00  |........R6......|
00069290  6a 3d 03 00 c6 91 02 00  7e 44 03 00 08 00 00 00  |j=......~D......|
000692a0  c6 91 02 00 d6 60 03 00  06 00 00 00 c6 91 02 00  |.....`..........|
000692b0  ee 67 03 00 da 98 02 00  02 6f 03 00 f2 9f 02 00  |.g.......o......|
000692c0  02 6f 03 00 08 00 00 00  06 a7 02 00 02 6f 03 00  |.o...........o..|
000692d0  08 00 00 00 06 a7 02 00  02 6f 03 00 05 00 00 00  |.........o......|
000692e0  00 00 00 00 02 00 00 00  f4 00 00 00 52 d8 02 00  |............R...|
000692f0  02 36 03 00 a2 11 03 00  52 6f 03 00 ff ff ff ff  |.6......Ro......|
00069300  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
00069310  e2 ed 02 00 02 6f 03 00  08 00 00 00 26 03 03 00  |.....o......&...|
00069320  02 6f 03 00 06 00 00 00  3a 0a 03 00 02 6f 03 00  |.o......:....o..|
00069330  52 11 03 00 ee 67 03 00  52 11 03 00 d6 60 03 00  |R....g..R....`..|
00069340  08 00 00 00 52 11 03 00  7e 44 03 00 06 00 00 00  |....R...~D......|
00069350  52 11 03 00 6a 3d 03 00  3a 0a 03 00 52 36 03 00  |R...j=..:...R6..|
00069360  26 03 03 00 52 36 03 00  08 00 00 00 ce e6 02 00  |&...R6..........|
00069370  52 36 03 00 06 00 00 00  b6 df 02 00 52 36 03 00  |R6..........R6..|
00069380  a2 d8 02 00 6a 3d 03 00  a2 d8 02 00 7e 44 03 00  |....j=......~D..|
00069390  08 00 00 00 a2 d8 02 00  d6 60 03 00 06 00 00 00  |.........`......|
000693a0  a2 d8 02 00 ee 67 03 00  b6 df 02 00 02 6f 03 00  |.....g.......o..|
000693b0  ce e6 02 00 02 6f 03 00  08 00 00 00 e2 ed 02 00  |.....o..........|
000693c0  02 6f 03 00 08 00 00 00  e2 ed 02 00 02 6f 03 00  |.o...........o..|
000693d0  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
000693e0  2e 1f 03 00 02 36 03 00  7e 58 03 00 52 6f 03 00  |.....6..~X..Ro..|
000693f0  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
00069400  02 00 00 00 be 34 03 00  02 6f 03 00 08 00 00 00  |.....4...o......|
00069410  02 4a 03 00 02 6f 03 00  06 00 00 00 16 51 03 00  |.J...o.......Q..|
00069420  02 6f 03 00 2e 58 03 00  ee 67 03 00 2e 58 03 00  |.o...X...g...X..|
00069430  d6 60 03 00 08 00 00 00  2e 58 03 00 7e 44 03 00  |.`.......X..~D..|
00069440  06 00 00 00 2e 58 03 00  6a 3d 03 00 16 51 03 00  |.....X..j=...Q..|
00069450  52 36 03 00 02 4a 03 00  52 36 03 00 08 00 00 00  |R6...J..R6......|
00069460  aa 2d 03 00 52 36 03 00  06 00 00 00 92 26 03 00  |.-..R6.......&..|
00069470  52 36 03 00 7e 1f 03 00  6a 3d 03 00 7e 1f 03 00  |R6..~...j=..~...|
00069480  7e 44 03 00 08 00 00 00  7e 1f 03 00 d6 60 03 00  |~D......~....`..|
00069490  06 00 00 00 7e 1f 03 00  ee 67 03 00 92 26 03 00  |....~....g...&..|
000694a0  02 6f 03 00 aa 2d 03 00  02 6f 03 00 08 00 00 00  |.o...-...o......|
000694b0  be 34 03 00 02 6f 03 00  08 00 00 00 be 34 03 00  |.4...o.......4..|
000694c0  02 6f 03 00 05 00 00 00  00 00 00 00 02 00 00 00  |.o..............|
000694d0  f4 00 00 00 0a 66 03 00  02 36 03 00 5a 9f 03 00  |.....f...6..Z...|
000694e0  52 6f 03 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |Ro..............|
000694f0  40 00 a0 a0 02 00 00 00  9a 7b 03 00 02 6f 03 00  |@........{...o..|
00069500  08 00 00 00 de 90 03 00  02 6f 03 00 06 00 00 00  |.........o......|
00069510  f2 97 03 00 02 6f 03 00  0a 9f 03 00 ee 67 03 00  |.....o.......g..|
00069520  0a 9f 03 00 d6 60 03 00  08 00 00 00 0a 9f 03 00  |.....`..........|
00069530  7e 44 03 00 06 00 00 00  0a 9f 03 00 6a 3d 03 00  |~D..........j=..|
00069540  f2 97 03 00 52 36 03 00  de 90 03 00 52 36 03 00  |....R6......R6..|
00069550  08 00 00 00 86 74 03 00  52 36 03 00 06 00 00 00  |.....t..R6......|
00069560  6e 6d 03 00 52 36 03 00  5a 66 03 00 6a 3d 03 00  |nm..R6..Zf..j=..|
00069570  5a 66 03 00 7e 44 03 00  08 00 00 00 5a 66 03 00  |Zf..~D......Zf..|
00069580  d6 60 03 00 06 00 00 00  5a 66 03 00 ee 67 03 00  |.`......Zf...g..|
00069590  6e 6d 03 00 02 6f 03 00  86 74 03 00 02 6f 03 00  |nm...o...t...o..|
000695a0  08 00 00 00 9a 7b 03 00  02 6f 03 00 08 00 00 00  |.....{...o......|
000695b0  9a 7b 03 00 02 6f 03 00  05 00 00 00 00 00 00 00  |.{...o..........|
000695c0  02 00 00 00 f4 00 00 00  0a 66 03 00 22 92 03 00  |.........f.."...|
000695d0  5a 9f 03 00 72 cb 03 00  ff ff ff ff 00 00 00 00  |Z...r...........|
000695e0  a0 00 00 00 40 00 a0 a0  02 00 00 00 9a 7b 03 00  |....@........{..|
000695f0  22 cb 03 00 08 00 00 00  de 90 03 00 22 cb 03 00  |"..........."...|
00069600  06 00 00 00 f2 97 03 00  22 cb 03 00 0a 9f 03 00  |........".......|
00069610  0a c4 03 00 0a 9f 03 00  f6 bc 03 00 08 00 00 00  |................|
00069620  0a 9f 03 00 9e a0 03 00  06 00 00 00 0a 9f 03 00  |................|
00069630  86 99 03 00 f2 97 03 00  72 92 03 00 de 90 03 00  |........r.......|
00069640  72 92 03 00 08 00 00 00  86 74 03 00 72 92 03 00  |r........t..r...|
00069650  06 00 00 00 6e 6d 03 00  72 92 03 00 5a 66 03 00  |....nm..r...Zf..|
00069660  86 99 03 00 5a 66 03 00  9e a0 03 00 08 00 00 00  |....Zf..........|
00069670  5a 66 03 00 f6 bc 03 00  06 00 00 00 5a 66 03 00  |Zf..........Zf..|
00069680  0a c4 03 00 6e 6d 03 00  22 cb 03 00 86 74 03 00  |....nm.."....t..|
00069690  22 cb 03 00 08 00 00 00  9a 7b 03 00 22 cb 03 00  |"........{.."...|
000696a0  08 00 00 00 9a 7b 03 00  22 cb 03 00 05 00 00 00  |.....{..".......|
000696b0  00 00 00 00 02 00 00 00  f4 00 00 00 e6 ac 03 00  |................|
000696c0  22 92 03 00 36 e6 03 00  72 cb 03 00 ff ff ff ff  |"...6...r.......|
000696d0  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
000696e0  76 c2 03 00 22 cb 03 00  08 00 00 00 ba d7 03 00  |v..."...........|
000696f0  22 cb 03 00 06 00 00 00  ce de 03 00 22 cb 03 00  |"..........."...|
00069700  e6 e5 03 00 0a c4 03 00  e6 e5 03 00 f6 bc 03 00  |................|
00069710  08 00 00 00 e6 e5 03 00  9e a0 03 00 06 00 00 00  |................|
00069720  e6 e5 03 00 86 99 03 00  ce de 03 00 72 92 03 00  |............r...|
00069730  ba d7 03 00 72 92 03 00  08 00 00 00 62 bb 03 00  |....r.......b...|
00069740  72 92 03 00 06 00 00 00  4a b4 03 00 72 92 03 00  |r.......J...r...|
00069750  36 ad 03 00 86 99 03 00  36 ad 03 00 9e a0 03 00  |6.......6.......|
00069760  08 00 00 00 36 ad 03 00  f6 bc 03 00 06 00 00 00  |....6...........|
00069770  36 ad 03 00 0a c4 03 00  4a b4 03 00 22 cb 03 00  |6.......J..."...|
00069780  62 bb 03 00 22 cb 03 00  08 00 00 00 76 c2 03 00  |b...".......v...|
00069790  22 cb 03 00 08 00 00 00  76 c2 03 00 22 cb 03 00  |".......v..."...|
000697a0  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
000697b0  c2 f3 03 00 22 92 03 00  12 2d 04 00 72 cb 03 00  |...."....-..r...|
000697c0  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
000697d0  02 00 00 00 52 09 04 00  22 cb 03 00 08 00 00 00  |....R...".......|
000697e0  96 1e 04 00 22 cb 03 00  06 00 00 00 aa 25 04 00  |...."........%..|
000697f0  22 cb 03 00 c2 2c 04 00  0a c4 03 00 c2 2c 04 00  |"....,.......,..|
00069800  f6 bc 03 00 08 00 00 00  c2 2c 04 00 9e a0 03 00  |.........,......|
00069810  06 00 00 00 c2 2c 04 00  86 99 03 00 aa 25 04 00  |.....,.......%..|
00069820  72 92 03 00 96 1e 04 00  72 92 03 00 08 00 00 00  |r.......r.......|
00069830  3e 02 04 00 72 92 03 00  06 00 00 00 26 fb 03 00  |>...r.......&...|
00069840  72 92 03 00 12 f4 03 00  86 99 03 00 12 f4 03 00  |r...............|
00069850  9e a0 03 00 08 00 00 00  12 f4 03 00 f6 bc 03 00  |................|
00069860  06 00 00 00 12 f4 03 00  0a c4 03 00 26 fb 03 00  |............&...|
00069870  22 cb 03 00 3e 02 04 00  22 cb 03 00 08 00 00 00  |"...>...".......|
00069880  52 09 04 00 22 cb 03 00  08 00 00 00 52 09 04 00  |R...".......R...|
00069890  22 cb 03 00 05 00 00 00  00 00 00 00 02 00 00 00  |"...............|
000698a0  f4 00 00 00 2e 1f 03 00  22 92 03 00 7e 58 03 00  |........"...~X..|
000698b0  72 cb 03 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |r...............|
000698c0  40 00 a0 a0 02 00 00 00  be 34 03 00 22 cb 03 00  |@........4.."...|
000698d0  08 00 00 00 02 4a 03 00  22 cb 03 00 06 00 00 00  |.....J..".......|
000698e0  16 51 03 00 22 cb 03 00  2e 58 03 00 0a c4 03 00  |.Q.."....X......|
000698f0  2e 58 03 00 f6 bc 03 00  08 00 00 00 2e 58 03 00  |.X...........X..|
00069900  9e a0 03 00 06 00 00 00  2e 58 03 00 86 99 03 00  |.........X......|
00069910  16 51 03 00 72 92 03 00  02 4a 03 00 72 92 03 00  |.Q..r....J..r...|
00069920  08 00 00 00 aa 2d 03 00  72 92 03 00 06 00 00 00  |.....-..r.......|
00069930  92 26 03 00 72 92 03 00  7e 1f 03 00 86 99 03 00  |.&..r...~.......|
00069940  7e 1f 03 00 9e a0 03 00  08 00 00 00 7e 1f 03 00  |~...........~...|
00069950  f6 bc 03 00 06 00 00 00  7e 1f 03 00 0a c4 03 00  |........~.......|
00069960  92 26 03 00 22 cb 03 00  aa 2d 03 00 22 cb 03 00  |.&.."....-.."...|
00069970  08 00 00 00 be 34 03 00  22 cb 03 00 08 00 00 00  |.....4..".......|
00069980  be 34 03 00 22 cb 03 00  05 00 00 00 00 00 00 00  |.4.."...........|
00069990  02 00 00 00 f4 00 00 00  ba 13 00 00 22 92 03 00  |............"...|
000699a0  0a 4d 00 00 72 cb 03 00  ff ff ff ff 00 00 00 00  |.M..r...........|
000699b0  a0 00 00 00 40 00 a0 a0  02 00 00 00 4a 29 00 00  |....@.......J)..|
000699c0  22 cb 03 00 08 00 00 00  8e 3e 00 00 22 cb 03 00  |"........>.."...|
000699d0  06 00 00 00 a2 45 00 00  22 cb 03 00 ba 4c 00 00  |.....E.."....L..|
000699e0  0a c4 03 00 ba 4c 00 00  f6 bc 03 00 08 00 00 00  |.....L..........|
000699f0  ba 4c 00 00 9e a0 03 00  06 00 00 00 ba 4c 00 00  |.L...........L..|
00069a00  86 99 03 00 a2 45 00 00  72 92 03 00 8e 3e 00 00  |.....E..r....>..|
00069a10  72 92 03 00 08 00 00 00  36 22 00 00 72 92 03 00  |r.......6"..r...|
00069a20  06 00 00 00 1e 1b 00 00  72 92 03 00 0a 14 00 00  |........r.......|
00069a30  86 99 03 00 0a 14 00 00  9e a0 03 00 08 00 00 00  |................|
00069a40  0a 14 00 00 f6 bc 03 00  06 00 00 00 0a 14 00 00  |................|
00069a50  0a c4 03 00 1e 1b 00 00  22 cb 03 00 36 22 00 00  |........"...6"..|
00069a60  22 cb 03 00 08 00 00 00  4a 29 00 00 22 cb 03 00  |".......J).."...|
00069a70  08 00 00 00 4a 29 00 00  22 cb 03 00 05 00 00 00  |....J)..".......|
00069a80  00 00 00 00 02 00 00 00  f4 00 00 00 ec 76 00 00  |.............v..|
00069a90  26 ef 02 00 3c b0 00 00  76 28 03 00 ff ff ff ff  |&...<...v(......|
00069aa0  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
00069ab0  80 8c 00 00 26 28 03 00  08 00 00 00 c0 a1 00 00  |....&(..........|
00069ac0  26 28 03 00 06 00 00 00  d8 a8 00 00 26 28 03 00  |&(..........&(..|
00069ad0  ec af 00 00 12 21 03 00  ec af 00 00 fa 19 03 00  |.....!..........|
00069ae0  08 00 00 00 ec af 00 00  a2 fd 02 00 06 00 00 00  |................|
00069af0  ec af 00 00 8e f6 02 00  d8 a8 00 00 76 ef 02 00  |............v...|
00069b00  c0 a1 00 00 76 ef 02 00  08 00 00 00 68 85 00 00  |....v.......h...|
00069b10  76 ef 02 00 06 00 00 00  54 7e 00 00 76 ef 02 00  |v.......T~..v...|
00069b20  3c 77 00 00 8e f6 02 00  3c 77 00 00 a2 fd 02 00  |<w......<w......|
00069b30  08 00 00 00 3c 77 00 00  fa 19 03 00 06 00 00 00  |....<w..........|
00069b40  3c 77 00 00 12 21 03 00  54 7e 00 00 26 28 03 00  |<w...!..T~..&(..|
00069b50  68 85 00 00 26 28 03 00  08 00 00 00 80 8c 00 00  |h...&(..........|
00069b60  26 28 03 00 08 00 00 00  80 8c 00 00 26 28 03 00  |&(..........&(..|
00069b70  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
00069b80  c8 bd 00 00 26 ef 02 00  18 f7 00 00 76 28 03 00  |....&.......v(..|
00069b90  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
00069ba0  02 00 00 00 5c d3 00 00  26 28 03 00 08 00 00 00  |....\...&(......|
00069bb0  9c e8 00 00 26 28 03 00  06 00 00 00 b4 ef 00 00  |....&(..........|
00069bc0  26 28 03 00 c8 f6 00 00  12 21 03 00 c8 f6 00 00  |&(.......!......|
00069bd0  fa 19 03 00 08 00 00 00  c8 f6 00 00 a2 fd 02 00  |................|
00069be0  06 00 00 00 c8 f6 00 00  8e f6 02 00 b4 ef 00 00  |................|
00069bf0  76 ef 02 00 9c e8 00 00  76 ef 02 00 08 00 00 00  |v.......v.......|
00069c00  44 cc 00 00 76 ef 02 00  06 00 00 00 30 c5 00 00  |D...v.......0...|
00069c10  76 ef 02 00 18 be 00 00  8e f6 02 00 18 be 00 00  |v...............|
00069c20  a2 fd 02 00 08 00 00 00  18 be 00 00 fa 19 03 00  |................|
00069c30  06 00 00 00 18 be 00 00  12 21 03 00 30 c5 00 00  |.........!..0...|
00069c40  26 28 03 00 44 cc 00 00  26 28 03 00 08 00 00 00  |&(..D...&(......|
00069c50  5c d3 00 00 26 28 03 00  08 00 00 00 5c d3 00 00  |\...&(......\...|
00069c60  26 28 03 00 05 00 00 00  00 00 00 00 02 00 00 00  |&(..............|
00069c70  f4 00 00 00 a4 04 01 00  26 ef 02 00 f4 3d 01 00  |........&....=..|
00069c80  76 28 03 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |v(..............|
00069c90  40 00 a0 a0 02 00 00 00  38 1a 01 00 26 28 03 00  |@.......8...&(..|
00069ca0  08 00 00 00 78 2f 01 00  26 28 03 00 06 00 00 00  |....x/..&(......|
00069cb0  90 36 01 00 26 28 03 00  a4 3d 01 00 12 21 03 00  |.6..&(...=...!..|
00069cc0  a4 3d 01 00 fa 19 03 00  08 00 00 00 a4 3d 01 00  |.=...........=..|
00069cd0  a2 fd 02 00 06 00 00 00  a4 3d 01 00 8e f6 02 00  |.........=......|
00069ce0  90 36 01 00 76 ef 02 00  78 2f 01 00 76 ef 02 00  |.6..v...x/..v...|
00069cf0  08 00 00 00 20 13 01 00  76 ef 02 00 06 00 00 00  |.... ...v.......|
00069d00  0c 0c 01 00 76 ef 02 00  f4 04 01 00 8e f6 02 00  |....v...........|
00069d10  f4 04 01 00 a2 fd 02 00  08 00 00 00 f4 04 01 00  |................|
00069d20  fa 19 03 00 06 00 00 00  f4 04 01 00 12 21 03 00  |.............!..|
00069d30  0c 0c 01 00 26 28 03 00  20 13 01 00 26 28 03 00  |....&(.. ...&(..|
00069d40  08 00 00 00 38 1a 01 00  26 28 03 00 08 00 00 00  |....8...&(......|
00069d50  38 1a 01 00 26 28 03 00  05 00 00 00 00 00 00 00  |8...&(..........|
00069d60  02 00 00 00 f4 00 00 00  80 4b 01 00 26 ef 02 00  |.........K..&...|
00069d70  d0 84 01 00 76 28 03 00  ff ff ff ff 00 00 00 00  |....v(..........|
00069d80  a0 00 00 00 40 00 a0 a0  02 00 00 00 14 61 01 00  |....@........a..|
00069d90  26 28 03 00 08 00 00 00  54 76 01 00 26 28 03 00  |&(......Tv..&(..|
00069da0  06 00 00 00 6c 7d 01 00  26 28 03 00 80 84 01 00  |....l}..&(......|
00069db0  12 21 03 00 80 84 01 00  fa 19 03 00 08 00 00 00  |.!..............|
00069dc0  80 84 01 00 a2 fd 02 00  06 00 00 00 80 84 01 00  |................|
00069dd0  8e f6 02 00 6c 7d 01 00  76 ef 02 00 54 76 01 00  |....l}..v...Tv..|
00069de0  76 ef 02 00 08 00 00 00  fc 59 01 00 76 ef 02 00  |v........Y..v...|
00069df0  06 00 00 00 e8 52 01 00  76 ef 02 00 d0 4b 01 00  |.....R..v....K..|
00069e00  8e f6 02 00 d0 4b 01 00  a2 fd 02 00 08 00 00 00  |.....K..........|
00069e10  d0 4b 01 00 fa 19 03 00  06 00 00 00 d0 4b 01 00  |.K...........K..|
00069e20  12 21 03 00 e8 52 01 00  26 28 03 00 fc 59 01 00  |.!...R..&(...Y..|
00069e30  26 28 03 00 08 00 00 00  14 61 01 00 26 28 03 00  |&(.......a..&(..|
00069e40  08 00 00 00 14 61 01 00  26 28 03 00 05 00 00 00  |.....a..&(......|
00069e50  00 00 00 00 02 00 00 00  f4 00 00 00 5c 92 01 00  |............\...|
00069e60  26 ef 02 00 ac cb 01 00  76 28 03 00 ff ff ff ff  |&.......v(......|
00069e70  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
00069e80  f0 a7 01 00 26 28 03 00  08 00 00 00 30 bd 01 00  |....&(......0...|
00069e90  26 28 03 00 06 00 00 00  48 c4 01 00 26 28 03 00  |&(......H...&(..|
00069ea0  5c cb 01 00 12 21 03 00  5c cb 01 00 fa 19 03 00  |\....!..\.......|
00069eb0  08 00 00 00 5c cb 01 00  a2 fd 02 00 06 00 00 00  |....\...........|
00069ec0  5c cb 01 00 8e f6 02 00  48 c4 01 00 76 ef 02 00  |\.......H...v...|
00069ed0  30 bd 01 00 76 ef 02 00  08 00 00 00 d8 a0 01 00  |0...v...........|
00069ee0  76 ef 02 00 06 00 00 00  c4 99 01 00 76 ef 02 00  |v...........v...|
00069ef0  ac 92 01 00 8e f6 02 00  ac 92 01 00 a2 fd 02 00  |................|
00069f00  08 00 00 00 ac 92 01 00  fa 19 03 00 06 00 00 00  |................|
00069f10  ac 92 01 00 12 21 03 00  c4 99 01 00 26 28 03 00  |.....!......&(..|
00069f20  d8 a0 01 00 26 28 03 00  08 00 00 00 f0 a7 01 00  |....&(..........|
00069f30  26 28 03 00 08 00 00 00  f0 a7 01 00 26 28 03 00  |&(..........&(..|
00069f40  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
00069f50  38 d9 01 00 26 ef 02 00  88 12 02 00 76 28 03 00  |8...&.......v(..|
00069f60  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
00069f70  02 00 00 00 cc ee 01 00  26 28 03 00 08 00 00 00  |........&(......|
00069f80  0c 04 02 00 26 28 03 00  06 00 00 00 24 0b 02 00  |....&(......$...|
00069f90  26 28 03 00 38 12 02 00  12 21 03 00 38 12 02 00  |&(..8....!..8...|
00069fa0  fa 19 03 00 08 00 00 00  38 12 02 00 a2 fd 02 00  |........8.......|
00069fb0  06 00 00 00 38 12 02 00  8e f6 02 00 24 0b 02 00  |....8.......$...|
00069fc0  76 ef 02 00 0c 04 02 00  76 ef 02 00 08 00 00 00  |v.......v.......|
00069fd0  b4 e7 01 00 76 ef 02 00  06 00 00 00 a0 e0 01 00  |....v...........|
00069fe0  76 ef 02 00 88 d9 01 00  8e f6 02 00 88 d9 01 00  |v...............|
00069ff0  a2 fd 02 00 08 00 00 00  88 d9 01 00 fa 19 03 00  |................|
0006a000  06 00 00 00 88 d9 01 00  12 21 03 00 a0 e0 01 00  |.........!......|
0006a010  26 28 03 00 b4 e7 01 00  26 28 03 00 08 00 00 00  |&(......&(......|
0006a020  cc ee 01 00 26 28 03 00  08 00 00 00 cc ee 01 00  |....&(..........|
0006a030  26 28 03 00 05 00 00 00  00 00 00 00 02 00 00 00  |&(..............|
0006a040  f4 00 00 00 14 20 02 00  26 ef 02 00 64 59 02 00  |..... ..&...dY..|
0006a050  76 28 03 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |v(..............|
0006a060  40 00 a0 a0 02 00 00 00  a8 35 02 00 26 28 03 00  |@........5..&(..|
0006a070  08 00 00 00 e8 4a 02 00  26 28 03 00 06 00 00 00  |.....J..&(......|
0006a080  00 52 02 00 26 28 03 00  14 59 02 00 12 21 03 00  |.R..&(...Y...!..|
0006a090  14 59 02 00 fa 19 03 00  08 00 00 00 14 59 02 00  |.Y...........Y..|
0006a0a0  a2 fd 02 00 06 00 00 00  14 59 02 00 8e f6 02 00  |.........Y......|
0006a0b0  00 52 02 00 76 ef 02 00  e8 4a 02 00 76 ef 02 00  |.R..v....J..v...|
0006a0c0  08 00 00 00 90 2e 02 00  76 ef 02 00 06 00 00 00  |........v.......|
0006a0d0  7c 27 02 00 76 ef 02 00  64 20 02 00 8e f6 02 00  ||'..v...d ......|
0006a0e0  64 20 02 00 a2 fd 02 00  08 00 00 00 64 20 02 00  |d ..........d ..|
0006a0f0  fa 19 03 00 06 00 00 00  64 20 02 00 12 21 03 00  |........d ...!..|
0006a100  7c 27 02 00 26 28 03 00  90 2e 02 00 26 28 03 00  ||'..&(......&(..|
0006a110  08 00 00 00 a8 35 02 00  26 28 03 00 08 00 00 00  |.....5..&(......|
0006a120  a8 35 02 00 26 28 03 00  05 00 00 00 00 00 00 00  |.5..&(..........|
0006a130  02 00 00 00 f4 00 00 00  f0 66 02 00 26 ef 02 00  |.........f..&...|
0006a140  40 a0 02 00 76 28 03 00  ff ff ff ff 00 00 00 00  |@...v(..........|
0006a150  a0 00 00 00 40 00 a0 a0  02 00 00 00 84 7c 02 00  |....@........|..|
0006a160  26 28 03 00 08 00 00 00  c4 91 02 00 26 28 03 00  |&(..........&(..|
0006a170  06 00 00 00 dc 98 02 00  26 28 03 00 f0 9f 02 00  |........&(......|
0006a180  12 21 03 00 f0 9f 02 00  fa 19 03 00 08 00 00 00  |.!..............|
0006a190  f0 9f 02 00 a2 fd 02 00  06 00 00 00 f0 9f 02 00  |................|
0006a1a0  8e f6 02 00 dc 98 02 00  76 ef 02 00 c4 91 02 00  |........v.......|
0006a1b0  76 ef 02 00 08 00 00 00  6c 75 02 00 76 ef 02 00  |v.......lu..v...|
0006a1c0  06 00 00 00 58 6e 02 00  76 ef 02 00 40 67 02 00  |....Xn..v...@g..|
0006a1d0  8e f6 02 00 40 67 02 00  a2 fd 02 00 08 00 00 00  |....@g..........|
0006a1e0  40 67 02 00 fa 19 03 00  06 00 00 00 40 67 02 00  |@g..........@g..|
0006a1f0  12 21 03 00 58 6e 02 00  26 28 03 00 6c 75 02 00  |.!..Xn..&(..lu..|
0006a200  26 28 03 00 08 00 00 00  84 7c 02 00 26 28 03 00  |&(.......|..&(..|
0006a210  08 00 00 00 84 7c 02 00  26 28 03 00 05 00 00 00  |.....|..&(......|
0006a220  00 00 00 00 02 00 00 00  f4 00 00 00 cc ad 02 00  |................|
0006a230  26 ef 02 00 1c e7 02 00  76 28 03 00 ff ff ff ff  |&.......v(......|
0006a240  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0006a250  60 c3 02 00 26 28 03 00  08 00 00 00 a0 d8 02 00  |`...&(..........|
0006a260  26 28 03 00 06 00 00 00  b8 df 02 00 26 28 03 00  |&(..........&(..|
0006a270  cc e6 02 00 12 21 03 00  cc e6 02 00 fa 19 03 00  |.....!..........|
0006a280  08 00 00 00 cc e6 02 00  a2 fd 02 00 06 00 00 00  |................|
0006a290  cc e6 02 00 8e f6 02 00  b8 df 02 00 76 ef 02 00  |............v...|
0006a2a0  a0 d8 02 00 76 ef 02 00  08 00 00 00 48 bc 02 00  |....v.......H...|
0006a2b0  76 ef 02 00 06 00 00 00  34 b5 02 00 76 ef 02 00  |v.......4...v...|
0006a2c0  1c ae 02 00 8e f6 02 00  1c ae 02 00 a2 fd 02 00  |................|
0006a2d0  08 00 00 00 1c ae 02 00  fa 19 03 00 06 00 00 00  |................|
0006a2e0  1c ae 02 00 12 21 03 00  34 b5 02 00 26 28 03 00  |.....!..4...&(..|
0006a2f0  48 bc 02 00 26 28 03 00  08 00 00 00 60 c3 02 00  |H...&(......`...|
0006a300  26 28 03 00 08 00 00 00  60 c3 02 00 26 28 03 00  |&(......`...&(..|
0006a310  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0006a320  a8 f4 02 00 26 ef 02 00  f8 2d 03 00 76 28 03 00  |....&....-..v(..|
0006a330  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0006a340  02 00 00 00 3c 0a 03 00  26 28 03 00 08 00 00 00  |....<...&(......|
0006a350  7c 1f 03 00 26 28 03 00  06 00 00 00 94 26 03 00  ||...&(.......&..|
0006a360  26 28 03 00 a8 2d 03 00  12 21 03 00 a8 2d 03 00  |&(...-...!...-..|
0006a370  fa 19 03 00 08 00 00 00  a8 2d 03 00 a2 fd 02 00  |.........-......|
0006a380  06 00 00 00 a8 2d 03 00  8e f6 02 00 94 26 03 00  |.....-.......&..|
0006a390  76 ef 02 00 7c 1f 03 00  76 ef 02 00 08 00 00 00  |v...|...v.......|
0006a3a0  24 03 03 00 76 ef 02 00  06 00 00 00 10 fc 02 00  |$...v...........|
0006a3b0  76 ef 02 00 f8 f4 02 00  8e f6 02 00 f8 f4 02 00  |v...............|
0006a3c0  a2 fd 02 00 08 00 00 00  f8 f4 02 00 fa 19 03 00  |................|
0006a3d0  06 00 00 00 f8 f4 02 00  12 21 03 00 10 fc 02 00  |.........!......|
0006a3e0  26 28 03 00 24 03 03 00  26 28 03 00 08 00 00 00  |&(..$...&(......|
0006a3f0  3c 0a 03 00 26 28 03 00  08 00 00 00 3c 0a 03 00  |<...&(......<...|
0006a400  26 28 03 00 05 00 00 00  00 00 00 00 02 00 00 00  |&(..............|
0006a410  f4 00 00 00 84 3b 03 00  26 ef 02 00 d4 74 03 00  |.....;..&....t..|
0006a420  76 28 03 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |v(..............|
0006a430  40 00 a0 a0 02 00 00 00  18 51 03 00 26 28 03 00  |@........Q..&(..|
0006a440  08 00 00 00 58 66 03 00  26 28 03 00 06 00 00 00  |....Xf..&(......|
0006a450  70 6d 03 00 26 28 03 00  84 74 03 00 12 21 03 00  |pm..&(...t...!..|
0006a460  84 74 03 00 fa 19 03 00  08 00 00 00 84 74 03 00  |.t...........t..|
0006a470  a2 fd 02 00 06 00 00 00  84 74 03 00 8e f6 02 00  |.........t......|
0006a480  70 6d 03 00 76 ef 02 00  58 66 03 00 76 ef 02 00  |pm..v...Xf..v...|
0006a490  08 00 00 00 00 4a 03 00  76 ef 02 00 06 00 00 00  |.....J..v.......|
0006a4a0  ec 42 03 00 76 ef 02 00  d4 3b 03 00 8e f6 02 00  |.B..v....;......|
0006a4b0  d4 3b 03 00 a2 fd 02 00  08 00 00 00 d4 3b 03 00  |.;...........;..|
0006a4c0  fa 19 03 00 06 00 00 00  d4 3b 03 00 12 21 03 00  |.........;...!..|
0006a4d0  ec 42 03 00 26 28 03 00  00 4a 03 00 26 28 03 00  |.B..&(...J..&(..|
0006a4e0  08 00 00 00 18 51 03 00  26 28 03 00 08 00 00 00  |.....Q..&(......|
0006a4f0  18 51 03 00 26 28 03 00  05 00 00 00 00 00 00 00  |.Q..&(..........|
0006a500  02 00 00 00 f4 00 00 00  60 82 03 00 26 ef 02 00  |........`...&...|
0006a510  b0 bb 03 00 76 28 03 00  ff ff ff ff 00 00 00 00  |....v(..........|
0006a520  a0 00 00 00 40 00 a0 a0  02 00 00 00 f4 97 03 00  |....@...........|
0006a530  26 28 03 00 08 00 00 00  34 ad 03 00 26 28 03 00  |&(......4...&(..|
0006a540  06 00 00 00 4c b4 03 00  26 28 03 00 60 bb 03 00  |....L...&(..`...|
0006a550  12 21 03 00 60 bb 03 00  fa 19 03 00 08 00 00 00  |.!..`...........|
0006a560  60 bb 03 00 a2 fd 02 00  06 00 00 00 60 bb 03 00  |`...........`...|
0006a570  8e f6 02 00 4c b4 03 00  76 ef 02 00 34 ad 03 00  |....L...v...4...|
0006a580  76 ef 02 00 08 00 00 00  dc 90 03 00 76 ef 02 00  |v...........v...|
0006a590  06 00 00 00 c8 89 03 00  76 ef 02 00 b0 82 03 00  |........v.......|
0006a5a0  8e f6 02 00 b0 82 03 00  a2 fd 02 00 08 00 00 00  |................|
0006a5b0  b0 82 03 00 fa 19 03 00  06 00 00 00 b0 82 03 00  |................|
0006a5c0  12 21 03 00 c8 89 03 00  26 28 03 00 dc 90 03 00  |.!......&(......|
0006a5d0  26 28 03 00 08 00 00 00  f4 97 03 00 26 28 03 00  |&(..........&(..|
0006a5e0  08 00 00 00 f4 97 03 00  26 28 03 00 05 00 00 00  |........&(......|
0006a5f0  00 00 00 00 02 00 00 00  f4 00 00 00 46 93 00 00  |............F...|
0006a600  4a a8 02 00 96 cc 00 00  9a e1 02 00 ff ff ff ff  |J...............|
0006a610  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0006a620  d6 a8 00 00 4a e1 02 00  08 00 00 00 1a be 00 00  |....J...........|
0006a630  4a e1 02 00 06 00 00 00  2e c5 00 00 4a e1 02 00  |J...........J...|
0006a640  46 cc 00 00 36 da 02 00  46 cc 00 00 1e d3 02 00  |F...6...F.......|
0006a650  08 00 00 00 46 cc 00 00  c6 b6 02 00 06 00 00 00  |....F...........|
0006a660  46 cc 00 00 b2 af 02 00  2e c5 00 00 9a a8 02 00  |F...............|
0006a670  1a be 00 00 9a a8 02 00  08 00 00 00 c2 a1 00 00  |................|
0006a680  9a a8 02 00 06 00 00 00  aa 9a 00 00 9a a8 02 00  |................|
0006a690  96 93 00 00 b2 af 02 00  96 93 00 00 c6 b6 02 00  |................|
0006a6a0  08 00 00 00 96 93 00 00  1e d3 02 00 06 00 00 00  |................|
0006a6b0  96 93 00 00 36 da 02 00  aa 9a 00 00 4a e1 02 00  |....6.......J...|
0006a6c0  c2 a1 00 00 4a e1 02 00  08 00 00 00 d6 a8 00 00  |....J...........|
0006a6d0  4a e1 02 00 08 00 00 00  d6 a8 00 00 4a e1 02 00  |J...........J...|
0006a6e0  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0006a6f0  22 da 00 00 4a a8 02 00  72 13 01 00 9a e1 02 00  |"...J...r.......|
0006a700  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0006a710  02 00 00 00 b2 ef 00 00  4a e1 02 00 08 00 00 00  |........J.......|
0006a720  f6 04 01 00 4a e1 02 00  06 00 00 00 0a 0c 01 00  |....J...........|
0006a730  4a e1 02 00 22 13 01 00  36 da 02 00 22 13 01 00  |J..."...6..."...|
0006a740  1e d3 02 00 08 00 00 00  22 13 01 00 c6 b6 02 00  |........".......|
0006a750  06 00 00 00 22 13 01 00  b2 af 02 00 0a 0c 01 00  |...."...........|
0006a760  9a a8 02 00 f6 04 01 00  9a a8 02 00 08 00 00 00  |................|
0006a770  9e e8 00 00 9a a8 02 00  06 00 00 00 86 e1 00 00  |................|
0006a780  9a a8 02 00 72 da 00 00  b2 af 02 00 72 da 00 00  |....r.......r...|
0006a790  c6 b6 02 00 08 00 00 00  72 da 00 00 1e d3 02 00  |........r.......|
0006a7a0  06 00 00 00 72 da 00 00  36 da 02 00 86 e1 00 00  |....r...6.......|
0006a7b0  4a e1 02 00 9e e8 00 00  4a e1 02 00 08 00 00 00  |J.......J.......|
0006a7c0  b2 ef 00 00 4a e1 02 00  08 00 00 00 b2 ef 00 00  |....J...........|
0006a7d0  4a e1 02 00 05 00 00 00  00 00 00 00 02 00 00 00  |J...............|
0006a7e0  f4 00 00 00 fe 20 01 00  4a a8 02 00 4e 5a 01 00  |..... ..J...NZ..|
0006a7f0  9a e1 02 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |................|
0006a800  40 00 a0 a0 02 00 00 00  8e 36 01 00 4a e1 02 00  |@........6..J...|
0006a810  08 00 00 00 d2 4b 01 00  4a e1 02 00 06 00 00 00  |.....K..J.......|
0006a820  e6 52 01 00 4a e1 02 00  fe 59 01 00 36 da 02 00  |.R..J....Y..6...|
0006a830  fe 59 01 00 1e d3 02 00  08 00 00 00 fe 59 01 00  |.Y...........Y..|
0006a840  c6 b6 02 00 06 00 00 00  fe 59 01 00 b2 af 02 00  |.........Y......|
0006a850  e6 52 01 00 9a a8 02 00  d2 4b 01 00 9a a8 02 00  |.R.......K......|
0006a860  08 00 00 00 7a 2f 01 00  9a a8 02 00 06 00 00 00  |....z/..........|
0006a870  62 28 01 00 9a a8 02 00  4e 21 01 00 b2 af 02 00  |b(......N!......|
0006a880  4e 21 01 00 c6 b6 02 00  08 00 00 00 4e 21 01 00  |N!..........N!..|
0006a890  1e d3 02 00 06 00 00 00  4e 21 01 00 36 da 02 00  |........N!..6...|
0006a8a0  62 28 01 00 4a e1 02 00  7a 2f 01 00 4a e1 02 00  |b(..J...z/..J...|
0006a8b0  08 00 00 00 8e 36 01 00  4a e1 02 00 08 00 00 00  |.....6..J.......|
0006a8c0  8e 36 01 00 4a e1 02 00  05 00 00 00 00 00 00 00  |.6..J...........|
0006a8d0  02 00 00 00 f4 00 00 00  da 67 01 00 4a a8 02 00  |.........g..J...|
0006a8e0  2a a1 01 00 9a e1 02 00  ff ff ff ff 00 00 00 00  |*...............|
0006a8f0  a0 00 00 00 40 00 a0 a0  02 00 00 00 6a 7d 01 00  |....@.......j}..|
0006a900  4a e1 02 00 08 00 00 00  ae 92 01 00 4a e1 02 00  |J...........J...|
0006a910  06 00 00 00 c2 99 01 00  4a e1 02 00 da a0 01 00  |........J.......|
0006a920  36 da 02 00 da a0 01 00  1e d3 02 00 08 00 00 00  |6...............|
0006a930  da a0 01 00 c6 b6 02 00  06 00 00 00 da a0 01 00  |................|
0006a940  b2 af 02 00 c2 99 01 00  9a a8 02 00 ae 92 01 00  |................|
0006a950  9a a8 02 00 08 00 00 00  56 76 01 00 9a a8 02 00  |........Vv......|
0006a960  06 00 00 00 3e 6f 01 00  9a a8 02 00 2a 68 01 00  |....>o......*h..|
0006a970  b2 af 02 00 2a 68 01 00  c6 b6 02 00 08 00 00 00  |....*h..........|
0006a980  2a 68 01 00 1e d3 02 00  06 00 00 00 2a 68 01 00  |*h..........*h..|
0006a990  36 da 02 00 3e 6f 01 00  4a e1 02 00 56 76 01 00  |6...>o..J...Vv..|
0006a9a0  4a e1 02 00 08 00 00 00  6a 7d 01 00 4a e1 02 00  |J.......j}..J...|
0006a9b0  08 00 00 00 6a 7d 01 00  4a e1 02 00 05 00 00 00  |....j}..J.......|
0006a9c0  00 00 00 00 02 00 00 00  f4 00 00 00 b6 ae 01 00  |................|
0006a9d0  4a a8 02 00 06 e8 01 00  9a e1 02 00 ff ff ff ff  |J...............|
0006a9e0  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0006a9f0  46 c4 01 00 4a e1 02 00  08 00 00 00 8a d9 01 00  |F...J...........|
0006aa00  4a e1 02 00 06 00 00 00  9e e0 01 00 4a e1 02 00  |J...........J...|
0006aa10  b6 e7 01 00 36 da 02 00  b6 e7 01 00 1e d3 02 00  |....6...........|
0006aa20  08 00 00 00 b6 e7 01 00  c6 b6 02 00 06 00 00 00  |................|
0006aa30  b6 e7 01 00 b2 af 02 00  9e e0 01 00 9a a8 02 00  |................|
0006aa40  8a d9 01 00 9a a8 02 00  08 00 00 00 32 bd 01 00  |............2...|
0006aa50  9a a8 02 00 06 00 00 00  1a b6 01 00 9a a8 02 00  |................|
0006aa60  06 af 01 00 b2 af 02 00  06 af 01 00 c6 b6 02 00  |................|
0006aa70  08 00 00 00 06 af 01 00  1e d3 02 00 06 00 00 00  |................|
0006aa80  06 af 01 00 36 da 02 00  1a b6 01 00 4a e1 02 00  |....6.......J...|
0006aa90  32 bd 01 00 4a e1 02 00  08 00 00 00 46 c4 01 00  |2...J.......F...|
0006aaa0  4a e1 02 00 08 00 00 00  46 c4 01 00 4a e1 02 00  |J.......F...J...|
0006aab0  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0006aac0  92 f5 01 00 4a a8 02 00  e2 2e 02 00 9a e1 02 00  |....J...........|
0006aad0  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0006aae0  02 00 00 00 22 0b 02 00  4a e1 02 00 08 00 00 00  |...."...J.......|
0006aaf0  66 20 02 00 4a e1 02 00  06 00 00 00 7a 27 02 00  |f ..J.......z'..|
0006ab00  4a e1 02 00 92 2e 02 00  36 da 02 00 92 2e 02 00  |J.......6.......|
0006ab10  1e d3 02 00 08 00 00 00  92 2e 02 00 c6 b6 02 00  |................|
0006ab20  06 00 00 00 92 2e 02 00  b2 af 02 00 7a 27 02 00  |............z'..|
0006ab30  9a a8 02 00 66 20 02 00  9a a8 02 00 08 00 00 00  |....f ..........|
0006ab40  0e 04 02 00 9a a8 02 00  06 00 00 00 f6 fc 01 00  |................|
0006ab50  9a a8 02 00 e2 f5 01 00  b2 af 02 00 e2 f5 01 00  |................|
0006ab60  c6 b6 02 00 08 00 00 00  e2 f5 01 00 1e d3 02 00  |................|
0006ab70  06 00 00 00 e2 f5 01 00  36 da 02 00 f6 fc 01 00  |........6.......|
0006ab80  4a e1 02 00 0e 04 02 00  4a e1 02 00 08 00 00 00  |J.......J.......|
0006ab90  22 0b 02 00 4a e1 02 00  08 00 00 00 22 0b 02 00  |"...J......."...|
0006aba0  4a e1 02 00 05 00 00 00  00 00 00 00 02 00 00 00  |J...............|
0006abb0  f4 00 00 00 6e 3c 02 00  4a a8 02 00 be 75 02 00  |....n<..J....u..|
0006abc0  9a e1 02 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |................|
0006abd0  40 00 a0 a0 02 00 00 00  fe 51 02 00 4a e1 02 00  |@........Q..J...|
0006abe0  08 00 00 00 42 67 02 00  4a e1 02 00 06 00 00 00  |....Bg..J.......|
0006abf0  56 6e 02 00 4a e1 02 00  6e 75 02 00 36 da 02 00  |Vn..J...nu..6...|
0006ac00  6e 75 02 00 1e d3 02 00  08 00 00 00 6e 75 02 00  |nu..........nu..|
0006ac10  c6 b6 02 00 06 00 00 00  6e 75 02 00 b2 af 02 00  |........nu......|
0006ac20  56 6e 02 00 9a a8 02 00  42 67 02 00 9a a8 02 00  |Vn......Bg......|
0006ac30  08 00 00 00 ea 4a 02 00  9a a8 02 00 06 00 00 00  |.....J..........|
0006ac40  d2 43 02 00 9a a8 02 00  be 3c 02 00 b2 af 02 00  |.C.......<......|
0006ac50  be 3c 02 00 c6 b6 02 00  08 00 00 00 be 3c 02 00  |.<...........<..|
0006ac60  1e d3 02 00 06 00 00 00  be 3c 02 00 36 da 02 00  |.........<..6...|
0006ac70  d2 43 02 00 4a e1 02 00  ea 4a 02 00 4a e1 02 00  |.C..J....J..J...|
0006ac80  08 00 00 00 fe 51 02 00  4a e1 02 00 08 00 00 00  |.....Q..J.......|
0006ac90  fe 51 02 00 4a e1 02 00  05 00 00 00 00 00 00 00  |.Q..J...........|
0006aca0  02 00 00 00 f4 00 00 00  4a 83 02 00 4a a8 02 00  |........J...J...|
0006acb0  9a bc 02 00 9a e1 02 00  ff ff ff ff 00 00 00 00  |................|
0006acc0  a0 00 00 00 40 00 a0 a0  02 00 00 00 da 98 02 00  |....@...........|
0006acd0  4a e1 02 00 08 00 00 00  1e ae 02 00 4a e1 02 00  |J...........J...|
0006ace0  06 00 00 00 32 b5 02 00  4a e1 02 00 4a bc 02 00  |....2...J...J...|
0006acf0  36 da 02 00 4a bc 02 00  1e d3 02 00 08 00 00 00  |6...J...........|
0006ad00  4a bc 02 00 c6 b6 02 00  06 00 00 00 4a bc 02 00  |J...........J...|
0006ad10  b2 af 02 00 32 b5 02 00  9a a8 02 00 1e ae 02 00  |....2...........|
0006ad20  9a a8 02 00 08 00 00 00  c6 91 02 00 9a a8 02 00  |................|
0006ad30  06 00 00 00 ae 8a 02 00  9a a8 02 00 9a 83 02 00  |................|
0006ad40  b2 af 02 00 9a 83 02 00  c6 b6 02 00 08 00 00 00  |................|
0006ad50  9a 83 02 00 1e d3 02 00  06 00 00 00 9a 83 02 00  |................|
0006ad60  36 da 02 00 ae 8a 02 00  4a e1 02 00 c6 91 02 00  |6.......J.......|
0006ad70  4a e1 02 00 08 00 00 00  da 98 02 00 4a e1 02 00  |J...........J...|
0006ad80  08 00 00 00 da 98 02 00  4a e1 02 00 05 00 00 00  |........J.......|
0006ad90  00 00 00 00 02 00 00 00  f4 00 00 00 26 ca 02 00  |............&...|
0006ada0  4a a8 02 00 76 03 03 00  9a e1 02 00 ff ff ff ff  |J...v...........|
0006adb0  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0006adc0  b6 df 02 00 4a e1 02 00  08 00 00 00 fa f4 02 00  |....J...........|
0006add0  4a e1 02 00 06 00 00 00  0e fc 02 00 4a e1 02 00  |J...........J...|
0006ade0  26 03 03 00 36 da 02 00  26 03 03 00 1e d3 02 00  |&...6...&.......|
0006adf0  08 00 00 00 26 03 03 00  c6 b6 02 00 06 00 00 00  |....&...........|
0006ae00  26 03 03 00 b2 af 02 00  0e fc 02 00 9a a8 02 00  |&...............|
0006ae10  fa f4 02 00 9a a8 02 00  08 00 00 00 a2 d8 02 00  |................|
0006ae20  9a a8 02 00 06 00 00 00  8a d1 02 00 9a a8 02 00  |................|
0006ae30  76 ca 02 00 b2 af 02 00  76 ca 02 00 c6 b6 02 00  |v.......v.......|
0006ae40  08 00 00 00 76 ca 02 00  1e d3 02 00 06 00 00 00  |....v...........|
0006ae50  76 ca 02 00 36 da 02 00  8a d1 02 00 4a e1 02 00  |v...6.......J...|
0006ae60  a2 d8 02 00 4a e1 02 00  08 00 00 00 b6 df 02 00  |....J...........|
0006ae70  4a e1 02 00 08 00 00 00  b6 df 02 00 4a e1 02 00  |J...........J...|
0006ae80  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0006ae90  de c4 00 00 92 1a 02 00  9e 21 01 00 e2 53 02 00  |.........!...S..|
0006aea0  00 ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0006aeb0  02 00 00 00 72 da 00 00  92 53 02 00 08 00 00 00  |....r....S......|
0006aec0  22 13 01 00 92 53 02 00  06 00 00 00 36 1a 01 00  |"....S......6...|
0006aed0  92 53 02 00 4e 21 01 00  7e 4c 02 00 4e 21 01 00  |.S..N!..~L..N!..|
0006aee0  66 45 02 00 08 00 00 00  4e 21 01 00 0e 29 02 00  |fE......N!...)..|
0006aef0  06 00 00 00 4e 21 01 00  fa 21 02 00 36 1a 01 00  |....N!...!..6...|
0006af00  e2 1a 02 00 22 13 01 00  e2 1a 02 00 08 00 00 00  |...."...........|
0006af10  5a d3 00 00 e2 1a 02 00  06 00 00 00 46 cc 00 00  |Z...........F...|
0006af20  e2 1a 02 00 2e c5 00 00  fa 21 02 00 2e c5 00 00  |.........!......|
0006af30  0e 29 02 00 08 00 00 00  2e c5 00 00 66 45 02 00  |.)..........fE..|
0006af40  06 00 00 00 2e c5 00 00  7e 4c 02 00 46 cc 00 00  |........~L..F...|
0006af50  92 53 02 00 5a d3 00 00  92 53 02 00 08 00 00 00  |.S..Z....S......|
0006af60  72 da 00 00 92 53 02 00  08 00 00 00 72 da 00 00  |r....S......r...|
0006af70  92 53 02 00 05 00 00 00  00 00 00 00 02 00 00 00  |.S..............|
0006af80  f4 00 00 00 ba 13 00 00  4a a8 02 00 ba 85 00 00  |........J.......|
0006af90  9a e1 02 00 00 ff ff ff  00 00 00 00 a0 00 00 00  |................|
0006afa0  40 00 a0 a0 02 00 00 00  4a 29 00 00 4a e1 02 00  |@.......J)..J...|
0006afb0  08 00 00 00 3e 77 00 00  4a e1 02 00 06 00 00 00  |....>w..J.......|
0006afc0  52 7e 00 00 4a e1 02 00  6a 85 00 00 36 da 02 00  |R~..J...j...6...|
0006afd0  6a 85 00 00 1e d3 02 00  08 00 00 00 6a 85 00 00  |j...........j...|
0006afe0  c6 b6 02 00 06 00 00 00  6a 85 00 00 b2 af 02 00  |........j.......|
0006aff0  52 7e 00 00 9a a8 02 00  3e 77 00 00 9a a8 02 00  |R~......>w......|
0006b000  08 00 00 00 36 22 00 00  9a a8 02 00 06 00 00 00  |....6"..........|
0006b010  1e 1b 00 00 9a a8 02 00  0a 14 00 00 b2 af 02 00  |................|
0006b020  0a 14 00 00 c6 b6 02 00  08 00 00 00 0a 14 00 00  |................|
0006b030  1e d3 02 00 06 00 00 00  0a 14 00 00 36 da 02 00  |............6...|
0006b040  1e 1b 00 00 4a e1 02 00  36 22 00 00 4a e1 02 00  |....J...6"..J...|
0006b050  08 00 00 00 4a 29 00 00  4a e1 02 00 08 00 00 00  |....J)..J.......|
0006b060  4a 29 00 00 4a e1 02 00  05 00 00 00 00 00 00 00  |J)..J...........|
0006b070  02 00 00 00 f4 00 00 00  56 3d 01 00 92 1a 02 00  |........V=......|
0006b080  76 03 03 00 e2 53 02 00  00 ff ff ff 00 00 00 00  |v....S..........|
0006b090  a0 00 00 00 40 00 a0 a0  02 00 00 00 e6 52 01 00  |....@........R..|
0006b0a0  92 53 02 00 08 00 00 00  fa f4 02 00 92 53 02 00  |.S...........S..|
0006b0b0  06 00 00 00 0e fc 02 00  92 53 02 00 26 03 03 00  |.........S..&...|
0006b0c0  7e 4c 02 00 26 03 03 00  66 45 02 00 08 00 00 00  |~L..&...fE......|
0006b0d0  26 03 03 00 0e 29 02 00  06 00 00 00 26 03 03 00  |&....)......&...|
0006b0e0  fa 21 02 00 0e fc 02 00  e2 1a 02 00 fa f4 02 00  |.!..............|
0006b0f0  e2 1a 02 00 08 00 00 00  d2 4b 01 00 e2 1a 02 00  |.........K......|
0006b100  06 00 00 00 ba 44 01 00  e2 1a 02 00 a6 3d 01 00  |.....D.......=..|
0006b110  fa 21 02 00 a6 3d 01 00  0e 29 02 00 08 00 00 00  |.!...=...)......|
0006b120  a6 3d 01 00 66 45 02 00  06 00 00 00 a6 3d 01 00  |.=..fE.......=..|
0006b130  7e 4c 02 00 ba 44 01 00  92 53 02 00 d2 4b 01 00  |~L...D...S...K..|
0006b140  92 53 02 00 08 00 00 00  e6 52 01 00 92 53 02 00  |.S.......R...S..|
0006b150  08 00 00 00 e6 52 01 00  92 53 02 00 05 00 00 00  |.....R...S......|
0006b160  00 00 00 00 02 00 00 00  f4 00 00 00 2e 1f 03 00  |................|
0006b170  92 1a 02 00 ea 7b 03 00  e2 53 02 00 00 ff ff ff  |.....{...S......|
0006b180  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0006b190  be 34 03 00 92 53 02 00  08 00 00 00 6e 6d 03 00  |.4...S......nm..|
0006b1a0  92 53 02 00 06 00 00 00  86 74 03 00 92 53 02 00  |.S.......t...S..|
0006b1b0  9a 7b 03 00 7e 4c 02 00  9a 7b 03 00 66 45 02 00  |.{..~L...{..fE..|
0006b1c0  08 00 00 00 9a 7b 03 00  0e 29 02 00 06 00 00 00  |.....{...)......|
0006b1d0  9a 7b 03 00 fa 21 02 00  86 74 03 00 e2 1a 02 00  |.{...!...t......|
0006b1e0  6e 6d 03 00 e2 1a 02 00  08 00 00 00 aa 2d 03 00  |nm...........-..|
0006b1f0  e2 1a 02 00 06 00 00 00  92 26 03 00 e2 1a 02 00  |.........&......|
0006b200  7e 1f 03 00 fa 21 02 00  7e 1f 03 00 0e 29 02 00  |~....!..~....)..|
0006b210  08 00 00 00 7e 1f 03 00  66 45 02 00 06 00 00 00  |....~...fE......|
0006b220  7e 1f 03 00 7e 4c 02 00  92 26 03 00 92 53 02 00  |~...~L...&...S..|
0006b230  aa 2d 03 00 92 53 02 00  08 00 00 00 be 34 03 00  |.-...S.......4..|
0006b240  92 53 02 00 08 00 00 00  be 34 03 00 92 53 02 00  |.S.......4...S..|
0006b250  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0006b260  52 d0 03 00 92 1a 02 00  12 2d 04 00 e2 53 02 00  |R........-...S..|
0006b270  00 ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0006b280  02 00 00 00 e6 e5 03 00  92 53 02 00 08 00 00 00  |.........S......|
0006b290  96 1e 04 00 92 53 02 00  06 00 00 00 aa 25 04 00  |.....S.......%..|
0006b2a0  92 53 02 00 c2 2c 04 00  7e 4c 02 00 c2 2c 04 00  |.S...,..~L...,..|
0006b2b0  66 45 02 00 08 00 00 00  c2 2c 04 00 0e 29 02 00  |fE.......,...)..|
0006b2c0  06 00 00 00 c2 2c 04 00  fa 21 02 00 aa 25 04 00  |.....,...!...%..|
0006b2d0  e2 1a 02 00 96 1e 04 00  e2 1a 02 00 08 00 00 00  |................|
0006b2e0  ce de 03 00 e2 1a 02 00  06 00 00 00 ba d7 03 00  |................|
0006b2f0  e2 1a 02 00 a2 d0 03 00  fa 21 02 00 a2 d0 03 00  |.........!......|
0006b300  0e 29 02 00 08 00 00 00  a2 d0 03 00 66 45 02 00  |.)..........fE..|
0006b310  06 00 00 00 a2 d0 03 00  7e 4c 02 00 ba d7 03 00  |........~L......|
0006b320  92 53 02 00 ce de 03 00  92 53 02 00 08 00 00 00  |.S.......S......|
0006b330  e6 e5 03 00 92 53 02 00  08 00 00 00 e6 e5 03 00  |.....S..........|
0006b340  92 53 02 00 05 00 00 00  00 00 00 00 02 00 00 00  |.S..............|
0006b350  f4 00 00 00 16 20 02 00  22 92 03 00 66 59 02 00  |..... .."...fY..|
0006b360  72 cb 03 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |r...............|
0006b370  40 00 a0 a0 02 00 00 00  a6 35 02 00 22 cb 03 00  |@........5.."...|
0006b380  08 00 00 00 ea 4a 02 00  22 cb 03 00 06 00 00 00  |.....J..".......|
0006b390  fe 51 02 00 22 cb 03 00  16 59 02 00 0a c4 03 00  |.Q.."....Y......|
0006b3a0  16 59 02 00 f6 bc 03 00  08 00 00 00 16 59 02 00  |.Y...........Y..|
0006b3b0  9e a0 03 00 06 00 00 00  16 59 02 00 86 99 03 00  |.........Y......|
0006b3c0  fe 51 02 00 72 92 03 00  ea 4a 02 00 72 92 03 00  |.Q..r....J..r...|
0006b3d0  08 00 00 00 92 2e 02 00  72 92 03 00 06 00 00 00  |........r.......|
0006b3e0  7a 27 02 00 72 92 03 00  66 20 02 00 86 99 03 00  |z'..r...f ......|
0006b3f0  66 20 02 00 9e a0 03 00  08 00 00 00 66 20 02 00  |f ..........f ..|
0006b400  f6 bc 03 00 06 00 00 00  66 20 02 00 0a c4 03 00  |........f ......|
0006b410  7a 27 02 00 22 cb 03 00  92 2e 02 00 22 cb 03 00  |z'.."......."...|
0006b420  08 00 00 00 a6 35 02 00  22 cb 03 00 08 00 00 00  |.....5..".......|
0006b430  a6 35 02 00 22 cb 03 00  05 00 00 00 00 00 00 00  |.5.."...........|
0006b440  02 00 00 00 f4 00 00 00  f2 66 02 00 22 92 03 00  |.........f.."...|
0006b450  42 a0 02 00 72 cb 03 00  ff ff ff ff 00 00 00 00  |B...r...........|
0006b460  a0 00 00 00 40 00 a0 a0  02 00 00 00 82 7c 02 00  |....@........|..|
0006b470  22 cb 03 00 08 00 00 00  c6 91 02 00 22 cb 03 00  |"..........."...|
0006b480  06 00 00 00 da 98 02 00  22 cb 03 00 f2 9f 02 00  |........".......|
0006b490  0a c4 03 00 f2 9f 02 00  f6 bc 03 00 08 00 00 00  |................|
0006b4a0  f2 9f 02 00 9e a0 03 00  06 00 00 00 f2 9f 02 00  |................|
0006b4b0  86 99 03 00 da 98 02 00  72 92 03 00 c6 91 02 00  |........r.......|
0006b4c0  72 92 03 00 08 00 00 00  6e 75 02 00 72 92 03 00  |r.......nu..r...|
0006b4d0  06 00 00 00 56 6e 02 00  72 92 03 00 42 67 02 00  |....Vn..r...Bg..|
0006b4e0  86 99 03 00 42 67 02 00  9e a0 03 00 08 00 00 00  |....Bg..........|
0006b4f0  42 67 02 00 f6 bc 03 00  06 00 00 00 42 67 02 00  |Bg..........Bg..|
0006b500  0a c4 03 00 56 6e 02 00  22 cb 03 00 6e 75 02 00  |....Vn.."...nu..|
0006b510  22 cb 03 00 08 00 00 00  82 7c 02 00 22 cb 03 00  |"........|.."...|
0006b520  08 00 00 00 82 7c 02 00  22 cb 03 00 05 00 00 00  |.....|..".......|
0006b530  00 00 00 00 02 00 00 00  f4 00 00 00 ce ad 02 00  |................|
0006b540  22 92 03 00 1e e7 02 00  72 cb 03 00 ff ff ff ff  |".......r.......|
0006b550  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0006b560  5e c3 02 00 22 cb 03 00  08 00 00 00 a2 d8 02 00  |^..."...........|
0006b570  22 cb 03 00 06 00 00 00  b6 df 02 00 22 cb 03 00  |"..........."...|
0006b580  ce e6 02 00 0a c4 03 00  ce e6 02 00 f6 bc 03 00  |................|
0006b590  08 00 00 00 ce e6 02 00  9e a0 03 00 06 00 00 00  |................|
0006b5a0  ce e6 02 00 86 99 03 00  b6 df 02 00 72 92 03 00  |............r...|
0006b5b0  a2 d8 02 00 72 92 03 00  08 00 00 00 4a bc 02 00  |....r.......J...|
0006b5c0  72 92 03 00 06 00 00 00  32 b5 02 00 72 92 03 00  |r.......2...r...|
0006b5d0  1e ae 02 00 86 99 03 00  1e ae 02 00 9e a0 03 00  |................|
0006b5e0  08 00 00 00 1e ae 02 00  f6 bc 03 00 06 00 00 00  |................|
0006b5f0  1e ae 02 00 0a c4 03 00  32 b5 02 00 22 cb 03 00  |........2..."...|
0006b600  4a bc 02 00 22 cb 03 00  08 00 00 00 5e c3 02 00  |J...".......^...|
0006b610  22 cb 03 00 08 00 00 00  5e c3 02 00 22 cb 03 00  |".......^..."...|
0006b620  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0006b630  3a d9 01 00 22 92 03 00  8a 12 02 00 72 cb 03 00  |:...".......r...|
0006b640  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0006b650  02 00 00 00 ca ee 01 00  22 cb 03 00 08 00 00 00  |........".......|
0006b660  0e 04 02 00 22 cb 03 00  06 00 00 00 22 0b 02 00  |...."......."...|
0006b670  22 cb 03 00 3a 12 02 00  0a c4 03 00 3a 12 02 00  |"...:.......:...|
0006b680  f6 bc 03 00 08 00 00 00  3a 12 02 00 9e a0 03 00  |........:.......|
0006b690  06 00 00 00 3a 12 02 00  86 99 03 00 22 0b 02 00  |....:......."...|
0006b6a0  72 92 03 00 0e 04 02 00  72 92 03 00 08 00 00 00  |r.......r.......|
0006b6b0  b6 e7 01 00 72 92 03 00  06 00 00 00 9e e0 01 00  |....r...........|
0006b6c0  72 92 03 00 8a d9 01 00  86 99 03 00 8a d9 01 00  |r...............|
0006b6d0  9e a0 03 00 08 00 00 00  8a d9 01 00 f6 bc 03 00  |................|
0006b6e0  06 00 00 00 8a d9 01 00  0a c4 03 00 9e e0 01 00  |................|
0006b6f0  22 cb 03 00 b6 e7 01 00  22 cb 03 00 08 00 00 00  |".......".......|
0006b700  ca ee 01 00 22 cb 03 00  08 00 00 00 ca ee 01 00  |...."...........|
0006b710  22 cb 03 00 05 00 00 00  00 00 00 00 02 00 00 00  |"...............|
0006b720  f4 00 00 00 22 da 00 00  22 92 03 00 72 13 01 00  |...."..."...r...|
0006b730  72 cb 03 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |r...............|
0006b740  40 00 a0 a0 02 00 00 00  b2 ef 00 00 22 cb 03 00  |@..........."...|
0006b750  08 00 00 00 f6 04 01 00  22 cb 03 00 06 00 00 00  |........".......|
0006b760  0a 0c 01 00 22 cb 03 00  22 13 01 00 0a c4 03 00  |...."...".......|
0006b770  22 13 01 00 f6 bc 03 00  08 00 00 00 22 13 01 00  |"..........."...|
0006b780  9e a0 03 00 06 00 00 00  22 13 01 00 86 99 03 00  |........".......|
0006b790  0a 0c 01 00 72 92 03 00  f6 04 01 00 72 92 03 00  |....r.......r...|
0006b7a0  08 00 00 00 9e e8 00 00  72 92 03 00 06 00 00 00  |........r.......|
0006b7b0  86 e1 00 00 72 92 03 00  72 da 00 00 86 99 03 00  |....r...r.......|
0006b7c0  72 da 00 00 9e a0 03 00  08 00 00 00 72 da 00 00  |r...........r...|
0006b7d0  f6 bc 03 00 06 00 00 00  72 da 00 00 0a c4 03 00  |........r.......|
0006b7e0  86 e1 00 00 22 cb 03 00  9e e8 00 00 22 cb 03 00  |...."......."...|
0006b7f0  08 00 00 00 b2 ef 00 00  22 cb 03 00 08 00 00 00  |........".......|
0006b800  b2 ef 00 00 22 cb 03 00  05 00 00 00 00 00 00 00  |...."...........|
0006b810  02 00 00 00 f4 00 00 00  fe 20 01 00 22 92 03 00  |......... .."...|
0006b820  4e 5a 01 00 72 cb 03 00  ff ff ff ff 00 00 00 00  |NZ..r...........|
0006b830  a0 00 00 00 40 00 a0 a0  02 00 00 00 8e 36 01 00  |....@........6..|
0006b840  22 cb 03 00 08 00 00 00  d2 4b 01 00 22 cb 03 00  |"........K.."...|
0006b850  06 00 00 00 e6 52 01 00  22 cb 03 00 fe 59 01 00  |.....R.."....Y..|
0006b860  0a c4 03 00 fe 59 01 00  f6 bc 03 00 08 00 00 00  |.....Y..........|
0006b870  fe 59 01 00 9e a0 03 00  06 00 00 00 fe 59 01 00  |.Y...........Y..|
0006b880  86 99 03 00 e6 52 01 00  72 92 03 00 d2 4b 01 00  |.....R..r....K..|
0006b890  72 92 03 00 08 00 00 00  7a 2f 01 00 72 92 03 00  |r.......z/..r...|
0006b8a0  06 00 00 00 62 28 01 00  72 92 03 00 4e 21 01 00  |....b(..r...N!..|
0006b8b0  86 99 03 00 4e 21 01 00  9e a0 03 00 08 00 00 00  |....N!..........|
0006b8c0  4e 21 01 00 f6 bc 03 00  06 00 00 00 4e 21 01 00  |N!..........N!..|
0006b8d0  0a c4 03 00 62 28 01 00  22 cb 03 00 7a 2f 01 00  |....b(.."...z/..|
0006b8e0  22 cb 03 00 08 00 00 00  8e 36 01 00 22 cb 03 00  |"........6.."...|
0006b8f0  08 00 00 00 8e 36 01 00  22 cb 03 00 05 00 00 00  |.....6..".......|
0006b900  00 00 00 00 02 00 00 00  f4 00 00 00 da 67 01 00  |.............g..|
0006b910  22 92 03 00 2a a1 01 00  72 cb 03 00 ff ff ff ff  |"...*...r.......|
0006b920  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0006b930  6a 7d 01 00 22 cb 03 00  08 00 00 00 ae 92 01 00  |j}.."...........|
0006b940  22 cb 03 00 06 00 00 00  c2 99 01 00 22 cb 03 00  |"..........."...|
0006b950  da a0 01 00 0a c4 03 00  da a0 01 00 f6 bc 03 00  |................|
0006b960  08 00 00 00 da a0 01 00  9e a0 03 00 06 00 00 00  |................|
0006b970  da a0 01 00 86 99 03 00  c2 99 01 00 72 92 03 00  |............r...|
0006b980  ae 92 01 00 72 92 03 00  08 00 00 00 56 76 01 00  |....r.......Vv..|
0006b990  72 92 03 00 06 00 00 00  3e 6f 01 00 72 92 03 00  |r.......>o..r...|
0006b9a0  2a 68 01 00 86 99 03 00  2a 68 01 00 9e a0 03 00  |*h......*h......|
0006b9b0  08 00 00 00 2a 68 01 00  f6 bc 03 00 06 00 00 00  |....*h..........|
0006b9c0  2a 68 01 00 0a c4 03 00  3e 6f 01 00 22 cb 03 00  |*h......>o.."...|
0006b9d0  56 76 01 00 22 cb 03 00  08 00 00 00 6a 7d 01 00  |Vv..".......j}..|
0006b9e0  22 cb 03 00 08 00 00 00  6a 7d 01 00 22 cb 03 00  |".......j}.."...|
0006b9f0  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0006ba00  46 93 00 00 22 92 03 00  96 cc 00 00 72 cb 03 00  |F...".......r...|
0006ba10  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0006ba20  02 00 00 00 d6 a8 00 00  22 cb 03 00 08 00 00 00  |........".......|
0006ba30  1a be 00 00 22 cb 03 00  06 00 00 00 2e c5 00 00  |...."...........|
0006ba40  22 cb 03 00 46 cc 00 00  0a c4 03 00 46 cc 00 00  |"...F.......F...|
0006ba50  f6 bc 03 00 08 00 00 00  46 cc 00 00 9e a0 03 00  |........F.......|
0006ba60  06 00 00 00 46 cc 00 00  86 99 03 00 2e c5 00 00  |....F...........|
0006ba70  72 92 03 00 1a be 00 00  72 92 03 00 08 00 00 00  |r.......r.......|
0006ba80  c2 a1 00 00 72 92 03 00  06 00 00 00 aa 9a 00 00  |....r...........|
0006ba90  72 92 03 00 96 93 00 00  86 99 03 00 96 93 00 00  |r...............|
0006baa0  9e a0 03 00 08 00 00 00  96 93 00 00 f6 bc 03 00  |................|
0006bab0  06 00 00 00 96 93 00 00  0a c4 03 00 aa 9a 00 00  |................|
0006bac0  22 cb 03 00 c2 a1 00 00  22 cb 03 00 08 00 00 00  |".......".......|
0006bad0  d6 a8 00 00 22 cb 03 00  08 00 00 00 d6 a8 00 00  |...."...........|
0006bae0  22 cb 03 00 05 00 00 00  00 00 00 00 01 00 00 00  |"...............|
0006baf0  38 00 00 00 9e 17 00 00  32 a7 03 00 5e 47 00 00  |8.......2...^G..|
0006bb00  32 be 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |2...............|
0006bb10  00 1e 00 00 00 1e 00 00  1e 16 00 00 b2 a7 03 00  |................|
0006bb20  31 31 32 00 01 00 00 00  38 00 00 00 2a 97 00 00  |112.....8...*...|
0006bb30  b2 a6 03 00 ea c6 00 00  32 be 03 00 00 00 00 00  |........2.......|
0006bb40  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006bb50  aa 95 00 00 b2 a7 03 00  31 31 33 00 01 00 00 00  |........113.....|
0006bb60  38 00 00 00 06 de 00 00  32 a7 03 00 06 0e 01 00  |8.......2.......|
0006bb70  72 bd 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |r...............|
0006bb80  00 1e 00 00 00 1e 00 00  86 dc 00 00 b2 a7 03 00  |................|
0006bb90  31 31 34 00 01 00 00 00  38 00 00 00 e2 24 01 00  |114.....8....$..|
0006bba0  b2 a6 03 00 a2 54 01 00  72 bd 03 00 00 00 00 00  |.....T..r.......|
0006bbb0  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006bbc0  62 23 01 00 b2 a7 03 00  31 31 35 00 01 00 00 00  |b#......115.....|
0006bbd0  38 00 00 00 be 6e 01 00  b2 a6 03 00 3e 98 01 00  |8....n......>...|
0006bbe0  32 be 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |2...............|
0006bbf0  00 1e 00 00 00 1e 00 00  3e 6f 01 00 b2 a7 03 00  |........>o......|
0006bc00  20 32 30 00 01 00 00 00  38 00 00 00 1e dd 01 00  | 20.....8.......|
0006bc10  b2 a6 03 00 de 0c 02 00  32 be 03 00 00 00 00 00  |........2.......|
0006bc20  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006bc30  9e db 01 00 b2 a7 03 00  31 31 36 00 01 00 00 00  |........116.....|
0006bc40  38 00 00 00 fa 23 02 00  32 a7 03 00 fa 53 02 00  |8....#..2....S..|
0006bc50  72 bd 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |r...............|
0006bc60  00 1e 00 00 00 1e 00 00  7a 22 02 00 b2 a7 03 00  |........z"......|
0006bc70  31 31 37 00 01 00 00 00  38 00 00 00 ae 75 02 00  |117.....8....u..|
0006bc80  32 a7 03 00 ee 95 02 00  32 be 03 00 00 00 00 00  |2.......2.......|
0006bc90  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006bca0  6e 75 02 00 b2 a7 03 00  32 32 00 00 01 00 00 00  |nu......22......|
0006bcb0  38 00 00 00 b2 b1 02 00  b2 a6 03 00 f2 e1 02 00  |8...............|
0006bcc0  32 be 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |2...............|
0006bcd0  00 1e 00 00 00 1e 00 00  32 b0 02 00 b2 a7 03 00  |........2.......|
0006bce0  31 31 38 00 01 00 00 00  38 00 00 00 12 23 03 00  |118.....8....#..|
0006bcf0  b2 a6 03 00 d2 52 03 00  32 be 03 00 00 00 00 00  |.....R..2.......|
0006bd00  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006bd10  92 21 03 00 b2 a7 03 00  31 31 39 00 01 00 00 00  |.!......119.....|
0006bd20  38 00 00 00 c6 74 03 00  b2 a6 03 00 06 95 03 00  |8....t..........|
0006bd30  32 be 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |2...............|
0006bd40  00 1e 00 00 00 1e 00 00  86 74 03 00 b2 a7 03 00  |.........t......|
0006bd50  33 30 00 00 01 00 00 00  38 00 00 00 a2 bb 03 00  |30......8.......|
0006bd60  b2 a6 03 00 62 dc 03 00  32 be 03 00 00 00 00 00  |....b...2.......|
0006bd70  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006bd80  62 bb 03 00 b2 a7 03 00  32 38 00 00 01 00 00 00  |b.......28......|
0006bd90  38 00 00 00 7e 02 04 00  b2 a6 03 00 be 22 04 00  |8...~........"..|
0006bda0  32 be 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |2...............|
0006bdb0  00 1e 00 00 00 1e 00 00  3e 02 04 00 b2 a7 03 00  |........>.......|
0006bdc0  32 39 00 00 01 00 00 00  38 00 00 00 56 f9 03 00  |29......8...V...|
0006bdd0  ab dc 02 00 56 19 04 00  2b f4 02 00 00 00 00 00  |....V...+.......|
0006bde0  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006bdf0  d6 f8 03 00 ab dd 02 00  37 33 00 00 01 00 00 00  |........73......|
0006be00  38 00 00 00 73 dc 03 00  16 4b 03 00 f3 fc 03 00  |8...s....K......|
0006be10  56 61 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |Va..............|
0006be20  00 1e 00 00 00 1e 00 00  33 dc 03 00 96 4b 03 00  |........3....K..|
0006be30  34 37 00 00 01 00 00 00  38 00 00 00 62 0b 02 00  |47......8...b...|
0006be40  26 2f 02 00 22 2c 02 00  a6 46 02 00 00 00 00 00  |&/..",...F......|
0006be50  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006be60  22 0b 02 00 26 30 02 00  39 38 00 00 01 00 00 00  |"...&0..98......|
0006be70  38 00 00 00 87 a3 03 00  de bc 02 00 47 d3 03 00  |8...........G...|
0006be80  5e d4 02 00 00 00 00 00  00 ff ff ff 01 00 00 00  |^...............|
0006be90  00 1e 00 00 00 1e 00 00  07 a2 03 00 de bd 02 00  |................|
0006bea0  31 32 30 00 01 00 00 00  38 00 00 00 02 a2 00 00  |120.....8.......|
0006beb0  de bc 02 00 42 c2 00 00  5e d4 02 00 00 00 00 00  |....B...^.......|
0006bec0  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006bed0  c2 a1 00 00 de bd 02 00  36 35 00 00 01 00 00 00  |........65......|
0006bee0  38 00 00 00 de e8 00 00  de bc 02 00 de 04 01 00  |8...............|
0006bef0  5e d4 02 00 00 00 00 00  00 ff ff ff 01 00 00 00  |^...............|
0006bf00  00 1e 00 00 00 1e 00 00  9e e8 00 00 de bd 02 00  |................|
0006bf10  38 31 00 00 01 00 00 00  38 00 00 00 ba 2f 01 00  |81......8..../..|
0006bf20  de bc 02 00 fa 4f 01 00  5e d4 02 00 00 00 00 00  |.....O..^.......|
0006bf30  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006bf40  7a 2f 01 00 de bd 02 00  35 30 00 00 01 00 00 00  |z/......50......|
0006bf50  38 00 00 00 96 76 01 00  de bc 02 00 16 97 01 00  |8....v..........|
0006bf60  5e d4 02 00 00 00 00 00  00 ff ff ff 01 00 00 00  |^...............|
0006bf70  00 1e 00 00 00 1e 00 00  56 76 01 00 de bd 02 00  |........Vv......|
0006bf80  36 37 00 00 01 00 00 00  38 00 00 00 72 bd 01 00  |67......8...r...|
0006bf90  de bc 02 00 b2 dd 01 00  5e d4 02 00 00 00 00 00  |........^.......|
0006bfa0  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006bfb0  32 bd 01 00 de bd 02 00  38 33 00 00 01 00 00 00  |2.......83......|
0006bfc0  38 00 00 00 4e 04 02 00  de bc 02 00 ce 24 02 00  |8...N........$..|
0006bfd0  5e d4 02 00 00 00 00 00  00 ff ff ff 01 00 00 00  |^...............|
0006bfe0  00 1e 00 00 00 1e 00 00  0e 04 02 00 de bd 02 00  |................|
0006bff0  38 34 00 00 01 00 00 00  38 00 00 00 2a 4b 02 00  |84......8...*K..|
0006c000  de bc 02 00 6a 6b 02 00  5e d4 02 00 00 00 00 00  |....jk..^.......|
0006c010  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006c020  ea 4a 02 00 de bd 02 00  36 39 00 00 01 00 00 00  |.J......69......|
0006c030  38 00 00 00 46 92 02 00  de bc 02 00 46 b2 02 00  |8...F.......F...|
0006c040  5e d4 02 00 00 00 00 00  00 ff ff ff 01 00 00 00  |^...............|
0006c050  00 1e 00 00 00 1e 00 00  c6 91 02 00 de bd 02 00  |................|
0006c060  37 30 00 00 01 00 00 00  38 00 00 00 e2 d8 02 00  |70......8.......|
0006c070  de bc 02 00 22 f9 02 00  5e d4 02 00 00 00 00 00  |...."...^.......|
0006c080  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006c090  a2 d8 02 00 de bd 02 00  38 36 00 00 01 00 00 00  |........86......|
0006c0a0  38 00 00 00 da 66 03 00  de bc 02 00 da 86 03 00  |8....f..........|
0006c0b0  5e d4 02 00 00 00 00 00  00 ff ff ff 01 00 00 00  |^...............|
0006c0c0  00 1e 00 00 00 1e 00 00  5a 66 03 00 de bd 02 00  |........Zf......|
0006c0d0  37 39 00 00 01 00 00 00  38 00 00 00 1c 91 03 00  |79......8.......|
0006c0e0  ba 03 03 00 dc b1 03 00  3a 1b 03 00 00 00 00 00  |........:.......|
0006c0f0  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006c100  dc 90 03 00 ba 04 03 00  38 38 00 00 01 00 00 00  |........88......|
0006c110  38 00 00 00 40 4a 03 00  ba 03 03 00 80 6a 03 00  |8...@J.......j..|
0006c120  3a 1b 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |:...............|
0006c130  00 1e 00 00 00 1e 00 00  00 4a 03 00 ba 04 03 00  |.........J......|
0006c140  35 36 00 00 01 00 00 00  38 00 00 00 64 03 03 00  |56......8...d...|
0006c150  ba 03 03 00 a4 23 03 00  7a 1a 03 00 00 00 00 00  |.....#..z.......|
0006c160  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006c170  24 03 03 00 ba 04 03 00  35 35 00 00 01 00 00 00  |$.......55......|
0006c180  38 00 00 00 88 bc 02 00  ba 03 03 00 08 dd 02 00  |8...............|
0006c190  7a 1a 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |z...............|
0006c1a0  00 1e 00 00 00 1e 00 00  48 bc 02 00 ba 04 03 00  |........H.......|
0006c1b0  35 34 00 00 01 00 00 00  38 00 00 00 ac 75 02 00  |54......8....u..|
0006c1c0  ba 03 03 00 2c 96 02 00  3a 1b 03 00 00 00 00 00  |....,...:.......|
0006c1d0  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006c1e0  6c 75 02 00 ba 04 03 00  33 37 00 00 01 00 00 00  |lu......37......|
0006c1f0  38 00 00 00 d0 2e 02 00  ba 03 03 00 10 4f 02 00  |8............O..|
0006c200  3a 1b 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |:...............|
0006c210  00 1e 00 00 00 1e 00 00  90 2e 02 00 ba 04 03 00  |................|
0006c220  35 33 00 00 01 00 00 00  38 00 00 00 f4 e7 01 00  |53......8.......|
0006c230  ba 03 03 00 b4 08 02 00  3a 1b 03 00 00 00 00 00  |........:.......|
0006c240  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006c250  b4 e7 01 00 ba 04 03 00  36 38 00 00 01 00 00 00  |........68......|
0006c260  38 00 00 00 18 a1 01 00  ba 03 03 00 58 c1 01 00  |8...........X...|
0006c270  3a 1b 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |:...............|
0006c280  00 1e 00 00 00 1e 00 00  d8 a0 01 00 ba 04 03 00  |................|
0006c290  33 35 00 00 01 00 00 00  38 00 00 00 3c 5a 01 00  |35......8...<Z..|
0006c2a0  ba 03 03 00 3c 76 01 00  7a 1a 03 00 00 00 00 00  |....<v..z.......|
0006c2b0  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006c2c0  fc 59 01 00 ba 04 03 00  35 31 00 00 01 00 00 00  |.Y......51......|
0006c2d0  38 00 00 00 60 13 01 00  ba 03 03 00 e0 33 01 00  |8...`........3..|
0006c2e0  3a 1b 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |:...............|
0006c2f0  00 1e 00 00 00 1e 00 00  20 13 01 00 ba 04 03 00  |........ .......|
0006c300  33 34 00 00 01 00 00 00  38 00 00 00 84 cc 00 00  |34......8.......|
0006c310  ba 03 03 00 c4 ec 00 00  3a 1b 03 00 00 00 00 00  |........:.......|
0006c320  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006c330  44 cc 00 00 ba 04 03 00  33 33 00 00 01 00 00 00  |D.......33......|
0006c340  38 00 00 00 e8 86 00 00  ba 03 03 00 e8 a5 00 00  |8...............|
0006c350  3a 1b 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |:...............|
0006c360  00 1e 00 00 00 1e 00 00  68 85 00 00 ba 04 03 00  |........h.......|
0006c370  31 36 00 00 01 00 00 00  38 00 00 00 a0 30 00 00  |16......8....0..|
0006c380  ba 03 03 00 e0 50 00 00  3a 1b 03 00 00 00 00 00  |.....P..:.......|
0006c390  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006c3a0  60 30 00 00 ba 04 03 00  39 36 00 00 01 00 00 00  |`0......96......|
0006c3b0  38 00 00 00 76 22 00 00  96 4a 03 00 b6 42 00 00  |8...v"...J...B..|
0006c3c0  56 61 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |Va..............|
0006c3d0  00 1e 00 00 00 1e 00 00  36 22 00 00 96 4b 03 00  |........6"...K..|
0006c3e0  34 35 00 00 01 00 00 00  38 00 00 00 52 69 00 00  |45......8...Ri..|
0006c3f0  96 4a 03 00 12 8a 00 00  16 62 03 00 00 00 00 00  |.J.......b......|
0006c400  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006c410  12 69 00 00 96 4b 03 00  34 38 00 00 01 00 00 00  |.i...K..48......|
0006c420  38 00 00 00 4a f8 00 00  16 4b 03 00 8a 17 01 00  |8...J....K......|
0006c430  56 61 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |Va..............|
0006c440  00 1e 00 00 00 1e 00 00  ca f6 00 00 96 4b 03 00  |.............K..|
0006c450  31 37 00 00 01 00 00 00  38 00 00 00 26 3f 01 00  |17......8...&?..|
0006c460  96 4a 03 00 a6 5e 01 00  16 62 03 00 00 00 00 00  |.J...^...b......|
0006c470  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006c480  a6 3d 01 00 96 4b 03 00  31 38 00 00 01 00 00 00  |.=...K..18......|
0006c490  38 00 00 00 02 86 01 00  96 4a 03 00 02 a5 01 00  |8........J......|
0006c4a0  16 62 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |.b..............|
0006c4b0  00 1e 00 00 00 1e 00 00  82 84 01 00 96 4b 03 00  |.............K..|
0006c4c0  31 39 00 00 01 00 00 00  38 00 00 00 7a 12 02 00  |19......8...z...|
0006c4d0  96 4a 03 00 ba 32 02 00  16 62 03 00 00 00 00 00  |.J...2...b......|
0006c4e0  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006c4f0  3a 12 02 00 96 4b 03 00  33 36 00 00 01 00 00 00  |:....K..36......|
0006c500  38 00 00 00 56 59 02 00  16 4b 03 00 56 75 02 00  |8...VY...K..Vu..|
0006c510  16 62 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |.b..............|
0006c520  00 1e 00 00 00 1e 00 00  16 59 02 00 96 4b 03 00  |.........Y...K..|
0006c530  32 31 00 00 01 00 00 00  38 00 00 00 32 a0 02 00  |21......8...2...|
0006c540  96 4a 03 00 f2 c0 02 00  16 62 03 00 00 00 00 00  |.J.......b......|
0006c550  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006c560  f2 9f 02 00 96 4b 03 00  33 38 00 00 01 00 00 00  |.....K..38......|
0006c570  38 00 00 00 0e e7 02 00  96 4a 03 00 4e 07 03 00  |8........J..N...|
0006c580  16 62 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |.b..............|
0006c590  00 1e 00 00 00 1e 00 00  ce e6 02 00 96 4b 03 00  |.............K..|
0006c5a0  33 39 00 00 01 00 00 00  38 00 00 00 c6 74 03 00  |39......8....t..|
0006c5b0  96 4a 03 00 06 95 03 00  16 62 03 00 00 00 00 00  |.J.......b......|
0006c5c0  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006c5d0  86 74 03 00 96 4b 03 00  39 33 00 00 01 00 00 00  |.t...K..93......|
0006c5e0  38 00 00 00 26 fc 03 00  d2 38 02 00 e6 04 04 00  |8...&....8......|
0006c5f0  92 4b 02 00 00 00 00 00  00 ff ff ff 01 00 00 00  |.K..............|
0006c600  00 19 00 00 00 19 00 00  26 fb 03 00 52 39 02 00  |........&...R9..|
0006c610  31 00 00 00 01 00 00 00  38 00 00 00 66 fb 03 00  |1.......8...f...|
0006c620  d2 22 02 00 e6 08 04 00  92 35 02 00 00 00 00 00  |.".......5......|
0006c630  00 ff ff ff 01 00 00 00  00 19 00 00 00 19 00 00  |................|
0006c640  26 fb 03 00 52 23 02 00  37 00 00 00 01 00 00 00  |&...R#..7.......|
0006c650  38 00 00 00 42 4a 03 00  d2 38 02 00 42 57 03 00  |8...BJ...8..BW..|
0006c660  12 4c 02 00 00 00 00 00  00 ff ff ff 01 00 00 00  |.L..............|
0006c670  00 19 00 00 00 19 00 00  02 4a 03 00 52 39 02 00  |.........J..R9..|
0006c680  32 00 00 00 01 00 00 00  38 00 00 00 42 4a 03 00  |2.......8...BJ..|
0006c690  52 22 02 00 c2 57 03 00  12 36 02 00 00 00 00 00  |R"...W...6......|
0006c6a0  00 ff ff ff 01 00 00 00  00 19 00 00 00 19 00 00  |................|
0006c6b0  02 4a 03 00 52 23 02 00  38 00 00 00 01 00 00 00  |.J..R#..8.......|
0006c6c0  38 00 00 00 e4 d0 03 00  2e 69 02 00 e4 dd 03 00  |8........i......|
0006c6d0  ee 7c 02 00 00 00 00 00  00 ff ff ff 01 00 00 00  |.|..............|
0006c6e0  00 19 00 00 00 19 00 00  a4 d0 03 00 2e 6a 02 00  |.............j..|
0006c6f0  36 00 00 00 01 00 00 00  38 00 00 00 fe 2b 03 00  |6.......8....+..|
0006c700  c2 55 03 00 be 46 03 00  82 69 03 00 00 00 00 00  |.U...F...i......|
0006c710  00 ff ff ff 01 00 00 00  00 19 00 00 00 19 00 00  |................|
0006c720  be 2b 03 00 c2 56 03 00  32 33 00 00 01 00 00 00  |.+...V..23......|
0006c730  38 00 00 00 be 2b 03 00  c2 3f 03 00 be 46 03 00  |8....+...?...F..|
0006c740  82 53 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |.S..............|
0006c750  00 19 00 00 00 19 00 00  be 2b 03 00 c2 40 03 00  |.........+...@..|
0006c760  34 30 00 00 01 00 00 00  38 00 00 00 be 22 03 00  |40......8...."..|
0006c770  8a c6 02 00 7e 3d 03 00  ca d9 02 00 00 00 00 00  |....~=..........|
0006c780  00 ff ff ff 01 00 00 00  00 19 00 00 00 19 00 00  |................|
0006c790  7e 22 03 00 0a c7 02 00  37 32 00 00 01 00 00 00  |~"......72......|
0006c7a0  38 00 00 00 be 22 03 00  0a b0 02 00 fe 3d 03 00  |8....".......=..|
0006c7b0  ca c3 02 00 00 00 00 00  00 ff ff ff 01 00 00 00  |................|
0006c7c0  00 19 00 00 00 19 00 00  7e 22 03 00 0a b1 02 00  |........~"......|
0006c7d0  38 37 00 00 01 00 00 00  38 00 00 00 b2 cb 01 00  |87......8.......|
0006c7e0  42 56 03 00 b2 e6 01 00  82 69 03 00 00 00 00 00  |BV.......i......|
0006c7f0  00 ff ff ff 01 00 00 00  00 19 00 00 00 19 00 00  |................|
0006c800  72 cb 01 00 c2 56 03 00  32 34 00 00 01 00 00 00  |r....V..24......|
0006c810  38 00 00 00 72 cb 01 00  c2 3f 03 00 72 e6 01 00  |8...r....?..r...|
0006c820  82 53 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |.S..............|
0006c830  00 19 00 00 00 19 00 00  72 cb 01 00 c2 40 03 00  |........r....@..|
0006c840  35 32 00 00 01 00 00 00  38 00 00 00 f2 ef 00 00  |52......8.......|
0006c850  d2 38 02 00 f2 fc 00 00  12 4c 02 00 00 00 00 00  |.8.......L......|
0006c860  00 ff ff ff 01 00 00 00  00 19 00 00 00 19 00 00  |................|
0006c870  b2 ef 00 00 52 39 02 00  32 00 00 00 01 00 00 00  |....R9..2.......|
0006c880  38 00 00 00 b2 ef 00 00  52 22 02 00 f2 fc 00 00  |8.......R"......|
0006c890  92 35 02 00 00 00 00 00  00 ff ff ff 01 00 00 00  |.5..............|
0006c8a0  00 19 00 00 00 19 00 00  b2 ef 00 00 52 23 02 00  |............R#..|
0006c8b0  35 00 00 00 01 00 00 00  38 00 00 00 02 b0 00 00  |5.......8.......|
0006c8c0  c2 55 03 00 02 cb 00 00  82 69 03 00 00 00 00 00  |.U.......i......|
0006c8d0  00 ff ff ff 01 00 00 00  00 19 00 00 00 19 00 00  |................|
0006c8e0  02 b0 00 00 c2 56 03 00  34 39 00 00 01 00 00 00  |.....V..49......|
0006c8f0  38 00 00 00 42 b0 00 00  42 40 03 00 82 c7 00 00  |8...B...B@......|
0006c900  02 53 03 00 00 00 00 00  00 ff ff ff 01 00 00 00  |.S..............|
0006c910  00 19 00 00 00 19 00 00  02 b0 00 00 c2 40 03 00  |.............@..|
0006c920  37 31 00 00 02 00 00 00  ac 00 00 00 c7 3c 00 00  |71...........<..|
0006c930  5f 41 02 00 6a 47 00 00  fe 4b 02 00 00 00 cc 00  |_A..jG...K......|
0006c940  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0006c950  a2 45 00 00 26 43 02 00  06 00 00 00 ae 43 00 00  |.E..&C.......C..|
0006c960  32 41 02 00 82 40 00 00  32 41 02 00 8e 3e 00 00  |2A...@..2A...>..|
0006c970  26 43 02 00 06 00 00 00  9a 3c 00 00 1a 45 02 00  |&C.......<...E..|
0006c980  9a 3c 00 00 42 48 02 00  8e 3e 00 00 36 4a 02 00  |.<..BH...>..6J..|
0006c990  06 00 00 00 82 40 00 00  2a 4c 02 00 ae 43 00 00  |.....@..*L...C..|
0006c9a0  2a 4c 02 00 a2 45 00 00  36 4a 02 00 06 00 00 00  |*L...E..6J......|
0006c9b0  96 47 00 00 42 48 02 00  96 47 00 00 1a 45 02 00  |.G..BH...G...E..|
0006c9c0  a2 45 00 00 26 43 02 00  05 00 00 00 00 00 00 00  |.E..&C..........|
0006c9d0  02 00 00 00 f4 00 00 00  ba 13 00 00 92 1a 02 00  |................|
0006c9e0  76 70 00 00 e2 53 02 00  00 ff ff ff 00 00 00 00  |vp...S..........|
0006c9f0  a0 00 00 00 40 00 a0 a0  02 00 00 00 4a 29 00 00  |....@.......J)..|
0006ca00  92 53 02 00 08 00 00 00  fa 61 00 00 92 53 02 00  |.S.......a...S..|
0006ca10  06 00 00 00 12 69 00 00  92 53 02 00 26 70 00 00  |.....i...S..&p..|
0006ca20  7e 4c 02 00 26 70 00 00  66 45 02 00 08 00 00 00  |~L..&p..fE......|
0006ca30  26 70 00 00 0e 29 02 00  06 00 00 00 26 70 00 00  |&p...)......&p..|
0006ca40  fa 21 02 00 12 69 00 00  e2 1a 02 00 fa 61 00 00  |.!...i.......a..|
0006ca50  e2 1a 02 00 08 00 00 00  36 22 00 00 e2 1a 02 00  |........6"......|
0006ca60  06 00 00 00 1e 1b 00 00  e2 1a 02 00 0a 14 00 00  |................|
0006ca70  fa 21 02 00 0a 14 00 00  0e 29 02 00 08 00 00 00  |.!.......)......|
0006ca80  0a 14 00 00 66 45 02 00  06 00 00 00 0a 14 00 00  |....fE..........|
0006ca90  7e 4c 02 00 1e 1b 00 00  92 53 02 00 36 22 00 00  |~L.......S..6"..|
0006caa0  92 53 02 00 08 00 00 00  4a 29 00 00 92 53 02 00  |.S......J)...S..|
0006cab0  08 00 00 00 4a 29 00 00  92 53 02 00 05 00 00 00  |....J)...S......|
0006cac0  00 00 00 00 01 00 00 00  38 00 00 00 63 3c 00 00  |........8...c<..|
0006cad0  de bc 02 00 e3 5c 00 00  5e d4 02 00 00 00 00 00  |.....\..^.......|
0006cae0  00 ff ff ff 01 00 00 00  00 1e 00 00 00 1e 00 00  |................|
0006caf0  23 3c 00 00 de bd 02 00  36 34 00 00 01 00 00 00  |#<......64......|
0006cb00  38 00 00 00 46 3b 00 00  d2 22 02 00 c6 48 00 00  |8...F;..."...H..|
0006cb10  92 35 02 00 00 00 00 00  00 ff ff ff 01 00 00 00  |.5..............|
0006cb20  00 19 00 00 00 19 00 00  46 3b 00 00 52 23 02 00  |........F;..R#..|
0006cb30  34 00 00 00 01 00 00 00  38 00 00 00 9f 3d 00 00  |4.......8....=..|
0006cb40  d2 38 02 00 5f 46 00 00  92 4b 02 00 00 00 00 00  |.8.._F...K......|
0006cb50  00 ff ff ff 01 00 00 00  00 19 00 00 00 19 00 00  |................|
0006cb60  9f 3c 00 00 52 39 02 00  31 00 00 00 02 00 00 00  |.<..R9..1.......|
0006cb70  f4 00 00 00 02 11 03 00  4a a8 02 00 52 4a 03 00  |........J...RJ..|
0006cb80  9a e1 02 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |................|
0006cb90  42 00 00 00 02 00 00 00  91 26 03 00 4a e1 02 00  |B........&..J...|
0006cba0  08 00 00 00 d6 3b 03 00  4a e1 02 00 06 00 00 00  |.....;..J.......|
0006cbb0  ea 42 03 00 4a e1 02 00  02 4a 03 00 36 da 02 00  |.B..J....J..6...|
0006cbc0  02 4a 03 00 1e d3 02 00  08 00 00 00 02 4a 03 00  |.J...........J..|
0006cbd0  c6 b6 02 00 06 00 00 00  02 4a 03 00 b2 af 02 00  |.........J......|
0006cbe0  ea 42 03 00 9a a8 02 00  d6 3b 03 00 9a a8 02 00  |.B.......;......|
0006cbf0  08 00 00 00 7f 1f 03 00  9a a8 02 00 06 00 00 00  |................|
0006cc00  67 18 03 00 9a a8 02 00  52 11 03 00 b2 af 02 00  |g.......R.......|
0006cc10  52 11 03 00 c6 b6 02 00  08 00 00 00 52 11 03 00  |R...........R...|
0006cc20  1e d3 02 00 06 00 00 00  52 11 03 00 36 da 02 00  |........R...6...|
0006cc30  67 18 03 00 4a e1 02 00  7f 1f 03 00 4a e1 02 00  |g...J.......J...|
0006cc40  08 00 00 00 91 26 03 00  4a e1 02 00 08 00 00 00  |.....&..J.......|
0006cc50  91 26 03 00 4a e1 02 00  05 00 00 00 00 00 00 00  |.&..J...........|
0006cc60  02 00 00 00 f4 00 00 00  de 57 03 00 4a a8 02 00  |.........W..J...|
0006cc70  2e 91 03 00 9a e1 02 00  ff ff ff ff 00 00 00 00  |................|
0006cc80  a0 00 00 00 42 00 00 00  02 00 00 00 6d 6d 03 00  |....B.......mm..|
0006cc90  4a e1 02 00 08 00 00 00  b2 82 03 00 4a e1 02 00  |J...........J...|
0006cca0  06 00 00 00 c6 89 03 00  4a e1 02 00 de 90 03 00  |........J.......|
0006ccb0  36 da 02 00 de 90 03 00  1e d3 02 00 08 00 00 00  |6...............|
0006ccc0  de 90 03 00 c6 b6 02 00  06 00 00 00 de 90 03 00  |................|
0006ccd0  b2 af 02 00 c6 89 03 00  9a a8 02 00 b2 82 03 00  |................|
0006cce0  9a a8 02 00 08 00 00 00  5b 66 03 00 9a a8 02 00  |........[f......|
0006ccf0  06 00 00 00 43 5f 03 00  9a a8 02 00 2e 58 03 00  |....C_.......X..|
0006cd00  b2 af 02 00 2e 58 03 00  c6 b6 02 00 08 00 00 00  |.....X..........|
0006cd10  2e 58 03 00 1e d3 02 00  06 00 00 00 2e 58 03 00  |.X...........X..|
0006cd20  36 da 02 00 43 5f 03 00  4a e1 02 00 5b 66 03 00  |6...C_..J...[f..|
0006cd30  4a e1 02 00 08 00 00 00  6d 6d 03 00 4a e1 02 00  |J.......mm..J...|
0006cd40  08 00 00 00 6d 6d 03 00  4a e1 02 00 05 00 00 00  |....mm..J.......|
0006cd50  00 00 00 00 02 00 00 00  f4 00 00 00 b8 9e 03 00  |................|
0006cd60  4a a8 02 00 08 d8 03 00  9a e1 02 00 ff ff ff ff  |J...............|
0006cd70  00 00 00 00 a0 00 00 00  42 00 00 00 02 00 00 00  |........B.......|
0006cd80  4d b4 03 00 4a e1 02 00  08 00 00 00 8c c9 03 00  |M...J...........|
0006cd90  4a e1 02 00 06 00 00 00  a4 d0 03 00 4a e1 02 00  |J...........J...|
0006cda0  b8 d7 03 00 36 da 02 00  b8 d7 03 00 1e d3 02 00  |....6...........|
0006cdb0  08 00 00 00 b8 d7 03 00  c6 b6 02 00 06 00 00 00  |................|
0006cdc0  b8 d7 03 00 b2 af 02 00  a4 d0 03 00 9a a8 02 00  |................|
0006cdd0  8c c9 03 00 9a a8 02 00  08 00 00 00 35 ad 03 00  |............5...|
0006cde0  9a a8 02 00 06 00 00 00  20 a6 03 00 9a a8 02 00  |........ .......|
0006cdf0  08 9f 03 00 b2 af 02 00  08 9f 03 00 c6 b6 02 00  |................|
0006ce00  08 00 00 00 08 9f 03 00  1e d3 02 00 06 00 00 00  |................|
0006ce10  08 9f 03 00 36 da 02 00  20 a6 03 00 4a e1 02 00  |....6... ...J...|
0006ce20  35 ad 03 00 4a e1 02 00  08 00 00 00 4d b4 03 00  |5...J.......M...|
0006ce30  4a e1 02 00 08 00 00 00  4d b4 03 00 4a e1 02 00  |J.......M...J...|
0006ce40  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0006ce50  ba 13 00 00 26 ef 02 00  60 69 00 00 76 28 03 00  |....&...`i..v(..|
0006ce60  ff ff ff ff 00 00 00 00  a0 00 00 00 42 00 00 00  |............B...|
0006ce70  02 00 00 00 4a 29 00 00  26 28 03 00 08 00 00 00  |....J)..&(......|
0006ce80  e4 5a 00 00 26 28 03 00  06 00 00 00 fc 61 00 00  |.Z..&(.......a..|
0006ce90  26 28 03 00 10 69 00 00  12 21 03 00 10 69 00 00  |&(...i...!...i..|
0006cea0  fa 19 03 00 08 00 00 00  10 69 00 00 a2 fd 02 00  |.........i......|
0006ceb0  06 00 00 00 10 69 00 00  8e f6 02 00 fc 61 00 00  |.....i.......a..|
0006cec0  76 ef 02 00 e4 5a 00 00  76 ef 02 00 08 00 00 00  |v....Z..v.......|
0006ced0  36 22 00 00 76 ef 02 00  06 00 00 00 1e 1b 00 00  |6"..v...........|
0006cee0  76 ef 02 00 0a 14 00 00  8e f6 02 00 0a 14 00 00  |v...............|
0006cef0  a2 fd 02 00 08 00 00 00  0a 14 00 00 fa 19 03 00  |................|
0006cf00  06 00 00 00 0a 14 00 00  12 21 03 00 1e 1b 00 00  |.........!......|
0006cf10  26 28 03 00 36 22 00 00  26 28 03 00 08 00 00 00  |&(..6"..&(......|
0006cf20  4a 29 00 00 26 28 03 00  08 00 00 00 4a 29 00 00  |J)..&(......J)..|
0006cf30  26 28 03 00 05 00 00 00  00 00 00 00 02 00 00 00  |&(..............|
0006cf40  14 01 00 00 3c c9 03 00  4a a8 02 00 12 2d 04 00  |....<...J....-..|
0006cf50  76 28 03 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |v(..............|
0006cf60  42 00 00 00 02 00 00 00  c2 2c 04 00 c6 b6 02 00  |B........,......|
0006cf70  06 00 00 00 c2 2c 04 00  b2 af 02 00 aa 25 04 00  |.....,.......%..|
0006cf80  9a a8 02 00 96 1e 04 00  9a a8 02 00 08 00 00 00  |................|
0006cf90  14 f4 03 00 9a a8 02 00  06 00 00 00 fc ec 03 00  |................|
0006cfa0  9a a8 02 00 e8 e5 03 00  b2 af 02 00 e6 e5 03 00  |................|
0006cfb0  c6 b6 02 00 08 00 00 00  e6 e5 03 00 4a e1 02 00  |............J...|
0006cfc0  06 00 00 00 e6 e5 03 00  62 e8 02 00 d2 de 03 00  |........b.......|
0006cfd0  76 ef 02 00 ba d7 03 00  76 ef 02 00 06 00 00 00  |v.......v.......|
0006cfe0  a4 d0 03 00 76 ef 02 00  8c c9 03 00 8e f6 02 00  |....v...........|
0006cff0  8c c9 03 00 a2 fd 02 00  08 00 00 00 8c c9 03 00  |................|
0006d000  fa 19 03 00 06 00 00 00  8c c9 03 00 12 21 03 00  |.............!..|
0006d010  a4 d0 03 00 26 28 03 00  b8 d7 03 00 26 28 03 00  |....&(......&(..|
0006d020  08 00 00 00 96 1e 04 00  26 28 03 00 06 00 00 00  |........&(......|
0006d030  aa 25 04 00 26 28 03 00  c2 2c 04 00 12 21 03 00  |.%..&(...,...!..|
0006d040  c2 2c 04 00 fa 19 03 00  05 00 00 00 00 00 00 00  |.,..............|
0006d050  02 00 00 00 f4 00 00 00  46 ad 03 00 04 36 03 00  |........F....6..|
0006d060  5e 2c 04 00 54 6f 03 00  ff ff ff ff 00 00 00 00  |^,..To..........|
0006d070  a0 00 00 00 40 00 a0 a0  02 00 00 00 02 dd 03 00  |....@...........|
0006d080  04 6f 03 00 08 00 00 00  96 1e 04 00 04 6f 03 00  |.o...........o..|
0006d090  06 00 00 00 aa 25 04 00  04 6f 03 00 0e 2c 04 00  |.....%...o...,..|
0006d0a0  f8 67 03 00 0e 2c 04 00  ec 60 03 00 08 00 00 00  |.g...,...`......|
0006d0b0  0e 2c 04 00 bc 44 03 00  06 00 00 00 0e 2c 04 00  |.,...D.......,..|
0006d0c0  b0 3d 03 00 aa 25 04 00  54 36 03 00 96 1e 04 00  |.=...%..T6......|
0006d0d0  54 36 03 00 08 00 00 00  62 bb 03 00 54 36 03 00  |T6......b...T6..|
0006d0e0  06 00 00 00 4a b4 03 00  54 36 03 00 96 ad 03 00  |....J...T6......|
0006d0f0  b0 3d 03 00 96 ad 03 00  bc 44 03 00 08 00 00 00  |.=.......D......|
0006d100  96 ad 03 00 ec 60 03 00  06 00 00 00 96 ad 03 00  |.....`..........|
0006d110  f8 67 03 00 4a b4 03 00  04 6f 03 00 62 bb 03 00  |.g..J....o..b...|
0006d120  04 6f 03 00 08 00 00 00  02 dd 03 00 04 6f 03 00  |.o...........o..|
0006d130  08 00 00 00 02 dd 03 00  04 6f 03 00 05 00 00 00  |.........o......|
0006d140  00 00 00 00 02 00 00 00  f4 00 00 00 d6 6f 00 00  |.............o..|
0006d150  6e 61 02 00 26 a9 00 00  be 9a 02 00 00 ff ff ff  |na..&...........|
0006d160  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0006d170  6a 85 00 00 6e 9a 02 00  08 00 00 00 aa 9a 00 00  |j...n...........|
0006d180  6e 9a 02 00 06 00 00 00  c2 a1 00 00 6e 9a 02 00  |n...........n...|
0006d190  d6 a8 00 00 5a 93 02 00  d6 a8 00 00 42 8c 02 00  |....Z.......B...|
0006d1a0  08 00 00 00 d6 a8 00 00  ea 6f 02 00 06 00 00 00  |.........o......|
0006d1b0  d6 a8 00 00 d6 68 02 00  c2 a1 00 00 be 61 02 00  |.....h.......a..|
0006d1c0  aa 9a 00 00 be 61 02 00  08 00 00 00 52 7e 00 00  |.....a......R~..|
0006d1d0  be 61 02 00 06 00 00 00  3e 77 00 00 be 61 02 00  |.a......>w...a..|
0006d1e0  26 70 00 00 d6 68 02 00  26 70 00 00 ea 6f 02 00  |&p...h..&p...o..|
0006d1f0  08 00 00 00 26 70 00 00  42 8c 02 00 06 00 00 00  |....&p..B.......|
0006d200  26 70 00 00 5a 93 02 00  3e 77 00 00 6e 9a 02 00  |&p..Z...>w..n...|
0006d210  52 7e 00 00 6e 9a 02 00  08 00 00 00 6a 85 00 00  |R~..n.......j...|
0006d220  6e 9a 02 00 08 00 00 00  6a 85 00 00 6e 9a 02 00  |n.......j...n...|
0006d230  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0006d240  b2 b6 00 00 6e 61 02 00  02 f0 00 00 be 9a 02 00  |....na..........|
0006d250  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0006d260  02 00 00 00 46 cc 00 00  6e 9a 02 00 08 00 00 00  |....F...n.......|
0006d270  86 e1 00 00 6e 9a 02 00  06 00 00 00 9e e8 00 00  |....n...........|
0006d280  6e 9a 02 00 b2 ef 00 00  5a 93 02 00 b2 ef 00 00  |n.......Z.......|
0006d290  42 8c 02 00 08 00 00 00  b2 ef 00 00 ea 6f 02 00  |B............o..|
0006d2a0  06 00 00 00 b2 ef 00 00  d6 68 02 00 9e e8 00 00  |.........h......|
0006d2b0  be 61 02 00 86 e1 00 00  be 61 02 00 08 00 00 00  |.a.......a......|
0006d2c0  2e c5 00 00 be 61 02 00  06 00 00 00 1a be 00 00  |.....a..........|
0006d2d0  be 61 02 00 02 b7 00 00  d6 68 02 00 02 b7 00 00  |.a.......h......|
0006d2e0  ea 6f 02 00 08 00 00 00  02 b7 00 00 42 8c 02 00  |.o..........B...|
0006d2f0  06 00 00 00 02 b7 00 00  5a 93 02 00 1a be 00 00  |........Z.......|
0006d300  6e 9a 02 00 2e c5 00 00  6e 9a 02 00 08 00 00 00  |n.......n.......|
0006d310  46 cc 00 00 6e 9a 02 00  08 00 00 00 46 cc 00 00  |F...n.......F...|
0006d320  6e 9a 02 00 05 00 00 00  00 00 00 00 02 00 00 00  |n...............|
0006d330  f4 00 00 00 8e fd 00 00  6e 61 02 00 de 36 01 00  |........na...6..|
0006d340  be 9a 02 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |................|
0006d350  40 00 a0 a0 02 00 00 00  22 13 01 00 6e 9a 02 00  |@......."...n...|
0006d360  08 00 00 00 62 28 01 00  6e 9a 02 00 06 00 00 00  |....b(..n.......|
0006d370  7a 2f 01 00 6e 9a 02 00  8e 36 01 00 5a 93 02 00  |z/..n....6..Z...|
0006d380  8e 36 01 00 42 8c 02 00  08 00 00 00 8e 36 01 00  |.6..B........6..|
0006d390  ea 6f 02 00 06 00 00 00  8e 36 01 00 d6 68 02 00  |.o.......6...h..|
0006d3a0  7a 2f 01 00 be 61 02 00  62 28 01 00 be 61 02 00  |z/...a..b(...a..|
0006d3b0  08 00 00 00 0a 0c 01 00  be 61 02 00 06 00 00 00  |.........a......|
0006d3c0  f6 04 01 00 be 61 02 00  de fd 00 00 d6 68 02 00  |.....a.......h..|
0006d3d0  de fd 00 00 ea 6f 02 00  08 00 00 00 de fd 00 00  |.....o..........|
0006d3e0  42 8c 02 00 06 00 00 00  de fd 00 00 5a 93 02 00  |B...........Z...|
0006d3f0  f6 04 01 00 6e 9a 02 00  0a 0c 01 00 6e 9a 02 00  |....n.......n...|
0006d400  08 00 00 00 22 13 01 00  6e 9a 02 00 08 00 00 00  |...."...n.......|
0006d410  22 13 01 00 6e 9a 02 00  05 00 00 00 00 00 00 00  |"...n...........|
0006d420  02 00 00 00 f4 00 00 00  6a 44 01 00 6e 61 02 00  |........jD..na..|
0006d430  ba 7d 01 00 be 9a 02 00  ff ff ff ff 00 00 00 00  |.}..............|
0006d440  a0 00 00 00 40 00 a0 a0  02 00 00 00 fe 59 01 00  |....@........Y..|
0006d450  6e 9a 02 00 08 00 00 00  3e 6f 01 00 6e 9a 02 00  |n.......>o..n...|
0006d460  06 00 00 00 56 76 01 00  6e 9a 02 00 6a 7d 01 00  |....Vv..n...j}..|
0006d470  5a 93 02 00 6a 7d 01 00  42 8c 02 00 08 00 00 00  |Z...j}..B.......|
0006d480  6a 7d 01 00 ea 6f 02 00  06 00 00 00 6a 7d 01 00  |j}...o......j}..|
0006d490  d6 68 02 00 56 76 01 00  be 61 02 00 3e 6f 01 00  |.h..Vv...a..>o..|
0006d4a0  be 61 02 00 08 00 00 00  e6 52 01 00 be 61 02 00  |.a.......R...a..|
0006d4b0  06 00 00 00 d2 4b 01 00  be 61 02 00 ba 44 01 00  |.....K...a...D..|
0006d4c0  d6 68 02 00 ba 44 01 00  ea 6f 02 00 08 00 00 00  |.h...D...o......|
0006d4d0  ba 44 01 00 42 8c 02 00  06 00 00 00 ba 44 01 00  |.D..B........D..|
0006d4e0  5a 93 02 00 d2 4b 01 00  6e 9a 02 00 e6 52 01 00  |Z....K..n....R..|
0006d4f0  6e 9a 02 00 08 00 00 00  fe 59 01 00 6e 9a 02 00  |n........Y..n...|
0006d500  08 00 00 00 fe 59 01 00  6e 9a 02 00 05 00 00 00  |.....Y..n.......|
0006d510  00 00 00 00 02 00 00 00  f4 00 00 00 46 8b 01 00  |............F...|
0006d520  6e 61 02 00 96 c4 01 00  be 9a 02 00 ff ff ff ff  |na..............|
0006d530  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0006d540  da a0 01 00 6e 9a 02 00  08 00 00 00 1a b6 01 00  |....n...........|
0006d550  6e 9a 02 00 06 00 00 00  32 bd 01 00 6e 9a 02 00  |n.......2...n...|
0006d560  46 c4 01 00 5a 93 02 00  46 c4 01 00 42 8c 02 00  |F...Z...F...B...|
0006d570  08 00 00 00 46 c4 01 00  ea 6f 02 00 06 00 00 00  |....F....o......|
0006d580  46 c4 01 00 d6 68 02 00  32 bd 01 00 be 61 02 00  |F....h..2....a..|
0006d590  1a b6 01 00 be 61 02 00  08 00 00 00 c2 99 01 00  |.....a..........|
0006d5a0  be 61 02 00 06 00 00 00  ae 92 01 00 be 61 02 00  |.a...........a..|
0006d5b0  96 8b 01 00 d6 68 02 00  96 8b 01 00 ea 6f 02 00  |.....h.......o..|
0006d5c0  08 00 00 00 96 8b 01 00  42 8c 02 00 06 00 00 00  |........B.......|
0006d5d0  96 8b 01 00 5a 93 02 00  ae 92 01 00 6e 9a 02 00  |....Z.......n...|
0006d5e0  c2 99 01 00 6e 9a 02 00  08 00 00 00 da a0 01 00  |....n...........|
0006d5f0  6e 9a 02 00 08 00 00 00  da a0 01 00 6e 9a 02 00  |n...........n...|
0006d600  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0006d610  22 d2 01 00 6e 61 02 00  72 0b 02 00 be 9a 02 00  |"...na..r.......|
0006d620  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0006d630  02 00 00 00 b6 e7 01 00  6e 9a 02 00 08 00 00 00  |........n.......|
0006d640  f6 fc 01 00 6e 9a 02 00  06 00 00 00 0e 04 02 00  |....n...........|
0006d650  6e 9a 02 00 22 0b 02 00  5a 93 02 00 22 0b 02 00  |n..."...Z..."...|
0006d660  42 8c 02 00 08 00 00 00  22 0b 02 00 ea 6f 02 00  |B......."....o..|
0006d670  06 00 00 00 22 0b 02 00  d6 68 02 00 0e 04 02 00  |...."....h......|
0006d680  be 61 02 00 f6 fc 01 00  be 61 02 00 08 00 00 00  |.a.......a......|
0006d690  9e e0 01 00 be 61 02 00  06 00 00 00 8a d9 01 00  |.....a..........|
0006d6a0  be 61 02 00 72 d2 01 00  d6 68 02 00 72 d2 01 00  |.a..r....h..r...|
0006d6b0  ea 6f 02 00 08 00 00 00  72 d2 01 00 42 8c 02 00  |.o......r...B...|
0006d6c0  06 00 00 00 72 d2 01 00  5a 93 02 00 8a d9 01 00  |....r...Z.......|
0006d6d0  6e 9a 02 00 9e e0 01 00  6e 9a 02 00 08 00 00 00  |n.......n.......|
0006d6e0  b6 e7 01 00 6e 9a 02 00  08 00 00 00 b6 e7 01 00  |....n...........|
0006d6f0  6e 9a 02 00 05 00 00 00  00 00 00 00 02 00 00 00  |n...............|
0006d700  f4 00 00 00 fe 18 02 00  6e 61 02 00 4e 52 02 00  |........na..NR..|
0006d710  be 9a 02 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |................|
0006d720  40 00 a0 a0 02 00 00 00  92 2e 02 00 6e 9a 02 00  |@...........n...|
0006d730  08 00 00 00 d2 43 02 00  6e 9a 02 00 06 00 00 00  |.....C..n.......|
0006d740  ea 4a 02 00 6e 9a 02 00  fe 51 02 00 5a 93 02 00  |.J..n....Q..Z...|
0006d750  fe 51 02 00 42 8c 02 00  08 00 00 00 fe 51 02 00  |.Q..B........Q..|
0006d760  ea 6f 02 00 06 00 00 00  fe 51 02 00 d6 68 02 00  |.o.......Q...h..|
0006d770  ea 4a 02 00 be 61 02 00  d2 43 02 00 be 61 02 00  |.J...a...C...a..|
0006d780  08 00 00 00 7a 27 02 00  be 61 02 00 06 00 00 00  |....z'...a......|
0006d790  66 20 02 00 be 61 02 00  4e 19 02 00 d6 68 02 00  |f ...a..N....h..|
0006d7a0  4e 19 02 00 ea 6f 02 00  08 00 00 00 4e 19 02 00  |N....o......N...|
0006d7b0  42 8c 02 00 06 00 00 00  4e 19 02 00 5a 93 02 00  |B.......N...Z...|
0006d7c0  66 20 02 00 6e 9a 02 00  7a 27 02 00 6e 9a 02 00  |f ..n...z'..n...|
0006d7d0  08 00 00 00 92 2e 02 00  6e 9a 02 00 08 00 00 00  |........n.......|
0006d7e0  92 2e 02 00 6e 9a 02 00  05 00 00 00 00 00 00 00  |....n...........|
0006d7f0  02 00 00 00 f4 00 00 00  da 5f 02 00 6e 61 02 00  |........._..na..|
0006d800  2a 99 02 00 be 9a 02 00  ff ff ff ff 00 00 00 00  |*...............|
0006d810  a0 00 00 00 40 00 a0 a0  02 00 00 00 6e 75 02 00  |....@.......nu..|
0006d820  6e 9a 02 00 08 00 00 00  ae 8a 02 00 6e 9a 02 00  |n...........n...|
0006d830  06 00 00 00 c6 91 02 00  6e 9a 02 00 da 98 02 00  |........n.......|
0006d840  5a 93 02 00 da 98 02 00  42 8c 02 00 08 00 00 00  |Z.......B.......|
0006d850  da 98 02 00 ea 6f 02 00  06 00 00 00 da 98 02 00  |.....o..........|
0006d860  d6 68 02 00 c6 91 02 00  be 61 02 00 ae 8a 02 00  |.h.......a......|
0006d870  be 61 02 00 08 00 00 00  56 6e 02 00 be 61 02 00  |.a......Vn...a..|
0006d880  06 00 00 00 42 67 02 00  be 61 02 00 2a 60 02 00  |....Bg...a..*`..|
0006d890  d6 68 02 00 2a 60 02 00  ea 6f 02 00 08 00 00 00  |.h..*`...o......|
0006d8a0  2a 60 02 00 42 8c 02 00  06 00 00 00 2a 60 02 00  |*`..B.......*`..|
0006d8b0  5a 93 02 00 42 67 02 00  6e 9a 02 00 56 6e 02 00  |Z...Bg..n...Vn..|
0006d8c0  6e 9a 02 00 08 00 00 00  6e 75 02 00 6e 9a 02 00  |n.......nu..n...|
0006d8d0  08 00 00 00 6e 75 02 00  6e 9a 02 00 05 00 00 00  |....nu..n.......|
0006d8e0  00 00 00 00 02 00 00 00  f4 00 00 00 b6 a6 02 00  |................|
0006d8f0  6e 61 02 00 06 e0 02 00  be 9a 02 00 ff ff ff ff  |na..............|
0006d900  00 00 00 00 a0 00 00 00  40 00 a0 a0 02 00 00 00  |........@.......|
0006d910  4a bc 02 00 6e 9a 02 00  08 00 00 00 8a d1 02 00  |J...n...........|
0006d920  6e 9a 02 00 06 00 00 00  a2 d8 02 00 6e 9a 02 00  |n...........n...|
0006d930  b6 df 02 00 5a 93 02 00  b6 df 02 00 42 8c 02 00  |....Z.......B...|
0006d940  08 00 00 00 b6 df 02 00  ea 6f 02 00 06 00 00 00  |.........o......|
0006d950  b6 df 02 00 d6 68 02 00  a2 d8 02 00 be 61 02 00  |.....h.......a..|
0006d960  8a d1 02 00 be 61 02 00  08 00 00 00 32 b5 02 00  |.....a......2...|
0006d970  be 61 02 00 06 00 00 00  1e ae 02 00 be 61 02 00  |.a...........a..|
0006d980  06 a7 02 00 d6 68 02 00  06 a7 02 00 ea 6f 02 00  |.....h.......o..|
0006d990  08 00 00 00 06 a7 02 00  42 8c 02 00 06 00 00 00  |........B.......|
0006d9a0  06 a7 02 00 5a 93 02 00  1e ae 02 00 6e 9a 02 00  |....Z.......n...|
0006d9b0  32 b5 02 00 6e 9a 02 00  08 00 00 00 4a bc 02 00  |2...n.......J...|
0006d9c0  6e 9a 02 00 08 00 00 00  4a bc 02 00 6e 9a 02 00  |n.......J...n...|
0006d9d0  05 00 00 00 00 00 00 00  02 00 00 00 f4 00 00 00  |................|
0006d9e0  92 ed 02 00 6e 61 02 00  e2 26 03 00 be 9a 02 00  |....na...&......|
0006d9f0  ff ff ff ff 00 00 00 00  a0 00 00 00 40 00 a0 a0  |............@...|
0006da00  02 00 00 00 26 03 03 00  6e 9a 02 00 08 00 00 00  |....&...n.......|
0006da10  66 18 03 00 6e 9a 02 00  06 00 00 00 7e 1f 03 00  |f...n.......~...|
0006da20  6e 9a 02 00 92 26 03 00  5a 93 02 00 92 26 03 00  |n....&..Z....&..|
0006da30  42 8c 02 00 08 00 00 00  92 26 03 00 ea 6f 02 00  |B........&...o..|
0006da40  06 00 00 00 92 26 03 00  d6 68 02 00 7e 1f 03 00  |.....&...h..~...|
0006da50  be 61 02 00 66 18 03 00  be 61 02 00 08 00 00 00  |.a..f....a......|
0006da60  0e fc 02 00 be 61 02 00  06 00 00 00 fa f4 02 00  |.....a..........|
0006da70  be 61 02 00 e2 ed 02 00  d6 68 02 00 e2 ed 02 00  |.a.......h......|
0006da80  ea 6f 02 00 08 00 00 00  e2 ed 02 00 42 8c 02 00  |.o..........B...|
0006da90  06 00 00 00 e2 ed 02 00  5a 93 02 00 fa f4 02 00  |........Z.......|
0006daa0  6e 9a 02 00 0e fc 02 00  6e 9a 02 00 08 00 00 00  |n.......n.......|
0006dab0  26 03 03 00 6e 9a 02 00  08 00 00 00 26 03 03 00  |&...n.......&...|
0006dac0  6e 9a 02 00 05 00 00 00  00 00 00 00 02 00 00 00  |n...............|
0006dad0  f4 00 00 00 6e 34 03 00  6e 61 02 00 be 6d 03 00  |....n4..na...m..|
0006dae0  be 9a 02 00 ff ff ff ff  00 00 00 00 a0 00 00 00  |................|
0006daf0  40 00 a0 a0 02 00 00 00  02 4a 03 00 6e 9a 02 00  |@........J..n...|
0006db00  08 00 00 00 42 5f 03 00  6e 9a 02 00 06 00 00 00  |....B_..n.......|
0006db10  5a 66 03 00 6e 9a 02 00  6e 6d 03 00 5a 93 02 00  |Zf..n...nm..Z...|
0006db20  6e 6d 03 00 42 8c 02 00  08 00 00 00 6e 6d 03 00  |nm..B.......nm..|
0006db30  ea 6f 02 00 06 00 00 00  6e 6d 03 00 d6 68 02 00  |.o......nm...h..|
0006db40  5a 66 03 00 be 61 02 00  42 5f 03 00 be 61 02 00  |Zf...a..B_...a..|
0006db50  08 00 00 00 ea 42 03 00  be 61 02 00 06 00 00 00  |.....B...a......|
0006db60  d6 3b 03 00 be 61 02 00  be 34 03 00 d6 68 02 00  |.;...a...4...h..|
0006db70  be 34 03 00 ea 6f 02 00  08 00 00 00 be 34 03 00  |.4...o.......4..|
0006db80  42 8c 02 00 06 00 00 00  be 34 03 00 5a 93 02 00  |B........4..Z...|
0006db90  d6 3b 03 00 6e 9a 02 00  ea 42 03 00 6e 9a 02 00  |.;..n....B..n...|
0006dba0  08 00 00 00 02 4a 03 00  6e 9a 02 00 08 00 00 00  |.....J..n.......|
0006dbb0  02 4a 03 00 6e 9a 02 00  05 00 00 00 00 00 00 00  |.J..n...........|
0006dbc0  01 00 00 00 38 00 00 00  92 7e 00 00 02 76 02 00  |....8....~...v..|
0006dbd0  12 9f 00 00 82 8d 02 00  00 00 00 00 00 ff ff ff  |................|
0006dbe0  01 00 00 00 00 1e 00 00  00 1e 00 00 52 7e 00 00  |............R~..|
0006dbf0  02 77 02 00 39 34 00 00  01 00 00 00 38 00 00 00  |.w..94......8...|
0006dc00  6e c5 00 00 02 76 02 00  ee e5 00 00 82 8d 02 00  |n....v..........|
0006dc10  00 00 00 00 00 ff ff ff  01 00 00 00 00 1e 00 00  |................|
0006dc20  00 1e 00 00 2e c5 00 00  02 77 02 00 39 37 00 00  |.........w..97..|
0006dc30  01 00 00 00 38 00 00 00  4a 0c 01 00 02 76 02 00  |....8...J....v..|
0006dc40  8a 2c 01 00 82 8d 02 00  00 00 00 00 00 ff ff ff  |.,..............|
0006dc50  01 00 00 00 00 1e 00 00  00 1e 00 00 0a 0c 01 00  |................|
0006dc60  02 77 02 00 36 36 00 00  01 00 00 00 38 00 00 00  |.w..66......8...|
0006dc70  26 53 01 00 02 76 02 00  66 73 01 00 82 8d 02 00  |&S...v..fs......|
0006dc80  00 00 00 00 00 ff ff ff  01 00 00 00 00 1e 00 00  |................|
0006dc90  00 1e 00 00 e6 52 01 00  02 77 02 00 38 32 00 00  |.....R...w..82..|
0006dca0  01 00 00 00 38 00 00 00  02 9a 01 00 02 76 02 00  |....8........v..|
0006dcb0  42 ba 01 00 82 8d 02 00  00 00 00 00 00 ff ff ff  |B...............|
0006dcc0  01 00 00 00 00 1e 00 00  00 1e 00 00 c2 99 01 00  |................|
0006dcd0  02 77 02 00 39 39 00 00  01 00 00 00 38 00 00 00  |.w..99......8...|
0006dce0  0a d6 01 00 02 76 02 00  ca 05 02 00 82 8d 02 00  |.....v..........|
0006dcf0  00 00 00 00 00 ff ff ff  01 00 00 00 00 1e 00 00  |................|
0006dd00  00 1e 00 00 8a d4 01 00  02 77 02 00 31 30 30 00  |.........w..100.|
0006dd10  01 00 00 00 38 00 00 00  ba 27 02 00 02 76 02 00  |....8....'...v..|
0006dd20  fa 47 02 00 82 8d 02 00  00 00 00 00 00 ff ff ff  |.G..............|
0006dd30  01 00 00 00 00 1e 00 00  00 1e 00 00 7a 27 02 00  |............z'..|
0006dd40  02 77 02 00 38 35 00 00  01 00 00 00 38 00 00 00  |.w..85......8...|
0006dd50  c2 63 02 00 02 76 02 00  42 8f 02 00 82 8d 02 00  |.c...v..B.......|
0006dd60  00 00 00 00 00 ff ff ff  01 00 00 00 00 1e 00 00  |................|
0006dd70  00 1e 00 00 42 62 02 00  02 77 02 00 31 30 31 00  |....Bb...w..101.|
0006dd80  01 00 00 00 38 00 00 00  9e aa 02 00 02 76 02 00  |....8........v..|
0006dd90  5e da 02 00 82 8d 02 00  00 00 00 00 00 ff ff ff  |^...............|
0006dda0  01 00 00 00 00 1e 00 00  00 1e 00 00 1e a9 02 00  |................|
0006ddb0  02 77 02 00 31 30 32 00  01 00 00 00 38 00 00 00  |.w..102.....8...|
0006ddc0  7a f1 02 00 02 76 02 00  3a 21 03 00 82 8d 02 00  |z....v..:!......|
0006ddd0  00 00 00 00 00 ff ff ff  01 00 00 00 00 1e 00 00  |................|
0006dde0  00 1e 00 00 fa ef 02 00  02 77 02 00 31 30 33 00  |.........w..103.|
0006ddf0  01 00 00 00 38 00 00 00  56 38 03 00 02 76 02 00  |....8...V8...v..|
0006de00  56 68 03 00 82 8d 02 00  00 00 00 00 00 ff ff ff  |Vh..............|
0006de10  01 00 00 00 00 1e 00 00  00 1e 00 00 d6 36 03 00  |.............6..|
0006de20  02 77 02 00 31 30 34 00  01 00 00 00 38 00 00 00  |.w..104.....8...|
0006de30  e4 d0 03 00 2e 7f 02 00  e4 dd 03 00 ee 92 02 00  |................|
0006de40  00 00 00 00 00 ff ff ff  01 00 00 00 00 19 00 00  |................|
0006de50  00 19 00 00 a4 d0 03 00  2e 80 02 00 30 00 00 00  |............0...|
0006de60  01 00 00 00 38 00 00 00  b8 37 00 00 2e 7f 02 00  |....8....7......|
0006de70  b8 44 00 00 ee 92 02 00  00 00 00 00 00 ff ff ff  |.D..............|
0006de80  01 00 00 00 00 19 00 00  00 19 00 00 78 37 00 00  |............x7..|
0006de90  2e 80 02 00 30 00 00 00  01 00 00 00 38 00 00 00  |....0.......8...|
0006dea0  b8 37 00 00 2e 69 02 00  b8 44 00 00 ee 7c 02 00  |.7...i...D...|..|
0006deb0  00 00 00 00 00 ff ff ff  01 00 00 00 00 19 00 00  |................|
0006dec0  00 19 00 00 78 37 00 00  2e 6a 02 00 33 00 00 00  |....x7...j..3...|
0006ded0  02 00 00 00 f4 00 00 00  4a 7b 03 00 6e 61 02 00  |........J{..na..|
0006dee0  12 2d 04 00 be 9a 02 00  ff ff ff ff 00 00 00 00  |.-..............|
0006def0  a0 00 00 00 42 00 00 00  02 00 00 00 ba d7 03 00  |....B...........|
0006df00  6e 9a 02 00 08 00 00 00  96 1e 04 00 6e 9a 02 00  |n...........n...|
0006df10  06 00 00 00 aa 25 04 00  6e 9a 02 00 c2 2c 04 00  |.....%..n....,..|
0006df20  5a 93 02 00 c2 2c 04 00  42 8c 02 00 08 00 00 00  |Z....,..B.......|
0006df30  c2 2c 04 00 ea 6f 02 00  06 00 00 00 c2 2c 04 00  |.,...o.......,..|
0006df40  d6 68 02 00 aa 25 04 00  be 61 02 00 96 1e 04 00  |.h...%...a......|
0006df50  be 61 02 00 08 00 00 00  c6 89 03 00 be 61 02 00  |.a...........a..|
0006df60  06 00 00 00 b2 82 03 00  be 61 02 00 9a 7b 03 00  |.........a...{..|
0006df70  d6 68 02 00 9a 7b 03 00  ea 6f 02 00 08 00 00 00  |.h...{...o......|
0006df80  9a 7b 03 00 42 8c 02 00  06 00 00 00 9a 7b 03 00  |.{..B........{..|
0006df90  5a 93 02 00 b2 82 03 00  6e 9a 02 00 c6 89 03 00  |Z.......n.......|
0006dfa0  6e 9a 02 00 08 00 00 00  61 bb 03 00 6e 9a 02 00  |n.......a...n...|
0006dfb0  08 00 00 00 ba d7 03 00  6e 9a 02 00 05 00 00 00  |........n.......|
0006dfc0  00 00 00 00 65 00 01 00  8c 00 00 00 00 00 00 00  |....e...........|
0006dfd0  00 00 00 00 0a 00 00 00  0a 00 00 00 04 00 00 00  |................|
0006dfe0  01 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
0006dff0  01 00 00 00 01 00 00 00  00 00 00 00 00 00 00 00  |................|
0006e000  00 00 00 00 00 00 00 00  00 00 00 00 01 00 00 00  |................|
0006e010  01 00 00 00 01 00 00 00  00 00 f0 3f 00 00 00 00  |...........?....|
0006e020  00 00 24 40 00 00 00 00  dd 46 00 00 dd 46 00 00  |..$@.....F...F..|
0006e030  16 07 00 00 16 07 00 00  03 00 00 00 01 00 00 00  |................|
0006e040  01 00 00 00 01 00 00 00  01 00 00 00 00 00 00 00  |................|
0006e050  65 00 01 00 38 00 00 00  00 00 00 00 00 00 00 00  |e...8...........|
0006e060  0a 00 00 00 0a 00 00 00  04 00 00 00 02 00 00 00  |................|
0006e070  1a 00 00 00 00 19 00 00  00 19 00 00 00 00 00 00  |................|
0006e080  00 ff ff ff 02 00 00 00  65 00 01 00 44 00 00 00  |........e...D...|
0006e090  00 00 00 00 00 00 00 00  0a 00 00 00 0a 00 00 00  |................|
0006e0a0  04 00 00 00 09 00 00 00  00 00 00 00 ff ff ff ff  |................|
0006e0b0  00 00 00 00 ff ff ff ff  00 00 00 00 00 00 00 00  |................|
0006e0c0  00 00 00 00 20 20 00 00  01 00 00 00 65 00 01 00  |....  ......e...|
0006e0d0  e4 08 00 00 00 00 00 00  00 00 00 00 0a 00 00 00  |................|
0006e0e0  0a 00 00 00 04 00 00 00  04 00 00 00 00 00 00 00  |................|
0006e0f0  02 00 00 00 00 09 00 00  00 09 00 00 00 00 00 00  |................|
0006e100  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0006e150  00 00 00 00 00 00 00 00  00 00 00 00 02 00 00 00  |................|
0006e160  00 12 00 00 00 12 00 00  00 00 00 00 00 00 00 00  |................|
0006e170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0006e1c0  00 00 00 00 00 00 00 00  02 00 00 00 00 24 00 00  |.............$..|
0006e1d0  00 24 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.$..............|
0006e1e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0006e230  00 00 00 00 04 00 00 00  00 24 00 00 00 09 00 00  |.........$......|
0006e240  00 09 00 00 00 09 00 00  00 00 00 00 00 00 00 00  |................|
0006e250  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0006e2a0  02 00 00 00 00 09 00 00  00 12 00 00 00 00 00 00  |................|
0006e2b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0006e300  00 00 00 00 00 00 00 00  00 00 00 00 02 00 00 00  |................|
0006e310  00 09 00 00 00 24 00 00  00 00 00 00 00 00 00 00  |.....$..........|
0006e320  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0006e370  00 00 00 00 00 00 00 00  02 00 00 00 00 12 00 00  |................|
0006e380  00 24 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.$..............|
0006e390  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0006e3e0  00 00 00 00 04 00 00 00  00 09 00 00 00 09 00 00  |................|
0006e3f0  00 12 00 00 00 24 00 00  00 00 00 00 00 00 00 00  |.....$..........|
0006e400  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0006e450  04 00 00 00 00 09 00 00  00 12 00 00 00 24 00 00  |.............$..|
0006e460  00 12 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0006e470  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0006e4b0  00 00 00 00 00 00 00 00  00 00 00 00 04 00 00 00  |................|
0006e4c0  00 09 00 00 00 09 00 00  00 12 00 00 00 09 00 00  |................|
0006e4d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0006e520  00 00 00 00 01 00 00 00  01 00 00 00 01 00 00 00  |................|
0006e530  53 74 61 6e 64 61 72 64  00 00 00 00 00 00 00 00  |Standard........|
0006e540  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0006e9a0  00 00 00 00 00 00 00 00  01 00 00 00 01 00 00 00  |................|
0006e9b0  65 00 01 00 70 00 00 00  00 00 00 00 00 00 00 00  |e...p...........|
0006e9c0  0a 00 00 00 0a 00 00 00  04 00 00 00 05 00 00 00  |................|
0006e9d0  01 00 00 00 04 00 00 00  02 00 00 00 01 00 00 00  |................|
0006e9e0  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
0006e9f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
0006ea20  44 41 54 41 0b 02 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
0006ea30  31 39 33 20 20 52 65 61  64 2f 57 72 69 74 65 20  |193  Read/Write |
0006ea40  66 6c 61 73 68 20 63 6f  75 6e 74 65 72 0a 23 50  |flash counter.#P|
0006ea50  61 72 65 6e 74 20 4f 53  5f 42 79 74 65 49 6e 64  |arent OS_ByteInd|
0006ea60  65 78 0a 3d 3e 09 52 30  20 3d 09 31 39 33 20 28  |ex.=>.R0 =.193 (|
0006ea70  26 43 31 29 0a 09 52 31  20 3d 09 45 4f 52 20 76  |&C1)..R1 =.EOR v|
0006ea80  61 6c 75 65 0a 09 52 32  20 3d 09 41 4e 44 20 76  |alue..R2 =.AND v|
0006ea90  61 6c 75 65 0a 0a 3c 3d  09 52 30 20 70 72 65 73  |alue..<=.R0 pres|
0006eaa0  65 72 76 65 64 0a 09 52  31 20 3d 09 76 61 6c 75  |erved..R1 =.valu|
0006eab0  65 20 62 65 66 6f 72 65  20 62 65 69 6e 67 20 6f  |e before being o|
0006eac0  76 65 72 77 72 69 74 74  65 6e 0a 09 52 32 20 63  |verwritten..R2 c|
0006ead0  6f 72 72 75 70 74 65 64  0a 0a 54 68 69 73 20 63  |orrupted..This c|
0006eae0  61 6c 6c 20 72 65 61 64  73 20 6f 72 20 73 65 74  |all reads or set|
0006eaf0  73 20 74 68 65 20 63 6f  75 6e 74 2d 64 6f 77 6e  |s the count-down|
0006eb00  20 74 69 6d 65 72 20 66  6f 72 20 66 6c 61 73 68  | timer for flash|
0006eb10  69 6e 67 20 63 6f 6c 6f  75 72 73 2e 20 50 72 6f  |ing colours. Pro|
0006eb20  76 69 64 65 64 20 74 68  61 74 20 74 68 65 20 66  |vided that the f|
0006eb30  6c 61 73 68 20 70 65 72  69 6f 64 20 69 73 20 6e  |lash period is n|
0006eb40  6f 74 20 69 6e 66 69 6e  69 74 65 2c 20 74 68 65  |ot infinite, the|
0006eb50  20 63 6f 75 6e 74 65 72  20 69 73 20 6c 6f 61 64  | counter is load|
0006eb60  65 64 20 77 69 74 68 20  74 68 65 20 64 75 72 61  |ed with the dura|
0006eb70  74 69 6f 6e 20 6f 66 20  74 68 65 20 66 69 72 73  |tion of the firs|
0006eb80  74 20 66 6c 61 73 68 20  63 6f 6c 6f 75 72 20 61  |t flash colour a|
0006eb90  6e 64 20 63 6f 75 6e 74  73 20 64 6f 77 6e 20 62  |nd counts down b|
0006eba0  79 20 6f 6e 65 20 65 76  65 72 79 20 56 53 79 6e  |y one every VSyn|
0006ebb0  63 20 75 6e 74 69 6c 20  69 74 20 72 65 61 63 68  |c until it reach|
0006ebc0  65 73 20 7a 65 72 6f 2e  20 41 74 20 74 68 69 73  |es zero. At this|
0006ebd0  20 70 6f 69 6e 74 20 74  68 65 20 63 6f 6c 6f 75  | point the colou|
0006ebe0  72 73 20 61 72 65 20 73  77 61 70 70 65 64 20 61  |rs are swapped a|
0006ebf0  6e 64 20 74 68 65 20 63  6f 75 6e 74 65 72 20 6c  |nd the counter l|
0006ec00  6f 61 64 65 64 20 77 69  74 68 20 74 68 65 20 73  |oaded with the s|
0006ec10  65 63 6f 6e 64 20 66 6c  61 73 68 20 70 65 72 69  |econd flash peri|
0006ec20  6f 64 2e 20 2f 65 74 63  2f 2e 0a 00 44 41 54 41  |od. /etc/...DATA|
0006ec30  e0 01 00 00 4f 53 5f 42  79 74 65 20 31 39 34 20  |....OS_Byte 194 |
0006ec40  20 52 65 61 64 20 64 75  72 61 74 69 6f 6e 20 6f  | Read duration o|
0006ec50  66 20 73 65 63 6f 6e 64  20 66 6c 61 73 68 20 63  |f second flash c|
0006ec60  6f 6c 6f 75 72 0a 23 50  61 72 65 6e 74 20 4f 53  |olour.#Parent OS|
0006ec70  5f 42 79 74 65 49 6e 64  65 78 0a 3d 3e 09 52 30  |_ByteIndex.=>.R0|
0006ec80  20 3d 09 31 39 34 20 28  26 43 32 29 0a 09 52 31  | =.194 (&C2)..R1|
0006ec90  20 3d 09 30 0a 09 52 32  20 3d 09 32 35 35 0a 0a  | =.0..R2 =.255..|
0006eca0  3c 3d 09 52 30 20 3d 09  70 72 65 73 65 72 76 65  |<=.R0 =.preserve|
0006ecb0  64 0a 09 52 31 20 3d 09  64 75 72 61 74 69 6f 6e  |d..R1 =.duration|
0006ecc0  20 28 76 69 64 65 6f 20  66 72 61 6d 65 73 29 0a  | (video frames).|
0006ecd0  09 52 32 20 63 6f 72 72  75 70 74 65 64 0a 20 20  |.R2 corrupted.  |
0006ece0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0006ed10  0a 54 68 69 73 20 63 61  6c 6c 20 72 65 61 64 73  |.This call reads|
0006ed20  20 74 68 65 20 64 75 72  61 74 69 6f 6e 20 6f 66  | the duration of|
0006ed30  20 74 68 65 20 73 65 63  6f 6e 64 20 66 6c 61 73  | the second flas|
0006ed40  68 20 63 6f 6c 6f 75 72  2c 20 61 73 20 73 65 74  |h colour, as set|
0006ed50  20 77 69 74 68 20 3c 4f  53 5f 42 79 74 65 20 31  | with <OS_Byte 1|
0006ed60  30 3d 3e 4f 53 5f 42 79  74 65 30 31 30 3e 20 6f  |0=>OS_Byte010> o|
0006ed70  72 20 3c 56 44 55 20 32  33 2c 31 30 3d 3e 56 44  |r <VDU 23,10=>VD|
0006ed80  55 3a 32 33 2c 31 30 3e  2e 20 54 68 69 73 20 63  |U:23,10>. This c|
0006ed90  61 6c 6c 20 73 68 6f 75  6c 64 20 6e 6f 74 20 62  |all should not b|
0006eda0  65 20 75 73 65 64 20 74  6f 20 77 72 69 74 65 20  |e used to write |
0006edb0  74 68 65 20 76 61 6c 75  65 20 2d 20 64 6f 69 6e  |the value - doin|
0006edc0  67 20 73 6f 20 77 6f 75  6c 64 20 6f 6e 6c 79 20  |g so would only |
0006edd0  63 68 61 6e 67 65 20 74  68 65 20 76 61 6c 75 65  |change the value|
0006ede0  20 69 6e 20 6d 65 6d 6f  72 79 2c 20 77 69 74 68  | in memory, with|
0006edf0  6f 75 74 20 61 66 66 65  63 74 69 6e 67 20 74 68  |out affecting th|
0006ee00  65 20 68 61 72 64 77 61  72 65 2e 0a 44 41 54 41  |e hardware..DATA|
0006ee10  db 01 00 00 4f 53 5f 42  79 74 65 20 31 39 35 20  |....OS_Byte 195 |
0006ee20  20 52 65 61 64 20 64 75  72 61 74 69 6f 6e 20 6f  | Read duration o|
0006ee30  66 20 66 69 72 73 74 20  66 6c 61 73 68 20 63 6f  |f first flash co|
0006ee40  6c 6f 75 72 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |lour.#Parent OS_|
0006ee50  42 79 74 65 49 6e 64 65  78 0a 3d 3e 09 52 30 20  |ByteIndex.=>.R0 |
0006ee60  3d 09 31 39 35 20 28 26  43 33 29 0a 09 52 31 20  |=.195 (&C3)..R1 |
0006ee70  3d 09 30 0a 09 52 32 20  3d 09 32 35 35 0a 0a 3c  |=.0..R2 =.255..<|
0006ee80  3d 09 52 30 20 3d 09 70  72 65 73 65 72 76 65 64  |=.R0 =.preserved|
0006ee90  0a 09 52 31 20 3d 09 64  75 72 61 74 69 6f 6e 20  |..R1 =.duration |
0006eea0  28 76 69 64 65 6f 20 66  72 61 6d 65 73 29 0a 09  |(video frames)..|
0006eeb0  52 32 20 63 6f 72 72 75  70 74 65 64 0a 20 20 20  |R2 corrupted.   |
0006eec0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0006eee0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
0006eef0  54 68 69 73 20 63 61 6c  6c 20 72 65 61 64 73 20  |This call reads |
0006ef00  74 68 65 20 64 75 72 61  74 69 6f 6e 20 6f 66 20  |the duration of |
0006ef10  74 68 65 20 66 69 72 73  74 20 66 6c 61 73 68 20  |the first flash |
0006ef20  63 6f 6c 6f 75 72 2c 20  61 73 20 73 65 74 20 77  |colour, as set w|
0006ef30  69 74 68 20 3c 4f 53 5f  42 79 74 65 20 39 3d 3e  |ith <OS_Byte 9=>|
0006ef40  4f 53 5f 42 79 74 65 30  30 39 3e 20 6f 72 20 3c  |OS_Byte009> or <|
0006ef50  56 44 55 20 32 33 2c 39  3d 3e 56 44 55 3a 32 33  |VDU 23,9=>VDU:23|
0006ef60  2c 39 3e 2e 20 54 68 69  73 20 63 61 6c 6c 20 73  |,9>. This call s|
0006ef70  68 6f 75 6c 64 20 6e 6f  74 20 62 65 20 75 73 65  |hould not be use|
0006ef80  64 20 74 6f 20 77 72 69  74 65 20 74 68 65 20 76  |d to write the v|
0006ef90  61 6c 75 65 20 2d 20 64  6f 69 6e 67 20 73 6f 20  |alue - doing so |
0006efa0  77 6f 75 6c 64 20 6f 6e  6c 79 20 63 68 61 6e 67  |would only chang|
0006efb0  65 20 74 68 65 20 76 61  6c 75 65 20 69 6e 20 6d  |e the value in m|
0006efc0  65 6d 6f 72 79 2c 20 77  69 74 68 6f 75 74 20 61  |emory, without a|
0006efd0  66 66 65 63 74 69 6e 67  20 74 68 65 20 68 61 72  |ffecting the har|
0006efe0  64 77 61 72 65 2e 0a 00  44 41 54 41 96 01 00 00  |dware...DATA....|
0006eff0  4f 53 5f 42 79 74 65 20  32 31 33 20 20 52 65 61  |OS_Byte 213  Rea|
0006f000  64 2f 57 72 69 74 65 20  62 65 6c 6c 20 66 72 65  |d/Write bell fre|
0006f010  71 75 65 6e 63 79 0a 23  50 61 72 65 6e 74 20 4f  |quency.#Parent O|
0006f020  53 5f 42 79 74 65 49 6e  64 65 78 0a 3d 3e 09 52  |S_ByteIndex.=>.R|
0006f030  30 20 3d 09 32 31 33 20  28 26 44 35 29 0a 09 52  |0 =.213 (&D5)..R|
0006f040  31 20 3d 09 45 4f 52 20  76 61 6c 75 65 0a 09 52  |1 =.EOR value..R|
0006f050  32 20 3d 09 41 4e 44 20  76 61 6c 75 65 0a 0a 3c  |2 =.AND value..<|
0006f060  3d 09 52 30 20 70 72 65  73 65 72 76 65 64 0a 09  |=.R0 preserved..|
0006f070  52 31 20 3d 09 70 72 65  76 69 6f 75 73 20 66 72  |R1 =.previous fr|
0006f080  65 71 75 65 6e 63 79 0a  09 52 32 20 3d 09 62 65  |equency..R2 =.be|
0006f090  6c 6c 20 64 75 72 61 74  69 6f 6e 20 28 73 65 65  |ll duration (see|
0006f0a0  20 3c 4f 53 5f 42 79 74  65 20 32 31 34 3d 3e 4f  | <OS_Byte 214=>O|
0006f0b0  53 5f 42 79 74 65 32 31  34 3e 29 0a 20 20 20 20  |S_Byte214>).    |
0006f0c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0006f0e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0a 54  |              .T|
0006f0f0  68 69 73 20 63 61 6c 6c  20 72 65 61 64 73 20 6f  |his call reads o|
0006f100  72 20 73 65 74 73 20 74  68 65 20 62 65 6c 6c 20  |r sets the bell |
0006f110  66 72 65 71 75 65 6e 63  79 2c 20 77 68 69 63 68  |frequency, which|
0006f120  20 69 73 20 61 6e 20 3c  42 42 43 20 73 74 79 6c  | is an <BBC styl|
0006f130  65 20 66 72 65 71 75 65  6e 63 79 3d 3e 53 6f 75  |e frequency=>Sou|
0006f140  6e 64 5f 70 69 74 63 68  65 73 3e 20 69 6e 20 74  |nd_pitches> in t|
0006f150  68 65 20 72 61 6e 67 65  20 30 2d 32 35 35 2e 20  |he range 0-255. |
0006f160  54 68 65 20 64 65 66 61  75 6c 74 20 66 72 65 71  |The default freq|
0006f170  75 65 6e 63 79 20 69 73  20 31 30 30 2e 0a 00 00  |uency is 100....|
0006f180  44 41 54 41 3b 01 00 00  4f 53 5f 42 79 74 65 20  |DATA;...OS_Byte |
0006f190  32 31 34 20 20 52 65 61  64 2f 57 72 69 74 65 20  |214  Read/Write |
0006f1a0  62 65 6c 6c 20 64 75 72  61 74 69 6f 6e 0a 23 50  |bell duration.#P|
0006f1b0  61 72 65 6e 74 20 4f 53  5f 42 79 74 65 49 6e 64  |arent OS_ByteInd|
0006f1c0  65 78 0a 3d 3e 09 52 30  20 3d 09 32 31 34 20 28  |ex.=>.R0 =.214 (|
0006f1d0  26 44 36 29 0a 09 52 31  20 3d 09 45 4f 52 20 76  |&D6)..R1 =.EOR v|
0006f1e0  61 6c 75 65 0a 09 52 32  20 3d 09 41 4e 44 20 76  |alue..R2 =.AND v|
0006f1f0  61 6c 75 65 0a 0a 3c 3d  09 52 30 20 70 72 65 73  |alue..<=.R0 pres|
0006f200  65 72 76 65 64 0a 09 52  31 20 3d 09 70 72 65 76  |erved..R1 =.prev|
0006f210  69 6f 75 73 20 64 75 72  61 74 69 6f 6e 0a 09 52  |ious duration..R|
0006f220  32 20 63 6f 72 72 75 70  74 65 64 0a 20 20 20 20  |2 corrupted.    |
0006f230  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0006f250  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0a 54  |              .T|
0006f260  68 69 73 20 63 61 6c 6c  20 72 65 61 64 73 20 6f  |his call reads o|
0006f270  72 20 73 65 74 73 20 74  68 65 20 62 65 6c 6c 20  |r sets the bell |
0006f280  64 75 72 61 74 69 6f 6e  2c 20 69 6e 20 6d 75 6c  |duration, in mul|
0006f290  74 69 70 6c 65 73 20 6f  66 20 35 20 63 73 2e 20  |tiples of 5 cs. |
0006f2a0  54 68 65 20 64 65 66 61  75 6c 74 20 64 75 72 61  |The default dura|
0006f2b0  74 69 6f 6e 20 69 73 20  36 2e 0a 00 44 41 54 41  |tion is 6...DATA|
0006f2c0  8d 02 00 00 4f 53 5f 42  79 74 65 20 32 31 36 20  |....OS_Byte 216 |
0006f2d0  20 52 65 61 64 2f 57 72  69 74 65 20 6c 65 6e 67  | Read/Write leng|
0006f2e0  74 68 20 6f 66 20 66 75  6e 63 74 69 6f 6e 20 6b  |th of function k|
0006f2f0  65 79 20 73 74 72 69 6e  67 0a 23 50 61 72 65 6e  |ey string.#Paren|
0006f300  74 20 4f 53 5f 42 79 74  65 49 6e 64 65 78 0a 3d  |t OS_ByteIndex.=|
0006f310  3e 09 52 30 20 3d 09 32  31 36 20 28 26 44 38 29  |>.R0 =.216 (&D8)|
0006f320  0a 09 52 31 20 3d 09 45  4f 52 20 76 61 6c 75 65  |..R1 =.EOR value|
0006f330  0a 09 52 32 20 3d 09 41  4e 44 20 76 61 6c 75 65  |..R2 =.AND value|
0006f340  0a 0a 3c 3d 09 52 30 20  70 72 65 73 65 72 76 65  |..<=.R0 preserve|
0006f350  64 0a 09 52 31 20 3d 09  70 72 65 76 69 6f 75 73  |d..R1 =.previous|
0006f360  20 6c 65 6e 67 74 68 0a  09 52 32 20 3d 09 70 61  | length..R2 =.pa|
0006f370  67 65 64 20 6d 6f 64 65  20 6c 69 6e 65 20 63 6f  |ged mode line co|
0006f380  75 6e 74 20 28 73 65 65  20 3c 4f 53 5f 42 79 74  |unt (see <OS_Byt|
0006f390  65 20 32 31 37 3d 3e 4f  53 5f 42 79 74 65 32 31  |e 217=>OS_Byte21|
0006f3a0  37 3e 29 0a 0a 54 68 69  73 20 63 61 6c 6c 20 72  |7>)..This call r|
0006f3b0  65 61 64 73 20 6f 72 20  73 65 74 73 20 74 68 65  |eads or sets the|
0006f3c0  20 63 6f 75 6e 74 20 6f  66 20 63 68 61 72 61 63  | count of charac|
0006f3d0  74 65 72 73 20 6c 65 66  74 20 69 6e 20 74 68 65  |ters left in the|
0006f3e0  20 63 75 72 72 65 6e 74  6c 79 20 61 63 74 69 76  | currently activ|
0006f3f0  65 20 66 75 6e 63 74 69  6f 6e 20 6b 65 79 20 64  |e function key d|
0006f400  65 66 69 6e 69 74 69 6f  6e 2e 20 49 66 20 74 68  |efinition. If th|
0006f410  69 73 20 63 6f 75 6e 74  20 69 73 20 30 2c 20 74  |is count is 0, t|
0006f420  68 65 6e 20 6e 6f 20 63  75 72 72 65 6e 74 20 66  |hen no current f|
0006f430  75 6e 63 74 69 6f 6e 20  6b 65 79 20 73 74 72 69  |unction key stri|
0006f440  6e 67 20 69 73 20 62 65  69 6e 67 20 72 65 61 64  |ng is being read|
0006f450  2e 20 49 66 20 74 68 69  73 20 63 6f 75 6e 74 20  |. If this count |
0006f460  69 73 20 6e 6f 6e 2d 7a  65 72 6f 20 74 68 65 6e  |is non-zero then|
0006f470  20 3c 4f 53 5f 52 65 61  64 43 3e 20 69 73 20 72  | <OS_ReadC> is r|
0006f480  65 61 64 69 6e 67 20 66  72 6f 6d 20 61 20 66 75  |eading from a fu|
0006f490  6e 63 74 69 6f 6e 20 6b  65 79 20 64 65 66 69 6e  |nction key defin|
0006f4a0  69 74 69 6f 6e 20 72 61  74 68 65 72 20 74 68 61  |ition rather tha|
0006f4b0  6e 20 74 68 65 20 63 75  72 72 65 6e 74 20 69 6e  |n the current in|
0006f4c0  70 75 74 20 73 74 72 65  61 6d 2e 0a 0a 57 72 69  |put stream...Wri|
0006f4d0  74 69 6e 67 20 61 20 30  20 6c 65 6e 67 74 68 20  |ting a 0 length |
0006f4e0  77 69 6c 6c 20 63 61 6e  63 65 6c 20 74 68 65 20  |will cancel the |
0006f4f0  63 75 72 72 65 6e 74 20  66 75 6e 63 74 69 6f 6e  |current function|
0006f500  20 6b 65 79 20 65 78 70  61 6e 73 69 6f 6e 20 2d  | key expansion -|
0006f510  20 74 68 65 20 65 66 66  65 63 74 20 6f 66 20 77  | the effect of w|
0006f520  72 69 74 69 6e 67 20 61  6e 79 20 6f 74 68 65 72  |riting any other|
0006f530  20 76 61 6c 75 65 20 69  73 20 69 6e 64 65 74 65  | value is indete|
0006f540  72 6d 69 6e 61 74 65 2e  0a 00 00 00 44 41 54 41  |rminate.....DATA|
0006f550  cd 01 00 00 4f 53 5f 42  79 74 65 20 32 31 37 20  |....OS_Byte 217 |
0006f560  20 52 65 61 64 2f 57 72  69 74 65 20 70 61 67 65  | Read/Write page|
0006f570  64 20 6d 6f 64 65 20 6c  69 6e 65 20 63 6f 75 6e  |d mode line coun|
0006f580  74 0a 23 50 61 72 65 6e  74 20 4f 53 5f 42 79 74  |t.#Parent OS_Byt|
0006f590  65 49 6e 64 65 78 0a 3d  3e 09 52 30 20 3d 09 32  |eIndex.=>.R0 =.2|
0006f5a0  31 37 20 28 26 44 39 29  0a 09 52 31 20 3d 09 45  |17 (&D9)..R1 =.E|
0006f5b0  4f 52 20 76 61 6c 75 65  0a 09 52 32 20 3d 09 41  |OR value..R2 =.A|
0006f5c0  4e 44 20 76 61 6c 75 65  0a 0a 3c 3d 09 52 30 20  |ND value..<=.R0 |
0006f5d0  70 72 65 73 65 72 76 65  64 0a 09 52 31 20 3d 09  |preserved..R1 =.|
0006f5e0  70 72 65 76 69 6f 75 73  20 63 6f 75 6e 74 0a 09  |previous count..|
0006f5f0  52 32 20 63 6f 72 72 75  70 74 65 64 0a 20 20 20  |R2 corrupted.   |
0006f600  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0006f620  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |               .|
0006f630  54 68 69 73 20 63 61 6c  6c 20 72 65 61 64 73 20  |This call reads |
0006f640  6f 72 20 73 65 74 73 20  74 68 65 20 63 6f 75 6e  |or sets the coun|
0006f650  74 20 6f 66 20 6c 69 6e  65 73 20 64 69 73 70 6c  |t of lines displ|
0006f660  61 79 65 64 20 73 69 6e  63 65 20 74 68 65 20 6c  |ayed since the l|
0006f670  61 73 74 20 70 61 67 65  20 68 61 6c 74 20 77 68  |ast page halt wh|
0006f680  65 6e 20 69 6e 20 3c 70  61 67 65 64 20 6d 6f 64  |en in <paged mod|
0006f690  65 3d 3e 56 44 55 3a 31  34 3e 2e 20 55 73 75 61  |e=>VDU:14>. Usua|
0006f6a0  6c 6c 79 20 74 68 69 73  20 63 61 6c 6c 20 69 73  |lly this call is|
0006f6b0  20 75 73 65 64 20 74 6f  20 73 65 74 20 74 68 65  | used to set the|
0006f6c0  20 63 6f 75 6e 74 20 74  6f 20 30 2c 20 62 65 66  | count to 0, bef|
0006f6d0  6f 72 65 20 72 65 71 75  65 73 74 69 6e 67 20 75  |ore requesting u|
0006f6e0  73 65 72 20 69 6e 70 75  74 20 2d 20 3c 4f 53 5f  |ser input - <OS_|
0006f6f0  52 65 61 64 4c 69 6e 65  3e 20 6d 61 6b 65 73 20  |ReadLine> makes |
0006f700  74 68 69 73 20 63 61 6c  6c 20 61 75 74 6f 6d 61  |this call automa|
0006f710  74 69 63 61 6c 6c 79 2e  0a 00 00 00 44 41 54 41  |tically.....DATA|
0006f720  86 02 00 00 4f 53 5f 42  79 74 65 20 32 31 38 20  |....OS_Byte 218 |
0006f730  20 52 65 61 64 2f 57 72  69 74 65 20 62 79 74 65  | Read/Write byte|
0006f740  73 20 69 6e 20 56 44 55  20 71 75 65 75 65 0a 23  |s in VDU queue.#|
0006f750  50 61 72 65 6e 74 20 4f  53 5f 42 79 74 65 49 6e  |Parent OS_ByteIn|
0006f760  64 65 78 0a 3d 3e 09 52  30 20 3d 09 32 31 38 20  |dex.=>.R0 =.218 |
0006f770  28 26 44 41 29 0a 09 52  31 20 3d 09 45 4f 52 20  |(&DA)..R1 =.EOR |
0006f780  76 61 6c 75 65 0a 09 52  32 20 3d 09 41 4e 44 20  |value..R2 =.AND |
0006f790  76 61 6c 75 65 0a 0a 3c  3d 09 52 30 20 70 72 65  |value..<=.R0 pre|
0006f7a0  73 65 72 76 65 64 0a 09  52 31 20 3d 09 70 72 65  |served..R1 =.pre|
0006f7b0  76 69 6f 75 73 20 63 6f  75 6e 74 0a 09 52 32 20  |vious count..R2 |
0006f7c0  63 6f 72 72 75 70 74 65  64 0a 20 20 20 20 20 20  |corrupted.      |
0006f7d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0006f7f0  20 20 20 20 20 20 20 20  20 20 20 20 0a 54 68 69  |            .Thi|
0006f800  73 20 63 61 6c 6c 20 72  65 61 64 73 20 6f 72 20  |s call reads or |
0006f810  73 65 74 73 20 74 68 65  20 63 6f 75 6e 74 20 6f  |sets the count o|
0006f820  66 20 62 79 74 65 73 20  69 6e 20 74 68 65 20 56  |f bytes in the V|
0006f830  44 55 20 71 75 65 75 65  2e 20 54 68 65 20 76 61  |DU queue. The va|
0006f840  6c 75 65 20 6f 66 20 74  68 65 20 63 6f 75 6e 74  |lue of the count|
0006f850  20 69 73 20 7b 66 43 6f  64 65 7d 2d 28 62 79 74  | is {fCode}-(byt|
0006f860  65 73 20 6e 65 65 64 65  64 20 74 6f 20 63 6f 6d  |es needed to com|
0006f870  70 6c 65 74 65 20 3c 56  44 55 20 73 65 71 75 65  |plete <VDU seque|
0006f880  6e 63 65 3d 3e 56 44 55  3a 21 52 6f 6f 74 3e 29  |nce=>VDU:!Root>)|
0006f890  7b 66 7d 20 68 65 6c 64  20 69 6e 20 31 20 62 79  |{f} held in 1 by|
0006f8a0  74 65 2c 20 73 6f 20 69  66 20 74 77 6f 20 62 79  |te, so if two by|
0006f8b0  74 65 73 20 61 72 65 20  6e 65 65 64 65 64 20 74  |tes are needed t|
0006f8c0  6f 20 63 6f 6d 70 6c 65  74 65 20 74 68 65 20 63  |o complete the c|
0006f8d0  75 72 72 65 6e 74 20 73  65 71 75 65 6e 63 65 20  |urrent sequence |
0006f8e0  74 68 65 6e 20 63 6f 75  6e 74 20 77 69 6c 6c 20  |then count will |
0006f8f0  62 65 20 26 46 45 2e 0a  0a 55 73 75 61 6c 6c 79  |be &FE...Usually|
0006f900  20 74 68 69 73 20 63 61  6c 6c 20 69 73 20 75 73  | this call is us|
0006f910  65 64 20 74 6f 20 73 65  74 20 74 68 65 20 63 6f  |ed to set the co|
0006f920  75 6e 74 20 74 6f 20 30  2c 20 77 68 69 63 68 20  |unt to 0, which |
0006f930  61 62 61 6e 64 6f 6e 73  20 61 6e 79 20 63 75 72  |abandons any cur|
0006f940  72 65 6e 74 20 56 44 55  20 73 65 71 75 65 6e 63  |rent VDU sequenc|
0006f950  65 2e 20 54 68 69 73 20  73 74 6f 70 73 20 65 72  |e. This stops er|
0006f960  72 6f 72 20 6d 65 73 73  61 67 65 73 20 62 65 69  |ror messages bei|
0006f970  6e 67 20 67 61 72 62 6c  65 64 20 62 79 20 61 20  |ng garbled by a |
0006f980  70 61 72 74 69 61 6c 6c  79 20 63 6f 6d 70 6c 65  |partially comple|
0006f990  74 65 64 20 56 44 55 20  73 65 71 75 65 6e 63 65  |ted VDU sequence|
0006f9a0  2e 0a 00 00 44 41 54 41  c1 01 00 00 4f 53 5f 42  |....DATA....OS_B|
0006f9b0  79 74 65 20 32 31 39 20  20 52 65 61 64 2f 57 72  |yte 219  Read/Wr|
0006f9c0  69 74 65 20 54 61 62 20  6b 65 79 20 63 6f 64 65  |ite Tab key code|
0006f9d0  0a 23 50 61 72 65 6e 74  20 4f 53 5f 42 79 74 65  |.#Parent OS_Byte|
0006f9e0  49 6e 64 65 78 0a 3d 3e  09 52 30 20 3d 09 32 31  |Index.=>.R0 =.21|
0006f9f0  39 20 28 26 44 42 29 0a  09 52 31 20 3d 09 45 4f  |9 (&DB)..R1 =.EO|
0006fa00  52 20 76 61 6c 75 65 0a  09 52 32 20 3d 09 41 4e  |R value..R2 =.AN|
0006fa10  44 20 76 61 6c 75 65 0a  0a 3c 3d 09 52 30 20 70  |D value..<=.R0 p|
0006fa20  72 65 73 65 72 76 65 64  0a 09 52 31 20 3d 09 70  |reserved..R1 =.p|
0006fa30  72 65 76 69 6f 75 73 20  76 61 6c 75 65 0a 09 52  |revious value..R|
0006fa40  32 20 63 6f 72 72 75 70  74 65 64 0a 20 20 20 20  |2 corrupted.    |
0006fa50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0006fa70  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0a 54  |              .T|
0006fa80  68 69 73 20 63 61 6c 6c  20 72 65 61 64 73 20 6f  |his call reads o|
0006fa90  72 20 73 65 74 73 20 74  68 65 20 63 68 61 72 61  |r sets the chara|
0006faa0  63 74 65 72 20 74 68 61  74 20 74 68 65 20 74 61  |cter that the ta|
0006fab0  62 20 6b 65 79 20 70 72  6f 64 75 63 65 73 2e 20  |b key produces. |
0006fac0  49 66 20 31 32 38 20 3c  3d 20 76 61 6c 75 65 20  |If 128 <= value |
0006fad0  3c 3d 20 32 35 35 20 74  68 65 6e 20 74 68 65 20  |<= 255 then the |
0006fae0  63 68 61 72 61 63 74 65  72 20 69 6e 73 65 72 74  |character insert|
0006faf0  65 64 20 69 6e 20 74 68  65 20 62 75 66 66 65 72  |ed in the buffer|
0006fb00  20 69 73 20 6d 6f 64 69  66 69 65 64 20 62 79 20  | is modified by |
0006fb10  73 68 69 66 74 20 61 6e  64 20 63 6f 6e 74 72 6f  |shift and contro|
0006fb20  6c 3a 0a 0a 4b 65 79 09  4d 6f 64 69 66 69 63 61  |l:..Key.Modifica|
0006fb30  74 69 6f 6e 0a 23 4c 69  6e 65 0a 53 68 69 66 74  |tion.#Line.Shift|
0006fb40  09 76 61 6c 75 65 20 45  4f 52 20 26 31 30 0a 43  |.value EOR &10.C|
0006fb50  6f 6e 74 72 6f 6c 09 76  61 6c 75 65 20 45 4f 52  |ontrol.value EOR|
0006fb60  20 26 32 30 0a 00 00 00  44 41 54 41 77 01 00 00  | &20....DATAw...|
0006fb70  4f 53 5f 42 79 74 65 20  32 32 30 20 20 52 65 61  |OS_Byte 220  Rea|
0006fb80  64 2f 57 72 69 74 65 20  65 73 63 61 70 65 20 63  |d/Write escape c|
0006fb90  68 61 72 61 63 74 65 72  0a 23 50 61 72 65 6e 74  |haracter.#Parent|
0006fba0  20 4f 53 5f 42 79 74 65  49 6e 64 65 78 0a 3d 3e  | OS_ByteIndex.=>|
0006fbb0  09 52 30 20 3d 09 32 32  30 20 28 26 44 43 29 0a  |.R0 =.220 (&DC).|
0006fbc0  09 52 31 20 3d 09 45 4f  52 20 76 61 6c 75 65 0a  |.R1 =.EOR value.|
0006fbd0  09 52 32 20 3d 09 41 4e  44 20 76 61 6c 75 65 0a  |.R2 =.AND value.|
0006fbe0  0a 3c 3d 09 52 30 20 70  72 65 73 65 72 76 65 64  |.<=.R0 preserved|
0006fbf0  0a 09 52 31 20 3d 09 70  72 65 76 69 6f 75 73 20  |..R1 =.previous |
0006fc00  76 61 6c 75 65 0a 09 52  32 20 63 6f 72 72 75 70  |value..R2 corrup|
0006fc10  74 65 64 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ted.            |
0006fc20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0006fc40  20 20 20 20 20 20 0a 54  68 69 73 20 63 61 6c 6c  |      .This call|
0006fc50  20 72 65 61 64 73 20 6f  72 20 73 65 74 73 20 74  | reads or sets t|
0006fc60  68 65 20 63 68 61 72 61  63 74 65 72 20 74 68 61  |he character tha|
0006fc70  74 20 63 61 75 73 65 73  20 61 6e 20 65 73 63 61  |t causes an esca|
0006fc80  70 65 20 63 6f 6e 64 69  74 69 6f 6e 20 77 68 65  |pe condition whe|
0006fc90  6e 20 72 65 61 64 20 66  72 6f 6d 20 74 68 65 20  |n read from the |
0006fca0  69 6e 70 75 74 20 73 74  72 65 61 6d 2e 20 54 68  |input stream. Th|
0006fcb0  65 20 64 65 66 61 75 6c  74 20 69 73 20 32 37 20  |e default is 27 |
0006fcc0  28 67 65 6e 65 72 61 74  65 64 20 62 79 20 74 68  |(generated by th|
0006fcd0  65 20 65 73 63 61 70 65  20 6b 65 79 29 2e 0a 00  |e escape key)...|
0006fce0  44 41 54 41 c3 09 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
0006fcf0  32 32 31 2d 32 32 38 20  20 52 65 61 64 2f 57 72  |221-228  Read/Wr|
0006fd00  69 74 65 20 69 6e 74 65  72 70 72 65 74 61 74 69  |ite interpretati|
0006fd10  6f 6e 20 6f 66 20 69 6e  70 75 74 20 76 61 6c 75  |on of input valu|
0006fd20  65 73 20 26 38 30 2d 26  46 46 0a 23 50 61 72 65  |es &80-&FF.#Pare|
0006fd30  6e 74 20 4f 53 5f 42 79  74 65 49 6e 64 65 78 0a  |nt OS_ByteIndex.|
0006fd40  3d 3e 09 52 30 20 3d 09  32 32 31 2d 32 32 38 20  |=>.R0 =.221-228 |
0006fd50  28 26 44 44 20 2d 20 26  45 35 29 09 63 6f 6e 74  |(&DD - &E5).cont|
0006fd60  72 6f 6c 73 20 3c 72 61  6e 67 65 20 6f 66 20 62  |rols <range of b|
0006fd70  75 66 66 65 72 20 63 6f  64 65 73 3d 3e 2e 72 61  |uffer codes=>.ra|
0006fd80  6e 67 65 3e 20 61 66 66  65 63 74 65 64 0a 09 52  |nge> affected..R|
0006fd90  31 20 3d 09 45 4f 52 20  76 61 6c 75 65 0a 09 52  |1 =.EOR value..R|
0006fda0  32 20 3d 09 41 4e 44 20  76 61 6c 75 65 0a 0a 3c  |2 =.AND value..<|
0006fdb0  3d 09 52 30 20 70 72 65  73 65 72 76 65 64 0a 09  |=.R0 preserved..|
0006fdc0  52 31 20 3d 09 70 72 65  76 69 6f 75 73 20 76 61  |R1 =.previous va|
0006fdd0  6c 75 65 0a 09 52 32 20  63 6f 72 72 75 70 74 65  |lue..R2 corrupte|
0006fde0  64 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |d.              |
0006fdf0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
0006fe10  20 20 20 20 0a 54 68 69  73 20 63 61 6c 6c 20 72  |    .This call r|
0006fe20  65 61 64 73 20 6f 72 20  73 65 74 73 20 74 68 65  |eads or sets the|
0006fe30  20 69 6e 74 65 72 70 72  65 74 61 74 69 6f 6e 20  | interpretation |
0006fe40  6f 66 20 69 6e 70 75 74  20 76 61 6c 75 65 73 20  |of input values |
0006fe50  26 38 30 2d 26 46 46 2c  20 77 68 69 63 68 20 69  |&80-&FF, which i|
0006fe60  6e 63 6c 75 64 65 73 20  3c 63 6f 64 65 73 20 67  |ncludes <codes g|
0006fe70  65 6e 65 72 61 74 65 64  20 62 79 20 74 68 65 20  |enerated by the |
0006fe80  66 75 6e 63 74 69 6f 6e  20 6b 65 79 73 3d 3e 2e  |function keys=>.|
0006fe90  63 6f 64 65 73 3e 2e 20  54 68 65 20 31 32 38 20  |codes>. The 128 |
0006fea0  62 75 66 66 65 72 20 63  6f 64 65 73 20 61 72 65  |buffer codes are|
0006feb0  20 64 69 76 69 64 65 64  20 69 6e 74 6f 20 38 20  | divided into 8 |
0006fec0  62 6c 6f 63 6b 73 2c 20  61 6e 64 20 74 68 65 20  |blocks, and the |
0006fed0  62 6c 6f 63 6b 20 61 66  66 65 63 74 65 64 20 69  |block affected i|
0006fee0  73 20 63 68 6f 73 65 6e  20 62 79 20 52 30 2e 20  |s chosen by R0. |
0006fef0  54 68 65 20 76 61 6c 75  65 20 67 65 6e 65 72 61  |The value genera|
0006ff00  74 65 64 20 76 69 61 20  52 31 20 61 6e 64 20 52  |ted via R1 and R|
0006ff10  32 20 64 65 74 65 72 6d  69 6e 65 73 20 74 68 65  |2 determines the|
0006ff20  20 69 6e 74 65 72 70 72  65 74 61 74 69 6f 6e 20  | interpretation |
0006ff30  6f 66 20 62 75 66 66 65  72 20 63 6f 64 65 73 3a  |of buffer codes:|
0006ff40  0a 0a 56 61 6c 75 65 09  49 6e 74 65 72 70 72 65  |..Value.Interpre|
0006ff50  74 61 74 69 6f 6e 0a 23  4c 69 6e 65 0a 30 09 64  |tation.#Line.0.d|
0006ff60  69 73 63 61 72 64 0a 31  09 65 78 70 61 6e 64 20  |iscard.1.expand |
0006ff70  66 75 6e 63 74 69 6f 6e  20 6b 65 79 20 6e 75 6d  |function key num|
0006ff80  62 65 72 20 28 63 6f 64  65 20 4d 4f 44 20 31 36  |ber (code MOD 16|
0006ff90  29 0a 32 09 69 6e 73 65  72 74 20 30 20 62 79 74  |).2.insert 0 byt|
0006ffa0  65 20 66 6f 6c 6c 6f 77  65 64 20 62 79 20 63 6f  |e followed by co|
0006ffb0  64 65 0a 33 2d 32 35 35  09 69 6e 73 65 72 74 20  |de.3-255.insert |
0006ffc0  28 63 6f 64 65 20 4d 4f  44 20 31 36 29 20 2b 20  |(code MOD 16) + |
0006ffd0  76 61 6c 75 65 0a 0a 23  53 75 62 50 61 67 65 20  |value..#SubPage |
0006ffe0  63 6f 64 65 73 0a 4f 53  5f 42 79 74 65 20 32 32  |codes.OS_Byte 22|
0006fff0  31 2d 32 32 38 20 6b 65  79 20 63 6f 64 65 73 0a  |1-228 key codes.|
00070000  46 75 6e 63 74 69 6f 6e  20 6b 65 79 73 20 67 65  |Function keys ge|
00070010  6e 65 72 61 74 65 20 74  68 65 73 65 20 63 6f 64  |nerate these cod|
00070020  65 73 20 75 6e 73 68 69  66 74 65 64 0a 0a 4b 65  |es unshifted..Ke|
00070030  79 09 09 43 6f 64 65 0a  23 4c 69 6e 65 0a 50 72  |y..Code.#Line.Pr|
00070040  69 6e 74 09 09 26 38 30  0a 46 31 2d 46 39 09 09  |int..&80.F1-F9..|
00070050  26 38 31 2d 26 38 39 0a  43 6f 70 79 09 09 26 38  |&81-&89.Copy..&8|
00070060  42 0a 4c 65 66 74 09 09  26 38 43 0a 52 69 67 68  |B.Left..&8C.Righ|
00070070  74 09 09 26 38 44 0a 44  6f 77 6e 09 09 26 38 45  |t..&8D.Down..&8E|
00070080  0a 55 70 09 09 26 38 46  0a 50 61 67 65 20 64 6f  |.Up..&8F.Page do|
00070090  77 6e 09 26 7b 2a 7d 39  7b 2a 7d 45 0a 50 61 67  |wn.&{*}9{*}E.Pag|
000700a0  65 20 75 70 09 09 26 7b  2a 7d 39 7b 2a 7d 46 0a  |e up..&{*}9{*}F.|
000700b0  46 31 30 2d 46 31 32 09  09 26 43 41 2d 26 43 43  |F10-F12..&CA-&CC|
000700c0  0a 49 6e 73 65 72 74 09  09 26 43 44 0a 23 74 61  |.Insert..&CD.#ta|
000700d0  62 0a 0a 53 68 69 66 74  20 45 4f 52 73 20 74 68  |b..Shift EORs th|
000700e0  65 20 63 6f 64 65 20 77  69 74 68 20 26 31 30 0a  |e code with &10.|
000700f0  43 6f 6e 74 72 6f 6c 20  45 4f 52 73 20 74 68 65  |Control EORs the|
00070100  20 63 6f 64 65 20 77 69  74 68 20 26 32 30 0a 0a  | code with &20..|
00070110  54 68 65 20 63 75 72 73  6f 72 20 6b 65 79 73 20  |The cursor keys |
00070120  61 6e 64 20 63 6f 70 79  20 6f 6e 6c 79 20 67 65  |and copy only ge|
00070130  6e 65 72 61 74 65 20 74  68 65 73 65 20 63 6f 64  |nerate these cod|
00070140  65 73 20 69 66 20 73 65  74 20 75 70 20 74 6f 20  |es if set up to |
00070150  61 63 74 20 61 73 20 66  75 6e 63 74 69 6f 6e 20  |act as function |
00070160  6b 65 79 73 20 62 79 20  63 61 6c 6c 69 6e 67 20  |keys by calling |
00070170  3c 4f 53 5f 42 79 74 65  20 34 3d 3e 4f 53 5f 42  |<OS_Byte 4=>OS_B|
00070180  79 74 65 30 30 34 3e 20  77 69 74 68 20 52 31 3d  |yte004> with R1=|
00070190  32 2e 0a 0a 26 38 30 20  2b 20 42 75 66 66 65 72  |2...&80 + Buffer|
000701a0  20 76 61 6c 75 65 20 67  69 76 65 73 20 74 68 65  | value gives the|
000701b0  20 63 68 61 72 61 63 74  65 72 20 63 6f 64 65 73  | character codes|
000701c0  20 75 73 65 64 20 62 79  20 74 68 65 20 3c 57 69  | used by the <Wi|
000701d0  6d 70 3d 3e 57 69 6d 70  3a 57 69 6d 70 5f 50 6f  |mp=>Wimp:Wimp_Po|
000701e0  6c 6c 38 61 3e 2e 20 57  68 65 6e 20 72 65 73 65  |ll8a>. When rese|
000701f0  74 20 6f 63 63 75 72 73  20 26 43 41 20 28 7b 2f  |t occurs &CA ({/|
00070200  7d 69 2e 65 2e 7b 2f 7d  20 46 31 30 29 20 69 73  |}i.e.{/} F10) is|
00070210  20 69 6e 73 65 72 74 65  64 20 69 6e 74 6f 20 74  | inserted into t|
00070220  68 65 20 69 6e 70 75 74  20 62 75 66 66 65 72 2e  |he input buffer.|
00070230  0a 0a 55 6e 6c 69 73 74  65 64 20 63 6f 64 65 73  |..Unlisted codes|
00070240  20 63 61 6e 6e 6f 74 20  62 65 20 67 65 6e 65 72  | cannot be gener|
00070250  61 74 65 64 20 62 79 20  74 68 65 20 6d 61 69 6e  |ated by the main|
00070260  20 6b 65 79 62 6f 61 72  64 2c 20 62 75 74 20 63  | keyboard, but c|
00070270  61 6e 20 6f 63 63 75 72  20 62 79 0a 8f 09 55 73  |an occur by...Us|
00070280  69 6e 67 20 74 68 65 73  65 20 4f 53 5f 42 79 74  |ing these OS_Byt|
00070290  65 20 63 61 6c 6c 73 20  74 6f 20 73 65 74 20 6b  |e calls to set k|
000702a0  65 79 73 20 74 6f 20 67  65 6e 65 72 61 74 65 20  |eys to generate |
000702b0  74 68 65 6d 0a 8f 09 43  68 61 6e 67 69 6e 67 20  |them...Changing |
000702c0  74 68 65 20 6e 75 6d 65  72 69 63 20 6b 65 79 70  |the numeric keyp|
000702d0  61 64 20 62 61 73 65 20  77 69 74 68 20 3c 4f 53  |ad base with <OS|
000702e0  5f 42 79 74 65 20 32 33  38 3d 3e 4f 53 5f 42 79  |_Byte 238=>OS_By|
000702f0  74 65 32 33 38 3e 0a 8f  09 49 6e 73 65 72 74 69  |te238>...Inserti|
00070300  6e 67 20 62 79 74 65 73  20 69 6e 74 6f 20 74 68  |ng bytes into th|
00070310  65 20 6b 65 79 62 6f 61  72 64 20 62 75 66 66 65  |e keyboard buffe|
00070320  72 20 77 69 74 68 20 3c  4f 53 5f 42 79 74 65 20  |r with <OS_Byte |
00070330  31 33 38 3d 3e 4f 53 5f  42 79 74 65 31 33 38 3e  |138=>OS_Byte138>|
00070340  20 61 6e 64 20 3c 31 35  33 3d 3e 4f 53 5f 42 79  | and <153=>OS_By|
00070350  74 65 31 35 33 3e 2e 0a  8f 09 52 65 63 69 65 76  |te153>....Reciev|
00070360  69 6e 67 20 62 79 74 65  73 20 66 72 6f 6d 20 74  |ing bytes from t|
00070370  68 65 20 73 65 72 69 61  6c 20 70 6f 72 74 20 28  |he serial port (|
00070380  73 65 65 20 61 6c 73 6f  20 3c 4f 53 5f 42 79 74  |see also <OS_Byt|
00070390  65 20 31 38 31 3d 3e 4f  53 5f 42 79 74 65 31 38  |e 181=>OS_Byte18|
000703a0  31 3e 20 74 6f 20 63 6f  6e 74 72 6f 6c 20 73 65  |1> to control se|
000703b0  72 69 61 6c 20 69 6e 70  75 74 20 69 6e 74 65 72  |rial input inter|
000703c0  70 72 65 74 61 74 69 6f  6e 29 0a 0a 4e 6f 74 65  |pretation)..Note|
000703d0  20 74 68 61 74 20 70 61  67 65 20 75 70 20 61 6e  | that page up an|
000703e0  64 20 64 6f 77 6e 20 65  66 66 65 63 74 69 76 65  |d down effective|
000703f0  6c 79 20 62 65 68 61 76  65 20 61 73 20 55 70 20  |ly behave as Up |
00070400  61 6e 64 20 44 6f 77 6e  20 77 69 74 68 20 73 68  |and Down with sh|
00070410  69 66 74 20 74 6f 67 67  6c 65 64 2e 20 49 6e 20  |ift toggled. In |
00070420  66 61 63 74 2c 20 69 74  20 69 73 20 69 6d 70 6f  |fact, it is impo|
00070430  73 73 69 62 6c 65 20 74  6f 20 64 69 73 74 69 6e  |ssible to distin|
00070440  67 75 69 73 68 20 73 68  69 66 74 2f 63 6f 6e 74  |guish shift/cont|
00070450  72 6f 6c 20 63 6f 6d 62  69 6e 61 74 69 6f 6e 73  |rol combinations|
00070460  20 6f 66 20 70 61 67 65  20 75 70 20 61 6e 64 20  | of page up and |
00070470  64 6f 77 6e 20 77 69 74  68 20 73 68 69 66 74 2f  |down with shift/|
00070480  63 6f 6e 74 72 6f 6c 20  63 6f 6d 62 69 6e 61 74  |control combinat|
00070490  69 6f 6e 73 20 6f 66 20  63 75 72 73 6f 72 20 75  |ions of cursor u|
000704a0  70 20 61 6e 64 20 64 6f  77 6e 2c 20 77 68 69 63  |p and down, whic|
000704b0  68 20 63 61 6e 20 70 72  6f 76 65 20 66 72 75 73  |h can prove frus|
000704c0  74 72 61 74 69 6e 67 2e  0a 23 53 75 62 50 61 67  |trating..#SubPag|
000704d0  65 20 72 61 6e 67 65 0a  4f 53 5f 42 79 74 65 20  |e range.OS_Byte |
000704e0  32 32 31 2d 32 32 38 20  72 61 6e 67 65 73 0a 52  |221-228 ranges.R|
000704f0  30 09 52 61 6e 67 65 20  61 66 66 65 63 74 65 64  |0.Range affected|
00070500  09 44 65 66 61 75 6c 74  20 76 61 6c 75 65 09 45  |.Default value.E|
00070510  66 66 65 63 74 0a 23 4c  69 6e 65 0a 32 32 31 09  |ffect.#Line.221.|
00070520  26 43 30 2d 26 43 46 09  09 31 09 09 66 75 6e 63  |&C0-&CF..1..func|
00070530  74 69 6f 6e 20 6b 65 79  73 20 28 50 72 69 6e 74  |tion keys (Print|
00070540  2c 20 46 31 2d 46 39 2c  20 63 75 72 73 6f 72 20  |, F1-F9, cursor |
00070550  6b 65 79 73 20 61 6e 64  20 63 6f 70 79 20 3c 69  |keys and copy <i|
00070560  66 20 61 63 74 69 6e 67  20 61 73 20 66 75 6e 63  |f acting as func|
00070570  74 69 6f 6e 20 6b 65 79  73 3d 3e 4f 53 5f 42 79  |tion keys=>OS_By|
00070580  74 65 30 30 34 3e 29 0a  32 32 32 09 26 44 30 2d  |te004>).222.&D0-|
00070590  26 46 46 09 09 26 38 30  09 09 72 65 74 75 72 6e  |&FF..&80..return|
000705a0  20 62 75 66 66 65 72 20  63 6f 64 65 20 2d 20 31  | buffer code - 1|
000705b0  36 0a 32 32 33 09 26 45  30 2d 26 46 46 09 09 26  |6.223.&E0-&FF..&|
000705c0  39 30 09 09 72 65 74 75  72 6e 20 62 75 66 66 65  |90..return buffe|
000705d0  72 20 63 6f 64 65 20 2d  20 31 36 0a 32 32 34 09  |r code - 16.224.|
000705e0  26 46 30 2d 26 46 46 09  09 30 09 09 64 69 73 63  |&F0-&FF..0..disc|
000705f0  61 72 64 0a 23 57 72 61  70 20 6f 66 66 0a 32 32  |ard.#Wrap off.22|
00070600  35 09 26 38 30 2d 26 38  46 09 09 31 09 09 66 75  |5.&80-&8F..1..fu|
00070610  6e 63 74 69 6f 6e 20 6b  65 79 73 20 28 46 31 30  |nction keys (F10|
00070620  2d 46 31 32 2c 20 49 6e  73 65 72 74 29 0a 32 32  |-F12, Insert).22|
00070630  36 09 26 39 30 2d 26 39  46 09 09 26 44 30 09 09  |6.&90-&9F..&D0..|
00070640  72 65 74 75 72 6e 20 62  75 66 66 65 72 20 63 6f  |return buffer co|
00070650  64 65 0a 32 32 37 09 26  41 30 2d 26 41 46 09 09  |de.227.&A0-&AF..|
00070660  26 45 30 09 09 72 65 74  75 72 6e 20 62 75 66 66  |&E0..return buff|
00070670  65 72 20 63 6f 64 65 0a  32 32 38 09 26 42 30 2d  |er code.228.&B0-|
00070680  26 42 46 09 09 26 46 30  09 09 72 65 74 75 72 6e  |&BF..&F0..return|
00070690  20 62 75 66 66 65 72 20  63 6f 64 65 0a 23 57 72  | buffer code.#Wr|
000706a0  61 70 0a 00 44 41 54 41  9a 02 00 00 4f 53 5f 42  |ap..DATA....OS_B|
000706b0  79 74 65 20 32 33 30 20  20 52 65 61 64 2f 57 72  |yte 230  Read/Wr|
000706c0  69 74 65 20 65 73 63 61  70 65 20 65 66 66 65 63  |ite escape effec|
000706d0  74 73 0a 23 50 61 72 65  6e 74 20 4f 53 5f 42 79  |ts.#Parent OS_By|
000706e0  74 65 49 6e 64 65 78 0a  3d 3e 09 52 30 20 3d 09  |teIndex.=>.R0 =.|
000706f0  32 33 30 20 28 26 45 36  29 0a 09 52 31 20 3d 09  |230 (&E6)..R1 =.|
00070700  45 4f 52 20 76 61 6c 75  65 0a 09 52 32 20 3d 09  |EOR value..R2 =.|
00070710  41 4e 44 20 76 61 6c 75  65 0a 0a 3c 3d 09 52 30  |AND value..<=.R0|
00070720  20 70 72 65 73 65 72 76  65 64 0a 09 52 31 20 3d  | preserved..R1 =|
00070730  09 73 74 61 74 65 20 62  65 66 6f 72 65 20 62 65  |.state before be|
00070740  69 6e 67 20 6f 76 65 72  77 72 69 74 74 65 6e 0a  |ing overwritten.|
00070750  09 52 32 20 63 6f 72 72  75 70 74 65 64 0a 20 20  |.R2 corrupted.  |
00070760  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00070790  0a 54 68 69 73 20 63 61  6c 6c 20 72 65 61 64 73  |.This call reads|
000707a0  20 6f 72 20 73 65 74 73  20 74 68 65 20 65 73 63  | or sets the esc|
000707b0  61 70 65 20 65 66 66 65  63 74 73 2e 20 41 20 6e  |ape effects. A n|
000707c0  6f 6e 2d 7a 65 72 6f 20  73 74 61 74 65 20 64 69  |on-zero state di|
000707d0  73 61 62 6c 65 73 20 65  73 63 61 70 65 20 65 66  |sables escape ef|
000707e0  66 65 63 74 73 2e 20 41  20 73 74 61 74 65 20 6f  |fects. A state o|
000707f0  66 20 30 20 28 74 68 65  20 64 65 66 61 75 6c 74  |f 0 (the default|
00070800  29 20 65 6e 61 62 6c 65  73 20 65 73 63 61 70 65  |) enables escape|
00070810  20 65 66 66 65 63 74 73  20 2d 20 77 68 65 6e 20  | effects - when |
00070820  3c 65 73 63 61 70 65 20  69 73 20 61 63 6b 6e 6f  |<escape is ackno|
00070830  77 6c 65 64 67 65 64 3d  3e 4f 53 5f 42 79 74 65  |wledged=>OS_Byte|
00070840  31 32 36 3e 3a 0a 0a 8f  09 3c 61 63 74 69 76 65  |126>:....<active|
00070850  20 6f 75 74 70 75 74 20  62 75 66 66 65 72 73 20  | output buffers |
00070860  61 72 65 20 66 6c 75 73  68 65 64 3d 3e 4f 53 5f  |are flushed=>OS_|
00070870  42 79 74 65 30 32 31 3e  0a 8f 09 3c 63 75 72 72  |Byte021>...<curr|
00070880  65 6e 74 20 2a 45 78 65  63 20 66 69 6c 65 20 63  |ent *Exec file c|
00070890  6c 6f 73 65 64 3d 3e 4f  53 5f 42 79 74 65 31 39  |losed=>OS_Byte19|
000708a0  38 3e 0a 8f 09 3c 56 44  55 20 71 75 65 75 65 20  |8>...<VDU queue |
000708b0  63 6c 65 61 72 65 64 3d  3e 4f 53 5f 42 79 74 65  |cleared=>OS_Byte|
000708c0  32 31 38 3e 0a 8f 09 3c  56 44 55 20 70 61 67 65  |218>...<VDU page|
000708d0  64 20 6c 69 6e 65 20 63  6f 75 6e 74 20 63 6c 65  |d line count cle|
000708e0  61 72 65 64 3d 3e 4f 53  5f 42 79 74 65 32 31 37  |ared=>OS_Byte217|
000708f0  3e 0a 8f 09 54 65 72 6d  69 6e 61 74 65 73 20 61  |>...Terminates a|
00070900  6e 79 20 73 6f 75 6e 64  20 62 65 69 6e 67 20 70  |ny sound being p|
00070910  72 6f 64 75 63 65 64 0a  23 20 48 6d 6d 2e 20 44  |roduced.# Hmm. D|
00070920  6f 6e 27 74 20 6b 6e 6f  77 20 77 68 69 63 68 20  |on't know which |
00070930  53 57 49 20 64 6f 65 73  20 74 68 61 74 0a 00 00  |SWI does that...|
00070940  44 41 54 41 66 01 00 00  4f 53 5f 42 79 74 65 20  |DATAf...OS_Byte |
00070950  32 33 36 20 20 52 65 61  64 2f 57 72 69 74 65 20  |236  Read/Write |
00070960  63 68 61 72 61 63 74 65  72 20 64 65 73 74 69 6e  |character destin|
00070970  61 74 69 6f 6e 20 73 74  61 74 75 73 0a 23 50 61  |ation status.#Pa|
00070980  72 65 6e 74 20 4f 53 5f  42 79 74 65 49 6e 64 65  |rent OS_ByteInde|
00070990  78 0a 3d 3e 09 52 30 20  3d 09 32 33 36 0a 09 52  |x.=>.R0 =.236..R|
000709a0  31 20 3d 09 45 4f 52 20  76 61 6c 75 65 0a 09 52  |1 =.EOR value..R|
000709b0  32 20 3d 09 41 4e 44 20  76 61 6c 75 65 0a 0a 3c  |2 =.AND value..<|
000709c0  3d 09 52 30 20 70 72 65  73 65 72 76 65 64 0a 09  |=.R0 preserved..|
000709d0  52 31 20 3d 09 70 72 65  76 69 6f 75 73 20 73 74  |R1 =.previous st|
000709e0  61 74 65 0a 09 52 32 20  3d 09 63 75 72 73 6f 72  |ate..R2 =.cursor|
000709f0  20 6b 65 79 20 73 74 61  74 75 73 20 28 73 65 65  | key status (see|
00070a00  20 3c 4f 53 5f 42 79 74  65 20 32 33 37 3d 3e 4f  | <OS_Byte 237=>O|
00070a10  53 5f 42 79 74 65 32 33  37 3e 29 0a 0a 54 68 69  |S_Byte237>)..Thi|
00070a20  73 20 63 61 6c 6c 20 72  65 61 64 73 20 6f 72 20  |s call reads or |
00070a30  73 65 74 73 20 74 68 65  20 3c 63 68 61 72 61 63  |sets the <charac|
00070a40  74 65 72 20 64 65 73 74  69 6e 61 74 69 6f 6e 20  |ter destination |
00070a50  73 74 61 74 75 73 3d 3e  4f 53 5f 42 79 74 65 30  |status=>OS_Byte0|
00070a60  30 33 73 74 61 74 65 3e  2e 20 54 68 65 20 73 74  |03state>. The st|
00070a70  61 74 65 20 6d 61 79 20  61 6c 73 6f 20 62 65 20  |ate may also be |
00070a80  77 72 69 74 74 65 6e 20  77 69 74 68 20 3c 4f 53  |written with <OS|
00070a90  5f 42 79 74 65 20 33 3d  3e 4f 53 5f 42 79 74 65  |_Byte 3=>OS_Byte|
00070aa0  30 30 33 3e 2e 0a 00 00  44 41 54 41 5c 01 00 00  |003>....DATA\...|
00070ab0  4f 53 5f 42 79 74 65 20  32 33 37 20 20 52 65 61  |OS_Byte 237  Rea|
00070ac0  64 2f 57 72 69 74 65 20  63 75 72 73 6f 72 20 6b  |d/Write cursor k|
00070ad0  65 79 20 73 74 61 74 75  73 0a 23 50 61 72 65 6e  |ey status.#Paren|
00070ae0  74 20 4f 53 5f 42 79 74  65 49 6e 64 65 78 0a 3d  |t OS_ByteIndex.=|
00070af0  3e 09 52 30 20 3d 09 32  33 37 0a 09 52 31 20 3d  |>.R0 =.237..R1 =|
00070b00  09 45 4f 52 20 76 61 6c  75 65 0a 09 52 32 20 3d  |.EOR value..R2 =|
00070b10  09 41 4e 44 20 76 61 6c  75 65 0a 0a 3c 3d 09 52  |.AND value..<=.R|
00070b20  30 20 70 72 65 73 65 72  76 65 64 0a 09 52 31 20  |0 preserved..R1 |
00070b30  3d 09 70 72 65 76 69 6f  75 73 20 73 74 61 74 65  |=.previous state|
00070b40  0a 09 52 32 20 3d 09 6e  75 6d 65 72 69 63 20 6b  |..R2 =.numeric k|
00070b50  65 79 70 61 64 20 69 6e  74 65 72 70 72 65 74 61  |eypad interpreta|
00070b60  74 69 6f 6e 20 28 73 65  65 20 3c 4f 53 5f 42 79  |tion (see <OS_By|
00070b70  74 65 20 32 33 38 3d 3e  4f 53 5f 42 79 74 65 32  |te 238=>OS_Byte2|
00070b80  33 38 3e 29 0a 0a 54 68  69 73 20 63 61 6c 6c 20  |38>)..This call |
00070b90  72 65 61 64 73 20 6f 72  20 73 65 74 73 20 74 68  |reads or sets th|
00070ba0  65 20 3c 63 75 72 73 6f  72 20 6b 65 79 20 73 74  |e <cursor key st|
00070bb0  61 74 75 73 3d 3e 4f 53  5f 42 79 74 65 30 30 34  |atus=>OS_Byte004|
00070bc0  73 74 61 74 65 3e 2e 20  54 68 65 20 73 74 61 74  |state>. The stat|
00070bd0  65 20 6d 61 79 20 61 6c  73 6f 20 62 65 20 77 72  |e may also be wr|
00070be0  69 74 74 65 6e 20 77 69  74 68 20 3c 4f 53 5f 42  |itten with <OS_B|
00070bf0  79 74 65 20 34 3d 3e 4f  53 5f 42 79 74 65 30 30  |yte 4=>OS_Byte00|
00070c00  34 3e 2e 0a 44 41 54 41  96 03 00 00 4f 53 5f 42  |4>..DATA....OS_B|
00070c10  79 74 65 20 32 33 38 20  20 52 65 61 64 2f 57 72  |yte 238  Read/Wr|
00070c20  69 74 65 20 6e 75 6d 65  72 69 63 20 6b 65 79 70  |ite numeric keyp|
00070c30  61 64 20 69 6e 74 65 72  70 72 65 74 61 74 69 6f  |ad interpretatio|
00070c40  6e 0a 23 50 61 72 65 6e  74 20 4f 53 5f 42 79 74  |n.#Parent OS_Byt|
00070c50  65 49 6e 64 65 78 0a 3d  3e 09 52 30 20 3d 09 32  |eIndex.=>.R0 =.2|
00070c60  33 38 0a 09 52 31 20 3d  09 45 4f 52 20 76 61 6c  |38..R1 =.EOR val|
00070c70  75 65 0a 09 52 32 20 3d  09 41 4e 44 20 76 61 6c  |ue..R2 =.AND val|
00070c80  75 65 0a 0a 3c 3d 09 52  30 20 70 72 65 73 65 72  |ue..<=.R0 preser|
00070c90  76 65 64 0a 09 52 31 20  3d 09 70 72 65 76 69 6f  |ved..R1 =.previo|
00070ca0  75 73 20 62 61 73 65 20  6e 75 6d 62 65 72 0a 09  |us base number..|
00070cb0  52 32 20 63 6f 72 72 75  70 74 65 64 0a 0a 54 68  |R2 corrupted..Th|
00070cc0  69 73 20 63 61 6c 6c 20  72 65 61 64 73 20 6f 72  |is call reads or|
00070cd0  20 73 65 74 73 20 74 68  65 20 6e 75 6d 65 72 69  | sets the numeri|
00070ce0  63 20 6b 65 79 70 61 64  20 69 6e 74 65 72 70 72  |c keypad interpr|
00070cf0  65 74 61 74 69 6f 6e 2e  20 4b 65 79 70 61 64 20  |etation. Keypad |
00070d00  6b 65 79 73 20 67 65 6e  65 72 61 74 65 20 6f 66  |keys generate of|
00070d10  66 73 65 74 73 20 66 72  6f 6d 20 74 68 69 73 20  |fsets from this |
00070d20  62 61 73 65 20 76 61 6c  75 65 2c 20 77 68 69 63  |base value, whic|
00070d30  68 20 77 69 74 68 20 74  68 65 20 64 65 66 61 75  |h with the defau|
00070d40  6c 74 20 62 61 73 65 20  6e 75 6d 62 65 72 20 6f  |lt base number o|
00070d50  66 20 34 38 20 67 69 76  65 20 74 68 65 20 6b 65  |f 48 give the ke|
00070d60  79 20 70 72 65 73 73 65  73 20 73 68 6f 77 6e 3a  |y presses shown:|
00070d70  0a 0a 4b 65 79 09 4f 66  66 73 65 74 09 09 4b 65  |..Key.Offset..Ke|
00070d80  79 20 63 6f 64 65 09 4f  66 66 73 65 74 20 77 69  |y code.Offset wi|
00070d90  74 68 09 4b 65 79 20 43  6f 64 65 0a 50 72 65 73  |th.Key Code.Pres|
00070da0  73 65 64 09 66 72 6f 6d  20 62 61 73 65 09 47 65  |sed.from base.Ge|
00070db0  6e 65 72 61 74 65 64 20  09 4e 75 6d 4c 6f 63 6b  |nerated .NumLock|
00070dc0  09 09 67 65 6e 65 72 61  74 65 64 0a 23 4c 69 6e  |..generated.#Lin|
00070dd0  65 0a 30 09 b1 30 09 09  22 30 22 09 09 2b 31 35  |e.0..0.."0"..+15|
00070de0  37 09 09 49 6e 73 65 72  74 0a 31 09 2b 31 09 09  |7..Insert.1.+1..|
00070df0  22 31 22 09 09 2b 39 31  09 09 43 6f 70 79 0a 32  |"1"..+91..Copy.2|
00070e00  09 2b 32 09 09 22 32 22  09 09 2b 39 34 09 09 44  |.+2.."2"..+94..D|
00070e10  6f 77 6e 0a 33 09 2b 33  09 09 22 33 22 09 09 2b  |own.3.+3.."3"..+|
00070e20  31 31 30 09 09 50 61 67  65 20 44 6f 77 6e 0a 34  |110..Page Down.4|
00070e30  09 2b 34 09 09 22 34 22  09 09 2b 39 32 09 09 4c  |.+4.."4"..+92..L|
00070e40  65 66 74 0a 35 09 2b 35  09 09 22 35 22 09 09 28  |eft.5.+5.."5"..(|
00070e50  69 67 6e 6f 72 65 64 29  0a 36 09 2b 36 09 09 22  |ignored).6.+6.."|
00070e60  36 22 09 09 2b 39 33 09  09 52 69 67 68 74 0a 37  |6"..+93..Right.7|
00070e70  09 2b 37 09 09 22 37 22  09 09 2d 31 38 09 09 48  |.+7.."7"..-18..H|
00070e80  6f 6d 65 0a 38 09 2b 38  09 09 22 38 22 09 09 2b  |ome.8.+8.."8"..+|
00070e90  39 35 09 09 55 70 0a 39  09 2b 39 09 09 22 39 22  |95..Up.9.+9.."9"|
00070ea0  09 09 2b 31 31 31 09 09  50 61 67 65 20 55 70 0a  |..+111..Page Up.|
00070eb0  2e 09 2d 32 09 09 22 2e  22 09 09 2b 37 39 09 09  |..-2.."."..+79..|
00070ec0  44 65 6c 65 74 65 0a 2f  09 2d 31 09 09 22 2f 22  |Delete./.-1.."/"|
00070ed0  09 09 75 6e 63 68 61 6e  67 65 64 0a 2a 09 2d 36  |..unchanged.*.-6|
00070ee0  09 09 22 2a 22 09 09 75  6e 63 68 61 6e 67 65 64  |.."*"..unchanged|
00070ef0  0a 5c 23 09 2d 31 33 09  09 22 5c 22 09 09 75 6e  |.\#.-13.."\"..un|
00070f00  63 68 61 6e 67 65 64 0a  2d 09 2d 33 09 09 22 2d  |changed.-.-3.."-|
00070f10  22 09 09 75 6e 63 68 61  6e 67 65 64 0a 2b 09 2d  |"..unchanged.+.-|
00070f20  35 09 09 22 2b 22 09 09  75 6e 63 68 61 6e 67 65  |5.."+"..unchange|
00070f30  64 0a 45 6e 74 65 72 09  2d 33 35 09 09 52 65 74  |d.Enter.-35..Ret|
00070f40  75 72 6e 09 09 75 6e 63  68 61 6e 67 65 64 0a 0a  |urn..unchanged..|
00070f50  0a 54 68 65 20 65 66 66  65 63 74 73 20 6f 66 20  |.The effects of |
00070f60  73 68 69 66 74 20 61 6e  64 20 63 6f 6e 74 72 6f  |shift and contro|
00070f70  6c 20 61 72 65 20 73 65  74 20 77 69 74 68 20 3c  |l are set with <|
00070f80  4f 53 5f 42 79 74 65 20  32 35 34 3d 3e 4f 53 5f  |OS_Byte 254=>OS_|
00070f90  42 79 74 65 32 35 34 3e  2e 0a 00 00 44 41 54 41  |Byte254>....DATA|
00070fa0  e4 01 00 00 4f 53 5f 42  79 74 65 20 32 34 30 20  |....OS_Byte 240 |
00070fb0  20 52 65 61 64 20 63 6f  75 6e 74 72 79 20 6e 75  | Read country nu|
00070fc0  6d 62 65 72 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |mber.#Parent OS_|
00070fd0  42 79 74 65 49 6e 64 65  78 0a 3d 3e 09 52 30 20  |ByteIndex.=>.R0 |
00070fe0  3d 09 32 34 30 20 28 26  46 30 29 0a 09 52 31 20  |=.240 (&F0)..R1 |
00070ff0  3d 09 30 0a 09 52 32 20  3d 09 32 35 35 0a 0a 3c  |=.0..R2 =.255..<|
00071000  3d 09 52 30 20 70 72 65  73 65 72 76 65 64 0a 09  |=.R0 preserved..|
00071010  52 31 20 3d 09 3c 63 6f  75 6e 74 72 79 20 6e 75  |R1 =.<country nu|
00071020  6d 62 65 72 3d 3e 54 65  72 72 69 74 6f 72 79 5f  |mber=>Territory_|
00071030  6e 75 6d 62 65 72 73 3e  0a 09 52 32 20 3d 09 75  |numbers>..R2 =.u|
00071040  73 65 72 20 66 6c 61 67  20 28 73 65 65 20 3c 4f  |ser flag (see <O|
00071050  53 5f 42 79 74 65 20 32  34 31 3d 3e 4f 53 5f 42  |S_Byte 241=>OS_B|
00071060  79 74 65 32 34 31 3e 29  0a 23 20 48 6d 6d 2e 20  |yte241>).# Hmm. |
00071070  54 65 6b 6b 69 65 20 64  69 73 6b 20 6d 61 6b 65  |Tekkie disk make|
00071080  73 20 74 68 69 73 20 63  72 6f 73 73 20 72 65 66  |s this cross ref|
00071090  65 72 65 6e 63 65 20 74  6f 20 32 34 31 2c 20 65  |erence to 241, e|
000710a0  76 65 6e 20 74 68 6f 75  67 68 20 69 74 20 64 6f  |ven though it do|
000710b0  65 73 6e 27 74 20 64 6f  63 75 6d 65 6e 74 20 32  |esn't document 2|
000710c0  34 31 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |41.             |
000710d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000710f0  20 20 20 20 20 0a 54 68  69 73 20 63 61 6c 6c 20  |     .This call |
00071100  77 72 69 74 65 73 20 74  68 65 20 63 6f 75 6e 74  |writes the count|
00071110  72 79 20 6e 75 6d 62 65  72 20 75 73 65 64 20 62  |ry number used b|
00071120  79 20 74 68 65 20 69 6e  74 65 72 6e 61 74 69 6f  |y the internatio|
00071130  6e 61 6c 20 6d 6f 64 75  6c 65 2e 20 54 68 69 73  |nal module. This|
00071140  20 76 61 6c 75 65 20 63  61 6e 20 62 65 20 77 72  | value can be wr|
00071150  69 74 74 65 6e 20 28 61  6e 64 20 72 65 61 64 29  |itten (and read)|
00071160  20 77 69 74 68 20 3c 4f  53 5f 42 79 74 65 20 37  | with <OS_Byte 7|
00071170  30 3d 3e 4f 53 5f 42 79  74 65 30 37 30 3e 2e 0a  |0=>OS_Byte070>..|
00071180  44 41 54 41 fd 02 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00071190  32 34 32 20 20 52 65 61  64 20 73 65 72 69 61 6c  |242  Read serial|
000711a0  20 62 61 75 64 20 72 61  74 65 73 0a 23 50 61 72  | baud rates.#Par|
000711b0  65 6e 74 20 4f 53 5f 42  79 74 65 49 6e 64 65 78  |ent OS_ByteIndex|
000711c0  0a 3d 3e 09 52 30 20 3d  09 32 34 32 20 28 26 46  |.=>.R0 =.242 (&F|
000711d0  42 29 0a 09 52 31 20 3d  09 30 0a 09 52 32 20 3d  |B)..R1 =.0..R2 =|
000711e0  09 32 35 35 0a 0a 3c 3d  09 52 30 20 70 72 65 73  |.255..<=.R0 pres|
000711f0  65 72 76 65 64 0a 09 52  31 20 3d 09 3c 62 61 75  |erved..R1 =.<bau|
00071200  64 20 72 61 74 65 73 3d  3e 2e 62 61 75 64 3e 0a  |d rates=>.baud>.|
00071210  09 52 32 20 3d 09 74 69  6d 65 72 20 73 77 69 74  |.R2 =.timer swit|
00071220  63 68 20 73 74 61 74 65  20 28 73 65 65 20 3c 4f  |ch state (see <O|
00071230  53 5f 42 79 74 65 20 32  34 33 3d 3e 4f 53 5f 42  |S_Byte 243=>OS_B|
00071240  79 74 65 32 34 33 3e 29  0a 0a 54 68 69 73 20 63  |yte243>)..This c|
00071250  61 6c 6c 20 72 65 61 64  73 20 74 68 65 20 73 65  |all reads the se|
00071260  72 69 61 6c 20 72 61 74  65 73 20 69 6e 20 61 20  |rial rates in a |
00071270  62 61 63 6b 77 61 72 64  73 20 63 6f 6d 70 61 74  |backwards compat|
00071280  69 62 6c 65 20 66 6f 72  6d 61 74 2e 20 59 6f 75  |ible format. You|
00071290  20 73 68 6f 75 6c 64 20  75 73 65 20 3c 4f 53 5f  | should use <OS_|
000712a0  53 65 72 69 61 6c 4f 70  20 35 3d 3e 4f 53 5f 53  |SerialOp 5=>OS_S|
000712b0  65 72 69 61 6c 4f 70 35  3e 20 61 6e 64 20 3c 36  |erialOp5> and <6|
000712c0  3d 3e 4f 53 5f 53 65 72  69 61 6c 4f 70 35 3e 20  |=>OS_SerialOp5> |
000712d0  69 6e 20 70 72 65 66 65  72 65 6e 63 65 0a 23 53  |in preference.#S|
000712e0  75 62 70 61 67 65 20 62  61 75 64 0a 4f 53 5f 42  |ubpage baud.OS_B|
000712f0  79 74 65 20 32 34 32 20  62 61 75 64 20 72 61 74  |yte 242 baud rat|
00071300  65 20 62 6c 6f 63 6b 0a  54 68 65 20 62 69 74 73  |e block.The bits|
00071310  20 69 6e 20 74 68 69 73  20 62 6c 6f 63 6b 20 61  | in this block a|
00071320  72 65 20 61 72 72 61 6e  67 65 64 20 74 6f 20 65  |re arranged to e|
00071330  78 74 65 6e 64 20 74 68  65 20 62 6c 6f 63 6b 20  |xtend the block |
00071340  75 73 65 64 20 62 79 20  74 68 65 20 6f 72 69 67  |used by the orig|
00071350  69 6e 61 6c 20 68 61 72  64 77 61 72 65 0a 0a 42  |inal hardware..B|
00071360  69 74 09 4d 65 61 6e 69  6e 67 0a 23 4c 69 6e 65  |it.Meaning.#Line|
00071370  0a 30 2d 32 09 54 72 61  6e 73 6d 69 74 20 62 69  |.0-2.Transmit bi|
00071380  74 73 20 30 2d 32 0a 33  2d 35 09 52 65 63 65 69  |ts 0-2.3-5.Recei|
00071390  76 65 20 62 69 74 73 20  30 2d 32 0a 36 09 52 65  |ve bits 0-2.6.Re|
000713a0  63 65 69 76 65 20 62 69  74 20 33 0a 37 09 54 72  |ceive bit 3.7.Tr|
000713b0  61 6e 73 6d 69 63 20 62  69 74 20 33 0a 0a 77 68  |ansmic bit 3..wh|
000713c0  65 72 65 20 74 68 65 20  34 20 62 69 74 20 76 61  |ere the 4 bit va|
000713d0  6c 75 65 73 20 65 6e 63  6f 64 65 20 74 68 65 20  |lues encode the |
000713e0  62 75 61 64 20 72 61 74  65 73 3a 0a 0a 23 54 61  |buad rates:..#Ta|
000713f0  62 0a 56 61 6c 75 65 09  42 61 75 64 20 72 61 74  |b.Value.Baud rat|
00071400  65 0a 23 4c 69 6e 65 0a  30 09 31 39 32 30 30 0a  |e.#Line.0.19200.|
00071410  31 09 31 32 30 30 0a 32  09 34 38 30 30 0a 33 09  |1.1200.2.4800.3.|
00071420  31 35 30 0a 34 09 39 36  30 30 0a 35 09 33 30 30  |150.4.9600.5.300|
00071430  0a 36 09 32 34 30 30 0a  37 09 37 35 0a 38 09 37  |.6.2400.7.75.8.7|
00071440  32 30 30 0a 39 09 31 33  34 2e 35 0a 31 30 09 31  |200.9.134.5.10.1|
00071450  38 30 30 0a 31 31 09 35  30 0a 31 32 09 33 36 30  |800.11.50.12.360|
00071460  30 0a 31 33 09 31 31 30  0a 31 34 09 36 30 30 0a  |0.13.110.14.600.|
00071470  31 35 09 75 6e 64 65 66  69 6e 65 64 0a 00 00 00  |15.undefined....|
00071480  44 41 54 41 8e 01 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00071490  32 34 33 20 20 52 65 61  64 20 74 69 6d 65 72 20  |243  Read timer |
000714a0  73 77 69 74 63 68 20 73  74 61 74 65 0a 23 50 61  |switch state.#Pa|
000714b0  72 65 6e 74 20 4f 53 5f  42 79 74 65 49 6e 64 65  |rent OS_ByteInde|
000714c0  78 0a 3d 3e 09 52 30 20  3d 09 32 34 33 20 28 26  |x.=>.R0 =.243 (&|
000714d0  46 33 29 0a 09 52 31 20  3d 09 30 0a 09 52 32 20  |F3)..R1 =.0..R2 |
000714e0  3d 09 32 35 35 0a 0a 3c  3d 09 52 30 20 70 72 65  |=.255..<=.R0 pre|
000714f0  73 65 72 76 65 64 0a 09  52 31 20 3d 09 73 77 69  |served..R1 =.swi|
00071500  74 63 68 20 73 74 61 74  65 0a 09 52 32 20 63 6f  |tch state..R2 co|
00071510  72 72 75 70 74 65 64 0a  0a 54 68 69 73 20 63 61  |rrupted..This ca|
00071520  6c 6c 20 69 73 20 6f 62  73 6f 6c 65 74 65 20 2d  |ll is obsolete -|
00071530  20 69 74 20 72 65 61 64  73 20 77 68 69 63 68 20  | it reads which |
00071540  6f 66 20 74 68 65 20 74  77 6f 20 63 6f 70 69 65  |of the two copie|
00071550  73 20 6f 66 20 74 68 65  20 63 65 6e 74 69 73 65  |s of the centise|
00071560  63 6f 6e 64 20 63 6c 6f  63 6b 20 69 73 20 72 65  |cond clock is re|
00071570  61 64 2f 77 72 69 74 74  65 6e 20 74 6f 20 62 79  |ad/written to by|
00071580  20 3c 4f 53 5f 57 6f 72  64 20 33 20 61 6e 64 20  | <OS_Word 3 and |
00071590  34 3d 3e 4f 53 5f 57 6f  72 64 34 3e 2c 20 61 6e  |4=>OS_Word4>, an|
000715a0  64 20 77 68 69 63 68 20  69 73 20 75 70 64 61 74  |d which is updat|
000715b0  65 64 20 6f 6e 20 74 68  65 20 31 30 30 48 7a 20  |ed on the 100Hz |
000715c0  69 6e 74 65 72 75 70 74  2e 20 49 6e 20 65 66 66  |interupt. In eff|
000715d0  65 63 74 20 69 74 20 70  72 6f 76 69 64 65 73 20  |ect it provides |
000715e0  61 20 6c 6f 63 61 74 69  6f 6e 20 74 68 61 74 20  |a location that |
000715f0  63 68 61 6e 67 65 73 20  31 30 30 20 74 69 6d 65  |changes 100 time|
00071600  73 20 70 65 72 20 73 65  63 6f 6e 64 2e 0a 00 00  |s per second....|
00071610  44 41 54 41 cf 01 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00071620  32 34 36 20 20 52 65 61  64 2f 57 72 69 74 65 20  |246  Read/Write |
00071630  70 72 69 6e 74 65 72 20  69 67 6e 6f 72 65 20 63  |printer ignore c|
00071640  68 61 72 61 63 74 65 72  0a 23 50 61 72 65 6e 74  |haracter.#Parent|
00071650  20 4f 53 5f 42 79 74 65  49 6e 64 65 78 0a 3d 3e  | OS_ByteIndex.=>|
00071660  09 52 30 20 3d 09 32 34  36 20 28 26 46 36 29 0a  |.R0 =.246 (&F6).|
00071670  09 52 31 20 3d 09 45 4f  52 20 76 61 6c 75 65 0a  |.R1 =.EOR value.|
00071680  09 52 32 20 3d 09 41 4e  44 20 76 61 6c 75 65 0a  |.R2 =.AND value.|
00071690  0a 3c 3d 09 52 30 20 70  72 65 73 65 72 76 65 64  |.<=.R0 preserved|
000716a0  0a 09 52 31 20 3d 09 76  61 6c 75 65 20 62 65 66  |..R1 =.value bef|
000716b0  6f 72 65 20 62 65 69 6e  67 20 6f 76 65 72 77 72  |ore being overwr|
000716c0  69 74 74 65 6e 0a 09 52  32 20 63 6f 72 72 75 70  |itten..R2 corrup|
000716d0  74 65 64 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ted.            |
000716e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00071700  20 20 20 20 20 20 0a 54  68 69 73 20 63 61 6c 6c  |      .This call|
00071710  20 72 65 61 64 73 20 6f  72 20 73 65 74 20 74 68  | reads or set th|
00071720  65 20 70 72 69 6e 74 65  72 20 69 67 6e 6f 72 65  |e printer ignore|
00071730  20 63 68 61 72 61 63 74  65 72 2e 20 49 74 20 6d  | character. It m|
00071740  61 79 20 61 6c 73 6f 20  62 65 20 77 72 69 74 74  |ay also be writt|
00071750  65 6e 20 77 69 74 68 20  3c 4f 53 5f 42 79 74 65  |en with <OS_Byte|
00071760  20 36 3d 3e 4f 53 5f 42  79 74 65 30 30 36 3e 2e  | 6=>OS_Byte006>.|
00071770  20 54 6f 20 75 6e 73 65  74 20 74 68 65 20 69 67  | To unset the ig|
00071780  6e 6f 72 65 20 63 68 61  72 61 63 74 65 72 20 28  |nore character (|
00071790  4e 6f 49 67 6e 6f 72 65  29 20 79 6f 75 20 63 61  |NoIgnore) you ca|
000717a0  6e 6e 6f 74 20 75 73 65  20 74 68 69 73 20 63 61  |nnot use this ca|
000717b0  6c 6c 2c 20 79 6f 75 20  6e 65 65 64 20 74 6f 20  |ll, you need to |
000717c0  75 73 65 20 3c 4f 53 5f  42 79 74 65 20 31 38 32  |use <OS_Byte 182|
000717d0  3d 3e 4f 53 5f 42 79 74  65 31 38 32 3e 2e 0a 00  |=>OS_Byte182>...|
000717e0  44 41 54 41 b8 01 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
000717f0  32 35 30 20 20 52 65 61  64 20 56 44 55 20 64 72  |250  Read VDU dr|
00071800  69 76 65 72 20 73 63 72  65 65 6e 20 62 61 6e 6b  |iver screen bank|
00071810  20 6e 75 6d 62 65 72 0a  23 50 61 72 65 6e 74 20  | number.#Parent |
00071820  4f 53 5f 42 79 74 65 49  6e 64 65 78 0a 3d 3e 09  |OS_ByteIndex.=>.|
00071830  52 30 20 3d 09 32 35 30  20 28 26 46 41 29 0a 09  |R0 =.250 (&FA)..|
00071840  52 31 20 3d 09 30 0a 09  52 32 20 3d 09 32 35 35  |R1 =.0..R2 =.255|
00071850  0a 0a 3c 3d 09 52 30 20  70 72 65 73 65 72 76 65  |..<=.R0 preserve|
00071860  64 0a 09 52 31 20 3d 09  56 44 55 20 64 72 69 76  |d..R1 =.VDU driv|
00071870  65 72 20 73 63 72 65 65  6e 20 62 61 6e 6b 0a 09  |er screen bank..|
00071880  52 32 20 3d 09 64 69 73  70 6c 61 79 20 73 63 72  |R2 =.display scr|
00071890  65 65 6e 20 62 61 6e 6b  20 28 73 65 65 20 3c 4f  |een bank (see <O|
000718a0  53 5f 42 79 74 65 20 32  35 31 3d 3e 4f 53 5f 42  |S_Byte 251=>OS_B|
000718b0  79 74 65 32 35 31 3e 29  0a 0a 54 68 69 73 20 63  |yte251>)..This c|
000718c0  61 6c 6c 20 72 65 61 64  73 20 74 68 65 20 73 63  |all reads the sc|
000718d0  72 65 65 6e 20 62 61 6e  6b 20 75 73 65 64 20 62  |reen bank used b|
000718e0  79 20 74 68 65 20 64 69  73 70 6c 61 79 2c 20 61  |y the display, a|
000718f0  73 20 73 65 74 20 77 69  74 68 20 3c 4f 53 5f 42  |s set with <OS_B|
00071900  79 74 65 20 31 31 32 3d  3e 4f 53 5f 42 79 74 65  |yte 112=>OS_Byte|
00071910  31 31 32 3e 2e 20 54 68  69 73 20 63 61 6c 6c 20  |112>. This call |
00071920  73 68 6f 75 6c 64 20 6e  6f 74 20 62 65 20 75 73  |should not be us|
00071930  65 64 20 74 6f 20 77 72  69 74 65 20 74 68 65 20  |ed to write the |
00071940  76 61 6c 75 65 20 2d 20  64 6f 69 6e 67 20 73 6f  |value - doing so|
00071950  20 77 6f 75 6c 64 20 6f  6e 6c 79 20 63 68 61 6e  | would only chan|
00071960  67 65 20 74 68 65 20 76  61 6c 75 65 20 69 6e 20  |ge the value in |
00071970  6d 65 6d 6f 72 79 2c 20  77 69 74 68 6f 75 74 20  |memory, without |
00071980  61 66 66 65 63 74 69 6e  67 20 74 68 65 20 68 61  |affecting the ha|
00071990  72 64 77 61 72 65 2e 0a  44 41 54 41 86 01 00 00  |rdware..DATA....|
000719a0  4f 53 5f 42 79 74 65 20  32 35 31 20 20 52 65 61  |OS_Byte 251  Rea|
000719b0  64 20 64 69 73 70 6c 61  79 20 73 63 72 65 65 6e  |d display screen|
000719c0  20 62 61 6e 6b 20 6e 75  6d 62 65 72 0a 23 50 61  | bank number.#Pa|
000719d0  72 65 6e 74 20 4f 53 5f  42 79 74 65 49 6e 64 65  |rent OS_ByteInde|
000719e0  78 0a 3d 3e 09 52 30 20  3d 09 32 35 31 20 28 26  |x.=>.R0 =.251 (&|
000719f0  46 42 29 0a 09 52 31 20  3d 09 30 0a 09 52 32 20  |FB)..R1 =.0..R2 |
00071a00  3d 09 32 35 35 0a 0a 3c  3d 09 52 30 20 70 72 65  |=.255..<=.R0 pre|
00071a10  73 65 72 76 65 64 0a 09  52 31 20 3d 09 64 69 73  |served..R1 =.dis|
00071a20  70 6c 61 79 20 73 63 72  65 65 6e 20 62 61 6e 6b  |play screen bank|
00071a30  0a 09 52 32 20 63 6f 72  72 75 70 74 65 64 0a 0a  |..R2 corrupted..|
00071a40  54 68 69 73 20 63 61 6c  6c 20 72 65 61 64 73 20  |This call reads |
00071a50  74 68 65 20 73 63 72 65  65 6e 20 62 61 6e 6b 20  |the screen bank |
00071a60  75 73 65 64 20 62 79 20  74 68 65 20 64 69 73 70  |used by the disp|
00071a70  6c 61 79 2c 20 61 73 20  73 65 74 20 77 69 74 68  |lay, as set with|
00071a80  20 3c 4f 53 5f 42 79 74  65 20 31 31 33 3d 3e 4f  | <OS_Byte 113=>O|
00071a90  53 5f 42 79 74 65 31 31  33 3e 2e 20 54 68 69 73  |S_Byte113>. This|
00071aa0  20 63 61 6c 6c 20 73 68  6f 75 6c 64 20 6e 6f 74  | call should not|
00071ab0  20 62 65 20 75 73 65 64  20 74 6f 20 77 72 69 74  | be used to writ|
00071ac0  65 20 74 68 65 20 76 61  6c 75 65 20 2d 20 64 6f  |e the value - do|
00071ad0  69 6e 67 20 73 6f 20 77  6f 75 6c 64 20 6f 6e 6c  |ing so would onl|
00071ae0  79 20 63 68 61 6e 67 65  20 74 68 65 20 76 61 6c  |y change the val|
00071af0  75 65 20 69 6e 20 6d 65  6d 6f 72 79 2c 20 77 69  |ue in memory, wi|
00071b00  74 68 6f 75 74 20 61 66  66 65 63 74 69 6e 67 20  |thout affecting |
00071b10  74 68 65 20 68 61 72 64  77 61 72 65 2e 0a 00 00  |the hardware....|
00071b20  44 41 54 41 89 01 00 00  4f 53 5f 42 79 74 65 20  |DATA....OS_Byte |
00071b30  32 35 33 20 20 52 65 61  64 20 6c 61 73 74 20 72  |253  Read last r|
00071b40  65 73 65 74 20 74 79 70  65 0a 23 50 61 72 65 6e  |eset type.#Paren|
00071b50  74 20 4f 53 5f 42 79 74  65 49 6e 64 65 78 0a 3d  |t OS_ByteIndex.=|
00071b60  3e 09 52 30 20 3d 09 32  35 33 20 28 26 46 44 29  |>.R0 =.253 (&FD)|
00071b70  0a 09 52 31 20 3d 09 30  0a 09 52 32 20 3d 09 32  |..R1 =.0..R2 =.2|
00071b80  35 35 0a 0a 3c 3d 09 52  30 20 70 72 65 73 65 72  |55..<=.R0 preser|
00071b90  76 65 64 0a 09 52 31 20  3d 09 3c 62 72 65 61 6b  |ved..R1 =.<break|
00071ba0  20 74 79 70 65 3d 3e 2e  74 79 70 65 3e 0a 09 52  | type=>.type>..R|
00071bb0  32 20 3d 09 65 66 66 65  63 74 20 6f 66 20 73 68  |2 =.effect of sh|
00071bc0  69 66 74 20 6f 6e 20 6b  65 79 70 61 64 20 28 73  |ift on keypad (s|
00071bd0  65 65 20 3c 4f 53 5f 42  79 74 65 20 32 35 34 3d  |ee <OS_Byte 254=|
00071be0  3e 4f 53 5f 42 79 74 65  32 35 34 3e 29 0a 20 20  |>OS_Byte254>).  |
00071bf0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00071c20  0a 54 68 69 73 20 63 61  6c 6c 20 72 65 61 64 20  |.This call read |
00071c30  74 68 65 20 74 79 70 65  20 6f 66 20 74 68 65 20  |the type of the |
00071c40  6c 61 73 74 20 72 65 73  65 74 2e 0a 23 73 75 62  |last reset..#sub|
00071c50  70 61 67 65 20 74 79 70  65 0a 4c 61 73 74 20 72  |page type.Last r|
00071c60  65 73 65 74 20 74 79 70  65 0a 5c 23 09 52 65 73  |eset type.\#.Res|
00071c70  65 74 20 74 79 70 65 0a  23 4c 69 6e 65 0a 30 09  |et type.#Line.0.|
00071c80  53 6f 66 74 20 72 65 73  65 74 0a 31 09 50 6f 77  |Soft reset.1.Pow|
00071c90  65 72 2d 6f 6e 20 72 65  73 65 74 0a 32 09 48 61  |er-on reset.2.Ha|
00071ca0  72 64 20 72 65 73 65 74  0a 00 00 00 44 49 52 24  |rd reset....DIR$|
00071cb0  60 01 00 00 60 01 00 00  0c 1e 07 00 47 ff ff ff  |`...`.......G...|
00071cc0  43 26 bd cd 4f 05 00 00  13 00 00 00 00 00 00 00  |C&..O...........|
00071cd0  21 52 6f 6f 74 00 00 00  5c 23 07 00 48 fd ff ff  |!Root...\#..H...|
00071ce0  f2 d4 19 2a c3 01 00 00  13 00 00 00 00 00 00 00  |...*............|
00071cf0  30 00 00 00 20 25 07 00  48 fd ff ff 37 b6 19 2a  |0... %..H...7..*|
00071d00  7b 02 00 00 13 00 00 00  00 00 00 00 31 00 00 00  |{...........1...|
00071d10  9c 27 07 00 48 fd ff ff  0a 11 1a 2a 0f 05 00 00  |.'..H......*....|
00071d20  13 00 00 00 00 00 00 00  31 32 00 00 ac 2c 07 00  |........12...,..|
00071d30  48 fd ff ff e2 e1 19 2a  04 02 00 00 13 00 00 00  |H......*........|
00071d40  00 00 00 00 35 00 00 00  b0 2e 07 00 48 fd ff ff  |....5.......H...|
00071d50  f8 eb 19 2a aa 01 00 00  13 00 00 00 00 00 00 00  |...*............|
00071d60  36 00 00 00 5c 30 07 00  48 fd ff ff f2 01 1a 2a  |6...\0..H......*|
00071d70  ff 00 00 00 13 00 00 00  00 00 00 00 31 31 00 00  |............11..|
00071d80  5c 31 07 00 48 fd ff ff  e9 d0 19 2a 26 01 00 00  |\1..H......*&...|
00071d90  13 00 00 00 00 00 00 00  37 00 00 00 84 32 07 00  |........7....2..|
00071da0  48 fd ff ff 03 fb 19 2a  ea 00 00 00 13 00 00 00  |H......*........|
00071db0  00 00 00 00 38 00 00 00  70 33 07 00 47 fd ff ff  |....8...p3..G...|
00071dc0  20 a9 f9 d5 17 02 00 00  13 00 00 00 00 00 00 00  | ...............|
00071dd0  32 30 00 00 88 35 07 00  48 fd ff ff 3d 20 1a 2a  |20...5..H...= .*|
00071de0  c8 01 00 00 13 00 00 00  00 00 00 00 32 34 00 00  |............24..|
00071df0  50 37 07 00 48 fd ff ff  a0 1b 1a 2a 9e 01 00 00  |P7..H......*....|
00071e00  13 00 00 00 00 00 00 00  31 39 00 00 44 41 54 41  |........19..DATA|
00071e10  4f 05 00 00 4f 53 5f 46  69 6c 65 20 20 28 26 30  |O...OS_File  (&0|
00071e20  38 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 0a 3d  |8).#Parent OS_.=|
00071e30  3e 20 52 30 20 3d 20 72  65 61 73 6f 6e 20 63 6f  |> R0 = reason co|
00071e40  64 65 0a 0a 4d 69 73 63  65 6c 6c 61 6e 65 6f 75  |de..Miscellaneou|
00071e50  73 20 6f 70 65 72 61 74  69 6f 6e 73 20 6f 6e 20  |s operations on |
00071e60  77 68 6f 6c 65 20 66 69  6c 65 73 20 3a 0a 0a 30  |whole files :..0|
00071e70  09 3c 53 61 76 65 20 62  6c 6f 63 6b 20 6f 66 20  |.<Save block of |
00071e80  6d 65 6d 6f 72 79 20 61  73 20 61 20 66 69 6c 65  |memory as a file|
00071e90  3d 3e 4f 53 5f 46 69 6c  65 30 3e 0a 31 09 3c 57  |=>OS_File0>.1.<W|
00071ea0  72 69 74 65 20 63 61 74  61 6c 6f 67 75 65 20 69  |rite catalogue i|
00071eb0  6e 66 6f 20 66 6f 72 20  6e 61 6d 65 64 20 6f 62  |nfo for named ob|
00071ec0  6a 65 63 74 3d 3e 4f 53  5f 46 69 6c 65 31 3e 0a  |ject=>OS_File1>.|
00071ed0  32 09 3c 57 72 69 74 65  20 6c 6f 61 64 20 61 64  |2.<Write load ad|
00071ee0  64 72 65 73 73 20 66 6f  72 20 6e 61 6d 65 64 20  |dress for named |
00071ef0  6f 62 6a 65 63 74 3d 3e  4f 53 5f 46 69 6c 65 31  |object=>OS_File1|
00071f00  3e 0a 33 09 3c 57 72 69  74 65 20 65 78 65 63 20  |>.3.<Write exec |
00071f10  61 64 64 72 65 73 73 20  66 6f 72 20 6e 61 6d 65  |address for name|
00071f20  64 20 6f 62 6a 65 63 74  3d 3e 4f 53 5f 46 69 6c  |d object=>OS_Fil|
00071f30  65 31 3e 0a 34 09 3c 57  72 69 74 65 20 61 74 74  |e1>.4.<Write att|
00071f40  72 69 62 75 74 65 73 20  66 6f 72 20 6e 61 6d 65  |ributes for name|
00071f50  64 20 6f 62 6a 65 63 74  3d 3e 4f 53 5f 46 69 6c  |d object=>OS_Fil|
00071f60  65 31 3e 0a 35 09 3c 52  65 61 64 20 63 61 74 61  |e1>.5.<Read cata|
00071f70  6c 6f 67 75 65 20 69 6e  66 6f 20 66 6f 72 20 6f  |logue info for o|
00071f80  62 6a 65 63 74 3d 3e 4f  53 5f 46 69 6c 65 35 3e  |bject=>OS_File5>|
00071f90  0a 36 09 3c 44 65 6c 65  74 65 20 6e 61 6d 65 64  |.6.<Delete named|
00071fa0  20 6f 62 6a 65 63 74 3d  3e 4f 53 5f 46 69 6c 65  | object=>OS_File|
00071fb0  36 3e 0a 37 09 3c 43 72  65 61 74 65 20 65 6d 70  |6>.7.<Create emp|
00071fc0  74 79 20 75 6e 2d 73 74  61 6d 70 65 64 20 66 69  |ty un-stamped fi|
00071fd0  6c 65 3d 3e 4f 53 5f 46  69 6c 65 37 3e 0a 38 09  |le=>OS_File7>.8.|
00071fe0  3c 43 72 65 61 74 65 20  64 69 72 65 63 74 6f 72  |<Create director|
00071ff0  79 3d 3e 4f 53 5f 46 69  6c 65 38 3e 0a 39 09 3c  |y=>OS_File8>.9.<|
00072000  44 61 74 65 20 73 74 61  6d 70 20 6e 61 6d 65 64  |Date stamp named|
00072010  20 6f 62 6a 65 63 74 3d  3e 4f 53 5f 46 69 6c 65  | object=>OS_File|
00072020  31 3e 0a 31 30 09 3c 53  61 76 65 20 62 6c 6f 63  |1>.10.<Save bloc|
00072030  6b 20 6f 66 20 6d 65 6d  6f 72 79 20 61 73 20 61  |k of memory as a|
00072040  20 74 79 70 65 64 20 66  69 6c 65 3d 3e 4f 53 5f  | typed file=>OS_|
00072050  46 69 6c 65 30 3e 0a 31  31 09 3c 43 72 65 61 74  |File0>.11.<Creat|
00072060  65 20 65 6d 70 74 79 20  66 69 6c 65 3d 3e 4f 53  |e empty file=>OS|
00072070  5f 46 69 6c 65 31 31 3e  0a 31 32 09 3c 4c 6f 61  |_File11>.12.<Loa|
00072080  64 20 6e 61 6d 65 64 20  66 69 6c 65 20 67 69 76  |d named file giv|
00072090  65 6e 20 70 61 74 68 3d  3e 4f 53 5f 46 69 6c 65  |en path=>OS_File|
000720a0  31 32 3e 0a 31 33 09 3c  52 65 61 64 20 63 61 74  |12>.13.<Read cat|
000720b0  61 6c 6f 67 75 65 20 69  6e 66 6f 20 66 6f 72 20  |alogue info for |
000720c0  6f 62 6a 65 63 74 20 67  69 76 65 6e 20 70 61 74  |object given pat|
000720d0  68 3d 3e 4f 53 5f 46 69  6c 65 35 3e 0a 31 34 09  |h=>OS_File5>.14.|
000720e0  3c 4c 6f 61 64 20 6e 61  6d 65 64 20 66 69 6c 65  |<Load named file|
000720f0  20 67 69 76 65 6e 20 70  61 74 68 20 76 61 72 69  | given path vari|
00072100  61 62 6c 65 3d 3e 4f 53  5f 46 69 6c 65 31 32 3e  |able=>OS_File12>|
00072110  0a 31 35 09 3c 52 65 61  64 20 63 61 74 61 6c 6f  |.15.<Read catalo|
00072120  67 75 65 20 69 6e 66 6f  20 66 6f 72 20 6f 62 6a  |gue info for obj|
00072130  65 63 74 20 67 69 76 65  6e 20 70 61 74 68 20 76  |ect given path v|
00072140  61 72 69 61 62 6c 65 3d  3e 4f 53 5f 46 69 6c 65  |ariable=>OS_File|
00072150  35 3e 0a 31 36 09 3c 4c  6f 61 64 20 6e 61 6d 65  |5>.16.<Load name|
00072160  64 20 66 69 6c 65 20 77  69 74 68 6f 75 74 20 70  |d file without p|
00072170  61 74 68 3d 3e 4f 53 5f  46 69 6c 65 31 32 3e 0a  |ath=>OS_File12>.|
00072180  31 37 09 3c 52 65 61 64  20 63 61 74 61 6c 6f 67  |17.<Read catalog|
00072190  75 65 20 69 6e 66 6f 20  66 6f 72 20 6f 62 6a 65  |ue info for obje|
000721a0  63 74 20 77 69 74 68 6f  75 74 20 70 61 74 68 3d  |ct without path=|
000721b0  3e 4f 53 5f 46 69 6c 65  35 3e 0a 31 38 09 3c 53  |>OS_File5>.18.<S|
000721c0  65 74 20 74 79 70 65 20  6f 66 20 6e 61 6d 65 64  |et type of named|
000721d0  20 6f 62 6a 65 63 74 3d  3e 4f 53 5f 46 69 6c 65  | object=>OS_File|
000721e0  31 3e 0a 31 39 09 3c 47  65 6e 65 72 61 74 65 20  |1>.19.<Generate |
000721f0  65 72 72 6f 72 20 6d 65  73 73 61 67 65 3d 3e 4f  |error message=>O|
00072200  53 5f 46 69 6c 65 31 39  3e 0a 32 30 09 3c 52 65  |S_File19>.20.<Re|
00072210  61 64 20 63 61 74 61 6c  6f 67 75 65 20 69 6e 66  |ad catalogue inf|
00072220  6f 20 66 6f 72 20 73 74  61 6d 70 65 64 20 6f 62  |o for stamped ob|
00072230  6a 65 63 74 3d 3e 4f 53  5f 46 69 6c 65 32 30 3e  |ject=>OS_File20>|
00072240  0a 32 31 09 3c 52 65 61  64 20 63 61 74 61 6c 6f  |.21.<Read catalo|
00072250  67 75 65 20 69 6e 66 6f  20 66 6f 72 20 73 74 61  |gue info for sta|
00072260  6d 70 65 64 20 6f 62 6a  65 63 74 20 67 69 76 65  |mped object give|
00072270  6e 20 70 61 74 68 3d 3e  4f 53 5f 46 69 6c 65 32  |n path=>OS_File2|
00072280  30 3e 0a 32 32 09 3c 52  65 61 64 20 63 61 74 61  |0>.22.<Read cata|
00072290  6c 6f 67 75 65 20 69 6e  66 6f 20 66 6f 72 20 73  |logue info for s|
000722a0  74 61 6d 70 65 64 20 6f  62 6a 65 63 74 20 67 69  |tamped object gi|
000722b0  76 65 6e 20 70 61 74 68  20 76 61 72 69 61 62 6c  |ven path variabl|
000722c0  65 3d 3e 4f 53 5f 46 69  6c 65 32 30 3e 0a 32 33  |e=>OS_File20>.23|
000722d0  09 3c 52 65 61 64 20 63  61 74 61 6c 6f 67 75 65  |.<Read catalogue|
000722e0  20 69 6e 66 6f 20 66 6f  72 20 73 74 61 6d 70 65  | info for stampe|
000722f0  64 20 6f 62 6a 65 63 74  20 77 69 74 68 6f 75 74  |d object without|
00072300  20 70 61 74 68 3d 3e 4f  53 5f 46 69 6c 65 32 30  | path=>OS_File20|
00072310  3e 0a 32 34 09 3c 52 65  61 64 20 62 6c 6f 63 6b  |>.24.<Read block|
00072320  20 73 69 7a 65 20 6f 66  20 66 69 6c 65 3d 3e 4f  | size of file=>O|
00072330  53 5f 46 69 6c 65 32 34  3e 0a 32 35 35 09 3c 4c  |S_File24>.255.<L|
00072340  6f 61 64 20 6e 61 6d 65  64 20 66 69 6c 65 3d 3e  |oad named file=>|
00072350  4f 53 5f 46 69 6c 65 31  32 3e 0a 00 44 41 54 41  |OS_File12>..DATA|
00072360  c3 01 00 00 4f 53 5f 46  69 6c 65 20 30 20 61 6e  |....OS_File 0 an|
00072370  64 20 31 30 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |d 10.#Parent OS_|
00072380  46 69 6c 65 0a 3d 3e 09  52 30 20 3d 09 30 20 6f  |File.=>.R0 =.0 o|
00072390  72 20 31 30 20 28 72 65  61 73 6f 6e 20 63 6f 64  |r 10 (reason cod|
000723a0  65 73 29 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |es)..R1 =.pointe|
000723b0  72 20 74 6f 20 66 69 6c  65 6e 61 6d 65 0a 09 20  |r to filename.. |
000723c0  09 69 66 20 52 30 20 3d  20 20 30 20 3a 09 52 32  |.if R0 =  0 :.R2|
000723d0  20 3d 20 3c 6c 6f 61 64  20 61 64 64 72 65 73 73  | = <load address|
000723e0  3d 3e 66 73 79 73 5f 6c  6f 61 64 65 78 65 63 3e  |=>fsys_loadexec>|
000723f0  0a 09 20 09 20 09 09 52  33 20 3d 20 3c 65 78 65  |.. . ..R3 = <exe|
00072400  63 20 61 64 64 72 65 73  73 3d 3e 66 73 79 73 5f  |c address=>fsys_|
00072410  6c 6f 61 64 65 78 65 63  3e 0a 09 20 09 69 66 20  |loadexec>.. .if |
00072420  52 30 20 3d 20 31 30 20  3a 09 52 32 20 3d 20 3c  |R0 = 10 :.R2 = <|
00072430  66 69 6c 65 74 79 70 65  3d 3e 46 69 6c 65 74 79  |filetype=>Filety|
00072440  70 65 73 3a 21 52 6f 6f  74 3e 0a 09 52 34 20 3d  |pes:!Root>..R4 =|
00072450  09 70 6f 69 6e 74 65 72  20 74 6f 20 73 74 61 72  |.pointer to star|
00072460  74 20 61 64 64 72 65 73  73 0a 09 52 35 20 3d 09  |t address..R5 =.|
00072470  70 6f 69 6e 74 65 72 20  74 6f 20 65 6e 64 20 61  |pointer to end a|
00072480  64 64 72 65 73 73 0a 0a  3c 3d 09 61 6c 6c 20 72  |ddress..<=.all r|
00072490  65 67 69 73 74 65 72 73  20 70 72 65 73 65 72 76  |egisters preserv|
000724a0  65 64 0a 0a 54 68 69 73  20 53 57 49 20 69 73 20  |ed..This SWI is |
000724b0  75 73 65 64 20 74 6f 20  73 61 76 65 20 61 20 62  |used to save a b|
000724c0  6c 6f 63 6b 20 6f 66 20  6d 65 6d 6f 72 79 20 61  |lock of memory a|
000724d0  73 20 61 20 66 69 6c 65  2e 20 41 6e 20 65 72 72  |s a file. An err|
000724e0  6f 72 20 69 73 20 72 65  74 75 72 6e 65 64 20 69  |or is returned i|
000724f0  66 20 6f 62 6a 65 63 74  20 69 73 20 6c 6f 63 6b  |f object is lock|
00072500  65 64 2c 20 69 73 20 6f  70 65 6e 20 6f 72 20 69  |ed, is open or i|
00072510  73 20 61 20 64 69 72 65  63 74 6f 72 79 2e 0a 00  |s a directory...|
00072520  44 41 54 41 7b 02 00 00  4f 53 5f 46 69 6c 65 20  |DATA{...OS_File |
00072530  31 2c 32 2c 33 2c 34 2c  39 20 61 6e 64 20 31 38  |1,2,3,4,9 and 18|
00072540  0a 23 50 61 72 65 6e 74  20 4f 53 5f 46 69 6c 65  |.#Parent OS_File|
00072550  0a 3d 3e 09 52 30 20 3d  09 31 2c 20 32 2c 20 33  |.=>.R0 =.1, 2, 3|
00072560  2c 20 34 2c 20 39 20 6f  72 20 31 38 20 28 72 65  |, 4, 9 or 18 (re|
00072570  61 73 6f 6e 20 63 6f 64  65 73 29 0a 09 52 31 20  |ason codes)..R1 |
00072580  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 66 69 6c  |=.pointer to fil|
00072590  65 6e 61 6d 65 0a 09 20  09 69 66 20 52 30 20 69  |ename.. .if R0 i|
000725a0  6e 20 28 31 2c 32 29 09  3a 20 52 32 20 3d 09 3c  |n (1,2).: R2 =.<|
000725b0  6c 6f 61 64 20 61 64 64  72 65 73 73 3d 3e 66 73  |load address=>fs|
000725c0  79 73 5f 6c 6f 61 64 65  78 65 63 3e 0a 09 20 09  |ys_loadexec>.. .|
000725d0  69 66 20 52 30 20 3d 20  31 38 09 3a 20 52 32 20  |if R0 = 18.: R2 |
000725e0  3d 09 3c 66 69 6c 65 74  79 70 65 3d 3e 46 69 6c  |=.<filetype=>Fil|
000725f0  65 74 79 70 65 73 3a 21  52 6f 6f 74 3e 0a 09 20  |etypes:!Root>.. |
00072600  09 69 66 20 52 30 20 69  6e 20 28 31 2c 33 29 09  |.if R0 in (1,3).|
00072610  3a 20 52 33 20 3d 09 3c  65 78 65 63 20 61 64 64  |: R3 =.<exec add|
00072620  72 65 73 73 3d 3e 66 73  79 73 5f 6c 6f 61 64 65  |ress=>fsys_loade|
00072630  78 65 63 3e 0a 09 20 09  69 66 20 52 30 20 69 6e  |xec>.. .if R0 in|
00072640  20 28 31 2c 34 29 09 3a  20 52 35 20 3d 09 3c 61  | (1,4).: R5 =.<a|
00072650  74 74 72 69 62 75 74 65  73 3d 3e 66 73 79 73 5f  |ttributes=>fsys_|
00072660  6f 62 6a 61 74 74 72 3e  0a 0a 3c 3d 09 72 65 67  |objattr>..<=.reg|
00072670  69 73 74 65 72 73 20 70  72 65 73 65 72 76 65 64  |isters preserved|
00072680  0a 0a 54 68 69 73 20 53  57 49 20 69 73 20 75 73  |..This SWI is us|
00072690  65 64 20 74 6f 20 77 72  69 74 65 20 76 61 72 69  |ed to write vari|
000726a0  6f 75 73 20 63 61 74 61  6c 6f 67 75 65 20 69 6e  |ous catalogue in|
000726b0  66 6f 72 6d 61 74 69 6f  6e 20 66 6f 72 20 61 20  |formation for a |
000726c0  6e 61 6d 65 64 20 6f 62  6a 65 63 74 2e 0a 0a 52  |named object...R|
000726d0  30 09 49 6e 66 6f 20 77  72 69 74 74 65 6e 0a 23  |0.Info written.#|
000726e0  4c 69 6e 65 0a 31 09 4c  6f 61 64 20 61 6e 64 20  |Line.1.Load and |
000726f0  65 78 65 63 20 61 64 64  72 65 73 73 20 2b 20 6f  |exec address + o|
00072700  62 6a 65 63 74 20 61 74  74 72 69 62 75 74 65 73  |bject attributes|
00072710  0a 32 09 4c 6f 61 64 20  61 64 64 72 65 73 73 0a  |.2.Load address.|
00072720  33 09 45 78 65 63 20 61  64 64 72 65 73 73 0a 34  |3.Exec address.4|
00072730  09 4f 62 6a 65 63 74 20  61 74 74 72 69 62 75 74  |.Object attribut|
00072740  65 73 0a 39 09 44 61 74  65 2f 74 69 6d 65 20 73  |es.9.Date/time s|
00072750  74 61 6d 70 20 2b 20 66  69 6c 65 74 79 70 65 20  |tamp + filetype |
00072760  74 6f 20 26 46 46 44 20  69 66 20 6e 6f 74 20 73  |to &FFD if not s|
00072770  65 74 2e 0a 31 38 09 46  69 6c 65 74 79 70 65 2c  |et..18.Filetype,|
00072780  20 61 6e 64 20 64 61 74  65 2f 74 69 6d 65 20 69  | and date/time i|
00072790  66 20 6e 6f 74 20 73 65  74 2e 0a 00 44 41 54 41  |f not set...DATA|
000727a0  0f 05 00 00 4f 53 5f 46  69 6c 65 20 31 32 2c 31  |....OS_File 12,1|
000727b0  34 2c 31 36 20 61 6e 64  20 32 35 35 0a 23 50 61  |4,16 and 255.#Pa|
000727c0  72 65 6e 74 20 4f 53 5f  46 69 6c 65 0a 3d 3e 09  |rent OS_File.=>.|
000727d0  52 30 20 3d 09 31 32 2c  31 34 2c 31 36 20 6f 72  |R0 =.12,14,16 or|
000727e0  20 32 35 35 20 28 72 65  61 73 6f 6e 20 63 6f 64  | 255 (reason cod|
000727f0  65 29 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |e)..R1 =.pointer|
00072800  20 74 6f 20 66 69 6c 65  6e 61 6d 65 0a 09 20 09  | to filename.. .|
00072810  69 66 20 52 33 20 41 4e  44 20 26 46 46 20 3d 20  |if R3 AND &FF = |
00072820  30 20 3a 0a 09 20 09 20  20 52 32 20 3d 20 6c 6f  |0 :.. .  R2 = lo|
00072830  61 64 20 61 64 64 72 65  73 73 0a 09 20 09 20 20  |ad address.. .  |
00072840  28 69 66 20 62 33 31 20  73 65 74 20 74 68 65 6e  |(if b31 set then|
00072850  20 74 68 65 20 66 69 6c  65 20 69 73 20 63 6f 64  | the file is cod|
00072860  65 20 61 6e 64 20 77 69  6c 6c 20 62 65 20 73 79  |e and will be sy|
00072870  6e 63 68 72 6f 6e 69 73  65 64 29 0a 09 20 09 65  |nchronised).. .e|
00072880  6c 73 65 20 3a 0a 09 20  09 20 20 6c 6f 61 64 20  |lse :.. .  load |
00072890  61 74 20 66 69 6c 65 73  20 6c 6f 61 64 20 61 64  |at files load ad|
000728a0  64 72 65 73 73 0a 09 20  09 69 66 20 52 30 20 3d  |dress.. .if R0 =|
000728b0  20 32 35 35 20 3a 09 75  73 65 20 46 69 6c 65 24  | 255 :.use File$|
000728c0  50 61 74 68 0a 09 20 09  69 66 20 52 30 20 3d 20  |Path.. .if R0 = |
000728d0  31 32 20 3a 09 52 34 20  3d 20 70 6f 69 6e 74 65  |12 :.R4 = pointe|
000728e0  72 20 74 6f 20 70 61 74  68 20 73 74 72 69 6e 67  |r to path string|
000728f0  0a 09 20 09 69 66 20 52  30 20 3d 20 31 34 20 3a  |.. .if R0 = 14 :|
00072900  09 52 34 20 3d 20 70 6f  69 6e 74 65 72 20 74 6f  |.R4 = pointer to|
00072910  20 70 61 74 68 20 76 61  72 69 61 62 6c 65 0a 09  | path variable..|
00072920  20 09 69 66 20 52 30 20  3d 20 31 36 20 3a 09 75  | .if R0 = 16 :.u|
00072930  73 65 20 6e 6f 20 70 61  74 68 0a 0a 23 54 61 62  |se no path..#Tab|
00072940  0a 3c 3d 09 52 30 20 3d  09 3c 6f 62 6a 65 63 74  |.<=.R0 =.<object|
00072950  20 74 79 70 65 3d 3e 66  73 79 73 5f 6f 62 6a 74  | type=>fsys_objt|
00072960  79 70 65 3e 0a 09 52 32  20 3d 09 3c 6c 6f 61 64  |ype>..R2 =.<load|
00072970  20 61 64 64 72 65 73 73  3d 3e 66 73 79 73 5f 6c  | address=>fsys_l|
00072980  6f 61 64 65 78 65 63 3e  0a 09 52 33 20 3d 09 3c  |oadexec>..R3 =.<|
00072990  65 78 65 63 20 61 64 64  72 65 73 73 3d 3e 66 73  |exec address=>fs|
000729a0  79 73 5f 6c 6f 61 64 65  78 65 63 3e 0a 09 52 34  |ys_loadexec>..R4|
000729b0  20 3d 09 6f 62 6a 65 63  74 20 6c 65 6e 67 74 68  | =.object length|
000729c0  0a 09 52 35 20 3d 09 3c  6f 62 6a 65 63 74 20 61  |..R5 =.<object a|
000729d0  74 74 72 69 62 75 74 65  73 3d 3e 66 73 79 73 5f  |ttributes=>fsys_|
000729e0  6f 62 6a 61 74 74 72 3e  0a 0a 54 68 69 73 20 53  |objattr>..This S|
000729f0  57 49 20 69 73 20 75 73  65 64 20 74 6f 20 6c 6f  |WI is used to lo|
00072a00  61 64 20 61 20 6e 61 6d  65 64 20 66 69 6c 65 2e  |ad a named file.|
00072a10  20 41 6e 20 65 72 72 6f  72 20 77 69 6c 6c 20 62  | An error will b|
00072a20  65 20 67 65 6e 65 72 61  74 65 64 20 69 66 20 6e  |e generated if n|
00072a30  6f 74 20 66 6f 75 6e 64  2c 20 69 73 20 64 69 72  |ot found, is dir|
00072a40  65 63 74 6f 72 79 2c 20  6e 6f 20 72 65 61 64 20  |ectory, no read |
00072a50  61 63 63 65 73 73 2c 20  6f 72 20 61 20 62 61 64  |access, or a bad|
00072a60  20 6c 6f 61 64 20 61 64  64 72 65 73 73 2e 0a 0a  | load address...|
00072a70  49 66 20 74 68 65 20 66  69 6c 65 20 69 73 20 73  |If the file is s|
00072a80  74 61 6d 70 65 64 2c 20  61 6e 64 20 6c 6f 61 64  |tamped, and load|
00072a90  69 6e 67 20 61 74 20 6c  6f 61 64 20 61 64 64 72  |ing at load addr|
00072aa0  65 73 73 20 28 52 33 20  41 4e 44 20 26 46 46 20  |ess (R3 AND &FF |
00072ab0  5c 3c 3e 20 30 29 20 74  68 65 20 76 61 72 69 61  |\<> 0) the varia|
00072ac0  62 6c 65 20 27 7b 66 43  6f 64 65 7d 41 6c 69 61  |ble '{fCode}Alia|
00072ad0  73 24 40 4c 6f 61 64 54  79 70 65 5f 7b 2f 7d 78  |s$@LoadType_{/}x|
00072ae0  78 78 7b 2f 7d 7b 66 7d  27 20 77 69 6c 6c 20 62  |xx{/}{f}' will b|
00072af0  65 20 75 73 65 64 2c 20  61 6e 64 20 69 74 20 69  |e used, and it i|
00072b00  73 20 70 6f 73 73 69 62  6c 65 20 74 68 61 74 20  |s possible that |
00072b10  28 6c 69 6b 65 20 3c 4f  53 5f 46 53 43 6f 6e 74  |(like <OS_FSCont|
00072b20  72 6f 6c 20 34 3d 3e 4f  53 5f 46 53 43 6f 6e 74  |rol 4=>OS_FSCont|
00072b30  72 6f 6c 34 3e 29 20 74  68 69 73 20 63 61 6c 6c  |rol4>) this call|
00072b40  20 6d 61 79 20 6e 6f 74  20 72 65 74 75 72 6e 2e  | may not return.|
00072b50  20 54 68 65 20 50 52 4d  73 20 61 72 65 20 69 6e  | The PRMs are in|
00072b60  63 6f 72 72 65 63 74 20  69 6e 20 74 68 65 69 72  |correct in their|
00072b70  20 73 74 61 74 65 6d 65  6e 74 20 74 68 61 74 20  | statement that |
00072b80  74 68 69 73 20 69 73 20  61 6e 20 65 72 72 6f 72  |this is an error|
00072b90  2e 0a 23 20 47 65 72 70  68 3e 20 41 6e 64 20 69  |..# Gerph> And i|
00072ba0  6e 63 6f 72 72 65 63 74  20 69 6e 20 73 74 61 74  |ncorrect in stat|
00072bb0  69 6e 67 20 28 32 2d 31  35 29 20 74 68 61 74 20  |ing (2-15) that |
00072bc0  74 68 65 20 43 4c 49 20  70 65 72 66 6f 72 6d 73  |the CLI performs|
00072bd0  20 74 68 65 20 65 78 70  61 6e 73 69 6f 6e 2e 0a  | the expansion..|
00072be0  23 20 20 20 20 20 20 20  20 41 6c 6c 20 69 6e 20  |#        All in |
00072bf0  61 6c 6c 2c 20 74 68 69  73 20 6f 76 65 72 73 69  |all, this oversi|
00072c00  67 68 74 20 74 6f 6f 6b  20 61 20 43 68 72 69 73  |ght took a Chris|
00072c10  20 61 6e 64 20 6d 65 20  61 62 6f 75 74 20 35 20  | and me about 5 |
00072c20  68 6f 75 72 73 20 74 6f  20 66 69 6e 64 21 0a 23  |hours to find!.#|
00072c30  20 20 20 20 20 20 20 20  54 68 69 73 20 66 65 61  |        This fea|
00072c40  74 75 72 65 20 69 73 20  70 72 65 73 65 6e 74 20  |ture is present |
00072c50  69 6e 20 52 4f 33 2e 31  20 61 6e 64 20 69 73 20  |in RO3.1 and is |
00072c60  73 74 69 6c 6c 20 69 6e  20 52 4f 33 2e 36 0a 0a  |still in RO3.6..|
00072c70  4e 6f 74 65 3a 20 62 33  31 20 69 73 20 6e 6f 74  |Note: b31 is not|
00072c80  20 69 6d 70 6c 65 6d 65  6e 74 65 64 20 62 65 66  | implemented bef|
00072c90  6f 72 65 20 28 61 6e 64  20 69 6e 63 6c 75 64 69  |ore (and includi|
00072ca0  6e 67 29 20 52 4f 33 2e  37 2e 0a 00 44 41 54 41  |ng) RO3.7...DATA|
00072cb0  04 02 00 00 4f 53 5f 46  69 6c 65 20 35 2c 31 33  |....OS_File 5,13|
00072cc0  2c 31 35 20 61 6e 64 20  31 37 0a 23 50 61 72 65  |,15 and 17.#Pare|
00072cd0  6e 74 20 4f 53 5f 46 69  6c 65 0a 3d 3e 09 52 30  |nt OS_File.=>.R0|
00072ce0  20 3d 09 35 2c 31 33 2c  31 35 20 6f 72 20 31 37  | =.5,13,15 or 17|
00072cf0  0a 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
00072d00  6f 20 66 69 6c 65 6e 61  6d 65 0a 09 20 09 69 66  |o filename.. .if|
00072d10  20 52 30 20 3d 20 35 20  3a 09 75 73 65 20 46 69  | R0 = 5 :.use Fi|
00072d20  6c 65 24 50 61 74 68 0a  09 20 09 69 66 20 52 30  |le$Path.. .if R0|
00072d30  20 3d 20 31 33 20 3a 09  52 34 20 3d 20 70 6f 69  | = 13 :.R4 = poi|
00072d40  6e 74 65 72 20 74 6f 20  70 61 74 68 20 73 74 72  |nter to path str|
00072d50  69 6e 67 0a 09 20 09 69  66 20 52 30 20 3d 20 31  |ing.. .if R0 = 1|
00072d60  35 20 3a 09 52 34 20 3d  20 70 6f 69 6e 74 65 72  |5 :.R4 = pointer|
00072d70  20 74 6f 20 70 61 74 68  20 76 61 72 69 61 62 6c  | to path variabl|
00072d80  65 0a 09 20 09 69 66 20  52 30 20 3d 20 31 37 20  |e.. .if R0 = 17 |
00072d90  3a 09 75 73 65 20 6e 6f  20 70 61 74 68 0a 0a 3c  |:.use no path..<|
00072da0  3d 09 52 30 20 3d 09 3c  6f 62 6a 65 63 74 20 74  |=.R0 =.<object t|
00072db0  79 70 65 3d 3e 66 73 79  73 5f 6f 62 6a 74 79 70  |ype=>fsys_objtyp|
00072dc0  65 3e 0a 09 52 32 20 3d  09 3c 6c 6f 61 64 20 61  |e>..R2 =.<load a|
00072dd0  64 64 72 65 73 73 3d 3e  66 73 79 73 5f 6c 6f 61  |ddress=>fsys_loa|
00072de0  64 65 78 65 63 3e 0a 09  52 33 20 3d 09 3c 65 78  |dexec>..R3 =.<ex|
00072df0  65 63 20 61 64 64 72 65  73 73 3d 3e 66 73 79 73  |ec address=>fsys|
00072e00  5f 6c 6f 61 64 65 78 65  63 3e 0a 09 52 34 20 3d  |_loadexec>..R4 =|
00072e10  09 6f 62 6a 65 63 74 20  6c 65 6e 67 74 68 0a 09  |.object length..|
00072e20  52 35 20 3d 09 3c 6f 62  6a 65 63 74 20 61 74 74  |R5 =.<object att|
00072e30  72 69 62 75 74 65 73 3d  3e 66 73 79 73 5f 6f 62  |ributes=>fsys_ob|
00072e40  6a 61 74 74 72 3e 0a 09  52 32 2d 52 35 20 63 6f  |jattr>..R2-R5 co|
00072e50  72 72 75 70 74 65 64 20  69 66 20 6f 62 6a 65 63  |rrupted if objec|
00072e60  74 20 6e 6f 74 20 66 6f  75 6e 64 0a 0a 54 68 69  |t not found..Thi|
00072e70  73 20 53 57 49 20 69 73  20 75 73 65 64 20 74 6f  |s SWI is used to|
00072e80  20 72 65 61 64 20 63 61  74 61 6c 6f 67 75 65 20  | read catalogue |
00072e90  69 6e 66 6f 72 6d 61 74  69 6f 6e 20 66 6f 72 20  |information for |
00072ea0  61 20 6e 61 6d 65 64 20  6f 62 6a 65 63 74 2e 0a  |a named object..|
00072eb0  44 41 54 41 aa 01 00 00  4f 53 5f 46 69 6c 65 20  |DATA....OS_File |
00072ec0  36 0a 23 50 61 72 65 6e  74 20 4f 53 5f 46 69 6c  |6.#Parent OS_Fil|
00072ed0  65 0a 3d 3e 09 52 30 20  3d 09 36 20 28 72 65 61  |e.=>.R0 =.6 (rea|
00072ee0  73 6f 6e 20 63 6f 64 65  29 0a 09 52 31 20 3d 09  |son code)..R1 =.|
00072ef0  70 6f 69 6e 74 65 72 20  74 6f 20 6e 6f 6e 2d 77  |pointer to non-w|
00072f00  69 6c 64 63 61 72 64 65  64 20 6f 62 6a 65 63 74  |ildcarded object|
00072f10  20 6e 61 6d 65 0a 0a 3c  3d 09 52 30 20 3d 09 3c  | name..<=.R0 =.<|
00072f20  6f 62 6a 65 63 74 20 74  79 70 65 3d 3e 66 73 79  |object type=>fsy|
00072f30  73 5f 6f 62 6a 74 79 70  65 3e 0a 09 52 32 20 3d  |s_objtype>..R2 =|
00072f40  09 3c 6c 6f 61 64 20 61  64 64 72 65 73 73 3d 3e  |.<load address=>|
00072f50  66 73 79 73 5f 6c 6f 61  64 65 78 65 63 3e 0a 09  |fsys_loadexec>..|
00072f60  52 33 20 3d 09 3c 65 78  65 63 20 61 64 64 72 65  |R3 =.<exec addre|
00072f70  73 73 3d 3e 66 73 79 73  5f 6c 6f 61 64 65 78 65  |ss=>fsys_loadexe|
00072f80  63 3e 0a 09 52 34 20 3d  09 6f 62 6a 65 63 74 20  |c>..R4 =.object |
00072f90  6c 65 6e 67 74 68 0a 09  52 35 20 3d 09 3c 6f 62  |length..R5 =.<ob|
00072fa0  6a 65 63 74 20 61 74 74  72 69 62 75 74 65 73 3d  |ject attributes=|
00072fb0  3e 66 73 79 73 5f 6f 62  6a 61 74 74 72 3e 0a 0a  |>fsys_objattr>..|
00072fc0  54 68 69 73 20 53 57 49  20 64 65 6c 65 74 65 73  |This SWI deletes|
00072fd0  20 61 20 6e 61 6d 65 64  20 6f 62 6a 65 63 74 2e  | a named object.|
00072fe0  20 49 74 20 69 73 20 6e  6f 74 20 61 6e 20 65 72  | It is not an er|
00072ff0  72 6f 72 20 69 66 20 74  68 65 20 6f 62 6a 65 63  |ror if the objec|
00073000  74 20 64 6f 65 73 20 6e  6f 74 20 65 78 69 73 74  |t does not exist|
00073010  2e 20 41 6e 20 65 72 72  6f 72 20 69 73 20 67 65  |. An error is ge|
00073020  6e 65 72 61 74 65 64 20  69 66 20 6f 62 6a 65 63  |nerated if objec|
00073030  74 20 69 73 20 6c 6f 63  6b 65 64 2c 20 6f 70 65  |t is locked, ope|
00073040  6e 20 6f 72 20 6e 6f 6e  2d 65 6d 70 74 79 20 64  |n or non-empty d|
00073050  69 72 65 63 74 6f 72 79  2e 0a 00 00 44 41 54 41  |irectory....DATA|
00073060  ff 00 00 00 4f 53 5f 46  69 6c 65 20 31 31 0a 23  |....OS_File 11.#|
00073070  50 61 72 65 6e 74 20 4f  53 5f 46 69 6c 65 0a 3d  |Parent OS_File.=|
00073080  3e 09 52 30 20 3d 09 31  31 20 28 72 65 61 73 6f  |>.R0 =.11 (reaso|
00073090  6e 20 63 6f 64 65 29 0a  09 52 31 20 3d 09 70 6f  |n code)..R1 =.po|
000730a0  69 6e 74 65 72 20 74 6f  20 6e 6f 6e 2d 77 69 6c  |inter to non-wil|
000730b0  64 63 61 72 64 65 64 20  6f 62 6a 65 63 74 20 6e  |dcarded object n|
000730c0  61 6d 65 0a 09 52 32 20  3d 09 3c 66 69 6c 65 20  |ame..R2 =.<file |
000730d0  74 79 70 65 3d 3e 46 69  6c 65 54 79 70 65 73 3a  |type=>FileTypes:|
000730e0  21 52 6f 6f 74 3e 0a 09  52 34 20 3d 09 30 0a 09  |!Root>..R4 =.0..|
000730f0  52 35 20 3d 09 73 69 7a  65 20 6f 66 20 66 69 6c  |R5 =.size of fil|
00073100  65 0a 09 0a 54 68 69 73  20 53 57 49 20 61 74 74  |e...This SWI att|
00073110  65 6d 70 74 73 20 74 6f  20 63 72 65 61 74 65 20  |empts to create |
00073120  61 20 73 74 61 6d 70 65  64 20 66 69 6c 65 20 6f  |a stamped file o|
00073130  66 20 61 20 67 69 76 65  6e 20 73 69 7a 65 20 77  |f a given size w|
00073140  69 74 68 20 61 20 70 61  72 74 69 63 75 6c 61 72  |ith a particular|
00073150  20 66 69 6c 65 20 74 79  70 65 2e 00 44 41 54 41  | file type..DATA|
00073160  26 01 00 00 4f 53 5f 46  69 6c 65 20 37 0a 23 50  |&...OS_File 7.#P|
00073170  61 72 65 6e 74 20 4f 53  5f 46 69 6c 65 0a 3d 3e  |arent OS_File.=>|
00073180  09 52 30 20 3d 09 37 20  28 72 65 61 73 6f 6e 20  |.R0 =.7 (reason |
00073190  63 6f 64 65 29 0a 09 52  31 20 3d 09 70 6f 69 6e  |code)..R1 =.poin|
000731a0  74 65 72 20 74 6f 20 6e  6f 6e 2d 77 69 6c 64 63  |ter to non-wildc|
000731b0  61 72 64 65 64 20 6f 62  6a 65 63 74 20 6e 61 6d  |arded object nam|
000731c0  65 0a 09 52 32 20 3d 09  3c 6c 6f 61 64 20 61 64  |e..R2 =.<load ad|
000731d0  64 72 65 73 73 3d 3e 66  73 79 73 5f 6c 6f 61 64  |dress=>fsys_load|
000731e0  65 78 65 63 3e 0a 09 52  33 20 3d 09 3c 65 78 65  |exec>..R3 =.<exe|
000731f0  63 20 61 64 64 72 65 73  73 3d 3e 66 73 79 73 5f  |c address=>fsys_|
00073200  6c 6f 61 64 65 78 65 63  3e 0a 09 52 34 20 3d 09  |loadexec>..R4 =.|
00073210  30 0a 09 52 35 20 3d 09  73 69 7a 65 20 6f 66 20  |0..R5 =.size of |
00073220  66 69 6c 65 0a 09 0a 54  68 69 73 20 53 57 49 20  |file...This SWI |
00073230  61 74 74 65 6d 70 74 73  20 74 6f 20 63 72 65 61  |attempts to crea|
00073240  74 65 20 61 6e 20 75 6e  2d 73 74 61 6d 70 65 64  |te an un-stamped|
00073250  20 66 69 6c 65 20 6f 66  20 61 20 67 69 76 65 6e  | file of a given|
00073260  20 73 69 7a 65 20 77 69  74 68 20 61 20 70 61 72  | size with a par|
00073270  74 69 63 75 6c 61 72 20  66 69 6c 65 20 74 79 70  |ticular file typ|
00073280  65 2e 00 00 44 41 54 41  ea 00 00 00 4f 53 5f 46  |e...DATA....OS_F|
00073290  69 6c 65 20 38 0a 23 50  61 72 65 6e 74 20 4f 53  |ile 8.#Parent OS|
000732a0  5f 46 69 6c 65 0a 3d 3e  09 52 30 20 3d 09 38 20  |_File.=>.R0 =.8 |
000732b0  28 72 65 61 73 6f 6e 20  63 6f 64 65 29 0a 09 52  |(reason code)..R|
000732c0  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 6e  |1 =.pointer to n|
000732d0  6f 6e 2d 77 69 6c 64 63  61 72 64 65 64 20 66 69  |on-wildcarded fi|
000732e0  6c 65 6e 61 6d 65 0a 09  52 34 20 3d 09 6e 75 6d  |lename..R4 =.num|
000732f0  62 65 72 20 6f 66 20 65  6e 74 72 69 65 73 2c 20  |ber of entries, |
00073300  6f 72 20 30 20 66 6f 72  20 64 65 66 61 75 6c 74  |or 0 for default|
00073310  0a 0a 54 68 69 73 20 53  57 49 20 69 73 20 75 73  |..This SWI is us|
00073320  65 64 20 74 6f 20 63 72  65 61 74 65 20 61 20 64  |ed to create a d|
00073330  69 72 65 63 74 6f 72 79  2e 20 49 74 20 69 73 20  |irectory. It is |
00073340  6e 6f 74 20 61 6e 20 65  72 72 6f 72 20 69 66 20  |not an error if |
00073350  74 68 65 20 64 69 72 65  63 74 6f 72 79 20 61 6c  |the directory al|
00073360  72 65 61 64 79 20 65 78  69 73 74 73 2e 0a 00 00  |ready exists....|
00073370  44 41 54 41 17 02 00 00  4f 53 5f 46 69 6c 65 20  |DATA....OS_File |
00073380  32 30 2c 20 32 31 2c 20  32 32 20 61 6e 64 20 32  |20, 21, 22 and 2|
00073390  33 0a 23 50 61 72 65 6e  74 20 4f 53 5f 46 69 6c  |3.#Parent OS_Fil|
000733a0  65 0a 52 65 61 64 20 63  61 74 61 6c 6f 67 75 65  |e.Read catalogue|
000733b0  20 69 6e 66 6f 20 66 6f  72 20 6e 61 6d 65 64 20  | info for named |
000733c0  73 74 61 6d 70 65 64 20  6f 62 6a 65 63 74 0a 0a  |stamped object..|
000733d0  3d 3e 09 52 30 20 3d 09  32 30 2c 20 32 31 2c 20  |=>.R0 =.20, 21, |
000733e0  32 32 20 6f 72 20 32 33  0a 09 52 31 20 3d 09 70  |22 or 23..R1 =.p|
000733f0  6f 69 6e 74 65 72 20 74  6f 20 66 69 6c 65 6e 61  |ointer to filena|
00073400  6d 65 0a 09 20 09 69 66  20 52 30 20 3d 20 32 30  |me.. .if R0 = 20|
00073410  20 3a 09 75 73 65 20 46  69 6c 65 24 50 61 74 68  | :.use File$Path|
00073420  0a 09 20 09 69 66 20 52  30 20 3d 20 32 31 20 3a  |.. .if R0 = 21 :|
00073430  09 52 34 20 3d 20 70 6f  69 6e 74 65 72 20 74 6f  |.R4 = pointer to|
00073440  20 70 61 74 68 20 73 74  72 69 6e 67 0a 09 20 09  | path string.. .|
00073450  69 66 20 52 30 20 3d 20  32 32 20 3a 09 52 34 20  |if R0 = 22 :.R4 |
00073460  3d 20 70 6f 69 6e 74 65  72 20 74 6f 20 70 61 74  |= pointer to pat|
00073470  68 20 76 61 72 69 61 62  6c 65 0a 09 20 09 69 66  |h variable.. .if|
00073480  20 52 30 20 3d 20 32 33  20 3a 09 75 73 65 20 6e  | R0 = 23 :.use n|
00073490  6f 20 70 61 74 68 0a 0a  3c 3d 09 52 30 20 3d 09  |o path..<=.R0 =.|
000734a0  3c 6f 62 6a 65 63 74 20  74 79 70 65 3d 3e 66 73  |<object type=>fs|
000734b0  79 73 5f 6f 62 6a 74 79  70 65 3e 0a 09 52 32 20  |ys_objtype>..R2 |
000734c0  3d 09 3c 6c 6f 61 64 20  61 64 64 72 65 73 73 3d  |=.<load address=|
000734d0  3e 66 73 79 73 5f 6c 6f  61 64 65 78 65 63 3e 0a  |>fsys_loadexec>.|
000734e0  09 52 33 20 3d 09 3c 65  78 65 63 20 61 64 64 72  |.R3 =.<exec addr|
000734f0  65 73 73 3d 3e 66 73 79  73 5f 6c 6f 61 64 65 78  |ess=>fsys_loadex|
00073500  65 63 3e 0a 09 52 34 20  3d 09 6f 62 6a 65 63 74  |ec>..R4 =.object|
00073510  20 6c 65 6e 67 74 68 0a  09 52 35 20 3d 09 3c 6f  | length..R5 =.<o|
00073520  62 6a 65 63 74 20 61 74  74 72 69 62 75 74 65 73  |bject attributes|
00073530  3d 3e 66 73 79 73 5f 6f  62 6a 61 74 74 72 3e 0a  |=>fsys_objattr>.|
00073540  09 52 36 20 3d 09 3c 66  69 6c 65 74 79 70 65 3d  |.R6 =.<filetype=|
00073550  3e 46 69 6c 65 74 79 70  65 73 3a 21 52 6f 6f 74  |>Filetypes:!Root|
00073560  3e 0a 09 0a 52 32 2d 52  35 20 63 6f 72 72 75 70  |>...R2-R5 corrup|
00073570  74 65 64 20 69 66 20 6f  62 6a 65 63 74 20 6e 6f  |ted if object no|
00073580  74 20 66 6f 75 6e 64 00  44 41 54 41 c8 01 00 00  |t found.DATA....|
00073590  4f 53 5f 46 69 6c 65 20  32 34 20 20 28 26 30 38  |OS_File 24  (&08|
000735a0  29 0a 23 50 61 72 65 6e  74 20 4f 53 5f 46 69 6c  |).#Parent OS_Fil|
000735b0  65 0a 3d 3e 09 52 30 20  3d 09 32 34 20 28 72 65  |e.=>.R0 =.24 (re|
000735c0  61 73 6f 6e 20 63 6f 64  65 29 0a 09 52 31 20 3d  |ason code)..R1 =|
000735d0  09 70 6f 69 6e 74 65 72  20 74 6f 20 66 69 6c 65  |.pointer to file|
000735e0  6e 61 6d 65 0a 3c 3d 09  52 32 20 3d 09 6e 61 74  |name.<=.R2 =.nat|
000735f0  75 72 61 6c 20 62 6c 6f  63 6b 20 73 69 7a 65 20  |ural block size |
00073600  69 6e 20 62 79 74 65 73  0a 0a 54 68 69 73 20 63  |in bytes..This c|
00073610  61 6c 6c 20 61 6c 6c 6f  77 73 20 79 6f 75 20 74  |all allows you t|
00073620  6f 20 66 69 6e 64 20 74  68 65 20 2f 6e 61 74 75  |o find the /natu|
00073630  72 61 6c 20 62 6c 6f 63  6b 20 73 69 7a 65 2f 20  |ral block size/ |
00073640  6f 66 20 61 20 67 69 76  65 6e 20 66 69 6c 65 2e  |of a given file.|
00073650  20 57 68 65 6e 20 79 6f  75 20 63 72 65 61 74 65  | When you create|
00073660  20 6f 72 20 65 78 74 65  6e 64 20 61 20 66 69 6c  | or extend a fil|
00073670  65 2c 20 64 69 73 63 20  73 70 61 63 65 20 63 61  |e, disc space ca|
00073680  6e 20 6f 6e 6c 79 20 62  65 20 61 6c 6c 6f 63 61  |n only be alloca|
00073690  74 65 64 20 69 6e 20 63  68 75 6e 6b 73 20 6f 66  |ted in chunks of|
000736a0  20 61 20 6d 69 6e 69 6d  75 6d 20 73 69 7a 65 20  | a minimum size |
000736b0  28 35 31 32 20 62 79 74  65 73 2c 20 66 6f 72 20  |(512 bytes, for |
000736c0  65 78 61 6d 70 6c 65 29  2e 20 49 66 20 79 6f 75  |example). If you|
000736d0  72 20 66 69 6c 65 20 69  73 20 6a 75 73 74 20 31  |r file is just 1|
000736e0  20 62 79 74 65 20 6c 6f  6e 67 20 66 6f 72 20 65  | byte long for e|
000736f0  78 61 6d 70 6c 65 2c 20  35 31 31 20 62 79 74 65  |xample, 511 byte|
00073700  73 20 6f 66 20 64 69 73  63 20 73 70 61 63 65 20  |s of disc space |
00073710  6d 61 79 20 68 61 76 65  20 74 6f 20 62 65 20 77  |may have to be w|
00073720  61 73 74 65 64 20 61 66  74 65 72 20 69 74 20 69  |asted after it i|
00073730  66 20 74 68 65 20 6e 61  74 75 72 61 6c 20 62 6c  |f the natural bl|
00073740  6f 63 6b 20 73 69 7a 65  20 69 73 20 35 31 32 2e  |ock size is 512.|
00073750  44 41 54 41 9e 01 00 00  4f 53 5f 46 69 6c 65 20  |DATA....OS_File |
00073760  31 39 0a 23 50 61 72 65  6e 74 20 4f 53 5f 46 69  |19.#Parent OS_Fi|
00073770  6c 65 0a 3d 3e 09 52 30  20 3d 09 31 39 20 28 72  |le.=>.R0 =.19 (r|
00073780  65 61 73 6f 6e 20 63 6f  64 65 29 0a 09 52 31 20  |eason code)..R1 |
00073790  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 66 69 6c  |=.pointer to fil|
000737a0  65 6e 61 6d 65 0a 09 52  32 20 3d 09 3c 6f 62 6a  |ename..R2 =.<obj|
000737b0  65 63 74 20 74 79 70 65  3d 3e 2e 74 79 70 65 3e  |ect type=>.type>|
000737c0  0a 3c 3d 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |.<=.R0 =.pointer|
000737d0  20 74 6f 20 3c 65 72 72  6f 72 20 62 6c 6f 63 6b  | to <error block|
000737e0  3d 3e 73 77 69 5f 65 72  72 6f 72 62 6c 6f 63 6b  |=>swi_errorblock|
000737f0  3e 0a 0a 54 68 69 73 20  53 57 49 20 77 69 6c 6c  |>..This SWI will|
00073800  20 67 65 6e 65 72 61 74  65 20 65 72 72 6f 72 20  | generate error |
00073810  62 61 73 65 64 20 6f 6e  20 66 69 6c 65 6e 61 6d  |based on filenam|
00073820  65 2e 0a 23 0a 23 53 75  62 70 61 67 65 20 74 79  |e..#.#Subpage ty|
00073830  70 65 0a 4f 53 5f 46 69  6c 65 20 47 65 6e 65 72  |pe.OS_File Gener|
00073840  61 74 65 20 65 72 72 72  6f 72 20 6d 65 73 73 61  |ate errror messa|
00073850  67 65 73 0a 52 32 09 45  72 72 6f 72 20 6d 65 73  |ges.R2.Error mes|
00073860  73 61 67 65 0a 23 6c 69  6e 65 0a 30 09 46 69 6c  |sage.#line.0.Fil|
00073870  65 20 27 7b 2f 7d 77 69  62 62 6c 65 7b 2f 7d 27  |e '{/}wibble{/}'|
00073880  20 6e 6f 74 20 66 6f 75  6e 64 0a 31 09 27 7b 2f  | not found.1.'{/|
00073890  7d 77 69 62 62 6c 65 7b  2f 7d 27 20 69 73 20 61  |}wibble{/}' is a|
000738a0  20 66 69 6c 65 0a 32 09  27 7b 2f 7d 77 69 62 62  | file.2.'{/}wibb|
000738b0  6c 65 7b 2f 7d 27 20 69  73 20 61 20 64 69 72 65  |le{/}' is a dire|
000738c0  63 74 6f 72 79 0a 26 31  30 30 09 44 69 72 65 63  |ctory.&100.Direc|
000738d0  74 6f 72 79 20 27 7b 2f  7d 77 69 62 62 6c 65 7b  |tory '{/}wibble{|
000738e0  2f 7d 27 20 6e 6f 74 20  66 6f 75 6e 64 0a 00 00  |/}' not found...|
000738f0  44 49 52 24 98 06 00 00  98 06 00 00 88 3f 07 00  |DIR$.........?..|
00073900  48 ff ff ff 5b 18 b1 26  6b 0b 00 00 13 00 00 00  |H...[..&k.......|
00073910  00 00 00 00 21 52 6f 6f  74 00 00 00 f4 4a 07 00  |....!Root....J..|
00073920  48 fd ff ff 91 70 18 1e  69 03 00 00 13 00 00 00  |H....p..i.......|
00073930  00 00 00 00 46 6c 61 67  73 00 00 00 60 4e 07 00  |....Flags...`N..|
00073940  48 fd ff ff fe 78 07 1c  83 00 00 00 13 00 00 00  |H....x..........|
00073950  00 00 00 00 44 65 73 63  72 69 70 74 6f 72 00 00  |....Descriptor..|
00073960  e4 4e 07 00 48 fd ff ff  b6 ef 14 1e 6f 01 00 00  |.N..H.......o...|
00073970  13 00 00 00 00 00 00 00  32 37 00 00 54 50 07 00  |........27..TP..|
00073980  48 fd ff ff 9a 84 15 1e  d5 01 00 00 13 00 00 00  |H...............|
00073990  00 00 00 00 32 38 00 00  2c 52 07 00 48 fd ff ff  |....28..,R..H...|
000739a0  bb 98 13 1e fd 00 00 00  13 00 00 00 00 00 00 00  |................|
000739b0  30 00 00 00 2c 53 07 00  48 fd ff ff 8a 9e 13 1e  |0...,S..H.......|
000739c0  4a 01 00 00 13 00 00 00  00 00 00 00 31 00 00 00  |J...........1...|
000739d0  78 54 07 00 48 fd ff ff  5a 0f fa 1b 1e 01 00 00  |xT..H...Z.......|
000739e0  13 00 00 00 00 00 00 00  31 38 00 00 98 55 07 00  |........18...U..|
000739f0  47 fd ff ff 31 24 ab cd  32 01 00 00 13 00 00 00  |G...1$..2.......|
00073a00  00 00 00 00 33 31 00 00  cc 56 07 00 48 fd ff ff  |....31...V..H...|
00073a10  52 d4 14 1e a3 03 00 00  13 00 00 00 00 00 00 00  |R...............|
00073a20  32 36 00 00 70 5a 07 00  48 fd ff ff 49 ca 05 1c  |26..pZ..H...I...|
00073a30  d5 01 00 00 13 00 00 00  00 00 00 00 32 35 00 00  |............25..|
00073a40  48 5c 07 00 48 fd ff ff  da 04 14 1e f6 02 00 00  |H\..H...........|
00073a50  13 00 00 00 00 00 00 00  31 33 00 00 40 5f 07 00  |........13..@_..|
00073a60  48 fd ff ff e9 89 3c 0e  c9 01 00 00 13 00 00 00  |H.....<.........|
00073a70  00 00 00 00 33 33 00 00  0c 61 07 00 48 fd ff ff  |....33...a..H...|
00073a80  24 7d 08 1c ec 02 00 00  13 00 00 00 00 00 00 00  |$}..............|
00073a90  33 37 00 00 f8 63 07 00  48 fd ff ff 24 a1 08 1c  |37...c..H...$...|
00073aa0  d9 01 00 00 13 00 00 00  00 00 00 00 33 38 00 00  |............38..|
00073ab0  d4 65 07 00 47 fd ff ff  b1 2e b8 cd b8 00 00 00  |.e..G...........|
00073ac0  13 00 00 00 00 00 00 00  33 39 00 00 8c 66 07 00  |........39...f..|
00073ad0  47 fd ff ff 77 24 3c 20  d3 00 00 00 13 00 00 00  |G...w$< ........|
00073ae0  00 00 00 00 34 30 00 00  60 67 07 00 47 fd ff ff  |....40..`g..G...|
00073af0  11 1a 3c 20 76 00 00 00  13 00 00 00 00 00 00 00  |..< v...........|
00073b00  34 33 00 00 d8 67 07 00  47 fd ff ff 4d 14 3c 20  |43...g..G...M.< |
00073b10  6d 00 00 00 13 00 00 00  00 00 00 00 34 34 00 00  |m...........44..|
00073b20  48 68 07 00 47 fd ff ff  d8 0e 3c 20 6e 00 00 00  |Hh..G.....< n...|
00073b30  13 00 00 00 00 00 00 00  34 35 00 00 b8 68 07 00  |........45...h..|
00073b40  48 fd ff ff 85 35 80 20  e2 00 00 00 13 00 00 00  |H....5. ........|
00073b50  00 00 00 00 34 37 00 00  9c 69 07 00 48 fd ff ff  |....47...i..H...|
00073b60  04 3a 80 20 eb 00 00 00  13 00 00 00 00 00 00 00  |.:. ............|
00073b70  34 38 00 00 88 6a 07 00  48 fd ff ff 6c 73 5d 25  |48...j..H...ls]%|
00073b80  80 01 00 00 13 00 00 00  00 00 00 00 34 39 00 00  |............49..|
00073b90  08 6c 07 00 47 fd ff ff  26 4f b8 cd e6 00 00 00  |.l..G...&O......|
00073ba0  13 00 00 00 00 00 00 00  35 30 00 00 f0 6c 07 00  |........50...l..|
00073bb0  48 fd ff ff 64 1f 82 20  1f 02 00 00 13 00 00 00  |H...d.. ........|
00073bc0  00 00 00 00 35 32 00 00  10 6f 07 00 47 fd ff ff  |....52...o..G...|
00073bd0  0e 3d ab cd 15 02 00 00  13 00 00 00 00 00 00 00  |.=..............|
00073be0  35 33 00 00 28 71 07 00  47 fd ff ff cb 63 b8 cd  |53..(q..G....c..|
00073bf0  b1 02 00 00 13 00 00 00  00 00 00 00 35 34 00 00  |............54..|
00073c00  dc 73 07 00 48 fd ff ff  2b cf 08 1c 2e 01 00 00  |.s..H...+.......|
00073c10  13 00 00 00 00 00 00 00  33 35 00 00 0c 75 07 00  |........35...u..|
00073c20  48 fd ff ff 6d 27 19 2a  e6 01 00 00 13 00 00 00  |H...m'.*........|
00073c30  00 00 00 00 34 00 00 00  f4 76 07 00 48 fd ff ff  |....4....v..H...|
00073c40  4e 9e f7 1b ed 00 00 00  13 00 00 00 00 00 00 00  |N...............|
00073c50  31 34 00 00 e4 77 07 00  48 fd ff ff ae 25 fa 1b  |14...w..H....%..|
00073c60  30 01 00 00 03 00 00 00  00 00 00 00 31 32 00 00  |0...........12..|
00073c70  14 79 07 00 48 fd ff ff  b3 03 fa 1b d0 00 00 00  |.y..H...........|
00073c80  03 00 00 00 00 00 00 00  31 36 00 00 e4 79 07 00  |........16...y..|
00073c90  48 fd ff ff 37 53 5e 25  2a 02 00 00 13 00 00 00  |H...7S^%*.......|
00073ca0  00 00 00 00 35 35 00 00  10 7c 07 00 47 fd ff ff  |....55...|..G...|
00073cb0  11 9e 9c ce 56 01 00 00  13 00 00 00 00 00 00 00  |....V...........|
00073cc0  35 36 00 00 68 7d 07 00  48 fd ff ff c1 fe 5d 25  |56..h}..H.....]%|
00073cd0  8a 01 00 00 13 00 00 00  00 00 00 00 35 37 00 00  |............57..|
00073ce0  f4 7e 07 00 48 fd ff ff  0e 98 09 1c 0d 01 00 00  |.~..H...........|
00073cf0  03 00 00 00 00 00 00 00  31 30 00 00 04 80 07 00  |........10......|
00073d00  48 fd ff ff 82 c2 13 1e  6a 02 00 00 13 00 00 00  |H.......j.......|
00073d10  00 00 00 00 31 31 00 00  70 82 07 00 48 fd ff ff  |....11..p...H...|
00073d20  c1 fb f9 1b 7f 01 00 00  13 00 00 00 00 00 00 00  |................|
00073d30  31 35 00 00 f0 83 07 00  48 fd ff ff 28 0a fa 1b  |15......H...(...|
00073d40  a0 01 00 00 03 00 00 00  00 00 00 00 31 37 00 00  |............17..|
00073d50  90 85 07 00 48 fd ff ff  c3 48 f9 1b 1f 01 00 00  |....H....H......|
00073d60  13 00 00 00 00 00 00 00  31 39 00 00 b0 86 07 00  |........19......|
00073d70  48 fd ff ff 3b 66 e5 1b  30 04 00 00 13 00 00 00  |H...;f..0.......|
00073d80  00 00 00 00 32 00 00 00  e0 8a 07 00 48 fd ff ff  |....2.......H...|
00073d90  08 45 14 1e 00 02 00 00  03 00 00 00 00 00 00 00  |.E..............|
00073da0  32 30 00 00 e0 8c 07 00  48 fd ff ff 02 7e 04 1c  |20......H....~..|
00073db0  c0 01 00 00 03 00 00 00  00 00 00 00 32 31 00 00  |............21..|
00073dc0  a0 8e 07 00 48 fd ff ff  7f 9d 04 1c 4e 01 00 00  |....H.......N...|
00073dd0  03 00 00 00 00 00 00 00  32 32 00 00 f0 8f 07 00  |........22......|
00073de0  48 fd ff ff f6 db 04 1c  fa 01 00 00 03 00 00 00  |H...............|
00073df0  00 00 00 00 32 33 00 00  ec 91 07 00 48 fd ff ff  |....23......H...|
00073e00  9b 18 6f 26 2e 01 00 00  13 00 00 00 00 00 00 00  |..o&............|
00073e10  32 34 00 00 1c 93 07 00  48 fd ff ff ad 96 07 1c  |24......H.......|
00073e20  25 02 00 00 03 00 00 00  00 00 00 00 33 30 00 00  |%...........30..|
00073e30  44 95 07 00 48 fd ff ff  b2 2a 08 1c b4 00 00 00  |D...H....*......|
00073e40  13 00 00 00 00 00 00 00  33 32 00 00 f8 95 07 00  |........32......|
00073e50  48 fd ff ff 8e c6 15 1e  e2 00 00 00 03 00 00 00  |H...............|
00073e60  00 00 00 00 33 36 00 00  dc 96 07 00 48 fd ff ff  |....36......H...|
00073e70  8e 0b 09 1c 5b 01 00 00  13 00 00 00 00 00 00 00  |....[...........|
00073e80  34 31 00 00 38 98 07 00  48 fd ff ff 8a 17 09 1c  |41..8...H.......|
00073e90  eb 00 00 00 13 00 00 00  00 00 00 00 34 32 00 00  |............42..|
00073ea0  24 99 07 00 48 fd ff ff  58 0b 0c 1c 17 02 00 00  |$...H...X.......|
00073eb0  13 00 00 00 00 00 00 00  34 36 00 00 3c 9b 07 00  |........46..<...|
00073ec0  48 fd ff ff 94 03 16 1e  f8 00 00 00 13 00 00 00  |H...............|
00073ed0  00 00 00 00 35 00 00 00  34 9c 07 00 48 fd ff ff  |....5...4...H...|
00073ee0  9a 95 17 1e 01 02 00 00  13 00 00 00 00 00 00 00  |................|
00073ef0  35 31 00 00 38 9e 07 00  48 fd ff ff 4e 51 18 1e  |51..8...H...NQ..|
00073f00  f3 00 00 00 13 00 00 00  00 00 00 00 36 00 00 00  |............6...|
00073f10  2c 9f 07 00 48 fd ff ff  8d 54 18 1e f7 00 00 00  |,...H....T......|
00073f20  13 00 00 00 00 00 00 00  37 00 00 00 24 a0 07 00  |........7...$...|
00073f30  48 fd ff ff 82 56 18 1e  e8 00 00 00 13 00 00 00  |H....V..........|
00073f40  00 00 00 00 38 00 00 00  0c a1 07 00 48 fd ff ff  |....8.......H...|
00073f50  85 58 18 1e b2 00 00 00  13 00 00 00 00 00 00 00  |.X..............|
00073f60  39 00 00 00 c0 a1 07 00  48 fd ff ff d1 eb 81 20  |9.......H...... |
00073f70  44 01 00 00 13 00 00 00  00 00 00 00 35 32 6f 62  |D...........52ob|
00073f80  6a 65 63 74 00 00 00 00  44 41 54 41 6b 0b 00 00  |ject....DATAk...|
00073f90  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 20 28 26  |OS_FSControl  (&|
00073fa0  32 39 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |29).#Parent OS_.|
00073fb0  54 68 69 73 20 53 57 49  20 63 6f 6e 74 72 6f 6c  |This SWI control|
00073fc0  73 20 74 68 65 20 66 69  6c 69 6e 67 20 73 79 73  |s the filing sys|
00073fd0  74 65 6d 20 6d 61 6e 61  67 65 72 20 61 6e 64 20  |tem manager and |
00073fe0  74 68 65 20 66 69 6c 69  6e 67 20 73 79 73 74 65  |the filing syste|
00073ff0  6d 73 20 74 68 65 6d 73  65 6c 76 65 73 2e 20 41  |ms themselves. A|
00074000  63 74 69 6f 6e 20 74 61  6b 65 6e 20 64 65 70 65  |ction taken depe|
00074010  6e 64 73 20 6f 6e 20 52  30 20 3a 0a 0a 23 49 6e  |nds on R0 :..#In|
00074020  64 65 6e 74 20 31 0a 23  54 61 62 6c 65 20 43 6f  |dent 1.#Table Co|
00074030  6c 75 6d 6e 73 20 32 0a  30 30 20 26 30 30 20 20  |lumns 2.00 &00  |
00074040  3c 53 65 74 20 63 75 72  72 65 6e 74 20 64 69 72  |<Set current dir|
00074050  3d 3e 6f 73 5f 66 73 63  6f 6e 74 72 6f 6c 30 3e  |=>os_fscontrol0>|
00074060  0a 30 31 20 26 30 31 20  20 3c 53 65 74 20 6c 69  |.01 &01  <Set li|
00074070  62 72 61 72 79 20 64 69  72 3d 3e 6f 73 5f 66 73  |brary dir=>os_fs|
00074080  63 6f 6e 74 72 6f 6c 31  3e 0a 30 32 20 26 30 32  |control1>.02 &02|
00074090  20 20 3c 49 6e 66 6f 72  6d 20 6f 66 20 73 74 61  |  <Inform of sta|
000740a0  72 74 20 6f 66 20 6e 65  77 20 61 70 70 3d 3e 6f  |rt of new app=>o|
000740b0  73 5f 66 73 63 6f 6e 74  72 6f 6c 32 3e 0a 30 33  |s_fscontrol2>.03|
000740c0  20 26 30 33 20 20 49 6e  74 65 72 6e 61 6c 0a 30  | &03  Internal.0|
000740d0  34 20 26 30 34 20 20 3c  52 75 6e 20 61 20 66 69  |4 &04  <Run a fi|
000740e0  6c 65 3d 3e 6f 73 5f 66  73 63 6f 6e 74 72 6f 6c  |le=>os_fscontrol|
000740f0  34 3e 0a 30 35 20 26 30  35 20 20 3c 43 61 74 61  |4>.05 &05  <Cata|
00074100  6c 6f 67 75 65 20 61 20  64 69 72 3d 3e 6f 73 5f  |logue a dir=>os_|
00074110  66 73 63 6f 6e 74 72 6f  6c 35 3e 0a 30 36 20 26  |fscontrol5>.06 &|
00074120  30 36 20 20 3c 45 78 61  6d 69 6e 65 20 63 75 72  |06  <Examine cur|
00074130  72 65 6e 74 20 64 69 72  3d 3e 6f 73 5f 66 73 63  |rent dir=>os_fsc|
00074140  6f 6e 74 72 6f 6c 36 3e  0a 30 37 20 26 30 37 20  |ontrol6>.07 &07 |
00074150  20 3c 43 61 74 61 6c 6f  67 75 65 20 6c 69 62 72  | <Catalogue libr|
00074160  61 72 79 3d 3e 6f 73 5f  66 73 63 6f 6e 74 72 6f  |ary=>os_fscontro|
00074170  6c 37 3e 0a 30 38 20 26  30 38 20 20 3c 45 78 61  |l7>.08 &08  <Exa|
00074180  6d 69 6e 65 20 6c 69 62  72 61 72 79 3d 3e 6f 73  |mine library=>os|
00074190  5f 66 73 63 6f 6e 74 72  6f 6c 38 3e 0a 30 39 20  |_fscontrol8>.09 |
000741a0  26 30 39 20 20 3c 45 78  61 6d 69 6e 65 20 6f 62  |&09  <Examine ob|
000741b0  6a 65 63 74 73 3d 3e 6f  73 5f 66 73 63 6f 6e 74  |jects=>os_fscont|
000741c0  72 6f 6c 39 3e 0a 31 30  20 26 30 41 20 20 3c 53  |rol9>.10 &0A  <S|
000741d0  65 74 20 46 53 20 6f 70  74 69 6f 6e 73 3d 3e 6f  |et FS options=>o|
000741e0  73 5f 66 73 63 6f 6e 74  72 6f 6c 31 30 3e 0a 31  |s_fscontrol10>.1|
000741f0  31 20 26 30 42 20 20 3c  53 65 74 20 74 65 6d 70  |1 &0B  <Set temp|
00074200  6f 72 61 72 79 20 46 53  3d 3e 6f 73 5f 66 73 63  |orary FS=>os_fsc|
00074210  6f 6e 74 72 6f 6c 31 31  3e 0a 31 32 20 26 30 43  |ontrol11>.12 &0C|
00074220  20 20 3c 41 64 64 20 61  20 46 53 3d 3e 6f 73 5f  |  <Add a FS=>os_|
00074230  66 73 63 6f 6e 74 72 6f  6c 31 32 3e 0a 31 33 20  |fscontrol12>.13 |
00074240  26 30 44 20 20 3c 43 68  65 63 6b 20 66 6f 72 20  |&0D  <Check for |
00074250  46 53 3d 3e 6f 73 5f 66  73 63 6f 6e 74 72 6f 6c  |FS=>os_fscontrol|
00074260  31 33 3e 0a 31 34 20 26  30 45 20 20 3c 53 65 6c  |13>.14 &0E  <Sel|
00074270  65 63 74 20 46 53 3d 3e  6f 73 5f 66 73 63 6f 6e  |ect FS=>os_fscon|
00074280  74 72 6f 6c 31 34 3e 0a  31 35 20 26 30 46 20 20  |trol14>.15 &0F  |
00074290  3c 42 6f 6f 74 20 66 72  6f 6d 20 46 53 3d 3e 6f  |<Boot from FS=>o|
000742a0  73 5f 66 73 63 6f 6e 74  72 6f 6c 31 35 3e 0a 31  |s_fscontrol15>.1|
000742b0  36 20 26 31 30 20 20 3c  52 65 6d 6f 76 65 20 46  |6 &10  <Remove F|
000742c0  53 3d 3e 6f 73 5f 66 73  63 6f 6e 74 72 6f 6c 31  |S=>os_fscontrol1|
000742d0  36 3e 0a 31 37 20 26 31  31 20 20 3c 41 64 64 20  |6>.17 &11  <Add |
000742e0  73 65 63 6f 6e 64 61 72  79 20 6d 6f 64 75 6c 65  |secondary module|
000742f0  3d 3e 6f 73 5f 66 73 63  6f 6e 74 72 6f 6c 31 37  |=>os_fscontrol17|
00074300  3e 0a 31 38 20 26 31 32  20 20 3c 43 6f 6e 76 65  |>.18 &12  <Conve|
00074310  72 74 20 66 69 6c 65 74  79 70 65 20 6e 75 6d 62  |rt filetype numb|
00074320  65 72 20 74 6f 20 6e 61  6d 65 3d 3e 4f 53 5f 46  |er to name=>OS_F|
00074330  53 43 6f 6e 74 72 6f 6c  31 38 3e 0a 31 39 20 26  |SControl18>.19 &|
00074340  31 33 20 20 3c 52 65 73  74 6f 72 65 20 63 75 72  |13  <Restore cur|
00074350  72 65 6e 74 20 46 53 3d  3e 6f 73 5f 66 73 63 6f  |rent FS=>os_fsco|
00074360  6e 74 72 6f 6c 31 39 3e  0a 32 30 20 26 31 34 20  |ntrol19>.20 &14 |
00074370  20 3c 52 65 61 64 20 6c  6f 63 61 74 69 6f 6e 20  | <Read location |
00074380  6f 66 20 74 65 6d 70 20  46 53 3d 3e 6f 73 5f 66  |of temp FS=>os_f|
00074390  73 63 6f 6e 74 72 6f 6c  32 30 3e 0a 32 31 20 26  |scontrol20>.21 &|
000743a0  31 35 20 20 3c 52 65 74  75 72 6e 20 61 20 66 69  |15  <Return a fi|
000743b0  6c 65 20 68 61 6e 64 6c  65 3d 3e 6f 73 5f 66 73  |le handle=>os_fs|
000743c0  63 6f 6e 74 72 6f 6c 32  31 3e 0a 32 32 20 26 31  |control21>.22 &1|
000743d0  36 20 20 3c 43 6c 6f 73  65 20 61 6c 6c 20 6f 70  |6  <Close all op|
000743e0  65 6e 20 66 69 6c 65 73  3d 3e 6f 73 5f 66 73 63  |en files=>os_fsc|
000743f0  6f 6e 74 72 6f 6c 32 32  3e 0a 32 33 20 26 31 37  |ontrol22>.23 &17|
00074400  20 20 3c 53 68 75 74 64  6f 77 6e 20 46 53 3d 3e  |  <Shutdown FS=>|
00074410  6f 73 5f 66 73 63 6f 6e  74 72 6f 6c 32 33 3e 0a  |os_fscontrol23>.|
00074420  32 34 20 26 31 38 20 20  3c 53 65 74 20 61 74 74  |24 &18  <Set att|
00074430  72 69 62 75 74 65 73 20  6f 66 20 6f 62 6a 65 63  |ributes of objec|
00074440  74 73 3d 3e 6f 73 5f 66  73 63 6f 6e 74 72 6f 6c  |ts=>os_fscontrol|
00074450  32 34 3e 0a 32 35 20 26  31 39 20 20 3c 52 65 6e  |24>.25 &19  <Ren|
00074460  61 6d 65 20 6f 62 6a 65  63 74 3d 3e 4f 53 5f 46  |ame object=>OS_F|
00074470  53 43 6f 6e 74 72 6f 6c  32 35 3e 0a 32 36 20 26  |SControl25>.26 &|
00074480  31 41 20 20 3c 43 6f 70  79 20 6f 62 6a 65 63 74  |1A  <Copy object|
00074490  73 3d 3e 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 32  |s=>OS_FSControl2|
000744a0  36 3e 0a 32 37 20 26 31  42 20 20 3c 57 69 70 65  |6>.27 &1B  <Wipe|
000744b0  20 6f 62 6a 65 63 74 73  3d 3e 4f 53 5f 46 53 43  | objects=>OS_FSC|
000744c0  6f 6e 74 72 6f 6c 32 37  3e 0a 32 38 20 26 31 43  |ontrol27>.28 &1C|
000744d0  20 20 3c 43 6f 75 6e 74  20 6f 62 6a 65 63 74 73  |  <Count objects|
000744e0  3d 3e 4f 53 5f 46 53 43  6f 6e 74 72 6f 6c 32 38  |=>OS_FSControl28|
000744f0  3e 0a 32 39 20 26 31 44  20 20 49 6e 74 65 72 6e  |>.29 &1D  Intern|
00074500  61 6c 0a 33 30 20 26 31  45 20 20 49 6e 74 65 72  |al.30 &1E  Inter|
00074510  6e 61 6c 0a 33 31 20 26  31 46 20 20 3c 43 6f 6e  |nal.31 &1F  <Con|
00074520  76 65 72 74 20 66 69 6c  65 74 79 70 65 20 6e 61  |vert filetype na|
00074530  6d 65 20 74 6f 20 6e 75  6d 62 65 72 3d 3e 4f 53  |me to number=>OS|
00074540  5f 46 53 43 6f 6e 74 72  6f 6c 33 31 3e 0a 33 32  |_FSControl31>.32|
00074550  20 26 32 30 20 20 3c 4f  75 74 70 75 74 20 6c 69  | &20  <Output li|
00074560  73 74 20 6f 66 20 6f 62  6a 20 6e 61 6d 65 73 20  |st of obj names |
00074570  26 20 69 6e 66 6f 3d 3e  4f 53 5f 46 53 43 6f 6e  |& info=>OS_FSCon|
00074580  74 72 6f 6c 33 32 3e 0a  33 33 20 26 32 31 20 20  |trol32>.33 &21  |
00074590  3c 43 6f 6e 76 65 72 74  20 61 20 66 69 6c 69 6e  |<Convert a filin|
000745a0  67 20 73 79 73 74 65 6d  20 6e 75 6d 62 65 72 20  |g system number |
000745b0  74 6f 20 61 20 6e 61 6d  65 3d 3e 4f 53 5f 46 53  |to a name=>OS_FS|
000745c0  43 6f 6e 74 72 6f 6c 33  33 3e 0a 33 34 20 26 32  |Control33>.34 &2|
000745d0  32 20 20 52 65 73 65 72  76 65 64 0a 33 35 20 26  |2  Reserved.35 &|
000745e0  32 33 20 20 3c 41 64 64  20 61 6e 20 69 6d 61 67  |23  <Add an imag|
000745f0  65 20 46 53 3d 3e 4f 53  5f 46 53 43 6f 6e 74 72  |e FS=>OS_FSContr|
00074600  6f 6c 33 35 3e 0a 33 36  20 26 32 34 20 20 3c 52  |ol35>.36 &24  <R|
00074610  65 6d 6f 76 65 20 61 6e  20 69 6d 61 67 65 20 46  |emove an image F|
00074620  53 3d 3e 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 33  |S=>OS_FSControl3|
00074630  36 3e 0a 33 37 20 26 32  35 20 20 3c 43 61 6e 6f  |6>.37 &25  <Cano|
00074640  6e 69 63 61 6c 69 73 65  20 70 61 74 68 3d 3e 4f  |nicalise path=>O|
00074650  53 5f 46 53 43 6f 6e 74  72 6f 6c 33 37 3e 0a 33  |S_FSControl37>.3|
00074660  38 20 26 32 36 20 20 3c  45 78 74 72 61 63 74 20  |8 &26  <Extract |
00074670  66 69 6c 65 74 79 70 65  20 66 72 6f 6d 20 66 69  |filetype from fi|
00074680  6c 65 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 3d 3e  |le information=>|
00074690  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 33 38 3e 0a  |OS_FSControl38>.|
000746a0  33 39 20 26 32 37 20 20  3c 53 65 74 20 55 73 65  |39 &27  <Set Use|
000746b0  72 20 52 6f 6f 74 20 44  69 72 65 63 74 6f 72 79  |r Root Directory|
000746c0  3d 3e 4f 53 5f 46 53 43  6f 6e 74 72 6f 6c 33 39  |=>OS_FSControl39|
000746d0  3e 0a 34 30 20 26 32 38  20 20 3c 53 77 61 70 20  |>.40 &28  <Swap |
000746e0  63 75 72 72 65 6e 74 20  61 6e 64 20 70 72 65 76  |current and prev|
000746f0  69 6f 75 73 20 64 69 72  65 63 74 6f 72 69 65 73  |ious directories|
00074700  3d 3e 4f 53 5f 46 53 43  6f 6e 74 72 6f 6c 34 30  |=>OS_FSControl40|
00074710  3e 0a 34 31 20 26 32 39  20 20 52 65 74 75 72 6e  |>.41 &29  Return|
00074720  20 64 65 66 65 63 74 20  6c 69 73 74 20 66 6f 72  | defect list for|
00074730  20 61 6e 20 69 6d 61 67  65 20 66 69 6c 65 0a 34  | an image file.4|
00074740  32 20 26 32 41 20 20 4d  61 70 20 6f 75 74 20 64  |2 &2A  Map out d|
00074750  65 66 65 63 74 20 66 72  6f 6d 20 61 6e 20 69 6d  |efect from an im|
00074760  61 67 65 20 66 69 6c 65  0a 34 33 20 26 32 42 20  |age file.43 &2B |
00074770  20 3c 55 6e 73 65 74 20  74 68 65 20 43 75 72 72  | <Unset the Curr|
00074780  65 6e 74 20 44 69 72 65  63 74 6f 72 79 3d 3e 4f  |ent Directory=>O|
00074790  53 5f 46 53 43 6f 6e 74  72 6f 6c 34 33 3e 0a 34  |S_FSControl43>.4|
000747a0  34 20 26 32 43 20 20 3c  55 6e 73 65 74 20 74 68  |4 &2C  <Unset th|
000747b0  65 20 55 73 65 72 20 52  6f 6f 74 20 44 69 72 65  |e User Root Dire|
000747c0  63 74 6f 72 79 3d 3e 4f  53 5f 46 53 43 6f 6e 74  |ctory=>OS_FSCont|
000747d0  72 6f 6c 34 34 3e 0a 34  35 20 26 32 44 20 20 3c  |rol44>.45 &2D  <|
000747e0  55 6e 73 65 74 20 74 68  65 20 4c 69 62 72 61 72  |Unset the Librar|
000747f0  79 20 44 69 72 65 63 74  6f 72 79 3d 3e 4f 53 5f  |y Directory=>OS_|
00074800  46 53 43 6f 6e 74 72 6f  6c 34 35 3e 0a 34 36 20  |FSControl45>.46 |
00074810  26 32 45 20 20 52 65 74  75 72 6e 20 2f 75 73 65  |&2E  Return /use|
00074820  64 20 73 70 61 63 65 20  6d 61 70 2f 20 6f 66 20  |d space map/ of |
00074830  69 6d 61 67 65 20 66 69  6c 65 0a 34 37 20 26 32  |image file.47 &2|
00074840  46 20 20 3c 52 65 61 64  20 62 6f 6f 74 20 6f 70  |F  <Read boot op|
00074850  74 69 6f 6e 20 66 6f 72  20 64 69 73 63 20 6f 72  |tion for disc or|
00074860  20 69 6d 61 67 65 20 66  69 6c 65 3d 3e 4f 53 5f  | image file=>OS_|
00074870  46 53 43 6f 6e 74 72 6f  6c 34 37 3e 0a 34 38 20  |FSControl47>.48 |
00074880  26 33 30 20 20 3c 57 72  69 74 65 20 62 6f 6f 74  |&30  <Write boot|
00074890  20 6f 70 74 69 6f 6e 20  66 6f 72 20 64 69 73 63  | option for disc|
000748a0  20 6f 72 20 69 6d 61 67  65 20 66 69 6c 65 3d 3e  | or image file=>|
000748b0  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 34 38 3e 0a  |OS_FSControl48>.|
000748c0  34 39 20 26 33 31 20 20  3c 52 65 61 64 20 66 72  |49 &31  <Read fr|
000748d0  65 65 20 73 70 61 63 65  20 66 6f 72 20 64 69 73  |ee space for dis|
000748e0  63 20 6f 72 20 69 6d 61  67 65 20 66 69 6c 65 3d  |c or image file=|
000748f0  3e 4f 53 5f 46 53 43 6f  6e 74 72 6f 6c 34 39 3e  |>OS_FSControl49>|
00074900  0a 35 30 20 26 33 32 20  20 3c 52 65 6e 61 6d 65  |.50 &32  <Rename|
00074910  20 64 69 73 63 20 6f 72  20 69 6d 61 67 65 20 66  | disc or image f|
00074920  69 6c 65 3d 3e 4f 53 5f  46 53 43 6f 6e 74 72 6f  |ile=>OS_FSContro|
00074930  6c 35 30 3e 0a 35 31 20  26 33 33 20 20 52 65 71  |l50>.51 &33  Req|
00074940  75 65 73 74 20 75 70 64  61 74 65 20 6f 66 20 69  |uest update of i|
00074950  6d 61 67 65 20 73 74 61  6d 70 0a 35 32 20 26 33  |mage stamp.52 &3|
00074960  34 20 20 3c 46 69 6e 64  20 6f 62 6a 65 63 74 20  |4  <Find object |
00074970  61 74 20 6f 66 66 73 65  74 20 77 69 74 68 69 6e  |at offset within|
00074980  20 69 6d 61 67 65 20 66  69 6c 65 3d 3e 4f 53 5f  | image file=>OS_|
00074990  46 53 43 6f 6e 74 72 6f  6c 35 32 3e 0a 35 33 20  |FSControl52>.53 |
000749a0  26 33 35 20 20 3c 53 65  74 20 67 69 76 65 6e 20  |&35  <Set given |
000749b0  64 69 72 65 63 74 6f 72  79 20 74 6f 20 70 61 74  |directory to pat|
000749c0  68 20 75 6e 63 68 65 63  6b 65 64 3d 3e 4f 53 5f  |h unchecked=>OS_|
000749d0  46 53 43 6f 6e 74 72 6f  6c 35 33 3e 0a 35 34 20  |FSControl53>.54 |
000749e0  26 33 36 20 20 3c 52 65  61 64 20 70 61 74 68 20  |&36  <Read path |
000749f0  6f 66 20 67 69 76 65 6e  20 64 69 72 65 63 74 6f  |of given directo|
00074a00  72 79 3d 3e 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |ry=>OS_FSControl|
00074a10  35 34 3e 0a 35 35 20 26  33 37 20 20 3c 52 65 61  |54>.55 &37  <Rea|
00074a20  64 20 66 72 65 65 20 73  70 61 63 65 20 66 6f 72  |d free space for|
00074a30  20 61 20 6c 61 72 67 65  20 64 69 73 63 20 6f 72  | a large disc or|
00074a40  20 69 6d 61 67 65 20 66  69 6c 65 3d 3e 4f 53 5f  | image file=>OS_|
00074a50  46 53 43 6f 6e 74 72 6f  6c 35 35 3e 0a 35 36 20  |FSControl55>.56 |
00074a60  26 33 38 20 20 3c 52 65  61 64 20 64 65 66 65 63  |&38  <Read defec|
00074a70  74 20 6c 69 73 74 20 66  6f 72 20 61 20 6c 61 72  |t list for a lar|
00074a80  67 65 20 64 69 73 63 20  6f 72 20 69 6d 61 67 65  |ge disc or image|
00074a90  20 66 69 6c 65 3d 3e 4f  53 5f 46 53 43 6f 6e 74  | file=>OS_FSCont|
00074aa0  72 6f 6c 35 36 3e 0a 35  37 20 26 33 39 20 20 3c  |rol56>.57 &39  <|
00074ab0  4d 61 70 20 6f 75 74 20  64 65 66 65 63 74 20 66  |Map out defect f|
00074ac0  72 6f 6d 20 6c 61 72 67  65 20 64 69 73 63 20 6f  |rom large disc o|
00074ad0  72 20 69 6d 61 67 65 3d  3e 4f 53 5f 46 53 43 6f  |r image=>OS_FSCo|
00074ae0  6e 74 72 6f 6c 35 37 3e  0a 23 45 6e 64 54 61 62  |ntrol57>.#EndTab|
00074af0  6c 65 0a 00 44 41 54 41  69 03 00 00 46 6c 61 67  |le..DATAi...Flag|
00074b00  73 20 66 6f 72 20 66 69  6c 65 20 6f 70 65 72 61  |s for file opera|
00074b10  74 69 6f 6e 73 0a 42 69  74 09 55 73 65 09 4d 65  |tions.Bit.Use.Me|
00074b20  61 6e 69 6e 67 0a 23 4c  69 6e 65 0a 30 09 43 57  |aning.#Line.0.CW|
00074b30  4e 09 7b 5f 7d 52 7b 5f  7d 65 63 75 72 73 65 0a  |N.{_}R{_}ecurse.|
00074b40  31 09 43 57 09 7b 5f 7d  46 7b 5f 7d 6f 72 63 65  |1.CW.{_}F{_}orce|
00074b50  0a 32 09 43 57 4e 09 47  69 76 65 6e 20 74 69 6d  |.2.CWN.Given tim|
00074b60  65 73 20 69 6e 20 62 6c  6f 63 6b 0a 33 09 43 57  |es in block.3.CW|
00074b70  4e 09 7b 5f 7d 43 7b 5f  7d 6f 6e 66 69 72 6d 20  |N.{_}C{_}onfirm |
00074b80  6f 70 65 72 61 74 69 6f  6e 0a 34 09 43 57 4e 09  |operation.4.CWN.|
00074b90  7b 5f 7d 56 7b 5f 7d 65  72 62 6f 73 65 0a 35 09  |{_}V{_}erbose.5.|
00074ba0  43 09 7b 5f 7d 51 7b 5f  7d 75 69 63 6b 20 28 75  |C.{_}Q{_}uick (u|
00074bb0  73 65 20 61 70 70 6c 69  63 61 74 69 6f 6e 20 61  |se application a|
00074bc0  72 65 61 20 2d 20 6e 6f  74 20 72 65 61 6c 6c 79  |rea - not really|
00074bd0  20 73 61 66 65 29 0a 36  09 43 09 7b 5f 7d 50 7b  | safe).6.C.{_}P{|
00074be0  5f 7d 72 6f 6d 70 74 20  66 6f 72 20 6e 65 77 20  |_}rompt for new |
00074bf0  64 69 73 63 0a 37 09 43  09 7b 5f 7d 44 7b 5f 7d  |disc.7.C.{_}D{_}|
00074c00  65 6c 65 74 65 20 61 66  74 65 72 20 63 6f 70 79  |elete after copy|
00074c10  0a 38 09 43 57 4e 09 41  6c 6c 6f 77 20 70 72 69  |.8.CWN.Allow pri|
00074c20  6e 74 69 6e 67 20 6f 66  20 70 72 6f 67 72 65 73  |nting of progres|
00074c30  73 0a 39 09 43 09 7b 5f  7d 41 7b 5f 7d 63 63 65  |s.9.C.{_}A{_}cce|
00074c40  73 73 20 61 74 74 72 69  62 75 74 65 73 20 61 73  |ss attributes as|
00074c50  20 69 6e 20 73 6f 75 72  63 65 0a 31 30 09 43 09  | in source.10.C.|
00074c60  7b 5f 7d 53 7b 5f 7d 74  61 6d 70 20 66 69 6c 65  |{_}S{_}tamp file|
00074c70  73 0a 31 31 09 43 09 53  7b 5f 7d 74 7b 5f 7d 72  |s.11.C.S{_}t{_}r|
00074c80  75 63 74 75 72 65 20 63  6f 70 79 20 6f 6e 6c 79  |ucture copy only|
00074c90  0a 31 32 09 43 09 7b 5f  7d 4e 7b 5f 7d 65 77 65  |.12.C.{_}N{_}ewe|
00074ca0  72 20 74 68 61 6e 20 64  65 73 74 69 6e 61 74 69  |r than destinati|
00074cb0  6f 6e 0a 31 33 09 43 09  3c 55 73 65 20 64 65 73  |on.13.C.<Use des|
00074cc0  63 72 69 70 74 6f 72 20  62 6c 6f 63 6b 3d 3e 4f  |criptor block=>O|
00074cd0  53 5f 46 53 43 6f 6e 74  72 6f 6c 44 65 73 63 72  |S_FSControlDescr|
00074ce0  69 70 74 6f 72 3e 20 61  73 20 77 6f 72 6b 73 70  |iptor> as worksp|
00074cf0  61 63 65 0a 31 34 09 43  09 7b 5f 7d 4c 7b 5f 7d  |ace.14.C.{_}L{_}|
00074d00  6f 6f 6b 20 61 74 20 64  65 73 74 69 6e 61 74 69  |ook at destinati|
00074d10  6f 6e 20 66 69 72 73 74  0a 0a 55 73 61 67 65 73  |on first..Usages|
00074d20  20 3a 0a 43 09 43 6f 70  79 0a 57 09 57 69 70 65  | :.C.Copy.W.Wipe|
00074d30  0a 4e 09 43 6f 75 6e 74  20 28 4e 75 6d 62 65 72  |.N.Count (Number|
00074d40  29 0a 0a 56 65 72 62 6f  73 65 20 77 69 6c 6c 20  |)..Verbose will |
00074d50  6c 69 73 74 20 65 76 65  72 79 20 66 69 6c 65 20  |list every file |
00074d60  69 74 20 70 65 72 66 6f  72 6d 73 20 61 6e 20 6f  |it performs an o|
00074d70  70 65 72 61 74 69 6f 6e  20 6f 6e 2e 0a 41 6c 6c  |peration on..All|
00074d80  6f 77 20 70 72 69 6e 74  69 6e 67 20 77 69 6c 6c  |ow printing will|
00074d90  20 70 72 69 6e 74 20 61  20 73 75 6d 6d 61 72 79  | print a summary|
00074da0  20 6f 66 20 65 76 65 72  79 20 64 69 72 65 63 74  | of every direct|
00074db0  6f 72 79 20 69 74 20 61  63 74 73 20 75 70 6f 6e  |ory it acts upon|
00074dc0  2e 0a 55 6e 64 65 72 6c  69 6e 65 64 20 6c 65 74  |..Underlined let|
00074dd0  74 65 72 73 20 73 68 6f  77 20 74 68 65 20 65 71  |ters show the eq|
00074de0  75 69 76 61 6c 65 6e 74  20 2a 43 6f 6d 6d 61 6e  |uivalent *Comman|
00074df0  64 20 6f 70 74 69 6f 6e  20 6c 65 74 74 65 72 73  |d option letters|
00074e00  2e 0a 23 20 4e 3e 20 44  6f 65 73 6e 27 74 20 77  |..# N> Doesn't w|
00074e10  6f 72 6b 20 61 73 20 77  65 6c 6c 20 77 69 74 68  |ork as well with|
00074e20  20 62 6f 6c 64 20 6f 72  20 69 74 61 6c 69 63 2e  | bold or italic.|
00074e30  0a 23 20 47 65 72 70 68  3e 20 4f 6b 2c 20 49 27  |.# Gerph> Ok, I'|
00074e40  6c 6c 20 6c 65 74 20 79  6f 75 20 6f 66 66 20 2d  |ll let you off -|
00074e50  20 49 20 61 67 72 65 65  20 3a 2d 29 0a 00 00 00  | I agree :-)....|
00074e60  44 41 54 41 83 00 00 00  46 69 6c 65 20 64 65 73  |DATA....File des|
00074e70  63 72 69 70 74 6f 72 20  62 6c 6f 63 6b 73 0a 23  |criptor blocks.#|
00074e80  50 61 72 65 6e 74 20 4f  53 5f 46 53 43 6f 6e 74  |Parent OS_FSCont|
00074e90  72 6f 6c 32 36 0a 23 57  72 61 70 20 6f 66 66 0a  |rol26.#Wrap off.|
00074ea0  4f 66 66 73 65 74 09 43  6f 6e 74 65 6e 74 73 0a  |Offset.Contents.|
00074eb0  23 4c 69 6e 65 0a 30 09  41 64 64 72 65 73 73 20  |#Line.0.Address |
00074ec0  6f 66 20 77 6f 72 6b 73  70 61 63 65 0a 34 09 4c  |of workspace.4.L|
00074ed0  65 6e 67 74 68 20 6f 66  20 77 6f 72 6b 73 70 61  |ength of workspa|
00074ee0  63 65 0a 00 44 41 54 41  6f 01 00 00 4f 53 5f 46  |ce..DATAo...OS_F|
00074ef0  53 43 6f 6e 74 72 6f 6c  20 32 37 20 20 28 26 32  |SControl 27  (&2|
00074f00  39 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 46 53  |9).#Parent OS_FS|
00074f10  43 6f 6e 74 72 6f 6c 0a  3d 3e 09 52 30 20 3d 09  |Control.=>.R0 =.|
00074f20  32 37 20 28 57 69 70 65  20 6f 62 6a 65 63 74 73  |27 (Wipe objects|
00074f30  29 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |)..R1 =.pointer |
00074f40  74 6f 20 77 69 6c 64 63  61 72 64 65 64 20 66 69  |to wildcarded fi|
00074f50  6c 65 6e 61 6d 65 20 6f  66 20 66 69 6c 65 73 20  |lename of files |
00074f60  74 6f 20 77 69 70 65 0a  09 52 33 20 3d 09 3c 66  |to wipe..R3 =.<f|
00074f70  6c 61 67 73 3d 3e 4f 53  5f 46 53 43 6f 6e 74 72  |lags=>OS_FSContr|
00074f80  6f 6c 46 6c 61 67 73 3e  0a 09 52 34 20 3d 09 3c  |olFlags>..R4 =.<|
00074f90  73 74 61 72 74 20 6c 6f  61 64 3d 3e 66 73 79 73  |start load=>fsys|
00074fa0  5f 6c 6f 61 64 65 78 65  63 3e 0a 09 52 35 20 3d  |_loadexec>..R5 =|
00074fb0  09 3c 73 74 61 72 74 20  65 78 65 63 3d 3e 66 73  |.<start exec=>fs|
00074fc0  79 73 5f 6c 6f 61 64 65  78 65 63 3e 0a 09 52 36  |ys_loadexec>..R6|
00074fd0  20 3d 09 3c 65 6e 64 20  6c 6f 61 64 3d 3e 66 73  | =.<end load=>fs|
00074fe0  79 73 5f 6c 6f 61 64 65  78 65 63 3e 0a 09 52 37  |ys_loadexec>..R7|
00074ff0  20 3d 09 3c 65 6e 64 20  65 78 65 63 3d 3e 66 73  | =.<end exec=>fs|
00075000  79 73 5f 6c 6f 61 64 65  78 65 63 3e 0a 0a 54 68  |ys_loadexec>..Th|
00075010  69 73 20 53 57 49 20 61  6c 6c 6f 77 73 20 79 6f  |is SWI allows yo|
00075020  75 20 74 6f 20 77 69 70  65 20 66 69 6c 65 73 20  |u to wipe files |
00075030  61 73 20 69 6e 20 74 68  65 20 7b 66 43 6f 64 65  |as in the {fCode|
00075040  7d 2a 57 69 70 65 7b 66  7d 20 63 6f 6d 6d 61 6e  |}*Wipe{f} comman|
00075050  64 2e 0a 00 44 41 54 41  d5 01 00 00 4f 53 5f 46  |d...DATA....OS_F|
00075060  53 43 6f 6e 74 72 6f 6c  20 32 38 20 20 28 26 32  |SControl 28  (&2|
00075070  39 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 46 53  |9).#Parent OS_FS|
00075080  43 6f 6e 74 72 6f 6c 0a  3d 3e 09 52 30 20 3d 09  |Control.=>.R0 =.|
00075090  32 38 20 28 43 6f 75 6e  74 20 6f 62 6a 65 63 74  |28 (Count object|
000750a0  73 29 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |s)..R1 =.pointer|
000750b0  20 74 6f 20 77 69 6c 64  63 61 72 64 65 64 20 66  | to wildcarded f|
000750c0  69 6c 65 6e 61 6d 65 20  6f 66 20 66 69 6c 65 73  |ilename of files|
000750d0  20 74 6f 20 63 6f 75 6e  74 0a 09 52 33 20 3d 09  | to count..R3 =.|
000750e0  3c 66 6c 61 67 73 3d 3e  4f 53 5f 46 53 43 6f 6e  |<flags=>OS_FSCon|
000750f0  74 72 6f 6c 46 6c 61 67  73 3e 0a 09 52 34 20 3d  |trolFlags>..R4 =|
00075100  09 3c 73 74 61 72 74 20  6c 6f 61 64 3d 3e 66 73  |.<start load=>fs|
00075110  79 73 5f 6c 6f 61 64 65  78 65 63 3e 0a 09 52 35  |ys_loadexec>..R5|
00075120  20 3d 09 3c 73 74 61 72  74 20 65 78 65 63 3d 3e  | =.<start exec=>|
00075130  66 73 79 73 5f 6c 6f 61  64 65 78 65 63 3e 0a 09  |fsys_loadexec>..|
00075140  52 36 20 3d 09 3c 65 6e  64 20 6c 6f 61 64 3d 3e  |R6 =.<end load=>|
00075150  66 73 79 73 5f 6c 6f 61  64 65 78 65 63 3e 0a 09  |fsys_loadexec>..|
00075160  52 37 20 3d 09 3c 65 6e  64 20 65 78 65 63 3d 3e  |R7 =.<end exec=>|
00075170  66 73 79 73 5f 6c 6f 61  64 65 78 65 63 3e 0a 09  |fsys_loadexec>..|
00075180  52 38 20 3d 09 3c 70 6f  69 6e 74 65 72 20 74 6f  |R8 =.<pointer to|
00075190  20 64 65 73 63 72 69 70  74 6f 72 3d 3e 4f 53 5f  | descriptor=>OS_|
000751a0  46 53 43 6f 6e 74 72 6f  6c 44 65 73 63 72 69 70  |FSControlDescrip|
000751b0  74 6f 72 3e 0a 0a 3c 3d  09 52 32 20 3d 09 74 6f  |tor>..<=.R2 =.to|
000751c0  74 61 6c 20 6c 65 6e 67  74 68 0a 09 52 33 20 3d  |tal length..R3 =|
000751d0  09 6e 75 6d 62 65 72 20  6f 66 20 66 69 6c 65 73  |.number of files|
000751e0  0a 0a 54 68 69 73 20 53  57 49 20 61 6c 6c 6f 77  |..This SWI allow|
000751f0  73 20 79 6f 75 20 74 6f  20 63 6f 75 6e 74 20 66  |s you to count f|
00075200  69 6c 65 73 20 61 73 20  69 6e 20 74 68 65 20 7b  |iles as in the {|
00075210  66 43 6f 64 65 7d 2a 43  6f 75 6e 74 7b 66 7d 20  |fCode}*Count{f} |
00075220  63 6f 6d 6d 61 6e 64 2e  0a 00 00 00 44 41 54 41  |command.....DATA|
00075230  fd 00 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |....OS_FSControl|
00075240  20 30 20 20 28 26 32 39  29 0a 23 50 61 72 65 6e  | 0  (&29).#Paren|
00075250  74 20 4f 53 5f 46 53 43  6f 6e 74 72 6f 6c 0a 3d  |t OS_FSControl.=|
00075260  3e 09 52 30 20 3d 09 30  20 28 53 65 74 20 63 75  |>.R0 =.0 (Set cu|
00075270  72 72 65 6e 74 20 64 69  72 65 63 74 6f 72 79 29  |rrent directory)|
00075280  0a 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
00075290  6f 20 28 77 69 6c 64 63  61 72 64 65 64 29 20 66  |o (wildcarded) f|
000752a0  69 6c 65 6e 61 6d 65 0a  0a 54 68 69 73 20 53 57  |ilename..This SW|
000752b0  49 20 73 65 74 73 20 63  75 72 72 65 6e 74 20 64  |I sets current d|
000752c0  69 72 65 63 74 6f 72 79  20 61 6e 64 20 66 69 6c  |irectory and fil|
000752d0  69 6e 67 20 73 79 73 74  65 6d 2e 20 49 66 20 61  |ing system. If a|
000752e0  20 70 6f 69 6e 74 65 72  20 74 6f 20 22 22 20 69  | pointer to "" i|
000752f0  73 20 75 73 65 64 2c 20  74 68 65 20 64 69 72 65  |s used, the dire|
00075300  63 74 6f 72 79 20 69 73  20 73 65 74 20 74 6f 20  |ctory is set to |
00075310  74 68 65 20 55 73 65 72  20 52 6f 6f 74 20 44 69  |the User Root Di|
00075320  72 65 63 74 6f 72 79 2e  0a 00 00 00 44 41 54 41  |rectory.....DATA|
00075330  4a 01 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |J...OS_FSControl|
00075340  20 31 20 20 28 26 32 39  29 0a 23 50 61 72 65 6e  | 1  (&29).#Paren|
00075350  74 20 4f 53 5f 46 53 43  6f 6e 74 72 6f 6c 0a 3d  |t OS_FSControl.=|
00075360  3e 09 52 30 20 3d 09 31  20 28 53 65 74 20 4c 69  |>.R0 =.1 (Set Li|
00075370  62 72 61 72 79 29 0a 09  52 31 20 3d 09 70 6f 69  |brary)..R1 =.poi|
00075380  6e 74 65 72 20 74 6f 20  28 77 69 6c 64 63 61 72  |nter to (wildcar|
00075390  64 65 64 29 20 66 69 6c  65 6e 61 6d 65 0a 0a 54  |ded) filename..T|
000753a0  68 69 73 20 53 57 49 20  73 65 74 73 20 74 68 65  |his SWI sets the|
000753b0  20 6c 69 62 72 61 72 79  20 64 69 72 65 63 74 6f  | library directo|
000753c0  72 79 20 61 6e 64 20 66  69 6c 69 6e 67 20 73 79  |ry and filing sy|
000753d0  73 74 65 6d 2e 20 49 66  20 61 20 70 6f 69 6e 74  |stem. If a point|
000753e0  65 72 20 74 6f 20 22 22  20 69 73 20 75 73 65 64  |er to "" is used|
000753f0  2c 20 74 68 65 20 64 65  66 61 75 6c 74 20 66 6f  |, the default fo|
00075400  72 20 74 68 69 73 20 66  69 6c 69 6e 67 20 73 79  |r this filing sy|
00075410  73 74 65 6d 20 69 73 20  75 73 65 64 2e 0a 0a 4f  |stem is used...O|
00075420  6e 20 46 69 6c 65 43 6f  72 65 2d 62 61 73 65 64  |n FileCore-based|
00075430  20 66 69 6c 69 6e 67 20  73 79 73 74 65 6d 73 2c  | filing systems,|
00075440  20 74 68 65 20 64 65 66  61 75 6c 74 20 69 73 20  | the default is |
00075450  74 6f 20 73 65 61 72 63  68 20 26 2e 4c 69 62 72  |to search &.Libr|
00075460  61 72 79 2c 20 24 2e 4c  69 62 72 61 72 79 20 61  |ary, $.Library a|
00075470  6e 64 20 40 2e 0a 00 00  44 41 54 41 1e 01 00 00  |nd @....DATA....|
00075480  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 31 38 20  |OS_FSControl 18 |
00075490  20 28 26 32 39 29 0a 23  50 61 72 65 6e 74 20 4f  | (&29).#Parent O|
000754a0  53 5f 46 53 43 6f 6e 74  72 6f 6c 0a 23 57 72 61  |S_FSControl.#Wra|
000754b0  70 20 6f 66 66 0a 3d 3e  09 52 30 20 3d 09 31 38  |p off.=>.R0 =.18|
000754c0  20 28 43 6f 6e 76 65 72  74 20 66 69 6c 65 74 79  | (Convert filety|
000754d0  70 65 20 6e 75 6d 62 65  72 20 74 6f 20 6e 61 6d  |pe number to nam|
000754e0  65 29 0a 09 52 32 20 3d  09 66 69 6c 65 74 79 70  |e)..R2 =.filetyp|
000754f0  65 20 28 62 69 74 73 20  30 2d 31 31 29 0a 23 57  |e (bits 0-11).#W|
00075500  72 61 70 0a 0a 3c 3d 09  52 32 20 3d 09 66 69 72  |rap..<=.R2 =.fir|
00075510  73 74 20 66 6f 75 72 20  63 68 61 72 73 0a 09 52  |st four chars..R|
00075520  33 20 3d 09 66 69 6e 61  6c 20 66 6f 75 72 20 63  |3 =.final four c|
00075530  68 61 72 73 0a 0a 54 68  69 73 20 53 57 49 20 69  |hars..This SWI i|
00075540  73 73 75 65 73 20 3c 53  65 72 76 69 63 65 5f 4c  |ssues <Service_L|
00075550  6f 6f 6b 75 70 46 69 6c  65 74 79 70 65 3d 3e 53  |ookupFiletype=>S|
00075560  65 72 76 69 63 65 5f 34  32 3e 2e 20 49 66 20 75  |ervice_42>. If u|
00075570  6e 63 6c 61 69 6d 65 64  2c 20 69 74 20 62 75 69  |nclaimed, it bui|
00075580  6c 64 73 20 61 20 64 65  66 61 75 6c 74 20 73 74  |lds a default st|
00075590  72 69 6e 67 2e 0a 00 00  44 41 54 41 32 01 00 00  |ring....DATA2...|
000755a0  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 33 31 20  |OS_FSControl 31 |
000755b0  20 28 26 32 39 29 0a 3d  3e 09 52 30 20 3d 09 33  | (&29).=>.R0 =.3|
000755c0  31 20 28 46 69 6c 65 74  79 70 65 20 6e 61 6d 65  |1 (Filetype name|
000755d0  20 74 6f 20 6e 75 6d 62  65 72 29 0a 09 52 31 20  | to number)..R1 |
000755e0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 66 69 6c  |=.pointer to fil|
000755f0  65 74 79 70 65 20 73 74  72 69 6e 67 0a 3c 3d 09  |etype string.<=.|
00075600  52 32 20 3d 09 3c 66 69  6c 65 74 79 70 65 3d 3e  |R2 =.<filetype=>|
00075610  46 69 6c 65 74 79 70 65  73 3a 21 52 6f 6f 74 3e  |Filetypes:!Root>|
00075620  0a 0a 54 68 69 73 20 53  57 49 20 63 6f 6e 76 65  |..This SWI conve|
00075630  72 74 73 20 73 74 72 69  6e 67 20 74 6f 20 61 20  |rts string to a |
00075640  66 69 6c 65 74 79 70 65  20 6e 75 6d 62 65 72 2e  |filetype number.|
00075650  20 54 68 65 20 73 74 72  69 6e 67 20 63 61 6e 20  | The string can |
00075660  62 65 20 61 20 66 69 6c  65 74 79 70 65 2d 6e 61  |be a filetype-na|
00075670  6d 65 20 28 22 4f 62 65  79 22 29 2c 20 6f 72 20  |me ("Obey"), or |
00075680  61 20 66 69 6c 65 74 79  70 65 2d 6e 75 6d 62 65  |a filetype-numbe|
00075690  72 20 28 22 46 45 42 22  29 0a 0a 41 6e 20 65 72  |r ("FEB")..An er|
000756a0  72 6f 72 20 69 73 20 67  65 6e 65 72 61 74 65 64  |ror is generated|
000756b0  20 69 66 20 63 6f 6e 76  65 72 73 69 6f 6e 20 69  | if conversion i|
000756c0  6d 70 6f 73 73 69 62 6c  65 2e 00 00 44 41 54 41  |mpossible...DATA|
000756d0  a3 03 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |....OS_FSControl|
000756e0  20 32 36 20 20 28 26 32  39 29 0a 23 50 61 72 65  | 26  (&29).#Pare|
000756f0  6e 74 20 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 0a  |nt OS_FSControl.|
00075700  3d 3e 09 52 30 20 3d 09  32 36 20 28 43 6f 70 79  |=>.R0 =.26 (Copy|
00075710  20 6f 62 6a 65 63 74 73  29 0a 09 52 31 20 3d 09  | objects)..R1 =.|
00075720  70 6f 69 6e 74 65 72 20  74 6f 20 77 69 6c 64 63  |pointer to wildc|
00075730  61 72 64 65 64 20 66 69  6c 65 6e 61 6d 65 20 6f  |arded filename o|
00075740  66 20 66 69 6c 65 73 20  74 6f 20 63 6f 70 79 0a  |f files to copy.|
00075750  09 52 32 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R2 =.pointer to|
00075760  20 64 65 73 74 69 6e 61  74 69 6f 6e 0a 09 52 33  | destination..R3|
00075770  20 3d 09 3c 66 6c 61 67  73 3d 3e 4f 53 5f 46 53  | =.<flags=>OS_FS|
00075780  43 6f 6e 74 72 6f 6c 46  6c 61 67 73 3e 0a 09 52  |ControlFlags>..R|
00075790  34 20 3d 09 3c 73 74 61  72 74 20 6c 6f 61 64 3d  |4 =.<start load=|
000757a0  3e 66 73 79 73 5f 6c 6f  61 64 65 78 65 63 3e 0a  |>fsys_loadexec>.|
000757b0  09 52 35 20 3d 09 3c 73  74 61 72 74 20 65 78 65  |.R5 =.<start exe|
000757c0  63 3d 3e 66 73 79 73 5f  6c 6f 61 64 65 78 65 63  |c=>fsys_loadexec|
000757d0  3e 0a 09 52 36 20 3d 09  3c 65 6e 64 20 6c 6f 61  |>..R6 =.<end loa|
000757e0  64 3d 3e 66 73 79 73 5f  6c 6f 61 64 65 78 65 63  |d=>fsys_loadexec|
000757f0  3e 0a 09 52 37 20 3d 09  3c 65 6e 64 20 65 78 65  |>..R7 =.<end exe|
00075800  63 3d 3e 66 73 79 73 5f  6c 6f 61 64 65 78 65 63  |c=>fsys_loadexec|
00075810  3e 0a 09 52 38 20 3d 09  3c 70 6f 69 6e 74 65 72  |>..R8 =.<pointer|
00075820  20 74 6f 20 64 65 73 63  72 69 70 74 6f 72 3d 3e  | to descriptor=>|
00075830  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 44 65 73 63  |OS_FSControlDesc|
00075840  72 69 70 74 6f 72 3e 0a  0a 54 68 69 73 20 53 57  |riptor>..This SW|
00075850  49 20 61 6c 6c 6f 77 73  20 79 6f 75 20 74 6f 20  |I allows you to |
00075860  63 6f 70 79 20 66 69 6c  65 73 20 66 72 6f 6d 20  |copy files from |
00075870  6f 6e 65 20 64 69 72 65  63 74 6f 72 79 20 74 6f  |one directory to|
00075880  20 61 6e 6f 74 68 65 72  20 6f 72 20 61 73 20 61  | another or as a|
00075890  20 6e 65 77 20 6e 61 6d  65 2e 20 54 68 65 20 64  | new name. The d|
000758a0  65 73 74 69 6e 61 74 69  6f 6e 20 6c 65 61 66 6e  |estination leafn|
000758b0  61 6d 65 20 6d 61 79 20  6e 6f 74 20 62 65 20 77  |ame may not be w|
000758c0  69 6c 64 63 61 72 64 65  64 2c 20 75 6e 6c 65 73  |ildcarded, unles|
000758d0  73 20 69 74 20 69 73 20  22 2a 22 20 73 69 67 6e  |s it is "*" sign|
000758e0  69 66 79 69 6e 67 20 22  74 61 6b 65 20 64 65 73  |ifying "take des|
000758f0  74 69 6e 61 74 69 6f 6e  20 6c 65 61 66 6e 61 6d  |tination leafnam|
00075900  65 20 66 72 6f 6d 20 73  6f 75 72 63 65 20 6c 65  |e from source le|
00075910  61 66 6e 61 6d 65 22 2e  0a 0a 49 74 20 69 73 20  |afname"...It is |
00075920  6e 6f 74 20 70 6f 73 73  69 62 6c 65 20 74 6f 20  |not possible to |
00075930  63 68 6f 6f 73 65 20 61  20 63 6f 6d 62 69 6e 61  |choose a combina|
00075940  74 69 6f 6e 20 6f 66 20  66 6c 61 67 73 20 74 6f  |tion of flags to|
00075950  20 70 65 72 66 6f 72 6d  20 74 68 65 20 73 61 6d  | perform the sam|
00075960  65 20 6f 70 65 72 61 74  69 6f 6e 20 61 73 20 22  |e operation as "|
00075970  6e 6f 20 63 6f 6e 66 69  72 6d 22 20 69 6e 20 74  |no confirm" in t|
00075980  68 65 20 64 65 73 6b 74  6f 70 2c 20 61 73 20 74  |he desktop, as t|
00075990  68 65 20 64 65 73 6b 74  6f 70 20 2a 77 69 6c 6c  |he desktop *will|
000759a0  2a 20 6f 76 65 72 77 72  69 74 65 20 66 69 6c 65  |* overwrite file|
000759b0  73 20 77 69 74 68 6f 75  74 20 63 6f 6e 66 69 72  |s without confir|
000759c0  6d 61 74 69 6f 6e 2c 20  62 75 74 20 77 6f 6e 27  |mation, but won'|
000759d0  74 20 66 6f 72 63 65 20  74 68 65 20 6f 76 65 72  |t force the over|
000759e0  77 72 69 74 69 6e 67 20  6f 66 20 6c 6f 63 6b 65  |writing of locke|
000759f0  64 20 66 69 6c 65 73 2c  20 77 68 65 72 65 61 73  |d files, whereas|
00075a00  20 74 68 69 73 20 53 57  49 20 77 69 6c 6c 20 6f  | this SWI will o|
00075a10  6e 6c 79 20 6f 76 65 72  77 72 69 74 65 20 66 69  |nly overwrite fi|
00075a20  6c 65 73 20 69 66 20 69  74 20 65 69 74 68 65 72  |les if it either|
00075a30  20 68 61 73 20 66 6f 72  63 65 20 73 65 74 2c 20  | has force set, |
00075a40  6f 72 20 63 6f 6e 66 69  72 6d 20 73 65 74 20 61  |or confirm set a|
00075a50  6e 64 20 67 65 74 73 20  70 6f 73 69 74 69 76 65  |nd gets positive|
00075a60  20 63 6f 6e 66 69 72 6d  61 74 69 6f 6e 2e 0a 00  | confirmation...|
00075a70  44 41 54 41 d5 01 00 00  4f 53 5f 46 53 43 6f 6e  |DATA....OS_FSCon|
00075a80  74 72 6f 6c 20 32 35 20  20 28 26 32 39 29 0a 23  |trol 25  (&29).#|
00075a90  50 61 72 65 6e 74 20 4f  53 5f 46 53 43 6f 6e 74  |Parent OS_FSCont|
00075aa0  72 6f 6c 0a 3d 3e 09 52  30 20 3d 09 32 35 20 28  |rol.=>.R0 =.25 (|
00075ab0  52 65 6e 61 6d 65 20 6f  62 6a 65 63 74 29 0a 09  |Rename object)..|
00075ac0  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
00075ad0  6f 72 69 67 69 6e 61 6c  20 66 69 6c 65 6e 61 6d  |original filenam|
00075ae0  65 0a 09 52 32 20 3d 09  70 6f 69 6e 74 65 72 20  |e..R2 =.pointer |
00075af0  74 6f 20 6e 65 77 20 66  69 6c 65 6e 61 6d 65 0a  |to new filename.|
00075b00  0a 54 68 69 73 20 53 57  49 20 61 6c 6c 6f 77 73  |.This SWI allows|
00075b10  20 79 6f 75 20 74 6f 20  72 65 6e 61 6d 65 20 61  | you to rename a|
00075b20  20 66 69 6c 65 2e 20 49  74 20 63 61 6e 20 6f 6e  | file. It can on|
00075b30  6c 79 20 72 65 6e 61 6d  65 20 6f 62 6a 65 63 74  |ly rename object|
00075b40  73 20 74 6f 20 6e 65 77  20 6e 61 6d 65 73 20 6f  |s to new names o|
00075b50  6e 20 74 68 65 20 73 61  6d 65 20 66 69 6c 69 6e  |n the same filin|
00075b60  67 20 73 79 73 74 65 6d  20 61 6e 64 20 64 69 73  |g system and dis|
00075b70  63 20 2d 20 6f 74 68 65  72 77 69 73 65 20 75 73  |c - otherwise us|
00075b80  65 20 3c 6d 6f 76 65 3d  3e 4f 53 5f 46 53 43 6f  |e <move=>OS_FSCo|
00075b90  6e 74 72 6f 6c 32 36 3e  20 28 63 6f 70 79 20 77  |ntrol26> (copy w|
00075ba0  69 74 68 20 64 65 6c 65  74 65 29 2e 20 54 68 65  |ith delete). The|
00075bb0  72 65 20 69 73 20 6e 6f  20 53 57 49 20 74 6f 20  |re is no SWI to |
00075bc0  64 69 73 63 6f 76 65 72  20 77 68 69 63 68 20 64  |discover which d|
00075bd0  69 73 63 20 61 20 67 69  76 65 6e 20 66 69 6c 65  |isc a given file|
00075be0  20 69 73 20 6f 6e 20 2d  20 68 65 6e 63 65 20 69  | is on - hence i|
00075bf0  74 20 69 73 20 69 6d 70  6f 73 73 69 62 6c 65 20  |t is impossible |
00075c00  74 6f 20 61 73 63 65 72  74 61 69 6e 20 77 68 65  |to ascertain whe|
00075c10  74 68 65 72 20 74 68 69  73 20 53 57 49 20 77 69  |ther this SWI wi|
00075c20  6c 6c 20 66 61 69 6c 20  77 69 74 68 6f 75 74 20  |ll fail without |
00075c30  61 63 74 75 61 6c 6c 79  20 63 61 6c 6c 69 6e 67  |actually calling|
00075c40  20 69 74 2e 0a 00 00 00  44 41 54 41 f6 02 00 00  | it.....DATA....|
00075c50  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 31 33 20  |OS_FSControl 13 |
00075c60  20 28 26 32 39 29 0a 23  50 61 72 65 6e 74 20 4f  | (&29).#Parent O|
00075c70  53 5f 46 53 43 6f 6e 74  72 6f 6c 0a 3d 3e 09 52  |S_FSControl.=>.R|
00075c80  30 20 3d 09 31 33 20 28  43 68 65 63 6b 20 66 6f  |0 =.13 (Check fo|
00075c90  72 20 70 72 65 73 65 6e  63 65 20 6f 66 20 46 53  |r presence of FS|
00075ca0  29 0a 09 52 31 20 3d 09  66 69 6c 69 6e 67 20 73  |)..R1 =.filing s|
00075cb0  79 73 74 65 6d 20 6e 75  6d 62 65 72 20 6f 72 20  |ystem number or |
00075cc0  70 6f 69 6e 74 65 72 20  74 6f 20 6e 61 6d 65 0a  |pointer to name.|
00075cd0  09 52 32 20 3d 09 64 65  70 65 6e 64 73 20 6f 6e  |.R2 =.depends on|
00075ce0  20 52 31 0a 0a 3c 3d 09  52 30 20 70 72 65 73 65  | R1..<=.R0 prese|
00075cf0  72 76 65 64 0a 09 52 31  20 3d 09 3c 66 69 6c 69  |rved..R1 =.<fili|
00075d00  6e 67 20 73 79 73 74 65  6d 20 6e 75 6d 62 65 72  |ng system number|
00075d10  3d 3e 66 73 79 73 5f 69  64 65 6e 74 3e 0a 09 52  |=>fsys_ident>..R|
00075d20  32 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 66  |2 =.pointer to f|
00075d30  69 6c 69 6e 67 20 73 79  73 74 65 6d 20 63 6f 6e  |iling system con|
00075d40  74 72 6f 6c 20 62 6c 6f  63 6b 20 6f 72 20 30 20  |trol block or 0 |
00075d50  69 66 20 6e 6f 74 20 66  6f 75 6e 64 0a 0a 54 68  |if not found..Th|
00075d60  65 20 46 53 20 6e 61 6d  65 20 6d 61 74 63 68 20  |e FS name match |
00075d70  69 73 20 63 61 73 65 2d  69 6e 73 65 6e 73 69 74  |is case-insensit|
00075d80  69 76 65 2e 20 49 66 20  52 32 20 69 73 20 30 2c  |ive. If R2 is 0,|
00075d90  20 74 68 65 20 46 53 20  6e 61 6d 65 20 69 73 20  | the FS name is |
00075da0  74 61 6b 65 6e 20 74 6f  20 62 65 20 74 65 72 6d  |taken to be term|
00075db0  69 6e 61 74 65 64 20 77  69 74 68 20 61 6e 79 20  |inated with any |
00075dc0  63 6f 6e 74 72 6f 6c 20  63 68 61 72 61 63 74 65  |control characte|
00075dd0  72 20 6f 72 20 74 68 65  20 63 68 61 72 61 63 74  |r or the charact|
00075de0  65 72 73 3a 20 22 23 22  2c 22 3a 22 20 6f 72 20  |ers: "#",":" or |
00075df0  22 2d 22 2e 20 49 66 20  52 32 20 69 73 20 6e 6f  |"-". If R2 is no|
00075e00  74 20 30 2c 20 74 68 65  6e 20 74 68 65 20 46 53  |t 0, then the FS|
00075e10  20 6e 61 6d 65 20 69 73  20 74 65 72 6d 69 6e 61  | name is termina|
00075e20  74 65 64 20 62 79 20 61  6e 79 20 63 6f 6e 74 72  |ted by any contr|
00075e30  6f 6c 20 63 68 61 72 61  63 74 65 72 2e 0a 0a 54  |ol character...T|
00075e40  68 65 20 46 53 20 63 6f  6e 74 72 6f 6c 20 62 6c  |he FS control bl|
00075e50  6f 63 6b 20 74 68 61 74  20 69 73 20 70 6f 69 6e  |ock that is poin|
00075e60  74 65 64 20 74 6f 20 62  79 20 52 32 20 6f 6e 20  |ted to by R2 on |
00075e70  65 78 69 74 20 69 73 20  66 6f 72 20 74 68 65 20  |exit is for the |
00075e80  69 6e 74 65 72 6e 61 6c  20 75 73 65 20 6f 66 20  |internal use of |
00075e90  46 69 6c 65 53 77 69 74  63 68 2c 20 61 6e 64 20  |FileSwitch, and |
00075ea0  79 6f 75 20 73 68 6f 75  6c 64 20 6e 6f 74 20 75  |you should not u|
00075eb0  73 65 20 6f 72 20 61 6c  74 65 72 20 69 74 2e 20  |se or alter it. |
00075ec0  59 6f 75 20 73 68 6f 75  6c 64 20 6f 6e 6c 79 20  |You should only |
00075ed0  74 65 73 74 20 52 32 20  66 6f 72 20 65 71 75 61  |test R2 for equa|
00075ee0  6c 69 74 79 20 28 6e 6f  74 20 30 29 2e 0a 0a 41  |lity (not 0)...A|
00075ef0  6e 20 65 72 72 6f 72 20  69 73 20 72 65 74 75 72  |n error is retur|
00075f00  6e 65 64 20 69 66 20 74  68 65 20 46 53 20 6e 61  |ned if the FS na|
00075f10  6d 65 20 63 6f 6e 74 61  69 6e 73 20 62 61 64 20  |me contains bad |
00075f20  63 68 61 72 73 20 6f 72  20 69 73 20 62 61 64 6c  |chars or is badl|
00075f30  79 20 74 65 72 6d 69 6e  61 74 65 64 2e 0a 00 00  |y terminated....|
00075f40  44 41 54 41 c9 01 00 00  4f 53 5f 46 53 43 6f 6e  |DATA....OS_FSCon|
00075f50  74 72 6f 6c 20 33 33 20  20 28 26 32 39 29 0a 23  |trol 33  (&29).#|
00075f60  50 61 72 65 6e 74 20 4f  53 5f 46 53 43 6f 6e 74  |Parent OS_FSCont|
00075f70  72 6f 6c 0a 3d 3e 09 52  30 20 3d 09 33 33 20 28  |rol.=>.R0 =.33 (|
00075f80  43 6f 6e 76 65 72 74 20  46 53 20 6e 75 6d 62 65  |Convert FS numbe|
00075f90  72 20 74 6f 20 6e 61 6d  65 29 0a 09 52 31 20 3d  |r to name)..R1 =|
00075fa0  09 3c 66 69 6c 69 6e 67  20 73 79 73 74 65 6d 20  |.<filing system |
00075fb0  6e 75 6d 62 65 72 3d 3e  66 73 79 73 5f 69 64 65  |number=>fsys_ide|
00075fc0  6e 74 3e 0a 09 52 32 20  3d 09 70 6f 69 6e 74 65  |nt>..R2 =.pointe|
00075fd0  72 20 74 6f 20 62 75 66  66 65 72 0a 09 52 33 20  |r to buffer..R3 |
00075fe0  3d 09 6c 65 6e 67 74 68  20 6f 66 20 62 75 66 66  |=.length of buff|
00075ff0  65 72 0a 0a 3c 3d 09 52  65 67 69 73 74 65 72 73  |er..<=.Registers|
00076000  20 70 72 65 73 65 72 76  65 64 0a 0a 54 68 69 73  | preserved..This|
00076010  20 63 61 6c 6c 20 63 6f  6e 76 65 72 74 73 20 74  | call converts t|
00076020  68 65 20 66 69 6c 69 6e  67 20 73 79 73 74 65 6d  |he filing system|
00076030  20 6e 75 6d 62 65 72 20  70 61 73 73 65 64 20 69  | number passed i|
00076040  6e 20 52 31 20 74 6f 20  61 20 66 69 6c 69 6e 67  |n R1 to a filing|
00076050  20 73 79 73 74 65 6d 20  6e 61 6d 65 2e 20 54 68  | system name. Th|
00076060  65 20 6e 61 6d 65 20 69  73 20 73 74 6f 72 65 64  |e name is stored|
00076070  20 69 6e 20 74 68 65 20  62 75 66 66 65 72 20 70  | in the buffer p|
00076080  6f 69 6e 74 65 64 20 74  6f 20 62 79 20 52 32 2c  |ointed to by R2,|
00076090  20 61 6e 64 20 69 73 20  6e 75 6c 6c 2d 74 65 72  | and is null-ter|
000760a0  6d 69 6e 61 74 65 64 2e  20 49 66 20 46 69 6c 65  |minated. If File|
000760b0  53 77 69 74 63 68 20 64  6f 65 73 20 6e 6f 74 20  |Switch does not |
000760c0  6b 6e 6f 77 20 6f 66 20  74 68 65 20 66 69 6c 69  |know of the fili|
000760d0  6e 67 20 73 79 73 74 65  6d 20 6e 75 6d 62 65 72  |ng system number|
000760e0  20 79 6f 75 20 70 61 73  73 20 69 74 2c 20 61 20  | you pass it, a |
000760f0  6e 75 6c 6c 20 73 74 72  69 6e 67 20 69 73 20 72  |null string is r|
00076100  65 74 75 72 6e 65 64 2e  0a 00 00 00 44 41 54 41  |eturned.....DATA|
00076110  ec 02 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |....OS_FSControl|
00076120  20 33 37 20 20 28 26 32  39 29 0a 23 50 61 72 65  | 37  (&29).#Pare|
00076130  6e 74 20 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 0a  |nt OS_FSControl.|
00076140  3d 3e 09 52 30 20 3d 09  33 37 20 28 43 61 6e 6f  |=>.R0 =.37 (Cano|
00076150  6e 69 63 61 6c 69 73 65  20 70 61 74 68 29 0a 09  |nicalise path)..|
00076160  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
00076170  70 61 74 68 6e 61 6d 65  20 74 6f 20 63 6f 6e 76  |pathname to conv|
00076180  65 72 74 0a 09 52 32 20  3d 09 70 6f 69 6e 74 65  |ert..R2 =.pointe|
00076190  72 20 74 6f 20 62 75 66  66 65 72 0a 09 52 33 20  |r to buffer..R3 |
000761a0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 6e 61 6d  |=.pointer to nam|
000761b0  65 20 6f 66 20 70 61 74  68 20 76 61 72 69 61 62  |e of path variab|
000761c0  6c 65 2c 20 6f 72 20 30  20 66 6f 72 20 6e 6f 6e  |le, or 0 for non|
000761d0  65 0a 09 52 34 20 3d 09  70 6f 69 6e 74 65 72 20  |e..R4 =.pointer |
000761e0  74 6f 20 63 74 72 6c 2d  74 65 72 6d 69 6e 61 74  |to ctrl-terminat|
000761f0  65 64 20 63 6f 6d 6d 61  20 73 65 70 65 72 61 74  |ed comma seperat|
00076200  65 64 20 70 61 74 68 20  73 74 72 69 6e 67 2c 20  |ed path string, |
00076210  6f 72 20 30 20 66 6f 72  20 6e 6f 6e 65 0a 09 52  |or 0 for none..R|
00076220  35 20 3d 09 62 75 66 66  65 72 20 73 69 7a 65 0a  |5 =.buffer size.|
00076230  3c 3d 09 52 35 20 3d 09  6e 75 6d 62 65 72 20 6f  |<=.R5 =.number o|
00076240  66 20 73 70 61 72 65 20  62 79 74 65 73 20 69 6e  |f spare bytes in|
00076250  20 62 75 66 66 65 72 20  28 69 6e 63 2e 20 74 65  | buffer (inc. te|
00076260  72 6d 29 0a 0a 54 68 69  73 20 63 61 6c 6c 20 74  |rm)..This call t|
00076270  61 6b 65 73 20 61 20 66  69 6c 65 6e 61 6d 65 20  |akes a filename |
00076280  28 77 68 69 63 68 20 6d  61 79 20 63 6f 6e 74 61  |(which may conta|
00076290  69 6e 20 77 69 6c 64 63  61 72 64 73 29 20 61 6e  |in wildcards) an|
000762a0  64 20 63 6f 6e 76 65 72  74 73 20 69 74 20 69 6e  |d converts it in|
000762b0  74 6f 20 61 20 63 6f 6d  70 6c 65 74 65 20 70 61  |to a complete pa|
000762c0  74 68 6d 61 6d 65 2c 20  69 6e 63 6c 75 64 69 6e  |thmame, includin|
000762d0  67 20 64 69 73 63 20 61  6e 64 20 64 69 72 65 63  |g disc and direc|
000762e0  74 6f 72 79 20 6e 61 6d  65 20 77 68 65 6e 20 6e  |tory name when n|
000762f0  6f 74 20 70 72 6f 76 69  64 65 64 2e 0a 0a 23 74  |ot provided...#t|
00076300  61 62 0a 2a 45 78 61 6d  70 6c 65 2a 3a 09 7b 46  |ab.*Example*:.{F|
00076310  63 6f 64 65 7d 66 72 65  64 7b 66 7d 20 6d 61 79  |code}fred{f} may|
00076320  20 63 6f 6e 76 65 72 74  20 74 6f 20 7b 46 63 6f  | convert to {Fco|
00076330  64 65 7d 53 43 53 49 3a  3a 47 61 6d 6d 61 2e 24  |de}SCSI::Gamma.$|
00076340  2e 55 74 69 6c 73 2e 46  72 65 64 7b 66 7d 0a 0a  |.Utils.Fred{f}..|
00076350  2a 4e 6f 74 65 2a 3a 09  49 66 20 79 6f 75 20 63  |*Note*:.If you c|
00076360  61 6c 6c 20 6f 6e 63 65  20 77 69 74 68 20 52 32  |all once with R2|
00076370  20 61 6e 64 20 52 35 20  73 65 74 20 74 6f 20 7a  | and R5 set to z|
00076380  65 72 6f 2c 20 52 35 20  77 69 6c 6c 20 72 65 74  |ero, R5 will ret|
00076390  75 72 6e 20 6d 69 6e 75  73 20 74 68 65 20 6e 75  |urn minus the nu|
000763a0  6d 62 65 72 20 6f 66 20  62 79 74 65 73 20 6e 65  |mber of bytes ne|
000763b0  65 64 65 64 2e 20 4e 6f  77 20 79 6f 75 20 63 61  |eded. Now you ca|
000763c0  6e 20 63 61 6c 6c 20 61  67 61 69 6e 20 68 61 76  |n call again hav|
000763d0  69 6e 67 20 61 6c 6c 6f  63 61 74 65 64 20 2d 52  |ing allocated -R|
000763e0  35 20 62 79 74 65 73 20  66 72 6f 6d 20 73 6f 6d  |5 bytes from som|
000763f0  65 77 68 65 72 65 2e 0a  44 41 54 41 d9 01 00 00  |ewhere..DATA....|
00076400  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 33 38 20  |OS_FSControl 38 |
00076410  20 28 26 32 39 29 0a 23  50 61 72 65 6e 74 20 4f  | (&29).#Parent O|
00076420  53 5f 46 53 43 6f 6e 74  72 6f 6c 0a 3d 3e 09 52  |S_FSControl.=>.R|
00076430  30 20 3d 09 33 38 20 28  45 78 74 72 61 63 74 20  |0 =.38 (Extract |
00076440  66 69 6c 65 74 79 70 65  20 66 72 6f 6d 20 66 69  |filetype from fi|
00076450  6c 65 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 29 0a  |le information).|
00076460  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
00076470  20 70 61 74 68 6e 61 6d  65 0a 09 52 32 20 3d 09  | pathname..R2 =.|
00076480  3c 6c 6f 61 64 20 61 64  64 72 65 73 73 3d 3e 66  |<load address=>f|
00076490  73 79 73 5f 6c 6f 61 64  65 78 65 63 3e 0a 09 52  |sys_loadexec>..R|
000764a0  33 20 3d 09 3c 65 78 65  63 20 61 64 64 72 65 73  |3 =.<exec addres|
000764b0  73 3d 3e 66 73 79 73 5f  6c 6f 61 64 65 78 65 63  |s=>fsys_loadexec|
000764c0  3e 0a 09 52 34 20 3d 09  6c 65 6e 67 74 68 0a 09  |>..R4 =.length..|
000764d0  52 35 20 3d 09 3c 41 74  74 72 69 62 75 74 65 73  |R5 =.<Attributes|
000764e0  3d 3e 66 73 79 73 5f 6f  62 6a 61 74 74 72 3e 0a  |=>fsys_objattr>.|
000764f0  09 52 36 20 3d 09 3c 4f  62 6a 65 63 74 20 74 79  |.R6 =.<Object ty|
00076500  70 65 3d 3e 66 73 79 73  5f 6f 62 6a 74 79 70 65  |pe=>fsys_objtype|
00076510  3e 0a 3c 3d 09 52 32 20  3d 09 3c 46 69 6c 65 20  |>.<=.R2 =.<File |
00076520  74 79 70 65 3d 3e 46 69  6c 65 54 79 70 65 73 3a  |type=>FileTypes:|
00076530  21 52 6f 6f 74 3e 20 6f  72 0a 09 20 09 2d 31 09  |!Root> or.. .-1.|
00076540  75 6e 74 79 70 65 64 0a  09 20 09 26 31 30 30 30  |untyped.. .&1000|
00076550  09 64 69 72 65 63 74 6f  72 79 0a 09 20 09 26 32  |.directory.. .&2|
00076560  30 30 30 09 61 70 70 6c  69 63 61 74 69 6f 6e 0a  |000.application.|
00076570  0a 53 75 70 70 6c 79 20  74 68 65 20 72 65 6c 65  |.Supply the rele|
00076580  76 61 6e 74 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  |vant information|
00076590  20 6f 6e 20 65 6e 74 72  79 20 61 6e 64 20 74 68  | on entry and th|
000765a0  69 73 20 63 61 6c 6c 20  77 69 6c 6c 20 72 65 74  |is call will ret|
000765b0  75 72 6e 20 74 68 65 20  66 69 6c 65 20 74 79 70  |urn the file typ|
000765c0  65 20 6f 66 20 74 68 65  20 6f 62 6a 65 63 74 2e  |e of the object.|
000765d0  0a 00 00 00 44 41 54 41  b8 00 00 00 4f 53 5f 46  |....DATA....OS_F|
000765e0  53 43 6f 6e 74 72 6f 6c  20 33 39 20 20 28 26 32  |SControl 39  (&2|
000765f0  39 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 46 53  |9).#Parent OS_FS|
00076600  43 6f 6e 74 72 6f 6c 0a  3d 3e 09 52 30 20 3d 09  |Control.=>.R0 =.|
00076610  33 39 20 28 53 65 74 20  55 52 44 29 0a 09 52 31  |39 (Set URD)..R1|
00076620  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 70 61  | =.pointer to pa|
00076630  74 68 6e 61 6d 65 0a 3c  3d 09 61 6c 6c 20 72 65  |thname.<=.all re|
00076640  67 69 73 74 65 72 73 20  70 72 65 73 65 72 76 65  |gisters preserve|
00076650  64 0a 0a 53 65 74 73 20  74 68 65 20 55 73 65 72  |d..Sets the User|
00076660  20 52 6f 6f 74 20 44 69  72 65 63 74 6f 72 79 20  | Root Directory |
00076670  28 55 52 44 29 20 74 6f  20 74 68 65 20 67 69 76  |(URD) to the giv|
00076680  65 6e 20 70 61 74 68 6e  61 6d 65 2e 44 41 54 41  |en pathname.DATA|
00076690  d3 00 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |....OS_FSControl|
000766a0  20 34 30 20 20 28 26 32  39 29 0a 3d 3e 09 52 30  | 40  (&29).=>.R0|
000766b0  20 3d 09 34 30 20 28 53  77 61 70 20 63 75 72 72  | =.40 (Swap curr|
000766c0  65 6e 74 20 61 6e 64 20  70 72 65 76 69 6f 75 73  |ent and previous|
000766d0  20 64 69 72 65 63 74 6f  72 69 65 73 29 0a 3c 3d  | directories).<=|
000766e0  09 52 65 67 69 73 74 65  72 73 20 70 72 65 73 65  |.Registers prese|
000766f0  72 76 65 64 0a 0a 50 65  72 66 6f 72 6d 73 20 74  |rved..Performs t|
00076700  68 65 20 65 71 75 69 76  61 6c 65 6e 74 20 6f 66  |he equivalent of|
00076710  20 7b 66 43 6f 64 65 7d  2a 42 61 63 6b 7b 66 7d  | {fCode}*Back{f}|
00076720  2c 20 69 2e 65 2e 20 73  77 61 70 73 20 74 68 65  |, i.e. swaps the|
00076730  20 70 72 65 76 69 6f 75  73 20 64 69 72 65 63 74  | previous direct|
00076740  6f 72 79 20 77 69 74 68  20 74 68 65 20 63 75 72  |ory with the cur|
00076750  72 65 6e 74 20 64 69 72  65 63 74 6f 72 79 2e 00  |rent directory..|
00076760  44 41 54 41 76 00 00 00  4f 53 5f 46 53 43 6f 6e  |DATAv...OS_FSCon|
00076770  74 72 6f 6c 20 34 33 20  20 28 26 32 39 29 0a 3d  |trol 43  (&29).=|
00076780  3e 09 52 30 20 3d 09 34  33 20 28 55 6e 73 65 74  |>.R0 =.43 (Unset|
00076790  20 43 53 44 29 0a 3c 3d  09 52 65 67 69 73 74 65  | CSD).<=.Registe|
000767a0  72 73 20 70 72 65 73 65  72 76 65 64 0a 0a 55 6e  |rs preserved..Un|
000767b0  73 65 74 73 20 74 68 65  20 43 75 72 72 65 6e 74  |sets the Current|
000767c0  6c 79 20 53 65 6c 65 63  74 65 64 20 44 69 72 65  |ly Selected Dire|
000767d0  63 74 6f 72 79 2e 00 00  44 41 54 41 6d 00 00 00  |ctory...DATAm...|
000767e0  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 34 34 20  |OS_FSControl 44 |
000767f0  20 28 26 32 39 29 0a 3d  3e 09 52 30 20 3d 09 34  | (&29).=>.R0 =.4|
00076800  34 20 28 55 6e 73 65 74  20 55 52 44 29 0a 3c 3d  |4 (Unset URD).<=|
00076810  09 52 65 67 69 73 74 65  72 73 20 70 72 65 73 65  |.Registers prese|
00076820  72 76 65 64 0a 0a 55 6e  73 65 74 73 20 74 68 65  |rved..Unsets the|
00076830  20 55 73 65 72 20 52 6f  6f 74 20 44 69 72 65 63  | User Root Direc|
00076840  74 6f 72 79 2e 00 00 00  44 41 54 41 6e 00 00 00  |tory....DATAn...|
00076850  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 34 35 20  |OS_FSControl 45 |
00076860  20 28 26 32 39 29 0a 3d  3e 09 52 30 20 3d 09 34  | (&29).=>.R0 =.4|
00076870  35 20 28 55 6e 73 65 74  20 4c 69 62 72 61 72 79  |5 (Unset Library|
00076880  29 0a 3c 3d 09 52 65 67  69 73 74 65 72 73 20 70  |).<=.Registers p|
00076890  72 65 73 65 72 76 65 64  0a 0a 55 6e 73 65 74 73  |reserved..Unsets|
000768a0  20 74 68 65 20 4c 69 62  72 61 72 79 20 44 69 72  | the Library Dir|
000768b0  65 63 74 6f 72 79 00 00  44 41 54 41 e2 00 00 00  |ectory..DATA....|
000768c0  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 34 37 20  |OS_FSControl 47 |
000768d0  20 28 26 32 39 29 0a 23  50 61 72 65 6e 74 20 4f  | (&29).#Parent O|
000768e0  53 5f 46 53 43 6f 6e 74  72 6f 6c 0a 3d 3e 09 52  |S_FSControl.=>.R|
000768f0  30 20 3d 09 34 37 20 28  52 65 61 64 20 62 6f 6f  |0 =.47 (Read boo|
00076900  74 20 6f 70 74 69 6f 6e  20 66 6f 72 20 64 69 73  |t option for dis|
00076910  63 20 6f 72 20 69 6d 61  67 65 29 0a 09 52 31 20  |c or image)..R1 |
00076920  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 6e 61 6d  |=.pointer to nam|
00076930  65 20 6f 66 20 6f 62 6a  65 63 74 0a 3c 3d 09 52  |e of object.<=.R|
00076940  30 2c 52 31 20 70 72 65  73 65 72 76 65 64 0a 09  |0,R1 preserved..|
00076950  52 32 20 3d 09 3c 62 6f  6f 74 20 6f 70 74 69 6f  |R2 =.<boot optio|
00076960  6e 3d 3e 66 73 79 73 5f  6f 70 74 34 3e 0a 0a 52  |n=>fsys_opt4>..R|
00076970  65 61 64 73 20 74 68 65  20 62 6f 6f 74 20 6f 70  |eads the boot op|
00076980  74 69 6f 6e 20 66 6f 72  20 61 20 64 69 73 63 20  |tion for a disc |
00076990  6f 72 20 69 6d 61 67 65  2e 0a 00 00 44 41 54 41  |or image....DATA|
000769a0  eb 00 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |....OS_FSControl|
000769b0  20 34 38 20 20 28 26 32  39 29 0a 23 50 61 72 65  | 48  (&29).#Pare|
000769c0  6e 74 20 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 0a  |nt OS_FSControl.|
000769d0  3d 3e 09 52 30 20 3d 09  34 38 20 28 57 72 69 74  |=>.R0 =.48 (Writ|
000769e0  65 20 62 6f 6f 74 20 6f  70 74 69 6f 6e 73 20 66  |e boot options f|
000769f0  6f 72 20 64 69 73 63 20  6f 72 20 69 6d 61 67 65  |or disc or image|
00076a00  29 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |)..R1 =.pointer |
00076a10  74 6f 20 6e 61 6d 65 20  6f 66 20 6f 62 6a 65 63  |to name of objec|
00076a20  74 0a 09 52 32 20 3d 09  6e 65 77 20 3c 62 6f 6f  |t..R2 =.new <boo|
00076a30  74 20 6f 70 74 69 6f 6e  3d 3e 66 73 79 73 5f 6f  |t option=>fsys_o|
00076a40  70 74 34 3e 0a 3c 3d 09  52 65 67 69 73 74 65 72  |pt4>.<=.Register|
00076a50  73 20 70 72 65 73 65 72  76 65 64 0a 0a 53 65 74  |s preserved..Set|
00076a60  73 20 74 68 65 20 62 6f  6f 74 20 6f 70 74 69 6f  |s the boot optio|
00076a70  6e 20 66 6f 72 20 61 20  64 69 73 63 20 6f 72 20  |n for a disc or |
00076a80  69 6d 61 67 65 2e 0a 00  44 41 54 41 80 01 00 00  |image...DATA....|
00076a90  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 34 39 20  |OS_FSControl 49 |
00076aa0  20 28 26 32 39 29 0a 23  50 61 72 65 6e 74 20 4f  | (&29).#Parent O|
00076ab0  53 5f 46 53 43 6f 6e 74  72 6f 6c 0a 3d 3e 09 52  |S_FSControl.=>.R|
00076ac0  30 20 3d 09 34 39 20 28  52 65 61 64 20 66 72 65  |0 =.49 (Read fre|
00076ad0  65 20 73 70 61 63 65 20  66 6f 72 20 64 69 73 63  |e space for disc|
00076ae0  20 6f 72 20 69 6d 61 67  65 20 66 69 6c 65 29 0a  | or image file).|
00076af0  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
00076b00  20 6e 61 6d 65 20 6f 66  20 6f 62 6a 65 63 74 0a  | name of object.|
00076b10  3c 3d 09 52 30 20 3d 09  66 72 65 65 20 73 70 61  |<=.R0 =.free spa|
00076b20  63 65 0a 09 52 31 20 3d  09 73 69 7a 65 20 6f 66  |ce..R1 =.size of|
00076b30  20 6c 61 72 67 65 73 74  20 6f 62 6a 65 63 74 20  | largest object |
00076b40  74 68 61 74 20 63 61 6e  20 62 65 20 63 72 65 61  |that can be crea|
00076b50  74 65 64 2e 0a 09 52 32  20 3d 09 73 69 7a 65 20  |ted...R2 =.size |
00076b60  6f 66 20 64 69 73 63 0a  0a 52 65 61 64 73 20 74  |of disc..Reads t|
00076b70  68 65 20 66 72 65 65 20  73 70 61 63 65 20 6f 6e  |he free space on|
00076b80  20 61 20 64 69 73 63 20  6f 72 20 69 6d 61 67 65  | a disc or image|
00076b90  20 63 6f 6e 74 61 69 6e  69 6e 67 20 61 20 6e 61  | containing a na|
00076ba0  6d 65 64 20 6f 62 6a 65  63 74 2e 20 46 6f 72 20  |med object. For |
00076bb0  6c 61 72 67 65 20 64 69  73 63 73 20 79 6f 75 20  |large discs you |
00076bc0  77 69 6c 6c 20 68 61 76  65 20 74 6f 20 63 61 6c  |will have to cal|
00076bd0  6c 20 3c 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 20  |l <OS_FSControl |
00076be0  35 35 3d 3e 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |55=>OS_FSControl|
00076bf0  35 35 3e 20 28 52 49 53  43 20 4f 53 20 33 2e 36  |55> (RISC OS 3.6|
00076c00  20 6f 6e 6c 79 29 2e 0a  44 41 54 41 e6 00 00 00  | only)..DATA....|
00076c10  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 35 30 20  |OS_FSControl 50 |
00076c20  20 28 26 32 39 29 0a 23  50 61 72 65 6e 74 20 4f  | (&29).#Parent O|
00076c30  53 5f 46 53 43 6f 6e 74  72 6f 6c 0a 3d 3e 09 52  |S_FSControl.=>.R|
00076c40  30 20 3d 09 35 30 20 28  52 65 6e 61 6d 65 20 64  |0 =.50 (Rename d|
00076c50  69 73 63 20 6f 66 20 69  6d 61 67 65 20 66 69 6c  |isc of image fil|
00076c60  65 29 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |e)..R1 =.pointer|
00076c70  20 74 6f 20 6e 61 6d 65  20 6f 66 20 6f 62 6a 65  | to name of obje|
00076c80  63 74 0a 09 52 32 20 3d  09 6e 65 77 20 64 69 73  |ct..R2 =.new dis|
00076c90  63 20 6e 61 6d 65 0a 3c  3d 09 61 6c 6c 20 72 65  |c name.<=.all re|
00076ca0  67 69 73 74 65 72 73 20  70 72 65 73 65 72 76 65  |gisters preserve|
00076cb0  64 0a 0a 52 65 6e 61 6d  65 73 20 74 68 65 20 64  |d..Renames the d|
00076cc0  69 73 63 20 6f 72 20 69  6d 61 67 65 20 66 69 6c  |isc or image fil|
00076cd0  65 20 63 6f 6e 74 61 69  6e 69 6e 67 20 74 68 65  |e containing the|
00076ce0  20 67 69 76 65 6e 20 6f  62 6a 65 63 74 2e 00 00  | given object...|
00076cf0  44 41 54 41 1f 02 00 00  4f 53 5f 46 53 43 6f 6e  |DATA....OS_FSCon|
00076d00  74 72 6f 6c 20 35 32 20  28 26 32 39 29 0a 23 50  |trol 52 (&29).#P|
00076d10  61 72 65 6e 74 20 4f 53  5f 46 53 43 6f 6e 74 72  |arent OS_FSContr|
00076d20  6f 6c 0a 3d 3e 09 52 30  20 3d 09 35 32 20 28 46  |ol.=>.R0 =.52 (F|
00076d30  69 6e 64 20 6f 62 6a 65  63 74 20 61 74 20 6f 66  |ind object at of|
00076d40  66 73 65 74 20 77 69 74  68 69 6e 20 69 6d 61 67  |fset within imag|
00076d50  65 20 66 69 6c 65 29 0a  09 52 31 20 3d 09 70 6f  |e file)..R1 =.po|
00076d60  69 6e 74 65 72 20 74 6f  20 6e 61 6d 65 20 6f 66  |inter to name of|
00076d70  20 69 6d 61 67 65 20 66  69 6c 65 20 6f 72 20 64  | image file or d|
00076d80  69 73 63 0a 09 52 32 20  3d 09 6f 66 66 73 65 74  |isc..R2 =.offset|
00076d90  20 69 6e 74 6f 20 69 6d  61 67 65 20 66 69 6c 65  | into image file|
00076da0  20 6f 72 20 64 69 73 63  0a 09 52 33 20 3d 09 70  | or disc..R3 =.p|
00076db0  6f 69 6e 74 65 72 20 74  6f 20 62 75 66 66 65 72  |ointer to buffer|
00076dc0  20 74 6f 20 72 65 63 65  69 76 65 20 6f 62 6a 65  | to receive obje|
00076dd0  63 74 20 6e 61 6d 65 0a  09 52 34 20 3d 09 62 75  |ct name..R4 =.bu|
00076de0  66 66 65 72 20 6c 65 6e  67 74 68 0a 3c 3d 09 42  |ffer length.<=.B|
00076df0  75 66 66 65 72 20 63 6f  6e 74 61 69 6e 73 20 6f  |uffer contains o|
00076e00  62 6a 65 63 74 20 6e 61  6d 65 20 28 6d 61 79 20  |bject name (may |
00076e10  62 65 20 63 6f 72 72 75  70 74 65 64 20 69 66 20  |be corrupted if |
00076e20  6e 6f 74 20 66 6f 75 6e  64 29 0a 09 52 32 20 3d  |not found)..R2 =|
00076e30  09 3c 4f 62 6a 65 63 74  20 74 79 70 65 3d 3e 4f  |.<Object type=>O|
00076e40  53 5f 46 53 43 6f 6e 74  72 6f 6c 35 32 6f 62 6a  |S_FSControl52obj|
00076e50  65 63 74 3e 0a 09 4f 74  68 65 72 20 72 65 67 69  |ect>..Other regi|
00076e60  73 74 65 72 73 20 70 72  65 73 65 72 76 65 64 0a  |sters preserved.|
00076e70  0a 54 68 69 73 20 63 61  6c 6c 20 73 63 61 6e 73  |.This call scans|
00076e80  20 61 20 64 69 73 63 20  6f 72 20 69 6d 61 67 65  | a disc or image|
00076e90  20 66 69 6c 65 20 74 6f  20 66 69 6e 64 20 77 68  | file to find wh|
00076ea0  69 63 68 20 6f 62 6a 65  63 74 20 6f 63 63 75 70  |ich object occup|
00076eb0  69 65 73 20 61 20 70 61  72 74 69 63 75 6c 61 72  |ies a particular|
00076ec0  20 64 69 73 63 20 61 64  64 72 65 73 73 2e 20 54  | disc address. T|
00076ed0  68 69 73 20 69 73 20 75  73 65 66 75 6c 20 69 6e  |his is useful in|
00076ee0  20 74 72 79 69 6e 67 20  74 6f 20 72 65 63 6f 76  | trying to recov|
00076ef0  65 72 20 66 69 6c 65 73  2c 20 6f 72 20 6d 61 70  |er files, or map|
00076f00  20 6f 75 74 20 61 20 64  65 66 65 63 74 2e 0a 00  | out a defect...|
00076f10  44 41 54 41 15 02 00 00  4f 53 5f 46 53 43 6f 6e  |DATA....OS_FSCon|
00076f20  74 72 6f 6c 20 35 33 20  20 28 26 32 39 29 0a 23  |trol 53  (&29).#|
00076f30  50 61 72 65 6e 74 20 4f  53 5f 46 53 43 6f 6e 74  |Parent OS_FSCont|
00076f40  72 6f 6c 0a 3d 3e 09 52  30 20 3d 09 35 33 20 28  |rol.=>.R0 =.53 (|
00076f50  53 65 74 20 67 69 76 65  6e 20 64 69 72 65 63 74  |Set given direct|
00076f60  6f 72 79 20 74 6f 20 70  61 74 68 20 2d 20 75 6e  |ory to path - un|
00076f70  63 68 65 63 6b 65 64 29  0a 09 52 31 20 3d 09 70  |checked)..R1 =.p|
00076f80  6f 69 6e 74 65 72 20 74  6f 20 6e 65 77 20 70 61  |ointer to new pa|
00076f90  74 68 0a 09 52 32 20 3d  09 3c 64 69 72 65 63 74  |th..R2 =.<direct|
00076fa0  6f 72 79 20 74 6f 20 73  65 74 3d 3e 2e 64 69 72  |ory to set=>.dir|
00076fb0  74 79 70 65 3e 0a 09 52  33 20 3d 09 70 6f 69 6e  |type>..R3 =.poin|
00076fc0  74 65 72 20 74 6f 20 6e  61 6d 65 20 6f 66 20 66  |ter to name of f|
00076fd0  69 6c 69 6e 67 20 73 79  73 74 65 6d 0a 09 52 36  |iling system..R6|
00076fe0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 73 70  | =.pointer to sp|
00076ff0  65 63 69 61 6c 20 66 69  65 6c 64 20 28 6f 72 20  |ecial field (or |
00077000  30 20 66 6f 72 20 6e 6f  6e 65 29 0a 3c 3d 09 61  |0 for none).<=.a|
00077010  6c 6c 20 72 65 67 69 73  74 65 72 73 20 70 72 65  |ll registers pre|
00077020  73 65 72 76 65 64 0a 0a  54 68 69 73 20 63 61 6c  |served..This cal|
00077030  6c 20 73 65 74 73 20 61  20 64 69 72 65 63 74 6f  |l sets a directo|
00077040  72 79 20 74 6f 20 61 20  67 69 76 65 6e 20 70 61  |ry to a given pa|
00077050  74 68 20 77 69 74 68 6f  75 74 20 63 68 65 63 6b  |th without check|
00077060  69 6e 67 20 69 66 20 74  68 65 20 70 61 74 68 20  |ing if the path |
00077070  69 73 20 6f 6b 61 79 2e  0a 23 53 75 62 70 61 67  |is okay..#Subpag|
00077080  65 20 64 69 72 74 79 70  65 0a 44 69 72 65 63 74  |e dirtype.Direct|
00077090  6f 72 79 20 74 79 70 65  73 0a 5c 23 09 4d 65 61  |ory types.\#.Mea|
000770a0  6e 69 6e 67 0a 23 6c 69  6e 65 0a 30 09 43 53 44  |ning.#line.0.CSD|
000770b0  20 28 43 75 72 72 65 6e  74 6c 79 20 53 65 6c 65  | (Currently Sele|
000770c0  63 74 65 64 20 44 69 72  65 63 74 6f 72 79 29 0a  |cted Directory).|
000770d0  31 09 50 53 44 20 28 50  72 65 76 69 6f 75 73 6c  |1.PSD (Previousl|
000770e0  79 20 53 65 6c 65 63 74  65 64 20 44 69 72 65 63  |y Selected Direc|
000770f0  74 6f 72 79 29 0a 32 09  55 52 44 20 28 55 73 65  |tory).2.URD (Use|
00077100  72 20 52 6f 6f 74 20 44  69 72 65 63 74 6f 72 79  |r Root Directory|
00077110  29 0a 33 09 4c 69 62 72  61 72 79 20 44 69 72 65  |).3.Library Dire|
00077120  63 74 6f 72 79 00 00 00  44 41 54 41 b1 02 00 00  |ctory...DATA....|
00077130  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 35 34 20  |OS_FSControl 54 |
00077140  20 28 26 32 39 29 0a 23  50 61 72 65 6e 74 20 4f  | (&29).#Parent O|
00077150  53 5f 46 53 43 6f 6e 74  72 6f 6c 0a 3d 3e 09 52  |S_FSControl.=>.R|
00077160  30 20 3d 09 35 34 20 28  52 65 61 64 20 70 61 74  |0 =.54 (Read pat|
00077170  68 20 6f 66 20 67 69 76  65 6e 20 64 69 72 65 63  |h of given direc|
00077180  74 6f 72 79 29 0a 09 52  31 20 3d 09 70 6f 69 6e  |tory)..R1 =.poin|
00077190  74 65 72 20 74 6f 20 62  75 66 66 65 72 20 74 6f  |ter to buffer to|
000771a0  20 68 6f 6c 64 20 70 61  74 68 6e 61 6d 65 0a 09  | hold pathname..|
000771b0  52 32 20 3d 09 3c 64 69  72 65 63 74 6f 72 79 20  |R2 =.<directory |
000771c0  74 6f 20 72 65 61 64 3d  3e 4f 53 5f 46 53 43 6f  |to read=>OS_FSCo|
000771d0  6e 74 72 6f 6c 35 33 2e  64 69 72 74 79 70 65 3e  |ntrol53.dirtype>|
000771e0  0a 09 52 33 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R3 =.pointer t|
000771f0  6f 20 6e 61 6d 65 20 6f  66 20 66 69 6c 69 6e 67  |o name of filing|
00077200  20 73 79 73 74 65 6d 0a  09 52 35 20 3d 09 73 69  | system..R5 =.si|
00077210  7a 65 20 6f 66 20 62 75  66 66 65 72 20 28 6f 72  |ze of buffer (or|
00077220  20 30 20 74 6f 20 72 65  61 64 20 72 65 71 75 69  | 0 to read requi|
00077230  72 65 64 20 73 69 7a 65  29 0a 3c 3d 09 42 75 66  |red size).<=.Buf|
00077240  66 65 72 20 69 73 20 66  69 6c 6c 65 64 20 77 69  |fer is filled wi|
00077250  74 68 20 70 61 74 68 6e  61 6d 65 0a 09 52 31 20  |th pathname..R1 |
00077260  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 72 65 73  |=.pointer to res|
00077270  74 20 6f 66 20 70 61 74  68 2c 20 6f 72 20 30 20  |t of path, or 0 |
00077280  69 66 20 64 69 72 65 63  74 6f 72 79 20 69 73 20  |if directory is |
00077290  6e 6f 74 20 73 65 74 0a  09 52 35 20 3d 09 28 62  |not set..R5 =.(b|
000772a0  75 66 66 65 72 20 6c 65  6e 67 74 68 29 20 6d 69  |uffer length) mi|
000772b0  6e 75 73 20 28 6c 65 6e  67 74 68 20 6f 66 20 73  |nus (length of s|
000772c0  74 72 69 6e 67 20 28 77  69 74 68 20 74 65 72 6d  |tring (with term|
000772d0  69 6e 61 74 6f 72 29 29  0a 09 52 36 20 3d 09 70  |inator))..R6 =.p|
000772e0  6f 69 6e 74 65 72 20 74  6f 20 73 70 65 63 69 61  |ointer to specia|
000772f0  6c 20 66 69 65 6c 64 2c  20 74 65 72 6d 69 6e 61  |l field, termina|
00077300  74 65 64 20 77 69 74 68  20 6e 75 6c 6c 20 6f 72  |ted with null or|
00077310  20 22 2c 22 20 28 6f 72  20 30 20 66 6f 72 20 6e  | "," (or 0 for n|
00077320  6f 6e 65 29 0a 0a 54 68  69 73 20 63 61 6c 6c 20  |one)..This call |
00077330  72 65 61 64 73 20 74 68  65 20 70 61 74 68 20 6f  |reads the path o|
00077340  66 20 74 68 65 20 73 70  65 63 69 66 69 65 64 20  |f the specified |
00077350  64 69 72 65 63 74 6f 72  79 2e 0a 0a 2a 4e 6f 74  |directory...*Not|
00077360  65 73 2a 3a 09 4c 69 6b  65 20 6f 74 68 65 72 20  |es*:.Like other |
00077370  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 63 61 6c  |OS_FSControl cal|
00077380  6c 73 2c 20 75 73 65 20  74 68 69 73 20 63 61 6c  |ls, use this cal|
00077390  6c 20 74 77 69 63 65 3a  20 61 66 74 65 72 20 74  |l twice: after t|
000773a0  68 65 20 66 69 72 73 74  20 63 61 6c 6c 20 28 72  |he first call (r|
000773b0  35 20 3d 20 30 29 2c 20  61 6e 64 20 6f 6e 20 65  |5 = 0), and on e|
000773c0  78 69 74 20 72 35 20 3d  20 2d 28 62 79 74 65 73  |xit r5 = -(bytes|
000773d0  20 6e 65 65 64 65 64 29  2e 00 00 00 44 41 54 41  | needed)....DATA|
000773e0  2e 01 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |....OS_FSControl|
000773f0  20 33 35 20 20 28 26 32  39 29 0a 23 50 61 72 65  | 35  (&29).#Pare|
00077400  6e 74 20 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 0a  |nt OS_FSControl.|
00077410  23 57 72 61 70 20 6f 66  66 0a 3d 3e 09 52 30 20  |#Wrap off.=>.R0 |
00077420  3d 09 33 35 20 28 41 64  64 20 69 6d 61 67 65 20  |=.35 (Add image |
00077430  66 69 6c 69 6e 67 20 73  79 73 74 65 6d 29 0a 09  |filing system)..|
00077440  52 31 20 3d 09 6d 6f 64  75 6c 65 20 62 61 73 65  |R1 =.module base|
00077450  20 61 64 64 72 65 73 73  0a 09 52 32 20 3d 09 6f  | address..R2 =.o|
00077460  66 66 73 65 74 20 6f 66  20 3c 49 6d 61 67 65 46  |ffset of <ImageF|
00077470  53 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 20 62 6c  |S information bl|
00077480  6f 63 6b 3d 3e 66 73 79  73 5f 69 6d 61 67 65 5f  |ock=>fsys_image_|
00077490  69 6e 66 6f 62 6c 6f 63  6b 3e 0a 09 52 33 20 3d  |infoblock>..R3 =|
000774a0  09 76 61 6c 75 65 20 74  6f 20 70 61 73 73 20 74  |.value to pass t|
000774b0  6f 20 72 6f 75 74 69 6e  65 73 20 69 6e 20 52 31  |o routines in R1|
000774c0  32 0a 23 57 72 61 70 0a  0a 54 68 69 73 20 53 57  |2.#Wrap..This SW|
000774d0  49 20 69 73 20 75 73 65  64 20 74 6f 20 72 65 67  |I is used to reg|
000774e0  69 73 74 65 72 20 61 6e  20 69 6d 61 67 65 20 66  |ister an image f|
000774f0  69 6c 69 6e 67 20 73 79  73 74 65 6d 20 77 69 74  |iling system wit|
00077500  68 20 74 68 65 20 4f 53  2e 0a 00 00 44 41 54 41  |h the OS....DATA|
00077510  e6 01 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |....OS_FSControl|
00077520  20 34 20 20 28 26 32 39  29 0a 23 50 61 72 65 6e  | 4  (&29).#Paren|
00077530  74 20 4f 53 5f 46 53 43  6f 6e 74 72 6f 6c 0a 3d  |t OS_FSControl.=|
00077540  3e 09 52 30 20 3d 09 34  20 28 52 75 6e 20 66 69  |>.R0 =.4 (Run fi|
00077550  6c 65 29 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |le)..R1 =.pointe|
00077560  72 20 74 6f 20 28 77 69  6c 64 63 61 72 64 65 64  |r to (wildcarded|
00077570  29 20 66 69 6c 65 6e 61  6d 65 0a 0a 54 68 69 73  |) filename..This|
00077580  20 53 57 49 20 72 75 6e  73 20 61 20 66 69 6c 65  | SWI runs a file|
00077590  2e 20 46 69 6c 65 73 20  77 69 74 68 20 6c 6f 61  |. Files with loa|
000775a0  64 20 61 6e 64 20 65 78  65 63 20 61 64 64 72 65  |d and exec addre|
000775b0  73 73 65 73 20 77 69 6c  6c 20 62 65 20 6c 6f 61  |sses will be loa|
000775c0  64 65 64 20 61 6e 64 20  65 78 65 63 75 74 65 64  |ded and executed|
000775d0  2c 20 66 69 6c 65 73 20  6f 66 20 74 79 70 65 20  |, files of type |
000775e0  26 46 46 38 20 28 41 62  73 6f 6c 75 74 65 29 20  |&FF8 (Absolute) |
000775f0  77 69 6c 6c 20 62 65 20  6c 6f 61 64 65 64 20 61  |will be loaded a|
00077600  6e 64 20 65 78 65 63 75  74 65 64 20 61 74 20 26  |nd executed at &|
00077610  38 30 30 30 2e 20 55 74  69 6c 69 74 69 65 73 20  |8000. Utilities |
00077620  28 74 79 70 65 20 26 46  46 43 29 20 77 69 6c 6c  |(type &FFC) will|
00077630  20 62 65 20 6c 6f 61 64  65 64 20 69 6e 74 6f 20  | be loaded into |
00077640  52 4d 41 20 61 6e 64 20  72 75 6e 2e 20 41 6c 6c  |RMA and run. All|
00077650  20 6f 74 68 65 72 20 66  69 6c 65 74 79 70 65 73  | other filetypes|
00077660  20 77 69 6c 6c 20 62 65  20 73 65 61 72 63 68 65  | will be searche|
00077670  64 20 66 6f 72 20 69 6e  20 7b 66 43 6f 64 65 7d  |d for in {fCode}|
00077680  41 6c 69 61 73 24 40 52  75 6e 54 79 70 65 5f 7b  |Alias$@RunType_{|
00077690  2f 7d 78 78 78 7b 2f 7d  7b 66 7d 2e 0a 0a 49 74  |/}xxx{/}{f}...It|
000776a0  20 69 73 20 70 6f 73 73  69 62 6c 65 20 74 68 61  | is possible tha|
000776b0  74 20 74 68 69 73 20 63  61 6c 6c 20 77 69 6c 6c  |t this call will|
000776c0  20 6e 6f 74 20 65 78 69  74 20 64 65 70 65 6e 64  | not exit depend|
000776d0  69 6e 67 20 6f 6e 20 74  68 65 20 65 78 65 63 75  |ing on the execu|
000776e0  74 69 6f 6e 20 6f 66 20  74 68 65 20 66 69 6c 65  |tion of the file|
000776f0  2e 0a 00 00 44 41 54 41  ed 00 00 00 4f 53 5f 46  |....DATA....OS_F|
00077700  53 43 6f 6e 74 72 6f 6c  20 31 34 20 20 28 26 32  |SControl 14  (&2|
00077710  39 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 46 53  |9).#Parent OS_FS|
00077720  43 6f 6e 74 72 6f 6c 0a  3d 3e 09 52 30 20 3d 09  |Control.=>.R0 =.|
00077730  31 34 20 28 53 65 6c 65  63 74 20 46 53 29 0a 09  |14 (Select FS)..|
00077740  52 31 20 3d 09 3c 66 69  6c 69 6e 67 20 73 79 73  |R1 =.<filing sys|
00077750  74 65 6d 20 6e 75 6d 62  65 72 3d 3e 66 73 79 73  |tem number=>fsys|
00077760  5f 69 64 65 6e 74 3e 20  6f 72 20 70 6f 69 6e 74  |_ident> or point|
00077770  65 72 20 74 6f 20 6e 61  6d 65 2c 20 6f 72 20 30  |er to name, or 0|
00077780  20 66 6f 72 20 6e 6f 6e  65 0a 3c 3d 09 61 6c 6c  | for none.<=.all|
00077790  20 70 72 65 73 65 72 76  65 64 0a 0a 53 65 6c 65  | preserved..Sele|
000777a0  63 74 73 20 61 20 66 69  6c 69 6e 67 20 73 79 73  |cts a filing sys|
000777b0  74 65 6d 20 61 73 20 62  6f 74 68 20 63 75 72 72  |tem as both curr|
000777c0  65 6e 74 20 61 6e 64 20  74 65 6d 70 6f 72 61 72  |ent and temporar|
000777d0  79 20 66 69 6c 69 6e 67  20 73 79 73 74 65 6d 2e  |y filing system.|
000777e0  0a 00 00 00 44 41 54 41  30 01 00 00 4f 53 5f 46  |....DATA0...OS_F|
000777f0  53 43 6f 6e 74 72 6f 6c  20 31 32 0a 23 50 61 72  |SControl 12.#Par|
00077800  65 6e 74 20 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |ent OS_FSControl|
00077810  0a 23 57 72 61 70 20 6f  66 66 0a 3d 3e 09 52 30  |.#Wrap off.=>.R0|
00077820  20 3d 09 31 32 20 28 41  64 64 20 61 20 46 53 29  | =.12 (Add a FS)|
00077830  0a 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
00077840  6f 20 6d 6f 64 75 6c 65  20 62 61 73 65 0a 09 52  |o module base..R|
00077850  32 20 3d 09 6f 66 66 73  65 74 20 6f 66 20 66 69  |2 =.offset of fi|
00077860  6c 69 6e 67 20 73 79 73  74 65 6d 20 3c 69 6e 66  |ling system <inf|
00077870  6f 72 6d 61 74 69 6f 6e  20 62 6c 6f 63 6b 3d 3e  |ormation block=>|
00077880  66 73 79 73 5f 69 6e 66  6f 62 6c 6f 63 6b 3e 0a  |fsys_infoblock>.|
00077890  09 52 33 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R3 =.pointer to|
000778a0  20 70 72 69 76 61 74 65  20 77 6f 72 64 0a 23 57  | private word.#W|
000778b0  72 61 70 0a 3c 3d 09 41  6c 6c 20 72 65 67 69 73  |rap.<=.All regis|
000778c0  74 65 72 73 20 70 72 65  73 65 72 76 65 64 0a 0a  |ters preserved..|
000778d0  54 68 69 73 20 53 57 49  20 69 73 20 75 73 65 64  |This SWI is used|
000778e0  20 74 6f 20 6d 61 6b 65  20 46 69 6c 65 53 77 69  | to make FileSwi|
000778f0  74 63 68 20 61 77 61 72  65 20 6f 66 20 61 20 6e  |tch aware of a n|
00077900  65 77 20 61 20 46 69 6c  69 6e 67 20 53 79 73 74  |ew a Filing Syst|
00077910  65 6d 2e 0a 44 41 54 41  d0 00 00 00 4f 53 5f 46  |em..DATA....OS_F|
00077920  53 43 6f 6e 74 72 6f 6c  20 31 36 0a 23 50 61 72  |SControl 16.#Par|
00077930  65 6e 74 20 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |ent OS_FSControl|
00077940  0a 23 57 72 61 70 20 6f  66 66 0a 3d 3e 09 52 30  |.#Wrap off.=>.R0|
00077950  20 3d 09 31 36 20 28 52  65 6d 6f 76 65 20 46 53  | =.16 (Remove FS|
00077960  29 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |)..R1 =.pointer |
00077970  74 6f 20 66 69 6c 69 6e  67 20 73 79 73 74 65 6d  |to filing system|
00077980  20 6e 61 6d 65 0a 23 57  72 61 70 0a 3c 3d 09 41  | name.#Wrap.<=.A|
00077990  6c 6c 20 72 65 67 69 73  74 65 72 73 20 70 72 65  |ll registers pre|
000779a0  73 65 72 76 65 64 0a 0a  54 68 69 73 20 53 57 49  |served..This SWI|
000779b0  20 69 73 20 75 73 65 64  20 74 6f 20 72 65 6d 6f  | is used to remo|
000779c0  76 65 20 61 20 46 69 6c  69 6e 67 20 53 79 73 74  |ve a Filing Syst|
000779d0  65 6d 20 66 72 6f 6d 20  46 69 6c 65 53 77 69 74  |em from FileSwit|
000779e0  63 68 2e 0a 44 41 54 41  2a 02 00 00 4f 53 5f 46  |ch..DATA*...OS_F|
000779f0  53 43 6f 6e 74 72 6f 6c  20 35 35 20 20 28 26 33  |SControl 55  (&3|
00077a00  37 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 46 53  |7).#Parent OS_FS|
00077a10  43 6f 6e 74 72 6f 6c 0a  3d 3e 09 52 30 20 3d 09  |Control.=>.R0 =.|
00077a20  35 35 20 28 52 65 61 64  20 66 72 65 65 20 73 70  |55 (Read free sp|
00077a30  61 63 65 20 66 6f 72 20  61 20 6c 61 72 67 65 20  |ace for a large |
00077a40  64 69 73 63 20 6f 72 20  69 6d 61 67 65 20 66 69  |disc or image fi|
00077a50  6c 65 29 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |le)..R1 =.pointe|
00077a60  72 20 74 6f 20 6e 61 6d  65 20 6f 66 20 6f 62 6a  |r to name of obj|
00077a70  65 63 74 0a 3c 3d 09 52  30 20 3d 09 6c 65 61 73  |ect.<=.R0 =.leas|
00077a80  74 20 73 69 67 6e 69 66  69 63 61 6e 74 20 77 6f  |t significant wo|
00077a90  72 64 20 6f 66 20 66 72  65 65 20 73 70 61 63 65  |rd of free space|
00077aa0  0a 09 52 31 20 3d 09 6d  6f 73 74 20 73 69 67 6e  |..R1 =.most sign|
00077ab0  69 66 69 63 61 6e 74 20  77 6f 72 64 20 6f 66 20  |ificant word of |
00077ac0  66 72 65 65 20 73 70 61  63 65 0a 09 52 32 20 3d  |free space..R2 =|
00077ad0  09 73 69 7a 65 20 6f 66  20 6c 61 72 67 65 73 74  |.size of largest|
00077ae0  20 6f 62 6a 65 63 74 20  74 68 61 74 20 63 61 6e  | object that can|
00077af0  20 62 65 20 63 72 65 61  74 65 64 0a 09 52 33 20  | be created..R3 |
00077b00  3d 09 6c 65 61 73 74 20  73 69 67 6e 69 66 69 63  |=.least signific|
00077b10  61 6e 74 20 77 6f 72 64  20 6f 66 20 64 69 73 63  |ant word of disc|
00077b20  20 73 69 7a 65 0a 09 52  34 20 3d 09 6d 6f 73 74  | size..R4 =.most|
00077b30  20 73 69 67 6e 69 66 69  63 61 6e 74 20 77 6f 72  | significant wor|
00077b40  64 20 6f 66 20 64 69 73  63 20 73 69 7a 65 0a 0a  |d of disc size..|
00077b50  52 65 61 64 73 20 74 68  65 20 66 72 65 65 20 73  |Reads the free s|
00077b60  70 61 63 65 20 6f 6e 20  61 20 64 69 73 63 20 6f  |pace on a disc o|
00077b70  72 20 69 6d 61 67 65 20  63 6f 6e 74 61 69 6e 69  |r image containi|
00077b80  6e 67 20 61 20 6e 61 6d  65 64 20 6f 62 6a 65 63  |ng a named objec|
00077b90  74 2e 20 54 68 69 73 20  63 61 6c 6c 20 69 73 20  |t. This call is |
00077ba0  6f 6e 6c 79 20 69 6d 70  6c 65 6d 65 6e 74 65 64  |only implemented|
00077bb0  20 69 6e 20 52 49 53 43  20 4f 53 20 33 2e 36 20  | in RISC OS 3.6 |
00077bc0  61 6e 64 20 6c 61 74 65  72 2e 20 53 65 65 20 3c  |and later. See <|
00077bd0  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 34 39 3d  |OS_FSControl 49=|
00077be0  3e 4f 53 5f 46 53 43 6f  6e 74 72 6f 6c 34 39 3e  |>OS_FSControl49>|
00077bf0  20 66 6f 72 20 74 68 65  20 70 72 69 6f 72 20 69  | for the prior i|
00077c00  6d 70 6c 65 6d 65 6e 74  61 74 69 6f 6e 2e 00 00  |mplementation...|
00077c10  44 41 54 41 56 01 00 00  4f 53 5f 46 53 43 6f 6e  |DATAV...OS_FSCon|
00077c20  74 72 6f 6c 20 35 36 20  28 26 33 38 29 0a 23 50  |trol 56 (&38).#P|
00077c30  61 72 65 6e 74 20 4f 53  5f 46 53 43 6f 6e 74 72  |arent OS_FSContr|
00077c40  6f 6c 0a 3d 3e 09 52 30  20 3d 09 35 36 20 28 52  |ol.=>.R0 =.56 (R|
00077c50  65 61 64 20 64 65 66 65  63 74 20 6c 69 73 74 20  |ead defect list |
00077c60  66 6f 72 20 61 20 6c 61  72 67 65 20 64 69 73 63  |for a large disc|
00077c70  20 6f 72 20 69 6d 61 67  65 20 66 69 6c 65 29 0a  | or image file).|
00077c80  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
00077c90  20 6e 61 6d 65 20 6f 66  20 6f 62 6a 65 63 74 0a  | name of object.|
00077ca0  09 52 32 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R2 =.pointer to|
00077cb0  20 62 75 66 66 65 72 0a  09 52 33 20 3d 09 6c 65  | buffer..R3 =.le|
00077cc0  6e 67 74 68 20 6f 66 20  62 75 66 66 65 72 0a 3c  |ngth of buffer.<|
00077cd0  3d 09 52 30 20 70 72 65  73 65 72 76 65 64 0a 09  |=.R0 preserved..|
00077ce0  52 31 20 3d 09 6e 75 6d  62 65 72 20 6f 66 20 64  |R1 =.number of d|
00077cf0  65 66 65 63 74 73 20 70  6c 61 63 65 64 20 69 6e  |efects placed in|
00077d00  20 74 68 65 20 62 75 66  66 65 72 0a 0a 52 65 61  | the buffer..Rea|
00077d10  64 73 20 74 68 65 20 64  65 66 65 63 74 73 20 6c  |ds the defects l|
00077d20  69 73 74 20 66 6f 72 20  61 20 6c 61 72 67 65 20  |ist for a large |
00077d30  64 69 73 63 2e 20 54 68  65 20 62 75 66 66 65 72  |disc. The buffer|
00077d40  20 63 6f 6e 73 69 73 74  73 20 6f 66 20 36 34 62  | consists of 64b|
00077d50  69 74 20 76 61 6c 75 65  73 20 28 4c 53 57 20 66  |it values (LSW f|
00077d60  69 72 73 74 29 2e 00 00  44 41 54 41 8a 01 00 00  |irst)...DATA....|
00077d70  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 35 37 20  |OS_FSControl 57 |
00077d80  28 26 33 39 29 0a 23 50  61 72 65 6e 74 20 4f 53  |(&39).#Parent OS|
00077d90  5f 46 53 43 6f 6e 74 72  6f 6c 0a 3d 3e 09 52 30  |_FSControl.=>.R0|
00077da0  20 3d 09 35 37 20 28 6d  61 70 20 6f 75 74 20 64  | =.57 (map out d|
00077db0  65 66 65 63 74 20 66 72  6f 6d 20 6c 61 72 67 65  |efect from large|
00077dc0  20 64 69 73 63 20 6f 72  20 69 6d 61 67 65 29 0a  | disc or image).|
00077dd0  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
00077de0  20 6e 61 6d 65 20 6f 66  20 6f 62 6a 65 63 74 0a  | name of object.|
00077df0  09 52 32 20 3d 09 6c 65  61 73 74 20 73 69 67 6e  |.R2 =.least sign|
00077e00  69 66 69 63 61 6e 74 20  77 6f 72 64 20 6f 66 20  |ificant word of |
00077e10  64 65 66 65 63 74 20 61  64 64 72 65 73 73 0a 09  |defect address..|
00077e20  52 33 20 3d 09 6d 6f 73  74 20 73 69 67 6e 69 66  |R3 =.most signif|
00077e30  69 63 61 6e 74 20 77 6f  72 64 20 6f 66 20 64 65  |icant word of de|
00077e40  66 65 63 74 20 61 64 64  72 65 73 73 0a 0a 4d 61  |fect address..Ma|
00077e50  70 73 20 6f 75 74 20 61  20 64 65 66 65 63 74 20  |ps out a defect |
00077e60  66 72 6f 6d 20 61 20 6c  61 72 67 65 20 64 69 73  |from a large dis|
00077e70  63 20 6f 72 20 69 6d 61  67 65 2e 20 54 68 69 73  |c or image. This|
00077e80  20 63 61 6c 6c 20 69 73  20 6f 6e 6c 79 20 73 75  | call is only su|
00077e90  70 70 6f 72 74 65 64 20  6f 6e 20 52 49 53 43 20  |pported on RISC |
00077ea0  4f 53 20 33 2e 36 20 61  6e 64 20 6c 61 74 65 72  |OS 3.6 and later|
00077eb0  2c 20 70 72 69 6f 72 20  74 6f 20 74 68 61 74 20  |, prior to that |
00077ec0  3c 4f 53 5f 46 53 43 6f  6e 74 72 6f 6c 20 34 32  |<OS_FSControl 42|
00077ed0  3d 3e 4f 53 5f 46 53 43  6f 6e 74 72 6f 6c 34 32  |=>OS_FSControl42|
00077ee0  3e 20 73 68 6f 75 6c 64  20 62 65 20 75 73 65 64  |> should be used|
00077ef0  2e 0a 00 00 44 41 54 41  0d 01 00 00 4f 53 5f 46  |....DATA....OS_F|
00077f00  53 43 6f 6e 74 72 6f 6c  20 31 30 0a 23 50 61 72  |SControl 10.#Par|
00077f10  65 6e 74 20 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |ent OS_FSControl|
00077f20  0a 23 57 72 61 70 20 6f  66 66 0a 3d 3e 09 52 30  |.#Wrap off.=>.R0|
00077f30  20 3d 09 31 30 20 28 53  65 74 20 46 53 20 6f 70  | =.10 (Set FS op|
00077f40  74 69 6f 6e 73 29 0a 09  52 31 20 3d 09 3c 6f 70  |tions)..R1 =.<op|
00077f50  74 69 6f 6e 3d 3e 66 73  79 73 5f 6f 70 74 73 3e  |tion=>fsys_opts>|
00077f60  0a 23 57 72 61 70 0a 09  52 32 20 3d 09 76 61 6c  |.#Wrap..R2 =.val|
00077f70  75 65 0a 0a 54 68 69 73  20 53 57 49 20 73 65 74  |ue..This SWI set|
00077f80  73 20 74 68 65 20 6f 70  74 69 6f 6e 73 20 6f 6e  |s the options on|
00077f90  20 74 68 65 20 74 65 6d  70 6f 72 61 72 79 20 66  | the temporary f|
00077fa0  69 6c 69 6e 67 20 73 79  73 74 65 6d 2e 20 53 65  |iling system. Se|
00077fb0  65 20 3c 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 20  |e <OS_FSControl |
00077fc0  34 38 3d 3e 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |48=>OS_FSControl|
00077fd0  34 38 3e 20 74 6f 20 73  65 74 20 74 68 65 20 62  |48> to set the b|
00077fe0  6f 6f 74 20 6f 70 74 69  6f 6e 20 28 34 29 20 66  |oot option (4) f|
00077ff0  6f 72 20 61 20 67 69 76  65 6e 20 64 69 73 63 2e  |or a given disc.|
00078000  0a 00 00 00 44 41 54 41  6a 02 00 00 4f 53 5f 46  |....DATAj...OS_F|
00078010  53 43 6f 6e 74 72 6f 6c  20 31 31 20 20 28 26 32  |SControl 11  (&2|
00078020  39 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 46 53  |9).#Parent OS_FS|
00078030  43 6f 6e 74 72 6f 6c 0a  3d 3e 09 52 30 20 3d 09  |Control.=>.R0 =.|
00078040  31 31 20 28 53 65 74 20  74 65 6d 70 6f 72 61 72  |11 (Set temporar|
00078050  79 20 66 69 6c 69 6e 67  20 73 79 73 74 65 6d 29  |y filing system)|
00078060  0a 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
00078070  6f 20 28 77 69 6c 64 63  61 72 64 65 64 29 20 66  |o (wildcarded) f|
00078080  69 6c 65 6e 61 6d 65 0a  0a 3c 3d 09 52 30 20 70  |ilename..<=.R0 p|
00078090  72 65 73 65 72 76 65 64  0a 09 52 31 20 3d 09 75  |reserved..R1 =.u|
000780a0  70 64 61 74 65 64 20 74  6f 20 70 6f 69 6e 74 20  |pdated to point |
000780b0  62 65 79 6f 6e 64 20 66  69 6c 69 6e 67 20 73 79  |beyond filing sy|
000780c0  73 74 65 6d 20 73 70 65  63 69 66 69 65 72 0a 09  |stem specifier..|
000780d0  52 32 20 3d 09 2d 31 09  6e 6f 20 66 69 6c 69 6e  |R2 =.-1.no filin|
000780e0  67 20 73 79 73 74 65 6d  20 73 70 65 63 69 66 69  |g system specifi|
000780f0  65 72 20 70 72 65 73 65  6e 74 20 28 63 61 6c 6c  |er present (call|
00078100  20 68 61 73 20 6e 6f 20  65 66 66 65 63 74 29 0a  | has no effect).|
00078110  09 20 09 3e 3d 20 30 09  3c 66 69 6c 69 6e 67 20  |. .>= 0.<filing |
00078120  73 79 73 74 65 6d 3d 3e  66 73 79 73 5f 69 64 65  |system=>fsys_ide|
00078130  6e 74 3e 20 74 6f 20 72  65 73 74 6f 72 65 0a 09  |nt> to restore..|
00078140  52 33 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R3 =.pointer to |
00078150  73 70 65 63 69 61 6c 20  66 69 65 6c 64 2c 20 30  |special field, 0|
00078160  20 69 66 20 6e 6f 74 20  70 72 65 73 65 6e 74 0a  | if not present.|
00078170  0a 54 68 69 73 20 53 57  49 20 73 65 74 73 20 74  |.This SWI sets t|
00078180  68 65 20 74 65 6d 70 6f  72 61 72 79 20 66 69 6c  |he temporary fil|
00078190  69 6e 67 20 73 79 73 74  65 6d 20 66 72 6f 6d 20  |ing system from |
000781a0  74 68 65 20 70 72 65 66  69 78 20 73 74 72 69 6e  |the prefix strin|
000781b0  67 20 69 6e 20 52 31 2e  20 49 74 20 69 73 20 75  |g in R1. It is u|
000781c0  73 65 64 20 62 79 20 3c  4f 53 5f 43 4c 49 3e 20  |sed by <OS_CLI> |
000781d0  74 6f 20 73 65 74 20 74  68 65 20 74 65 6d 70 6f  |to set the tempo|
000781e0  72 61 72 79 20 66 69 6c  69 6e 67 20 73 79 73 74  |rary filing syst|
000781f0  65 6d 20 66 6f 72 20 74  68 65 20 63 6f 6d 6d 61  |em for the comma|
00078200  6e 64 27 73 20 64 75 72  61 74 69 6f 6e 2e 20 41  |nd's duration. A|
00078210  66 74 65 72 20 74 68 65  20 63 6f 6d 6d 61 6e 64  |fter the command|
00078220  20 74 68 65 20 63 75 72  72 65 6e 74 20 66 69 6c  | the current fil|
00078230  69 6e 67 20 73 79 73 74  65 6d 20 69 73 20 72 65  |ing system is re|
00078240  73 74 6f 72 65 64 20 77  69 74 68 20 3c 4f 53 5f  |stored with <OS_|
00078250  46 53 43 6f 6e 74 72 6f  6c 20 31 39 3d 3e 4f 53  |FSControl 19=>OS|
00078260  5f 46 53 43 6f 6e 74 72  6f 6c 31 39 3e 0a 00 00  |_FSControl19>...|
00078270  44 41 54 41 7f 01 00 00  4f 53 5f 46 53 43 6f 6e  |DATA....OS_FSCon|
00078280  74 72 6f 6c 20 31 35 20  20 28 26 32 39 29 0a 23  |trol 15  (&29).#|
00078290  50 61 72 65 6e 74 20 4f  53 5f 46 53 43 6f 6e 74  |Parent OS_FSCont|
000782a0  72 6f 6c 0a 3d 3e 09 52  30 20 3d 09 31 35 20 28  |rol.=>.R0 =.15 (|
000782b0  42 6f 6f 74 20 66 72 6f  6d 20 46 53 29 0a 0a 3c  |Boot from FS)..<|
000782c0  3d 09 52 30 20 70 72 65  73 65 72 76 65 64 20 2d  |=.R0 preserved -|
000782d0  20 6d 61 79 20 6e 6f 74  20 72 65 74 75 72 6e 20  | may not return |
000782e0  69 66 20 62 6f 6f 74 20  72 75 6e 73 20 61 6e 20  |if boot runs an |
000782f0  61 70 70 6c 69 63 61 74  69 6f 6e 0a 0a 54 68 69  |application..Thi|
00078300  73 20 53 57 49 20 62 6f  6f 74 73 20 66 72 6f 6d  |s SWI boots from|
00078310  20 74 68 65 20 2a 63 75  72 72 65 6e 74 2a 20 66  | the *current* f|
00078320  69 6c 69 6e 67 20 73 79  73 74 65 6d 2e 20 54 68  |iling system. Th|
00078330  65 20 61 63 74 69 6f 6e  73 20 74 61 6b 65 6e 20  |e actions taken |
00078340  61 72 65 20 64 65 70 65  6e 64 61 6e 74 20 6f 6e  |are dependant on|
00078350  20 74 68 65 20 3c 62 6f  6f 74 20 73 65 74 74 69  | the <boot setti|
00078360  6e 67 3d 3e 4f 53 5f 42  79 74 65 32 35 35 3e 20  |ng=>OS_Byte255> |
00078370  61 6e 64 20 3c 6f 70 74  69 6f 6e 20 34 20 73 65  |and <option 4 se|
00078380  74 74 69 6e 67 3d 3e 66  73 79 73 5f 6f 70 74 73  |tting=>fsys_opts|
00078390  3e 20 2d 20 74 68 65 20  6c 61 74 74 65 72 20 69  |> - the latter i|
000783a0  73 20 73 65 74 20 6f 6e  20 74 68 65 20 2a 74 65  |s set on the *te|
000783b0  6d 70 6f 72 61 72 79 2a  20 66 69 6c 69 6e 67 20  |mporary* filing |
000783c0  73 79 73 74 65 6d 20 77  69 74 68 20 3c 4f 53 5f  |system with <OS_|
000783d0  46 53 43 6f 6e 74 72 6f  6c 20 31 30 3d 3e 4f 53  |FSControl 10=>OS|
000783e0  5f 46 53 43 6f 6e 74 72  6f 6c 31 30 3e 2e 0a 00  |_FSControl10>...|
000783f0  44 41 54 41 a0 01 00 00  4f 53 5f 46 53 43 6f 6e  |DATA....OS_FSCon|
00078400  74 72 6f 6c 20 31 37 0a  23 50 61 72 65 6e 74 20  |trol 17.#Parent |
00078410  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 0a 23 57 72  |OS_FSControl.#Wr|
00078420  61 70 20 6f 66 66 0a 3d  3e 09 52 30 20 3d 09 31  |ap off.=>.R0 =.1|
00078430  37 20 28 41 64 64 20 73  65 63 6f 6e 64 61 72 79  |7 (Add secondary|
00078440  20 6d 6f 64 75 6c 65 29  0a 09 52 31 20 3d 09 70  | module)..R1 =.p|
00078450  6f 69 6e 74 65 72 20 74  6f 20 66 69 6c 69 6e 67  |ointer to filing|
00078460  20 73 79 73 74 65 6d 20  6e 61 6d 65 0a 09 52 32  | system name..R2|
00078470  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 73 65  | =.pointer to se|
00078480  63 6f 6e 64 61 72 79 20  73 79 73 74 65 6d 20 6e  |condary system n|
00078490  61 6d 65 0a 09 52 33 20  3d 09 73 65 63 6f 6e 64  |ame..R3 =.second|
000784a0  61 72 79 20 73 79 73 74  65 6d 20 70 72 69 76 61  |ary system priva|
000784b0  74 65 20 77 6f 72 64 0a  23 57 72 61 70 0a 3c 3d  |te word.#Wrap.<=|
000784c0  09 41 6c 6c 20 72 65 67  69 73 74 65 72 73 20 70  |.All registers p|
000784d0  72 65 73 65 72 76 65 64  0a 0a 54 68 69 73 20 53  |reserved..This S|
000784e0  57 49 20 69 73 20 75 73  65 64 20 61 64 64 20 73  |WI is used add s|
000784f0  65 63 6f 6e 64 61 72 79  20 6d 6f 64 75 6c 65 73  |econdary modules|
00078500  20 77 68 69 63 68 20 70  72 6f 76 69 64 65 20 61  | which provide a|
00078510  64 64 69 74 69 6f 6e 61  6c 20 3c 66 69 6c 69 6e  |dditional <filin|
00078520  67 20 73 79 73 74 65 6d  20 63 6f 6d 6d 61 6e 64  |g system command|
00078530  73 3d 3e 4f 53 5f 4d 6f  64 75 6c 65 5f 43 6f 6d  |s=>OS_Module_Com|
00078540  66 6c 61 67 73 3e 2e 20  46 6f 72 20 65 78 61 6d  |flags>. For exam|
00078550  70 6c 65 2c 20 74 68 69  73 20 61 6c 6c 6f 77 73  |ple, this allows|
00078560  20 66 69 6c 65 63 6f 72  65 20 74 6f 20 61 64 64  | filecore to add|
00078570  20 74 68 65 20 63 6f 6d  6d 61 6e 64 73 20 70 72  | the commands pr|
00078580  6f 76 69 64 65 64 20 62  79 20 41 44 46 53 2e 0a  |ovided by ADFS..|
00078590  44 41 54 41 1f 01 00 00  4f 53 5f 46 53 43 6f 6e  |DATA....OS_FSCon|
000785a0  74 72 6f 6c 20 31 39 20  20 28 26 32 39 29 0a 23  |trol 19  (&29).#|
000785b0  50 61 72 65 6e 74 20 4f  53 5f 46 53 43 6f 6e 74  |Parent OS_FSCont|
000785c0  72 6f 6c 0a 3d 3e 09 52  30 20 3d 09 31 39 20 28  |rol.=>.R0 =.19 (|
000785d0  52 65 73 74 6f 72 65 20  63 75 72 72 65 6e 74 20  |Restore current |
000785e0  46 53 29 0a 0a 54 68 69  73 20 53 57 49 20 73 65  |FS)..This SWI se|
000785f0  74 73 20 74 68 65 20 74  65 6d 70 6f 72 61 72 79  |ts the temporary|
00078600  20 66 69 6c 69 6e 67 20  73 79 73 74 65 6d 20 62  | filing system b|
00078610  61 63 6b 20 74 6f 20 74  68 65 20 63 75 72 72 65  |ack to the curre|
00078620  6e 74 20 66 69 6c 69 6e  67 20 73 79 73 74 65 6d  |nt filing system|
00078630  2e 20 49 74 20 69 73 20  63 61 6c 6c 65 64 20 62  |. It is called b|
00078640  79 20 3c 4f 53 5f 43 4c  49 3e 20 61 66 74 65 72  |y <OS_CLI> after|
00078650  20 61 20 63 6f 6d 6d 61  6e 64 20 68 61 73 20 72  | a command has r|
00078660  75 6e 2c 20 61 6e 64 20  62 79 20 74 68 65 20 6b  |un, and by the k|
00078670  65 72 6e 65 6c 20 62 65  66 6f 72 65 20 74 68 65  |ernel before the|
00078680  20 3c 65 72 72 6f 72 20  68 61 6e 64 6c 65 72 3d  | <error handler=|
00078690  3e 4f 53 5f 68 61 6e 64  6c 65 72 73 5f 65 72 72  |>OS_handlers_err|
000786a0  6f 72 3e 20 69 73 20 63  61 6c 6c 65 64 2e 0a 00  |or> is called...|
000786b0  44 41 54 41 30 04 00 00  4f 53 5f 46 53 43 6f 6e  |DATA0...OS_FSCon|
000786c0  74 72 6f 6c 20 32 20 20  28 26 32 39 29 0a 23 50  |trol 2  (&29).#P|
000786d0  61 72 65 6e 74 20 4f 53  5f 46 53 43 6f 6e 74 72  |arent OS_FSContr|
000786e0  6f 6c 0a 3d 3e 09 52 30  20 3d 09 32 20 28 53 74  |ol.=>.R0 =.2 (St|
000786f0  61 72 74 20 6e 65 77 20  61 70 70 29 0a 09 52 31  |art new app)..R1|
00078700  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 63 6f  | =.pointer to co|
00078710  6d 6d 61 6e 64 20 74 61  69 6c 0a 09 52 32 20 3d  |mmand tail..R2 =|
00078720  09 3c 63 75 72 72 65 6e  74 6c 79 20 61 63 74 69  |.<currently acti|
00078730  76 65 20 6f 62 6a 65 63  74 20 70 6f 69 6e 74 65  |ve object pointe|
00078740  72 3d 3e 4f 53 5f 68 61  6e 64 6c 65 72 73 5f 63  |r=>OS_handlers_c|
00078750  61 6f 3e 20 74 6f 20 77  72 69 74 65 0a 09 52 33  |ao> to write..R3|
00078760  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 63 6f  | =.pointer to co|
00078770  6d 6d 61 6e 64 20 6e 61  6d 65 0a 0a 3c 3d 09 72  |mmand name..<=.r|
00078780  65 67 69 73 74 65 72 73  20 70 72 65 73 65 72 76  |egisters preserv|
00078790  65 64 2c 20 62 75 74 20  6d 61 79 20 6e 6f 74 20  |ed, but may not |
000787a0  72 65 74 75 72 6e 0a 0a  23 74 61 62 0a 54 68 69  |return..#tab.Thi|
000787b0  73 20 53 57 49 20 61 6c  6c 6f 77 73 20 79 6f 75  |s SWI allows you|
000787c0  20 74 6f 20 66 61 6b 65  20 73 74 61 72 74 69 6e  | to fake startin|
000787d0  67 20 61 6e 20 61 70 70  6c 69 63 61 74 69 6f 6e  |g an application|
000787e0  2e 20 49 74 0a 0a 31 09  69 73 73 75 65 73 20 3c  |. It..1.issues <|
000787f0  55 70 43 61 6c 6c 20 32  35 36 3d 3e 4f 53 5f 55  |UpCall 256=>OS_U|
00078800  70 43 61 6c 6c 32 35 36  3e 20 74 6f 20 69 6e 66  |pCall256> to inf|
00078810  6f 72 6d 20 74 68 65 20  63 75 72 72 65 6e 74 20  |orm the current |
00078820  61 70 70 6c 69 63 61 74  69 6f 6e 20 2d 20 69 66  |application - if|
00078830  20 74 68 65 20 75 70 63  61 6c 6c 20 69 73 20 63  | the upcall is c|
00078840  6c 61 69 6d 65 64 20 74  68 65 6e 20 74 68 65 20  |laimed then the |
00078850  65 72 72 6f 72 20 22 55  6e 61 62 6c 65 20 74 6f  |error "Unable to|
00078860  20 73 74 61 72 74 20 61  70 70 6c 69 63 61 74 69  | start applicati|
00078870  6f 6e 22 0a 0a 32 09 69  73 73 75 65 73 20 3c 53  |on"..2.issues <S|
00078880  65 72 76 69 63 65 5f 4e  65 77 41 70 70 6c 69 63  |ervice_NewApplic|
00078890  61 74 69 6f 6e 3d 3e 53  65 72 76 69 63 65 5f 32  |ation=>Service_2|
000788a0  41 3e 20 74 6f 20 69 6e  66 6f 72 6d 20 6d 6f 64  |A> to inform mod|
000788b0  75 6c 65 73 2e 20 49 66  20 74 68 65 20 73 65 72  |ules. If the ser|
000788c0  76 69 63 65 20 69 73 20  63 6c 61 69 6d 65 64 2c  |vice is claimed,|
000788d0  20 74 68 65 6e 20 74 68  65 20 65 72 72 6f 72 20  | then the error |
000788e0  63 61 6e 6e 6f 74 20 62  65 20 72 65 74 75 72 6e  |cannot be return|
000788f0  65 64 20 74 6f 20 79 6f  75 20 28 61 73 20 79 6f  |ed to you (as yo|
00078900  75 72 20 61 70 70 6c 69  63 61 74 69 6f 6e 20 77  |ur application w|
00078910  69 6c 6c 20 6e 6f 77 20  68 61 76 65 20 62 65 65  |ill now have bee|
00078920  6e 20 6b 69 6c 6c 65 64  29 20 73 6f 20 74 68 65  |n killed) so the|
00078930  20 65 72 72 6f 72 20 22  55 6e 61 62 6c 65 20 74  | error "Unable t|
00078940  6f 20 73 74 61 72 74 20  61 70 70 6c 69 63 61 74  |o start applicat|
00078950  69 6f 6e 22 20 69 73 20  70 61 73 73 65 64 20 74  |ion" is passed t|
00078960  6f 20 3c 4f 53 5f 47 65  6e 65 72 61 74 65 45 72  |o <OS_GenerateEr|
00078970  72 6f 72 3e 2c 20 77 68  69 63 68 20 72 65 73 75  |ror>, which resu|
00078980  6c 74 73 20 69 6e 20 74  68 65 20 65 72 72 6f 72  |lts in the error|
00078990  20 62 65 69 6e 67 20 73  65 6e 74 20 74 6f 20 79  | being sent to y|
000789a0  6f 75 72 20 70 61 72 65  6e 74 27 73 20 3c 65 72  |our parent's <er|
000789b0  72 6f 72 20 68 61 6e 64  6c 65 72 3d 3e 4f 53 5f  |ror handler=>OS_|
000789c0  68 61 6e 64 6c 65 72 73  5f 65 72 72 6f 72 3e 2e  |handlers_error>.|
000789d0  0a 0a 33 09 69 66 20 74  68 65 20 3c 65 78 69 74  |..3.if the <exit|
000789e0  20 68 61 6e 64 6c 65 72  3d 3e 4f 53 5f 68 61 6e  | handler=>OS_han|
000789f0  64 6c 65 72 73 5f 65 78  69 74 3e 20 69 73 20 62  |dlers_exit> is b|
00078a00  65 6c 6f 77 20 3c 6d 65  6d 6f 72 79 20 6c 69 6d  |elow <memory lim|
00078a10  69 74 3d 3e 4f 53 5f 68  61 6e 64 6c 65 72 73 5f  |it=>OS_handlers_|
00078a20  6c 69 6d 69 74 3e 20 74  68 65 6e 20 61 6c 6c 20  |limit> then all |
00078a30  68 61 6e 64 6c 65 72 73  20 62 65 6c 6f 77 20 6d  |handlers below m|
00078a40  65 6d 6f 72 79 20 6c 69  6d 69 74 20 61 72 65 20  |emory limit are |
00078a50  72 65 73 65 74 20 74 6f  20 74 68 65 69 72 20 3c  |reset to their <|
00078a60  64 65 66 61 75 6c 74 73  3d 3e 4f 53 5f 52 65 61  |defaults=>OS_Rea|
00078a70  64 44 65 66 61 75 6c 74  48 61 6e 64 6c 65 72 3e  |dDefaultHandler>|
00078a80  0a 0a 34 09 74 68 65 20  3c 43 41 4f 3d 3e 4f 53  |..4.the <CAO=>OS|
00078a90  5f 68 61 6e 64 6c 65 72  73 5f 63 61 6f 3e 20 69  |_handlers_cao> i|
00078aa0  73 20 73 65 74 3b 20 74  68 65 20 63 75 72 72 65  |s set; the curre|
00078ab0  6e 74 20 74 69 6d 65 20  61 6e 64 20 63 6f 6d 6d  |nt time and comm|
00078ac0  61 6e 64 20 74 61 69 6c  20 3c 61 72 65 20 73 65  |and tail <are se|
00078ad0  74 3d 3e 4f 53 5f 57 72  69 74 65 45 6e 76 3e 0a  |t=>OS_WriteEnv>.|
00078ae0  44 41 54 41 00 02 00 00  4f 53 5f 46 53 43 6f 6e  |DATA....OS_FSCon|
00078af0  74 72 6f 6c 20 32 30 0a  23 50 61 72 65 6e 74 20  |trol 20.#Parent |
00078b00  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 0a 23 57 72  |OS_FSControl.#Wr|
00078b10  61 70 20 6f 66 66 0a 3d  3e 09 52 30 20 3d 09 32  |ap off.=>.R0 =.2|
00078b20  30 20 28 52 65 61 64 20  6c 6f 63 61 74 69 6f 6e  |0 (Read location|
00078b30  20 6f 66 20 74 65 6d 70  6f 72 61 72 79 20 46 53  | of temporary FS|
00078b40  29 0a 0a 3c 3d 09 52 30  20 70 72 65 73 65 72 76  |)..<=.R0 preserv|
00078b50  65 64 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |ed..R1 =.pointer|
00078b60  20 74 6f 20 70 72 69 6d  61 72 79 20 6d 6f 64 75  | to primary modu|
00078b70  6c 65 20 62 61 73 65 0a  09 52 32 20 3d 09 70 6f  |le base..R2 =.po|
00078b80  69 6e 74 65 72 20 74 6f  20 70 72 69 76 61 74 65  |inter to private|
00078b90  20 77 6f 72 64 0a 23 57  72 61 70 0a 0a 54 68 69  | word.#Wrap..Thi|
00078ba0  73 20 53 57 49 20 72 65  61 64 73 20 74 68 65 20  |s SWI reads the |
00078bb0  6c 6f 63 61 74 69 6f 6e  20 6f 66 20 74 68 65 20  |location of the |
00078bc0  70 72 69 6d 61 72 79 20  6d 6f 64 75 6c 65 20 66  |primary module f|
00078bd0  6f 72 20 74 68 65 20 74  65 6d 70 6f 72 61 72 79  |or the temporary|
00078be0  20 66 69 6c 69 6e 67 20  73 79 73 74 65 6d 2e 20  | filing system. |
00078bf0  49 66 20 74 68 65 72 65  20 69 73 20 6e 6f 20 74  |If there is no t|
00078c00  65 6d 70 6f 61 72 61 72  79 20 66 69 6c 69 6e 67  |empoarary filing|
00078c10  20 73 79 73 74 65 6d 20  74 68 69 73 20 63 61 6c  | system this cal|
00078c20  6c 20 77 69 6c 6c 20 72  65 74 75 72 6e 20 76 61  |l will return va|
00078c30  6c 75 65 73 20 66 6f 72  20 74 68 65 20 63 75 72  |lues for the cur|
00078c40  72 65 6e 74 20 66 69 6c  69 6e 67 20 73 79 73 74  |rent filing syst|
00078c50  65 6d 2e 20 49 66 20 74  68 65 72 65 20 69 73 20  |em. If there is |
00078c60  6e 6f 20 63 75 72 72 65  6e 74 20 66 69 6c 69 6e  |no current filin|
00078c70  67 20 73 79 73 74 65 6d  20 52 31 3d 30 2c 20 52  |g system R1=0, R|
00078c80  32 20 69 73 20 75 6e 64  65 66 69 6e 65 64 2e 20  |2 is undefined. |
00078c90  54 68 65 20 73 65 63 6f  6e 64 61 72 79 20 6d 6f  |The secondary mo|
00078ca0  64 75 6c 65 20 76 61 6c  75 65 73 20 63 61 6e 20  |dule values can |
00078cb0  62 65 20 72 65 61 64 20  77 69 74 68 20 3c 4f 53  |be read with <OS|
00078cc0  5f 46 53 43 6f 6e 74 72  6f 6c 20 33 30 3d 3e 4f  |_FSControl 30=>O|
00078cd0  53 5f 46 53 43 6f 6e 74  72 6f 6c 33 30 3e 2e 0a  |S_FSControl30>..|
00078ce0  44 41 54 41 c0 01 00 00  4f 53 5f 46 53 43 6f 6e  |DATA....OS_FSCon|
00078cf0  74 72 6f 6c 20 32 31 0a  23 50 61 72 65 6e 74 20  |trol 21.#Parent |
00078d00  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 0a 23 57 72  |OS_FSControl.#Wr|
00078d10  61 70 20 6f 66 66 0a 3d  3e 09 52 30 20 3d 09 32  |ap off.=>.R0 =.2|
00078d20  31 20 28 52 65 61 64 20  46 53 20 69 6e 74 65 72  |1 (Read FS inter|
00078d30  6e 61 6c 20 66 69 6c 65  20 68 61 6e 64 6c 65 29  |nal file handle)|
00078d40  0a 09 52 31 20 3d 09 28  66 69 6c 65 73 77 69 74  |..R1 =.(fileswit|
00078d50  63 68 29 20 66 69 6c 65  20 68 61 6e 64 6c 65 0a  |ch) file handle.|
00078d60  0a 3c 3d 09 52 30 20 70  72 65 73 65 72 76 65 64  |.<=.R0 preserved|
00078d70  0a 09 52 31 20 3d 09 66  69 6c 69 6e 67 20 73 79  |..R1 =.filing sy|
00078d80  73 74 65 6d 20 66 69 6c  65 20 68 61 6e 64 6c 65  |stem file handle|
00078d90  0a 09 52 32 20 3d 09 66  69 6c 69 6e 67 20 73 79  |..R2 =.filing sy|
00078da0  73 74 65 6d 20 3c 69 6e  66 6f 72 6d 61 74 69 6f  |stem <informatio|
00078db0  6e 20 77 6f 72 64 3d 3e  66 73 79 73 5f 69 6e 66  |n word=>fsys_inf|
00078dc0  6f 77 6f 72 64 3e 0a 23  57 72 61 70 0a 0a 54 68  |oword>.#Wrap..Th|
00078dd0  69 73 20 53 57 49 20 72  65 74 75 72 6e 73 20 74  |is SWI returns t|
00078de0  68 65 20 69 6e 74 65 72  6e 61 6c 20 66 69 6c 65  |he internal file|
00078df0  20 68 61 6e 64 6c 65 20  28 61 73 20 72 65 74 75  | handle (as retu|
00078e00  72 6e 65 64 20 62 79 20  3c 46 53 45 6e 74 72 79  |rned by <FSEntry|
00078e10  5f 4f 70 65 6e 3e 29 20  66 6f 72 20 61 20 67 69  |_Open>) for a gi|
00078e20  76 65 6e 20 66 69 6c 65  20 68 61 6e 64 6c 65 2e  |ven file handle.|
00078e30  20 49 66 20 74 68 65 20  66 69 6c 65 73 77 69 74  | If the fileswit|
00078e40  63 68 20 68 61 6e 64 6c  65 20 69 73 20 69 6e 76  |ch handle is inv|
00078e50  61 6c 69 64 20 52 31 3d  30 20 6f 6e 20 72 65 74  |alid R1=0 on ret|
00078e60  75 72 6e 2e 20 54 68 69  73 20 53 57 49 20 73 68  |urn. This SWI sh|
00078e70  6f 75 6c 64 20 6f 6e 6c  79 20 62 65 20 75 73 65  |ould only be use|
00078e80  64 20 74 6f 20 69 6d 70  6c 65 6d 65 6e 74 20 61  |d to implement a|
00078e90  20 66 69 6c 69 6e 67 20  73 79 73 74 65 6d 2e 0a  | filing system..|
00078ea0  44 41 54 41 4e 01 00 00  4f 53 5f 46 53 43 6f 6e  |DATAN...OS_FSCon|
00078eb0  74 72 6f 6c 20 32 32 0a  23 50 61 72 65 6e 74 20  |trol 22.#Parent |
00078ec0  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 0a 23 57 72  |OS_FSControl.#Wr|
00078ed0  61 70 20 6f 66 66 0a 3d  3e 09 52 30 20 3d 09 32  |ap off.=>.R0 =.2|
00078ee0  32 20 28 43 6c 6f 73 65  20 61 6c 6c 20 6f 70 65  |2 (Close all ope|
00078ef0  6e 20 66 69 6c 65 73 29  0a 23 57 72 61 70 0a 0a  |n files).#Wrap..|
00078f00  54 68 69 73 20 53 57 49  20 66 6c 75 73 68 65 73  |This SWI flushes|
00078f10  20 61 6e 64 20 63 6c 6f  73 65 73 20 61 6c 6c 20  | and closes all |
00078f20  6f 70 65 6e 20 66 69 6c  65 73 20 6f 6e 20 61 6c  |open files on al|
00078f30  6c 20 66 69 6c 69 6e 67  20 73 79 73 74 65 6d 73  |l filing systems|
00078f40  2e 20 49 74 20 64 6f 65  73 20 6e 6f 74 20 73 74  |. It does not st|
00078f50  6f 70 20 69 66 20 61 6e  20 69 6e 64 69 76 69 64  |op if an individ|
00078f60  75 61 6c 20 63 6c 6f 73  65 20 72 65 70 6f 72 74  |ual close report|
00078f70  73 20 61 6e 20 65 72 72  6f 72 2c 20 62 75 74 20  |s an error, but |
00078f80  77 69 6c 6c 20 6f 6e 6c  79 20 72 65 74 75 72 6e  |will only return|
00078f90  20 77 69 74 68 6f 75 74  20 65 72 72 6f 72 20 69  | without error i|
00078fa0  66 20 61 6c 6c 20 69 6e  64 69 76 69 64 75 61 6c  |f all individual|
00078fb0  20 63 6c 6f 73 65 73 20  77 65 72 65 20 65 72 72  | closes were err|
00078fc0  6f 72 20 66 72 65 65 2e  20 49 74 20 69 73 20 65  |or free. It is e|
00078fd0  71 75 69 76 61 6c 65 6e  74 20 74 6f 20 7b 66 43  |quivalent to {fC|
00078fe0  6f 64 65 7d 2a 53 68 75  74 7b 66 7d 2e 0a 00 00  |ode}*Shut{f}....|
00078ff0  44 41 54 41 fa 01 00 00  4f 53 5f 46 53 43 6f 6e  |DATA....OS_FSCon|
00079000  74 72 6f 6c 20 32 33 0a  23 50 61 72 65 6e 74 20  |trol 23.#Parent |
00079010  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 0a 23 57 72  |OS_FSControl.#Wr|
00079020  61 70 20 6f 66 66 0a 3d  3e 09 52 30 20 3d 09 32  |ap off.=>.R0 =.2|
00079030  33 20 28 53 68 75 74 64  6f 77 6e 20 61 6c 6c 20  |3 (Shutdown all |
00079040  66 69 6c 69 6e 67 20 73  79 73 74 65 6d 73 29 0a  |filing systems).|
00079050  23 57 72 61 70 0a 0a 54  68 69 73 20 53 57 49 20  |#Wrap..This SWI |
00079060  66 6c 75 73 68 65 73 20  61 6e 64 20 63 6c 6f 73  |flushes and clos|
00079070  65 73 20 61 6c 6c 20 6f  70 65 6e 20 66 69 6c 65  |es all open file|
00079080  73 20 6f 6e 20 61 6c 6c  20 66 69 6c 69 6e 67 20  |s on all filing |
00079090  73 79 73 74 65 6d 73 2e  20 49 74 20 64 6f 65 73  |systems. It does|
000790a0  20 6e 6f 74 20 73 74 6f  70 20 69 66 20 61 6e 20  | not stop if an |
000790b0  69 6e 64 69 76 69 64 75  61 6c 20 63 6c 6f 73 65  |individual close|
000790c0  20 72 65 70 6f 72 74 73  20 61 6e 20 65 72 72 6f  | reports an erro|
000790d0  72 2c 20 62 75 74 20 77  69 6c 6c 20 6f 6e 6c 79  |r, but will only|
000790e0  20 72 65 74 75 72 6e 20  77 69 74 68 6f 75 74 20  | return without |
000790f0  65 72 72 6f 72 20 69 66  20 61 6c 6c 20 69 6e 64  |error if all ind|
00079100  69 76 69 64 75 61 6c 20  63 6c 6f 73 65 73 20 77  |ividual closes w|
00079110  65 72 65 20 65 72 72 6f  72 20 66 72 65 65 2e 20  |ere error free. |
00079120  49 74 20 69 6e 66 6f 72  6d 73 20 61 6c 6c 20 66  |It informs all f|
00079130  69 6c 69 6e 67 20 73 79  73 74 65 6d 73 20 6f 66  |iling systems of|
00079140  20 74 68 65 20 73 68 75  74 64 6f 77 6e 20 2d 20  | the shutdown - |
00079150  74 68 69 73 20 6d 65 61  6e 73 20 74 68 61 74 3a  |this means that:|
00079160  0a 0a 8f 09 4e 65 74 46  53 20 6c 6f 67 73 20 6f  |....NetFS logs o|
00079170  66 66 20 66 72 6f 6d 20  61 6c 6c 20 66 69 6c 65  |ff from all file|
00079180  20 73 65 72 76 65 72 73  0a 8f 09 46 69 6c 65 43  | servers...FileC|
00079190  6f 72 65 20 64 69 73 6d  6f 75 6e 74 73 20 61 6c  |ore dismounts al|
000791a0  6c 20 64 69 73 63 73 0a  8f 09 64 69 73 63 20 68  |l discs...disc h|
000791b0  65 61 64 73 20 61 72 65  20 70 61 72 6b 65 64 0a  |eads are parked.|
000791c0  0a 49 74 20 69 73 20 65  71 75 69 76 61 6c 65 6e  |.It is equivalen|
000791d0  74 20 74 6f 20 7b 66 43  6f 64 65 7d 2a 53 68 75  |t to {fCode}*Shu|
000791e0  74 64 6f 77 6e 7b 66 7d  2e 0a 00 00 44 41 54 41  |tdown{f}....DATA|
000791f0  2e 01 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |....OS_FSControl|
00079200  20 32 34 20 20 28 26 32  39 29 0a 23 50 61 72 65  | 24  (&29).#Pare|
00079210  6e 74 20 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 0a  |nt OS_FSControl.|
00079220  23 57 72 61 70 20 6f 66  66 0a 3d 3e 09 52 30 20  |#Wrap off.=>.R0 |
00079230  3d 09 32 34 20 28 53 65  74 20 61 74 74 72 69 62  |=.24 (Set attrib|
00079240  75 74 65 73 29 0a 09 52  31 20 3d 09 70 6f 69 6e  |utes)..R1 =.poin|
00079250  74 65 72 20 74 6f 20 28  77 69 6c 64 63 61 72 64  |ter to (wildcard|
00079260  65 64 29 20 66 69 6c 65  6e 61 6d 65 0a 09 52 32  |ed) filename..R2|
00079270  20 3d 09 3c 61 74 74 72  69 62 75 74 65 20 73 74  | =.<attribute st|
00079280  72 69 6e 67 3d 3e 66 73  79 73 5f 61 63 63 65 73  |ring=>fsys_acces|
00079290  73 5f 73 74 72 69 6e 67  3e 0a 23 57 72 61 70 0a  |s_string>.#Wrap.|
000792a0  0a 54 68 69 73 20 53 57  49 20 73 65 74 73 20 74  |.This SWI sets t|
000792b0  68 65 20 61 63 63 65 73  73 20 61 74 74 72 69 62  |he access attrib|
000792c0  75 74 65 73 20 66 6f 72  20 61 6c 6c 20 6c 65 61  |utes for all lea|
000792d0  66 20 6f 62 6a 65 63 74  73 20 74 68 61 74 20 6d  |f objects that m|
000792e0  61 74 63 68 20 74 68 65  20 66 69 6c 65 6e 61 6d  |atch the filenam|
000792f0  65 2e 20 49 74 20 69 73  20 65 71 75 69 76 61 6c  |e. It is equival|
00079300  65 6e 74 20 74 6f 20 7b  66 43 6f 64 65 7d 2a 41  |ent to {fCode}*A|
00079310  63 63 65 73 73 7b 66 7d  2e 0a 00 00 44 41 54 41  |ccess{f}....DATA|
00079320  25 02 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |%...OS_FSControl|
00079330  20 33 30 0a 23 50 61 72  65 6e 74 20 4f 53 5f 46  | 30.#Parent OS_F|
00079340  53 43 6f 6e 74 72 6f 6c  0a 23 57 72 61 70 20 6f  |SControl.#Wrap o|
00079350  66 66 0a 3d 3e 09 52 30  20 3d 09 32 30 20 28 52  |ff.=>.R0 =.20 (R|
00079360  65 61 64 20 6c 6f 63 61  74 69 6f 6e 20 6f 66 20  |ead location of |
00079370  74 65 6d 70 20 46 53 20  73 65 63 6f 6e 64 61 72  |temp FS secondar|
00079380  79 20 6d 6f 64 75 6c 65  29 0a 0a 3c 3d 09 52 30  |y module)..<=.R0|
00079390  20 70 72 65 73 65 72 76  65 64 0a 09 52 31 20 3d  | preserved..R1 =|
000793a0  09 70 6f 69 6e 74 65 72  20 74 6f 20 73 65 63 6f  |.pointer to seco|
000793b0  6e 64 61 79 20 6d 6f 64  75 6c 65 20 62 61 73 65  |nday module base|
000793c0  0a 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R2 =.pointer t|
000793d0  6f 20 70 72 69 76 61 74  65 20 77 6f 72 64 0a 23  |o private word.#|
000793e0  57 72 61 70 0a 0a 54 68  69 73 20 53 57 49 20 72  |Wrap..This SWI r|
000793f0  65 61 64 73 20 74 68 65  20 6c 6f 63 61 74 69 6f  |eads the locatio|
00079400  6e 20 6f 66 20 74 68 65  20 73 65 63 6f 6e 64 61  |n of the seconda|
00079410  72 79 20 6d 6f 64 75 6c  65 20 66 6f 72 20 74 68  |ry module for th|
00079420  65 20 74 65 6d 70 6f 72  61 72 79 20 66 69 6c 69  |e temporary fili|
00079430  6e 67 20 73 79 73 74 65  6d 2e 20 49 66 20 74 68  |ng system. If th|
00079440  65 72 65 20 69 73 20 6e  6f 20 74 65 6d 70 6f 61  |ere is no tempoa|
00079450  72 61 72 79 20 66 69 6c  69 6e 67 20 73 79 73 74  |rary filing syst|
00079460  65 6d 20 74 68 69 73 20  63 61 6c 6c 20 77 69 6c  |em this call wil|
00079470  6c 20 72 65 74 75 72 6e  20 76 61 6c 75 65 73 20  |l return values |
00079480  66 6f 72 20 74 68 65 20  63 75 72 72 65 6e 74 20  |for the current |
00079490  66 69 6c 69 6e 67 20 73  79 73 74 65 6d 2e 20 49  |filing system. I|
000794a0  66 20 74 68 65 72 65 20  69 73 20 6e 6f 20 63 75  |f there is no cu|
000794b0  72 72 65 6e 74 20 66 69  6c 69 6e 67 20 73 79 73  |rrent filing sys|
000794c0  74 65 6d 2c 20 6f 72 20  6e 6f 20 73 65 63 6f 6e  |tem, or no secon|
000794d0  64 61 72 79 20 6d 6f 64  75 6c 65 20 52 31 3d 30  |dary module R1=0|
000794e0  2c 20 52 32 20 69 73 20  75 6e 64 65 66 69 6e 65  |, R2 is undefine|
000794f0  64 2e 20 54 68 65 20 70  72 69 6d 61 72 79 20 6d  |d. The primary m|
00079500  6f 64 75 6c 65 20 76 61  6c 75 65 73 20 63 61 6e  |odule values can|
00079510  20 62 65 20 72 65 61 64  20 77 69 74 68 20 3c 4f  | be read with <O|
00079520  53 5f 46 53 43 6f 6e 74  72 6f 6c 20 32 30 3d 3e  |S_FSControl 20=>|
00079530  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 32 30 3e 2e  |OS_FSControl20>.|
00079540  0a 00 00 00 44 41 54 41  b4 00 00 00 4f 53 5f 46  |....DATA....OS_F|
00079550  53 43 6f 6e 74 72 6f 6c  20 33 32 20 20 28 26 32  |SControl 32  (&2|
00079560  39 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 46 53  |9).#Parent OS_FS|
00079570  43 6f 6e 74 72 6f 6c 0a  23 57 72 61 70 20 6f 66  |Control.#Wrap of|
00079580  66 0a 3d 3e 09 52 30 20  3d 09 33 32 20 28 4f 75  |f.=>.R0 =.32 (Ou|
00079590  74 70 75 74 20 6c 69 73  74 20 6f 66 20 6f 62 6a  |tput list of obj|
000795a0  65 63 74 73 29 0a 09 52  31 20 3d 09 28 77 69 6c  |ects)..R1 =.(wil|
000795b0  64 63 61 72 64 65 64 29  20 66 69 6c 65 6e 61 6d  |dcarded) filenam|
000795c0  65 0a 23 57 72 61 70 0a  0a 54 68 69 73 20 53 57  |e.#Wrap..This SW|
000795d0  49 20 69 73 20 65 71 75  69 76 61 6c 65 6e 74 20  |I is equivalent |
000795e0  74 6f 20 7b 66 43 6f 64  65 7d 2a 46 69 6c 65 49  |to {fCode}*FileI|
000795f0  6e 66 6f 7b 66 7d 2e 0a  44 41 54 41 e2 00 00 00  |nfo{f}..DATA....|
00079600  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 33 36 0a  |OS_FSControl 36.|
00079610  23 50 61 72 65 6e 74 20  4f 53 5f 46 53 43 6f 6e  |#Parent OS_FSCon|
00079620  74 72 6f 6c 0a 23 57 72  61 70 20 6f 66 66 0a 3d  |trol.#Wrap off.=|
00079630  3e 09 52 30 20 3d 09 33  36 20 28 52 65 6d 6f 76  |>.R0 =.36 (Remov|
00079640  65 20 69 6d 61 67 65 20  66 69 6c 69 6e 67 20 73  |e image filing s|
00079650  79 73 74 65 6d 29 0a 09  52 31 20 3d 09 69 6d 61  |ystem)..R1 =.ima|
00079660  67 65 20 66 69 6c 69 6e  67 20 73 79 73 74 65 6d  |ge filing system|
00079670  27 73 20 3c 66 69 6c 65  20 74 79 70 65 3d 3e 46  |'s <file type=>F|
00079680  69 6c 65 54 79 70 65 73  3a 21 52 6f 6f 74 3e 0a  |ileTypes:!Root>.|
00079690  23 57 72 61 70 0a 0a 54  68 69 73 20 53 57 49 20  |#Wrap..This SWI |
000796a0  69 73 20 75 73 65 64 20  74 6f 20 72 65 6d 6f 76  |is used to remov|
000796b0  65 20 61 6e 20 69 6d 61  67 65 20 66 69 6c 69 6e  |e an image filin|
000796c0  67 20 73 79 73 74 65 6d  20 66 72 6f 6d 20 46 69  |g system from Fi|
000796d0  6c 65 53 77 69 74 63 68  2e 0a 00 00 44 41 54 41  |leSwitch....DATA|
000796e0  5b 01 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |[...OS_FSControl|
000796f0  20 34 31 20 20 28 26 32  39 29 0a 23 50 61 72 65  | 41  (&29).#Pare|
00079700  6e 74 20 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 0a  |nt OS_FSControl.|
00079710  23 57 72 61 70 20 6f 66  66 0a 3d 3e 09 52 30 20  |#Wrap off.=>.R0 |
00079720  3d 09 34 31 20 28 52 65  74 75 72 6e 20 69 6d 61  |=.41 (Return ima|
00079730  67 65 20 64 65 66 65 63  74 20 6c 69 73 74 29 0a  |ge defect list).|
00079740  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
00079750  20 6e 61 6d 65 20 6f 66  20 69 6d 61 67 65 20 28  | name of image (|
00079760  6e 75 6c 6c 20 74 65 72  6d 69 6e 61 74 65 64 29  |null terminated)|
00079770  0a 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R2 =.pointer t|
00079780  6f 20 62 75 66 66 65 72  0a 09 52 35 20 3d 09 62  |o buffer..R5 =.b|
00079790  75 66 66 65 72 20 73 69  7a 65 0a 23 57 72 61 70  |uffer size.#Wrap|
000797a0  0a 0a 54 68 69 73 20 53  57 49 20 66 69 6c 6c 73  |..This SWI fills|
000797b0  20 74 68 65 20 62 75 66  66 65 72 20 77 69 74 68  | the buffer with|
000797c0  20 74 68 65 20 64 65 66  65 63 74 20 6c 69 73 74  | the defect list|
000797d0  20 6f 66 20 61 6e 20 69  6d 61 67 65 2e 20 54 68  | of an image. Th|
000797e0  65 20 62 75 66 66 65 72  20 69 73 20 66 69 6c 6c  |e buffer is fill|
000797f0  65 64 20 77 69 74 68 20  77 6f 72 64 73 20 67 69  |ed with words gi|
00079800  76 69 6e 67 20 62 79 74  65 20 6f 66 66 73 65 74  |ving byte offset|
00079810  73 20 6f 66 20 64 65 66  65 63 74 73 2c 20 74 65  |s of defects, te|
00079820  72 6d 69 6e 61 74 65 64  20 62 79 20 26 32 30 30  |rminated by &200|
00079830  30 30 30 30 30 2e 0a 00  44 41 54 41 eb 00 00 00  |00000...DATA....|
00079840  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 34 32 20  |OS_FSControl 42 |
00079850  20 28 26 32 39 29 0a 23  50 61 72 65 6e 74 20 4f  | (&29).#Parent O|
00079860  53 5f 46 53 43 6f 6e 74  72 6f 6c 0a 23 57 72 61  |S_FSControl.#Wra|
00079870  70 20 6f 66 66 0a 3d 3e  09 52 30 20 3d 09 34 32  |p off.=>.R0 =.42|
00079880  20 28 4d 61 70 20 6f 75  74 20 64 65 66 65 63 74  | (Map out defect|
00079890  20 66 72 6f 6d 20 69 6d  61 67 65 29 0a 09 52 31  | from image)..R1|
000798a0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 6e 61  | =.pointer to na|
000798b0  6d 65 20 6f 66 20 69 6d  61 67 65 20 28 6e 75 6c  |me of image (nul|
000798c0  6c 20 74 65 72 6d 69 6e  61 74 65 64 29 0a 09 52  |l terminated)..R|
000798d0  32 20 3d 09 62 79 74 65  20 6f 66 66 73 65 74 73  |2 =.byte offsets|
000798e0  20 6f 66 20 64 65 66 65  63 74 20 73 74 61 72 74  | of defect start|
000798f0  0a 23 57 72 61 70 0a 0a  54 68 69 73 20 53 57 49  |.#Wrap..This SWI|
00079900  20 6d 61 70 73 20 6f 75  74 20 61 20 64 65 66 65  | maps out a defe|
00079910  63 74 20 66 72 6f 6d 20  74 68 65 20 69 6d 61 67  |ct from the imag|
00079920  65 2e 0a 00 44 41 54 41  17 02 00 00 4f 53 5f 46  |e...DATA....OS_F|
00079930  53 43 6f 6e 74 72 6f 6c  20 34 36 20 20 28 26 32  |SControl 46  (&2|
00079940  39 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 46 53  |9).#Parent OS_FS|
00079950  43 6f 6e 74 72 6f 6c 0a  23 57 72 61 70 20 6f 66  |Control.#Wrap of|
00079960  66 0a 3d 3e 09 52 30 20  3d 09 34 36 20 28 52 65  |f.=>.R0 =.46 (Re|
00079970  74 75 72 6e 20 69 6d 61  67 65 20 75 73 65 64 20  |turn image used |
00079980  73 70 61 63 65 20 6d 61  70 29 0a 09 52 31 20 3d  |space map)..R1 =|
00079990  09 70 6f 69 6e 74 65 72  20 74 6f 20 6e 61 6d 65  |.pointer to name|
000799a0  20 6f 66 20 69 6d 61 67  65 20 28 6e 75 6c 6c 20  | of image (null |
000799b0  74 65 72 6d 69 6e 61 74  65 64 29 0a 09 52 32 20  |terminated)..R2 |
000799c0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 62 75 66  |=.pointer to buf|
000799d0  66 65 72 0a 09 52 35 20  3d 09 62 75 66 66 65 72  |fer..R5 =.buffer|
000799e0  20 73 69 7a 65 0a 23 57  72 61 70 0a 0a 54 68 69  | size.#Wrap..Thi|
000799f0  73 20 53 57 49 20 77 72  69 74 65 73 20 74 68 65  |s SWI writes the|
00079a00  20 69 6d 61 67 65 20 75  73 65 64 20 73 70 61 63  | image used spac|
00079a10  65 20 6d 61 70 20 74 6f  20 74 68 65 20 62 75 66  |e map to the buf|
00079a20  66 65 72 2c 20 31 20 62  69 74 73 20 73 69 67 6e  |fer, 1 bits sign|
00079a30  69 66 79 69 6e 67 20 75  73 65 64 20 62 6c 6f 63  |ifying used bloc|
00079a40  6b 73 2c 20 30 20 62 69  74 73 20 66 72 65 65 20  |ks, 0 bits free |
00079a50  62 6c 6f 63 6b 73 2e 20  42 69 74 20 30 20 69 6e  |blocks. Bit 0 in|
00079a60  20 61 20 62 79 74 65 20  63 6f 6d 65 73 20 62 65  | a byte comes be|
00079a70  66 6f 72 65 20 62 69 74  20 37 2e 20 54 68 69 73  |fore bit 7. This|
00079a80  20 53 57 49 20 73 65 74  73 20 62 69 74 73 20 75  | SWI sets bits u|
00079a90  70 20 74 6f 20 6d 69 6e  28 20 62 75 66 66 65 72  |p to min( buffer|
00079aa0  20 73 69 7a 65 2c 20 66  69 6c 65 20 73 69 7a 65  | size, file size|
00079ab0  20 f7 20 62 6c 6f 63 6b  20 73 69 7a 65 20 29 2e  | . block size ).|
00079ac0  20 42 6c 6f 63 6b 20 73  69 7a 65 20 66 6f 72 20  | Block size for |
00079ad0  61 20 66 69 6c 65 20 63  61 6e 20 62 65 20 72 65  |a file can be re|
00079ae0  61 64 20 77 69 74 68 20  3c 4f 53 5f 46 69 6c 65  |ad with <OS_File|
00079af0  20 32 34 3d 3e 4f 53 5f  46 69 6c 65 32 34 3e 2e  | 24=>OS_File24>.|
00079b00  20 46 6f 72 20 61 20 6e  6f 6e 2d 69 6d 61 67 65  | For a non-image|
00079b10  20 66 69 6c 65 20 74 68  65 20 62 75 66 66 65 72  | file the buffer|
00079b20  20 77 69 6c 6c 20 62 65  20 66 69 6c 6c 65 64 20  | will be filled |
00079b30  77 69 74 68 20 6f 6e 65  73 2e 0a 00 44 41 54 41  |with ones...DATA|
00079b40  f8 00 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |....OS_FSControl|
00079b50  20 35 20 20 28 26 32 39  29 0a 23 50 61 72 65 6e  | 5  (&29).#Paren|
00079b60  74 20 4f 53 5f 46 53 43  6f 6e 74 72 6f 6c 0a 23  |t OS_FSControl.#|
00079b70  57 72 61 70 20 6f 66 66  0a 3d 3e 09 52 30 20 3d  |Wrap off.=>.R0 =|
00079b80  09 35 20 28 43 61 74 61  6c 6f 67 75 65 20 64 69  |.5 (Catalogue di|
00079b90  72 65 63 74 6f 72 79 29  0a 09 52 31 20 3d 09 70  |rectory)..R1 =.p|
00079ba0  6f 69 6e 74 65 72 20 74  6f 20 28 77 69 6c 64 63  |ointer to (wildc|
00079bb0  61 72 64 65 64 29 20 66  69 6c 65 6e 61 6d 65 0a  |arded) filename.|
00079bc0  23 57 72 61 70 0a 0a 54  68 69 73 20 53 57 49 20  |#Wrap..This SWI |
00079bd0  69 73 20 65 71 75 69 76  61 6c 65 6e 74 20 74 6f  |is equivalent to|
00079be0  20 22 7b 66 43 6f 64 65  7d 2a 43 61 74 7b 66 7d  | "{fCode}*Cat{f}|
00079bf0  22 2e 20 49 66 20 61 20  70 6f 69 6e 74 65 72 20  |". If a pointer |
00079c00  74 6f 20 22 22 20 69 73  20 75 73 65 64 2c 20 74  |to "" is used, t|
00079c10  68 65 20 63 75 72 72 65  6e 74 20 64 69 72 65 63  |he current direc|
00079c20  74 6f 72 79 20 69 73 20  63 61 74 61 6c 6f 67 75  |tory is catalogu|
00079c30  65 64 2e 0a 44 41 54 41  01 02 00 00 4f 53 5f 46  |ed..DATA....OS_F|
00079c40  53 43 6f 6e 74 72 6f 6c  20 35 31 20 20 28 26 32  |SControl 51  (&2|
00079c50  39 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 46 53  |9).#Parent OS_FS|
00079c60  43 6f 6e 74 72 6f 6c 0a  23 57 72 61 70 20 6f 66  |Control.#Wrap of|
00079c70  66 0a 3d 3e 09 52 30 20  3d 09 35 31 20 28 52 65  |f.=>.R0 =.51 (Re|
00079c80  71 75 65 73 74 20 75 70  64 61 74 65 20 6f 66 20  |quest update of |
00079c90  69 6d 61 67 65 20 73 74  61 6d 70 29 0a 09 52 31  |image stamp)..R1|
00079ca0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 6e 61  | =.pointer to na|
00079cb0  6d 65 20 6f 66 20 6f 62  6a 65 63 74 0a 09 52 32  |me of object..R2|
00079cc0  20 3d 09 30 20 28 73 74  61 6d 70 20 77 68 65 6e  | =.0 (stamp when|
00079cd0  20 75 70 64 61 74 65 64  29 0a 09 20 09 31 20 28  | updated).. .1 (|
00079ce0  73 74 61 6d 70 20 6e 6f  77 29 0a 23 57 72 61 70  |stamp now).#Wrap|
00079cf0  0a 0a 54 68 69 73 20 53  57 49 20 69 73 20 63 61  |..This SWI is ca|
00079d00  6c 6c 65 64 20 62 79 20  61 20 68 61 6e 64 65 72  |lled by a hander|
00079d10  20 6f 66 20 64 69 73 63  73 20 28 73 75 63 68 20  | of discs (such |
00079d20  61 73 20 46 69 6c 65 43  6f 72 65 29 20 77 68 65  |as FileCore) whe|
00079d30  6e 20 69 74 20 77 61 6e  74 73 20 61 6e 20 69 6d  |n it wants an im|
00079d40  61 67 65 20 66 69 6c 69  6e 67 20 73 79 73 74 65  |age filing syste|
00079d50  6d 20 28 7b 2f 7d 65 2e  67 2e 7b 2f 7d 20 44 4f  |m ({/}e.g.{/} DO|
00079d60  53 46 53 29 20 74 6f 20  75 70 64 61 74 65 20 74  |SFS) to update t|
00079d70  68 65 20 69 6d 61 67 65  20 73 74 61 6d 70 20 28  |he image stamp (|
00079d80  61 2e 6b 2e 61 2e 20 3c  63 79 63 6c 65 20 49 44  |a.k.a. <cycle ID|
00079d90  3d 3e 46 69 6c 65 43 6f  72 65 5f 63 79 63 6c 65  |=>FileCore_cycle|
00079da0  69 64 3e 29 2e 0a 23 20  4e 3e 20 4f 4b 2c 20 77  |id>)..# N> OK, w|
00079db0  68 79 20 63 61 6e 27 74  20 74 68 65 20 50 52 4d  |hy can't the PRM|
00079dc0  20 73 65 74 74 6c 65 20  6f 6e 20 63 6f 6e 73 69  | settle on consi|
00079dd0  73 74 65 6e 74 20 6a 61  72 67 6f 6e 3f 0a 23 20  |stent jargon?.# |
00079de0  47 65 72 70 68 3e 20 6c  65 74 20 6e 6f 74 20 74  |Gerph> let not t|
00079df0  68 79 20 6c 65 66 74 20  68 61 6e 64 20 6b 6e 6f  |hy left hand kno|
00079e00  77 20 77 68 61 74 20 74  68 79 20 72 69 67 68 74  |w what thy right|
00079e10  20 68 61 6e 64 20 64 6f  65 74 68 0a 23 20 20 20  | hand doeth.#   |
00079e20  20 20 20 20 20 20 20 20  4d 61 74 74 68 65 77 20  |        Matthew |
00079e30  35 3a 34 38 0a 00 00 00  44 41 54 41 f3 00 00 00  |5:48....DATA....|
00079e40  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 36 20 20  |OS_FSControl 6  |
00079e50  28 26 32 39 29 0a 23 50  61 72 65 6e 74 20 4f 53  |(&29).#Parent OS|
00079e60  5f 46 53 43 6f 6e 74 72  6f 6c 0a 23 57 72 61 70  |_FSControl.#Wrap|
00079e70  20 6f 66 66 0a 3d 3e 09  52 30 20 3d 09 36 20 28  | off.=>.R0 =.6 (|
00079e80  45 78 61 6d 69 6e 65 20  64 69 72 65 63 74 6f 72  |Examine director|
00079e90  79 29 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |y)..R1 =.pointer|
00079ea0  20 74 6f 20 28 77 69 6c  64 63 61 72 64 65 64 29  | to (wildcarded)|
00079eb0  20 66 69 6c 65 6e 61 6d  65 0a 23 57 72 61 70 0a  | filename.#Wrap.|
00079ec0  0a 54 68 69 73 20 53 57  49 20 69 73 20 65 71 75  |.This SWI is equ|
00079ed0  69 76 61 6c 65 6e 74 20  74 6f 20 22 7b 66 43 6f  |ivalent to "{fCo|
00079ee0  64 65 7d 2a 45 78 7b 66  7d 22 2e 20 49 66 20 61  |de}*Ex{f}". If a|
00079ef0  20 70 6f 69 6e 74 65 72  20 74 6f 20 22 22 20 69  | pointer to "" i|
00079f00  73 20 75 73 65 64 2c 20  74 68 65 20 63 75 72 72  |s used, the curr|
00079f10  65 6e 74 20 64 69 72 65  63 74 6f 72 79 20 69 73  |ent directory is|
00079f20  20 65 78 61 6d 69 6e 65  64 2e 0a 00 44 41 54 41  | examined...DATA|
00079f30  f7 00 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |....OS_FSControl|
00079f40  20 37 20 20 28 26 32 39  29 0a 23 50 61 72 65 6e  | 7  (&29).#Paren|
00079f50  74 20 4f 53 5f 46 53 43  6f 6e 74 72 6f 6c 0a 23  |t OS_FSControl.#|
00079f60  57 72 61 70 20 6f 66 66  0a 3d 3e 09 52 30 20 3d  |Wrap off.=>.R0 =|
00079f70  09 37 20 28 43 61 74 61  6c 6f 67 75 65 20 6c 69  |.7 (Catalogue li|
00079f80  62 72 61 72 79 20 64 69  72 65 63 74 6f 72 79 29  |brary directory)|
00079f90  0a 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
00079fa0  6f 20 28 77 69 6c 64 63  61 72 64 65 64 29 20 66  |o (wildcarded) f|
00079fb0  69 6c 65 6e 61 6d 65 0a  23 57 72 61 70 0a 0a 54  |ilename.#Wrap..T|
00079fc0  68 69 73 20 53 57 49 20  69 73 20 65 71 75 69 76  |his SWI is equiv|
00079fd0  61 6c 65 6e 74 20 74 6f  20 22 7b 66 43 6f 64 65  |alent to "{fCode|
00079fe0  7d 2a 4c 43 61 74 7b 66  7d 22 2e 20 49 66 20 61  |}*LCat{f}". If a|
00079ff0  20 70 6f 69 6e 74 65 72  20 74 6f 20 22 22 20 69  | pointer to "" i|
0007a000  73 20 75 73 65 64 2c 20  74 68 65 20 6c 69 62 72  |s used, the libr|
0007a010  61 72 79 20 69 73 20 63  61 74 61 6c 6f 67 75 65  |ary is catalogue|
0007a020  64 2e 0a 00 44 41 54 41  e8 00 00 00 4f 53 5f 46  |d...DATA....OS_F|
0007a030  53 43 6f 6e 74 72 6f 6c  20 38 20 20 28 26 32 39  |SControl 8  (&29|
0007a040  29 0a 23 50 61 72 65 6e  74 20 4f 53 5f 46 53 43  |).#Parent OS_FSC|
0007a050  6f 6e 74 72 6f 6c 0a 23  57 72 61 70 20 6f 66 66  |ontrol.#Wrap off|
0007a060  0a 3d 3e 09 52 30 20 3d  09 38 20 28 45 78 61 6d  |.=>.R0 =.8 (Exam|
0007a070  69 6e 65 20 6c 69 62 72  61 72 79 29 0a 09 52 31  |ine library)..R1|
0007a080  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 28 77  | =.pointer to (w|
0007a090  69 6c 64 63 61 72 64 65  64 29 20 66 69 6c 65 6e  |ildcarded) filen|
0007a0a0  61 6d 65 0a 23 57 72 61  70 0a 0a 54 68 69 73 20  |ame.#Wrap..This |
0007a0b0  53 57 49 20 69 73 20 65  71 75 69 76 61 6c 65 6e  |SWI is equivalen|
0007a0c0  74 20 74 6f 20 22 7b 66  43 6f 64 65 7d 2a 4c 45  |t to "{fCode}*LE|
0007a0d0  78 7b 66 7d 22 2e 20 49  66 20 61 20 70 6f 69 6e  |x{f}". If a poin|
0007a0e0  74 65 72 20 74 6f 20 22  22 20 69 73 20 75 73 65  |ter to "" is use|
0007a0f0  64 2c 20 74 68 65 20 6c  69 62 72 61 72 79 20 69  |d, the library i|
0007a100  73 20 65 78 61 6d 69 6e  65 64 2e 0a 44 41 54 41  |s examined..DATA|
0007a110  b2 00 00 00 4f 53 5f 46  53 43 6f 6e 74 72 6f 6c  |....OS_FSControl|
0007a120  20 39 20 20 28 26 32 39  29 0a 23 50 61 72 65 6e  | 9  (&29).#Paren|
0007a130  74 20 4f 53 5f 46 53 43  6f 6e 74 72 6f 6c 0a 23  |t OS_FSControl.#|
0007a140  57 72 61 70 20 6f 66 66  0a 3d 3e 09 52 30 20 3d  |Wrap off.=>.R0 =|
0007a150  09 39 20 28 45 78 61 6d  69 6e 65 20 6f 62 6a 65  |.9 (Examine obje|
0007a160  63 74 73 29 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |cts)..R1 =.point|
0007a170  65 72 20 74 6f 20 28 77  69 6c 64 63 61 72 64 65  |er to (wildcarde|
0007a180  64 29 20 66 69 6c 65 6e  61 6d 65 0a 23 57 72 61  |d) filename.#Wra|
0007a190  70 0a 0a 54 68 69 73 20  53 57 49 20 69 73 20 65  |p..This SWI is e|
0007a1a0  71 75 69 76 61 6c 65 6e  74 20 74 6f 20 7b 66 43  |quivalent to {fC|
0007a1b0  6f 64 65 7d 2a 49 6e 66  6f 7b 66 7d 2e 0a 00 00  |ode}*Info{f}....|
0007a1c0  44 41 54 41 44 01 00 00  4f 62 6a 65 63 74 20 74  |DATAD...Object t|
0007a1d0  79 70 65 73 20 66 6f 72  20 64 69 73 63 20 61 64  |ypes for disc ad|
0007a1e0  64 72 65 73 73 20 73 63  61 6e 0a 23 50 61 72 65  |dress scan.#Pare|
0007a1f0  6e 74 20 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 35  |nt OS_FSControl5|
0007a200  32 0a 5c 23 09 4d 65 61  6e 69 6e 67 0a 23 4c 69  |2.\#.Meaning.#Li|
0007a210  6e 65 0a 30 09 4e 6f 20  6f 62 6a 65 63 74 20 66  |ne.0.No object f|
0007a220  6f 75 6e 64 20 28 6f 66  66 73 65 74 20 69 73 20  |ound (offset is |
0007a230  66 72 65 65 2f 64 65 66  65 63 74 2f 62 65 79 6f  |free/defect/beyo|
0007a240  6e 64 20 69 6d 61 67 65  20 65 6e 64 29 0a 31 09  |nd image end).1.|
0007a250  4e 6f 20 6f 62 6a 65 63  74 20 66 6f 75 6e 64 20  |No object found |
0007a260  28 6f 66 66 73 65 74 20  75 73 65 64 20 66 6f 72  |(offset used for|
0007a270  20 66 72 65 65 20 73 70  61 63 65 20 6d 61 70 20  | free space map |
0007a280  6f 72 20 6f 74 68 65 72  20 6e 6f 6e 2d 66 69 6c  |or other non-fil|
0007a290  65 20 75 73 65 29 0a 32  09 4f 62 6a 65 63 74 20  |e use).2.Object |
0007a2a0  66 6f 75 6e 64 20 28 63  61 6e 6e 6f 74 20 73 68  |found (cannot sh|
0007a2b0  61 72 65 20 6f 66 66 73  65 74 20 77 69 74 68 20  |are offset with |
0007a2c0  6f 74 68 65 72 20 6f 62  6a 65 63 74 73 29 0a 33  |other objects).3|
0007a2d0  09 4f 62 6a 65 63 74 20  66 6f 75 6e 64 20 28 63  |.Object found (c|
0007a2e0  61 6e 20 73 68 61 72 65  20 6f 66 66 73 65 74 20  |an share offset |
0007a2f0  77 69 74 68 20 6f 74 68  65 72 20 6f 62 6a 65 63  |with other objec|
0007a300  74 73 29 0a 44 49 52 24  18 06 00 00 18 06 00 00  |ts).DIR$........|
0007a310  1c a9 07 00 47 fd ff ff  07 73 bd cd e5 00 00 00  |....G....s......|
0007a320  03 00 00 00 00 00 00 00  31 32 00 00 04 aa 07 00  |........12......|
0007a330  47 fd ff ff 2d 10 a7 cd  de 00 00 00 03 00 00 00  |G...-...........|
0007a340  00 00 00 00 32 00 00 00  e4 aa 07 00 47 fd ff ff  |....2.......G...|
0007a350  27 dd a6 cd ee 00 00 00  03 00 00 00 00 00 00 00  |'...............|
0007a360  32 36 00 00 d4 ab 07 00  48 fd ff ff 72 5a 5e 25  |26......H...rZ^%|
0007a370  b8 01 00 00 03 00 00 00  00 00 00 00 33 00 00 00  |............3...|
0007a380  8c ad 07 00 47 fd ff ff  a8 76 bd cd 7b 01 00 00  |....G....v..{...|
0007a390  03 00 00 00 00 00 00 00  33 34 00 00 08 af 07 00  |........34......|
0007a3a0  47 fd ff ff 42 02 a7 cd  58 02 00 00 03 00 00 00  |G...B...X.......|
0007a3b0  00 00 00 00 33 36 00 00  60 b1 07 00 47 fd ff ff  |....36..`...G...|
0007a3c0  9b 00 a7 cd ac 01 00 00  03 00 00 00 00 00 00 00  |................|
0007a3d0  34 30 00 00 0c b3 07 00  47 fd ff ff 5c 79 bd cd  |40......G...\y..|
0007a3e0  6d 01 00 00 03 00 00 00  00 00 00 00 39 00 00 00  |m...........9...|
0007a3f0  7c b4 07 00 48 fd ff ff  58 19 c5 0f 26 02 00 00  ||...H...X...&...|
0007a400  03 00 00 00 00 00 00 00  61 63 74 69 6f 6e 00 00  |........action..|
0007a410  a4 b6 07 00 48 fd ff ff  4e 4f e1 18 a3 01 00 00  |....H...NO......|
0007a420  03 00 00 00 00 00 00 00  61 72 65 61 00 00 00 00  |........area....|
0007a430  48 b8 07 00 48 fd ff ff  28 23 c5 0f 4e 01 00 00  |H...H...(#..N...|
0007a440  03 00 00 00 00 00 00 00  70 74 72 00 98 b9 07 00  |........ptr.....|
0007a450  48 fd ff ff c2 2d b0 26  1a 08 00 00 03 00 00 00  |H....-.&........|
0007a460  00 00 00 00 72 65 61 73  6f 6e 00 00 b4 c1 07 00  |....reason......|
0007a470  47 fd ff ff a2 6d 35 cd  19 01 00 00 03 00 00 00  |G....m5.........|
0007a480  00 00 00 00 72 65 61 73  6f 6e 32 00 d0 c2 07 00  |....reason2.....|
0007a490  47 fd ff ff 72 ee a6 cd  54 01 00 00 03 00 00 00  |G...r...T.......|
0007a4a0  00 00 00 00 38 00 00 00  24 c4 07 00 47 fd ff ff  |....8...$...G...|
0007a4b0  d0 fa a6 cd 34 01 00 00  03 00 00 00 00 00 00 00  |....4...........|
0007a4c0  31 30 00 00 58 c5 07 00  47 fd ff ff eb 0e a7 cd  |10..X...G.......|
0007a4d0  b8 01 00 00 03 00 00 00  00 00 00 00 31 31 00 00  |............11..|
0007a4e0  10 c7 07 00 47 fd ff ff  e9 15 a7 cd 4c 01 00 00  |....G.......L...|
0007a4f0  03 00 00 00 00 00 00 00  31 33 00 00 5c c8 07 00  |........13..\...|
0007a500  47 fd ff ff 43 14 a7 cd  d6 01 00 00 03 00 00 00  |G...C...........|
0007a510  00 00 00 00 31 34 00 00  34 ca 07 00 47 fd ff ff  |....14..4...G...|
0007a520  94 13 a7 cd 5f 01 00 00  03 00 00 00 00 00 00 00  |...._...........|
0007a530  31 35 00 00 94 cb 07 00  47 fd ff ff e7 11 a7 cd  |15......G.......|
0007a540  46 02 00 00 03 00 00 00  00 00 00 00 31 36 00 00  |F...........16..|
0007a550  dc cd 07 00 47 fd ff ff  6e 0e a7 cd 38 01 00 00  |....G...n...8...|
0007a560  03 00 00 00 00 00 00 00  32 34 00 00 14 cf 07 00  |........24......|
0007a570  47 fd ff ff cb 0d a7 cd  c6 00 00 00 03 00 00 00  |G...............|
0007a580  00 00 00 00 32 35 00 00  dc cf 07 00 47 fd ff ff  |....25......G...|
0007a590  bc db a6 cd 2d 01 00 00  03 00 00 00 00 00 00 00  |....-...........|
0007a5a0  32 37 00 00 0c d1 07 00  48 fd ff ff bb 6b 12 0e  |27......H....k..|
0007a5b0  47 01 00 00 03 00 00 00  00 00 00 00 32 38 00 00  |G...........28..|
0007a5c0  54 d2 07 00 47 fd ff ff  04 32 4c d1 df 00 00 00  |T...G....2L.....|
0007a5d0  13 00 00 00 00 00 00 00  32 39 00 00 34 d3 07 00  |........29..4...|
0007a5e0  47 fd ff ff 5a 09 a7 cd  c1 00 00 00 03 00 00 00  |G...Z...........|
0007a5f0  00 00 00 00 33 30 00 00  f8 d3 07 00 47 fd ff ff  |....30......G...|
0007a600  e2 08 a7 cd 3b 01 00 00  03 00 00 00 00 00 00 00  |....;...........|
0007a610  33 31 00 00 34 d5 07 00  47 fd ff ff 59 08 a7 cd  |31..4...G...Y...|
0007a620  15 01 00 00 03 00 00 00  00 00 00 00 33 32 00 00  |............32..|
0007a630  4c d6 07 00 47 fd ff ff  c4 07 a7 cd d8 00 00 00  |L...G...........|
0007a640  03 00 00 00 00 00 00 00  33 33 00 00 24 d7 07 00  |........33..$...|
0007a650  47 fd ff ff 59 03 a7 cd  02 02 00 00 03 00 00 00  |G...Y...........|
0007a660  00 00 00 00 33 35 00 00  28 d9 07 00 47 fd ff ff  |....35..(...G...|
0007a670  56 01 a7 cd 1b 02 00 00  03 00 00 00 00 00 00 00  |V...............|
0007a680  33 37 00 00 44 db 07 00  47 fd ff ff d4 ff a6 cd  |37..D...G.......|
0007a690  43 01 00 00 03 00 00 00  00 00 00 00 34 31 00 00  |C...........41..|
0007a6a0  88 dc 07 00 47 fd ff ff  3c ff a6 cd 37 01 00 00  |....G...<...7...|
0007a6b0  03 00 00 00 00 00 00 00  34 32 00 00 c0 dd 07 00  |........42......|
0007a6c0  47 fd ff ff a4 fe a6 cd  3b 01 00 00 03 00 00 00  |G.......;.......|
0007a6d0  00 00 00 00 34 33 00 00  fc de 07 00 47 fd ff ff  |....43......G...|
0007a6e0  ef fd a6 cd 4b 01 00 00  03 00 00 00 00 00 00 00  |....K...........|
0007a6f0  34 34 00 00 48 e0 07 00  47 fd ff ff 46 fd a6 cd  |44..H...G...F...|
0007a700  43 01 00 00 03 00 00 00  00 00 00 00 34 35 00 00  |C...........45..|
0007a710  8c e1 07 00 47 fd ff ff  2a fc a6 cd 0b 01 00 00  |....G...*.......|
0007a720  03 00 00 00 00 00 00 00  34 36 00 00 98 e2 07 00  |........46......|
0007a730  48 fd ff ff 3d 78 12 0e  e5 00 00 00 03 00 00 00  |H...=x..........|
0007a740  00 00 00 00 34 37 00 00  80 e3 07 00 47 fd ff ff  |....47......G...|
0007a750  64 fa a6 cd 16 01 00 00  03 00 00 00 00 00 00 00  |d...............|
0007a760  34 38 00 00 98 e4 07 00  47 fd ff ff e9 f9 a6 cd  |48......G.......|
0007a770  4b 01 00 00 03 00 00 00  00 00 00 00 34 39 00 00  |K...........49..|
0007a780  e4 e5 07 00 47 fd ff ff  04 f9 a6 cd a3 01 00 00  |....G...........|
0007a790  03 00 00 00 00 00 00 00  35 30 00 00 88 e7 07 00  |........50......|
0007a7a0  47 fd ff ff 2e f8 a6 cd  88 01 00 00 03 00 00 00  |G...............|
0007a7b0  00 00 00 00 35 31 00 00  10 e9 07 00 47 fd ff ff  |....51......G...|
0007a7c0  87 f7 a6 cd ac 01 00 00  03 00 00 00 00 00 00 00  |................|
0007a7d0  35 32 00 00 bc ea 07 00  48 fd ff ff ad d5 e0 18  |52......H.......|
0007a7e0  90 02 00 00 13 00 00 00  00 00 00 00 35 33 00 00  |............53..|
0007a7f0  4c ed 07 00 47 fd ff ff  1a f6 a6 cd 1e 01 00 00  |L...G...........|
0007a800  03 00 00 00 00 00 00 00  35 34 00 00 6c ee 07 00  |........54..l...|
0007a810  47 fd ff ff bd f0 a6 cd  8d 02 00 00 03 00 00 00  |G...............|
0007a820  00 00 00 00 36 30 00 00  fc f0 07 00 47 fd ff ff  |....60......G...|
0007a830  d5 ef a6 cd 85 02 00 00  03 00 00 00 00 00 00 00  |................|
0007a840  36 31 00 00 84 f3 07 00  47 fd ff ff 34 ef a6 cd  |61......G...4...|
0007a850  20 02 00 00 03 00 00 00  00 00 00 00 36 32 00 00  | ...........62..|
0007a860  a4 f5 07 00 47 fd ff ff  b6 10 a7 cd 07 01 00 00  |....G...........|
0007a870  03 00 00 00 00 00 00 00  31 37 00 00 ac f6 07 00  |........17......|
0007a880  47 fd ff ff 84 c7 3a cd  80 02 00 00 03 00 00 00  |G.....:.........|
0007a890  00 00 00 00 74 79 70 65  00 00 00 00 2c f9 07 00  |....type....,...|
0007a8a0  47 fd ff ff 62 f2 a6 cd  40 01 00 00 03 00 00 00  |G...b...@.......|
0007a8b0  00 00 00 00 35 37 00 00  6c fa 07 00 47 fd ff ff  |....57..l...G...|
0007a8c0  ac f1 a6 cd 56 01 00 00  03 00 00 00 00 00 00 00  |....V...........|
0007a8d0  35 38 00 00 c4 fb 07 00  48 fd ff ff 82 c4 d5 10  |58......H.......|
0007a8e0  68 04 00 00 03 00 00 00  00 00 00 00 35 35 00 00  |h...........55..|
0007a8f0  2c 00 08 00 48 fd ff ff  a4 a3 19 1e 2c 00 00 00  |,...H.......,...|
0007a900  33 00 00 00 00 00 00 00  35 36 3e 4f 53 5f 53 70  |3.......56>OS_Sp|
0007a910  72 69 74 65 4f 70 5f 35  35 00 00 00 44 41 54 41  |riteOp_55...DATA|
0007a920  e5 00 00 00 53 61 76 65  20 73 70 72 69 74 65 20  |....Save sprite |
0007a930  61 72 65 61 20 20 28 31  32 29 0a 23 50 61 72 65  |area  (12).#Pare|
0007a940  6e 74 20 4f 53 5f 53 70  72 69 74 65 4f 70 5f 52  |nt OS_SpriteOp_R|
0007a950  65 61 73 6f 6e 0a 3d 3e  09 52 30 20 3d 09 3c 31  |eason.=>.R0 =.<1|
0007a960  32 2c 20 26 43 3d 3e 4f  53 5f 73 70 72 69 74 65  |2, &C=>OS_sprite|
0007a970  6f 70 5f 52 65 61 73 6f  6e 32 3e 20 28 53 61 76  |op_Reason2> (Sav|
0007a980  65 20 73 70 72 69 74 65  20 61 72 65 61 29 0a 09  |e sprite area)..|
0007a990  52 31 20 3d 09 3c 53 70  72 69 74 65 20 61 72 65  |R1 =.<Sprite are|
0007a9a0  61 3d 3e 4f 53 5f 53 70  72 69 74 65 4f 70 5f 41  |a=>OS_SpriteOp_A|
0007a9b0  72 65 61 3e 0a 09 52 32  20 3d 09 70 6f 69 6e 74  |rea>..R2 =.point|
0007a9c0  65 72 20 74 6f 20 66 69  6c 65 6e 61 6d 65 0a 0a  |er to filename..|
0007a9d0  54 68 69 73 20 63 61 6c  6c 20 73 61 76 65 73 20  |This call saves |
0007a9e0  74 68 65 20 65 6e 74 69  72 65 20 73 70 72 69 74  |the entire sprit|
0007a9f0  65 20 61 72 65 61 20 74  6f 20 61 20 66 69 6c 65  |e area to a file|
0007aa00  2e 00 00 00 44 41 54 41  de 00 00 00 53 63 72 65  |....DATA....Scre|
0007aa10  65 6e 20 73 61 76 65 20  20 28 32 29 0a 23 50 61  |en save  (2).#Pa|
0007aa20  72 65 6e 74 20 4f 53 5f  53 70 72 69 74 65 4f 70  |rent OS_SpriteOp|
0007aa30  5f 52 65 61 73 6f 6e 0a  3d 3e 09 52 30 20 3d 09  |_Reason.=>.R0 =.|
0007aa40  3c 32 2c 20 26 32 3d 3e  6f 73 5f 73 70 72 69 74  |<2, &2=>os_sprit|
0007aa50  65 6f 70 5f 72 65 61 73  6f 6e 32 3e 20 28 53 63  |eop_reason2> (Sc|
0007aa60  72 65 65 6e 20 73 61 76  65 29 0a 09 52 32 20 3d  |reen save)..R2 =|
0007aa70  09 70 61 74 68 6e 61 6d  65 0a 09 52 33 20 3d 09  |.pathname..R3 =.|
0007aa80  70 61 6c 65 74 74 65 20  73 61 76 65 20 28 30 2c  |palette save (0,|
0007aa90  31 3d 6e 6f 2c 79 65 73  29 0a 0a 54 68 69 73 20  |1=no,yes)..This |
0007aaa0  53 57 49 20 73 61 76 65  73 20 74 68 65 20 63 75  |SWI saves the cu|
0007aab0  72 72 65 6e 74 20 67 72  61 70 68 69 63 73 20 77  |rrent graphics w|
0007aac0  69 6e 64 6f 77 2e 20 53  70 72 69 74 65 6e 61 6d  |indow. Spritenam|
0007aad0  65 20 69 73 20 22 73 63  72 65 65 6e 64 75 6d 70  |e is "screendump|
0007aae0  22 2e 00 00 44 41 54 41  ee 00 00 00 52 65 6e 61  |"...DATA....Rena|
0007aaf0  6d 65 20 73 70 72 69 74  65 20 20 28 32 36 29 0a  |me sprite  (26).|
0007ab00  23 50 61 72 65 6e 74 20  4f 53 5f 53 70 72 69 74  |#Parent OS_Sprit|
0007ab10  65 4f 70 5f 52 65 61 73  6f 6e 0a 3d 3e 09 52 30  |eOp_Reason.=>.R0|
0007ab20  20 3d 09 3c 32 36 2c 20  26 31 41 3d 3e 4f 53 5f  | =.<26, &1A=>OS_|
0007ab30  73 70 72 69 74 65 6f 70  5f 52 65 61 73 6f 6e 32  |spriteop_Reason2|
0007ab40  3e 20 28 52 65 6e 61 6d  65 20 73 70 72 69 74 65  |> (Rename sprite|
0007ab50  29 0a 09 52 31 20 3d 09  3c 53 70 72 69 74 65 20  |)..R1 =.<Sprite |
0007ab60  61 72 65 61 3d 3e 4f 53  5f 53 70 72 69 74 65 4f  |area=>OS_SpriteO|
0007ab70  70 5f 41 72 65 61 3e 0a  09 52 32 20 3d 09 53 70  |p_Area>..R2 =.Sp|
0007ab80  72 69 74 65 20 6e 61 6d  65 2f 70 6f 69 6e 74 65  |rite name/pointe|
0007ab90  72 0a 09 52 33 20 3d 09  6e 65 77 20 6e 61 6d 65  |r..R3 =.new name|
0007aba0  20 6f 66 20 73 70 72 69  74 65 0a 0a 54 68 69 73  | of sprite..This|
0007abb0  20 53 57 49 20 72 65 6e  61 6d 65 73 20 74 68 65  | SWI renames the|
0007abc0  20 73 70 65 63 69 66 69  65 64 20 73 70 72 69 74  | specified sprit|
0007abd0  65 2e 00 00 44 41 54 41  b8 01 00 00 53 63 72 65  |e...DATA....Scre|
0007abe0  65 6e 20 6c 6f 61 64 20  20 28 33 29 0a 23 50 61  |en load  (3).#Pa|
0007abf0  72 65 6e 74 20 4f 53 5f  53 70 72 69 74 65 4f 70  |rent OS_SpriteOp|
0007ac00  5f 52 65 61 73 6f 6e 0a  3d 3e 09 52 30 20 3d 09  |_Reason.=>.R0 =.|
0007ac10  3c 33 2c 20 26 33 3d 3e  6f 73 5f 73 70 72 69 74  |<3, &3=>os_sprit|
0007ac20  65 6f 70 5f 72 65 61 73  6f 6e 32 3e 20 28 53 63  |eop_reason2> (Sc|
0007ac30  72 65 65 6e 20 6c 6f 61  64 29 0a 09 52 32 20 3d  |reen load)..R2 =|
0007ac40  09 70 6f 69 6e 74 65 72  20 74 6f 20 66 69 6c 65  |.pointer to file|
0007ac50  6e 61 6d 65 0a 0a 54 68  69 73 20 53 57 49 20 70  |name..This SWI p|
0007ac60  6c 6f 74 73 20 74 68 65  20 66 69 72 73 74 20 73  |lots the first s|
0007ac70  70 72 69 74 65 20 69 6e  20 74 68 65 20 66 69 6c  |prite in the fil|
0007ac80  65 20 69 6e 20 74 68 65  20 62 6f 74 74 6f 6d 20  |e in the bottom |
0007ac90  6c 65 66 74 20 6f 66 20  74 68 65 20 67 72 61 70  |left of the grap|
0007aca0  68 69 63 73 20 77 69 6e  64 6f 77 2e 20 43 68 61  |hics window. Cha|
0007acb0  6e 67 65 73 20 6d 6f 64  65 20 69 66 20 6e 65 63  |nges mode if nec|
0007acc0  63 65 73 73 61 72 79 2c  20 61 6e 64 20 73 65 74  |cessary, and set|
0007acd0  73 20 70 61 6c 65 74 74  65 20 69 66 20 74 68 65  |s palette if the|
0007ace0  72 65 20 69 73 20 61 6e  79 2e 0a 0a 4e 6f 74 65  |re is any...Note|
0007acf0  3a 20 4f 6e 20 52 4f 33  2e 35 20 61 6e 64 20 6c  |: On RO3.5 and l|
0007ad00  61 74 65 72 2c 20 74 68  69 73 20 63 61 6c 6c 20  |ater, this call |
0007ad10  77 69 6c 6c 20 6c 6f 61  64 20 74 68 65 20 69 6d  |will load the im|
0007ad20  61 67 65 20 61 74 20 74  68 65 20 62 6f 74 74 6f  |age at the botto|
0007ad30  6d 20 6c 65 66 74 20 6f  66 20 74 68 65 20 73 63  |m left of the sc|
0007ad40  72 65 65 6e 2e 20 45 61  72 6c 69 65 72 20 76 65  |reen. Earlier ve|
0007ad50  72 73 69 6f 6e 73 20 6f  66 20 52 49 53 43 20 4f  |rsions of RISC O|
0007ad60  53 20 77 69 6c 6c 20 6c  6f 61 64 20 74 68 65 20  |S will load the |
0007ad70  69 6d 61 67 65 20 74 6f  20 74 68 65 20 73 63 72  |image to the scr|
0007ad80  65 65 6e 20 6f 72 69 67  69 6e 2e 0a 44 41 54 41  |een origin..DATA|
0007ad90  7b 01 00 00 50 75 74 20  73 70 72 69 74 65 20 61  |{...Put sprite a|
0007ada0  74 20 63 6f 6f 72 64 73  20 20 28 33 34 29 0a 23  |t coords  (34).#|
0007adb0  50 61 72 65 6e 74 20 4f  53 5f 53 70 72 69 74 65  |Parent OS_Sprite|
0007adc0  4f 70 5f 52 65 61 73 6f  6e 0a 3d 3e 09 52 30 20  |Op_Reason.=>.R0 |
0007add0  3d 09 3c 33 34 2c 20 26  32 32 3d 3e 4f 53 5f 73  |=.<34, &22=>OS_s|
0007ade0  70 72 69 74 65 6f 70 5f  52 65 61 73 6f 6e 32 3e  |priteop_Reason2>|
0007adf0  20 28 50 75 74 20 73 70  72 69 74 65 20 61 74 20  | (Put sprite at |
0007ae00  63 6f 6f 72 64 73 29 0a  09 52 31 20 3d 09 3c 53  |coords)..R1 =.<S|
0007ae10  70 72 69 74 65 20 61 72  65 61 3d 3e 4f 53 5f 53  |prite area=>OS_S|
0007ae20  70 72 69 74 65 4f 70 5f  41 72 65 61 3e 0a 09 52  |priteOp_Area>..R|
0007ae30  32 20 3d 09 53 70 72 69  74 65 20 6e 61 6d 65 2f  |2 =.Sprite name/|
0007ae40  70 6f 69 6e 74 65 72 0a  09 52 33 20 3d 09 78 0a  |pointer..R3 =.x.|
0007ae50  09 52 34 20 3d 09 79 0a  09 52 35 20 3d 09 3c 61  |.R4 =.y..R5 =.<a|
0007ae60  63 74 69 6f 6e 3d 3e 4f  53 5f 53 70 72 69 74 65  |ction=>OS_Sprite|
0007ae70  4f 70 5f 41 63 74 69 6f  6e 3e 0a 0a 54 68 69 73  |Op_Action>..This|
0007ae80  20 53 57 49 20 70 6c 6f  74 73 20 74 68 65 20 73  | SWI plots the s|
0007ae90  70 72 69 74 65 20 73 70  65 63 69 66 69 65 64 20  |prite specified |
0007aea0  61 74 20 74 68 65 20 63  6f 2d 6f 72 64 69 6e 61  |at the co-ordina|
0007aeb0  74 65 73 20 67 69 76 65  6e 2e 20 44 6f 20 6e 6f  |tes given. Do no|
0007aec0  74 20 75 73 65 20 69 66  20 6e 6f 74 20 69 6e 20  |t use if not in |
0007aed0  74 68 65 20 73 61 6d 65  20 6d 6f 64 65 20 73 74  |the same mode st|
0007aee0  79 6c 65 20 28 63 6f 6c  6f 75 72 73 2f 72 65 73  |yle (colours/res|
0007aef0  6f 6c 75 74 69 6f 6e 29  20 61 73 20 74 68 65 20  |olution) as the |
0007af00  73 70 72 69 74 65 2e 00  44 41 54 41 58 02 00 00  |sprite..DATAX...|
0007af10  53 65 74 20 70 6f 69 6e  74 65 72 20 73 68 61 70  |Set pointer shap|
0007af20  65 20 20 28 33 36 29 0a  23 50 61 72 65 6e 74 20  |e  (36).#Parent |
0007af30  4f 53 5f 53 70 72 69 74  65 4f 70 5f 52 65 61 73  |OS_SpriteOp_Reas|
0007af40  6f 6e 0a 3d 3e 09 52 30  20 3d 09 3c 33 36 2c 20  |on.=>.R0 =.<36, |
0007af50  26 32 34 3d 3e 4f 53 5f  53 70 72 69 74 65 4f 70  |&24=>OS_SpriteOp|
0007af60  5f 52 65 61 73 6f 6e 32  3e 20 28 53 65 74 20 70  |_Reason2> (Set p|
0007af70  6f 69 6e 74 65 72 20 73  68 61 70 65 29 0a 09 52  |ointer shape)..R|
0007af80  31 20 3d 09 3c 53 70 72  69 74 65 20 61 72 65 61  |1 =.<Sprite area|
0007af90  3d 3e 4f 53 5f 53 70 72  69 74 65 4f 70 5f 41 72  |=>OS_SpriteOp_Ar|
0007afa0  65 61 3e 0a 09 52 32 20  3d 09 53 70 72 69 74 65  |ea>..R2 =.Sprite|
0007afb0  20 6e 61 6d 65 2f 70 6f  69 6e 74 65 72 0a 09 52  | name/pointer..R|
0007afc0  33 20 3d 09 3c 66 6c 61  67 73 3d 3e 2e 66 6c 61  |3 =.<flags=>.fla|
0007afd0  67 73 3e 0a 09 52 34 20  3d 09 58 20 6f 66 66 73  |gs>..R4 =.X offs|
0007afe0  65 74 20 6f 66 20 61 63  74 69 76 65 20 70 6f 69  |et of active poi|
0007aff0  6e 74 0a 09 52 35 20 3d  09 59 20 6f 66 66 73 65  |nt..R5 =.Y offse|
0007b000  74 20 6f 66 20 61 63 74  69 76 65 20 70 6f 69 6e  |t of active poin|
0007b010  74 0a 09 52 36 20 3d 09  3c 73 63 61 6c 65 20 66  |t..R6 =.<scale f|
0007b020  61 63 74 6f 72 73 3d 3e  6f 73 5f 73 63 61 6c 65  |actors=>os_scale|
0007b030  66 61 63 74 6f 72 73 3e  2c 20 6f 72 20 30 20 66  |factors>, or 0 f|
0007b040  6f 72 20 31 3a 31 20 73  63 61 6c 69 6e 67 0a 09  |or 1:1 scaling..|
0007b050  52 37 20 3d 09 3c 70 69  78 65 6c 20 74 72 61 6e  |R7 =.<pixel tran|
0007b060  73 6c 61 74 69 6f 6e 20  74 61 62 6c 65 3d 3e 63  |slation table=>c|
0007b070  6f 6c 6f 75 72 74 72 61  6e 73 5f 70 69 78 74 72  |olourtrans_pixtr|
0007b080  61 6e 73 3e 0a 0a 54 68  69 73 20 53 57 49 20 73  |ans>..This SWI s|
0007b090  65 74 73 20 6f 6e 65 20  6f 66 20 74 68 65 20 66  |ets one of the f|
0007b0a0  6f 75 72 20 70 6f 69 6e  74 65 72 20 73 68 61 70  |our pointer shap|
0007b0b0  65 73 2e 20 28 52 34 2c  52 35 29 20 69 73 20 70  |es. (R4,R5) is p|
0007b0c0  69 78 65 6c 2d 6f 66 66  73 65 74 20 66 72 6f 6d  |ixel-offset from|
0007b0d0  20 74 6f 70 20 6c 65 66  74 20 63 6f 72 6e 65 72  | top left corner|
0007b0e0  2e 0a 23 53 75 62 70 61  67 65 20 66 6c 61 67 73  |..#Subpage flags|
0007b0f0  0a 42 69 74 73 09 4d 65  61 6e 69 6e 67 0a 23 4c  |.Bits.Meaning.#L|
0007b100  69 6e 65 0a 30 2d 33 09  70 6f 69 6e 74 65 72 20  |ine.0-3.pointer |
0007b110  6e 75 6d 62 65 72 20 28  31 2d 34 29 0a 34 09 30  |number (1-4).4.0|
0007b120  20 3d 3e 20 53 65 74 20  73 68 61 70 65 20 64 61  | => Set shape da|
0007b130  74 61 0a 35 09 30 20 3d  3e 20 53 65 74 20 70 61  |ta.5.0 => Set pa|
0007b140  6c 65 74 74 65 0a 36 09  30 20 3d 3e 20 53 65 74  |lette.6.0 => Set|
0007b150  20 70 6f 69 6e 74 65 72  20 6e 75 6d 62 65 72 0a  | pointer number.|
0007b160  44 41 54 41 ac 01 00 00  52 65 61 64 20 73 70 72  |DATA....Read spr|
0007b170  69 74 65 20 69 6e 66 6f  20 20 28 34 30 29 0a 23  |ite info  (40).#|
0007b180  50 61 72 65 6e 74 20 4f  53 5f 53 70 72 69 74 65  |Parent OS_Sprite|
0007b190  4f 70 5f 52 65 61 73 6f  6e 0a 3d 3e 09 52 30 20  |Op_Reason.=>.R0 |
0007b1a0  3d 09 3c 34 30 2c 20 26  32 38 3d 3e 4f 53 5f 53  |=.<40, &28=>OS_S|
0007b1b0  70 72 69 74 65 4f 70 5f  52 65 61 73 6f 6e 32 3e  |priteOp_Reason2>|
0007b1c0  20 28 52 65 61 64 20 73  70 72 69 74 65 20 69 6e  | (Read sprite in|
0007b1d0  66 6f 29 0a 09 52 31 20  3d 09 3c 53 70 72 69 74  |fo)..R1 =.<Sprit|
0007b1e0  65 20 61 72 65 61 3d 3e  4f 53 5f 53 70 72 69 74  |e area=>OS_Sprit|
0007b1f0  65 4f 70 5f 41 72 65 61  3e 0a 09 52 32 20 3d 09  |eOp_Area>..R2 =.|
0007b200  53 70 72 69 74 65 20 6e  61 6d 65 2f 70 6f 69 6e  |Sprite name/poin|
0007b210  74 65 72 0a 0a 3c 3d 09  52 33 20 3d 09 77 69 64  |ter..<=.R3 =.wid|
0007b220  74 68 20 69 6e 20 70 69  78 65 6c 73 0a 09 52 34  |th in pixels..R4|
0007b230  20 3d 09 68 65 69 67 68  74 20 69 6e 20 70 69 78  | =.height in pix|
0007b240  65 6c 73 0a 09 52 35 20  3d 09 30 2c 31 20 66 6f  |els..R5 =.0,1 fo|
0007b250  72 20 6d 61 73 6b 20 6e  6f 2c 79 65 73 0a 09 52  |r mask no,yes..R|
0007b260  36 20 3d 09 4d 6f 64 65  2c 20 6f 72 20 3c 73 70  |6 =.Mode, or <sp|
0007b270  72 69 74 65 20 74 79 70  65 3d 3e 4f 53 5f 53 70  |rite type=>OS_Sp|
0007b280  72 69 74 65 4f 70 5f 54  79 70 65 3e 0a 0a 54 68  |riteOp_Type>..Th|
0007b290  69 73 20 53 57 49 20 72  65 74 75 72 6e 73 20 69  |is SWI returns i|
0007b2a0  6e 66 6f 20 61 62 6f 75  74 20 74 68 65 20 67 69  |nfo about the gi|
0007b2b0  76 65 6e 20 73 70 72 69  74 65 2e 0a 54 6f 20 66  |ven sprite..To f|
0007b2c0  69 6e 64 20 4f 53 20 77  69 64 74 68 20 61 6e 64  |ind OS width and|
0007b2d0  20 68 65 69 67 68 74 2c  20 72 65 61 64 20 3c 6d  | height, read <m|
0007b2e0  6f 64 65 20 76 61 72 69  61 62 6c 65 73 3d 3e 4f  |ode variables=>O|
0007b2f0  53 5f 52 65 61 64 4d 6f  64 65 56 61 72 69 61 62  |S_ReadModeVariab|
0007b300  6c 65 3e 20 34 20 61 6e  64 20 35 2e 44 41 54 41  |le> 4 and 5.DATA|
0007b310  6d 01 00 00 49 6e 69 74  69 61 6c 69 73 65 20 61  |m...Initialise a|
0007b320  72 65 61 20 20 28 39 29  0a 23 50 61 72 65 6e 74  |rea  (9).#Parent|
0007b330  20 4f 53 5f 53 70 72 69  74 65 4f 70 5f 52 65 61  | OS_SpriteOp_Rea|
0007b340  73 6f 6e 0a 3d 3e 09 52  30 20 3d 09 3c 39 2c 20  |son.=>.R0 =.<9, |
0007b350  26 39 3d 3e 4f 53 5f 73  70 72 69 74 65 6f 70 5f  |&9=>OS_spriteop_|
0007b360  72 65 61 73 6f 6e 32 3e  20 28 49 6e 69 74 69 61  |reason2> (Initia|
0007b370  6c 69 73 65 20 61 72 65  61 29 0a 09 52 31 20 3d  |lise area)..R1 =|
0007b380  09 3c 53 70 72 69 74 65  20 61 72 65 61 3d 3e 4f  |.<Sprite area=>O|
0007b390  53 5f 53 70 72 69 74 65  4f 70 5f 41 72 65 61 3e  |S_SpriteOp_Area>|
0007b3a0  0a 0a 54 68 69 73 20 53  57 49 20 63 6c 65 61 72  |..This SWI clear|
0007b3b0  73 20 61 6c 6c 20 73 70  72 69 74 65 73 20 66 72  |s all sprites fr|
0007b3c0  6f 6d 20 74 68 65 20 73  70 72 69 74 65 20 61 72  |om the sprite ar|
0007b3d0  65 61 20 73 70 65 63 69  66 69 65 64 2e 20 54 6f  |ea specified. To|
0007b3e0  20 73 74 61 72 74 20 75  73 69 6e 67 20 61 20 73  | start using a s|
0007b3f0  70 72 69 74 65 20 61 72  65 61 20 73 65 74 20 74  |prite area set t|
0007b400  68 65 20 61 72 65 61 20  62 6c 6f 63 6b 20 3a 0a  |he area block :.|
0007b410  30 09 53 69 7a 65 20 6f  66 20 61 72 65 61 0a 34  |0.Size of area.4|
0007b420  09 30 20 28 6e 75 6d 62  65 72 20 6f 66 20 73 70  |.0 (number of sp|
0007b430  72 69 74 65 73 29 0a 38  09 31 36 20 28 70 6f 69  |rites).8.16 (poi|
0007b440  6e 74 65 72 20 74 6f 20  66 69 72 73 74 20 73 70  |nter to first sp|
0007b450  72 69 74 65 29 0a 31 32  09 31 36 20 28 70 6f 69  |rite).12.16 (poi|
0007b460  6e 74 65 72 20 74 6f 20  66 69 72 73 74 20 66 72  |nter to first fr|
0007b470  65 65 20 77 6f 72 64 29  0a 00 00 00 44 41 54 41  |ee word)....DATA|
0007b480  26 02 00 00 41 63 74 69  6f 6e 20 63 6f 64 65 73  |&...Action codes|
0007b490  20 77 68 65 6e 20 70 6c  6f 74 74 69 6e 67 20 73  | when plotting s|
0007b4a0  70 72 69 74 65 73 0a 56  61 6c 75 65 09 4d 65 61  |prites.Value.Mea|
0007b4b0  6e 69 6e 67 0a 23 4c 69  6e 65 0a 30 09 4f 76 65  |ning.#Line.0.Ove|
0007b4c0  72 77 72 69 74 65 0a 31  09 44 69 73 6a 6f 69 6e  |rwrite.1.Disjoin|
0007b4d0  20 28 4f 52 29 0a 32 09  43 6f 6e 6a 6f 69 6e 20  | (OR).2.Conjoin |
0007b4e0  28 41 4e 44 29 0a 33 09  45 78 63 6c 75 73 69 76  |(AND).3.Exclusiv|
0007b4f0  65 20 44 69 73 6a 6f 69  6e 20 28 45 4f 52 29 0a  |e Disjoin (EOR).|
0007b500  34 09 49 6e 76 65 72 74  20 73 63 72 65 65 6e 0a  |4.Invert screen.|
0007b510  35 09 49 64 65 6e 74 69  74 79 20 28 4e 6f 20 63  |5.Identity (No c|
0007b520  68 61 6e 67 65 29 0a 36  09 43 6f 6e 6a 6f 69 6e  |hange).6.Conjoin|
0007b530  20 4e 65 67 61 74 69 6f  6e 20 28 3f 29 0a 37 09  | Negation (?).7.|
0007b540  44 69 73 6a 6f 69 6e 20  4e 65 67 61 74 69 6f 6e  |Disjoin Negation|
0007b550  20 28 3f 29 0a 38 09 55  73 65 20 6d 61 73 6b 0a  | (?).8.Use mask.|
0007b560  23 57 72 61 70 20 6f 66  66 0a 31 36 09 55 73 65  |#Wrap off.16.Use|
0007b570  20 45 43 46 20 31 09 7d  0a 33 32 09 55 73 65 20  | ECF 1.}.32.Use |
0007b580  45 43 46 20 32 09 7d 20  4f 6e 6c 79 20 6f 6e 65  |ECF 2.} Only one|
0007b590  20 6f 66 20 74 68 65 73  65 20 6d 61 79 0a 34 38  | of these may.48|
0007b5a0  09 55 73 65 20 45 43 46  20 33 09 7d 20 62 65 20  |.Use ECF 3.} be |
0007b5b0  75 73 65 64 0a 36 34 09  55 73 65 20 45 43 46 20  |used.64.Use ECF |
0007b5c0  34 09 7d 0a 38 30 09 55  73 65 20 67 69 61 6e 74  |4.}.80.Use giant|
0007b5d0  20 45 43 46 09 7d 0a 0a  23 57 72 61 70 20 6f 6e  | ECF.}..#Wrap on|
0007b5e0  0a 49 6e 20 74 68 65 20  41 63 6f 72 6e 20 41 61  |.In the Acorn Aa|
0007b5f0  73 6d 20 68 65 61 64 65  72 20 66 69 6c 65 73 20  |sm header files |
0007b600  49 20 75 73 65 20 66 6f  72 20 72 65 66 65 72 65  |I use for refere|
0007b610  6e 63 65 20 69 74 20 61  6c 73 6f 20 73 70 65 63  |nce it also spec|
0007b620  69 66 69 65 73 20 74 68  61 74 20 33 32 20 6d 61  |ifies that 32 ma|
0007b630  79 20 62 65 20 75 73 65  64 20 74 6f 20 6d 65 61  |y be used to mea|
0007b640  6e 20 55 73 65 20 73 70  72 69 74 65 20 70 61 6c  |n Use sprite pal|
0007b650  65 74 74 65 2c 20 62 75  74 20 49 20 63 61 6e 6e  |ette, but I cann|
0007b660  6f 74 20 72 65 63 6f 6e  63 69 6c 65 20 74 68 69  |ot reconcile thi|
0007b670  73 20 77 69 74 68 20 74  68 65 20 72 65 73 74 20  |s with the rest |
0007b680  6f 66 20 74 68 65 20 74  61 62 6c 65 20 6e 6f 72  |of the table nor|
0007b690  20 6f 74 68 65 72 20 6c  69 74 65 72 61 74 75 72  | other literatur|
0007b6a0  65 2e 00 00 44 41 54 41  a3 01 00 00 46 6f 72 6d  |e...DATA....Form|
0007b6b0  61 74 20 6f 66 20 73 70  72 69 74 65 20 61 72 65  |at of sprite are|
0007b6c0  61 0a 23 50 61 72 65 6e  74 20 4f 53 5f 53 70 72  |a.#Parent OS_Spr|
0007b6d0  69 74 65 4f 70 0a 41 20  73 70 72 69 74 65 20 61  |iteOp.A sprite a|
0007b6e0  72 65 61 20 63 6f 6e 73  69 73 74 73 20 6f 66 20  |rea consists of |
0007b6f0  61 20 63 6f 6e 74 72 6f  6c 20 62 6c 6f 63 6b 20  |a control block |
0007b700  66 6f 6c 6c 6f 77 65 64  20 62 79 20 61 6e 20 6f  |followed by an o|
0007b710  70 74 69 6f 6e 61 6c 20  65 78 74 65 6e 73 69 6f  |ptional extensio|
0007b720  6e 20 61 72 65 61 2c 20  73 70 72 69 74 65 73 2c  |n area, sprites,|
0007b730  20 61 6e 64 20 66 72 65  65 20 73 70 61 63 65 2e  | and free space.|
0007b740  20 4e 6f 74 65 20 74 68  61 74 20 61 20 73 70 72  | Note that a spr|
0007b750  69 74 65 20 66 69 6c 65  20 69 73 20 73 69 6d 70  |ite file is simp|
0007b760  6c 79 20 61 20 73 70 72  69 74 65 20 61 72 65 61  |ly a sprite area|
0007b770  20 73 61 76 65 64 20 77  69 74 68 6f 75 74 20 69  | saved without i|
0007b780  74 73 20 66 69 72 73 74  20 77 6f 72 64 2e 0a 0a  |ts first word...|
0007b790  4f 66 66 73 65 74 09 43  6f 6e 74 65 6e 74 73 0a  |Offset.Contents.|
0007b7a0  23 4c 69 6e 65 0a 30 09  54 6f 74 61 6c 20 73 69  |#Line.0.Total si|
0007b7b0  7a 65 20 6f 66 20 73 70  72 69 74 65 20 61 72 65  |ze of sprite are|
0007b7c0  61 0a 34 09 4e 75 6d 62  65 72 20 6f 66 20 73 70  |a.4.Number of sp|
0007b7d0  72 69 74 65 73 20 69 6e  20 61 72 65 61 0a 38 09  |rites in area.8.|
0007b7e0  4f 66 66 73 65 74 20 74  6f 20 31 73 74 20 3c 73  |Offset to 1st <s|
0007b7f0  70 72 69 74 65 3d 3e 6f  73 5f 73 70 72 69 74 65  |prite=>os_sprite|
0007b800  6f 70 5f 70 74 72 3e 0a  31 32 09 4f 66 66 73 65  |op_ptr>.12.Offse|
0007b810  74 20 74 6f 20 31 73 74  20 66 72 65 65 20 77 6f  |t to 1st free wo|
0007b820  72 64 0a 31 36 2e 2e 09  45 78 74 65 6e 73 69 6f  |rd.16...Extensio|
0007b830  6e 20 77 6f 72 64 73 20  28 75 73 75 61 6c 6c 79  |n words (usually|
0007b840  20 6e 6f 6e 65 29 0a 00  44 41 54 41 4e 01 00 00  | none)..DATAN...|
0007b850  46 6f 72 6d 61 74 20 6f  66 20 73 70 72 69 74 65  |Format of sprite|
0007b860  0a 23 50 61 72 65 6e 74  20 4f 53 5f 53 70 72 69  |.#Parent OS_Spri|
0007b870  74 65 4f 70 5f 61 72 65  61 0a 30 09 4f 66 66 73  |teOp_area.0.Offs|
0007b880  65 74 20 74 6f 20 6e 65  78 74 20 73 70 72 69 74  |et to next sprit|
0007b890  65 0a 34 09 53 70 72 69  74 65 20 6e 61 6d 65 20  |e.4.Sprite name |
0007b8a0  28 6d 61 78 20 31 32 20  63 68 61 72 73 29 0a 31  |(max 12 chars).1|
0007b8b0  36 09 57 69 64 74 68 20  69 6e 20 77 6f 72 64 73  |6.Width in words|
0007b8c0  20 2d 20 31 0a 32 30 09  48 65 69 67 68 74 20 69  | - 1.20.Height i|
0007b8d0  6e 20 73 63 61 6e 20 6c  69 6e 65 73 20 2d 20 31  |n scan lines - 1|
0007b8e0  0a 32 34 09 46 69 72 73  74 20 62 69 74 20 75 73  |.24.First bit us|
0007b8f0  65 64 20 28 6c 65 66 74  29 0a 32 38 09 4c 61 73  |ed (left).28.Las|
0007b900  74 20 62 69 74 20 75 73  65 64 20 20 28 72 69 67  |t bit used  (rig|
0007b910  68 74 29 0a 33 32 09 4f  66 66 73 65 74 20 74 6f  |ht).32.Offset to|
0007b920  20 73 70 72 69 74 65 20  69 6d 61 67 65 0a 33 36  | sprite image.36|
0007b930  09 4f 66 66 73 65 74 20  74 6f 20 73 70 72 69 74  |.Offset to sprit|
0007b940  65 20 6d 61 73 6b 2c 20  6f 72 20 73 70 72 69 74  |e mask, or sprit|
0007b950  65 20 69 74 73 65 6c 66  20 69 66 20 6e 6f 6e 65  |e itself if none|
0007b960  0a 34 30 09 3c 73 70 72  69 74 65 20 74 79 70 65  |.40.<sprite type|
0007b970  3d 3e 4f 53 5f 53 70 72  69 74 65 4f 70 5f 54 79  |=>OS_SpriteOp_Ty|
0007b980  70 65 3e 0a 34 34 2e 2e  09 50 61 6c 65 74 74 65  |pe>.44...Palette|
0007b990  20 64 61 74 61 0a 00 00  44 41 54 41 1a 08 00 00  | data...DATA....|
0007b9a0  4f 53 5f 53 70 72 69 74  65 4f 70 20 72 65 61 73  |OS_SpriteOp reas|
0007b9b0  6f 6e 20 63 6f 64 65 73  0a 23 50 61 72 65 6e 74  |on codes.#Parent|
0007b9c0  20 4f 53 5f 53 70 72 69  74 65 4f 70 0a 23 54 61  | OS_SpriteOp.#Ta|
0007b9d0  62 6c 65 20 43 6f 6c 75  6d 6e 73 20 32 0a 32 20  |ble Columns 2.2 |
0007b9e0  20 32 20 20 3c 53 63 72  65 65 6e 20 73 61 76 65  | 2  <Screen save|
0007b9f0  3d 3e 6f 73 5f 73 70 72  69 74 65 6f 70 5f 32 3e  |=>os_spriteop_2>|
0007ba00  0a 33 20 20 33 20 20 3c  53 63 72 65 65 6e 20 6c  |.3  3  <Screen l|
0007ba10  6f 61 64 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |oad=>os_spriteop|
0007ba20  5f 33 3e 0a 38 20 20 38  20 20 3c 52 65 61 64 20  |_3>.8  8  <Read |
0007ba30  61 72 65 61 20 63 6f 6e  74 72 6f 6c 20 62 6c 6f  |area control blo|
0007ba40  63 6b 3d 3e 6f 73 5f 73  70 72 69 74 65 6f 70 5f  |ck=>os_spriteop_|
0007ba50  38 3e 0a 39 20 20 39 20  20 3c 49 6e 69 74 69 61  |8>.9  9  <Initia|
0007ba60  6c 69 73 65 20 73 70 72  69 74 65 20 61 72 65 61  |lise sprite area|
0007ba70  3d 3e 6f 73 5f 73 70 72  69 74 65 6f 70 5f 39 3e  |=>os_spriteop_9>|
0007ba80  0a 41 20 20 31 30 20 3c  4c 6f 61 64 20 73 70 72  |.A  10 <Load spr|
0007ba90  69 74 65 20 66 69 6c 65  3d 3e 4f 53 5f 53 70 72  |ite file=>OS_Spr|
0007baa0  69 74 65 4f 70 5f 31 30  3e 0a 42 20 20 31 31 20  |iteOp_10>.B  11 |
0007bab0  3c 4d 65 72 67 65 20 73  70 72 69 74 65 20 66 69  |<Merge sprite fi|
0007bac0  6c 65 3d 3e 4f 53 5f 53  70 72 69 74 65 4f 70 5f  |le=>OS_SpriteOp_|
0007bad0  31 31 3e 0a 43 20 20 31  32 20 3c 53 61 76 65 20  |11>.C  12 <Save |
0007bae0  73 70 72 69 74 65 20 66  69 6c 65 3d 3e 4f 53 5f  |sprite file=>OS_|
0007baf0  53 70 72 69 74 65 4f 70  5f 31 32 3e 0a 44 20 20  |SpriteOp_12>.D  |
0007bb00  31 33 20 3c 52 65 74 75  72 6e 20 6e 61 6d 65 3d  |13 <Return name=|
0007bb10  3e 4f 53 5f 53 70 72 69  74 65 4f 70 5f 31 33 3e  |>OS_SpriteOp_13>|
0007bb20  0a 45 20 20 31 34 20 3c  47 65 74 20 73 70 72 69  |.E  14 <Get spri|
0007bb30  74 65 3d 3e 4f 53 5f 53  70 72 69 74 65 4f 70 5f  |te=>OS_SpriteOp_|
0007bb40  31 34 3e 0a 46 20 20 31  35 20 3c 43 72 65 61 74  |14>.F  15 <Creat|
0007bb50  65 20 73 70 72 69 74 65  3d 3e 4f 53 5f 53 70 72  |e sprite=>OS_Spr|
0007bb60  69 74 65 4f 70 5f 31 35  3e 0a 31 30 20 31 36 20  |iteOp_15>.10 16 |
0007bb70  3c 47 65 74 20 73 70 72  69 74 65 20 66 72 6f 6d  |<Get sprite from|
0007bb80  20 75 73 65 72 20 63 6f  6f 72 64 73 3d 3e 4f 53  | user coords=>OS|
0007bb90  5f 53 70 72 69 74 65 4f  70 5f 31 36 3e 0a 31 31  |_SpriteOp_16>.11|
0007bba0  20 31 37 20 3c 56 65 72  69 66 79 20 73 70 72 69  | 17 <Verify spri|
0007bbb0  74 65 20 61 72 65 61 3d  3e 4f 53 5f 53 70 72 69  |te area=>OS_Spri|
0007bbc0  74 65 4f 70 5f 31 37 3e  0a 31 38 20 32 34 20 3c  |teOp_17>.18 24 <|
0007bbd0  53 65 6c 65 63 74 20 73  70 72 69 74 65 3d 3e 4f  |Select sprite=>O|
0007bbe0  53 5f 53 70 72 69 74 65  4f 70 5f 32 34 3e 0a 31  |S_SpriteOp_24>.1|
0007bbf0  39 20 32 35 20 3c 44 65  6c 65 74 65 20 73 70 72  |9 25 <Delete spr|
0007bc00  69 74 65 3d 3e 4f 53 5f  53 70 72 69 74 65 4f 70  |ite=>OS_SpriteOp|
0007bc10  5f 32 35 3e 0a 31 41 20  32 36 20 3c 52 65 6e 61  |_25>.1A 26 <Rena|
0007bc20  6d 65 20 73 70 72 69 74  65 3d 3e 4f 53 5f 53 70  |me sprite=>OS_Sp|
0007bc30  72 69 74 65 4f 70 5f 32  36 3e 0a 31 42 20 32 37  |riteOp_26>.1B 27|
0007bc40  20 3c 43 6f 70 79 20 73  70 72 69 74 65 3d 3e 4f  | <Copy sprite=>O|
0007bc50  53 5f 53 70 72 69 74 65  4f 70 5f 32 37 3e 0a 31  |S_SpriteOp_27>.1|
0007bc60  43 20 32 38 20 3c 50 75  74 20 73 70 72 69 74 65  |C 28 <Put sprite|
0007bc70  3d 3e 4f 53 5f 53 70 72  69 74 65 4f 70 5f 32 38  |=>OS_SpriteOp_28|
0007bc80  3e 0a 31 44 20 32 39 20  3c 43 72 65 61 74 65 20  |>.1D 29 <Create |
0007bc90  6d 61 73 6b 3d 3e 4f 53  5f 53 70 72 69 74 65 4f  |mask=>OS_SpriteO|
0007bca0  70 5f 32 39 3e 0a 31 45  20 33 30 20 3c 52 65 6d  |p_29>.1E 30 <Rem|
0007bcb0  6f 76 65 20 6d 61 73 6b  3d 3e 4f 53 5f 53 70 72  |ove mask=>OS_Spr|
0007bcc0  69 74 65 4f 70 5f 33 30  3e 0a 31 46 20 33 31 20  |iteOp_30>.1F 31 |
0007bcd0  3c 49 6e 73 65 72 74 20  72 6f 77 3d 3e 4f 53 5f  |<Insert row=>OS_|
0007bce0  53 70 72 69 74 65 4f 70  5f 33 31 3e 0a 32 30 20  |SpriteOp_31>.20 |
0007bcf0  33 32 20 3c 44 65 6c 65  74 65 20 72 6f 77 3d 3e  |32 <Delete row=>|
0007bd00  4f 53 5f 53 70 72 69 74  65 4f 70 5f 33 32 3e 0a  |OS_SpriteOp_32>.|
0007bd10  32 31 20 33 33 20 3c 46  6c 69 70 20 61 62 6f 75  |21 33 <Flip abou|
0007bd20  74 20 78 20 61 78 69 73  3d 3e 4f 53 5f 53 70 72  |t x axis=>OS_Spr|
0007bd30  69 74 65 4f 70 5f 33 33  3e 0a 32 32 20 33 34 20  |iteOp_33>.22 34 |
0007bd40  3c 50 75 74 20 73 70 72  69 74 65 20 61 74 20 75  |<Put sprite at u|
0007bd50  73 65 72 20 63 6f 6f 72  64 73 3d 3e 4f 53 5f 53  |ser coords=>OS_S|
0007bd60  70 72 69 74 65 4f 70 5f  33 34 3e 0a 32 33 20 33  |priteOp_34>.23 3|
0007bd70  35 20 3c 41 70 70 65 6e  64 20 73 70 72 69 74 65  |5 <Append sprite|
0007bd80  3d 3e 4f 53 5f 53 70 72  69 74 65 4f 70 5f 33 35  |=>OS_SpriteOp_35|
0007bd90  3e 0a 32 34 20 33 36 20  3c 53 65 74 20 70 6f 69  |>.24 36 <Set poi|
0007bda0  6e 74 65 72 20 73 68 61  70 65 3d 3e 6f 73 5f 73  |nter shape=>os_s|
0007bdb0  70 72 69 74 65 6f 70 5f  33 36 3e 0a 32 35 20 33  |priteop_36>.25 3|
0007bdc0  37 20 3c 43 72 65 61 74  65 2f 72 65 6d 6f 76 65  |7 <Create/remove|
0007bdd0  20 70 61 6c 65 74 74 65  3d 3e 6f 73 5f 73 70 72  | palette=>os_spr|
0007bde0  69 74 65 6f 70 5f 33 37  3e 0a 32 38 20 34 30 20  |iteop_37>.28 40 |
0007bdf0  3c 52 65 61 64 20 73 70  72 69 74 65 20 69 6e 66  |<Read sprite inf|
0007be00  6f 3d 3e 6f 73 5f 73 70  72 69 74 65 6f 70 5f 34  |o=>os_spriteop_4|
0007be10  30 3e 0a 32 39 20 34 31  20 3c 52 65 61 64 20 70  |0>.29 41 <Read p|
0007be20  69 78 65 6c 20 63 6f 6c  6f 75 72 3d 3e 6f 73 5f  |ixel colour=>os_|
0007be30  73 70 72 69 74 65 6f 70  5f 34 31 3e 0a 32 41 20  |spriteop_41>.2A |
0007be40  34 32 20 3c 57 72 69 74  65 20 70 69 78 65 6c 20  |42 <Write pixel |
0007be50  63 6f 6c 6f 75 72 3d 3e  6f 73 5f 73 70 72 69 74  |colour=>os_sprit|
0007be60  65 6f 70 5f 34 32 3e 0a  32 42 20 34 33 20 3c 52  |eop_42>.2B 43 <R|
0007be70  65 61 64 20 70 69 78 65  6c 20 6d 61 73 6b 3d 3e  |ead pixel mask=>|
0007be80  6f 73 5f 73 70 72 69 74  65 6f 70 5f 34 33 3e 0a  |os_spriteop_43>.|
0007be90  32 43 20 34 34 20 3c 57  72 69 74 65 20 70 69 78  |2C 44 <Write pix|
0007bea0  65 6c 20 6d 61 73 6b 3d  3e 6f 73 5f 73 70 72 69  |el mask=>os_spri|
0007beb0  74 65 6f 70 5f 34 34 3e  0a 32 44 20 34 35 20 3c  |teop_44>.2D 45 <|
0007bec0  49 6e 73 65 72 74 20 63  6f 6c 75 6d 6e 3d 3e 6f  |Insert column=>o|
0007bed0  73 5f 73 70 72 69 74 65  6f 70 5f 34 35 3e 0a 32  |s_spriteop_45>.2|
0007bee0  45 20 34 36 20 3c 44 65  6c 65 74 65 20 63 6f 6c  |E 46 <Delete col|
0007bef0  75 6d 6e 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |umn=>os_spriteop|
0007bf00  5f 34 36 3e 0a 32 46 20  34 37 20 3c 46 6c 69 70  |_46>.2F 47 <Flip|
0007bf10  20 61 62 6f 75 74 20 79  20 61 78 69 73 3d 3e 6f  | about y axis=>o|
0007bf20  73 5f 73 70 72 69 74 65  6f 70 5f 34 37 3e 0a 33  |s_spriteop_47>.3|
0007bf30  30 20 34 38 20 3c 50 6c  6f 74 20 73 70 72 69 74  |0 48 <Plot sprit|
0007bf40  65 20 6d 61 73 6b 3d 3e  6f 73 5f 73 70 72 69 74  |e mask=>os_sprit|
0007bf50  65 6f 70 5f 34 38 3e 0a  33 31 20 34 39 20 3c 50  |eop_48>.31 49 <P|
0007bf60  6c 6f 74 20 6d 61 73 6b  20 61 74 20 75 73 65 72  |lot mask at user|
0007bf70  20 63 6f 6f 72 64 73 3d  3e 6f 73 5f 73 70 72 69  | coords=>os_spri|
0007bf80  74 65 6f 70 5f 34 39 3e  0a 33 32 20 35 30 20 3c  |teop_49>.32 50 <|
0007bf90  50 6c 6f 74 20 6d 61 73  6b 20 73 63 61 6c 65 64  |Plot mask scaled|
0007bfa0  3d 3e 6f 73 5f 73 70 72  69 74 65 6f 70 5f 35 30  |=>os_spriteop_50|
0007bfb0  3e 0a 33 33 20 35 31 20  3c 50 61 69 6e 74 20 63  |>.33 51 <Paint c|
0007bfc0  68 61 72 20 73 63 61 6c  65 64 3d 3e 6f 73 5f 73  |har scaled=>os_s|
0007bfd0  70 72 69 74 65 6f 70 5f  35 31 3e 0a 33 34 20 35  |priteop_51>.34 5|
0007bfe0  32 20 3c 50 61 69 6e 74  20 73 70 72 69 74 65 20  |2 <Paint sprite |
0007bff0  73 63 61 6c 65 64 3d 3e  6f 73 5f 73 70 72 69 74  |scaled=>os_sprit|
0007c000  65 6f 70 5f 35 32 3e 0a  33 35 20 35 33 20 3c 50  |eop_52>.35 53 <P|
0007c010  75 74 20 73 70 72 69 74  65 20 67 72 65 79 20 73  |ut sprite grey s|
0007c020  63 61 6c 65 64 3d 3e 6f  73 5f 73 70 72 69 74 65  |caled=>os_sprite|
0007c030  6f 70 5f 35 33 3e 0a 33  36 20 35 34 20 3c 52 65  |op_53>.36 54 <Re|
0007c040  6d 6f 76 65 20 6c 65 66  74 68 61 6e 64 20 77 61  |move lefthand wa|
0007c050  73 74 61 67 65 3d 3e 6f  73 5f 73 70 72 69 74 65  |stage=>os_sprite|
0007c060  6f 70 5f 35 34 3e 0a 33  37 20 35 35 20 3c 50 6c  |op_54>.37 55 <Pl|
0007c070  6f 74 20 6d 61 73 6b 20  74 72 61 6e 73 66 6f 72  |ot mask transfor|
0007c080  6d 65 64 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |med=>os_spriteop|
0007c090  5f 35 35 3e 0a 33 38 20  35 36 20 3c 50 6c 6f 74  |_55>.38 56 <Plot|
0007c0a0  20 73 70 72 69 74 65 20  74 72 61 6e 73 66 6f 72  | sprite transfor|
0007c0b0  6d 65 64 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |med=>os_spriteop|
0007c0c0  5f 35 36 3e 0a 33 39 20  35 37 20 3c 49 6e 73 65  |_56>.39 57 <Inse|
0007c0d0  72 74 2f 64 65 6c 65 74  65 20 72 6f 77 73 3d 3e  |rt/delete rows=>|
0007c0e0  6f 73 5f 73 70 72 69 74  65 6f 70 5f 35 37 3e 0a  |os_spriteop_57>.|
0007c0f0  33 41 20 35 38 20 3c 49  6e 73 65 72 74 2f 64 65  |3A 58 <Insert/de|
0007c100  6c 65 74 65 20 63 6f 6c  75 6d 6e 73 3d 3e 6f 73  |lete columns=>os|
0007c110  5f 73 70 72 69 74 65 6f  70 5f 35 38 3e 0a 33 43  |_spriteop_58>.3C|
0007c120  20 36 30 20 3c 53 77 69  74 63 68 20 6f 75 74 70  | 60 <Switch outp|
0007c130  75 74 20 74 6f 20 73 70  72 69 74 65 3d 3e 6f 73  |ut to sprite=>os|
0007c140  5f 73 70 72 69 74 65 6f  70 5f 36 30 3e 0a 33 44  |_spriteop_60>.3D|
0007c150  20 36 31 20 3c 53 77 69  74 63 68 20 6f 75 74 70  | 61 <Switch outp|
0007c160  75 74 20 74 6f 20 6d 61  73 6b 3d 3e 6f 73 5f 73  |ut to mask=>os_s|
0007c170  70 72 69 74 65 6f 70 5f  36 31 3e 0a 33 45 20 36  |priteop_61>.3E 6|
0007c180  32 20 3c 52 65 61 64 20  73 61 76 65 20 61 72 65  |2 <Read save are|
0007c190  61 20 73 69 7a 65 3d 3e  6f 73 5f 73 70 72 69 74  |a size=>os_sprit|
0007c1a0  65 6f 70 5f 36 32 3e 0a  23 45 6e 64 54 61 62 6c  |eop_62>.#EndTabl|
0007c1b0  65 0a 00 00 44 41 54 41  19 01 00 00 50 61 72 61  |e...DATA....Para|
0007c1c0  6d 65 74 65 72 73 20 74  6f 20 70 61 73 73 20 74  |meters to pass t|
0007c1d0  6f 20 4f 53 5f 53 70 72  69 74 65 4f 70 0a 72 65  |o OS_SpriteOp.re|
0007c1e0  61 73 6f 6e 2b 30 09 55  73 65 20 73 79 73 74 65  |ason+0.Use syste|
0007c1f0  6d 20 61 72 65 61 0a 72  65 61 73 6f 6e 2b 32 35  |m area.reason+25|
0007c200  36 09 55 73 65 20 75 73  65 72 20 3c 73 70 72 69  |6.Use user <spri|
0007c210  74 65 20 61 72 65 61 3d  3e 4f 53 5f 53 70 72 69  |te area=>OS_Spri|
0007c220  74 65 4f 70 5f 41 72 65  61 3e 20 70 6f 69 6e 74  |teOp_Area> point|
0007c230  65 64 20 74 6f 20 62 79  20 52 31 0a 72 65 61 73  |ed to by R1.reas|
0007c240  6f 6e 2b 35 31 32 09 55  73 65 20 75 73 65 72 20  |on+512.Use user |
0007c250  3c 73 70 72 69 74 65 20  61 72 65 61 3d 3e 4f 53  |<sprite area=>OS|
0007c260  5f 53 70 72 69 74 65 4f  70 5f 41 72 65 61 3e 20  |_SpriteOp_Area> |
0007c270  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 52 31  |pointed to by R1|
0007c280  2e 20 52 32 20 63 6f 6e  74 61 69 6e 73 20 3c 70  |. R2 contains <p|
0007c290  6f 69 6e 74 65 72 20 74  6f 20 73 70 72 69 74 65  |ointer to sprite|
0007c2a0  3d 3e 4f 53 5f 53 70 72  69 74 65 4f 70 5f 70 74  |=>OS_SpriteOp_pt|
0007c2b0  72 3e 2c 20 72 61 74 68  65 72 20 74 68 61 6e 20  |r>, rather than |
0007c2c0  73 70 72 69 74 65 20 6e  61 6d 65 2e 0a 00 00 00  |sprite name.....|
0007c2d0  44 41 54 41 54 01 00 00  52 65 61 64 20 61 72 65  |DATAT...Read are|
0007c2e0  61 20 63 6f 6e 74 72 6f  6c 20 62 6c 6f 63 6b 20  |a control block |
0007c2f0  28 38 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 53  |(8).#Parent OS_S|
0007c300  70 72 69 74 65 4f 70 5f  52 65 61 73 6f 6e 0a 3d  |priteOp_Reason.=|
0007c310  3e 09 52 30 20 3d 09 3c  38 2c 20 26 38 3d 3e 6f  |>.R0 =.<8, &8=>o|
0007c320  73 5f 73 70 72 69 74 65  6f 70 5f 72 65 61 73 6f  |s_spriteop_reaso|
0007c330  6e 32 3e 20 28 52 65 61  64 20 61 72 65 61 20 63  |n2> (Read area c|
0007c340  6f 6e 74 72 6f 6c 20 62  6c 6f 63 6b 29 0a 09 52  |ontrol block)..R|
0007c350  31 20 3d 09 3c 53 70 72  69 74 65 20 61 72 65 61  |1 =.<Sprite area|
0007c360  3d 3e 4f 53 5f 53 70 72  69 74 65 4f 70 5f 41 72  |=>OS_SpriteOp_Ar|
0007c370  65 61 3e 0a 3c 3d 09 52  32 20 3d 09 53 69 7a 65  |ea>.<=.R2 =.Size|
0007c380  20 6f 66 20 73 70 72 69  74 65 20 61 72 65 61 0a  | of sprite area.|
0007c390  09 52 33 20 3d 09 4e 75  6d 62 65 72 20 6f 66 20  |.R3 =.Number of |
0007c3a0  73 70 72 69 74 65 73 0a  09 52 34 20 3d 09 4f 66  |sprites..R4 =.Of|
0007c3b0  66 73 65 74 20 74 6f 20  66 69 72 73 74 20 73 70  |fset to first sp|
0007c3c0  72 69 74 65 0a 09 52 35  20 3d 09 4f 66 66 73 65  |rite..R5 =.Offse|
0007c3d0  74 20 74 6f 20 66 69 72  73 74 20 66 72 65 65 20  |t to first free |
0007c3e0  77 6f 72 64 0a 0a 54 68  69 73 20 63 61 6c 6c 20  |word..This call |
0007c3f0  72 65 74 75 72 6e 73 20  69 6e 66 6f 72 6d 61 74  |returns informat|
0007c400  69 6f 6e 20 68 65 6c 64  20 69 6e 20 61 20 73 70  |ion held in a sp|
0007c410  72 69 74 65 20 61 72 65  61 27 73 20 68 65 61 64  |rite area's head|
0007c420  65 72 2e 0a 44 41 54 41  34 01 00 00 4c 6f 61 64  |er..DATA4...Load|
0007c430  20 73 70 72 69 74 65 20  66 69 6c 65 20 20 28 31  | sprite file  (1|
0007c440  30 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 53 70  |0).#Parent OS_Sp|
0007c450  72 69 74 65 4f 70 5f 52  65 61 73 6f 6e 0a 3d 3e  |riteOp_Reason.=>|
0007c460  09 52 30 20 3d 09 3c 31  30 2c 20 26 41 3d 3e 6f  |.R0 =.<10, &A=>o|
0007c470  73 5f 73 70 72 69 74 65  6f 70 5f 72 65 61 73 6f  |s_spriteop_reaso|
0007c480  6e 32 3e 20 28 4c 6f 61  64 20 73 70 72 69 74 65  |n2> (Load sprite|
0007c490  20 66 69 6c 65 29 0a 09  52 31 20 3d 09 3c 53 70  | file)..R1 =.<Sp|
0007c4a0  72 69 74 65 20 61 72 65  61 3d 3e 6f 73 5f 73 70  |rite area=>os_sp|
0007c4b0  72 69 74 65 6f 70 5f 61  72 65 61 3e 0a 09 52 32  |riteop_area>..R2|
0007c4c0  20 3d 09 50 6f 69 6e 74  65 72 20 74 6f 20 70 61  | =.Pointer to pa|
0007c4d0  74 68 6e 61 6d 65 0a 0a  54 68 69 73 20 6c 6f 61  |thname..This loa|
0007c4e0  64 73 20 74 68 65 20 67  69 76 65 6e 20 73 70 72  |ds the given spr|
0007c4f0  69 74 65 20 66 69 6c 65  20 69 6e 74 6f 20 74 68  |ite file into th|
0007c500  65 20 67 69 76 65 6e 20  73 70 72 69 74 65 20 61  |e given sprite a|
0007c510  72 65 61 2e 20 4e 4f 54  45 20 74 68 69 73 20 77  |rea. NOTE this w|
0007c520  69 6c 6c 20 6f 76 65 72  20 77 72 69 74 65 20 61  |ill over write a|
0007c530  6e 79 20 73 70 72 69 74  65 73 20 74 68 61 74 20  |ny sprites that |
0007c540  61 72 65 20 61 6c 72 65  61 64 79 20 69 6e 20 74  |are already in t|
0007c550  68 65 20 61 72 65 61 2e  44 41 54 41 b8 01 00 00  |he area.DATA....|
0007c560  4d 65 72 67 65 20 73 70  72 69 74 65 20 66 69 6c  |Merge sprite fil|
0007c570  65 20 20 28 31 31 29 0a  23 50 61 72 65 6e 74 20  |e  (11).#Parent |
0007c580  4f 53 5f 53 70 72 69 74  65 4f 70 5f 52 65 61 73  |OS_SpriteOp_Reas|
0007c590  6f 6e 0a 3d 3e 09 52 30  20 3d 09 3c 31 31 2c 20  |on.=>.R0 =.<11, |
0007c5a0  26 42 3d 3e 6f 73 5f 73  70 72 69 74 65 6f 70 5f  |&B=>os_spriteop_|
0007c5b0  72 65 61 73 6f 6e 32 3e  20 28 4d 65 72 67 65 20  |reason2> (Merge |
0007c5c0  73 70 72 69 74 65 20 66  69 6c 65 29 0a 09 52 31  |sprite file)..R1|
0007c5d0  20 3d 09 3c 53 70 72 69  74 65 20 61 72 65 61 3d  | =.<Sprite area=|
0007c5e0  3e 6f 73 5f 73 70 72 69  74 65 6f 70 5f 61 72 65  |>os_spriteop_are|
0007c5f0  61 3e 0a 09 52 32 20 3d  09 50 6f 69 6e 74 65 72  |a>..R2 =.Pointer|
0007c600  20 74 6f 20 66 69 6c 65  6e 61 6d 65 0a 0a 54 68  | to filename..Th|
0007c610  69 73 20 6c 6f 61 64 73  20 74 68 65 20 73 70 72  |is loads the spr|
0007c620  69 74 65 73 20 69 6e 20  74 68 65 20 67 69 76 65  |ites in the give|
0007c630  6e 20 73 70 72 69 74 65  20 66 69 6c 65 20 69 6e  |n sprite file in|
0007c640  74 6f 20 74 68 65 20 73  70 65 63 69 66 69 65 64  |to the specified|
0007c650  20 61 72 65 61 2e 20 49  66 20 61 20 73 70 72 69  | area. If a spri|
0007c660  74 65 20 61 6c 72 65 61  64 79 20 65 78 69 73 74  |te already exist|
0007c670  73 20 69 74 20 77 69 6c  6c 20 62 65 20 72 65 70  |s it will be rep|
0007c680  6c 61 63 65 64 2e 20 54  68 65 72 65 20 6d 75 73  |laced. There mus|
0007c690  74 20 62 65 20 65 6e 6f  75 67 68 20 6d 65 6d 6f  |t be enough memo|
0007c6a0  72 79 20 69 6e 20 74 68  65 20 73 70 72 69 74 65  |ry in the sprite|
0007c6b0  20 61 72 65 61 20 74 6f  20 68 6f 6c 64 20 62 6f  | area to hold bo|
0007c6c0  74 68 20 73 65 74 20 6f  66 20 73 70 72 69 74 65  |th set of sprite|
0007c6d0  73 20 61 73 20 72 65 70  6c 61 63 65 6d 65 6e 74  |s as replacement|
0007c6e0  73 20 61 72 65 20 6d 61  64 65 20 61 66 74 65 72  |s are made after|
0007c6f0  20 74 68 65 20 77 68 6f  6c 65 20 66 69 6c 65 20  | the whole file |
0007c700  68 61 73 20 62 65 65 6e  20 6c 6f 61 64 65 64 2e  |has been loaded.|
0007c710  44 41 54 41 4c 01 00 00  52 65 74 75 72 6e 20 6e  |DATAL...Return n|
0007c720  61 6d 65 20 28 31 33 29  0a 23 50 61 72 65 6e 74  |ame (13).#Parent|
0007c730  20 4f 53 5f 53 70 72 69  74 65 4f 70 5f 52 65 61  | OS_SpriteOp_Rea|
0007c740  73 6f 6e 0a 3d 3e 09 52  30 20 3d 09 3c 31 33 2c  |son.=>.R0 =.<13,|
0007c750  20 26 44 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  | &D=>os_spriteop|
0007c760  5f 72 65 61 73 6f 6e 32  3e 20 28 52 65 74 75 72  |_reason2> (Retur|
0007c770  6e 20 6e 61 6d 65 29 0a  09 52 31 20 3d 09 3c 53  |n name)..R1 =.<S|
0007c780  70 72 69 74 65 20 61 72  65 61 3d 3e 6f 73 5f 73  |prite area=>os_s|
0007c790  70 72 69 74 65 6f 70 5f  61 72 65 61 3e 0a 09 52  |priteop_area>..R|
0007c7a0  32 20 3d 09 50 6f 69 6e  74 65 72 20 74 6f 20 62  |2 =.Pointer to b|
0007c7b0  75 66 66 65 72 0a 09 52  33 20 3d 09 42 75 66 66  |uffer..R3 =.Buff|
0007c7c0  65 72 20 73 69 7a 65 0a  09 52 34 20 3d 09 53 70  |er size..R4 =.Sp|
0007c7d0  72 69 74 65 20 6e 75 6d  62 65 72 20 6e 0a 3c 3d  |rite number n.<=|
0007c7e0  09 52 33 20 3d 09 4c 65  6e 67 74 68 20 6f 66 20  |.R3 =.Length of |
0007c7f0  6e 61 6d 65 0a 0a 54 68  69 73 20 72 65 74 75 72  |name..This retur|
0007c800  6e 73 20 74 68 65 20 6e  61 6d 65 20 6f 66 20 74  |ns the name of t|
0007c810  68 65 20 6e 27 74 68 20  73 70 72 69 74 65 20 69  |he n'th sprite i|
0007c820  6e 20 74 68 65 20 67 69  76 65 6e 20 73 70 72 69  |n the given spri|
0007c830  74 65 20 61 72 65 61 20  77 68 65 72 65 20 74 68  |te area where th|
0007c840  65 20 66 69 72 73 74 20  73 70 72 69 74 65 20 69  |e first sprite i|
0007c850  73 20 6e 75 6d 62 65 72  20 31 2e 0a 44 41 54 41  |s number 1..DATA|
0007c860  d6 01 00 00 47 65 74 20  73 70 72 69 74 65 20 28  |....Get sprite (|
0007c870  31 34 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 53  |14).#Parent OS_S|
0007c880  70 72 69 74 65 4f 70 5f  52 65 61 73 6f 6e 0a 3d  |priteOp_Reason.=|
0007c890  3e 09 52 30 20 3d 09 3c  31 34 2c 20 26 45 3d 3e  |>.R0 =.<14, &E=>|
0007c8a0  6f 73 5f 73 70 72 69 74  65 6f 70 5f 72 65 61 73  |os_spriteop_reas|
0007c8b0  6f 6e 32 3e 20 28 47 65  74 20 73 70 72 69 74 65  |on2> (Get sprite|
0007c8c0  29 0a 09 52 31 20 3d 09  3c 53 70 72 69 74 65 20  |)..R1 =.<Sprite |
0007c8d0  61 72 65 61 3d 3e 6f 73  5f 73 70 72 69 74 65 6f  |area=>os_spriteo|
0007c8e0  70 5f 61 72 65 61 3e 0a  09 52 32 20 3d 09 53 70  |p_area>..R2 =.Sp|
0007c8f0  72 69 74 65 20 6e 61 6d  65 2f 70 6f 69 6e 74 65  |rite name/pointe|
0007c900  72 0a 09 52 33 20 3d 09  30 20 3d 3e 20 45 78 63  |r..R3 =.0 => Exc|
0007c910  6c 75 64 65 20 70 61 6c  65 74 74 65 0a 09 20 09  |lude palette.. .|
0007c920  31 20 3d 3e 20 49 6e 63  6c 75 64 65 20 70 61 6c  |1 => Include pal|
0007c930  65 74 74 65 0a 3c 3d 09  52 32 20 3d 09 41 64 64  |ette.<=.R2 =.Add|
0007c940  72 65 73 73 2f 4f 66 66  73 65 74 20 6f 66 20 73  |ress/Offset of s|
0007c950  70 72 69 74 65 20 75 6e  6c 65 73 73 20 69 6e 20  |prite unless in |
0007c960  77 69 6d 70 20 6f 72 20  73 79 73 74 65 6d 20 61  |wimp or system a|
0007c970  72 65 61 2e 0a 0a 54 68  69 73 20 67 72 61 62 73  |rea...This grabs|
0007c980  20 74 68 65 20 61 72 65  61 20 6f 66 20 73 63 72  | the area of scr|
0007c990  65 65 6e 20 64 65 66 69  6e 65 64 20 62 79 20 74  |een defined by t|
0007c9a0  68 65 20 63 75 72 72 65  6e 74 20 61 6e 64 20 6f  |he current and o|
0007c9b0  6c 64 20 67 72 61 70 68  69 63 20 63 75 72 73 6f  |ld graphic curso|
0007c9c0  72 20 63 6f 6f 72 64 69  6e 61 74 65 73 2e 20 41  |r coordinates. A|
0007c9d0  6e 79 20 61 72 65 61 20  6f 75 74 73 69 64 65 20  |ny area outside |
0007c9e0  74 68 65 20 70 72 65 73  65 6e 74 20 67 72 61 70  |the present grap|
0007c9f0  68 69 63 73 20 77 69 6e  64 6f 77 20 77 69 6c 6c  |hics window will|
0007ca00  20 62 65 20 66 69 6c 6c  65 64 20 69 6e 20 77 69  | be filled in wi|
0007ca10  74 68 20 74 68 65 20 70  72 65 73 65 6e 74 20 62  |th the present b|
0007ca20  61 63 6b 67 72 6f 75 6e  64 20 63 6f 6c 6f 75 72  |ackground colour|
0007ca30  2e 0a 00 00 44 41 54 41  5f 01 00 00 43 72 65 61  |....DATA_...Crea|
0007ca40  74 65 20 73 70 72 69 74  65 20 28 31 35 29 0a 23  |te sprite (15).#|
0007ca50  50 61 72 65 6e 74 20 4f  53 5f 53 70 72 69 74 65  |Parent OS_Sprite|
0007ca60  4f 70 5f 52 65 61 73 6f  6e 0a 3d 3e 09 52 30 20  |Op_Reason.=>.R0 |
0007ca70  3d 09 3c 31 35 2c 20 26  46 3d 3e 6f 73 5f 73 70  |=.<15, &F=>os_sp|
0007ca80  72 69 74 65 6f 70 5f 72  65 61 73 6f 6e 32 3e 20  |riteop_reason2> |
0007ca90  28 43 72 65 61 74 65 20  73 70 72 69 74 65 29 0a  |(Create sprite).|
0007caa0  09 52 31 20 3d 09 3c 53  70 72 69 74 65 20 61 72  |.R1 =.<Sprite ar|
0007cab0  65 61 3d 3e 6f 73 5f 73  70 72 69 74 65 6f 70 5f  |ea=>os_spriteop_|
0007cac0  61 72 65 61 3e 0a 09 52  32 20 3d 09 53 70 72 69  |area>..R2 =.Spri|
0007cad0  74 65 20 6e 61 6d 65 2f  70 6f 69 6e 74 65 72 0a  |te name/pointer.|
0007cae0  09 52 33 20 3d 09 30 20  3d 3e 20 45 78 63 6c 75  |.R3 =.0 => Exclu|
0007caf0  64 65 20 70 61 6c 65 74  74 65 0a 09 20 09 31 20  |de palette.. .1 |
0007cb00  3d 3e 20 49 6e 63 6c 75  64 65 20 70 61 6c 65 74  |=> Include palet|
0007cb10  74 65 0a 09 52 34 20 3d  09 57 69 64 74 68 20 69  |te..R4 =.Width i|
0007cb20  6e 20 70 69 78 65 6c 73  0a 09 52 35 20 3d 09 48  |n pixels..R5 =.H|
0007cb30  65 69 67 68 74 20 69 6e  20 70 69 78 65 6c 73 0a  |eight in pixels.|
0007cb40  09 52 36 20 3d 09 4d 6f  64 65 20 6e 75 6d 62 65  |.R6 =.Mode numbe|
0007cb50  72 2c 20 6f 72 20 3c 73  70 72 69 74 65 20 74 79  |r, or <sprite ty|
0007cb60  70 65 3d 3e 4f 53 5f 53  70 72 69 74 65 4f 70 5f  |pe=>OS_SpriteOp_|
0007cb70  54 79 70 65 3e 0a 0a 54  68 69 73 20 63 72 65 61  |Type>..This crea|
0007cb80  74 65 73 20 61 20 62 6c  61 6e 6b 20 73 70 72 69  |tes a blank spri|
0007cb90  74 65 2e 00 44 41 54 41  46 02 00 00 47 65 74 20  |te..DATAF...Get |
0007cba0  73 70 72 69 74 65 20 66  72 6f 6d 20 63 6f 6f 72  |sprite from coor|
0007cbb0  64 73 20 28 31 36 29 0a  23 50 61 72 65 6e 74 20  |ds (16).#Parent |
0007cbc0  4f 53 5f 53 70 72 69 74  65 4f 70 5f 52 65 61 73  |OS_SpriteOp_Reas|
0007cbd0  6f 6e 0a 3d 3e 09 52 30  20 3d 09 3c 31 36 2c 20  |on.=>.R0 =.<16, |
0007cbe0  26 31 30 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |&10=>os_spriteop|
0007cbf0  5f 72 65 61 73 6f 6e 32  3e 20 28 47 65 74 20 73  |_reason2> (Get s|
0007cc00  70 72 69 74 65 20 66 72  6f 6d 20 63 6f 6f 72 64  |prite from coord|
0007cc10  73 29 0a 09 52 31 20 3d  09 3c 53 70 72 69 74 65  |s)..R1 =.<Sprite|
0007cc20  20 61 72 65 61 3d 3e 6f  73 5f 73 70 72 69 74 65  | area=>os_sprite|
0007cc30  6f 70 5f 61 72 65 61 3e  0a 09 52 32 20 3d 09 53  |op_area>..R2 =.S|
0007cc40  70 72 69 74 65 20 6e 61  6d 65 2f 70 6f 69 6e 74  |prite name/point|
0007cc50  65 72 0a 09 52 33 20 3d  09 30 20 3d 3e 20 45 78  |er..R3 =.0 => Ex|
0007cc60  63 6c 75 64 65 20 70 61  6c 65 74 74 65 0a 09 20  |clude palette.. |
0007cc70  09 31 20 3d 3e 20 49 6e  63 6c 75 64 65 20 70 61  |.1 => Include pa|
0007cc80  6c 65 74 74 65 0a 09 52  34 20 3d 09 4d 69 6e 69  |lette..R4 =.Mini|
0007cc90  6d 75 6d 20 78 20 63 6f  6f 72 64 69 6e 61 74 65  |mum x coordinate|
0007cca0  20 28 69 63 29 0a 09 52  35 20 3d 09 4d 69 6e 69  | (ic)..R5 =.Mini|
0007ccb0  6d 75 6d 20 79 20 63 6f  6f 72 64 69 6e 61 74 65  |mum y coordinate|
0007ccc0  20 28 69 63 29 0a 09 52  36 20 3d 09 4d 61 78 69  | (ic)..R6 =.Maxi|
0007ccd0  6d 75 6d 20 78 20 63 6f  6f 72 64 69 6e 61 74 65  |mum x coordinate|
0007cce0  20 28 69 63 29 0a 09 52  37 20 3d 09 4d 61 78 69  | (ic)..R7 =.Maxi|
0007ccf0  6d 75 6d 20 79 20 63 6f  6f 72 64 69 6e 61 74 65  |mum y coordinate|
0007cd00  20 28 69 63 29 0a 3c 3d  09 52 32 20 3d 09 41 64  | (ic).<=.R2 =.Ad|
0007cd10  64 72 65 73 73 2f 4f 66  66 73 65 74 20 6f 66 20  |dress/Offset of |
0007cd20  73 70 72 69 74 65 20 75  6e 6c 65 73 73 20 69 6e  |sprite unless in|
0007cd30  20 77 69 6d 70 20 6f 72  20 73 79 73 74 65 6d 20  | wimp or system |
0007cd40  61 72 65 61 2e 0a 0a 54  68 69 73 20 67 72 61 62  |area...This grab|
0007cd50  73 20 74 68 65 20 61 72  65 61 20 6f 66 20 73 63  |s the area of sc|
0007cd60  72 65 65 6e 20 64 65 66  69 6e 65 64 20 62 79 20  |reen defined by |
0007cd70  52 34 2d 52 37 2e 20 41  6e 79 20 61 72 65 61 20  |R4-R7. Any area |
0007cd80  6f 75 74 73 69 64 65 20  74 68 65 20 70 72 65 73  |outside the pres|
0007cd90  65 6e 74 20 67 72 61 70  68 69 63 73 20 77 69 6e  |ent graphics win|
0007cda0  64 6f 77 20 77 69 6c 6c  20 62 65 20 66 69 6c 6c  |dow will be fill|
0007cdb0  65 64 20 69 6e 20 77 69  74 68 20 74 68 65 20 70  |ed in with the p|
0007cdc0  72 65 73 65 6e 74 20 62  61 63 6b 67 72 6f 75 6e  |resent backgroun|
0007cdd0  64 20 63 6f 6c 6f 75 72  2e 0a 00 00 44 41 54 41  |d colour....DATA|
0007cde0  38 01 00 00 53 65 6c 65  63 74 20 73 70 72 69 74  |8...Select sprit|
0007cdf0  65 20 28 32 34 29 0a 23  50 61 72 65 6e 74 20 4f  |e (24).#Parent O|
0007ce00  53 5f 53 70 72 69 74 65  4f 70 5f 52 65 61 73 6f  |S_SpriteOp_Reaso|
0007ce10  6e 0a 3d 3e 09 52 30 20  3d 09 3c 32 34 2c 20 26  |n.=>.R0 =.<24, &|
0007ce20  31 38 3d 3e 6f 73 5f 73  70 72 69 74 65 6f 70 5f  |18=>os_spriteop_|
0007ce30  72 65 61 73 6f 6e 32 3e  20 28 53 65 6c 65 63 74  |reason2> (Select|
0007ce40  20 73 70 72 69 74 65 29  0a 09 52 31 20 3d 09 3c  | sprite)..R1 =.<|
0007ce50  53 70 72 69 74 65 20 61  72 65 61 3d 3e 6f 73 5f  |Sprite area=>os_|
0007ce60  73 70 72 69 74 65 6f 70  5f 61 72 65 61 3e 0a 09  |spriteop_area>..|
0007ce70  52 32 20 3d 09 53 70 72  69 74 65 20 6e 61 6d 65  |R2 =.Sprite name|
0007ce80  2f 70 6f 69 6e 74 65 72  0a 3c 3d 09 52 32 20 3d  |/pointer.<=.R2 =|
0007ce90  09 41 64 64 72 65 73 73  2f 4f 66 66 73 65 74 20  |.Address/Offset |
0007cea0  6f 66 20 73 70 72 69 74  65 20 75 6e 6c 65 73 73  |of sprite unless|
0007ceb0  20 69 6e 20 77 69 6d 70  20 6f 72 20 73 79 73 74  | in wimp or syst|
0007cec0  65 6d 20 61 72 65 61 2e  0a 0a 54 68 69 73 20 73  |em area...This s|
0007ced0  65 6c 65 63 74 73 20 74  68 65 20 67 69 76 65 6e  |elects the given|
0007cee0  20 73 70 72 69 74 65 20  66 6f 72 20 73 75 62 73  | sprite for subs|
0007cef0  65 71 75 65 6e 74 20 70  6c 6f 74 74 69 6e 67 20  |equent plotting |
0007cf00  77 69 74 68 20 56 44 55  20 32 35 2c 32 33 32 2d  |with VDU 25,232-|
0007cf10  32 33 39 2e 44 41 54 41  c6 00 00 00 44 65 6c 65  |239.DATA....Dele|
0007cf20  74 65 20 73 70 72 69 74  65 20 28 32 35 29 0a 23  |te sprite (25).#|
0007cf30  50 61 72 65 6e 74 20 4f  53 5f 53 70 72 69 74 65  |Parent OS_Sprite|
0007cf40  4f 70 5f 52 65 61 73 6f  6e 0a 3d 3e 09 52 30 20  |Op_Reason.=>.R0 |
0007cf50  3d 09 3c 32 35 2c 20 26  31 39 3d 3e 6f 73 5f 73  |=.<25, &19=>os_s|
0007cf60  70 72 69 74 65 6f 70 5f  72 65 61 73 6f 6e 32 3e  |priteop_reason2>|
0007cf70  20 28 44 65 6c 65 74 65  20 73 70 72 69 74 65 29  | (Delete sprite)|
0007cf80  0a 09 52 31 20 3d 09 3c  53 70 72 69 74 65 20 61  |..R1 =.<Sprite a|
0007cf90  72 65 61 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |rea=>os_spriteop|
0007cfa0  5f 61 72 65 61 3e 0a 09  52 32 20 3d 09 53 70 72  |_area>..R2 =.Spr|
0007cfb0  69 74 65 20 6e 61 6d 65  2f 70 6f 69 6e 74 65 72  |ite name/pointer|
0007cfc0  0a 0a 54 68 69 73 20 64  65 6c 65 74 65 73 20 74  |..This deletes t|
0007cfd0  68 65 20 73 70 72 69 74  65 2e 00 00 44 41 54 41  |he sprite...DATA|
0007cfe0  2d 01 00 00 43 6f 70 79  20 73 70 72 69 74 65 20  |-...Copy sprite |
0007cff0  28 32 37 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |(27).#Parent OS_|
0007d000  53 70 72 69 74 65 4f 70  5f 52 65 61 73 6f 6e 0a  |SpriteOp_Reason.|
0007d010  3d 3e 09 52 30 20 3d 09  3c 32 37 2c 20 26 31 42  |=>.R0 =.<27, &1B|
0007d020  3d 3e 6f 73 5f 73 70 72  69 74 65 6f 70 5f 72 65  |=>os_spriteop_re|
0007d030  61 73 6f 6e 32 3e 20 28  43 6f 70 79 20 73 70 72  |ason2> (Copy spr|
0007d040  69 74 65 29 0a 09 52 31  20 3d 09 3c 53 70 72 69  |ite)..R1 =.<Spri|
0007d050  74 65 20 61 72 65 61 3d  3e 6f 73 5f 73 70 72 69  |te area=>os_spri|
0007d060  74 65 6f 70 5f 61 72 65  61 3e 0a 09 52 32 20 3d  |teop_area>..R2 =|
0007d070  09 53 70 72 69 74 65 20  6e 61 6d 65 2f 70 6f 69  |.Sprite name/poi|
0007d080  6e 74 65 72 0a 09 52 33  20 3d 09 4e 65 77 20 6e  |nter..R3 =.New n|
0007d090  61 6d 65 0a 0a 54 68 69  73 20 63 6f 70 69 65 73  |ame..This copies|
0007d0a0  20 74 68 65 20 73 70 72  69 74 65 20 75 6e 6c 65  | the sprite unle|
0007d0b0  73 73 20 61 20 73 70 72  69 74 65 20 61 6c 72 65  |ss a sprite alre|
0007d0c0  61 64 79 20 65 78 69 73  74 73 20 75 6e 64 65 72  |ady exists under|
0007d0d0  20 74 68 65 20 6e 65 77  20 6e 61 6d 65 2c 20 69  | the new name, i|
0007d0e0  6e 20 77 68 69 63 68 20  63 61 73 65 20 61 6e 20  |n which case an |
0007d0f0  65 72 72 6f 72 20 77 69  6c 6c 20 62 65 20 67 65  |error will be ge|
0007d100  6e 65 72 61 74 65 64 2e  20 00 00 00 44 41 54 41  |nerated. ...DATA|
0007d110  47 01 00 00 50 75 74 20  73 70 72 69 74 65 20 28  |G...Put sprite (|
0007d120  32 38 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 53  |28).#Parent OS_S|
0007d130  70 72 69 74 65 4f 70 5f  52 65 61 73 6f 6e 0a 3d  |priteOp_Reason.=|
0007d140  3e 09 52 30 20 3d 09 3c  32 38 2c 20 26 31 43 3d  |>.R0 =.<28, &1C=|
0007d150  3e 6f 73 5f 73 70 72 69  74 65 6f 70 5f 72 65 61  |>os_spriteop_rea|
0007d160  73 6f 6e 32 3e 20 28 50  75 74 20 73 70 72 69 74  |son2> (Put sprit|
0007d170  65 29 0a 09 52 31 20 3d  09 3c 53 70 72 69 74 65  |e)..R1 =.<Sprite|
0007d180  20 61 72 65 61 3d 3e 6f  73 5f 73 70 72 69 74 65  | area=>os_sprite|
0007d190  6f 70 5f 61 72 65 61 3e  0a 09 52 32 20 3d 09 53  |op_area>..R2 =.S|
0007d1a0  70 72 69 74 65 20 6e 61  6d 65 2f 70 6f 69 6e 74  |prite name/point|
0007d1b0  65 72 0a 09 52 35 20 3d  09 3c 50 6c 6f 74 20 61  |er..R5 =.<Plot a|
0007d1c0  63 74 69 6f 6e 3d 3e 6f  73 5f 73 70 72 69 74 65  |ction=>os_sprite|
0007d1d0  6f 70 5f 61 63 74 69 6f  6e 3e 0a 0a 54 68 69 73  |op_action>..This|
0007d1e0  20 70 6c 6f 74 73 20 74  68 65 20 73 70 72 69 74  | plots the sprit|
0007d1f0  65 20 77 69 74 68 20 69  74 73 20 62 6f 74 74 6f  |e with its botto|
0007d200  6d 20 6c 65 66 74 20 68  61 6e 64 20 63 6f 72 6e  |m left hand corn|
0007d210  65 72 20 61 74 20 74 68  65 20 67 72 61 70 68 69  |er at the graphi|
0007d220  63 73 20 63 75 72 73 6f  72 2e 20 49 74 20 75 73  |cs cursor. It us|
0007d230  65 73 20 74 68 65 20 70  6c 6f 74 20 61 63 74 69  |es the plot acti|
0007d240  6f 6e 20 73 70 65 63 69  66 69 65 64 20 62 79 20  |on specified by |
0007d250  52 35 2e 00 44 41 54 41  df 00 00 00 43 72 65 61  |R5..DATA....Crea|
0007d260  74 65 20 6d 61 73 6b 20  28 32 39 29 0a 23 50 61  |te mask (29).#Pa|
0007d270  72 65 6e 74 20 4f 53 5f  53 70 72 69 74 65 4f 70  |rent OS_SpriteOp|
0007d280  5f 52 65 61 73 6f 6e 0a  3d 3e 09 52 30 20 3d 09  |_Reason.=>.R0 =.|
0007d290  3c 32 39 2c 20 26 31 44  3d 3e 6f 73 5f 73 70 72  |<29, &1D=>os_spr|
0007d2a0  69 74 65 6f 70 5f 72 65  61 73 6f 6e 32 3e 20 28  |iteop_reason2> (|
0007d2b0  43 72 65 61 74 65 20 6d  61 73 6b 29 0a 09 52 31  |Create mask)..R1|
0007d2c0  20 3d 09 3c 53 70 72 69  74 65 20 61 72 65 61 3d  | =.<Sprite area=|
0007d2d0  3e 6f 73 5f 73 70 72 69  74 65 6f 70 5f 61 72 65  |>os_spriteop_are|
0007d2e0  61 3e 0a 09 52 32 20 3d  09 53 70 72 69 74 65 20  |a>..R2 =.Sprite |
0007d2f0  6e 61 6d 65 2f 70 6f 69  6e 74 65 72 0a 0a 54 68  |name/pointer..Th|
0007d300  69 73 20 63 72 65 61 74  65 73 20 61 20 6d 61 73  |is creates a mas|
0007d310  6b 20 77 69 74 68 20 61  6c 6c 20 70 69 78 65 6c  |k with all pixel|
0007d320  73 20 64 65 66 69 6e 65  64 20 61 73 20 73 6f 6c  |s defined as sol|
0007d330  69 64 2e 00 44 41 54 41  c1 00 00 00 52 65 6d 6f  |id..DATA....Remo|
0007d340  76 65 20 6d 61 73 6b 20  28 33 30 29 0a 23 50 61  |ve mask (30).#Pa|
0007d350  72 65 6e 74 20 4f 53 5f  53 70 72 69 74 65 4f 70  |rent OS_SpriteOp|
0007d360  5f 52 65 61 73 6f 6e 0a  3d 3e 09 52 30 20 3d 09  |_Reason.=>.R0 =.|
0007d370  3c 33 30 2c 20 26 31 45  3d 3e 6f 73 5f 73 70 72  |<30, &1E=>os_spr|
0007d380  69 74 65 6f 70 5f 72 65  61 73 6f 6e 32 3e 20 28  |iteop_reason2> (|
0007d390  52 65 6d 6f 76 65 20 6d  61 73 6b 29 0a 09 52 31  |Remove mask)..R1|
0007d3a0  20 3d 09 3c 53 70 72 69  74 65 20 61 72 65 61 3d  | =.<Sprite area=|
0007d3b0  3e 6f 73 5f 73 70 72 69  74 65 6f 70 5f 61 72 65  |>os_spriteop_are|
0007d3c0  61 3e 0a 09 52 32 20 3d  09 53 70 72 69 74 65 20  |a>..R2 =.Sprite |
0007d3d0  6e 61 6d 65 2f 70 6f 69  6e 74 65 72 0a 0a 54 68  |name/pointer..Th|
0007d3e0  69 73 20 72 65 6d 6f 76  65 73 20 74 68 65 20 6d  |is removes the m|
0007d3f0  61 73 6b 2e 0a 00 00 00  44 41 54 41 3b 01 00 00  |ask.....DATA;...|
0007d400  49 6e 73 65 72 74 20 72  6f 77 20 28 33 31 29 0a  |Insert row (31).|
0007d410  23 50 61 72 65 6e 74 20  4f 53 5f 53 70 72 69 74  |#Parent OS_Sprit|
0007d420  65 4f 70 5f 52 65 61 73  6f 6e 0a 3d 3e 09 52 30  |eOp_Reason.=>.R0|
0007d430  20 3d 09 3c 33 31 2c 20  26 31 46 3d 3e 6f 73 5f  | =.<31, &1F=>os_|
0007d440  73 70 72 69 74 65 6f 70  5f 72 65 61 73 6f 6e 32  |spriteop_reason2|
0007d450  3e 20 28 49 6e 73 65 72  74 20 72 6f 77 29 0a 09  |> (Insert row)..|
0007d460  52 31 20 3d 09 3c 53 70  72 69 74 65 20 61 72 65  |R1 =.<Sprite are|
0007d470  61 3d 3e 6f 73 5f 73 70  72 69 74 65 6f 70 5f 61  |a=>os_spriteop_a|
0007d480  72 65 61 3e 0a 09 52 32  20 3d 09 53 70 72 69 74  |rea>..R2 =.Sprit|
0007d490  65 20 6e 61 6d 65 2f 70  6f 69 6e 74 65 72 0a 09  |e name/pointer..|
0007d4a0  52 33 20 3d 09 52 6f 77  20 6e 75 6d 62 65 72 0a  |R3 =.Row number.|
0007d4b0  0a 54 68 69 73 20 69 6e  73 65 72 74 73 20 61 20  |.This inserts a |
0007d4c0  72 6f 77 20 6f 66 20 74  72 61 6e 73 70 61 72 61  |row of transpara|
0007d4d0  6e 74 20 63 6f 6c 6f 75  72 20 30 20 70 69 78 65  |nt colour 0 pixe|
0007d4e0  6c 73 20 61 74 20 74 68  65 20 67 69 76 65 6e 20  |ls at the given |
0007d4f0  72 6f 77 2c 20 6d 6f 76  69 6e 67 20 61 6c 6c 20  |row, moving all |
0007d500  72 6f 77 73 20 61 62 6f  76 65 20 69 74 20 75 70  |rows above it up|
0007d510  20 61 20 72 6f 77 2e 20  54 68 65 20 62 6f 74 74  | a row. The bott|
0007d520  6f 6d 20 72 6f 77 20 69  73 20 6e 75 6d 62 65 72  |om row is number|
0007d530  20 30 2e 00 44 41 54 41  15 01 00 00 44 65 6c 65  | 0..DATA....Dele|
0007d540  74 65 20 72 6f 77 20 28  33 32 29 0a 23 50 61 72  |te row (32).#Par|
0007d550  65 6e 74 20 4f 53 5f 53  70 72 69 74 65 4f 70 5f  |ent OS_SpriteOp_|
0007d560  52 65 61 73 6f 6e 0a 3d  3e 09 52 30 20 3d 09 3c  |Reason.=>.R0 =.<|
0007d570  33 32 2c 20 26 32 30 3d  3e 6f 73 5f 73 70 72 69  |32, &20=>os_spri|
0007d580  74 65 6f 70 5f 72 65 61  73 6f 6e 32 3e 20 28 44  |teop_reason2> (D|
0007d590  65 6c 65 74 65 20 72 6f  77 29 0a 09 52 31 20 3d  |elete row)..R1 =|
0007d5a0  09 3c 53 70 72 69 74 65  20 61 72 65 61 3d 3e 6f  |.<Sprite area=>o|
0007d5b0  73 5f 73 70 72 69 74 65  6f 70 5f 61 72 65 61 3e  |s_spriteop_area>|
0007d5c0  0a 09 52 32 20 3d 09 53  70 72 69 74 65 20 6e 61  |..R2 =.Sprite na|
0007d5d0  6d 65 2f 70 6f 69 6e 74  65 72 0a 09 52 33 20 3d  |me/pointer..R3 =|
0007d5e0  09 52 6f 77 20 6e 75 6d  62 65 72 0a 0a 54 68 69  |.Row number..Thi|
0007d5f0  73 20 64 65 6c 65 74 65  73 20 74 68 65 20 67 69  |s deletes the gi|
0007d600  76 65 6e 20 72 6f 77 2c  20 6d 6f 76 69 6e 67 20  |ven row, moving |
0007d610  61 6c 6c 20 72 6f 77 73  20 61 62 6f 76 65 20 69  |all rows above i|
0007d620  74 20 64 6f 77 6e 20 61  20 72 6f 77 2e 20 54 68  |t down a row. Th|
0007d630  65 20 62 6f 74 74 6f 6d  20 72 6f 77 20 69 73 20  |e bottom row is |
0007d640  6e 75 6d 62 65 72 20 30  2e 00 00 00 44 41 54 41  |number 0....DATA|
0007d650  d8 00 00 00 46 6c 69 70  20 61 62 6f 75 74 20 78  |....Flip about x|
0007d660  20 61 78 69 73 20 28 33  33 29 0a 23 50 61 72 65  | axis (33).#Pare|
0007d670  6e 74 20 4f 53 5f 53 70  72 69 74 65 4f 70 5f 52  |nt OS_SpriteOp_R|
0007d680  65 61 73 6f 6e 0a 3d 3e  09 52 30 20 3d 09 3c 33  |eason.=>.R0 =.<3|
0007d690  33 2c 20 26 32 31 3d 3e  6f 73 5f 73 70 72 69 74  |3, &21=>os_sprit|
0007d6a0  65 6f 70 5f 72 65 61 73  6f 6e 32 3e 20 28 46 6c  |eop_reason2> (Fl|
0007d6b0  69 70 20 61 62 6f 75 74  20 78 20 61 78 69 73 29  |ip about x axis)|
0007d6c0  0a 09 52 31 20 3d 09 3c  53 70 72 69 74 65 20 61  |..R1 =.<Sprite a|
0007d6d0  72 65 61 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |rea=>os_spriteop|
0007d6e0  5f 61 72 65 61 3e 0a 09  52 32 20 3d 09 53 70 72  |_area>..R2 =.Spr|
0007d6f0  69 74 65 20 6e 61 6d 65  2f 70 6f 69 6e 74 65 72  |ite name/pointer|
0007d700  0a 0a 54 68 69 73 20 74  75 72 6e 73 20 74 68 65  |..This turns the|
0007d710  20 73 70 72 69 74 65 20  75 70 73 69 64 65 20 64  | sprite upside d|
0007d720  6f 77 6e 2e 44 41 54 41  02 02 00 00 41 70 70 65  |own.DATA....Appe|
0007d730  6e 64 20 73 70 72 69 74  65 20 28 33 35 29 0a 23  |nd sprite (35).#|
0007d740  50 61 72 65 6e 74 20 4f  53 5f 53 70 72 69 74 65  |Parent OS_Sprite|
0007d750  4f 70 5f 52 65 61 73 6f  6e 0a 3d 3e 09 52 30 20  |Op_Reason.=>.R0 |
0007d760  3d 09 3c 33 35 2c 20 26  32 33 3d 3e 6f 73 5f 73  |=.<35, &23=>os_s|
0007d770  70 72 69 74 65 6f 70 5f  72 65 61 73 6f 6e 32 3e  |priteop_reason2>|
0007d780  20 28 41 70 70 65 6e 64  20 73 70 72 69 74 65 29  | (Append sprite)|
0007d790  0a 09 52 31 20 3d 09 3c  53 70 72 69 74 65 20 61  |..R1 =.<Sprite a|
0007d7a0  72 65 61 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |rea=>os_spriteop|
0007d7b0  5f 61 72 65 61 3e 0a 09  52 32 20 3d 09 53 70 72  |_area>..R2 =.Spr|
0007d7c0  69 74 65 20 31 20 6e 61  6d 65 2f 70 6f 69 6e 74  |ite 1 name/point|
0007d7d0  65 72 0a 09 52 33 20 3d  09 53 70 72 69 74 65 20  |er..R3 =.Sprite |
0007d7e0  32 20 6e 61 6d 65 2f 70  6f 69 6e 74 65 72 09 09  |2 name/pointer..|
0007d7f0  7b 66 43 6f 64 65 7d 20  20 a0 5f 5f 20 5f 5f 7b  |{fCode}  .__ __{|
0007d800  66 7d 0a 09 52 34 20 3d  09 30 20 3d 3e 20 4d 65  |f}..R4 =.0 => Me|
0007d810  72 67 65 20 68 6f 72 69  7a 6f 6e 74 61 6c 6c 79  |rge horizontally|
0007d820  09 09 7b 66 43 6f 64 65  7d 20 20 7c 5f 5f 7c 5f  |..{fCode}  |__|_|
0007d830  5f 7c 7b 66 7d 0a 09 20  09 31 20 3d 3e 20 4d 65  |_|{f}.. .1 => Me|
0007d840  72 67 65 20 76 65 72 74  69 63 61 6c 6c 79 09 09  |rge vertically..|
0007d850  7b 66 43 6f 64 65 7d 2e  2d 2d 2e 7b 66 7d 0a 09  |{fCode}.--.{f}..|
0007d860  20 09 20 09 09 09 09 7b  66 43 6f 64 65 7d 7c 2d  | . ....{fCode}|-|
0007d870  2d 7c 7b 66 7d 0a 09 20  09 20 09 09 09 09 7b 66  |-|{f}.. . ....{f|
0007d880  43 6f 64 65 7d 27 2d 2d  27 7b 66 7d 0a 0a 54 68  |Code}'--'{f}..Th|
0007d890  69 73 20 6d 65 72 67 65  73 20 74 77 6f 20 73 70  |is merges two sp|
0007d8a0  72 69 74 65 73 20 6f 66  20 74 68 65 20 73 61 6d  |rites of the sam|
0007d8b0  65 20 68 65 69 67 68 74  20 6f 72 20 77 69 64 74  |e height or widt|
0007d8c0  68 20 74 6f 67 65 74 68  65 72 2e 20 54 68 65 20  |h together. The |
0007d8d0  72 65 73 75 6c 74 20 69  73 20 73 74 6f 72 65 64  |result is stored|
0007d8e0  20 61 73 20 73 70 72 69  74 65 20 31 20 61 6e 64  | as sprite 1 and|
0007d8f0  20 73 70 72 69 74 65 20  32 20 69 73 20 64 65 6c  | sprite 2 is del|
0007d900  65 74 65 64 2c 20 68 65  6e 63 65 20 6e 6f 20 65  |eted, hence no e|
0007d910  78 74 72 61 20 6d 65 6d  6f 72 79 20 69 73 20 6e  |xtra memory is n|
0007d920  65 65 64 65 64 2e 00 00  44 41 54 41 1b 02 00 00  |eeded...DATA....|
0007d930  43 72 65 61 74 65 2f 52  65 6d 6f 76 65 20 70 61  |Create/Remove pa|
0007d940  6c 65 74 74 65 20 28 33  37 29 0a 23 50 61 72 65  |lette (37).#Pare|
0007d950  6e 74 20 4f 53 5f 53 70  72 69 74 65 4f 70 5f 52  |nt OS_SpriteOp_R|
0007d960  65 61 73 6f 6e 0a 3d 3e  09 52 30 20 3d 09 3c 33  |eason.=>.R0 =.<3|
0007d970  37 2c 20 26 32 35 3d 3e  6f 73 5f 73 70 72 69 74  |7, &25=>os_sprit|
0007d980  65 6f 70 5f 72 65 61 73  6f 6e 32 3e 20 28 43 72  |eop_reason2> (Cr|
0007d990  65 61 74 65 2f 72 65 6d  6f 76 65 20 70 61 6c 65  |eate/remove pale|
0007d9a0  74 74 65 29 0a 09 52 31  20 3d 09 3c 53 70 72 69  |tte)..R1 =.<Spri|
0007d9b0  74 65 20 61 72 65 61 3d  3e 6f 73 5f 73 70 72 69  |te area=>os_spri|
0007d9c0  74 65 6f 70 5f 61 72 65  61 3e 0a 09 52 32 20 3d  |teop_area>..R2 =|
0007d9d0  09 53 70 72 69 74 65 20  6e 61 6d 65 2f 70 6f 69  |.Sprite name/poi|
0007d9e0  6e 74 65 72 0a 09 52 33  20 3d 09 2d 31 20 3d 3e  |nter..R3 =.-1 =>|
0007d9f0  20 52 65 61 64 20 63 75  72 72 65 6e 74 20 70 61  | Read current pa|
0007da00  6c 65 74 74 65 20 73 69  7a 65 0a 09 20 09 30 20  |lette size.. .0 |
0007da10  3d 3e 20 52 65 6d 6f 76  65 20 70 61 6c 65 74 74  |=> Remove palett|
0007da20  65 0a 09 20 09 65 6c 73  65 20 3d 3e 20 43 72 65  |e.. .else => Cre|
0007da30  61 74 65 20 70 61 6c 65  74 74 65 0a 09 20 09 49  |ate palette.. .I|
0007da40  66 20 62 69 74 20 33 31  20 73 65 74 20 74 68 65  |f bit 31 set the|
0007da50  6e 20 75 73 65 20 32 35  36 20 65 6e 74 72 69 65  |n use 256 entrie|
0007da60  73 2e 20 28 4e 6f 74 20  52 4f 32 29 0a 0a 3c 3d  |s. (Not RO2)..<=|
0007da70  09 41 6c 6c 20 72 65 67  69 73 74 65 72 73 20 70  |.All registers p|
0007da80  72 65 73 65 72 76 65 64  20 75 6e 6c 65 73 73 20  |reserved unless |
0007da90  52 33 20 3d 2d 31 20 6f  6e 20 65 6e 74 72 79 3a  |R3 =-1 on entry:|
0007daa0  0a 09 52 33 20 3d 09 53  69 7a 65 20 6f 66 20 70  |..R3 =.Size of p|
0007dab0  61 6c 65 74 74 65 2c 20  6f 72 20 30 20 69 66 20  |alette, or 0 if |
0007dac0  6e 6f 20 70 61 6c 65 74  74 65 0a 09 52 34 20 3d  |no palette..R4 =|
0007dad0  09 50 6f 69 6e 74 65 72  20 74 6f 20 70 61 6c 65  |.Pointer to pale|
0007dae0  74 74 65 2c 20 6f 72 20  30 20 69 66 20 6e 6f 20  |tte, or 0 if no |
0007daf0  70 61 6c 65 74 74 65 0a  09 52 35 20 3d 09 4d 6f  |palette..R5 =.Mo|
0007db00  64 65 0a 0a 4e 6f 74 65  3a 20 44 6f 20 6e 6f 74  |de..Note: Do not|
0007db10  20 75 73 65 20 74 68 69  73 20 77 68 69 6c 73 74  | use this whilst|
0007db20  20 6f 75 74 70 75 74 20  69 73 20 73 77 69 74 63  | output is switc|
0007db30  68 65 64 20 74 6f 20 74  68 65 20 73 70 72 69 74  |hed to the sprit|
0007db40  65 2e 0a 00 44 41 54 41  43 01 00 00 52 65 61 64  |e...DATAC...Read|
0007db50  20 70 69 78 65 6c 20 63  6f 6c 6f 75 72 20 28 34  | pixel colour (4|
0007db60  31 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 53 70  |1).#Parent OS_Sp|
0007db70  72 69 74 65 4f 70 5f 52  65 61 73 6f 6e 0a 3d 3e  |riteOp_Reason.=>|
0007db80  09 52 30 20 3d 09 3c 34  31 2c 20 26 32 39 3d 3e  |.R0 =.<41, &29=>|
0007db90  6f 73 5f 73 70 72 69 74  65 6f 70 5f 72 65 61 73  |os_spriteop_reas|
0007dba0  6f 6e 32 3e 20 28 52 65  61 64 20 70 69 78 65 6c  |on2> (Read pixel|
0007dbb0  20 63 6f 6c 6f 75 72 29  0a 09 52 31 20 3d 09 3c  | colour)..R1 =.<|
0007dbc0  53 70 72 69 74 65 20 61  72 65 61 3d 3e 6f 73 5f  |Sprite area=>os_|
0007dbd0  73 70 72 69 74 65 6f 70  5f 61 72 65 61 3e 0a 09  |spriteop_area>..|
0007dbe0  52 32 20 3d 09 53 70 72  69 74 65 20 6e 61 6d 65  |R2 =.Sprite name|
0007dbf0  2f 70 6f 69 6e 74 65 72  0a 09 52 33 20 3d 09 78  |/pointer..R3 =.x|
0007dc00  20 63 6f 6f 72 64 69 6e  61 74 65 20 28 69 6e 20  | coordinate (in |
0007dc10  70 69 78 65 6c 73 29 0a  09 52 34 20 3d 09 79 20  |pixels)..R4 =.y |
0007dc20  63 6f 6f 72 64 69 6e 61  74 65 20 28 69 6e 20 70  |coordinate (in p|
0007dc30  69 78 65 6c 73 29 0a 0a  3c 3d 09 52 35 20 3d 09  |ixels)..<=.R5 =.|
0007dc40  43 6f 6c 6f 75 72 0a 09  52 36 20 3d 09 54 69 6e  |Colour..R6 =.Tin|
0007dc50  74 0a 09 0a 54 68 69 73  20 63 61 6c 6c 20 72 65  |t...This call re|
0007dc60  61 64 73 20 74 68 65 20  63 6f 6c 6f 75 72 20 6f  |ads the colour o|
0007dc70  66 20 61 20 70 69 78 65  6c 20 69 6e 20 61 20 73  |f a pixel in a s|
0007dc80  70 72 69 74 65 2e 0a 00  44 41 54 41 37 01 00 00  |prite...DATA7...|
0007dc90  57 72 69 74 65 20 70 69  78 65 6c 20 63 6f 6c 6f  |Write pixel colo|
0007dca0  75 72 20 28 34 32 29 0a  23 50 61 72 65 6e 74 20  |ur (42).#Parent |
0007dcb0  4f 53 5f 53 70 72 69 74  65 4f 70 5f 52 65 61 73  |OS_SpriteOp_Reas|
0007dcc0  6f 6e 0a 3d 3e 09 52 30  20 3d 09 3c 34 32 2c 20  |on.=>.R0 =.<42, |
0007dcd0  26 32 41 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |&2A=>os_spriteop|
0007dce0  5f 72 65 61 73 6f 6e 32  3e 20 28 57 72 69 74 65  |_reason2> (Write|
0007dcf0  20 70 69 78 65 6c 20 63  6f 6c 6f 75 72 29 0a 09  | pixel colour)..|
0007dd00  52 31 20 3d 09 3c 53 70  72 69 74 65 20 61 72 65  |R1 =.<Sprite are|
0007dd10  61 3d 3e 6f 73 5f 73 70  72 69 74 65 6f 70 5f 61  |a=>os_spriteop_a|
0007dd20  72 65 61 3e 0a 09 52 32  20 3d 09 53 70 72 69 74  |rea>..R2 =.Sprit|
0007dd30  65 20 6e 61 6d 65 2f 70  6f 69 6e 74 65 72 0a 09  |e name/pointer..|
0007dd40  52 33 20 3d 09 78 20 63  6f 6f 72 64 69 6e 61 74  |R3 =.x coordinat|
0007dd50  65 20 28 69 6e 20 70 69  78 65 6c 73 29 0a 09 52  |e (in pixels)..R|
0007dd60  34 20 3d 09 79 20 63 6f  6f 72 64 69 6e 61 74 65  |4 =.y coordinate|
0007dd70  20 28 69 6e 20 70 69 78  65 6c 73 29 0a 09 52 35  | (in pixels)..R5|
0007dd80  20 3d 09 43 6f 6c 6f 75  72 0a 09 52 36 20 3d 09  | =.Colour..R6 =.|
0007dd90  54 69 6e 74 0a 0a 54 68  69 73 20 73 65 74 73 20  |Tint..This sets |
0007dda0  74 68 65 20 70 69 78 65  6c 20 74 6f 20 74 68 65  |the pixel to the|
0007ddb0  20 67 69 76 65 6e 20 63  6f 6c 6f 75 72 2e 20 00  | given colour. .|
0007ddc0  44 41 54 41 3b 01 00 00  52 65 61 64 20 70 69 78  |DATA;...Read pix|
0007ddd0  65 6c 20 6d 61 73 6b 20  28 34 33 29 0a 23 50 61  |el mask (43).#Pa|
0007dde0  72 65 6e 74 20 4f 53 5f  53 70 72 69 74 65 4f 70  |rent OS_SpriteOp|
0007ddf0  5f 52 65 61 73 6f 6e 0a  3d 3e 09 52 30 20 3d 09  |_Reason.=>.R0 =.|
0007de00  3c 34 33 2c 20 26 32 42  3d 3e 6f 73 5f 73 70 72  |<43, &2B=>os_spr|
0007de10  69 74 65 6f 70 5f 72 65  61 73 6f 6e 32 3e 20 28  |iteop_reason2> (|
0007de20  52 65 61 64 20 70 69 78  65 6c 20 6d 61 73 6b 29  |Read pixel mask)|
0007de30  0a 09 52 31 20 3d 09 3c  53 70 72 69 74 65 20 61  |..R1 =.<Sprite a|
0007de40  72 65 61 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |rea=>os_spriteop|
0007de50  5f 61 72 65 61 3e 0a 09  52 32 20 3d 09 53 70 72  |_area>..R2 =.Spr|
0007de60  69 74 65 20 6e 61 6d 65  2f 70 6f 69 6e 74 65 72  |ite name/pointer|
0007de70  0a 09 52 33 20 3d 09 78  20 63 6f 6f 72 64 69 6e  |..R3 =.x coordin|
0007de80  61 74 65 20 28 69 6e 20  70 69 78 65 6c 73 29 0a  |ate (in pixels).|
0007de90  09 52 34 20 3d 09 79 20  63 6f 6f 72 64 69 6e 61  |.R4 =.y coordina|
0007dea0  74 65 20 28 69 6e 20 70  69 78 65 6c 73 29 0a 0a  |te (in pixels)..|
0007deb0  3c 3d 09 52 35 20 3d 09  30 20 3d 3e 20 54 72 61  |<=.R5 =.0 => Tra|
0007dec0  6e 73 70 61 72 61 6e 74  0a 09 20 09 31 20 3d 3e  |nsparant.. .1 =>|
0007ded0  20 53 6f 6c 69 64 0a 0a  54 68 69 73 20 53 57 49  | Solid..This SWI|
0007dee0  20 72 65 61 64 73 20 74  68 65 20 6d 61 73 6b 20  | reads the mask |
0007def0  61 74 20 61 20 70 6f 69  6e 74 2e 00 44 41 54 41  |at a point..DATA|
0007df00  4b 01 00 00 57 72 69 74  65 20 70 69 78 65 6c 20  |K...Write pixel |
0007df10  6d 61 73 6b 20 28 34 34  29 0a 23 50 61 72 65 6e  |mask (44).#Paren|
0007df20  74 20 4f 53 5f 53 70 72  69 74 65 4f 70 5f 52 65  |t OS_SpriteOp_Re|
0007df30  61 73 6f 6e 0a 3d 3e 09  52 30 20 3d 09 3c 34 34  |ason.=>.R0 =.<44|
0007df40  2c 20 26 32 43 3d 3e 6f  73 5f 73 70 72 69 74 65  |, &2C=>os_sprite|
0007df50  6f 70 5f 72 65 61 73 6f  6e 32 3e 20 28 57 72 69  |op_reason2> (Wri|
0007df60  74 65 20 70 69 78 65 6c  20 6d 61 73 6b 29 0a 09  |te pixel mask)..|
0007df70  52 31 20 3d 09 3c 53 70  72 69 74 65 20 61 72 65  |R1 =.<Sprite are|
0007df80  61 3d 3e 6f 73 5f 73 70  72 69 74 65 6f 70 5f 61  |a=>os_spriteop_a|
0007df90  72 65 61 3e 0a 09 52 32  20 3d 09 53 70 72 69 74  |rea>..R2 =.Sprit|
0007dfa0  65 20 6e 61 6d 65 2f 70  6f 69 6e 74 65 72 0a 09  |e name/pointer..|
0007dfb0  52 33 20 3d 09 78 20 63  6f 6f 72 64 69 6e 61 74  |R3 =.x coordinat|
0007dfc0  65 20 28 69 6e 20 70 69  78 65 6c 73 29 0a 09 52  |e (in pixels)..R|
0007dfd0  34 20 3d 09 79 20 63 6f  6f 72 64 69 6e 61 74 65  |4 =.y coordinate|
0007dfe0  20 28 69 6e 20 70 69 78  65 6c 73 29 0a 09 52 35  | (in pixels)..R5|
0007dff0  20 3d 09 30 20 3d 3e 09  54 72 61 6e 73 70 61 72  | =.0 =>.Transpar|
0007e000  61 6e 74 0a 09 20 09 31  20 3d 3e 09 53 6f 6c 69  |ant.. .1 =>.Soli|
0007e010  64 0a 0a 54 68 69 73 20  73 65 74 73 20 74 68 65  |d..This sets the|
0007e020  20 6d 61 73 6b 27 73 20  73 74 61 74 65 20 61 74  | mask's state at|
0007e030  20 74 68 65 20 67 69 76  65 6e 20 63 6f 6f 72 64  | the given coord|
0007e040  69 6e 61 74 65 73 2e 00  44 41 54 41 43 01 00 00  |inates..DATAC...|
0007e050  49 6e 73 65 72 74 20 63  6f 6c 75 6d 6e 20 28 34  |Insert column (4|
0007e060  35 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 53 70  |5).#Parent OS_Sp|
0007e070  72 69 74 65 4f 70 5f 52  65 61 73 6f 6e 0a 3d 3e  |riteOp_Reason.=>|
0007e080  09 52 30 20 3d 09 3c 34  35 2c 20 26 32 44 3d 3e  |.R0 =.<45, &2D=>|
0007e090  6f 73 5f 73 70 72 69 74  65 6f 70 5f 72 65 61 73  |os_spriteop_reas|
0007e0a0  6f 6e 32 3e 20 28 49 6e  73 65 72 74 20 63 6f 6c  |on2> (Insert col|
0007e0b0  75 6d 6e 29 0a 09 52 31  20 3d 09 3c 53 70 72 69  |umn)..R1 =.<Spri|
0007e0c0  74 65 20 61 72 65 61 3d  3e 6f 73 5f 73 70 72 69  |te area=>os_spri|
0007e0d0  74 65 6f 70 5f 61 72 65  61 3e 0a 09 52 32 20 3d  |teop_area>..R2 =|
0007e0e0  09 53 70 72 69 74 65 20  6e 61 6d 65 2f 70 6f 69  |.Sprite name/poi|
0007e0f0  6e 74 65 72 0a 09 52 33  20 3d 09 43 6f 6c 75 6d  |nter..R3 =.Colum|
0007e100  6e 20 6e 75 6d 62 65 72  0a 0a 54 68 69 73 20 69  |n number..This i|
0007e110  6e 73 65 72 74 73 20 61  20 63 6f 6c 75 6d 6e 20  |nserts a column |
0007e120  6f 66 20 74 72 61 6e 73  70 61 72 65 6e 74 2c 20  |of transparent, |
0007e130  63 6f 6c 6f 75 72 20 7a  65 72 6f 20 70 69 78 65  |colour zero pixe|
0007e140  6c 73 20 61 74 20 74 68  65 20 67 69 76 65 20 63  |ls at the give c|
0007e150  6f 6c 75 6d 6e 2e 20 41  6c 6c 20 63 6f 6c 75 6d  |olumn. All colum|
0007e160  6e 73 20 74 6f 20 74 68  65 20 72 69 67 68 74 20  |ns to the right |
0007e170  61 72 65 20 73 68 69 66  74 65 64 20 72 69 67 68  |are shifted righ|
0007e180  74 20 61 20 70 69 78 65  6c 2e 0a 00 44 41 54 41  |t a pixel...DATA|
0007e190  0b 01 00 00 44 65 6c 65  74 65 20 63 6f 6c 75 6d  |....Delete colum|
0007e1a0  6e 20 28 34 36 29 0a 23  50 61 72 65 6e 74 20 4f  |n (46).#Parent O|
0007e1b0  53 5f 53 70 72 69 74 65  4f 70 5f 52 65 61 73 6f  |S_SpriteOp_Reaso|
0007e1c0  6e 0a 3d 3e 09 52 30 20  3d 09 3c 34 36 2c 20 26  |n.=>.R0 =.<46, &|
0007e1d0  32 45 3d 3e 6f 73 5f 73  70 72 69 74 65 6f 70 5f  |2E=>os_spriteop_|
0007e1e0  72 65 61 73 6f 6e 32 3e  20 28 44 65 6c 65 74 65  |reason2> (Delete|
0007e1f0  20 63 6f 6c 75 6d 6e 29  0a 09 52 31 20 3d 09 3c  | column)..R1 =.<|
0007e200  53 70 72 69 74 65 20 61  72 65 61 3d 3e 6f 73 5f  |Sprite area=>os_|
0007e210  73 70 72 69 74 65 6f 70  5f 61 72 65 61 3e 0a 09  |spriteop_area>..|
0007e220  52 32 20 3d 09 53 70 72  69 74 65 20 6e 61 6d 65  |R2 =.Sprite name|
0007e230  2f 70 6f 69 6e 74 65 72  0a 09 52 33 20 3d 09 43  |/pointer..R3 =.C|
0007e240  6f 6c 75 6d 6e 20 6e 75  6d 62 65 72 0a 0a 54 68  |olumn number..Th|
0007e250  69 73 20 64 65 6c 65 74  65 73 20 61 20 63 6f 6c  |is deletes a col|
0007e260  75 6d 6e 2e 20 41 6c 6c  20 63 6f 6c 75 6d 6e 73  |umn. All columns|
0007e270  20 74 6f 20 74 68 65 20  72 69 67 68 74 20 61 72  | to the right ar|
0007e280  65 20 73 68 69 66 74 65  64 20 6c 65 66 74 20 61  |e shifted left a|
0007e290  20 70 69 78 65 6c 2e 00  44 41 54 41 e5 00 00 00  | pixel..DATA....|
0007e2a0  46 6c 69 70 20 61 62 6f  75 74 20 79 20 61 78 69  |Flip about y axi|
0007e2b0  73 20 28 34 37 29 0a 23  50 61 72 65 6e 74 20 4f  |s (47).#Parent O|
0007e2c0  53 5f 53 70 72 69 74 65  4f 70 5f 52 65 61 73 6f  |S_SpriteOp_Reaso|
0007e2d0  6e 0a 3d 3e 09 52 30 20  3d 09 3c 34 37 2c 20 26  |n.=>.R0 =.<47, &|
0007e2e0  32 46 3d 3e 6f 73 5f 73  70 72 69 74 65 6f 70 5f  |2F=>os_spriteop_|
0007e2f0  72 65 61 73 6f 6e 32 3e  20 28 46 6c 69 70 20 61  |reason2> (Flip a|
0007e300  62 6f 75 74 20 79 20 61  78 69 73 29 0a 09 52 31  |bout y axis)..R1|
0007e310  20 3d 09 3c 53 70 72 69  74 65 20 61 72 65 61 3d  | =.<Sprite area=|
0007e320  3e 6f 73 5f 73 70 72 69  74 65 6f 70 5f 61 72 65  |>os_spriteop_are|
0007e330  61 3e 0a 09 52 32 20 3d  09 53 70 72 69 74 65 20  |a>..R2 =.Sprite |
0007e340  6e 61 6d 65 2f 70 6f 69  6e 74 65 72 0a 0a 54 68  |name/pointer..Th|
0007e350  69 73 20 72 65 70 6c 61  63 65 73 20 74 68 65 20  |is replaces the |
0007e360  73 70 72 69 74 65 20 77  69 74 68 20 69 74 73 20  |sprite with its |
0007e370  6d 69 72 72 6f 72 20 69  6d 61 67 65 2e 00 00 00  |mirror image....|
0007e380  44 41 54 41 16 01 00 00  50 6c 6f 74 20 6d 61 73  |DATA....Plot mas|
0007e390  6b 20 28 34 38 29 0a 23  50 61 72 65 6e 74 20 4f  |k (48).#Parent O|
0007e3a0  53 5f 53 70 72 69 74 65  4f 70 5f 52 65 61 73 6f  |S_SpriteOp_Reaso|
0007e3b0  6e 0a 3d 3e 09 52 30 20  3d 09 3c 34 38 2c 20 26  |n.=>.R0 =.<48, &|
0007e3c0  33 30 3d 3e 6f 73 5f 73  70 72 69 74 65 6f 70 5f  |30=>os_spriteop_|
0007e3d0  72 65 61 73 6f 6e 32 3e  20 28 50 6c 6f 74 20 6d  |reason2> (Plot m|
0007e3e0  61 73 6b 29 0a 09 52 31  20 3d 09 3c 53 70 72 69  |ask)..R1 =.<Spri|
0007e3f0  74 65 20 61 72 65 61 3d  3e 6f 73 5f 73 70 72 69  |te area=>os_spri|
0007e400  74 65 6f 70 5f 61 72 65  61 3e 0a 09 52 32 20 3d  |teop_area>..R2 =|
0007e410  09 53 70 72 69 74 65 20  6e 61 6d 65 2f 70 6f 69  |.Sprite name/poi|
0007e420  6e 74 65 72 0a 0a 54 68  69 73 20 70 6c 6f 74 73  |nter..This plots|
0007e430  20 74 68 65 20 73 6f 6c  69 64 20 70 69 78 65 6c  | the solid pixel|
0007e440  73 20 69 6e 20 74 68 65  20 62 61 63 6b 67 72 6f  |s in the backgro|
0007e450  75 6e 64 20 63 6f 6c 6f  75 72 20 77 69 74 68 20  |und colour with |
0007e460  74 68 65 20 62 6f 74 74  6f 6d 20 6c 65 66 74 20  |the bottom left |
0007e470  63 6f 72 6e 65 72 20 61  74 20 74 68 65 20 70 72  |corner at the pr|
0007e480  65 73 65 6e 74 20 67 72  61 70 68 69 63 73 20 63  |esent graphics c|
0007e490  75 72 73 6f 72 2e 00 00  44 41 54 41 4b 01 00 00  |ursor...DATAK...|
0007e4a0  50 6c 6f 74 20 6d 61 73  6b 20 61 74 20 63 6f 6f  |Plot mask at coo|
0007e4b0  72 64 73 20 28 34 39 29  0a 23 50 61 72 65 6e 74  |rds (49).#Parent|
0007e4c0  20 4f 53 5f 53 70 72 69  74 65 4f 70 5f 52 65 61  | OS_SpriteOp_Rea|
0007e4d0  73 6f 6e 0a 3d 3e 09 52  30 20 3d 09 3c 34 39 2c  |son.=>.R0 =.<49,|
0007e4e0  20 26 33 31 3d 3e 6f 73  5f 73 70 72 69 74 65 6f  | &31=>os_spriteo|
0007e4f0  70 5f 72 65 61 73 6f 6e  32 3e 20 28 50 6c 6f 74  |p_reason2> (Plot|
0007e500  20 6d 61 73 6b 20 61 74  20 63 6f 6f 72 64 73 29  | mask at coords)|
0007e510  0a 09 52 31 20 3d 09 3c  53 70 72 69 74 65 20 61  |..R1 =.<Sprite a|
0007e520  72 65 61 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |rea=>os_spriteop|
0007e530  5f 61 72 65 61 3e 0a 09  52 32 20 3d 09 53 70 72  |_area>..R2 =.Spr|
0007e540  69 74 65 20 6e 61 6d 65  2f 70 6f 69 6e 74 65 72  |ite name/pointer|
0007e550  0a 09 52 33 20 3d 09 78  20 63 6f 6f 72 64 69 6e  |..R3 =.x coordin|
0007e560  61 74 65 0a 09 52 34 20  3d 09 79 20 63 6f 6f 72  |ate..R4 =.y coor|
0007e570  64 69 6e 61 74 65 0a 0a  54 68 69 73 20 70 6c 6f  |dinate..This plo|
0007e580  74 73 20 74 68 65 20 73  6f 6c 69 64 20 70 69 78  |ts the solid pix|
0007e590  65 6c 73 20 69 6e 20 74  68 65 20 62 61 63 6b 67  |els in the backg|
0007e5a0  72 6f 75 6e 64 20 63 6f  6c 6f 75 72 20 77 69 74  |round colour wit|
0007e5b0  68 20 74 68 65 20 62 6f  74 74 6f 6d 20 6c 65 66  |h the bottom lef|
0007e5c0  74 20 63 6f 72 6e 65 72  20 61 74 20 74 68 65 20  |t corner at the |
0007e5d0  67 69 76 65 6e 20 63 6f  6f 72 64 69 6e 61 74 65  |given coordinate|
0007e5e0  73 2e 20 00 44 41 54 41  a3 01 00 00 50 6c 6f 74  |s. .DATA....Plot|
0007e5f0  20 6d 61 73 6b 20 73 63  61 6c 65 64 20 28 35 30  | mask scaled (50|
0007e600  29 0a 23 50 61 72 65 6e  74 20 4f 53 5f 53 70 72  |).#Parent OS_Spr|
0007e610  69 74 65 4f 70 5f 52 65  61 73 6f 6e 0a 3d 3e 09  |iteOp_Reason.=>.|
0007e620  52 30 20 3d 09 3c 35 30  2c 20 26 33 32 3d 3e 6f  |R0 =.<50, &32=>o|
0007e630  73 5f 73 70 72 69 74 65  6f 70 5f 72 65 61 73 6f  |s_spriteop_reaso|
0007e640  6e 32 3e 20 28 50 6c 6f  74 20 6d 61 73 6b 20 73  |n2> (Plot mask s|
0007e650  63 61 6c 65 64 29 0a 09  52 31 20 3d 09 3c 53 70  |caled)..R1 =.<Sp|
0007e660  72 69 74 65 20 61 72 65  61 3d 3e 6f 73 5f 73 70  |rite area=>os_sp|
0007e670  72 69 74 65 6f 70 5f 61  72 65 61 3e 0a 09 52 32  |riteop_area>..R2|
0007e680  20 3d 09 53 70 72 69 74  65 20 6e 61 6d 65 2f 70  | =.Sprite name/p|
0007e690  6f 69 6e 74 65 72 0a 09  52 33 20 3d 09 78 20 63  |ointer..R3 =.x c|
0007e6a0  6f 6f 72 64 69 6e 61 74  65 0a 09 52 34 20 3d 09  |oordinate..R4 =.|
0007e6b0  79 20 63 6f 6f 72 64 69  6e 61 74 65 0a 09 52 36  |y coordinate..R6|
0007e6c0  20 3d 09 3c 53 63 61 6c  65 20 66 61 63 74 6f 72  | =.<Scale factor|
0007e6d0  73 3d 3e 6f 73 5f 73 63  61 6c 65 66 61 63 74 6f  |s=>os_scalefacto|
0007e6e0  72 73 3e 2c 20 6f 72 20  30 20 66 6f 72 20 31 3a  |rs>, or 0 for 1:|
0007e6f0  31 20 73 63 61 6c 69 6e  67 0a 0a 54 68 69 73 20  |1 scaling..This |
0007e700  70 6c 6f 74 73 20 74 68  65 20 73 6f 6c 69 64 20  |plots the solid |
0007e710  70 69 78 65 6c 73 20 69  6e 20 74 68 65 20 62 61  |pixels in the ba|
0007e720  63 6b 67 72 6f 75 6e 64  20 63 6f 6c 6f 75 72 20  |ckground colour |
0007e730  28 75 73 69 6e 67 20 74  68 65 20 67 69 76 65 6e  |(using the given|
0007e740  20 73 63 61 6c 69 6e 67  20 66 61 63 74 6f 72 73  | scaling factors|
0007e750  29 20 77 69 74 68 20 74  68 65 20 62 6f 74 74 6f  |) with the botto|
0007e760  6d 20 6c 65 66 74 20 63  6f 72 6e 65 72 20 61 74  |m left corner at|
0007e770  20 74 68 65 20 67 69 76  65 6e 20 63 6f 6f 72 64  | the given coord|
0007e780  69 6e 61 74 65 73 2e 00  44 41 54 41 88 01 00 00  |inates..DATA....|
0007e790  50 61 69 6e 74 20 63 68  61 72 61 63 74 65 72 20  |Paint character |
0007e7a0  73 63 61 6c 65 64 20 28  35 31 29 0a 23 50 61 72  |scaled (51).#Par|
0007e7b0  65 6e 74 20 4f 53 5f 53  70 72 69 74 65 4f 70 5f  |ent OS_SpriteOp_|
0007e7c0  52 65 61 73 6f 6e 0a 3d  3e 09 52 30 20 3d 09 3c  |Reason.=>.R0 =.<|
0007e7d0  35 31 2c 20 26 33 33 3d  3e 6f 73 5f 73 70 72 69  |51, &33=>os_spri|
0007e7e0  74 65 6f 70 5f 72 65 61  73 6f 6e 32 3e 20 28 50  |teop_reason2> (P|
0007e7f0  61 69 6e 74 20 63 68 61  72 61 63 74 65 72 20 73  |aint character s|
0007e800  63 61 6c 65 64 29 0a 09  52 31 20 3d 09 43 68 61  |caled)..R1 =.Cha|
0007e810  72 61 63 74 65 72 20 63  6f 64 65 0a 09 52 33 20  |racter code..R3 |
0007e820  3d 09 78 20 63 6f 6f 72  64 69 6e 61 74 65 0a 09  |=.x coordinate..|
0007e830  52 34 20 3d 09 79 20 63  6f 6f 72 64 69 6e 61 74  |R4 =.y coordinat|
0007e840  65 0a 09 52 36 20 3d 09  3c 53 63 61 6c 65 20 66  |e..R6 =.<Scale f|
0007e850  61 63 74 6f 72 73 3d 3e  6f 73 5f 73 63 61 6c 65  |actors=>os_scale|
0007e860  66 61 63 74 6f 72 73 3e  2c 20 6f 72 20 30 20 66  |factors>, or 0 f|
0007e870  6f 72 20 31 3a 31 20 73  63 61 6c 69 6e 67 0a 0a  |or 1:1 scaling..|
0007e880  54 68 69 73 20 70 6c 6f  74 73 20 74 68 65 20 73  |This plots the s|
0007e890  70 65 63 69 66 69 65 64  20 63 6f 6c 6f 75 72 20  |pecified colour |
0007e8a0  69 6e 20 74 68 65 20 66  6f 72 67 72 6f 75 6e 64  |in the forground|
0007e8b0  20 63 6f 6c 6f 75 72 20  28 75 73 69 6e 67 20 74  | colour (using t|
0007e8c0  68 65 20 67 69 76 65 6e  20 73 63 61 6c 69 6e 67  |he given scaling|
0007e8d0  20 66 61 63 74 6f 72 73  29 20 77 69 74 68 20 74  | factors) with t|
0007e8e0  68 65 20 62 6f 74 74 6f  6d 20 6c 65 66 74 20 63  |he bottom left c|
0007e8f0  6f 72 6e 65 72 20 61 74  20 74 68 65 20 67 69 76  |orner at the giv|
0007e900  65 6e 20 63 6f 6f 72 64  69 6e 61 74 65 73 2e 20  |en coordinates. |
0007e910  44 41 54 41 ac 01 00 00  50 75 74 20 73 70 72 69  |DATA....Put spri|
0007e920  74 65 20 73 63 61 6c 65  64 20 28 35 32 29 0a 23  |te scaled (52).#|
0007e930  50 61 72 65 6e 74 20 4f  53 5f 53 70 72 69 74 65  |Parent OS_Sprite|
0007e940  4f 70 5f 52 65 61 73 6f  6e 0a 3d 3e 09 52 30 20  |Op_Reason.=>.R0 |
0007e950  3d 09 3c 35 32 2c 20 26  33 34 3d 3e 6f 73 5f 73  |=.<52, &34=>os_s|
0007e960  70 72 69 74 65 6f 70 5f  72 65 61 73 6f 6e 32 3e  |priteop_reason2>|
0007e970  20 28 50 75 74 20 73 70  72 69 74 65 20 73 63 61  | (Put sprite sca|
0007e980  6c 65 64 29 0a 09 52 31  20 3d 09 3c 53 70 72 69  |led)..R1 =.<Spri|
0007e990  74 65 20 61 72 65 61 3d  3e 6f 73 5f 73 70 72 69  |te area=>os_spri|
0007e9a0  74 65 6f 70 5f 61 72 65  61 3e 0a 09 52 32 20 3d  |teop_area>..R2 =|
0007e9b0  09 53 70 72 69 74 65 20  6e 61 6d 65 2f 70 6f 69  |.Sprite name/poi|
0007e9c0  6e 74 65 72 0a 09 52 33  20 3d 09 78 20 63 6f 6f  |nter..R3 =.x coo|
0007e9d0  72 64 69 6e 61 74 65 0a  09 52 34 20 3d 09 79 20  |rdinate..R4 =.y |
0007e9e0  63 6f 6f 72 64 69 6e 61  74 65 0a 09 52 35 20 3d  |coordinate..R5 =|
0007e9f0  09 3c 50 6c 6f 74 20 61  63 74 69 6f 6e 3d 3e 6f  |.<Plot action=>o|
0007ea00  73 5f 73 70 72 69 74 65  6f 70 5f 61 63 74 69 6f  |s_spriteop_actio|
0007ea10  6e 3e 0a 09 52 36 20 3d  09 3c 53 63 61 6c 65 20  |n>..R6 =.<Scale |
0007ea20  66 61 63 74 6f 72 73 3d  3e 6f 73 5f 73 63 61 6c  |factors=>os_scal|
0007ea30  65 66 61 63 74 6f 72 73  3e 2c 20 6f 72 20 30 20  |efactors>, or 0 |
0007ea40  66 6f 72 20 31 3a 31 20  73 63 61 6c 69 6e 67 0a  |for 1:1 scaling.|
0007ea50  09 52 37 20 3d 09 3c 50  69 78 65 6c 20 74 72 61  |.R7 =.<Pixel tra|
0007ea60  6e 73 6c 61 74 69 6f 6e  20 74 61 62 6c 65 3d 3e  |nslation table=>|
0007ea70  63 6f 6c 6f 75 72 74 72  61 6e 73 5f 70 69 78 74  |colourtrans_pixt|
0007ea80  72 61 6e 73 3e 2c 20 6f  72 20 30 20 66 6f 72 20  |rans>, or 0 for |
0007ea90  6e 6f 20 74 72 61 6e 73  6c 61 74 69 6f 6e 0a 0a  |no translation..|
0007eaa0  54 68 69 73 20 70 6c 6f  74 73 20 74 68 65 20 67  |This plots the g|
0007eab0  69 76 65 6e 20 73 70 72  69 74 65 2e 44 41 54 41  |iven sprite.DATA|
0007eac0  90 02 00 00 50 75 74 20  73 70 72 69 74 65 20 67  |....Put sprite g|
0007ead0  72 65 79 20 73 63 61 6c  65 64 20 28 35 33 29 0a  |rey scaled (53).|
0007eae0  23 50 61 72 65 6e 74 20  4f 53 5f 53 70 72 69 74  |#Parent OS_Sprit|
0007eaf0  65 4f 70 5f 52 65 61 73  6f 6e 0a 3d 3e 09 52 30  |eOp_Reason.=>.R0|
0007eb00  20 3d 09 3c 35 33 2c 20  26 33 35 3d 3e 6f 73 5f  | =.<53, &35=>os_|
0007eb10  73 70 72 69 74 65 6f 70  5f 72 65 61 73 6f 6e 32  |spriteop_reason2|
0007eb20  3e 20 28 50 75 74 20 73  70 72 69 74 65 20 67 72  |> (Put sprite gr|
0007eb30  65 79 20 73 63 61 6c 65  64 29 0a 09 52 31 20 3d  |ey scaled)..R1 =|
0007eb40  09 3c 53 70 72 69 74 65  20 61 72 65 61 3d 3e 6f  |.<Sprite area=>o|
0007eb50  73 5f 73 70 72 69 74 65  6f 70 5f 61 72 65 61 3e  |s_spriteop_area>|
0007eb60  0a 09 52 32 20 3d 09 53  70 72 69 74 65 20 6e 61  |..R2 =.Sprite na|
0007eb70  6d 65 2f 70 6f 69 6e 74  65 72 0a 09 52 33 20 3d  |me/pointer..R3 =|
0007eb80  09 78 20 63 6f 6f 72 64  69 6e 61 74 65 0a 09 52  |.x coordinate..R|
0007eb90  34 20 3d 09 79 20 63 6f  6f 72 64 69 6e 61 74 65  |4 =.y coordinate|
0007eba0  0a 09 52 35 20 3d 09 30  0a 09 52 36 20 3d 09 3c  |..R5 =.0..R6 =.<|
0007ebb0  53 63 61 6c 65 20 66 61  63 74 6f 72 73 3d 3e 6f  |Scale factors=>o|
0007ebc0  73 5f 73 63 61 6c 65 66  61 63 74 6f 72 73 3e 20  |s_scalefactors> |
0007ebd0  6f 72 20 30 20 66 6f 72  20 31 3a 31 20 73 63 61  |or 0 for 1:1 sca|
0007ebe0  6c 69 6e 67 0a 09 52 37  20 3d 09 3c 50 69 78 65  |ling..R7 =.<Pixe|
0007ebf0  6c 20 74 72 61 6e 73 6c  61 74 69 6f 6e 20 74 61  |l translation ta|
0007ec00  62 6c 65 3d 3e 63 6f 6c  6f 75 72 74 72 61 6e 73  |ble=>colourtrans|
0007ec10  5f 70 69 78 74 72 61 6e  73 3e 20 6f 72 20 30 20  |_pixtrans> or 0 |
0007ec20  66 6f 72 20 6e 6f 20 74  72 61 6e 73 6c 61 74 69  |for no translati|
0007ec30  6f 6e 0a 0a 54 68 69 73  20 61 6e 74 69 2d 61 6c  |on..This anti-al|
0007ec40  69 61 73 65 73 20 74 68  65 20 73 70 72 69 74 65  |iases the sprite|
0007ec50  20 61 73 20 69 74 20 73  63 61 6c 65 73 20 69 74  | as it scales it|
0007ec60  2e 20 54 68 65 20 73 70  72 69 74 65 20 6d 75 73  |. The sprite mus|
0007ec70  74 20 68 61 76 65 20 62  65 65 6e 20 64 65 66 69  |t have been defi|
0007ec80  6e 65 64 20 69 6e 20 61  20 31 36 20 63 6f 6c 6f  |ned in a 16 colo|
0007ec90  75 72 20 6d 6f 64 65 20  77 68 6f 73 65 20 70 69  |ur mode whose pi|
0007eca0  78 65 6c 73 20 72 65 66  6c 65 63 74 20 61 20 6c  |xels reflect a l|
0007ecb0  69 6e 65 61 72 20 67 72  65 79 20 73 63 61 6c 65  |inear grey scale|
0007ecc0  2e 20 4e 6f 74 65 20 74  68 69 73 20 69 73 20 63  |. Note this is c|
0007ecd0  6f 6e 73 69 64 65 72 61  62 6c 79 20 73 6c 6f 77  |onsiderably slow|
0007ece0  65 72 20 74 68 61 6e 20  3c 4f 53 5f 53 70 72 69  |er than <OS_Spri|
0007ecf0  74 65 4f 70 20 35 32 3d  3e 6f 73 5f 73 70 72 69  |teOp 52=>os_spri|
0007ed00  74 65 6f 70 5f 35 32 3e  2e 0a 0a 4e 6f 74 65 3a  |teop_52>...Note:|
0007ed10  20 54 68 69 73 20 63 6f  64 65 20 69 73 20 6e 6f  | This code is no|
0007ed20  74 20 61 76 61 69 6c 61  62 6c 65 20 6f 6e 20 53  |t available on S|
0007ed30  70 72 69 74 65 45 78 74  65 6e 64 20 30 2e 39 39  |priteExtend 0.99|
0007ed40  20 61 6e 64 20 6c 61 74  65 72 2e 0a 44 41 54 41  | and later..DATA|
0007ed50  1e 01 00 00 52 65 6d 6f  76 65 20 6c 65 66 74 20  |....Remove left |
0007ed60  68 61 6e 64 20 77 61 73  74 61 67 65 20 28 35 34  |hand wastage (54|
0007ed70  29 0a 23 50 61 72 65 6e  74 20 4f 53 5f 53 70 72  |).#Parent OS_Spr|
0007ed80  69 74 65 4f 70 5f 52 65  61 73 6f 6e 0a 3d 3e 09  |iteOp_Reason.=>.|
0007ed90  52 30 20 3d 09 3c 35 34  2c 20 26 33 36 3d 3e 6f  |R0 =.<54, &36=>o|
0007eda0  73 5f 73 70 72 69 74 65  6f 70 5f 72 65 61 73 6f  |s_spriteop_reaso|
0007edb0  6e 32 3e 20 28 52 65 6d  6f 76 65 20 6c 65 66 74  |n2> (Remove left|
0007edc0  68 61 6e 64 20 77 61 73  74 61 67 65 29 0a 09 52  |hand wastage)..R|
0007edd0  31 20 3d 09 3c 53 70 72  69 74 65 20 61 72 65 61  |1 =.<Sprite area|
0007ede0  3d 3e 6f 73 5f 73 70 72  69 74 65 6f 70 5f 61 72  |=>os_spriteop_ar|
0007edf0  65 61 3e 0a 09 52 32 20  3d 09 53 70 72 69 74 65  |ea>..R2 =.Sprite|
0007ee00  20 6e 61 6d 65 2f 70 6f  69 6e 74 65 72 0a 0a 54  | name/pointer..T|
0007ee10  68 69 73 20 6d 61 6b 65  73 20 74 68 65 20 6c 65  |his makes the le|
0007ee20  66 74 20 68 61 6e 64 20  65 64 67 65 20 6f 66 20  |ft hand edge of |
0007ee30  74 68 65 20 73 70 72 69  74 65 20 77 6f 72 64 20  |the sprite word |
0007ee40  61 6c 69 67 6e 65 64 2e  20 54 68 75 73 20 72 65  |aligned. Thus re|
0007ee50  64 75 63 69 6e 67 20 61  6e 79 20 77 61 73 74 65  |ducing any waste|
0007ee60  20 6f 66 20 73 70 61 63  65 2e 00 00 44 41 54 41  | of space...DATA|
0007ee70  8d 02 00 00 53 77 69 74  63 68 20 6f 75 74 70 75  |....Switch outpu|
0007ee80  74 20 74 6f 20 73 70 72  69 74 65 20 28 36 30 29  |t to sprite (60)|
0007ee90  0a 23 50 61 72 65 6e 74  20 4f 53 5f 53 70 72 69  |.#Parent OS_Spri|
0007eea0  74 65 4f 70 5f 52 65 61  73 6f 6e 0a 3d 3e 09 52  |teOp_Reason.=>.R|
0007eeb0  30 20 3d 09 3c 36 30 2c  20 26 33 43 3d 3e 6f 73  |0 =.<60, &3C=>os|
0007eec0  5f 73 70 72 69 74 65 6f  70 5f 72 65 61 73 6f 6e  |_spriteop_reason|
0007eed0  32 3e 20 28 53 77 69 74  63 68 20 6f 75 74 70 75  |2> (Switch outpu|
0007eee0  74 20 74 6f 20 73 70 72  69 74 65 29 0a 09 52 31  |t to sprite)..R1|
0007eef0  20 3d 09 3c 53 70 72 69  74 65 20 61 72 65 61 3d  | =.<Sprite area=|
0007ef00  3e 6f 73 5f 73 70 72 69  74 65 6f 70 5f 61 72 65  |>os_spriteop_are|
0007ef10  61 3e 0a 09 52 32 20 3d  09 53 70 72 69 74 65 20  |a>..R2 =.Sprite |
0007ef20  6e 61 6d 65 2f 70 6f 69  6e 74 65 72 20 6f 72 20  |name/pointer or |
0007ef30  30 20 74 6f 20 73 77 69  74 63 68 20 74 6f 20 73  |0 to switch to s|
0007ef40  63 72 65 65 6e 0a 09 52  33 20 3d 09 30 20 3d 3e  |creen..R3 =.0 =>|
0007ef50  20 4e 6f 20 73 61 76 65  20 61 72 65 61 0a 09 20  | No save area.. |
0007ef60  09 31 20 3d 3e 20 53 79  73 74 65 6d 20 73 61 76  |.1 => System sav|
0007ef70  65 20 61 72 65 61 0a 09  20 09 65 6c 73 65 20 3d  |e area.. .else =|
0007ef80  3e 20 50 6f 69 6e 74 65  72 20 74 6f 20 73 61 76  |> Pointer to sav|
0007ef90  65 20 61 72 65 61 0a 3c  3d 09 52 31 2d 52 33 20  |e area.<=.R1-R3 |
0007efa0  3d 20 50 72 65 76 69 6f  75 73 20 76 61 6c 75 65  |= Previous value|
0007efb0  73 0a 0a 54 68 69 73 20  53 57 49 20 64 65 63 72  |s..This SWI decr|
0007efc0  65 65 73 20 74 68 61 74  20 61 6c 6c 20 73 75 62  |ees that all sub|
0007efd0  73 65 71 75 65 6e 74 20  6f 75 74 70 75 74 20 73  |sequent output s|
0007efe0  68 6f 75 6c 64 20 62 65  20 64 69 73 70 6c 61 79  |hould be display|
0007eff0  65 64 20 69 6e 20 74 68  65 20 73 70 72 69 74 65  |ed in the sprite|
0007f000  20 67 69 76 65 6e 2c 20  72 61 74 68 65 72 20 74  | given, rather t|
0007f010  68 61 6e 20 74 6f 20 74  68 65 20 70 72 65 76 69  |han to the previ|
0007f020  6f 75 73 20 64 65 73 74  69 6e 61 74 69 6f 6e 2e  |ous destination.|
0007f030  20 53 61 76 65 20 61 72  65 61 73 20 61 72 65 20  | Save areas are |
0007f040  6f 6e 6c 79 20 72 65 71  75 69 72 65 64 20 69 66  |only required if|
0007f050  20 79 6f 75 20 77 69 73  68 20 74 6f 20 72 65 74  | you wish to ret|
0007f060  61 69 6e 20 74 68 65 20  27 73 74 61 74 65 27 20  |ain the 'state' |
0007f070  6f 66 20 74 68 65 20 73  70 72 69 74 65 20 62 65  |of the sprite be|
0007f080  74 77 65 65 6e 20 73 77  69 74 63 68 65 73 2e 0a  |tween switches..|
0007f090  0a 59 6f 75 20 73 68 6f  75 6c 64 20 65 6e 73 75  |.You should ensu|
0007f0a0  72 65 20 74 68 61 74 20  65 72 72 6f 72 73 20 61  |re that errors a|
0007f0b0  72 65 20 68 61 6e 64 6c  65 64 20 63 6f 72 72 65  |re handled corre|
0007f0c0  63 74 6c 79 20 61 6e 64  20 73 77 69 74 63 68 20  |ctly and switch |
0007f0d0  6f 75 74 70 75 74 20 62  61 63 6b 20 77 68 69 6c  |output back whil|
0007f0e0  73 74 20 75 73 69 6e 67  20 73 77 69 74 63 68 65  |st using switche|
0007f0f0  64 20 6f 75 74 70 75 74  2e 00 00 00 44 41 54 41  |d output....DATA|
0007f100  85 02 00 00 53 77 69 74  63 68 20 6f 75 74 70 75  |....Switch outpu|
0007f110  74 20 74 6f 20 6d 61 73  6b 20 28 36 31 29 0a 23  |t to mask (61).#|
0007f120  50 61 72 65 6e 74 20 4f  53 5f 53 70 72 69 74 65  |Parent OS_Sprite|
0007f130  4f 70 5f 52 65 61 73 6f  6e 0a 3d 3e 09 52 30 20  |Op_Reason.=>.R0 |
0007f140  3d 09 3c 36 31 2c 20 26  33 44 3d 3e 6f 73 5f 73  |=.<61, &3D=>os_s|
0007f150  70 72 69 74 65 6f 70 5f  72 65 61 73 6f 6e 32 3e  |priteop_reason2>|
0007f160  20 28 53 77 69 74 63 68  20 6f 75 74 70 75 74 20  | (Switch output |
0007f170  74 6f 20 6d 61 73 6b 29  0a 09 52 31 20 3d 09 3c  |to mask)..R1 =.<|
0007f180  53 70 72 69 74 65 20 61  72 65 61 3d 3e 6f 73 5f  |Sprite area=>os_|
0007f190  73 70 72 69 74 65 6f 70  5f 61 72 65 61 3e 0a 09  |spriteop_area>..|
0007f1a0  52 32 20 3d 09 53 70 72  69 74 65 20 6e 61 6d 65  |R2 =.Sprite name|
0007f1b0  2f 70 6f 69 6e 74 65 72  20 6f 72 20 30 20 74 6f  |/pointer or 0 to|
0007f1c0  20 73 77 69 74 63 68 20  74 6f 20 73 63 72 65 65  | switch to scree|
0007f1d0  6e 0a 09 52 33 20 3d 09  30 20 3d 3e 20 4e 6f 20  |n..R3 =.0 => No |
0007f1e0  73 61 76 65 20 61 72 65  61 0a 09 20 09 31 20 3d  |save area.. .1 =|
0007f1f0  3e 20 53 79 73 74 65 6d  20 73 61 76 65 20 61 72  |> System save ar|
0007f200  65 61 0a 09 20 09 65 6c  73 65 20 3d 3e 20 50 6f  |ea.. .else => Po|
0007f210  69 6e 74 65 72 20 74 6f  20 73 61 76 65 20 61 72  |inter to save ar|
0007f220  65 61 0a 3c 3d 09 52 31  2d 52 33 20 3d 20 50 72  |ea.<=.R1-R3 = Pr|
0007f230  65 76 69 6f 75 73 20 76  61 6c 75 65 73 0a 0a 54  |evious values..T|
0007f240  68 69 73 20 53 57 49 20  64 65 63 72 65 65 73 20  |his SWI decrees |
0007f250  74 68 61 74 20 61 6c 6c  20 73 75 62 73 65 71 75  |that all subsequ|
0007f260  65 6e 74 20 6f 75 74 70  75 74 20 73 68 6f 75 6c  |ent output shoul|
0007f270  64 20 62 65 20 70 6c 61  63 65 64 20 69 6e 20 74  |d be placed in t|
0007f280  68 65 20 73 70 72 69 74  65 20 6d 61 73 6b 2c 20  |he sprite mask, |
0007f290  72 61 74 68 65 72 20 74  68 61 6e 20 74 6f 20 74  |rather than to t|
0007f2a0  68 65 20 70 72 65 76 69  6f 75 73 20 64 65 73 74  |he previous dest|
0007f2b0  69 6e 61 74 69 6f 6e 2e  20 53 61 76 65 20 61 72  |ination. Save ar|
0007f2c0  65 61 73 20 61 72 65 20  6f 6e 6c 79 20 72 65 71  |eas are only req|
0007f2d0  75 69 72 65 64 20 69 66  20 79 6f 75 20 77 69 73  |uired if you wis|
0007f2e0  68 20 74 6f 20 72 65 74  61 69 6e 20 74 68 65 20  |h to retain the |
0007f2f0  27 73 74 61 74 65 27 20  6f 66 20 74 68 65 20 73  |'state' of the s|
0007f300  70 72 69 74 65 20 62 65  74 77 65 65 6e 20 73 77  |prite between sw|
0007f310  69 74 63 68 65 73 2e 0a  0a 59 6f 75 20 73 68 6f  |itches...You sho|
0007f320  75 6c 64 20 65 6e 73 75  72 65 20 74 68 61 74 20  |uld ensure that |
0007f330  65 72 72 6f 72 73 20 61  72 65 20 68 61 6e 64 6c  |errors are handl|
0007f340  65 64 20 63 6f 72 72 65  63 74 6c 79 20 61 6e 64  |ed correctly and|
0007f350  20 73 77 69 74 63 68 20  6f 75 74 70 75 74 20 62  | switch output b|
0007f360  61 63 6b 20 77 68 69 6c  73 74 20 75 73 69 6e 67  |ack whilst using|
0007f370  20 73 77 69 74 63 68 65  64 20 6f 75 74 70 75 74  | switched output|
0007f380  2e 00 00 00 44 41 54 41  20 02 00 00 52 65 61 64  |....DATA ...Read|
0007f390  20 73 61 76 65 20 61 72  65 61 20 73 69 7a 65 20  | save area size |
0007f3a0  28 36 32 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |(62).#Parent OS_|
0007f3b0  53 70 72 69 74 65 4f 70  5f 52 65 61 73 6f 6e 0a  |SpriteOp_Reason.|
0007f3c0  3d 3e 09 52 30 20 3d 09  3c 36 32 2c 20 26 33 45  |=>.R0 =.<62, &3E|
0007f3d0  3d 3e 6f 73 5f 73 70 72  69 74 65 6f 70 5f 72 65  |=>os_spriteop_re|
0007f3e0  61 73 6f 6e 32 3e 20 28  52 65 61 64 20 73 61 76  |ason2> (Read sav|
0007f3f0  65 20 61 72 65 61 20 73  69 7a 65 29 0a 09 52 31  |e area size)..R1|
0007f400  20 3d 09 3c 53 70 72 69  74 65 20 61 72 65 61 3d  | =.<Sprite area=|
0007f410  3e 6f 73 5f 73 70 72 69  74 65 6f 70 5f 61 72 65  |>os_spriteop_are|
0007f420  61 3e 0a 09 52 32 20 3d  09 53 70 72 69 74 65 20  |a>..R2 =.Sprite |
0007f430  6e 61 6d 65 2f 70 6f 69  6e 74 65 72 2c 20 6f 72  |name/pointer, or|
0007f440  20 30 20 66 6f 72 20 74  68 65 20 73 63 72 65 65  | 0 for the scree|
0007f450  6e 0a 3c 3d 09 52 33 20  3d 09 53 69 7a 65 20 6f  |n.<=.R3 =.Size o|
0007f460  66 20 72 65 71 75 69 72  65 64 20 73 61 76 65 20  |f required save |
0007f470  61 72 65 61 20 69 6e 20  62 79 74 65 73 0a 0a 54  |area in bytes..T|
0007f480  68 69 73 20 63 61 6c 63  75 6c 61 74 65 73 20 74  |his calculates t|
0007f490  68 65 20 73 69 7a 65 20  6f 66 20 61 20 73 61 76  |he size of a sav|
0007f4a0  65 20 61 72 65 61 20 66  6f 72 20 74 68 65 20 67  |e area for the g|
0007f4b0  69 76 65 6e 20 73 70 72  69 74 65 2e 20 49 74 20  |iven sprite. It |
0007f4c0  69 73 20 63 6f 6e 73 74  61 6e 74 20 66 6f 72 20  |is constant for |
0007f4d0  61 20 70 61 72 74 69 63  75 6c 61 72 20 72 65 6c  |a particular rel|
0007f4e0  65 61 73 65 20 6f 66 20  52 49 53 43 20 4f 53 20  |ease of RISC OS |
0007f4f0  62 75 74 20 6d 61 79 20  63 68 61 6e 67 65 20 69  |but may change i|
0007f500  6e 20 74 68 65 20 66 75  74 75 72 65 2e 0a 0a 46  |n the future...F|
0007f510  6f 72 20 74 68 65 20 66  69 72 73 74 20 75 73 65  |or the first use|
0007f520  20 79 6f 75 20 73 68 6f  75 6c 64 20 73 65 74 20  | you should set |
0007f530  74 68 65 20 66 69 72 73  74 20 77 6f 72 64 20 6f  |the first word o|
0007f540  66 20 74 68 65 20 73 61  76 65 20 61 72 65 61 20  |f the save area |
0007f550  74 6f 20 30 20 73 6f 20  74 68 61 74 20 74 68 65  |to 0 so that the|
0007f560  20 61 72 65 61 20 63 61  6e 20 62 65 20 69 6e 69  | area can be ini|
0007f570  74 69 61 6c 69 73 65 64  3b 20 73 75 62 73 65 71  |tialised; subseq|
0007f580  75 65 6e 74 6c 79 20 69  74 20 77 69 6c 6c 20 62  |uently it will b|
0007f590  65 20 75 70 64 61 74 65  64 20 62 79 20 74 68 65  |e updated by the|
0007f5a0  20 4f 53 2e 44 41 54 41  07 01 00 00 56 65 72 69  | OS.DATA....Veri|
0007f5b0  66 79 20 73 70 72 69 74  65 20 61 72 65 61 20 28  |fy sprite area (|
0007f5c0  31 37 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 53  |17).#Parent OS_S|
0007f5d0  70 72 69 74 65 4f 70 5f  52 65 61 73 6f 6e 0a 3d  |priteOp_Reason.=|
0007f5e0  3e 09 52 30 20 3d 09 3c  31 37 2c 20 26 31 31 3d  |>.R0 =.<17, &11=|
0007f5f0  3e 6f 73 5f 73 70 72 69  74 65 6f 70 5f 72 65 61  |>os_spriteop_rea|
0007f600  73 6f 6e 32 3e 20 28 56  65 72 69 66 79 20 73 70  |son2> (Verify sp|
0007f610  72 69 74 65 20 61 72 65  61 29 0a 09 52 31 20 3d  |rite area)..R1 =|
0007f620  09 3c 53 70 72 69 74 65  20 61 72 65 61 3d 3e 6f  |.<Sprite area=>o|
0007f630  73 5f 73 70 72 69 74 65  6f 70 5f 61 72 65 61 3e  |s_spriteop_area>|
0007f640  0a 0a 54 68 69 73 20 76  65 72 69 66 69 65 73 20  |..This verifies |
0007f650  61 20 73 70 72 69 74 65  20 61 72 65 61 20 66 6f  |a sprite area fo|
0007f660  72 20 63 6f 6e 73 69 73  74 65 6e 63 79 2e 20 54  |r consistency. T|
0007f670  68 69 73 20 53 57 49 20  69 73 20 6f 6e 6c 79 20  |his SWI is only |
0007f680  61 76 61 69 6c 61 62 6c  65 20 77 69 74 68 20 53  |available with S|
0007f690  70 72 69 74 65 45 78 74  65 6e 64 20 30 2e 39 39  |priteExtend 0.99|
0007f6a0  20 6f 72 20 6c 61 74 65  72 2e 0a 00 44 41 54 41  | or later...DATA|
0007f6b0  80 02 00 00 53 70 72 69  74 65 20 54 79 70 65 20  |....Sprite Type |
0007f6c0  46 69 65 6c 64 0a 62 69  74 73 20 32 37 2d 33 31  |Field.bits 27-31|
0007f6d0  09 4d 65 61 6e 69 6e 67  0a 23 6c 69 6e 65 0a 30  |.Meaning.#line.0|
0007f6e0  09 4f 6c 64 20 66 6f 72  6d 61 74 20 6d 6f 64 65  |.Old format mode|
0007f6f0  20 77 6f 72 64 2e 20 4d  6f 64 65 20 69 73 20 69  | word. Mode is i|
0007f700  6e 20 62 69 74 73 20 30  2d 36 20 6f 66 20 74 68  |n bits 0-6 of th|
0007f710  65 20 4d 6f 64 65 20 57  6f 72 64 0a 31 09 31 20  |e Mode Word.1.1 |
0007f720  62 70 70 0a 32 09 32 20  62 70 70 0a 33 09 34 20  |bpp.2.2 bpp.3.4 |
0007f730  62 70 70 0a 34 09 38 20  62 70 70 0a 35 09 31 36  |bpp.4.8 bpp.5.16|
0007f740  20 62 70 70 0a 36 09 32  34 20 62 70 70 0a 37 09  | bpp.6.24 bpp.7.|
0007f750  43 4d 59 4b 20 66 6f 72  6d 61 74 20 61 6c 6c 6f  |CMYK format allo|
0007f760  63 61 74 65 64 20 74 6f  20 43 43 0a 38 09 32 34  |cated to CC.8.24|
0007f770  20 62 70 70 20 66 6f 72  6d 61 74 20 61 6c 6c 6f  | bpp format allo|
0007f780  63 61 74 65 64 20 74 6f  20 43 43 0a 39 09 4a 50  |cated to CC.9.JP|
0007f790  45 47 20 66 6f 72 6d 61  74 20 61 6c 6c 6f 63 61  |EG format alloca|
0007f7a0  74 65 64 0a 31 30 2d 33  31 09 46 6f 72 20 66 75  |ted.10-31.For fu|
0007f7b0  74 75 72 65 20 65 78 70  61 6e 73 69 6f 6e 0a 0a  |ture expansion..|
0007f7c0  49 66 20 54 79 70 65 20  46 69 65 6c 64 20 69 73  |If Type Field is|
0007f7d0  20 6e 6f 6e 2d 7a 65 72  6f 2c 20 74 68 65 6e 20  | non-zero, then |
0007f7e0  62 69 74 73 20 30 2d 32  36 20 61 72 65 3a 0a 62  |bits 0-26 are:.b|
0007f7f0  69 74 28 73 29 09 4d 65  61 6e 69 6e 67 0a 30 09  |it(s).Meaning.0.|
0007f800  54 61 6b 65 73 20 74 68  65 20 76 61 6c 75 65 20  |Takes the value |
0007f810  31 2c 20 74 6f 20 64 69  73 74 69 6e 67 75 69 73  |1, to distinguis|
0007f820  68 20 74 68 69 73 20 66  72 6f 6d 20 61 20 73 6f  |h this from a so|
0007f830  2d 63 61 6c 6c 65 64 20  3c 6d 6f 64 65 20 73 65  |-called <mode se|
0007f840  6c 65 63 74 6f 72 3d 3e  57 69 6d 70 3a 57 69 6d  |lector=>Wimp:Wim|
0007f850  70 5f 4d 6f 64 65 53 65  6c 65 63 74 3e 0a 31 2d  |p_ModeSelect>.1-|
0007f860  31 33 09 48 6f 72 69 7a  6f 6e 74 61 6c 20 64 6f  |13.Horizontal do|
0007f870  74 73 20 70 65 72 20 69  6e 63 68 20 6f 66 20 73  |ts per inch of s|
0007f880  70 72 69 74 65 0a 31 34  2d 32 36 09 56 65 72 74  |prite.14-26.Vert|
0007f890  69 63 61 6c 20 64 6f 74  73 20 70 65 72 20 69 6e  |ical dots per in|
0007f8a0  63 68 20 6f 66 20 73 70  72 69 74 65 2e 20 4f 6e  |ch of sprite. On|
0007f8b0  6c 79 20 39 30 20 d7 20  34 35 20 61 6e 64 20 39  |ly 90 . 45 and 9|
0007f8c0  30 20 d7 20 39 30 20 77  69 6c 6c 20 69 6e 69 74  |0 . 90 will init|
0007f8d0  69 61 6c 6c 79 20 62 65  20 73 75 70 70 6f 72 74  |ially be support|
0007f8e0  65 64 20 28 63 6f 72 72  65 73 70 6f 6e 64 69 6e  |ed (correspondin|
0007f8f0  67 20 74 6f 20 74 68 65  20 6c 6f 77 20 61 6e 64  |g to the low and|
0007f900  20 68 69 67 68 20 76 65  72 74 69 63 61 6c 20 72  | high vertical r|
0007f910  65 73 6f 6c 75 74 69 6f  6e 73 20 63 75 72 72 65  |esolutions curre|
0007f920  6e 74 6c 79 20 69 6e 20  75 73 65 29 44 41 54 41  |ntly in use)DATA|
0007f930  40 01 00 00 49 6e 73 65  72 74 2f 64 65 6c 65 74  |@...Insert/delet|
0007f940  65 20 72 6f 77 73 20 28  35 37 29 0a 23 50 61 72  |e rows (57).#Par|
0007f950  65 6e 74 20 4f 53 5f 53  70 72 69 74 65 4f 70 5f  |ent OS_SpriteOp_|
0007f960  52 65 61 73 6f 6e 0a 3d  3e 09 52 30 20 3d 09 3c  |Reason.=>.R0 =.<|
0007f970  35 37 2c 20 26 33 39 3d  3e 6f 73 5f 73 70 72 69  |57, &39=>os_spri|
0007f980  74 65 6f 70 5f 72 65 61  73 6f 6e 32 3e 20 28 49  |teop_reason2> (I|
0007f990  6e 73 65 72 74 2f 64 65  6c 65 74 65 20 72 6f 77  |nsert/delete row|
0007f9a0  73 29 0a 09 52 31 20 3d  09 3c 53 70 72 69 74 65  |s)..R1 =.<Sprite|
0007f9b0  20 61 72 65 61 3d 3e 6f  73 5f 73 70 72 69 74 65  | area=>os_sprite|
0007f9c0  6f 70 5f 61 72 65 61 3e  0a 09 52 32 20 3d 09 53  |op_area>..R2 =.S|
0007f9d0  70 72 69 74 65 20 6e 61  6d 65 2f 70 6f 69 6e 74  |prite name/point|
0007f9e0  65 72 0a 09 52 33 20 3d  09 52 6f 77 20 6e 75 6d  |er..R3 =.Row num|
0007f9f0  62 65 72 0a 09 52 34 20  3d 09 2b 76 65 20 3a 20  |ber..R4 =.+ve : |
0007fa00  4e 75 6d 62 65 72 20 6f  66 20 72 6f 77 73 20 74  |Number of rows t|
0007fa10  6f 20 69 6e 73 65 72 74  0a 09 20 09 2d 76 65 20  |o insert.. .-ve |
0007fa20  3a 20 4e 75 6d 62 65 72  20 6f 66 20 72 6f 77 73  |: Number of rows|
0007fa30  20 74 6f 20 64 65 6c 65  74 65 0a 0a 49 6e 73 65  | to delete..Inse|
0007fa40  72 74 20 6f 72 20 64 65  6c 65 74 65 20 72 6f 77  |rt or delete row|
0007fa50  73 20 66 72 6f 6d 20 74  68 65 20 73 70 72 69 74  |s from the sprit|
0007fa60  65 20 73 70 65 63 69 66  69 65 64 2e 44 41 54 41  |e specified.DATA|
0007fa70  56 01 00 00 49 6e 73 65  72 74 2f 64 65 6c 65 74  |V...Insert/delet|
0007fa80  65 20 63 6f 6c 75 6d 6e  73 20 28 35 38 29 0a 23  |e columns (58).#|
0007fa90  50 61 72 65 6e 74 20 4f  53 5f 53 70 72 69 74 65  |Parent OS_Sprite|
0007faa0  4f 70 5f 52 65 61 73 6f  6e 0a 3d 3e 09 52 30 20  |Op_Reason.=>.R0 |
0007fab0  3d 09 3c 35 38 2c 20 26  33 41 3d 3e 6f 73 5f 73  |=.<58, &3A=>os_s|
0007fac0  70 72 69 74 65 6f 70 5f  72 65 61 73 6f 6e 32 3e  |priteop_reason2>|
0007fad0  20 28 49 6e 73 65 72 74  20 6f 72 20 64 65 6c 65  | (Insert or dele|
0007fae0  74 65 20 63 6f 6c 75 6d  6e 73 29 0a 09 52 31 20  |te columns)..R1 |
0007faf0  3d 09 3c 53 70 72 69 74  65 20 61 72 65 61 3d 3e  |=.<Sprite area=>|
0007fb00  6f 73 5f 73 70 72 69 74  65 6f 70 5f 61 72 65 61  |os_spriteop_area|
0007fb10  3e 0a 09 52 32 20 3d 09  53 70 72 69 74 65 20 6e  |>..R2 =.Sprite n|
0007fb20  61 6d 65 2f 70 6f 69 6e  74 65 72 0a 09 52 33 20  |ame/pointer..R3 |
0007fb30  3d 09 43 6f 6c 75 6d 6e  20 6e 75 6d 62 65 72 0a  |=.Column number.|
0007fb40  09 52 34 20 3d 09 2b 76  65 20 3a 20 4e 75 6d 62  |.R4 =.+ve : Numb|
0007fb50  65 72 20 6f 66 20 63 6f  6c 75 6d 6e 73 20 74 6f  |er of columns to|
0007fb60  20 69 6e 73 65 72 74 0a  09 20 09 2d 76 65 20 3a  | insert.. .-ve :|
0007fb70  20 4e 75 6d 62 65 72 20  6f 66 20 63 6f 6c 75 6d  | Number of colum|
0007fb80  6e 73 20 74 6f 20 64 65  6c 65 74 65 0a 0a 49 6e  |ns to delete..In|
0007fb90  73 65 72 74 20 6f 72 20  64 65 6c 65 74 65 20 63  |sert or delete c|
0007fba0  6f 6c 75 6d 6e 73 20 66  72 6f 6d 20 74 68 65 20  |olumns from the |
0007fbb0  73 70 72 69 74 65 20 73  70 65 63 69 66 69 65 64  |sprite specified|
0007fbc0  2e 0a 00 00 44 41 54 41  68 04 00 00 50 6c 6f 74  |....DATAh...Plot|
0007fbd0  20 6d 61 73 6b 2f 73 70  72 69 74 65 20 74 72 61  | mask/sprite tra|
0007fbe0  6e 73 66 6f 72 6d 65 64  20 28 35 35 2f 35 36 29  |nsformed (55/56)|
0007fbf0  0a 23 50 61 72 65 6e 74  20 4f 53 5f 53 70 72 69  |.#Parent OS_Spri|
0007fc00  74 65 4f 70 5f 52 65 61  73 6f 6e 0a 3d 3e 09 52  |teOp_Reason.=>.R|
0007fc10  30 20 3d 09 3c 35 35 2c  20 26 33 37 3d 3e 6f 73  |0 =.<55, &37=>os|
0007fc20  5f 73 70 72 69 74 65 6f  70 5f 72 65 61 73 6f 6e  |_spriteop_reason|
0007fc30  32 3e 20 28 50 6c 6f 74  20 6d 61 73 6b 29 20 6f  |2> (Plot mask) o|
0007fc40  72 20 3c 35 36 2c 20 26  33 38 3d 3e 6f 73 5f 73  |r <56, &38=>os_s|
0007fc50  70 72 69 74 65 6f 70 5f  72 65 61 73 6f 6e 32 3e  |priteop_reason2>|
0007fc60  20 28 50 6c 6f 74 20 73  70 72 69 74 65 29 0a 09  | (Plot sprite)..|
0007fc70  52 31 20 3d 09 3c 53 70  72 69 74 65 20 61 72 65  |R1 =.<Sprite are|
0007fc80  61 3d 3e 6f 73 5f 73 70  72 69 74 65 6f 70 5f 61  |a=>os_spriteop_a|
0007fc90  72 65 61 3e 0a 09 52 32  20 3d 09 53 70 72 69 74  |rea>..R2 =.Sprit|
0007fca0  65 20 6e 61 6d 65 2f 70  6f 69 6e 74 65 72 0a 09  |e name/pointer..|
0007fcb0  52 33 20 3d 09 3c 66 6c  61 67 73 3d 3e 2e 66 6c  |R3 =.<flags=>.fl|
0007fcc0  61 67 73 3e 0a 09 52 34  20 3d 09 50 6f 69 6e 74  |ags>..R4 =.Point|
0007fcd0  65 72 20 74 6f 20 3c 73  6f 75 72 63 65 20 72 65  |er to <source re|
0007fce0  63 74 61 6e 67 6c 65 3d  3e 2e 73 6f 75 72 63 65  |ctangle=>.source|
0007fcf0  3e 20 77 69 74 68 69 6e  20 73 70 72 69 74 65 0a  |> within sprite.|
0007fd00  09 52 35 20 3d 09 3c 50  6c 6f 74 20 61 63 74 69  |.R5 =.<Plot acti|
0007fd10  6f 6e 3d 3e 6f 73 5f 73  70 72 69 74 65 6f 70 5f  |on=>os_spriteop_|
0007fd20  61 63 74 69 6f 6e 3e 0a  09 52 36 20 3d 09 49 66  |action>..R6 =.If|
0007fd30  20 52 33 20 62 69 74 20  30 20 63 6c 65 61 72 20  | R3 bit 0 clear |
0007fd40  3a 20 70 6f 69 6e 74 65  72 20 74 6f 20 6d 61 74  |: pointer to mat|
0007fd50  72 69 78 0a 09 20 09 20  09 52 36 20 3d 20 70 6f  |rix.. . .R6 = po|
0007fd60  69 6e 74 65 72 20 74 6f  20 3c 74 72 61 6e 73 66  |inter to <transf|
0007fd70  6f 72 6d 61 74 69 6f 6e  20 6d 61 74 72 69 78 3d  |ormation matrix=|
0007fd80  3e 64 72 61 77 5f 74 72  61 6e 73 66 6f 72 6d 3e  |>draw_transform>|
0007fd90  0a 09 20 09 49 66 20 52  33 20 62 69 74 20 30 20  |.. .If R3 bit 0 |
0007fda0  73 65 74 20 3a 20 70 6f  69 6e 74 65 72 20 74 6f  |set : pointer to|
0007fdb0  20 64 65 73 74 69 6e 61  74 69 6f 6e 20 63 6f 6f  | destination coo|
0007fdc0  72 64 73 0a 09 20 09 20  09 52 36 20 3d 09 2b 30  |rds.. . .R6 =.+0|
0007fdd0  2c 34 09 3d 20 78 30 2c  79 30 20 6f 6e 20 73 63  |,4.= x0,y0 on sc|
0007fde0  72 65 65 6e 20 28 31 2f  32 35 36 74 68 20 4f 53  |reen (1/256th OS|
0007fdf0  20 75 6e 69 74 29 0a 09  20 09 20 09 20 09 2b 38  | unit).. . . .+8|
0007fe00  2c 31 32 09 3d 20 78 31  2c 79 31 20 6f 6e 20 73  |,12.= x1,y1 on s|
0007fe10  63 72 65 65 6e 20 28 31  2f 32 35 36 74 68 20 4f  |creen (1/256th O|
0007fe20  53 20 75 6e 69 74 29 0a  09 20 09 20 09 20 09 2b  |S unit).. . . .+|
0007fe30  31 36 2c 32 30 09 3d 20  78 32 2c 79 32 20 6f 6e  |16,20.= x2,y2 on|
0007fe40  20 73 63 72 65 65 6e 20  28 31 2f 32 35 36 74 68  | screen (1/256th|
0007fe50  20 4f 53 20 75 6e 69 74  29 0a 09 20 09 20 09 20  | OS unit).. . . |
0007fe60  09 2b 32 34 2c 32 38 09  3d 20 78 33 2c 79 33 20  |.+24,28.= x3,y3 |
0007fe70  6f 6e 20 73 63 72 65 65  6e 20 28 31 2f 32 35 36  |on screen (1/256|
0007fe80  74 68 20 4f 53 20 75 6e  69 74 29 0a 09 52 37 20  |th OS unit)..R7 |
0007fe90  3d 09 3c 50 69 78 65 6c  20 74 72 61 6e 73 6c 61  |=.<Pixel transla|
0007fea0  74 69 6f 6e 20 74 61 62  6c 65 3d 3e 63 6f 6c 6f  |tion table=>colo|
0007feb0  75 72 74 72 61 6e 73 5f  70 69 78 74 72 61 6e 73  |urtrans_pixtrans|
0007fec0  3e 20 6f 72 20 30 20 66  6f 72 20 6e 6f 6e 65 0a  |> or 0 for none.|
0007fed0  0a 52 49 53 43 20 4f 53  20 33 20 4f 6e 6c 79 0a  |.RISC OS 3 Only.|
0007fee0  23 53 75 62 70 61 67 65  20 66 6c 61 67 73 0a 54  |#Subpage flags.T|
0007fef0  72 61 6e 73 66 6f 72 6d  61 74 69 6f 6e 20 66 6c  |ransformation fl|
0007ff00  61 67 73 0a 42 69 74 09  4d 65 61 6e 69 6e 67 0a  |ags.Bit.Meaning.|
0007ff10  23 4c 69 6e 65 0a 30 09  31 3d 3e 20 52 36 20 3d  |#Line.0.1=> R6 =|
0007ff20  09 50 6f 69 6e 74 65 72  20 74 6f 20 64 65 73 74  |.Pointer to dest|
0007ff30  69 6e 61 74 69 6f 6e 20  63 6f 6f 72 64 73 0a 09  |ination coords..|
0007ff40  30 3d 3e 20 52 36 20 3d  09 50 6f 69 6e 74 65 72  |0=> R6 =.Pointer|
0007ff50  20 74 6f 20 3c 74 72 61  6e 73 66 6f 72 6d 61 74  | to <transformat|
0007ff60  69 6f 6e 20 6d 61 74 72  69 78 3d 3e 64 72 61 77  |ion matrix=>draw|
0007ff70  5f 74 72 61 6e 73 66 6f  72 6d 3e 0a 31 09 31 3d  |_transform>.1.1=|
0007ff80  3e 20 52 34 20 3d 09 50  6f 69 6e 74 65 72 20 74  |> R4 =.Pointer t|
0007ff90  6f 20 73 6f 75 72 63 65  20 72 65 63 74 61 6e 67  |o source rectang|
0007ffa0  6c 65 20 77 69 74 68 69  6e 20 73 70 72 69 74 65  |le within sprite|
0007ffb0  0a 32 2d 33 31 09 52 65  73 65 72 76 65 64 20 6d  |.2-31.Reserved m|
0007ffc0  75 73 74 20 62 65 20 30  0a 23 53 75 62 70 61 67  |ust be 0.#Subpag|
0007ffd0  65 20 73 6f 75 72 63 65  0a 54 72 61 6e 73 66 6f  |e source.Transfo|
0007ffe0  72 6d 61 74 69 6f 6e 20  73 6f 75 72 63 65 0a 4f  |rmation source.O|
0007fff0  66 66 73 65 74 09 43 6f  6e 74 65 6e 74 73 0a 23  |ffset.Contents.#|
00080000  4c 69 6e 65 0a 30 09 78  20 6c 65 66 74 0a 34 09  |Line.0.x left.4.|
00080010  79 20 62 6f 74 74 6f 6d  0a 38 09 78 20 72 69 67  |y bottom.8.x rig|
00080020  68 74 0a 31 32 09 79 20  74 6f 70 0a 44 41 54 41  |ht.12.y top.DATA|
00080030  2c 00 00 00 23 20 54 68  69 73 20 66 69 6c 65 20  |,...# This file |
00080040  6c 69 6e 6b 73 20 74 6f  20 4f 53 5f 53 70 72 69  |links to OS_Spri|
00080050  74 65 4f 70 5f 35 35 0a  44 49 52 24 a0 02 00 00  |teOp_55.DIR$....|
00080060  a0 02 00 00 f8 02 08 00  47 ff ff ff 32 4b 9a cd  |........G...2K..|
00080070  59 03 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |Y...........!Roo|
00080080  74 00 00 00 54 06 08 00  47 fd ff ff 40 70 f1 27  |t...T...G...@p.'|
00080090  36 01 00 00 13 00 00 00  00 00 00 00 31 38 00 00  |6...........18..|
000800a0  8c 07 08 00 47 fd ff ff  f2 3f ab cd 87 00 00 00  |....G....?......|
000800b0  13 00 00 00 00 00 00 00  36 00 00 00 14 08 08 00  |........6.......|
000800c0  47 fd ff ff ca 8a bd cd  6d 00 00 00 13 00 00 00  |G.......m.......|
000800d0  00 00 00 00 37 00 00 00  84 08 08 00 47 fd ff ff  |....7.......G...|
000800e0  a0 43 ab cd e9 00 00 00  13 00 00 00 00 00 00 00  |.C..............|
000800f0  31 33 00 00 70 09 08 00  47 fd ff ff 99 8c bd cd  |13..p...G.......|
00080100  86 00 00 00 13 00 00 00  00 00 00 00 34 00 00 00  |............4...|
00080110  f8 09 08 00 48 fd ff ff  c5 6e 5f 25 9d 01 00 00  |....H....n_%....|
00080120  13 00 00 00 00 00 00 00  31 32 00 00 98 0b 08 00  |........12......|
00080130  48 fd ff ff b7 64 fd 26  b1 00 00 00 13 00 00 00  |H....d.&........|
00080140  00 00 00 00 31 00 00 00  4c 0c 08 00 48 fd ff ff  |....1...L...H...|
00080150  d2 58 fd 26 f4 00 00 00  13 00 00 00 00 00 00 00  |.X.&............|
00080160  30 00 00 00 40 0d 08 00  48 fd ff ff bc 4a d2 22  |0...@...H....J."|
00080170  70 01 00 00 13 00 00 00  00 00 00 00 32 00 00 00  |p...........2...|
00080180  b0 0e 08 00 46 fd ff ff  50 64 62 f5 14 01 00 00  |....F...Pdb.....|
00080190  13 00 00 00 00 00 00 00  33 00 00 00 c4 0f 08 00  |........3.......|
000801a0  46 fd ff ff a9 7b 62 f5  bd 00 00 00 13 00 00 00  |F....{b.........|
000801b0  00 00 00 00 35 00 00 00  84 10 08 00 46 fd ff ff  |....5.......F...|
000801c0  1a 9c 62 f5 22 02 00 00  13 00 00 00 00 00 00 00  |..b."...........|
000801d0  38 00 00 00 a8 12 08 00  46 fd ff ff 24 a8 62 f5  |8.......F...$.b.|
000801e0  c5 01 00 00 13 00 00 00  00 00 00 00 31 30 00 00  |............10..|
000801f0  70 14 08 00 46 fd ff ff  04 b1 62 f5 4d 01 00 00  |p...F.....b.M...|
00080200  13 00 00 00 00 00 00 00  31 31 00 00 c0 15 08 00  |........11......|
00080210  46 fd ff ff b2 bb 62 f5  fe 00 00 00 13 00 00 00  |F.....b.........|
00080220  00 00 00 00 31 34 00 00  c0 16 08 00 46 fd ff ff  |....14......F...|
00080230  0f c8 62 f5 ce 00 00 00  13 00 00 00 00 00 00 00  |..b.............|
00080240  31 35 00 00 90 17 08 00  46 fd ff ff ff d3 62 f5  |15......F.....b.|
00080250  c2 00 00 00 13 00 00 00  00 00 00 00 31 36 00 00  |............16..|
00080260  54 18 08 00 46 fd ff ff  91 52 63 f5 33 01 00 00  |T...F....Rc.3...|
00080270  13 00 00 00 00 00 00 00  31 37 00 00 88 19 08 00  |........17......|
00080280  48 fd ff ff d3 bf 69 2a  d3 05 00 00 13 00 00 00  |H.....i*........|
00080290  00 00 00 00 31 39 2d 32  30 00 00 00 5c 1f 08 00  |....19-20...\...|
000802a0  48 fd ff ff 23 57 84 18  00 01 00 00 13 00 00 00  |H...#W..........|
000802b0  00 00 00 00 52 4f 4d 53  65 63 74 69 6f 6e 73 00  |....ROMSections.|
000802c0  5c 20 08 00 46 fd ff ff  3e a8 63 f5 94 00 00 00  |\ ..F...>.c.....|
000802d0  13 00 00 00 00 00 00 00  39 00 00 00 f0 20 08 00  |........9.... ..|
000802e0  48 fd ff ff 0e 1a 81 2b  c0 01 00 00 13 01 00 00  |H......+........|
000802f0  00 00 00 00 5f 00 00 00  44 41 54 41 59 03 00 00  |...._...DATAY...|
00080300  4f 53 5f 4d 6f 64 75 6c  65 20 20 28 26 31 45 29  |OS_Module  (&1E)|
00080310  0a 23 50 61 72 65 6e 74  20 4f 53 5f 0a 3d 3e 20  |.#Parent OS_.=> |
00080320  52 30 20 3d 20 52 65 61  73 6f 6e 20 3a 0a 30 09  |R0 = Reason :.0.|
00080330  3c 52 75 6e 3d 3e 4f 53  5f 4d 6f 64 75 6c 65 30  |<Run=>OS_Module0|
00080340  3e 20 20 20 20 20 20 20  20 20 20 20 20 20 09 4f  |>             .O|
00080350  74 68 65 72 20 73 74 75  66 66 3a 0a 31 09 3c 4c  |ther stuff:.1.<L|
00080360  6f 61 64 3d 3e 4f 53 5f  4d 6f 64 75 6c 65 31 3e  |oad=>OS_Module1>|
00080370  09 09 20 20 3c 53 65 72  76 69 63 65 20 63 61 6c  |..  <Service cal|
00080380  6c 73 3d 3e 73 65 72 76  69 63 65 5f 69 6e 64 65  |ls=>service_inde|
00080390  78 3e 0a 32 09 3c 45 6e  74 65 72 3d 3e 4f 53 5f  |x>.2.<Enter=>OS_|
000803a0  4d 6f 64 75 6c 65 32 3e  09 09 20 20 3c 4d 6f 64  |Module2>..  <Mod|
000803b0  75 6c 65 20 66 6f 72 6d  61 74 3d 3e 6f 73 5f 6d  |ule format=>os_m|
000803c0  6f 64 75 6c 65 5f 66 6f  72 6d 61 74 3e 0a 33 09  |odule_format>.3.|
000803d0  3c 52 65 49 6e 69 74 3d  3e 4f 53 5f 4d 6f 64 75  |<ReInit=>OS_Modu|
000803e0  6c 65 33 3e 0a 34 09 3c  44 65 6c 65 74 65 3d 3e  |le3>.4.<Delete=>|
000803f0  4f 53 5f 4d 6f 64 75 6c  65 34 3e 0a 35 09 3c 44  |OS_Module4>.5.<D|
00080400  65 73 63 72 69 62 65 20  52 4d 41 3d 3e 4f 53 5f  |escribe RMA=>OS_|
00080410  4d 6f 64 75 6c 65 35 3e  0a 36 09 3c 43 6c 61 69  |Module5>.6.<Clai|
00080420  6d 3d 3e 4f 53 5f 4d 6f  64 75 6c 65 36 3e 0a 37  |m=>OS_Module6>.7|
00080430  09 3c 46 72 65 65 3d 3e  4f 53 5f 4d 6f 64 75 6c  |.<Free=>OS_Modul|
00080440  65 37 3e 0a 38 09 3c 54  69 64 79 3d 3e 4f 53 5f  |e7>.8.<Tidy=>OS_|
00080450  4d 6f 64 75 6c 65 38 3e  0a 39 09 3c 43 6c 65 61  |Module8>.9.<Clea|
00080460  72 3d 3e 4f 53 5f 4d 6f  64 75 6c 65 39 3e 0a 31  |r=>OS_Module9>.1|
00080470  30 09 3c 49 6e 73 65 72  74 20 6d 6f 64 75 6c 65  |0.<Insert module|
00080480  20 66 72 6f 6d 20 6d 65  6d 6f 72 79 3d 3e 4f 53  | from memory=>OS|
00080490  5f 4d 6f 64 75 6c 65 31  30 3e 0a 31 31 09 3c 49  |_Module10>.11.<I|
000804a0  6e 73 65 72 74 20 6d 6f  64 75 6c 65 20 66 72 6f  |nsert module fro|
000804b0  6d 20 6d 65 6d 6f 72 79  20 61 6e 64 20 6d 6f 76  |m memory and mov|
000804c0  65 20 74 6f 20 52 4d 41  3d 3e 4f 53 5f 4d 6f 64  |e to RMA=>OS_Mod|
000804d0  75 6c 65 31 31 3e 0a 31  32 09 3c 45 78 74 72 61  |ule11>.12.<Extra|
000804e0  63 74 20 6d 6f 64 75 6c  65 20 69 6e 66 6f 3d 3e  |ct module info=>|
000804f0  4f 53 5f 4d 6f 64 75 6c  65 31 32 3e 0a 31 33 09  |OS_Module12>.13.|
00080500  3c 45 78 74 65 6e 64 20  62 6c 6f 63 6b 3d 3e 4f  |<Extend block=>O|
00080510  53 5f 4d 6f 64 75 6c 65  31 33 3e 0a 31 34 09 3c  |S_Module13>.14.<|
00080520  43 72 65 61 74 65 20 6e  65 77 20 69 6e 73 74 61  |Create new insta|
00080530  6e 74 69 61 74 69 6f 6e  3d 3e 4f 53 5f 4d 6f 64  |ntiation=>OS_Mod|
00080540  75 6c 65 31 34 3e 0a 31  35 09 3c 52 65 6e 61 6d  |ule14>.15.<Renam|
00080550  65 20 69 6e 73 74 61 6e  74 69 61 74 69 6f 6e 3d  |e instantiation=|
00080560  3e 4f 53 5f 4d 6f 64 75  6c 65 31 35 3e 0a 31 36  |>OS_Module15>.16|
00080570  09 3c 4d 61 6b 65 20 70  72 65 66 65 72 72 65 64  |.<Make preferred|
00080580  20 69 6e 73 74 61 6e 74  69 61 74 69 6f 6e 3d 3e  | instantiation=>|
00080590  4f 53 5f 4d 6f 64 75 6c  65 31 36 3e 0a 31 37 09  |OS_Module16>.17.|
000805a0  3c 41 64 64 20 65 78 70  61 6e 73 69 6f 6e 20 63  |<Add expansion c|
000805b0  61 72 64 20 6d 6f 64 75  6c 65 3d 3e 4f 53 5f 4d  |ard module=>OS_M|
000805c0  6f 64 75 6c 65 31 37 3e  0a 31 38 09 3c 4c 6f 6f  |odule17>.18.<Loo|
000805d0  6b 75 70 20 6d 6f 64 75  6c 65 20 6e 61 6d 65 3d  |kup module name=|
000805e0  3e 6f 73 5f 6d 6f 64 75  6c 65 31 38 3e 0a 31 39  |>os_module18>.19|
000805f0  09 3c 45 6e 75 6d 65 72  61 74 65 20 52 4f 4d 20  |.<Enumerate ROM |
00080600  6d 6f 64 75 6c 65 73 3d  3e 4f 53 5f 4d 6f 64 75  |modules=>OS_Modu|
00080610  6c 65 31 39 2d 32 30 3e  0a 32 30 09 3c 45 6e 75  |le19-20>.20.<Enu|
00080620  6d 65 72 61 74 65 20 52  4f 4d 20 6d 6f 64 75 6c  |merate ROM modul|
00080630  65 73 20 77 69 74 68 20  76 65 72 73 69 6f 6e 3d  |es with version=|
00080640  3e 4f 53 5f 4d 6f 64 75  6c 65 31 39 2d 32 30 3e  |>OS_Module19-20>|
00080650  0a 00 00 00 44 41 54 41  36 01 00 00 4f 53 5f 4d  |....DATA6...OS_M|
00080660  6f 64 75 6c 65 20 31 38  0a 23 50 61 72 65 6e 74  |odule 18.#Parent|
00080670  20 4f 53 5f 4d 6f 64 75  6c 65 0a 3d 3e 09 52 30  | OS_Module.=>.R0|
00080680  20 3d 09 31 38 0a 09 52  31 20 3d 09 6e 61 6d 65  | =.18..R1 =.name|
00080690  5b 25 69 6e 73 74 61 6e  74 69 61 74 69 6f 6e 5d  |[%instantiation]|
000806a0  0a 0a 3c 3d 09 52 31 20  3d 09 6d 6f 64 75 6c 65  |..<=.R1 =.module|
000806b0  20 6e 75 6d 62 65 72 0a  09 52 32 20 3d 09 69 6e  | number..R2 =.in|
000806c0  73 74 61 6e 74 69 61 74  69 6f 6e 20 6e 75 6d 62  |stantiation numb|
000806d0  65 72 0a 09 52 33 20 3d  09 3c 6d 6f 64 75 6c 65  |er..R3 =.<module|
000806e0  20 63 6f 64 65 3d 3e 6f  73 5f 6d 6f 64 75 6c 65  | code=>os_module|
000806f0  5f 66 6f 72 6d 61 74 3e  0a 09 52 34 20 3d 09 70  |_format>..R4 =.p|
00080700  72 69 76 61 74 65 20 77  6f 72 64 0a 09 52 35 20  |rivate word..R5 |
00080710  3d 09 70 6f 73 74 66 69  78 20 73 74 72 69 6e 67  |=.postfix string|
00080720  0a 0a 54 68 69 73 20 53  57 49 20 72 65 74 75 72  |..This SWI retur|
00080730  6e 73 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 61  |ns information a|
00080740  62 6f 75 74 20 61 20 6e  61 6d 65 64 20 6d 6f 64  |bout a named mod|
00080750  75 6c 65 2e 20 54 68 65  20 6e 61 6d 65 20 75 73  |ule. The name us|
00080760  65 64 2c 20 69 73 20 74  68 65 20 73 61 6d 65 20  |ed, is the same |
00080770  61 73 20 79 6f 75 20 73  65 65 20 77 69 74 68 20  |as you see with |
00080780  3c 2a 4d 6f 64 75 6c 65  73 3e 00 00 44 41 54 41  |<*Modules>..DATA|
00080790  87 00 00 00 4f 53 5f 4d  6f 64 75 6c 65 20 36 0a  |....OS_Module 6.|
000807a0  23 50 61 72 65 6e 74 20  4f 53 5f 4d 6f 64 75 6c  |#Parent OS_Modul|
000807b0  65 0a 3d 3e 09 52 30 20  3d 09 36 0a 09 52 33 20  |e.=>.R0 =.6..R3 |
000807c0  3d 09 73 69 7a 65 20 6f  66 20 61 72 65 61 0a 3c  |=.size of area.<|
000807d0  3d 09 52 32 20 3d 09 62  6c 6f 63 6b 0a 0a 54 68  |=.R2 =.block..Th|
000807e0  69 73 20 53 57 49 20 72  65 74 75 72 6e 73 20 61  |is SWI returns a|
000807f0  6e 20 61 72 65 61 20 6f  66 20 66 72 65 65 20 52  |n area of free R|
00080800  4d 41 20 63 6c 61 69 6d  65 64 20 66 6f 72 20 75  |MA claimed for u|
00080810  73 65 2e 00 44 41 54 41  6d 00 00 00 4f 53 5f 4d  |se..DATAm...OS_M|
00080820  6f 64 75 6c 65 20 37 0a  23 50 61 72 65 6e 74 20  |odule 7.#Parent |
00080830  4f 53 5f 4d 6f 64 75 6c  65 0a 3d 3e 09 52 30 20  |OS_Module.=>.R0 |
00080840  3d 09 37 0a 09 52 32 20  3d 09 62 6c 6f 63 6b 0a  |=.7..R2 =.block.|
00080850  0a 54 68 69 73 20 53 57  49 20 66 72 65 65 73 20  |.This SWI frees |
00080860  61 a0 70 72 65 76 69 6f  75 73 6c 79 20 63 6c 61  |a.previously cla|
00080870  69 6d 65 64 20 61 72 65  61 20 6f 66 20 52 4d 41  |imed area of RMA|
00080880  2e 00 00 00 44 41 54 41  e9 00 00 00 4f 53 5f 4d  |....DATA....OS_M|
00080890  6f 64 75 6c 65 20 31 33  0a 23 50 61 72 65 6e 74  |odule 13.#Parent|
000808a0  20 4f 53 5f 4d 6f 64 75  6c 65 0a 3d 3e 09 52 30  | OS_Module.=>.R0|
000808b0  20 3d 09 31 33 0a 09 52  32 20 3d 09 70 6f 69 6e  | =.13..R2 =.poin|
000808c0  74 65 72 20 74 6f 20 62  6c 6f 63 6b 0a 09 52 33  |ter to block..R3|
000808d0  20 3d 09 73 69 7a 65 20  69 6e 63 72 65 61 73 65  | =.size increase|
000808e0  0a 3c 3d 09 52 32 20 3d  09 6e 65 77 20 62 6c 6f  |.<=.R2 =.new blo|
000808f0  63 6b 20 70 6f 69 6e 74  65 72 0a 0a 54 68 69 73  |ck pointer..This|
00080900  20 53 57 49 20 65 78 74  65 6e 64 73 20 6f 72 20  | SWI extends or |
00080910  72 65 64 75 63 65 73 20  61 20 63 75 72 72 65 6e  |reduces a curren|
00080920  74 6c 79 20 63 6c 61 69  6d 65 64 20 62 6c 6f 63  |tly claimed bloc|
00080930  6b 20 6f 66 20 52 4d 41  2e 20 49 66 20 72 65 71  |k of RMA. If req|
00080940  75 69 72 65 64 20 69 74  20 61 6c 73 6f 20 6d 6f  |uired it also mo|
00080950  76 65 73 20 74 68 65 20  63 6f 6e 74 65 6e 74 73  |ves the contents|
00080960  20 6f 66 20 74 68 65 20  61 72 65 61 2e 00 00 00  | of the area....|
00080970  44 41 54 41 86 00 00 00  4f 53 5f 4d 6f 64 75 6c  |DATA....OS_Modul|
00080980  65 20 34 0a 23 50 61 72  65 6e 74 20 4f 53 5f 4d  |e 4.#Parent OS_M|
00080990  6f 64 75 6c 65 0a 3d 3e  09 52 30 20 3d 09 34 0a  |odule.=>.R0 =.4.|
000809a0  09 52 31 20 3d 09 6d 6f  64 75 6c 65 20 6e 61 6d  |.R1 =.module nam|
000809b0  65 0a 0a 54 68 69 73 20  53 57 49 20 6b 69 6c 6c  |e..This SWI kill|
000809c0  73 20 61 20 6d 6f 64 75  6c 65 2e 20 54 68 69 73  |s a module. This|
000809d0  20 69 73 20 65 71 75 69  76 69 6c 65 6e 74 20 74  | is equivilent t|
000809e0  6f 20 74 68 65 20 2a 52  4d 4b 69 6c 6c 20 63 6f  |o the *RMKill co|
000809f0  6d 6d 61 6e 64 2e 00 00  44 41 54 41 9d 01 00 00  |mmand...DATA....|
00080a00  4f 53 5f 4d 6f 64 75 6c  65 20 31 32 0a 23 50 61  |OS_Module 12.#Pa|
00080a10  72 65 6e 74 20 4f 53 5f  4d 6f 64 75 6c 65 0a 3d  |rent OS_Module.=|
00080a20  3e 09 52 30 20 3d 09 31  32 0a 09 52 31 20 3d 09  |>.R0 =.12..R1 =.|
00080a30  6d 6f 64 75 6c 65 20 6e  75 6d 62 65 72 0a 09 52  |module number..R|
00080a40  32 20 3d 09 69 6e 73 74  61 6e 63 65 20 6e 75 6d  |2 =.instance num|
00080a50  62 65 72 0a 0a 3c 3d 09  52 31 20 3d 09 6e 65 78  |ber..<=.R1 =.nex|
00080a60  74 20 6d 6f 64 75 6c 65  20 6e 75 6d 62 65 72 0a  |t module number.|
00080a70  09 52 32 20 3d 09 6e 65  78 74 20 69 6e 73 74 61  |.R2 =.next insta|
00080a80  6e 63 65 20 6e 75 6d 62  65 72 0a 09 52 33 20 3d  |nce number..R3 =|
00080a90  09 70 6f 69 6e 74 65 72  20 74 6f 20 6d 6f 64 75  |.pointer to modu|
00080aa0  6c 65 0a 09 52 34 20 3d  09 70 6f 69 6e 74 65 72  |le..R4 =.pointer|
00080ab0  20 74 6f 20 77 6f 72 6b  73 70 61 63 65 0a 09 52  | to workspace..R|
00080ac0  35 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 70  |5 =.pointer to p|
00080ad0  6f 73 74 66 69 78 20 73  74 72 69 6e 67 20 28 74  |ostfix string (t|
00080ae0  68 65 20 69 6e 73 74 61  6e 74 69 61 74 69 6f 6e  |he instantiation|
00080af0  27 73 20 6e 61 6d 65 29  0a 0a 54 68 69 73 20 53  |'s name)..This S|
00080b00  57 49 20 72 65 74 75 72  6e 73 20 69 6e 66 6f 72  |WI returns infor|
00080b10  6d 61 74 69 6f 6e 20 61  62 6f 75 74 20 61 20 6d  |mation about a m|
00080b20  6f 64 75 6c 65 2c 20 67  69 76 65 6e 20 69 74 73  |odule, given its|
00080b30  20 6e 75 6d 62 65 72 2e  20 49 66 20 61 20 6d 6f  | number. If a mo|
00080b40  64 75 6c 65 20 69 73 20  6e 6f 74 20 6d 75 6c 74  |dule is not mult|
00080b50  69 70 6c 79 20 69 6e 73  74 61 6e 74 69 61 74 65  |iply instantiate|
00080b60  64 20 52 35 20 77 69 6c  6c 20 62 65 20 72 65 74  |d R5 will be ret|
00080b70  75 72 6e 65 64 20 70 6f  69 6e 74 69 6e 67 20 74  |urned pointing t|
00080b80  6f 20 74 68 65 20 73 74  72 69 6e 67 20 22 42 61  |o the string "Ba|
00080b90  73 65 22 2e 0a 00 00 00  44 41 54 41 b1 00 00 00  |se".....DATA....|
00080ba0  4f 53 5f 4d 6f 64 75 6c  65 20 31 0a 23 50 61 72  |OS_Module 1.#Par|
00080bb0  65 6e 74 20 4f 53 5f 4d  6f 64 75 6c 65 0a 3d 3e  |ent OS_Module.=>|
00080bc0  09 52 30 20 3d 09 31 0a  09 52 31 20 3d 09 70 6f  |.R0 =.1..R1 =.po|
00080bd0  69 6e 74 65 72 20 74 6f  20 66 69 6c 65 6e 61 6d  |inter to filenam|
00080be0  65 20 28 61 6e 64 20 6f  70 74 69 6f 6e 61 6c 20  |e (and optional |
00080bf0  70 61 72 61 6d 65 74 65  72 73 29 0a 0a 54 68 69  |parameters)..Thi|
00080c00  73 20 53 57 49 20 6c 6f  61 64 73 20 61 20 6d 6f  |s SWI loads a mo|
00080c10  64 75 6c 65 2e 20 49 74  20 69 73 20 65 71 75 69  |dule. It is equi|
00080c20  76 69 6c 65 6e 74 20 74  6f 20 74 68 65 20 2a 7b  |vilent to the *{|
00080c30  66 43 6f 64 65 7d 52 4d  4c 6f 61 64 7b 66 7d 20  |fCode}RMLoad{f} |
00080c40  63 6f 6d 6d 61 6e 64 2e  0a 00 00 00 44 41 54 41  |command.....DATA|
00080c50  f4 00 00 00 4f 53 5f 4d  6f 64 75 6c 65 20 30 0a  |....OS_Module 0.|
00080c60  23 50 61 72 65 6e 74 20  4f 53 5f 4d 6f 64 75 6c  |#Parent OS_Modul|
00080c70  65 0a 3d 3e 09 52 30 20  3d 09 30 0a 09 52 31 20  |e.=>.R0 =.0..R1 |
00080c80  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 66 69 6c  |=.pointer to fil|
00080c90  65 6e 61 6d 65 20 28 61  6e 64 20 6f 70 74 69 6f  |ename (and optio|
00080ca0  6e 61 6c 20 70 61 72 61  6d 65 74 65 72 73 29 0a  |nal parameters).|
00080cb0  0a 54 68 69 73 20 53 57  49 20 72 75 6e 20 61 20  |.This SWI run a |
00080cc0  6d 6f 64 75 6c 65 2c 20  63 61 6c 6c 69 6e 67 20  |module, calling |
00080cd0  69 74 73 20 73 74 61 72  74 20 61 64 64 72 65 73  |its start addres|
00080ce0  73 2e 20 49 74 20 69 73  20 65 71 75 69 76 69 6c  |s. It is equivil|
00080cf0  65 6e 74 20 74 6f 20 74  68 65 20 7b 66 43 6f 64  |ent to the {fCod|
00080d00  65 7d 2a 52 4d 52 75 6e  7b 66 7d 20 63 6f 6d 6d  |e}*RMRun{f} comm|
00080d10  61 6e 64 2e 20 55 73 65  20 3c 4f 53 5f 45 78 69  |and. Use <OS_Exi|
00080d20  74 3e 20 6f 72 20 3c 4f  53 5f 45 78 69 74 41 6e  |t> or <OS_ExitAn|
00080d30  64 44 69 65 3e 20 74 6f  20 6c 65 61 76 65 2e 0a  |dDie> to leave..|
00080d40  44 41 54 41 70 01 00 00  4f 53 5f 4d 6f 64 75 6c  |DATAp...OS_Modul|
00080d50  65 20 32 0a 23 50 61 72  65 6e 74 20 4f 53 5f 4d  |e 2.#Parent OS_M|
00080d60  6f 64 75 6c 65 0a 3d 3e  09 52 30 20 3d 09 32 20  |odule.=>.R0 =.2 |
00080d70  28 72 65 61 73 6f 6e 20  63 6f 64 65 29 0a 09 52  |(reason code)..R|
00080d80  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 6d  |1 =.pointer to m|
00080d90  6f 64 75 6c 65 20 6e 61  6d 65 0a 09 52 32 20 3d  |odule name..R2 =|
00080da0  09 70 6f 69 6e 74 65 72  20 74 6f 20 70 61 72 61  |.pointer to para|
00080db0  6d 65 74 65 72 73 0a 0a  44 6f 65 73 6e 27 74 20  |meters..Doesn't |
00080dc0  72 65 74 75 72 6e 20 75  6e 6c 65 73 73 20 65 72  |return unless er|
00080dd0  72 6f 72 20 6f 63 63 75  72 73 2e 20 49 66 20 74  |ror occurs. If t|
00080de0  68 65 20 6d 6f 64 75 6c  65 20 68 61 73 20 67 6f  |he module has go|
00080df0  74 20 61 20 3c 73 74 61  72 74 20 61 64 64 72 65  |t a <start addre|
00080e00  73 73 3d 3e 4f 53 5f 4d  6f 64 75 6c 65 5f 53 74  |ss=>OS_Module_St|
00080e10  61 72 74 3e 2c 20 69 74  20 72 65 73 65 74 73 20  |art>, it resets |
00080e20  74 68 65 20 73 75 70 65  72 76 69 73 6f 72 20 73  |the supervisor s|
00080e30  74 61 63 6b 2c 20 73 65  74 73 20 75 73 65 72 20  |tack, sets user |
00080e40  6d 6f 64 65 20 61 6e 64  20 6d 61 6b 65 73 20 69  |mode and makes i|
00080e50  74 20 74 68 65 20 63 75  72 72 65 6e 74 20 61 70  |t the current ap|
00080e60  70 6c 69 63 61 74 69 6f  6e 2e 20 41 6e 79 20 73  |plication. Any s|
00080e70  70 65 63 69 66 69 65 64  20 69 6e 73 74 61 6e 74  |pecified instant|
00080e80  69 61 74 69 6f 6e 20 77  69 6c 6c 20 62 65 63 6f  |iation will beco|
00080e90  6d 65 20 74 68 65 20 70  72 65 66 65 72 72 65 64  |me the preferred|
00080ea0  20 69 6e 73 74 61 6e 74  69 61 74 69 6f 6e 2e 0a  | instantiation..|
00080eb0  44 41 54 41 14 01 00 00  4f 53 5f 4d 6f 64 75 6c  |DATA....OS_Modul|
00080ec0  65 20 33 0a 3d 3e 09 52  30 20 3d 09 33 20 28 72  |e 3.=>.R0 =.3 (r|
00080ed0  65 61 73 6f 6e 20 63 6f  64 65 29 0a 09 52 31 20  |eason code)..R1 |
00080ee0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 6d 6f 64  |=.pointer to mod|
00080ef0  75 6c 65 20 6e 61 6d 65  20 70 6c 75 73 20 61 6e  |ule name plus an|
00080f00  79 20 70 61 72 61 6d 65  74 65 72 73 20 66 6f 72  |y parameters for|
00080f10  20 69 6e 69 74 69 61 6c  69 73 61 74 69 6f 6e 0a  | initialisation.|
00080f20  0a 3c 3d 09 52 30 2c 52  31 20 70 72 65 73 65 72  |.<=.R0,R1 preser|
00080f30  76 65 64 0a 0a 54 68 69  73 20 63 61 6c 6c 20 3c  |ved..This call <|
00080f40  52 4d 4b 69 6c 6c 73 3d  3e 6f 73 5f 6d 6f 64 75  |RMKills=>os_modu|
00080f50  6c 65 34 3e 20 61 6e 64  20 3c 52 4d 4c 6f 61 64  |le4> and <RMLoad|
00080f60  73 3d 3e 6f 73 5f 6d 6f  64 75 6c 65 31 3e 20 74  |s=>os_module1> t|
00080f70  68 65 20 6e 61 6d 65 64  20 6d 6f 64 75 6c 65 20  |he named module |
00080f80  61 67 61 69 6e 2c 20 69  66 20 74 68 65 20 6d 6f  |again, if the mo|
00080f90  64 75 6c 65 20 72 65 66  75 73 65 73 20 74 6f 20  |dule refuses to |
00080fa0  69 6e 69 74 69 61 6c 69  73 65 2c 20 69 74 20 69  |initialise, it i|
00080fb0  73 20 72 65 6d 6f 76 65  64 20 66 72 6f 6d 20 52  |s removed from R|
00080fc0  4d 41 2e 0a 44 41 54 41  bd 00 00 00 4f 53 5f 4d  |MA..DATA....OS_M|
00080fd0  6f 64 75 6c 65 20 35 0a  3d 3e 09 52 30 20 3d 09  |odule 5.=>.R0 =.|
00080fe0  35 20 28 72 65 61 73 6f  6e 20 63 6f 64 65 29 0a  |5 (reason code).|
00080ff0  0a 3c 3d 09 52 30 20 70  72 65 73 65 72 76 65 64  |.<=.R0 preserved|
00081000  0a 09 52 32 20 3d 09 73  69 7a 65 20 6f 66 20 6c  |..R2 =.size of l|
00081010  61 72 67 65 73 74 20 62  6c 6f 63 6b 20 61 76 61  |argest block ava|
00081020  69 6c 61 62 6c 65 20 69  6e 20 62 79 74 65 73 0a  |ilable in bytes.|
00081030  09 52 33 20 3d 09 74 6f  74 61 6c 20 61 6d 6f 75  |.R3 =.total amou|
00081040  6e 74 20 66 72 65 65 20  69 6e 20 52 4d 41 20 69  |nt free in RMA i|
00081050  6e 20 62 79 74 65 73 0a  0a 54 68 69 73 20 72 65  |n bytes..This re|
00081060  61 73 6f 6e 20 63 6f 64  65 20 72 65 61 64 73 20  |ason code reads |
00081070  69 6e 66 6f 73 20 6f 6e  20 74 68 65 20 52 4d 41  |infos on the RMA|
00081080  2e 00 00 00 44 41 54 41  22 02 00 00 4f 53 5f 4d  |....DATA"...OS_M|
00081090  6f 64 75 6c 65 20 38 0a  3d 3e 09 52 30 20 3d 09  |odule 8.=>.R0 =.|
000810a0  38 20 28 72 65 61 73 6f  6e 20 63 6f 64 65 29 0a  |8 (reason code).|
000810b0  0a 3c 3d 09 52 30 20 70  72 65 73 65 72 76 65 64  |.<=.R0 preserved|
000810c0  0a 0a 54 68 69 73 20 67  69 76 65 73 20 65 61 63  |..This gives eac|
000810d0  68 20 69 6e 73 74 61 6e  74 69 61 74 69 6f 6e 20  |h instantiation |
000810e0  6f 66 20 61 6c 6c 20 6d  6f 64 75 6c 65 73 20 69  |of all modules i|
000810f0  6e 20 74 75 72 6e 2c 20  66 72 6f 6d 20 74 68 65  |n turn, from the|
00081100  20 65 6e 64 20 6f 66 20  74 68 65 20 6d 6f 64 75  | end of the modu|
00081110  6c 65 20 6c 69 73 74 20  61 6e 64 20 77 6f 72 6b  |le list and work|
00081120  69 6e 67 20 62 61 63 6b  77 61 72 64 73 2c 20 61  |ing backwards, a|
00081130  20 6e 6f 6e 2d 66 61 74  61 6c 20 66 69 6e 61 6c  | non-fatal final|
00081140  69 73 61 74 69 6f 6e 20  63 61 6c 6c 2e 0a 0a 49  |isation call...I|
00081150  6e 73 74 61 6e 74 69 61  74 69 6f 6e 73 20 6f 66  |nstantiations of|
00081160  20 61 20 70 61 72 74 69  63 75 6c 61 72 20 6d 6f  | a particular mo|
00081170  64 75 6c 65 20 61 72 65  20 6b 69 6c 6c 65 64 20  |dule are killed |
00081180  69 6e 20 74 68 65 20 6f  72 64 65 72 20 74 68 65  |in the order the|
00081190  79 20 61 70 70 65 61 72  20 6f 6e 20 74 68 65 20  |y appear on the |
000811a0  63 75 72 72 65 6e 74 20  69 6e 73 74 61 6e 74 69  |current instanti|
000811b0  61 74 69 6f 6e 20 6c 69  73 74 2e 0a 0a 49 66 20  |ation list...If |
000811c0  69 74 20 73 75 63 63 65  65 64 73 2c 20 69 74 20  |it succeeds, it |
000811d0  63 6f 6c 6c 65 63 74 73  20 74 68 65 20 52 4d 41  |collects the RMA|
000811e0  20 74 6f 67 65 74 68 65  72 20 69 6e 74 6f 20 6f  | together into o|
000811f0  6e 65 20 6c 61 72 67 65  20 75 6e 66 72 61 67 6d  |ne large unfragm|
00081200  65 6e 74 65 64 20 62 6c  6f 63 6b 20 61 6e 64 20  |ented block and |
00081210  72 65 69 6e 69 74 69 61  6c 69 73 65 73 20 74 68  |reinitialises th|
00081220  65 20 6d 6f 64 75 6c 65  73 20 61 67 61 69 6e 2e  |e modules again.|
00081230  20 41 6e 79 20 70 72 69  76 61 74 65 20 77 6f 72  | Any private wor|
00081240  64 73 20 63 6f 6e 74 61  69 6e 69 6e 67 20 70 6f  |ds containing po|
00081250  69 6e 74 65 72 20 74 6f  20 77 6f 72 6b 73 70 61  |inter to workspa|
00081260  63 65 20 62 6c 6f 63 6b  73 20 69 6e 20 52 4d 41  |ce blocks in RMA|
00081270  20 61 72 65 20 72 65 6c  6f 63 61 74 65 64 2e 0a  | are relocated..|
00081280  0a 7b 2a 7d 4e 6f 74 65  3a 7b 2a 7d 20 54 68 69  |.{*}Note:{*} Thi|
00081290  73 20 69 73 20 4e 4f 54  20 72 65 63 6f 6d 6d 65  |s is NOT recomme|
000812a0  6e 64 65 64 2e 0a 00 00  44 41 54 41 c5 01 00 00  |nded....DATA....|
000812b0  4f 53 5f 4d 6f 64 75 6c  65 20 31 30 0a 3d 3e 09  |OS_Module 10.=>.|
000812c0  52 30 20 3d 09 31 30 20  28 72 65 61 73 6f 6e 20  |R0 =.10 (reason |
000812d0  63 6f 64 65 29 0a 09 52  31 20 3d 09 70 6f 69 6e  |code)..R1 =.poin|
000812e0  74 65 72 20 74 6f 20 73  74 61 72 74 20 6f 66 20  |ter to start of |
000812f0  6d 6f 64 75 6c 65 0a 0a  3c 3d 09 52 30 2c 52 31  |module..<=.R0,R1|
00081300  20 70 72 65 73 65 72 76  65 64 0a 0a 54 68 69 73  | preserved..This|
00081310  20 74 61 6b 65 73 20 61  20 70 6f 69 6e 74 65 72  | takes a pointer|
00081320  20 74 6f 20 61 20 62 6c  6f 63 6b 20 6f 66 20 6d  | to a block of m|
00081330  65 6d 6f 72 79 20 61 6e  64 20 6c 69 6e 6b 73 20  |emory and links |
00081340  69 74 20 69 6e 74 6f 20  74 68 65 20 6d 6f 64 75  |it into the modu|
00081350  6c 65 2c 20 77 69 74 68  6f 75 74 20 6d 6f 76 69  |le, without movi|
00081360  6e 67 20 69 74 2e 20 48  65 61 64 65 72 20 66 69  |ng it. Header fi|
00081370  65 6c 64 73 20 61 72 65  20 63 68 65 63 6b 65 64  |elds are checked|
00081380  20 66 6f 72 20 76 61 6c  69 64 69 74 79 2e 20 41  | for validity. A|
00081390  6c 6c 20 64 75 70 6c 69  63 61 74 65 20 6d 6f 64  |ll duplicate mod|
000813a0  75 6c 65 73 20 61 72 65  20 6b 69 6c 6c 65 64 2e  |ules are killed.|
000813b0  20 49 66 20 69 74 27 73  20 73 75 63 63 65 73 73  | If it's success|
000813c0  66 75 6c 2c 20 74 68 65  6e 20 74 68 65 20 6d 6f  |ful, then the mo|
000813d0  64 75 6c 65 20 69 73 20  63 61 6c 6c 65 64 20 61  |dule is called a|
000813e0  74 20 69 74 73 20 69 6e  69 74 69 61 6c 69 61 74  |t its initialiat|
000813f0  69 6f 6e 20 65 6e 74 72  79 2e 20 54 68 65 20 77  |ion entry. The w|
00081400  6f 72 64 20 69 6d 6d 65  64 69 61 74 65 6c 79 20  |ord immediately |
00081410  62 65 66 6f 72 65 20 74  68 65 20 6d 6f 64 75 6c  |before the modul|
00081420  65 20 73 74 61 72 74 20  28 69 65 20 61 74 20 61  |e start (ie at a|
00081430  64 64 72 65 73 73 20 52  31 2d 34 29 20 6d 75 73  |ddress R1-4) mus|
00081440  74 20 63 6f 6e 74 61 69  6e 20 74 68 65 20 6c 65  |t contain the le|
00081450  6e 67 74 68 20 6f 66 20  74 68 65 20 6d 6f 64 75  |ngth of the modu|
00081460  6c 65 20 69 6e 20 62 79  74 65 73 2e 0a 00 00 00  |le in bytes.....|
00081470  44 41 54 41 4d 01 00 00  4f 53 5f 4d 6f 64 75 6c  |DATAM...OS_Modul|
00081480  65 20 31 31 0a 3d 3e 09  52 30 20 3d 09 31 31 20  |e 11.=>.R0 =.11 |
00081490  28 72 65 61 73 6f 6e 20  63 6f 64 65 29 0a 09 52  |(reason code)..R|
000814a0  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 73  |1 =.pointer to s|
000814b0  74 61 72 74 20 6f 66 20  6d 6f 64 75 6c 65 0a 09  |tart of module..|
000814c0  52 32 20 3d 09 6c 65 6e  67 74 68 20 6f 66 20 6d  |R2 =.length of m|
000814d0  6f 64 75 6c 65 20 69 6e  20 62 79 74 65 73 0a 0a  |odule in bytes..|
000814e0  3c 3d 09 52 30 2c 52 32  20 70 72 65 73 65 72 76  |<=.R0,R2 preserv|
000814f0  65 64 0a 0a 54 68 69 73  20 74 61 6b 65 73 20 61  |ed..This takes a|
00081500  20 70 6f 69 6e 74 65 72  20 74 6f 20 61 20 62 6c  | pointer to a bl|
00081510  6f 63 6b 20 6f 66 20 6d  65 6d 6f 72 79 2c 20 61  |ock of memory, a|
00081520  6e 64 20 63 68 65 63 6b  73 20 69 74 73 20 68 65  |nd checks its he|
00081530  61 64 65 72 20 66 69 65  6c 64 20 66 6f 72 20 76  |ader field for v|
00081540  61 6c 69 64 69 74 79 2e  20 49 74 20 74 68 65 6e  |alidity. It then|
00081550  20 6b 69 6c 6c 73 20 61  6e 79 20 64 75 70 6c 69  | kills any dupli|
00081560  63 61 74 65 20 6d 6f 64  75 6c 65 2c 20 63 6f 70  |cate module, cop|
00081570  69 65 73 20 74 68 65 20  62 6c 6f 63 6b 20 69 6e  |ies the block in|
00081580  74 6f 20 74 68 65 20 52  4d 41 2c 20 69 6e 69 74  |to the RMA, init|
00081590  69 61 6c 69 73 65 73 20  69 74 20 61 6e 64 20 6c  |ialises it and l|
000815a0  69 6e 6b 73 20 69 74 20  74 6f 20 74 68 65 20 6d  |inks it to the m|
000815b0  6f 64 75 6c 65 73 20 63  68 61 69 6e 2e 00 00 00  |odules chain....|
000815c0  44 41 54 41 fe 00 00 00  4f 53 5f 4d 6f 64 75 6c  |DATA....OS_Modul|
000815d0  65 20 31 34 0a 3d 3e 09  52 30 20 3d 09 31 34 20  |e 14.=>.R0 =.14 |
000815e0  28 72 65 61 73 6f 6e 20  63 6f 64 65 29 0a 09 52  |(reason code)..R|
000815f0  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 61  |1 =.pointer to a|
00081600  20 66 75 6c 6c 20 6e 61  6d 65 20 6f 66 20 6e 65  | full name of ne|
00081610  77 20 69 6e 73 74 61 6e  74 69 61 74 69 6f 6e 20  |w instantiation |
00081620  61 6e 64 20 61 6e 79 20  70 61 72 61 6d 65 74 65  |and any paramete|
00081630  72 73 20 66 6f 72 20 69  6e 69 74 69 61 6c 69 73  |rs for initialis|
00081640  61 74 69 6f 6e 0a 0a 3c  3d 09 52 30 2c 52 31 20  |ation..<=.R0,R1 |
00081650  70 72 65 73 65 72 76 65  64 0a 0a 54 68 69 73 20  |preserved..This |
00081660  63 72 65 61 74 65 73 20  6e 65 77 20 69 6e 73 74  |creates new inst|
00081670  61 6e 74 69 61 74 69 6f  6e 73 20 6f 66 20 65 78  |antiations of ex|
00081680  69 73 74 69 6e 67 20 6d  6f 64 75 6c 65 73 2c 20  |isting modules, |
00081690  75 73 69 6e 67 20 74 68  65 20 73 79 6e 74 61 78  |using the syntax|
000816a0  20 27 6d 6f 64 75 6c 65  5f 74 69 74 6c 65 25 69  | 'module_title%i|
000816b0  6e 73 74 61 6e 74 69 61  74 69 6f 6e 27 2e 00 00  |nstantiation'...|
000816c0  44 41 54 41 ce 00 00 00  4f 53 5f 4d 6f 64 75 6c  |DATA....OS_Modul|
000816d0  65 20 31 35 0a 3d 3e 09  52 30 20 3d 09 31 35 20  |e 15.=>.R0 =.15 |
000816e0  28 72 65 61 73 6f 6e 20  63 6f 64 65 29 0a 09 52  |(reason code)..R|
000816f0  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 63  |1 =.pointer to c|
00081700  75 72 72 65 6e 74 20 6d  6f 64 75 6c 65 25 69 6e  |urrent module%in|
00081710  73 74 61 6e 74 69 61 74  69 6f 6e 20 6e 61 6d 65  |stantiation name|
00081720  0a 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R2 =.pointer t|
00081730  6f 20 6e 65 77 20 70 6f  73 74 66 69 78 20 73 74  |o new postfix st|
00081740  72 69 6e 67 0a 0a 3c 3d  09 52 30 2d 52 32 20 70  |ring..<=.R0-R2 p|
00081750  72 65 73 65 72 76 65 64  0a 0a 54 68 69 73 20 72  |reserved..This r|
00081760  65 6e 61 6d 65 73 20 61  6e 20 65 78 69 73 74 69  |enames an existi|
00081770  6e 67 20 69 6e 73 74 61  6e 74 69 61 74 69 6f 6e  |ng instantiation|
00081780  73 20 6f 66 20 61 20 6d  6f 64 75 6c 65 2e 00 00  |s of a module...|
00081790  44 41 54 41 c2 00 00 00  4f 53 5f 4d 6f 64 75 6c  |DATA....OS_Modul|
000817a0  65 20 31 36 0a 3d 3e 09  52 30 20 3d 09 31 36 20  |e 16.=>.R0 =.16 |
000817b0  28 72 65 61 73 6f 6e 20  63 6f 64 65 29 0a 09 52  |(reason code)..R|
000817c0  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 66  |1 =.pointer to f|
000817d0  75 6c 6c 20 6d 6f 64 75  6c 65 25 69 6e 73 74 61  |ull module%insta|
000817e0  6e 74 69 61 74 69 6f 6e  20 6e 61 6d 65 0a 0a 3c  |ntiation name..<|
000817f0  3d 09 52 30 2c 52 31 20  70 72 65 73 65 72 76 65  |=.R0,R1 preserve|
00081800  64 0a 0a 54 68 69 73 20  65 6e 61 62 6c 65 73 20  |d..This enables |
00081810  79 6f 75 20 74 6f 20 73  65 6c 65 63 74 20 74 68  |you to select th|
00081820  65 20 70 72 65 66 65 72  72 65 64 20 69 6e 73 74  |e preferred inst|
00081830  61 6e 74 69 61 74 69 6f  6e 73 20 6f 66 20 61 20  |antiations of a |
00081840  70 61 72 74 69 63 75 6c  61 72 20 6d 6f 64 75 6c  |particular modul|
00081850  65 2e 00 00 44 41 54 41  33 01 00 00 4f 53 5f 4d  |e...DATA3...OS_M|
00081860  6f 64 75 6c 65 20 31 37  0a 3d 3e 09 52 30 20 3d  |odule 17.=>.R0 =|
00081870  09 31 37 20 28 72 65 61  73 6f 6e 20 63 6f 64 65  |.17 (reason code|
00081880  29 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |)..R1 =.pointer |
00081890  74 6f 20 65 6e 76 69 72  6f 6e 6d 65 6e 74 20 73  |to environment s|
000818a0  74 72 69 6e 67 0a 09 52  32 20 3d 09 63 68 75 6e  |tring..R2 =.chun|
000818b0  6b 20 6e 75 6d 62 65 72  0a 09 52 33 20 3d 09 3c  |k number..R3 =.<|
000818c0  52 4f 4d 20 73 65 63 74  69 6f 6e 3d 3e 4f 53 5f  |ROM section=>OS_|
000818d0  4d 6f 64 75 6c 65 52 4f  4d 73 65 63 74 69 6f 6e  |ModuleROMsection|
000818e0  73 3e 0a 0a 3c 3d 09 52  30 2d 52 33 20 70 72 65  |s>..<=.R0-R3 pre|
000818f0  73 65 72 76 65 64 0a 0a  54 68 69 73 20 61 6c 6c  |served..This all|
00081900  6f 77 73 20 65 78 70 61  6e 73 69 6f 6e 20 63 61  |ows expansion ca|
00081910  72 64 20 61 6e 64 20 65  78 74 65 6e 73 69 6f 6e  |rd and extension|
00081920  20 52 4f 4d 20 6d 6f 64  75 6c 65 73 20 74 6f 20  | ROM modules to |
00081930  62 65 20 61 64 64 65 64  20 74 6f 20 74 68 65 20  |be added to the |
00081940  6d 6f 64 75 6c 65 20 6c  69 73 74 2e 20 4e 6f 74  |module list. Not|
00081950  65 20 74 68 61 74 20 65  78 74 65 6e 73 69 6f 6e  |e that extension|
00081960  20 52 4f 4d 73 20 61 72  65 20 6e 6f 74 20 73 75  | ROMs are not su|
00081970  70 70 6f 72 74 65 64 20  69 6e 20 52 49 53 43 20  |pported in RISC |
00081980  4f 53 20 32 2e 30 0a 00  44 41 54 41 d3 05 00 00  |OS 2.0..DATA....|
00081990  4f 53 5f 4d 6f 64 75 6c  65 20 31 39 2f 32 30 0a  |OS_Module 19/20.|
000819a0  23 50 61 72 65 6e 74 20  4f 53 5f 4d 6f 64 75 6c  |#Parent OS_Modul|
000819b0  65 0a 23 20 4e 3e 20 49  6e 74 65 72 73 74 69 6e  |e.# N> Interstin|
000819c0  67 20 64 69 73 70 6c 61  79 20 62 75 67 20 77 69  |g display bug wi|
000819d0  74 68 20 74 68 69 73 20  69 6e 20 70 6c 61 63 65  |th this in place|
000819e0  0a 23 20 54 61 62 20 41  6c 69 67 6e 20 4c 65 66  |.# Tab Align Lef|
000819f0  74 2c 20 41 6c 69 67 6e  20 4c 65 66 74 2c 20 41  |t, Align Left, A|
00081a00  6c 69 67 6e 20 52 69 67  68 74 0a 23 20 47 65 72  |lign Right.# Ger|
00081a10  70 68 3e 20 59 65 73 2c  20 49 27 76 65 20 6d 65  |ph> Yes, I've me|
00081a20  6e 74 69 6f 6e 65 64 20  69 74 20 74 6f 20 47 75  |ntioned it to Gu|
00081a30  74 74 6f 72 6d 20 28 73  69 6e 63 65 20 76 32 2e  |ttorm (since v2.|
00081a40  30 32 20 49 20 74 68 69  6e 6b 21 29 20 61 6e 64  |02 I think!) and|
00081a50  20 49 49 52 43 0a 23 20  20 20 20 20 20 20 20 68  | IIRC.#        h|
00081a60  65 20 73 61 69 64 20 69  74 20 77 61 73 20 61 20  |e said it was a |
00081a70  76 65 72 79 20 74 72 69  63 6b 79 20 74 68 69 6e  |very tricky thin|
00081a80  67 20 74 6f 20 74 72 61  63 6b 20 64 6f 77 6e 0a  |g to track down.|
00081a90  3d 3e 09 52 30 20 3d 09  31 39 2f 32 30 20 28 72  |=>.R0 =.19/20 (r|
00081aa0  65 61 73 6f 6e 20 63 6f  64 65 29 0a 09 52 31 20  |eason code)..R1 |
00081ab0  3d 09 6d 6f 64 75 6c 65  20 6e 75 6d 62 65 72 2c  |=.module number,|
00081ac0  20 6f 72 20 30 20 74 6f  20 73 74 61 72 74 0a 09  | or 0 to start..|
00081ad0  52 32 20 3d 09 3c 52 4f  4d 20 73 65 63 74 69 6f  |R2 =.<ROM sectio|
00081ae0  6e 3d 3e 4f 53 5f 4d 6f  64 75 6c 65 52 4f 4d 53  |n=>OS_ModuleROMS|
00081af0  65 63 74 69 6f 6e 73 3e  0a 0a 3c 3d 09 52 30 20  |ections>..<=.R0 |
00081b00  70 72 65 73 65 72 76 65  64 0a 09 52 31 20 3d 09  |preserved..R1 =.|
00081b10  6d 6f 64 75 6c 65 20 6e  75 6d 62 65 72 20 6f 66  |module number of|
00081b20  20 66 6f 75 6e 64 20 6d  6f 64 75 6c 65 20 2b 31  | found module +1|
00081b30  0a 09 52 32 20 3d 09 3c  52 4f 4d 20 73 65 63 74  |..R2 =.<ROM sect|
00081b40  69 6f 6e 3d 3e 4f 53 5f  4d 6f 64 75 6c 65 52 4f  |ion=>OS_ModuleRO|
00081b50  4d 73 65 63 74 69 6f 6e  73 3e 20 6f 66 20 66 6f  |Msections> of fo|
00081b60  75 6e 64 20 6d 6f 64 75  6c 65 0a 09 52 33 20 3d  |und module..R3 =|
00081b70  09 70 6f 69 6e 74 65 72  20 74 6f 20 6d 6f 64 75  |.pointer to modu|
00081b80  6c 65 20 6e 61 6d 65 0a  09 52 34 20 3d 09 2d 31  |le name..R4 =.-1|
00081b90  09 75 6e 70 6c 75 67 67  65 64 0a 09 20 09 30 09  |.unplugged.. .0.|
00081ba0  69 6e 73 65 72 74 65 64  20 62 75 74 20 6e 6f 74  |inserted but not|
00081bb0  20 69 6e 20 74 68 65 20  6d 6f 64 75 6c 65 20 63  | in the module c|
00081bc0  68 61 69 6e 0a 09 20 09  31 09 61 63 74 69 76 65  |hain.. .1.active|
00081bd0  0a 09 20 09 32 09 72 75  6e 6e 69 6e 67 0a 09 52  |.. .2.running..R|
00081be0  35 20 3d 09 63 68 75 6e  6b 20 6e 75 6d 62 65 72  |5 =.chunk number|
00081bf0  20 6f 66 20 65 78 70 61  6e 73 69 6f 6e 20 63 61  | of expansion ca|
00081c00  72 64 20 6d 6f 64 75 6c  65 0a 09 52 36 20 3d 09  |rd module..R6 =.|
00081c10  3c 42 43 44 20 76 65 72  73 69 6f 6e 73 20 6e 75  |<BCD versions nu|
00081c20  6d 62 65 72 3d 3e 2e 42  43 44 3e 20 66 6f 72 20  |mber=>.BCD> for |
00081c30  4f 53 5f 4d 6f 64 75 6c  65 20 32 30 0a 0a 54 68  |OS_Module 20..Th|
00081c40  69 73 20 63 61 6c 6c 20  72 65 74 75 72 6e 73 20  |is call returns |
00081c50  69 6e 66 6f 72 6d 61 74  69 6f 6e 20 6f 6e 20 6f  |information on o|
00081c60  6e 65 20 6d 6f 64 75 6c  65 20 74 68 61 74 20 69  |ne module that i|
00081c70  73 20 63 75 72 72 65 6e  74 6c 79 20 69 6e 20 52  |s currently in R|
00081c80  4f 4d 20 61 6c 6f 6e 67  20 77 69 74 68 20 69 74  |OM along with it|
00081c90  73 20 73 74 61 74 75 73  2e 20 54 68 65 20 6d 6f  |s status. The mo|
00081ca0  64 75 6c 65 20 66 6f 75  6e 64 20 69 73 20 74 68  |dule found is th|
00081cb0  65 20 67 69 76 65 6e 20  6e 75 6d 62 65 72 20 6f  |e given number o|
00081cc0  66 20 6d 6f 64 75 6c 65  73 20 6f 6e 20 66 72 6f  |f modules on fro|
00081cd0  6d 20 73 74 61 72 74 20  6f 66 20 74 68 65 20 67  |m start of the g|
00081ce0  69 76 65 6e 20 52 4f 4d  20 73 65 63 74 69 6f 6e  |iven ROM section|
00081cf0  2e 20 49 66 20 74 68 65  72 65 20 61 72 65 20 69  |. If there are i|
00081d00  6e 73 75 66 66 69 63 69  65 6e 74 20 6d 6f 64 75  |nsufficient modu|
00081d10  6c 65 73 20 69 6e 20 74  68 65 20 52 4f 4d 20 73  |les in the ROM s|
00081d20  65 63 74 69 6f 6e 20 74  68 65 6e 20 74 68 65 20  |ection then the |
00081d30  73 65 61 72 63 68 20 63  6f 6e 74 69 6e 75 65 73  |search continues|
00081d40  20 77 69 74 68 20 74 68  65 20 6e 65 78 74 20 73  | with the next s|
00081d50  65 63 74 69 6f 6e 3b 20  73 6f 20 74 68 65 20 66  |ection; so the f|
00081d60  69 66 74 68 20 6d 6f 64  75 6c 65 20 69 6e 20 61  |ifth module in a|
00081d70  20 66 6f 75 72 20 6d 6f  64 75 6c 65 20 73 65 63  | four module sec|
00081d80  74 69 6f 6e 20 77 6f 75  6c 64 20 69 6e 20 66 61  |tion would in fa|
00081d90  63 74 20 62 65 20 74 68  65 20 66 69 72 73 74 20  |ct be the first |
00081da0  6d 6f 64 75 6c 65 20 6f  66 20 74 68 65 20 6e 65  |module of the ne|
00081db0  78 74 20 73 65 63 74 69  6f 6e 2e 20 54 68 65 20  |xt section. The |
00081dc0  52 4f 4d 20 73 65 63 74  69 6f 6e 73 20 61 72 65  |ROM sections are|
00081dd0  20 73 63 61 6e 6e 65 64  20 69 6e 20 3c 74 68 69  | scanned in <thi|
00081de0  73 20 6f 72 64 65 72 3d  3e 4f 53 5f 4d 6f 64 75  |s order=>OS_Modu|
00081df0  6c 65 52 4f 4d 73 65 63  74 69 6f 6e 73 3e 2e 20  |leROMsections>. |
00081e00  54 68 65 20 76 61 6c 75  65 73 20 69 6e 20 52 30  |The values in R0|
00081e10  2d 52 32 20 61 72 65 20  74 68 65 20 63 6f 72 72  |-R2 are the corr|
00081e20  65 63 74 20 6f 6e 65 73  20 74 6f 20 75 73 65 20  |ect ones to use |
00081e30  74 68 69 73 20 63 61 6c  6c 20 74 6f 20 65 6e 75  |this call to enu|
00081e40  6d 65 72 61 74 65 20 74  68 65 20 6e 65 78 74 20  |merate the next |
00081e50  6d 6f 64 75 6c 65 3b 20  68 65 6e 63 65 20 72 65  |module; hence re|
00081e60  70 65 61 74 65 64 20 63  61 6c 6c 73 20 77 69 6c  |peated calls wil|
00081e70  6c 20 67 69 76 65 20 61  20 66 75 6c 6c 20 65 6e  |l give a full en|
00081e80  75 6d 65 72 61 74 69 6f  6e 20 6f 66 20 61 6c 6c  |umeration of all|
00081e90  20 52 4f 4d 20 6d 6f 64  75 6c 65 73 2e 0a 23 53  | ROM modules..#S|
00081ea0  75 62 70 61 67 65 20 42  43 44 0a 42 43 44 20 76  |ubpage BCD.BCD v|
00081eb0  65 72 73 69 6f 6e 20 6e  75 6d 62 65 72 0a 54 68  |ersion number.Th|
00081ec0  65 20 74 6f 70 20 31 36  20 62 69 74 73 20 63 6f  |e top 16 bits co|
00081ed0  6e 74 61 69 6e 20 74 68  65 20 69 6e 74 65 67 65  |ntain the intege|
00081ee0  72 20 70 61 72 74 20 6f  66 20 74 68 65 20 76 65  |r part of the ve|
00081ef0  72 73 69 6f 6e 20 6e 75  6d 62 65 72 2c 20 74 68  |rsion number, th|
00081f00  65 20 62 6f 74 74 6f 6e  20 31 36 20 62 69 74 73  |e botton 16 bits|
00081f10  20 74 68 65 20 66 72 61  63 74 69 6f 6e 61 6c 20  | the fractional |
00081f20  70 61 72 74 2e 0a 0a 28  7b 2f 7d 65 2e 67 2e 7b  |part...({/}e.g.{|
00081f30  2f 7d 20 49 66 20 76 65  72 73 69 6f 6e 20 3d 20  |/} If version = |
00081f40  32 2e 31 32 20 74 68 65  6e 20 42 43 44 20 3d 20  |2.12 then BCD = |
00081f50  26 30 30 30 32 31 32 30  30 29 0a 00 44 41 54 41  |&00021200)..DATA|
00081f60  00 01 00 00 52 4f 4d 20  53 65 63 74 69 6f 6e 73  |....ROM Sections|
00081f70  0a 23 50 61 72 65 6e 74  20 4f 53 5f 4d 6f 64 75  |.#Parent OS_Modu|
00081f80  6c 65 31 39 2d 32 30 0a  5c 23 09 52 4f 4d 20 53  |le19-20.\#.ROM S|
00081f90  65 63 74 69 6f 6e 0a 23  4c 69 6e 65 0a 23 20 49  |ection.#Line.# I|
00081fa0  20 68 61 76 65 20 63 61  72 64 20 38 20 6f 6e 20  | have card 8 on |
00081fb0  6d 79 20 52 69 73 63 20  50 43 0a 30 2d 33 09 45  |my Risc PC.0-3.E|
00081fc0  78 70 61 6e 73 69 6f 6e  20 63 61 72 64 20 30 2d  |xpansion card 0-|
00081fd0  33 0a 2d 31 09 53 79 73  74 65 6d 20 52 4f 4d 0a  |3.-1.System ROM.|
00081fe0  2d 32 09 53 79 73 74 65  6d 20 52 4f 4d 20 31 0a  |-2.System ROM 1.|
00081ff0  2d 33 09 53 79 73 74 65  6d 20 52 4f 4d 20 32 20  |-3.System ROM 2 |
00082000  65 74 63 2e 0a 0a 54 68  65 20 6e 75 6d 62 65 72  |etc...The number|
00082010  20 6f 66 20 73 79 73 74  65 6d 20 52 4f 4d 73 20  | of system ROMs |
00082020  61 6e 64 20 65 78 70 61  6e 73 69 6f 6e 20 63 61  |and expansion ca|
00082030  72 64 73 20 63 61 6e 20  62 65 20 72 65 61 64 20  |rds can be read |
00082040  77 69 74 68 20 3c 50 6f  64 75 6c 65 5f 52 65 74  |with <Podule_Ret|
00082050  75 72 6e 4e 75 6d 62 65  72 3e 2e 0a 44 41 54 41  |urnNumber>..DATA|
00082060  94 00 00 00 4f 53 5f 4d  6f 64 75 6c 65 20 39 0a  |....OS_Module 9.|
00082070  3d 3e 09 52 30 20 3d 09  39 20 28 72 65 61 73 6f  |=>.R0 =.9 (reaso|
00082080  6e 20 63 6f 64 65 29 0a  3c 3d 09 52 30 20 70 72  |n code).<=.R0 pr|
00082090  65 73 65 72 76 65 64 0a  0a 54 68 69 73 20 6b 69  |eserved..This ki|
000820a0  6c 6c 73 20 61 6c 6c 20  6d 6f 64 75 6c 65 73 20  |lls all modules |
000820b0  77 68 69 63 68 20 61 72  65 6e 27 74 20 52 4f 4d  |which aren't ROM|
000820c0  20 6d 6f 64 75 6c 65 73  2e 0a 0a 7b 2a 7d 4e 6f  | modules...{*}No|
000820d0  74 65 3a 7b 2a 7d 20 54  68 69 73 20 69 73 20 6e  |te:{*} This is n|
000820e0  6f 74 20 72 65 63 6f 6d  6d 65 6e 64 65 64 2e 0a  |ot recommended..|
000820f0  44 49 52 24 c0 01 00 00  c0 01 00 00 b0 22 08 00  |DIR$........."..|
00082100  48 fd ff ff c1 b5 d0 22  ae 04 00 00 03 00 00 00  |H......"........|
00082110  00 00 00 00 46 69 6e 61  6c 00 00 00 60 27 08 00  |....Final...`'..|
00082120  48 fd ff ff 29 be d0 22  d2 04 00 00 03 00 00 00  |H...).."........|
00082130  00 00 00 00 49 6e 69 74  00 00 00 00 34 2c 08 00  |....Init....4,..|
00082140  48 fd ff ff 38 db d1 22  00 06 00 00 03 00 00 00  |H...8.."........|
00082150  00 00 00 00 53 65 72 76  69 63 65 00 34 32 08 00  |....Service.42..|
00082160  48 fd ff ff 35 22 6d 26  f8 02 00 00 03 00 00 00  |H...5"m&........|
00082170  00 00 00 00 53 74 61 72  74 00 00 00 2c 35 08 00  |....Start...,5..|
00082180  48 fd ff ff 4a ca d5 22  cf 02 00 00 03 00 00 00  |H...J.."........|
00082190  00 00 00 00 53 57 49 44  65 63 00 00 fc 37 08 00  |....SWIDec...7..|
000821a0  48 fd ff ff d6 8b d1 22  1f 04 00 00 03 00 00 00  |H......"........|
000821b0  00 00 00 00 53 57 49 48  61 6e 64 6c 65 72 00 00  |....SWIHandler..|
000821c0  1c 3c 08 00 48 fd ff ff  f7 cc 5d 25 0e 02 00 00  |.<..H.....]%....|
000821d0  03 00 00 00 00 00 00 00  73 77 69 74 61 62 6c 65  |........switable|
000821e0  00 00 00 00 2c 3e 08 00  48 fd ff ff a8 8f d5 22  |....,>..H......"|
000821f0  af 02 00 00 03 00 00 00  00 00 00 00 43 6f 6d 54  |............ComT|
00082200  61 62 6c 65 00 00 00 00  dc 40 08 00 48 fd ff ff  |able.....@..H...|
00082210  03 04 d5 22 33 04 00 00  33 00 00 00 00 00 00 00  |..."3...3.......|
00082220  43 6f 6d 43 6f 64 65 00  10 45 08 00 48 fd ff ff  |ComCode..E..H...|
00082230  e4 e7 d2 22 51 02 00 00  33 00 00 00 00 00 00 00  |..."Q...3.......|
00082240  43 6f 6d 46 6c 61 67 73  00 00 00 00 64 47 08 00  |ComFlags....dG..|
00082250  48 fd ff ff 06 3d 19 1e  73 02 00 00 03 00 00 00  |H....=..s.......|
00082260  00 00 00 00 48 65 6c 70  00 00 00 00 d8 49 08 00  |....Help.....I..|
00082270  48 fd ff ff c1 1f d3 22  1c 01 00 00 33 00 00 00  |H......"....3...|
00082280  00 00 00 00 43 6f 6d 48  65 6c 70 43 6f 64 65 00  |....ComHelpCode.|
00082290  f4 4a 08 00 48 fd ff ff  c9 ee 77 2b a9 07 00 00  |.J..H.....w+....|
000822a0  13 00 00 00 00 00 00 00  66 6f 72 6d 61 74 00 00  |........format..|
000822b0  44 41 54 41 ae 04 00 00  4d 6f 64 75 6c 65 20 66  |DATA....Module f|
000822c0  69 6e 61 6c 69 73 61 74  69 6f 6e 20 63 6f 64 65  |inalisation code|
000822d0  0a 23 50 61 72 65 6e 74  20 4f 53 5f 4d 6f 64 75  |.#Parent OS_Modu|
000822e0  6c 65 5f 66 6f 72 6d 61  74 0a 3d 3e 09 52 31 30  |le_format.=>.R10|
000822f0  09 3d 09 66 61 74 61 6c  69 74 79 20 69 6e 64 69  |.=.fatality indi|
00082300  63 61 74 69 6f 6e 3b 20  30 3d 6e 6f 6e 2d 66 61  |cation; 0=non-fa|
00082310  74 61 6c 2c 20 31 3d 66  61 74 61 6c 0a 09 52 31  |tal, 1=fatal..R1|
00082320  31 09 3d 09 69 6e 73 74  61 6e 74 69 61 74 69 6f  |1.=.instantiatio|
00082330  6e 20 6e 75 6d 62 65 72  0a 09 52 31 32 09 3d 09  |n number..R12.=.|
00082340  70 6f 69 6e 74 65 72 20  74 6f 20 70 72 69 76 61  |pointer to priva|
00082350  74 65 20 77 6f 72 64 20  66 6f 72 20 74 68 69 73  |te word for this|
00082360  20 69 6e 73 74 61 6e 74  69 61 74 69 6f 6e 0a 09  | instantiation..|
00082370  52 31 33 09 3d 09 73 75  70 65 72 76 69 73 6f 72  |R13.=.supervisor|
00082380  20 73 74 61 63 6b 20 70  6f 69 6e 74 65 72 0a 0a  | stack pointer..|
00082390  3c 3d 09 50 72 65 73 65  72 76 65 20 70 72 6f 63  |<=.Preserve proc|
000823a0  65 73 73 6f 72 20 6d 6f  64 65 2c 20 69 6e 74 65  |essor mode, inte|
000823b0  72 72 75 70 74 20 73 74  61 74 65 2c 20 56 20 66  |rrupt state, V f|
000823c0  6c 61 67 20 61 6e 64 20  52 37 2d 52 31 31 2c 52  |lag and R7-R11,R|
000823d0  31 33 0a 09 43 61 6e 20  63 6f 72 72 75 70 74 20  |13..Can corrupt |
000823e0  52 30 2d 52 36 2c 52 31  32 2c 52 31 34 20 61 6e  |R0-R6,R12,R14 an|
000823f0  64 20 66 6c 61 67 73 20  28 65 78 63 65 70 74 20  |d flags (except |
00082400  56 29 0a 0a 54 68 69 73  20 65 6e 74 72 79 20 69  |V)..This entry i|
00082410  73 20 63 61 6c 6c 65 64  20 6a 75 73 74 20 62 65  |s called just be|
00082420  66 6f 72 65 20 6b 69 6c  6c 69 6e 67 20 61 20 6d  |fore killing a m|
00082430  6f 64 75 6c 65 2e 20 54  68 69 73 20 63 61 6e 20  |odule. This can |
00082440  62 65 20 64 75 65 20 74  6f 20 61 20 7b 66 43 6f  |be due to a {fCo|
00082450  64 65 7d 52 4d 54 69 64  79 7b 66 7d 20 28 61 20  |de}RMTidy{f} (a |
00082460  6e 6f 6e 2d 66 61 74 61  6c 20 66 69 6e 61 6c 69  |non-fatal finali|
00082470  73 61 74 69 6f 6e 29 20  6f 72 20 61 20 7b 66 43  |sation) or a {fC|
00082480  6f 64 65 7d 52 4d 4b 69  6c 6c 7b 66 7d 20 28 66  |ode}RMKill{f} (f|
00082490  61 74 61 6c 29 2e 0a 0a  54 68 65 20 64 65 66 61  |atal)...The defa|
000824a0  75 6c 74 20 66 69 6e 61  6c 69 73 65 20 63 6f 64  |ult finalise cod|
000824b0  65 20 28 63 61 6c 6c 65  64 20 69 66 20 79 6f 75  |e (called if you|
000824c0  20 68 61 76 65 20 6e 6f  6e 65 29 20 66 72 65 65  | have none) free|
000824d0  73 20 61 6e 79 20 77 6f  72 6b 73 70 61 63 65 20  |s any workspace |
000824e0  70 6f 69 6e 74 65 64 20  74 6f 20 62 79 20 74 68  |pointed to by th|
000824f0  65 20 70 72 69 76 61 74  65 20 77 6f 72 64 20 28  |e private word (|
00082500  61 6e 64 20 74 68 65 6e  20 73 65 74 73 20 69 74  |and then sets it|
00082510  20 74 6f 20 30 29 2e 20  49 66 20 74 68 69 73 20  | to 0). If this |
00082520  69 73 20 61 6c 6c 20 79  6f 75 20 6e 65 65 64 2c  |is all you need,|
00082530  20 64 6f 6e 27 74 20 77  61 73 74 65 20 73 70 61  | don't waste spa|
00082540  63 65 20 77 69 74 68 20  79 6f 75 72 20 6f 77 6e  |ce with your own|
00082550  20 66 69 6e 61 6c 69 73  65 20 65 6e 74 72 79 2e  | finalise entry.|
00082560  0a 0a 59 6f 75 20 73 68  6f 75 6c 64 20 73 65 74  |..You should set|
00082570  20 74 68 65 20 70 72 69  76 61 74 65 20 77 6f 72  | the private wor|
00082580  64 20 74 6f 20 30 20 69  66 20 79 6f 75 20 66 72  |d to 0 if you fr|
00082590  65 65 20 61 6e 79 20 77  6f 72 6b 73 70 61 63 65  |ee any workspace|
000825a0  20 69 74 20 70 6f 69 6e  74 65 64 20 74 6f 2e 20  | it pointed to. |
000825b0  46 6f 72 20 61 20 6e 6f  6e 2d 66 61 74 61 6c 20  |For a non-fatal |
000825c0  66 69 6e 61 6c 69 73 61  74 69 6f 6e 20 74 68 65  |finalisation the|
000825d0  20 73 79 73 74 65 6d 20  61 73 73 75 6d 65 73 20  | system assumes |
000825e0  74 68 61 74 20 69 74 20  63 61 6e 20 72 65 6c 6f  |that it can relo|
000825f0  63 61 74 65 20 79 6f 75  72 20 77 6f 72 6b 73 70  |cate your worksp|
00082600  61 63 65 2c 20 68 65 6e  63 65 20 79 6f 75 20 2a  |ace, hence you *|
00082610  6d 75 73 74 2a 20 73 69  67 6e 61 6c 20 74 6f 20  |must* signal to |
00082620  69 74 20 74 68 61 74 20  79 6f 75 20 68 61 76 65  |it that you have|
00082630  20 6e 6f 6e 65 2e 0a 0a  54 68 65 20 69 6e 73 74  | none...The inst|
00082640  61 6e 74 69 61 74 69 6f  6e 20 6e 75 6d 62 65 72  |antiation number|
00082650  20 69 73 20 79 6f 75 72  20 63 75 72 72 65 6e 74  | is your current|
00082660  20 70 6f 73 69 74 69 6f  6e 20 69 6e 20 74 68 65  | position in the|
00082670  20 6c 69 73 74 2c 20 68  65 6e 63 65 20 69 74 20  | list, hence it |
00082680  6d 61 79 20 6e 6f 74 20  62 65 20 74 68 65 20 73  |may not be the s|
00082690  61 6d 65 20 76 61 6c 75  65 20 70 61 73 73 65 64  |ame value passed|
000826a0  20 74 6f 20 79 6f 75 72  20 3c 69 6e 69 74 69 61  | to your <initia|
000826b0  6c 69 73 65 20 63 6f 64  65 3d 3e 4f 53 5f 4d 6f  |lise code=>OS_Mo|
000826c0  64 75 6c 65 5f 49 6e 69  74 3e 2e 0a 0a 4e 6f 74  |dule_Init>...Not|
000826d0  65 20 74 68 61 74 20 79  6f 75 20 63 61 6e 20 63  |e that you can c|
000826e0  6f 72 72 75 70 74 20 71  75 69 74 65 20 61 20 66  |orrupt quite a f|
000826f0  65 77 20 72 65 67 69 73  74 65 72 73 20 69 6e 20  |ew registers in |
00082700  66 69 6e 61 6c 69 73 61  74 69 6f 6e 20 63 6f 64  |finalisation cod|
00082710  65 20 2d 20 64 6f 6e 27  74 20 77 61 73 74 65 20  |e - don't waste |
00082720  74 69 6d 65 20 73 74 61  63 6b 69 6e 67 20 61 6e  |time stacking an|
00082730  79 74 68 69 6e 67 20 74  68 61 74 20 74 68 65 20  |ything that the |
00082740  4f 53 20 68 61 73 20 61  6c 72 65 61 64 79 20 74  |OS has already t|
00082750  61 6b 65 6e 20 63 61 72  65 20 6f 66 2e 0a 00 00  |aken care of....|
00082760  44 41 54 41 d2 04 00 00  4d 6f 64 75 6c 65 20 69  |DATA....Module i|
00082770  6e 69 74 69 61 6c 69 73  61 74 69 6f 6e 20 63 6f  |nitialisation co|
00082780  64 65 0a 23 50 61 72 65  6e 74 20 4f 53 5f 4d 6f  |de.#Parent OS_Mo|
00082790  64 75 6c 65 5f 66 6f 72  6d 61 74 0a 3d 3e 09 52  |dule_format.=>.R|
000827a0  31 30 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |10 =.pointer to |
000827b0  65 6e 76 69 72 6f 6e 6d  65 6e 74 20 73 74 72 69  |environment stri|
000827c0  6e 67 20 28 69 6e 69 74  69 61 6c 69 73 61 74 69  |ng (initialisati|
000827d0  6f 6e 20 70 61 72 61 6d  65 74 65 72 73 20 73 75  |on parameters su|
000827e0  70 70 6c 69 65 64 20 62  79 20 63 61 6c 6c 65 72  |pplied by caller|
000827f0  20 6f 66 20 3c 4f 53 5f  4d 6f 64 75 6c 65 3e 29  | of <OS_Module>)|
00082800  0a 09 52 31 31 20 3d 09  30 09 09 6d 6f 64 75 6c  |..R11 =.0..modul|
00082810  65 20 6c 6f 61 64 65 64  20 66 72 6f 6d 20 64 69  |e loaded from di|
00082820  73 63 20 6f 72 20 52 41  4d 0a 09 20 09 3e 26 30  |sc or RAM.. .>&0|
00082830  33 30 30 30 30 30 30 09  6d 6f 64 75 6c 65 20 6c  |3000000.module l|
00082840  6f 61 64 65 64 20 66 72  6f 6d 20 65 78 70 61 6e  |oaded from expan|
00082850  73 69 6f 6e 20 63 61 72  64 20 77 69 74 68 20 74  |sion card with t|
00082860  68 69 73 20 20 49 2f 4f  20 62 61 73 65 0a 09 20  |his  I/O base.. |
00082870  09 65 6c 73 65 09 09 6e  65 77 20 69 6e 73 74 61  |.else..new insta|
00082880  6e 74 69 61 74 69 6f 6e  2c 20 74 68 69 73 20 6d  |ntiation, this m|
00082890  61 6e 79 20 6f 74 68 65  72 20 69 6e 73 74 61 6e  |any other instan|
000828a0  74 69 61 74 69 6f 6e 73  0a 09 52 31 32 20 3d 09  |tiations..R12 =.|
000828b0  70 6f 69 6e 74 65 72 20  74 6f 20 70 72 69 76 61  |pointer to priva|
000828c0  74 65 20 77 6f 72 64 20  66 6f 72 20 74 68 69 73  |te word for this|
000828d0  20 6d 6f 64 75 6c 65 20  69 6e 73 74 61 6e 74 69  | module instanti|
000828e0  61 74 69 6f 6e 0a 09 52  31 33 20 3d 09 73 75 70  |ation..R13 =.sup|
000828f0  65 72 76 69 73 6f 72 20  73 74 61 63 6b 20 70 6f  |ervisor stack po|
00082900  69 6e 74 65 72 0a 0a 3c  3d 09 50 72 65 73 65 72  |inter..<=.Preser|
00082910  76 65 20 70 72 6f 63 65  73 73 6f 72 20 6d 6f 64  |ve processor mod|
00082920  65 2c 20 69 6e 74 65 72  72 75 70 74 20 73 74 61  |e, interrupt sta|
00082930  74 65 2c 20 56 20 66 6c  61 67 20 61 6e 64 20 52  |te, V flag and R|
00082940  37 2d 52 31 31 2c 52 31  33 0a 09 43 61 6e 20 63  |7-R11,R13..Can c|
00082950  6f 72 72 75 70 74 20 52  30 2d 52 36 2c 52 31 32  |orrupt R0-R6,R12|
00082960  2c 52 31 34 20 61 6e 64  20 66 6c 61 67 73 2c 20  |,R14 and flags, |
00082970  65 78 63 65 70 74 20 56  20 75 6e 6c 65 73 73 20  |except V unless |
00082980  65 72 72 6f 72 20 69 73  20 62 65 69 6e 67 20 72  |error is being r|
00082990  65 74 75 72 6e 65 64 0a  0a 54 68 69 73 20 65 6e  |eturned..This en|
000829a0  74 72 79 20 69 73 20 63  61 6c 6c 65 64 20 62 79  |try is called by|
000829b0  20 52 49 53 43 20 4f 53  20 61 66 74 65 72 20 74  | RISC OS after t|
000829c0  68 65 20 6d 6f 64 75 6c  65 20 68 61 73 20 62 65  |he module has be|
000829d0  65 6e 20 6c 6f 61 64 65  64 20 69 6e 74 6f 20 52  |en loaded into R|
000829e0  4d 41 2c 20 62 65 66 6f  72 65 20 74 68 65 20 53  |MA, before the S|
000829f0  74 61 72 74 20 63 6f 64  65 20 69 73 20 63 61 6c  |tart code is cal|
00082a00  6c 65 64 20 61 6e 64 20  62 65 66 6f 72 65 20 74  |led and before t|
00082a10  68 65 20 6d 6f 64 75 6c  65 27 73 20 53 57 49 73  |he module's SWIs|
00082a20  20 28 69 66 20 69 74 20  68 61 73 20 61 6e 79 29  | (if it has any)|
00082a30  20 61 72 65 20 72 65 63  6f 67 6e 69 73 65 64 2e  | are recognised.|
00082a40  20 20 44 75 72 69 6e 67  20 61 20 6d 6f 64 75 6c  |  During a modul|
00082a50  65 27 73 20 69 6e 69 74  69 61 6c 69 73 61 74 69  |e's initialisati|
00082a60  6f 6e 20 63 6f 64 65 20  61 6e 79 20 63 61 6c 6c  |on code any call|
00082a70  73 20 74 6f 20 69 74 73  20 6f 77 6e 20 53 57 49  |s to its own SWI|
00082a80  73 20 6f 72 20 2a 63 6f  6d 6d 61 6e 64 73 20 77  |s or *commands w|
00082a90  69 6c 6c 20 70 72 6f 76  6f 6b 65 20 61 6e 20 27  |ill provoke an '|
00082aa0  49 20 64 6f 6e 27 74 20  6b 6e 6f 77 20 77 68 61  |I don't know wha|
00082ab0  74 20 79 6f 75 27 72 65  20 74 61 6c 6b 69 6e 67  |t you're talking|
00082ac0  20 61 62 6f 75 74 27 20  72 65 61 63 74 69 6f 6e  | about' reaction|
00082ad0  20 66 72 6f 6d 20 52 49  53 43 20 4f 53 2e 0a 0a  | from RISC OS...|
00082ae0  2a 43 68 65 63 6b 2a 20  79 6f 75 72 20 70 72 69  |*Check* your pri|
00082af0  76 61 74 65 20 77 6f 72  64 20 69 73 20 30 20 62  |vate word is 0 b|
00082b00  65 66 6f 72 65 20 63 6c  61 69 6d 69 6e 67 20 77  |efore claiming w|
00082b10  6f 72 6b 73 70 61 63 65  20 2d 20 69 66 20 69 74  |orkspace - if it|
00082b20  20 69 73 20 6e 6f 6e 2d  7a 65 72 6f 20 79 6f 75  | is non-zero you|
00082b30  27 76 65 20 61 6c 72 65  61 64 79 20 62 65 65 6e  |'ve already been|
00082b40  20 69 6e 69 74 69 61 6c  69 73 65 64 20 28 61 6e  | initialised (an|
00082b50  64 20 74 68 69 73 20 63  61 6c 6c 20 69 73 20 62  |d this call is b|
00082b60  65 69 6e 67 20 6d 61 64  65 20 61 66 74 65 72 20  |eing made after |
00082b70  61 20 3c 6e 6f 6e 2d 66  61 74 61 6c 20 66 69 6e  |a <non-fatal fin|
00082b80  61 6c 69 73 61 74 69 6f  6e 3d 3e 4f 53 5f 4d 6f  |alisation=>OS_Mo|
00082b90  64 75 6c 65 5f 46 69 6e  61 6c 3e 29 2e 0a 0a 4e  |dule_Final>)...N|
00082ba0  6f 74 65 20 74 68 61 74  20 79 6f 75 20 63 61 6e  |ote that you can|
00082bb0  20 63 6f 72 72 75 70 74  20 71 75 69 74 65 20 61  | corrupt quite a|
00082bc0  20 66 65 77 20 72 65 67  69 73 74 65 72 73 20 69  | few registers i|
00082bd0  6e 20 69 6e 69 74 69 61  6c 69 73 61 74 69 6f 6e  |n initialisation|
00082be0  20 63 6f 64 65 20 2d 20  64 6f 6e 27 74 20 77 61  | code - don't wa|
00082bf0  73 74 65 20 74 69 6d 65  20 73 74 61 63 6b 69 6e  |ste time stackin|
00082c00  67 20 61 6e 79 74 68 69  6e 67 20 74 68 61 74 20  |g anything that |
00082c10  74 68 65 20 4f 53 20 68  61 73 20 61 6c 72 65 61  |the OS has alrea|
00082c20  64 79 20 74 61 6b 65 6e  20 63 61 72 65 20 6f 66  |dy taken care of|
00082c30  2e 0a 00 00 44 41 54 41  00 06 00 00 4d 6f 64 75  |....DATA....Modu|
00082c40  6c 65 20 73 65 72 76 69  63 65 20 68 61 6e 64 6c  |le service handl|
00082c50  65 72 20 63 6f 64 65 0a  23 50 61 72 65 6e 74 20  |er code.#Parent |
00082c60  4f 53 5f 4d 6f 64 75 6c  65 5f 66 6f 72 6d 61 74  |OS_Module_format|
00082c70  0a 3d 3e 09 52 31 20 3d  09 73 65 72 76 69 63 65  |.=>.R1 =.service|
00082c80  20 6e 75 6d 62 65 72 0a  09 52 31 32 20 3d 09 70  | number..R12 =.p|
00082c90  6f 69 6e 74 65 72 20 74  6f 20 70 72 69 76 61 74  |ointer to privat|
00082ca0  65 20 77 6f 72 64 20 66  6f 72 20 6d 6f 64 75 6c  |e word for modul|
00082cb0  65 20 69 6e 73 74 61 6e  74 69 61 74 69 6f 6e 0a  |e instantiation.|
00082cc0  09 52 31 33 20 3d 09 70  6f 69 6e 74 65 72 20 74  |.R13 =.pointer t|
00082cd0  6f 20 73 74 61 63 6b 0a  0a 3c 3d 09 52 31 20 3d  |o stack..<=.R1 =|
00082ce0  09 30 20 69 66 20 73 65  72 76 69 63 65 20 69 73  |.0 if service is|
00082cf0  20 62 65 69 6e 67 20 63  6c 61 69 6d 65 64 2c 20  | being claimed, |
00082d00  70 72 65 73 65 72 76 65  64 20 6f 74 68 65 72 77  |preserved otherw|
00082d10  69 73 65 0a 09 52 30 2c  52 32 2d 52 38 20 61 6c  |ise..R0,R2-R8 al|
00082d20  74 65 72 65 64 20 64 65  70 65 6e 64 69 6e 67 20  |tered depending |
00082d30  6f 6e 20 73 65 72 76 69  63 65 20 63 61 6c 6c 20  |on service call |
00082d40  69 66 20 63 6c 61 69 6d  65 64 0a 09 52 31 32 20  |if claimed..R12 |
00082d50  6d 61 79 20 62 65 20 63  6f 72 72 75 70 74 65 64  |may be corrupted|
00082d60  0a 09 4f 74 68 65 72 20  72 65 67 69 73 74 65 72  |..Other register|
00082d70  73 20 73 68 6f 75 6c 64  20 62 65 20 70 72 65 73  |s should be pres|
00082d80  65 72 76 65 64 20 69 66  20 74 68 65 79 20 61 72  |erved if they ar|
00082d90  65 20 6e 6f 74 20 62 65  69 6e 67 20 75 73 65 64  |e not being used|
00082da0  20 74 6f 20 72 65 74 75  72 6e 20 76 61 6c 75 65  | to return value|
00082db0  73 0a 0a 54 68 69 73 20  65 6e 74 72 79 20 69 73  |s..This entry is|
00082dc0  20 63 61 6c 6c 65 64 20  77 68 65 6e 20 61 20 3c  | called when a <|
00082dd0  73 65 72 76 69 63 65 20  63 61 6c 6c 3d 3e 73 65  |service call=>se|
00082de0  72 76 69 63 65 5f 69 6e  64 65 78 3e 20 69 73 20  |rvice_index> is |
00082df0  69 73 73 75 65 64 2e 20  53 65 72 76 69 63 65 20  |issued. Service |
00082e00  63 61 6c 6c 20 63 6f 64  65 20 2a 6d 75 73 74 2a  |call code *must*|
00082e10  20 62 65 20 72 65 65 6e  74 72 61 6e 74 2e 0a 0a  | be reentrant...|
00082e20  53 69 6e 63 65 20 73 65  72 76 69 63 65 20 63 61  |Since service ca|
00082e30  6c 6c 73 20 61 72 65 20  6d 61 64 65 20 76 65 72  |lls are made ver|
00082e40  79 20 6f 66 74 65 6e 20  74 68 65 79 20 63 61 6e  |y often they can|
00082e50  20 63 61 75 73 65 20 73  69 67 6e 69 66 69 63 61  | cause significa|
00082e60  6e 74 20 73 6c 6f 77 2d  64 6f 77 6e 73 20 69 66  |nt slow-downs if|
00082e70  20 6e 6f 74 20 68 61 6e  64 6c 65 64 20 69 6e 20  | not handled in |
00082e80  61 20 73 70 65 65 64 2d  63 6f 6e 73 63 69 6f 75  |a speed-consciou|
00082e90  73 20 6d 61 6e 6e 65 72  2e 20 20 49 74 20 69 73  |s manner.  It is|
00082ea0  20 72 65 63 6f 6d 6d 65  6e 64 65 64 20 74 68 61  | recommended tha|
00082eb0  74 20 79 6f 75 20 77 72  69 74 65 20 73 65 72 76  |t you write serv|
00082ec0  69 63 65 20 68 61 6e 64  6c 69 6e 67 20 63 6f 64  |ice handling cod|
00082ed0  65 20 73 6f 20 61 73 20  74 6f 20 62 65 20 63 61  |e so as to be ca|
00082ee0  63 68 65 2d 6c 69 6e 65  20 61 6c 69 67 6e 65 64  |che-line aligned|
00082ef0  20 66 6f 72 20 63 61 63  68 65 20 6f 70 74 69 6d  | for cache optim|
00082f00  69 73 61 74 69 6f 6e 2c  20 61 6e 64 20 74 68 61  |isation, and tha|
00082f10  74 20 6f 6e 20 72 65 63  65 70 74 69 6f 6e 20 6f  |t on reception o|
00082f20  66 20 73 65 72 76 69 63  65 20 63 61 6c 6c 73 20  |f service calls |
00082f30  74 68 61 74 20 61 72 65  20 6e 6f 74 20 63 61 74  |that are not cat|
00082f40  65 72 65 64 20 66 6f 72  20 62 79 20 79 6f 75 72  |ered for by your|
00082f50  20 6d 6f 64 75 6c 65 20  79 6f 75 72 20 63 6f 64  | module your cod|
00082f60  65 20 72 65 74 75 72 6e  73 20 61 73 20 73 6f 6f  |e returns as soo|
00082f70  6e 20 61 73 20 70 6f 73  73 69 62 6c 65 2e 20 54  |n as possible. T|
00082f80  68 69 73 20 6d 65 61 6e  73 20 74 68 61 74 20 74  |his means that t|
00082f90  68 65 20 65 6e 74 72 79  20 70 6f 69 6e 74 20 66  |he entry point f|
00082fa0  6f 72 20 74 68 65 20 73  65 72 76 69 63 65 20 63  |or the service c|
00082fb0  61 6c 6c 20 63 6f 64 65  20 73 68 6f 75 6c 64 20  |all code should |
00082fc0  62 65 20 61 74 20 31 36  6e 2d 34 20 66 72 6f 6d  |be at 16n-4 from|
00082fd0  20 74 68 65 20 62 61 73  65 20 6f 66 20 74 68 65  | the base of the|
00082fe0  20 6d 6f 64 75 6c 65 20  28 6d 6f 64 75 6c 65 73  | module (modules|
00082ff0  20 61 72 65 20 61 6c 77  61 79 73 20 6c 6f 61 64  | are always load|
00083000  65 64 20 61 74 20 6f 66  66 73 65 74 20 34 29 2e  |ed at offset 4).|
00083010  0a 0a 3c 54 68 69 73 20  65 78 61 6d 70 6c 65 20  |..<This example |
00083020  63 6f 64 65 3d 3e 2e 65  78 61 6d 70 6c 65 3e 20  |code=>.example> |
00083030  73 68 6f 77 73 20 74 68  65 20 72 65 63 6f 6d 6d  |shows the recomm|
00083040  65 6e 64 65 64 20 77 61  79 20 74 6f 20 2a 72 61  |ended way to *ra|
00083050  70 69 64 6c 79 2a 20 68  61 6e 64 6c 65 20 6d 75  |pidly* handle mu|
00083060  6c 74 69 70 6c 65 20 73  65 72 76 69 63 65 73 2e  |ltiple services.|
00083070  0a 23 53 75 62 70 61 67  65 20 65 78 61 6d 70 6c  |.#Subpage exampl|
00083080  65 0a 45 78 61 6d 70 6c  65 20 63 6f 64 65 20 74  |e.Example code t|
00083090  6f 20 68 61 6e 64 6c 65  20 73 65 72 76 69 63 65  |o handle service|
000830a0  73 0a 54 68 65 20 66 6f  6c 6c 6f 77 69 6e 67 20  |s.The following |
000830b0  63 6f 64 65 20 77 69 6c  6c 20 68 61 6e 64 6c 65  |code will handle|
000830c0  20 61 20 66 65 77 20 73  65 72 76 69 63 65 73 20  | a few services |
000830d0  3a 0a 23 66 43 6f 64 65  3b 54 61 62 20 66 43 6f  |:.#fCode;Tab fCo|
000830e0  64 65 2c 66 43 6f 64 65  0a 5d 3a 50 25 3d 28 50  |de,fCode.]:P%=(P|
000830f0  25 2b 31 35 29 20 41 4e  44 20 4e 4f 54 20 31 35  |%+15) AND NOT 15|
00083100  3a 4f 25 3d 28 4f 25 2b  31 35 29 20 41 4e 44 20  |:O%=(O%+15) AND |
00083110  4e 4f 54 20 31 35 3a 5b  20 4f 50 54 20 70 61 73  |NOT 15:[ OPT pas|
00083120  73 25 0a 2e 53 65 72 76  69 63 65 43 6f 64 65 0a  |s%..ServiceCode.|
00083130  20 20 09 54 45 51 09 72  31 2c 23 53 65 72 76 69  |  .TEQ.r1,#Servi|
00083140  63 65 5f 4f 6e 65 0a 09  54 45 51 4e 45 09 72 31  |ce_One..TEQNE.r1|
00083150  2c 23 53 65 72 76 69 63  65 5f 54 77 6f 0a 09 54  |,#Service_Two..T|
00083160  45 51 4e 45 09 72 31 2c  23 53 65 72 76 69 63 65  |EQNE.r1,#Service|
00083170  5f 54 68 72 65 65 0a 09  4d 4f 56 4e 45 53 09 70  |_Three..MOVNES.p|
00083180  63 2c 72 31 34 0a 09 53  54 4d 46 44 09 72 31 33  |c,r14..STMFD.r13|
00083190  21 2c 5c 7b 72 30 2d 72  33 2c 72 31 34 5c 7d 0a  |!,\{r0-r3,r14\}.|
000831a0  09 54 45 51 09 72 31 2c  23 53 65 72 76 69 63 65  |.TEQ.r1,#Service|
000831b0  5f 54 77 6f 0a 09 42 45  51 09 53 65 72 76 69 63  |_Two..BEQ.Servic|
000831c0  65 5f 54 77 6f 5f 48 61  6e 64 6c 65 72 0a 09 54  |e_Two_Handler..T|
000831d0  45 51 09 72 31 2c 23 53  65 72 76 69 63 65 5f 54  |EQ.r1,#Service_T|
000831e0  68 72 65 65 0a 09 42 45  51 09 53 65 72 76 69 63  |hree..BEQ.Servic|
000831f0  65 5f 54 68 72 65 65 5f  48 61 6e 64 6c 65 72 0a  |e_Three_Handler.|
00083200  2e 53 65 72 76 69 63 65  5f 4f 6e 65 5f 48 61 6e  |.Service_One_Han|
00083210  64 6c 65 72 0a 09 2e 2e  2e 0a 09 4c 44 4d 46 44  |dler.......LDMFD|
00083220  09 72 31 33 21 2c 5c 7b  72 30 2d 72 33 2c 70 63  |.r13!,\{r0-r3,pc|
00083230  5c 7d 5e 0a 44 41 54 41  f8 02 00 00 4d 6f 64 75  |\}^.DATA....Modu|
00083240  6c 65 20 73 74 61 72 74  20 63 6f 64 65 0a 23 50  |le start code.#P|
00083250  61 72 65 6e 74 20 4f 53  5f 4d 6f 64 75 6c 65 5f  |arent OS_Module_|
00083260  66 6f 72 6d 61 74 0a 3d  3e 09 52 30 20 3d 09 70  |format.=>.R0 =.p|
00083270  6f 69 6e 74 65 72 20 74  6f 20 63 6f 6d 6d 61 6e  |ointer to comman|
00083280  64 20 73 74 72 69 6e 67  2c 20 69 6e 63 6c 75 64  |d string, includ|
00083290  69 6e 67 20 6d 6f 64 75  6c 65 20 6e 61 6d 65 0a  |ing module name.|
000832a0  09 52 31 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |.R12 =.pointer t|
000832b0  6f 20 70 72 69 76 61 74  65 20 77 6f 72 64 20 66  |o private word f|
000832c0  6f 72 20 70 72 65 66 65  72 72 65 64 20 69 6e 73  |or preferred ins|
000832d0  74 61 6e 63 65 0a 09 52  31 34 20 3d 09 6e 6f 74  |tance..R14 =.not|
000832e0  20 61 20 72 65 74 75 72  6e 20 61 64 64 72 65 73  | a return addres|
000832f0  73 0a 3c 3d 09 73 68 6f  75 6c 64 20 6e 6f 74 20  |s.<=.should not |
00083300  72 65 74 75 72 6e 20 2d  20 63 61 6c 6c 20 3c 4f  |return - call <O|
00083310  53 5f 45 78 69 74 3e 20  6f 72 20 73 74 61 72 74  |S_Exit> or start|
00083320  20 61 6e 6f 74 68 65 72  20 61 70 70 6c 69 63 61  | another applica|
00083330  74 69 6f 6e 0a 0a 54 68  69 73 20 65 6e 74 72 79  |tion..This entry|
00083340  20 69 73 20 63 61 6c 6c  65 64 20 77 68 65 6e 20  | is called when |
00083350  73 74 61 72 74 65 64 20  75 73 69 6e 67 20 3c 4f  |started using <O|
00083360  53 5f 4d 6f 64 75 6c 65  20 32 3d 3e 4f 53 5f 4d  |S_Module 2=>OS_M|
00083370  6f 64 75 6c 65 32 3e 2e  20 49 66 20 79 6f 75 72  |odule2>. If your|
00083380  20 6d 6f 64 75 6c 65 20  69 73 20 61 20 6d 6f 64  | module is a mod|
00083390  75 6c 65 20 74 61 73 6b  20 77 68 69 63 68 20 72  |ule task which r|
000833a0  65 71 75 69 72 65 73 20  61 70 70 6c 69 63 61 74  |equires applicat|
000833b0  69 6f 6e 20 73 70 61 63  65 20 28 7b 2f 7d 65 2e  |ion space ({/}e.|
000833c0  67 2e 7b 2f 7d 20 69 74  20 69 73 20 77 72 69 74  |g.{/} it is writ|
000833d0  74 65 6e 20 69 6e 20 43  29 20 74 68 65 6e 20 79  |ten in C) then y|
000833e0  6f 75 20 6d 75 73 74 20  63 6c 61 69 6d 20 3c 53  |ou must claim <S|
000833f0  65 72 76 69 63 65 5f 4d  65 6d 6f 72 79 3d 3e 73  |ervice_Memory=>s|
00083400  65 72 76 69 63 65 5f 31  31 3e 20 74 6f 20 70 72  |ervice_11> to pr|
00083410  65 76 65 6e 74 20 74 68  65 20 57 69 6d 70 20 73  |event the Wimp s|
00083420  65 74 74 69 6e 67 20 74  68 65 20 61 70 70 6c 69  |etting the appli|
00083430  63 61 74 69 6f 6e 20 6d  65 6d 6f 72 79 20 66 6f  |cation memory fo|
00083440  72 20 79 6f 75 72 20 74  61 73 6b 20 74 6f 20 30  |r your task to 0|
00083450  2e 20 54 68 69 73 20 69  6e 73 74 61 6e 74 69 61  |. This instantia|
00083460  74 69 6f 6e 20 2a 69 73  2a 20 74 68 65 20 70 72  |tion *is* the pr|
00083470  65 66 65 72 72 65 64 20  69 6e 73 74 61 74 69 61  |eferred instatia|
00083480  74 69 6f 6e 2e 0a 0a 49  66 20 74 68 65 20 76 61  |tion...If the va|
00083490  6c 75 65 20 66 6f 72 20  73 74 61 72 74 20 63 6f  |lue for start co|
000834a0  64 65 20 64 6f 65 73 6e  27 74 20 72 65 70 72 65  |de doesn't repre|
000834b0  73 65 6e 74 20 61 20 76  61 6c 69 64 20 6e 6f 6e  |sent a valid non|
000834c0  2d 7a 65 72 6f 20 6f 66  66 73 65 74 2c 20 69 74  |-zero offset, it|
000834d0  20 69 73 20 74 61 6b 65  6e 20 74 6f 20 62 65 20  | is taken to be |
000834e0  61 20 6c 69 74 65 72 61  6c 20 41 52 4d 20 69 6e  |a literal ARM in|
000834f0  73 74 72 75 63 74 69 6f  6e 20 28 77 68 69 63 68  |struction (which|
00083500  20 68 6f 70 65 66 75 6c  6c 79 20 69 73 20 61 20  | hopefully is a |
00083510  62 72 61 6e 63 68 20 74  6f 20 74 68 65 20 72 69  |branch to the ri|
00083520  67 68 74 20 70 6c 61 63  65 29 2e 0a 44 41 54 41  |ght place)..DATA|
00083530  cf 02 00 00 4d 6f 64 75  6c 65 20 53 57 49 20 64  |....Module SWI d|
00083540  65 63 6f 64 69 6e 67 20  63 6f 64 65 0a 3d 3e 09  |ecoding code.=>.|
00083550  52 30 20 3d 09 61 6e 79  20 6e 75 6d 62 65 72 20  |R0 =.any number |
00083560  6c 65 73 73 20 74 68 61  6e 20 30 20 66 6f 72 20  |less than 0 for |
00083570  74 65 78 74 2d 3e 6e 75  6d 62 65 72 0a 09 20 09  |text->number.. .|
00083580  30 2d 36 33 20 66 6f 72  20 6e 75 6d 62 65 72 2d  |0-63 for number-|
00083590  3e 74 65 78 74 0a 09 52  31 20 3d 09 70 6f 69 6e  |>text..R1 =.poin|
000835a0  74 65 72 20 74 6f 20 63  6f 6e 74 72 6f 6c 2d 74  |ter to control-t|
000835b0  65 72 6d 69 6e 61 74 65  64 20 73 74 72 69 6e 67  |erminated string|
000835c0  20 66 6f 72 20 74 65 78  74 2d 3e 6e 75 6d 62 65  | for text->numbe|
000835d0  72 0a 09 20 09 70 6f 69  6e 74 65 72 20 74 6f 20  |r.. .pointer to |
000835e0  6f 75 74 70 75 74 20 62  75 66 66 65 72 20 66 6f  |output buffer fo|
000835f0  72 20 6e 75 6d 62 65 72  2d 3e 74 65 78 74 0a 09  |r number->text..|
00083600  52 32 20 3d 09 6f 66 66  73 65 74 20 77 69 74 68  |R2 =.offset with|
00083610  69 6e 20 6f 75 74 70 75  74 20 62 75 66 66 65 72  |in output buffer|
00083620  20 74 6f 20 70 6c 61 63  65 20 74 68 65 20 74 65  | to place the te|
00083630  78 74 20 61 74 20 66 6f  72 20 6e 75 6d 62 65 72  |xt at for number|
00083640  2d 3e 74 65 78 74 0a 09  52 33 20 3d 09 73 69 7a  |->text..R3 =.siz|
00083650  65 20 6f 66 20 62 75 66  66 65 72 20 66 6f 72 20  |e of buffer for |
00083660  6e 75 6d 62 65 72 2d 3e  74 65 78 74 0a 09 52 31  |number->text..R1|
00083670  32 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 70  |2 =.pointer to p|
00083680  72 69 76 61 74 65 20 77  6f 72 64 0a 09 52 31 33  |rivate word..R13|
00083690  20 3d 09 53 75 70 65 72  76 69 73 6f 72 20 73 74  | =.Supervisor st|
000836a0  61 63 6b 0a 09 52 31 34  20 3d 09 52 65 74 75 72  |ack..R14 =.Retur|
000836b0  6e 20 61 64 64 72 65 73  73 0a 0a 3c 3d 09 52 30  |n address..<=.R0|
000836c0  20 3d 09 53 57 49 20 6e  75 6d 62 65 72 20 41 4e  | =.SWI number AN|
000836d0  44 20 36 33 20 69 66 20  53 57 49 20 72 65 63 6f  |D 63 if SWI reco|
000836e0  67 6e 69 73 65 64 2c 20  5c 3c 30 20 6f 74 68 65  |gnised, \<0 othe|
000836f0  72 77 69 73 65 20 66 6f  72 20 74 65 78 74 2d 3e  |rwise for text->|
00083700  6e 75 6d 62 65 72 0a 09  52 32 20 3d 09 6c 65 6e  |number..R2 =.len|
00083710  67 74 68 20 6f 66 20 74  65 78 74 2c 20 66 6f 72  |gth of text, for|
00083720  20 6e 75 6d 62 65 72 2d  3e 74 65 78 74 20 28 52  | number->text (R|
00083730  49 53 43 20 4f 53 20 77  69 6c 6c 20 77 72 69 74  |ISC OS will writ|
00083740  65 20 22 5c 5c 30 22 20  68 65 72 65 29 0a 09 75  |e "\\0" here)..u|
00083750  6e 75 73 65 64 20 72 65  67 69 73 74 65 72 73 20  |nused registers |
00083760  73 68 6f 75 6c 64 20 62  65 20 70 72 65 73 65 72  |should be preser|
00083770  76 65 64 0a 0a 54 68 69  73 20 65 6e 74 72 79 20  |ved..This entry |
00083780  69 73 20 75 73 65 64 20  61 73 20 61 20 61 6c 74  |is used as a alt|
00083790  65 72 6e 61 74 69 76 65  20 6d 65 74 68 6f 64 20  |ernative method |
000837a0  6f 66 20 66 69 6e 64 69  6e 67 20 53 57 49 20 6e  |of finding SWI n|
000837b0  75 6d 62 65 72 73 20 66  72 6f 6d 20 6e 61 6d 65  |umbers from name|
000837c0  73 20 61 6e 64 20 76 69  63 65 20 76 65 72 73 61  |s and vice versa|
000837d0  2e 20 54 68 69 73 20 63  6f 64 65 20 64 6f 65 73  |. This code does|
000837e0  20 6e 6f 74 20 6e 65 65  64 20 74 6f 20 62 65 20  | not need to be |
000837f0  72 65 2d 65 6e 74 72 61  6e 74 2e 00 44 41 54 41  |re-entrant..DATA|
00083800  1f 04 00 00 4d 6f 64 75  6c 65 20 53 57 49 20 68  |....Module SWI h|
00083810  61 6e 64 6c 65 72 20 63  6f 64 65 0a 23 50 61 72  |andler code.#Par|
00083820  65 6e 74 20 21 52 6f 6f  74 0a 3d 3e 09 52 30 2d  |ent !Root.=>.R0-|
00083830  52 39 20 3d 20 09 70 61  73 73 65 64 20 66 72 6f  |R9 = .passed fro|
00083840  6d 20 74 68 65 20 63 61  6c 6c 65 72 20 6f 66 20  |m the caller of |
00083850  74 68 65 20 53 57 49 0a  09 52 31 31 20 3d 09 53  |the SWI..R11 =.S|
00083860  57 49 20 6e 75 6d 62 65  72 20 2d 20 62 61 73 65  |WI number - base|
00083870  20 6e 75 6d 62 65 72 20  28 69 65 20 53 57 49 4e  | number (ie SWIN|
00083880  75 6d 62 65 72 20 41 4e  44 20 36 33 29 0a 09 52  |umber AND 63)..R|
00083890  31 32 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |12 =.pointer to |
000838a0  70 72 69 76 61 74 65 20  77 6f 72 64 0a 09 52 31  |private word..R1|
000838b0  33 20 3d 09 73 75 70 65  72 76 69 73 6f 72 20 73  |3 =.supervisor s|
000838c0  74 61 63 6b 20 70 6f 69  6e 74 65 72 0a 09 52 31  |tack pointer..R1|
000838d0  34 20 3d 09 72 65 74 75  72 6e 20 61 64 64 72 65  |4 =.return addre|
000838e0  73 73 20 28 69 6e 63 6c  75 64 69 6e 67 20 66 6c  |ss (including fl|
000838f0  61 67 73 20 61 6e 64 20  70 72 6f 63 65 73 73 6f  |ags and processo|
00083900  72 20 6d 6f 64 65 29 0a  0a 3c 3d 09 52 30 2d 52  |r mode)..<=.R0-R|
00083910  39 20 72 65 74 75 72 6e  65 64 20 74 6f 20 74 68  |9 returned to th|
00083920  65 20 63 61 6c 6c 65 72  20 6f 66 20 74 68 65 20  |e caller of the |
00083930  53 57 49 0a 09 52 31 30  2d 52 31 32 20 6d 61 79  |SWI..R10-R12 may|
00083940  20 62 65 20 63 6f 72 72  75 70 74 65 64 0a 0a 54  | be corrupted..T|
00083950  68 69 73 20 65 6e 74 72  79 20 69 73 20 63 61 6c  |his entry is cal|
00083960  6c 65 64 20 77 68 65 6e  20 61 20 53 57 49 20 69  |led when a SWI i|
00083970  6e 20 79 6f 75 72 20 6d  6f 64 75 6c 65 27 73 20  |n your module's |
00083980  53 57 49 20 63 68 75 6e  6b 20 69 73 20 63 61 6c  |SWI chunk is cal|
00083990  6c 65 64 2e 20 53 57 49  20 6e 75 6d 62 65 72 73  |led. SWI numbers|
000839a0  20 6f 75 74 73 69 64 65  20 74 68 6f 73 65 20 73  | outside those s|
000839b0  75 70 70 6f 72 74 65 64  20 62 79 20 79 6f 75 72  |upported by your|
000839c0  20 6d 6f 64 75 6c 65 20  73 68 6f 75 6c 64 20 63  | module should c|
000839d0  61 75 73 65 20 61 6e 20  65 72 72 6f 72 20 74 6f  |ause an error to|
000839e0  20 62 65 20 72 65 74 75  72 6e 65 64 2c 20 61 73  | be returned, as|
000839f0  20 69 6e 20 3c 74 68 69  73 20 65 78 61 6d 70 6c  | in <this exampl|
00083a00  65 20 68 61 6e 64 6c 65  72 3d 3e 2e 65 78 61 6d  |e handler=>.exam|
00083a10  70 6c 65 3e 2e 0a 23 53  75 62 70 61 67 65 20 65  |ple>..#Subpage e|
00083a20  78 61 6d 70 6c 65 0a 45  78 61 6d 70 6c 65 20 63  |xample.Example c|
00083a30  6f 64 65 20 66 6f 72 20  53 57 49 20 68 61 6e 64  |ode for SWI hand|
00083a40  6c 65 72 73 0a 52 65 63  6f 6d 6d 65 6e 64 65 64  |lers.Recommended|
00083a50  20 63 6f 64 65 20 74 6f  20 69 6d 70 6c 65 6d 65  | code to impleme|
00083a60  6e 74 20 6d 75 6c 74 69  70 6c 65 20 53 57 49 73  |nt multiple SWIs|
00083a70  20 3a 0a 0a 23 66 43 6f  64 65 3b 54 61 62 20 66  | :..#fCode;Tab f|
00083a80  43 6f 64 65 2c 66 43 6f  64 65 0a 2e 53 57 49 48  |Code,fCode..SWIH|
00083a90  61 6e 64 6c 65 72 0a 20  20 09 4c 44 52 09 72 31  |andler.  .LDR.r1|
00083aa0  32 2c 5b 72 31 32 5d 0a  09 43 4d 50 09 72 31 31  |2,[r12]..CMP.r11|
00083ab0  2c 23 28 4a 75 6d 70 54  61 62 6c 65 45 6e 64 2d  |,#(JumpTableEnd-|
00083ac0  4a 75 6d 70 54 61 62 6c  65 29 2f 34 0a 09 41 44  |JumpTable)/4..AD|
00083ad0  44 4c 54 09 70 63 2c 70  63 2c 72 31 31 2c 4c 53  |DLT.pc,pc,r11,LS|
00083ae0  4c 20 23 32 0a 09 42 09  45 72 72 6f 72 5f 55 6e  |L #2..B.Error_Un|
00083af0  6b 6e 6f 77 6e 53 57 49  0a 2e 4a 75 6d 70 54 61  |knownSWI..JumpTa|
00083b00  62 6c 65 0a 09 42 09 53  57 49 43 6f 64 65 5f 5a  |ble..B.SWICode_Z|
00083b10  65 72 6f 0a 09 42 09 53  57 49 43 6f 64 65 5f 4f  |ero..B.SWICode_O|
00083b20  6e 65 0a 09 2e 2e 2e 0a  2e 4a 75 6d 70 54 61 62  |ne.......JumpTab|
00083b30  6c 65 5f 45 6e 64 0a 0a  2e 45 72 72 6f 72 5f 55  |le_End...Error_U|
00083b40  6e 6b 6e 6f 77 6e 53 57  49 0a 09 41 44 52 09 72  |nknownSWI..ADR.r|
00083b50  30 2c 45 42 6c 6f 63 6b  5f 55 6e 6b 6e 6f 77 6e  |0,EBlock_Unknown|
00083b60  53 57 49 0a 09 4d 4f 56  09 72 31 2c 23 30 0a 09  |SWI..MOV.r1,#0..|
00083b70  4d 4f 56 09 72 32 2c 23  30 0a 09 41 44 52 09 72  |MOV.r2,#0..ADR.r|
00083b80  34 2c 4d 6f 64 75 6c 65  5f 54 69 74 6c 65 0a 09  |4,Module_Title..|
00083b90  53 57 49 09 22 3c 58 4d  65 73 73 61 67 65 54 72  |SWI."<XMessageTr|
00083ba0  61 6e 73 5f 45 72 72 6f  72 4c 6f 6f 6b 75 70 3d  |ans_ErrorLookup=|
00083bb0  3e 4d 65 73 73 61 67 65  54 72 61 6e 73 5f 45 72  |>MessageTrans_Er|
00083bc0  72 6f 72 4c 6f 6f 6b 75  70 3e 22 0a 09 4f 52 52  |rorLookup>"..ORR|
00083bd0  53 09 70 63 2c 72 31 34  2c 23 31 3c 3c 32 38 0a  |S.pc,r14,#1<<28.|
00083be0  0a 2e 45 42 6c 6f 63 6b  5f 55 6e 6b 6e 6f 77 6e  |..EBlock_Unknown|
00083bf0  53 57 49 0a 09 45 51 55  44 09 31 3c 3c 36 0a 09  |SWI..EQUD.1<<6..|
00083c00  45 51 55 53 09 22 42 61  64 53 57 49 22 2b 43 48  |EQUS."BadSWI"+CH|
00083c10  52 24 30 0a 09 41 4c 49  47 4e 0a 00 44 41 54 41  |R$0..ALIGN..DATA|
00083c20  0e 02 00 00 4d 6f 64 75  6c 65 20 53 57 49 20 64  |....Module SWI d|
00083c30  65 63 6f 64 69 6e 67 20  74 61 62 6c 65 0a 23 50  |ecoding table.#P|
00083c40  61 72 65 6e 74 20 4f 53  5f 4d 6f 64 75 6c 65 5f  |arent OS_Module_|
00083c50  66 6f 72 6d 61 74 0a 54  68 69 73 20 69 73 20 74  |format.This is t|
00083c60  68 65 20 6e 6f 72 6d 61  6c 20 6d 65 74 68 6f 64  |he normal method|
00083c70  20 75 73 65 64 20 74 6f  20 70 72 6f 76 69 64 65  | used to provide|
00083c80  20 6e 61 6d 65 73 20 66  6f 72 20 53 57 49 73 2e  | names for SWIs.|
00083c90  20 49 74 20 61 6c 6c 6f  77 73 20 52 49 53 43 20  | It allows RISC |
00083ca0  4f 53 20 74 6f 20 63 6f  6e 76 65 72 74 20 53 57  |OS to convert SW|
00083cb0  49 20 6e 75 6d 62 65 72  20 74 6f 20 6e 61 6d 65  |I number to name|
00083cc0  73 2c 20 61 6e 64 20 76  69 63 65 20 76 65 72 73  |s, and vice vers|
00083cd0  61 2e 20 54 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |a. The following|
00083ce0  20 69 73 20 61 6e 20 61  73 73 65 6d 62 6c 65 72  | is an assembler|
00083cf0  20 64 65 73 63 72 69 70  74 69 6f 6e 20 6f 66 20  | description of |
00083d00  61 20 74 79 70 69 63 61  6c 20 53 57 49 20 64 65  |a typical SWI de|
00083d10  63 6f 64 69 6e 67 20 74  61 62 6c 65 3a 0a 0a 23  |coding table:..#|
00083d20  69 6e 64 65 6e 74 20 32  3b 74 61 62 20 66 43 6f  |indent 2;tab fCo|
00083d30  64 65 2c 66 43 6f 64 65  2c 66 43 6f 64 65 0a 20  |de,fCode,fCode. |
00083d40  09 45 51 55 53 09 22 53  71 75 61 73 68 22 2b 43  |.EQUS."Squash"+C|
00083d50  48 52 24 30 0a 09 45 51  55 53 09 22 43 6f 6d 70  |HR$0..EQUS."Comp|
00083d60  72 65 73 73 22 2b 43 48  52 24 30 0a 09 45 51 55  |ress"+CHR$0..EQU|
00083d70  53 09 22 44 65 63 6f 6d  70 72 65 73 73 22 2b 43  |S."Decompress"+C|
00083d80  48 52 24 30 0a 09 45 51  55 42 09 30 0a 09 41 4c  |HR$0..EQUB.0..AL|
00083d90  49 47 4e 0a 23 69 6e 64  65 6e 74 0a 0a 54 68 69  |IGN.#indent..Thi|
00083da0  73 20 64 65 66 69 6e 65  73 20 74 77 6f 20 53 57  |s defines two SW|
00083db0  49 73 2c 20 6e 61 6d 65  64 20 27 3c 53 71 75 61  |Is, named '<Squa|
00083dc0  73 68 5f 43 6f 6d 70 72  65 73 73 3e 27 20 61 6e  |sh_Compress>' an|
00083dd0  64 20 27 3c 53 71 75 61  73 68 5f 44 65 63 6f 6d  |d '<Squash_Decom|
00083de0  70 72 65 73 73 3e 27 2e  20 20 54 68 65 79 20 61  |press>'.  They a|
00083df0  72 65 20 61 73 73 69 67  6e 65 64 20 76 61 6c 75  |re assigned valu|
00083e00  65 73 20 6f 66 20 5c 3c  53 57 49 20 63 68 75 6e  |es of \<SWI chun|
00083e10  6b 5c 3e 2b 30 20 61 6e  64 20 5c 3c 53 57 49 20  |k\>+0 and \<SWI |
00083e20  63 68 75 6e 6b 5c 3e 2b  31 2e 00 00 44 41 54 41  |chunk\>+1...DATA|
00083e30  af 02 00 00 4d 6f 64 75  6c 65 20 63 6f 6d 6d 61  |....Module comma|
00083e40  6e 64 20 74 61 62 6c 65  0a 23 50 61 72 65 6e 74  |nd table.#Parent|
00083e50  20 4f 53 5f 4d 6f 64 75  6c 65 5f 66 6f 72 6d 61  | OS_Module_forma|
00083e60  74 0a 2b 30 09 43 6f 6d  6d 61 6e 64 2c 20 7a 65  |t.+0.Command, ze|
00083e70  72 6f 20 74 65 72 6d 69  6e 61 74 65 64 2c 20 61  |ro terminated, a|
00083e80  6c 69 67 6e 65 64 20 61  66 74 65 72 0a 2b 78 09  |ligned after.+x.|
00083e90  3c 43 6f 64 65 20 6f 66  66 73 65 74 3d 3e 4f 53  |<Code offset=>OS|
00083ea0  5f 4d 6f 64 75 6c 65 5f  43 6f 6d 43 6f 64 65 3e  |_Module_ComCode>|
00083eb0  2c 20 6f 72 20 30 20 66  6f 72 20 6e 6f 6e 65 0a  |, or 0 for none.|
00083ec0  2b 78 2b 34 09 3c 49 6e  66 6f 72 6d 61 74 69 6f  |+x+4.<Informatio|
00083ed0  6e 20 77 6f 72 64 3d 3e  4f 53 5f 4d 6f 64 75 6c  |n word=>OS_Modul|
00083ee0  65 5f 43 6f 6d 46 6c 61  67 73 3e 0a 2b 78 2b 38  |e_ComFlags>.+x+8|
00083ef0  09 53 79 6e 74 61 78 20  6d 65 73 73 61 67 65 20  |.Syntax message |
00083f00  6f 66 66 73 65 74 2c 20  6f 72 20 30 20 66 6f 72  |offset, or 0 for|
00083f10  20 64 65 66 61 75 6c 74  0a 2b 78 2b 31 32 09 48  | default.+x+12.H|
00083f20  65 6c 70 20 6f 66 66 73  65 74 2c 20 6f 72 20 30  |elp offset, or 0|
00083f30  20 66 6f 72 20 6e 6f 6e  65 2e 20 48 65 6c 70 20  | for none. Help |
00083f40  74 65 78 74 2c 20 75 6e  6c 65 73 73 20 62 69 74  |text, unless bit|
00083f50  20 32 39 20 6f 66 20 74  68 65 20 69 6e 66 6f 6d  | 29 of the infom|
00083f60  61 74 69 6f 6e 20 77 6f  72 64 20 69 73 20 73 65  |ation word is se|
00083f70  74 2e 0a 0a 4e 6f 74 65  20 74 68 61 74 20 74 68  |t...Note that th|
00083f80  65 20 6e 61 6d 65 20 6f  66 20 66 69 72 73 74 20  |e name of first |
00083f90  63 6f 6d 6d 61 6e 64 20  69 6e 20 74 68 65 20 63  |command in the c|
00083fa0  6f 6d 6d 61 6e 64 20 74  61 62 6c 65 20 6e 65 65  |ommand table nee|
00083fb0  64 20 6e 6f 74 20 62 65  20 77 6f 72 64 20 61 6c  |d not be word al|
00083fc0  69 67 6e 65 64 2e 20 54  68 65 20 73 79 6e 74 61  |igned. The synta|
00083fd0  78 20 61 6e 64 20 68 65  6c 70 20 6d 65 73 73 61  |x and help messa|
00083fe0  67 65 73 20 61 72 65 20  70 72 69 6e 74 65 64 20  |ges are printed |
00083ff0  75 73 69 6e 67 20 3c 4f  53 5f 50 72 65 74 74 79  |using <OS_Pretty|
00084000  50 72 69 6e 74 3e 2e 20  54 68 65 20 73 79 6e 74  |Print>. The synt|
00084010  61 78 20 6d 65 73 73 61  67 65 20 69 73 20 70 72  |ax message is pr|
00084020  69 6e 74 65 64 20 69 66  20 4f 53 43 4c 49 20 64  |inted if OSCLI d|
00084030  65 74 65 63 74 73 20 74  68 61 74 20 74 68 65 20  |etects that the |
00084040  70 61 72 61 6d 65 74 65  72 73 20 61 72 65 20 6f  |parameters are o|
00084050  75 74 20 6f 66 20 72 61  6e 67 65 2e 20 54 68 65  |ut of range. The|
00084060  20 64 65 66 61 75 6c 74  20 69 73 20 27 49 6e 76  | default is 'Inv|
00084070  61 6c 69 64 20 6e 75 6d  62 65 72 20 6f 66 20 70  |alid number of p|
00084080  61 72 61 6d 65 74 65 72  73 27 20 2d 20 3c 53 65  |arameters' - <Se|
00084090  72 76 69 63 65 5f 53 79  6e 74 61 78 45 72 72 6f  |rvice_SyntaxErro|
000840a0  72 3d 3e 53 65 72 76 69  63 65 5f 38 43 3e 20 69  |r=>Service_8C> i|
000840b0  73 20 67 65 6e 65 72 61  74 65 64 20 62 65 66 6f  |s generated befo|
000840c0  72 65 20 61 6e 79 20 6d  65 73 73 61 67 65 20 69  |re any message i|
000840d0  73 20 70 72 69 6e 74 65  64 2e 0a 00 44 41 54 41  |s printed...DATA|
000840e0  33 04 00 00 43 6f 6d 6d  61 6e 64 20 63 6f 64 65  |3...Command code|
000840f0  20 65 6e 74 72 79 0a 23  50 61 72 65 6e 74 20 4f  | entry.#Parent O|
00084100  53 5f 4d 6f 64 75 6c 65  5f 43 6f 6d 54 61 62 6c  |S_Module_ComTabl|
00084110  65 0a 46 6f 72 20 61 20  63 6f 6e 76 65 6e 74 69  |e.For a conventi|
00084120  6f 6e 61 6c 20 63 6f 6d  6d 61 6e 64 20 28 3c 49  |onal command (<I|
00084130  6e 66 6f 72 6d 61 74 69  6f 6e 20 77 6f 72 64 3d  |nformation word=|
00084140  3e 4f 53 5f 4d 6f 64 75  6c 65 5f 43 6f 6d 46 6c  |>OS_Module_ComFl|
00084150  61 67 73 3e 20 62 69 74  20 33 30 20 63 6c 65 61  |ags> bit 30 clea|
00084160  72 29 0a 0a 3d 3e 09 52  30 20 3d 09 70 6f 69 6e  |r)..=>.R0 =.poin|
00084170  74 65 72 20 74 6f 20 63  6f 6d 6d 61 6e 64 20 74  |ter to command t|
00084180  61 69 6c 0a 09 52 31 20  3d 09 6e 75 6d 62 65 72  |ail..R1 =.number|
00084190  20 6f 66 20 70 61 72 61  6d 65 74 65 72 73 0a 09  | of parameters..|
000841a0  52 31 32 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |R12 =.pointer to|
000841b0  20 70 72 69 76 61 74 65  20 77 6f 72 64 20 66 6f  | private word fo|
000841c0  72 20 74 68 69 73 20 69  6e 73 74 61 6e 63 65 0a  |r this instance.|
000841d0  09 52 31 33 20 3d 09 73  75 70 65 72 76 69 73 6f  |.R13 =.superviso|
000841e0  72 20 73 74 61 63 6b 20  70 6f 69 6e 74 65 72 0a  |r stack pointer.|
000841f0  09 52 31 34 20 3d 09 72  65 74 75 72 6e 20 61 64  |.R14 =.return ad|
00084200  64 72 65 73 73 0a 0a 3c  3d 09 52 30 20 3d 09 65  |dress..<=.R0 =.e|
00084210  72 72 6f 72 20 70 6f 69  6e 74 65 72 2c 20 69 66  |rror pointer, if|
00084220  20 56 20 73 65 74 0a 09  52 37 2d 52 31 31 20 70  | V set..R7-R11 p|
00084230  72 65 73 65 72 76 65 64  0a 0a 4f 53 43 4c 49 20  |reserved..OSCLI |
00084240  63 6f 75 6e 74 73 20 73  70 61 63 65 73 20 61 73  |counts spaces as|
00084250  20 64 65 6c 69 6d 69 74  69 6e 67 20 70 61 72 61  | delimiting para|
00084260  6d 65 74 65 72 73 2c 20  65 78 63 65 70 74 20 77  |meters, except w|
00084270  68 65 6e 20 74 68 65 79  20 6f 63 63 75 72 20 77  |hen they occur w|
00084280  69 74 68 69 6e 20 64 6f  75 62 6c 65 20 71 75 6f  |ithin double quo|
00084290  74 65 64 20 73 74 72 69  6e 67 73 2e 0a 0a 46 6f  |ted strings...Fo|
000842a0  72 20 61 20 63 6f 6e 66  69 67 75 72 61 74 69 6f  |r a configuratio|
000842b0  6e 20 63 6f 6d 6d 61 6e  64 20 28 3c 49 6e 66 6f  |n command (<Info|
000842c0  72 6d 61 74 69 6f 6e 20  77 6f 72 64 3d 3e 4f 53  |rmation word=>OS|
000842d0  5f 4d 6f 64 75 6c 65 5f  43 6f 6d 46 6c 61 67 73  |_Module_ComFlags|
000842e0  3e 20 62 69 74 20 33 30  20 73 65 74 29 0a 0a 3d  |> bit 30 set)..=|
000842f0  3e 09 52 30 20 3d 09 30  09 7b 66 43 6f 64 65 7d  |>.R0 =.0.{fCode}|
00084300  2a 43 6f 6e 66 69 67 75  72 65 7b 66 7d 20 77 69  |*Configure{f} wi|
00084310  74 68 20 6e 6f 20 6f 70  74 69 6f 6e 73 20 2d 20  |th no options - |
00084320  70 72 69 6e 74 20 79 6f  75 72 20 73 79 6e 74 61  |print your synta|
00084330  78 20 73 74 72 69 6e 67  0a 09 20 09 31 09 7b 66  |x string.. .1.{f|
00084340  43 6f 64 65 7d 2a 53 74  61 74 75 73 20 7b 2f 7d  |Code}*Status {/}|
00084350  6f 70 74 69 6f 6e 7b 2f  7d 7b 66 7d 20 2d 20 70  |option{/}{f} - p|
00084360  72 69 6e 74 20 74 68 65  20 73 74 61 74 75 73 20  |rint the status |
00084370  6f 66 20 79 6f 75 72 20  6f 70 74 69 6f 6e 0a 09  |of your option..|
00084380  20 09 6f 74 68 65 72 09  70 6f 69 6e 74 65 72 20  | .other.pointer |
00084390  74 6f 20 63 6f 6d 6d 61  6e 64 20 74 61 69 6c 0a  |to command tail.|
000843a0  0a 49 66 20 61 6e 20 65  72 72 6f 72 20 6f 63 63  |.If an error occ|
000843b0  75 72 73 2c 20 61 20 63  6f 6e 66 69 67 75 72 61  |urs, a configura|
000843c0  74 69 6f 6e 20 63 6f 6d  6d 61 6e 64 20 6d 61 79  |tion command may|
000843d0  20 72 65 74 75 72 6e 20  61 20 3c 73 70 65 63 69  | return a <speci|
000843e0  61 6c 20 65 72 72 6f 72  20 63 6f 64 65 3d 3e 2e  |al error code=>.|
000843f0  65 72 72 6f 72 73 3e 20  6f 72 20 61 20 70 6f 69  |errors> or a poi|
00084400  6e 74 65 72 20 74 6f 20  63 6f 6e 76 65 6e 74 69  |nter to conventi|
00084410  6f 6e 61 6c 20 3c 65 72  72 6f 72 20 62 6c 6f 63  |onal <error bloc|
00084420  6b 3d 3e 73 77 69 5f 65  72 72 6f 72 62 6c 6f 63  |k=>swi_errorbloc|
00084430  6b 3e 2e 0a 23 73 75 62  70 61 67 65 20 65 72 72  |k>..#subpage err|
00084440  6f 72 73 0a 43 6f 6e 66  69 67 75 72 61 74 69 6f  |ors.Configuratio|
00084450  6e 20 63 6f 6d 6d 61 6e  64 20 65 72 72 6f 72 20  |n command error |
00084460  63 6f 64 65 73 0a 43 6f  64 65 09 4d 65 61 6e 69  |codes.Code.Meani|
00084470  6e 67 0a 23 4c 69 6e 65  0a 30 09 42 61 64 20 7b  |ng.#Line.0.Bad {|
00084480  66 43 6f 64 65 7d 2a 43  6f 6e 66 69 67 75 72 65  |fCode}*Configure|
00084490  7b 66 7d 20 6f 70 74 69  6f 6e 0a 31 09 4e 75 6d  |{f} option.1.Num|
000844a0  65 72 69 63 20 70 61 72  61 6d 65 74 65 72 20 6e  |eric parameter n|
000844b0  65 65 64 65 64 0a 32 09  50 61 72 61 6d 65 74 65  |eeded.2.Paramete|
000844c0  72 20 74 6f 6f 20 6c 61  72 67 65 0a 33 09 54 6f  |r too large.3.To|
000844d0  6f 20 6d 61 6e 79 20 70  61 72 61 6d 65 74 65 72  |o many parameter|
000844e0  73 0a 5c 3e 33 09 70 6f  69 6e 74 65 72 20 74 6f  |s.\>3.pointer to|
000844f0  20 3c 65 72 72 6f 72 20  62 6c 6f 63 6b 3d 3e 73  | <error block=>s|
00084500  77 69 5f 65 72 72 6f 72  62 6c 6f 63 6b 3e 0a 00  |wi_errorblock>..|
00084510  44 41 54 41 51 02 00 00  4d 6f 64 75 6c 65 20 63  |DATAQ...Module c|
00084520  6f 6d 6d 61 6e 64 20 66  6c 61 67 73 0a 23 50 61  |ommand flags.#Pa|
00084530  72 65 6e 74 20 4f 53 5f  4d 6f 64 75 6c 65 5f 43  |rent OS_Module_C|
00084540  6f 6d 54 61 62 6c 65 0a  42 69 74 73 09 43 6f 6e  |omTable.Bits.Con|
00084550  74 65 6e 74 73 0a 23 4c  69 6e 65 0a 30 2d 37 09  |tents.#Line.0-7.|
00084560  4d 69 6e 69 6d 75 6d 20  6e 75 6d 62 65 72 20 6f  |Minimum number o|
00084570  66 20 70 61 72 61 6d 65  74 65 72 73 0a 38 2d 31  |f parameters.8-1|
00084580  35 09 47 53 54 72 61 6e  73 20 6d 61 70 20 66 6f  |5.GSTrans map fo|
00084590  72 20 66 69 72 73 74 20  38 20 70 61 72 61 6d 65  |r first 8 parame|
000845a0  74 65 72 73 20 28 69 66  20 62 69 74 20 69 73 20  |ters (if bit is |
000845b0  31 20 70 61 72 61 6d 65  74 65 72 20 77 69 6c 6c  |1 parameter will|
000845c0  20 62 65 20 70 61 73 73  65 64 20 74 68 72 6f 75  | be passed throu|
000845d0  67 68 20 47 53 54 72 61  6e 73 29 0a 31 36 2d 32  |gh GSTrans).16-2|
000845e0  33 09 4d 61 78 69 6d 75  6d 20 6e 75 6d 62 65 72  |3.Maximum number|
000845f0  20 6f 66 20 70 61 72 61  6d 65 74 65 72 73 0a 32  | of parameters.2|
00084600  34 2d 32 37 09 72 65 73  65 72 76 65 64 2c 20 73  |4-27.reserved, s|
00084610  68 6f 75 6c 64 20 62 65  20 7a 65 72 6f 0a 32 38  |hould be zero.28|
00084620  09 48 65 6c 70 20 61 6e  64 20 53 79 6e 74 61 78  |.Help and Syntax|
00084630  20 74 65 78 74 20 73 68  6f 75 6c 64 20 62 65 20  | text should be |
00084640  6c 6f 6f 6b 65 64 20 75  70 20 61 73 20 74 6f 6b  |looked up as tok|
00084650  65 6e 73 20 69 6e 20 74  68 65 20 4d 65 73 73 61  |ens in the Messa|
00084660  67 65 73 20 66 69 6c 65  0a 32 39 09 48 65 6c 70  |ges file.29.Help|
00084670  20 6f 66 66 73 65 74 20  69 73 20 3c 63 6f 64 65  | offset is <code|
00084680  20 74 6f 20 63 61 6c 6c  3d 3e 4f 53 5f 4d 6f 64  | to call=>OS_Mod|
00084690  75 6c 65 5f 43 6f 6d 48  65 6c 70 43 6f 64 65 3e  |ule_ComHelpCode>|
000846a0  20 74 6f 20 72 65 74 75  72 6e 20 68 65 6c 70 20  | to return help |
000846b0  74 65 78 74 0a 33 30 09  43 6f 6d 6d 61 6e 64 20  |text.30.Command |
000846c0  69 73 20 61 20 63 6f 6e  66 69 67 75 72 61 74 69  |is a configurati|
000846d0  6f 6e 20 6f 70 74 69 6f  6e 20 28 77 69 6c 6c 20  |on option (will |
000846e0  62 65 20 6d 61 74 63 68  65 64 20 69 6e 20 2a 53  |be matched in *S|
000846f0  74 61 74 75 73 20 61 6e  64 20 2a 43 6f 6e 66 69  |tatus and *Confi|
00084700  67 75 72 65 20 70 61 72  61 6d 65 74 65 72 73 29  |gure parameters)|
00084710  0a 33 31 09 43 6f 6d 6d  61 6e 64 20 69 73 20 61  |.31.Command is a|
00084720  20 66 69 6c 69 6e 67 20  73 79 73 74 65 6d 20 63  | filing system c|
00084730  6f 6d 6d 61 6e 64 20 28  77 69 6c 6c 20 62 65 20  |ommand (will be |
00084740  6d 61 74 63 68 65 64 20  61 66 74 65 72 20 27 6e  |matched after 'n|
00084750  6f 72 6d 61 6c 27 20 63  6f 6d 6d 61 6e 64 73 29  |ormal' commands)|
00084760  0a 00 00 00 44 41 54 41  73 02 00 00 4d 6f 64 75  |....DATAs...Modu|
00084770  6c 65 20 68 65 6c 70 20  73 74 72 69 6e 67 0a 23  |le help string.#|
00084780  50 61 72 65 6e 74 20 4f  53 5f 4d 6f 64 75 6c 65  |Parent OS_Module|
00084790  5f 66 6f 72 6d 61 74 0a  54 68 69 73 20 73 68 6f  |_format.This sho|
000847a0  75 6c 64 20 62 65 20 69  6e 20 74 68 65 20 66 6f  |uld be in the fo|
000847b0  72 6d 61 74 20 3a 0a 0a  23 57 72 61 70 20 6f 66  |rmat :..#Wrap of|
000847c0  66 3b 49 6e 64 65 6e 74  20 32 0a 7b 2f 7d 4d 6f  |f;Indent 2.{/}Mo|
000847d0  64 75 6c 65 20 6e 61 6d  65 7b 2f 7d 09 76 2e 76  |dule name{/}.v.v|
000847e0  76 20 28 44 44 20 4d 4d  4d 20 59 59 59 59 29 0a  |v (DD MMM YYYY).|
000847f0  23 69 6e 64 65 6e 74 0a  6f 72 0a 23 69 6e 64 65  |#indent.or.#inde|
00084800  6e 74 20 32 0a 7b 2f 7d  4d 6f 64 75 6c 65 20 6e  |nt 2.{/}Module n|
00084810  61 6d 65 7b 2f 7d 09 76  2e 76 76 20 28 44 44 20  |ame{/}.v.vv (DD |
00084820  4d 4d 4d 20 59 59 59 59  29 20 7b 2f 7d 4d 65 73  |MMM YYYY) {/}Mes|
00084830  73 61 67 65 7b 2f 7d 0a  23 57 72 61 70 3b 69 6e  |sage{/}.#Wrap;in|
00084840  64 65 6e 74 0a 0a 77 68  65 72 65 20 2f 4d 6f 64  |dent..where /Mod|
00084850  75 6c 65 20 6e 61 6d 65  2f 20 6d 61 79 20 63 6f  |ule name/ may co|
00084860  6e 74 61 69 6e 20 73 70  61 63 65 73 2c 20 61 6e  |ntain spaces, an|
00084870  64 20 69 73 20 66 6f 6c  6c 6f 77 65 64 20 62 79  |d is followed by|
00084880  20 6f 6e 65 20 6f 72 20  74 77 6f 20 74 61 62 73  | one or two tabs|
00084890  20 74 6f 20 61 6c 69 67  6e 20 74 68 65 20 76 65  | to align the ve|
000848a0  72 73 69 6f 6e 20 6e 75  6d 62 65 72 20 74 6f 20  |rsion number to |
000848b0  63 6f 6c 75 6d 6e 20 31  36 2e 0a 0a 2f 4d 65 73  |column 16.../Mes|
000848c0  73 61 67 65 2f 20 69 73  20 75 73 75 61 6c 6c 79  |sage/ is usually|
000848d0  20 6f 66 20 74 68 65 20  66 6f 72 6d 20 3a 0a 0a  | of the form :..|
000848e0  23 69 6e 64 65 6e 74 20  32 0a 2f 73 75 62 73 65  |#indent 2./subse|
000848f0  74 2f 0a 23 69 6e 64 65  6e 74 0a 6f 72 0a 23 69  |t/.#indent.or.#i|
00084900  6e 64 65 6e 74 20 32 0a  a9 a0 2f 41 75 74 68 6f  |ndent 2.../Autho|
00084910  72 73 20 6e 61 6d 65 2f  0a 23 69 6e 64 65 6e 74  |rs name/.#indent|
00084920  0a 6f 72 0a 23 69 6e 64  65 6e 74 20 32 0a 2f 73  |.or.#indent 2./s|
00084930  75 62 73 65 74 2f 20 a9  a0 2f 41 75 74 68 6f 72  |ubset/ ../Author|
00084940  73 20 6e 61 6d 65 2f 0a  23 69 6e 64 65 6e 74 0a  |s name/.#indent.|
00084950  0a 77 68 65 72 65 20 2f  73 75 62 73 65 74 2f 20  |.where /subset/ |
00084960  69 73 20 61 20 73 75 62  73 65 74 20 6f 66 20 74  |is a subset of t|
00084970  68 65 20 61 76 61 69 6c  61 62 6c 65 20 6d 6f 64  |he available mod|
00084980  75 6c 65 73 20 64 65 73  63 72 69 62 69 6e 67 20  |ules describing |
00084990  74 68 69 73 20 70 61 72  74 69 63 75 6c 61 72 20  |this particular |
000849a0  76 65 72 73 69 6f 6e 2c  20 65 67 20 27 52 4f 20  |version, eg 'RO |
000849b0  33 2e 31 27 2c 20 27 df  32 27 2c 20 27 45 6e 67  |3.1', '.2', 'Eng|
000849c0  6c 69 73 68 27 2c 20 27  50 61 72 61 6c 6c 65 6c  |lish', 'Parallel|
000849d0  27 2c 20 65 74 63 0a 00  44 41 54 41 1c 01 00 00  |', etc..DATA....|
000849e0  43 6f 6d 6d 61 6e 64 20  68 65 6c 70 20 63 6f 64  |Command help cod|
000849f0  65 20 65 6e 74 72 79 0a  23 50 61 72 65 6e 74 20  |e entry.#Parent |
00084a00  4f 53 5f 4d 6f 64 75 6c  65 5f 43 6f 6d 54 61 62  |OS_Module_ComTab|
00084a10  6c 65 0a 3d 3e 09 52 30  20 3d 09 70 6f 6e 74 65  |le.=>.R0 =.ponte|
00084a20  72 20 74 6f 20 62 75 66  66 65 72 0a 09 52 31 20  |r to buffer..R1 |
00084a30  3d 09 62 75 66 66 65 72  20 6c 65 6e 67 74 68 0a  |=.buffer length.|
00084a40  28 61 73 73 75 6d 65 64  29 0a 09 52 31 32 20 3d  |(assumed)..R12 =|
00084a50  09 70 6f 69 6e 74 65 72  20 74 6f 20 70 72 69 76  |.pointer to priv|
00084a60  61 74 65 20 77 6f 72 64  20 66 6f 72 20 74 68 69  |ate word for thi|
00084a70  73 20 69 6e 73 74 61 6e  63 65 0a 09 52 31 33 20  |s instance..R13 |
00084a80  3d 09 73 75 70 65 72 76  69 73 6f 72 20 73 74 61  |=.supervisor sta|
00084a90  63 6b 20 70 6f 69 6e 74  65 72 0a 09 52 31 34 20  |ck pointer..R14 |
00084aa0  3d 09 72 65 74 75 72 6e  20 61 64 64 72 65 73 73  |=.return address|
00084ab0  0a 0a 3c 3d 09 52 30 20  3d 09 69 66 20 6e 6f 6e  |..<=.R0 =.if non|
00084ac0  2d 7a 65 72 6f 20 70 61  73 73 65 64 20 74 6f 20  |-zero passed to |
00084ad0  3c 4f 53 5f 50 72 65 74  74 79 50 72 69 6e 74 3e  |<OS_PrettyPrint>|
00084ae0  2e 0a 09 52 37 2d 52 31  31 20 70 72 65 73 65 72  |...R7-R11 preser|
00084af0  76 65 64 0a 44 41 54 41  a9 07 00 00 4d 6f 64 75  |ved.DATA....Modu|
00084b00  6c 65 20 66 6f 72 6d 61  74 0a 23 50 61 72 65 6e  |le format.#Paren|
00084b10  74 20 4f 53 5f 4d 6f 64  75 6c 65 0a 4f 66 66 73  |t OS_Module.Offs|
00084b20  65 74 09 43 6f 6e 74 61  69 6e 73 0a 23 4c 69 6e  |et.Contains.#Lin|
00084b30  65 0a 26 30 30 09 3c 53  74 61 72 74 20 63 6f 64  |e.&00.<Start cod|
00084b40  65 3d 3e 4f 53 5f 4d 6f  64 75 6c 65 5f 53 74 61  |e=>OS_Module_Sta|
00084b50  72 74 3e 09 09 28 75 73  72 20 6d 6f 64 65 29 0a  |rt>..(usr mode).|
00084b60  26 30 34 09 3c 49 6e 69  74 69 61 6c 69 73 65 20  |&04.<Initialise |
00084b70  63 6f 64 65 3d 3e 4f 53  5f 4d 6f 64 75 6c 65 5f  |code=>OS_Module_|
00084b80  49 6e 69 74 3e 09 28 73  76 63 20 6d 6f 64 65 29  |Init>.(svc mode)|
00084b90  0a 26 30 38 09 3c 46 69  6e 61 6c 69 73 65 20 63  |.&08.<Finalise c|
00084ba0  6f 64 65 3d 3e 4f 53 5f  4d 6f 64 75 6c 65 5f 46  |ode=>OS_Module_F|
00084bb0  69 6e 61 6c 3e 09 28 73  76 63 20 6d 6f 64 65 29  |inal>.(svc mode)|
00084bc0  0a 26 30 43 09 3c 53 65  72 76 69 63 65 20 68 61  |.&0C.<Service ha|
00084bd0  6e 64 6c 65 72 3d 3e 4f  53 5f 4d 6f 64 75 6c 65  |ndler=>OS_Module|
00084be0  5f 53 65 72 76 69 63 65  3e 09 28 73 76 63 20 6f  |_Service>.(svc o|
00084bf0  72 20 69 72 71 20 6d 6f  64 65 29 0a 26 31 30 09  |r irq mode).&10.|
00084c00  54 69 74 6c 65 20 53 74  72 69 6e 67 0a 26 31 34  |Title String.&14|
00084c10  09 3c 48 65 6c 70 20 53  74 72 69 6e 67 3d 3e 4f  |.<Help String=>O|
00084c20  53 5f 4d 6f 64 75 6c 65  5f 48 65 6c 70 3e 0a 26  |S_Module_Help>.&|
00084c30  31 38 09 3c 48 65 6c 70  2f 43 6f 6d 6d 61 6e 64  |18.<Help/Command|
00084c40  20 74 61 62 6c 65 3d 3e  4f 53 5f 4d 6f 64 75 6c  | table=>OS_Modul|
00084c50  65 5f 43 6f 6d 54 61 62  6c 65 3e 0a 26 31 43 09  |e_ComTable>.&1C.|
00084c60  53 57 49 20 62 61 73 65  20 6e 75 6d 62 65 72 0a  |SWI base number.|
00084c70  26 32 30 09 3c 53 57 49  20 68 61 6e 64 6c 65 72  |&20.<SWI handler|
00084c80  3d 3e 4f 53 5f 4d 6f 64  75 6c 65 5f 53 57 49 48  |=>OS_Module_SWIH|
00084c90  61 6e 64 6c 65 72 3e 09  28 73 76 63 20 6d 6f 64  |andler>.(svc mod|
00084ca0  65 29 0a 26 32 34 09 3c  53 57 49 20 64 65 63 6f  |e).&24.<SWI deco|
00084cb0  64 65 20 74 61 62 6c 65  3d 3e 4f 53 5f 4d 6f 64  |de table=>OS_Mod|
00084cc0  75 6c 65 5f 53 57 49 54  61 62 6c 65 3e 0a 26 32  |ule_SWITable>.&2|
00084cd0  38 09 3c 53 57 49 20 64  65 63 6f 64 65 20 63 6f  |8.<SWI decode co|
00084ce0  64 65 3d 3e 4f 53 5f 4d  6f 64 75 6c 65 5f 53 57  |de=>OS_Module_SW|
00084cf0  49 44 65 63 3e 09 28 73  76 63 20 6d 6f 64 65 29  |IDec>.(svc mode)|
00084d00  0a 26 32 43 09 3c 4d 65  73 73 61 67 65 54 72 61  |.&2C.<MessageTra|
00084d10  6e 73 3d 3e 4d 65 73 73  61 67 65 54 72 61 6e 73  |ns=>MessageTrans|
00084d20  5f 3e 20 66 69 6c 65 20  28 52 49 53 43 20 4f 53  |_> file (RISC OS|
00084d30  20 33 2e 35 2b 29 0a 0a  41 6c 6c 20 65 6e 74 72  | 3.5+)..All entr|
00084d40  69 65 73 20 65 78 63 65  70 74 20 26 31 43 20 61  |ies except &1C a|
00084d50  72 65 20 6f 66 66 73 65  74 73 20 66 72 6f 6d 20  |re offsets from |
00084d60  74 68 65 20 73 74 61 72  74 20 6f 66 20 74 68 65  |the start of the|
00084d70  20 6d 6f 64 75 6c 65 20  28 3c 2a 3d 3e 2e 61 72  | module (<*=>.ar|
00084d80  63 61 6e 65 3e 29 2e 20  45 6e 74 72 69 65 73 20  |cane>). Entries |
00084d90  6f 66 20 30 20 6f 72 20  74 68 6f 73 65 20 6f 75  |of 0 or those ou|
00084da0  74 73 69 64 65 20 74 68  65 20 6d 6f 64 75 6c 65  |tside the module|
00084db0  20 77 69 6c 6c 20 62 65  20 69 67 6e 6f 72 65 64  | will be ignored|
00084dc0  2e 20 54 68 69 73 20 6d  65 61 6e 73 20 74 68 61  |. This means tha|
00084dd0  74 20 69 66 20 74 68 65  20 6d 6f 64 75 6c 65 20  |t if the module |
00084de0  68 61 73 6e 27 74 20 67  6f 74 20 61 6e 79 20 53  |hasn't got any S|
00084df0  57 49 73 2c 20 74 68 65  20 6c 61 73 74 20 66 69  |WIs, the last fi|
00084e00  76 65 20 77 6f 72 64 73  20 2a 63 6f 75 6c 64 2a  |ve words *could*|
00084e10  20 62 65 20 75 73 65 64  20 66 6f 72 20 73 6f 6d  | be used for som|
00084e20  65 74 68 69 6e 67 20 65  6c 73 65 2c 20 61 6e 64  |ething else, and|
00084e30  20 69 66 20 74 68 65 72  65 20 69 73 20 6e 6f 20  | if there is no |
00084e40  4d 65 73 73 61 67 65 54  72 61 6e 73 20 66 69 6c  |MessageTrans fil|
00084e50  65 6e 61 6d 65 2c 20 74  68 65 20 6c 61 73 74 20  |ename, the last |
00084e60  76 61 6c 75 65 20 63 6f  75 6c 64 20 62 65 20 75  |value could be u|
00084e70  73 65 64 20 66 6f 72 20  73 6f 6d 65 74 68 69 6e  |sed for somethin|
00084e80  67 20 65 6c 73 65 2e 0a  0a 23 20 50 72 65 61 63  |g else...# Preac|
00084e90  68 20 6f 6e 0a 44 6f 6e  27 74 20 73 74 6f 72 65  |h on.Don't store|
00084ea0  20 64 61 74 61 20 69 6e  20 74 68 65 20 62 6f 64  | data in the bod|
00084eb0  79 20 6f 66 20 79 6f 75  72 20 6d 6f 64 75 6c 65  |y of your module|
00084ec0  2c 20 61 6c 6c 6f 63 61  74 65 20 77 6f 72 6b 73  |, allocate works|
00084ed0  70 61 63 65 20 61 6e 64  20 73 74 6f 72 65 20 74  |pace and store t|
00084ee0  68 65 20 70 6f 69 6e 74  65 72 20 69 6e 20 74 68  |he pointer in th|
00084ef0  65 20 70 72 69 76 61 74  65 20 77 6f 72 64 2e 20  |e private word. |
00084f00  54 68 65 20 4f 53 20 6c  65 74 73 20 6d 6f 64 75  |The OS lets modu|
00084f10  6c 65 20 63 6f 64 65 20  62 65 20 72 65 2d 75 73  |le code be re-us|
00084f20  65 64 20 28 6d 75 6c 74  69 70 6c 79 20 69 6e 73  |ed (multiply ins|
00084f30  74 61 6e 74 69 61 74 65  64 29 20 74 6f 20 61 6c  |tantiated) to al|
00084f40  6c 6f 77 20 73 65 76 65  72 61 6c 20 63 6f 70 69  |low several copi|
00084f50  65 73 20 6f 66 20 74 68  65 20 6d 6f 64 75 6c 65  |es of the module|
00084f60  20 74 6f 20 72 75 6e 20  61 74 20 6f 6e 63 65 2c  | to run at once,|
00084f70  20 61 6e 64 20 73 65 76  65 72 61 6c 20 63 6f 70  | and several cop|
00084f80  69 65 73 20 77 6f 75 6c  64 20 62 65 20 73 74 6f  |ies would be sto|
00084f90  72 69 6e 67 20 64 69 66  66 65 72 65 6e 74 20 64  |ring different d|
00084fa0  61 74 61 20 69 6e 20 74  68 65 20 73 61 6d 65 20  |ata in the same |
00084fb0  6c 6f 63 61 74 69 6f 6e  73 20 69 6e 20 74 68 65  |locations in the|
00084fc0  20 6d 6f 64 75 6c 65 20  63 6f 64 65 2e 20 49 66  | module code. If|
00084fd0  20 74 68 69 73 20 63 61  75 73 65 73 20 79 6f 75  | this causes you|
00084fe0  72 20 6d 6f 64 75 6c 65  20 74 6f 20 63 72 61 73  |r module to cras|
00084ff0  68 20 62 65 63 61 75 73  65 20 69 74 27 73 20 62  |h because it's b|
00085000  65 65 6e 20 6d 75 6c 74  69 70 6c 79 20 69 6e 73  |een multiply ins|
00085010  74 61 6e 74 69 61 74 65  64 2c 20 69 74 73 20 2a  |tantiated, its *|
00085020  79 6f 75 72 2a 20 6d 6f  64 75 6c 65 27 73 20 66  |your* module's f|
00085030  61 75 6c 74 2c 20 6e 6f  74 20 74 68 65 20 4f 53  |ault, not the OS|
00085040  27 20 6f 72 20 74 68 65  20 75 73 65 72 27 73 2e  |' or the user's.|
00085050  0a 23 20 50 72 65 61 63  68 20 6f 66 66 0a 0a 49  |.# Preach off..I|
00085060  66 20 74 68 65 20 74 6f  70 20 62 69 74 20 6f 66  |f the top bit of|
00085070  20 74 68 65 20 69 6e 69  74 69 61 6c 69 73 61 74  | the initialisat|
00085080  69 6f 6e 20 63 6f 64 65  20 6f 66 66 73 65 74 20  |ion code offset |
00085090  69 73 20 73 65 74 20 74  68 65 6e 20 74 68 65 20  |is set then the |
000850a0  6d 6f 64 75 6c 65 20 69  73 20 63 6f 6d 70 72 65  |module is compre|
000850b0  73 73 65 64 20 61 6e 64  20 77 69 6c 6c 20 62 65  |ssed and will be|
000850c0  20 64 65 63 6f 70 72 65  73 73 65 64 20 62 79 20  | decopressed by |
000850d0  74 68 65 20 4f 53 2e 0a  49 66 20 74 68 65 20 74  |the OS..If the t|
000850e0  6f 70 20 62 69 74 20 6f  66 20 74 68 65 20 66 69  |op bit of the fi|
000850f0  6e 61 6c 69 73 61 74 69  6f 6e 20 63 6f 64 65 20  |nalisation code |
00085100  6f 66 66 73 65 74 20 69  73 20 73 65 74 20 74 68  |offset is set th|
00085110  65 6e 20 74 68 65 20 6d  6f 64 75 6c 65 27 73 20  |en the module's |
00085120  63 6f 64 65 20 61 72 65  61 20 77 69 6c 6c 20 6e  |code area will n|
00085130  6f 74 20 62 65 20 66 72  65 65 64 20 61 66 74 65  |ot be freed afte|
00085140  72 20 69 74 20 69 74 20  71 75 69 74 2e 0a 23 53  |r it it quit..#S|
00085150  75 62 70 61 67 65 20 61  72 63 61 6e 65 0a 46 6f  |ubpage arcane.Fo|
00085160  6f 74 6e 6f 74 65 20 66  6f 72 20 70 65 64 61 6e  |otnote for pedan|
00085170  74 73 0a 49 66 20 74 68  65 20 76 61 6c 75 65 20  |ts.If the value |
00085180  66 6f 72 20 73 74 61 72  74 20 63 6f 64 65 20 64  |for start code d|
00085190  6f 65 73 6e 27 74 20 72  65 70 72 65 73 65 6e 74  |oesn't represent|
000851a0  20 61 20 76 61 6c 69 64  20 6e 6f 6e 2d 7a 65 72  | a valid non-zer|
000851b0  6f 20 6f 66 66 73 65 74  2c 20 69 74 20 69 73 20  |o offset, it is |
000851c0  74 61 6b 65 6e 20 74 6f  20 62 65 20 61 20 6c 69  |taken to be a li|
000851d0  74 65 72 61 6c 20 41 52  4d 20 69 6e 73 74 72 75  |teral ARM instru|
000851e0  63 74 69 6f 6e 20 28 77  68 69 63 68 20 68 6f 70  |ction (which hop|
000851f0  65 66 75 6c 6c 79 20 69  73 20 61 20 62 72 61 6e  |efully is a bran|
00085200  63 68 20 74 6f 20 74 68  65 20 72 69 67 68 74 20  |ch to the right |
00085210  70 6c 61 63 65 29 2e 20  54 68 69 73 20 63 61 6e  |place). This can|
00085220  20 62 65 20 75 73 65 64  20 74 6f 20 62 72 61 6e  | be used to bran|
00085230  63 68 20 74 6f 20 61 20  73 74 75 62 20 77 68 69  |ch to a stub whi|
00085240  63 68 20 63 61 6c 6c 73  20 3c 4f 53 5f 57 72 69  |ch calls <OS_Wri|
00085250  74 65 45 6e 76 3e 20 62  65 66 6f 72 65 20 62 72  |teEnv> before br|
00085260  61 6e 63 69 6e 67 20 62  61 63 6b 20 69 6e 74 6f  |ancing back into|
00085270  20 74 68 65 20 6d 6f 64  75 6c 65 2c 20 77 68 69  | the module, whi|
00085280  63 68 20 69 73 20 75 73  65 66 75 6c 20 64 75 72  |ch is useful dur|
00085290  69 6e 67 20 74 65 73 74  69 6e 67 2e 0a 00 00 00  |ing testing.....|
000852a0  44 49 52 24 bc 04 00 00  bc 04 00 00 5c 57 08 00  |DIR$........\W..|
000852b0  48 fd ff ff 66 3c 13 1e  25 05 00 00 13 00 00 00  |H...f<..%.......|
000852c0  00 00 00 00 21 52 6f 6f  74 00 00 00 84 5c 08 00  |....!Root....\..|
000852d0  48 ff ff ff f1 26 ae 1f  83 01 00 00 13 00 00 00  |H....&..........|
000852e0  00 00 00 00 53 74 61 6e  64 61 72 64 44 61 74 65  |....StandardDate|
000852f0  41 6e 64 54 69 6d 65 00  08 5e 08 00 47 ff ff ff  |AndTime..^..G...|
00085300  1e 3a 2b ed 44 01 00 00  13 00 00 00 00 00 00 00  |.:+.D...........|
00085310  46 69 6c 65 53 69 7a 65  00 00 00 00 4c 5f 08 00  |FileSize....L_..|
00085320  48 ff ff ff 88 e3 ad 1f  b8 01 00 00 13 00 00 00  |H...............|
00085330  00 00 00 00 46 69 78 65  64 46 69 6c 65 53 69 7a  |....FixedFileSiz|
00085340  65 00 00 00 04 61 08 00  47 ff ff ff 4e 64 ac cd  |e....a..G...Nd..|
00085350  89 01 00 00 13 00 00 00  00 00 00 00 44 61 74 65  |............Date|
00085360  41 6e 64 54 69 6d 65 00  90 62 08 00 47 ff ff ff  |AndTime..b..G...|
00085370  5c 7f ac cd 28 01 00 00  13 00 00 00 00 00 00 00  |\...(...........|
00085380  48 65 78 34 00 00 00 00  b8 63 08 00 47 ff ff ff  |Hex4.....c..G...|
00085390  67 91 ab cd 27 01 00 00  13 00 00 00 00 00 00 00  |g...'...........|
000853a0  48 65 78 32 00 00 00 00  e0 64 08 00 47 ff ff ff  |Hex2.....d..G...|
000853b0  71 60 ac cd 27 01 00 00  13 00 00 00 00 00 00 00  |q`..'...........|
000853c0  48 65 78 31 00 00 00 00  08 66 08 00 47 ff ff ff  |Hex1.....f..G...|
000853d0  73 b0 ab cd 25 01 00 00  13 00 00 00 00 00 00 00  |s...%...........|
000853e0  48 65 78 38 00 00 00 00  30 67 08 00 47 ff ff ff  |Hex8....0g..G...|
000853f0  f5 ba ab cd 28 01 00 00  13 00 00 00 00 00 00 00  |....(...........|
00085400  48 65 78 36 00 00 00 00  58 68 08 00 47 ff ff ff  |Hex6....Xh..G...|
00085410  6f 6f ac cd 55 01 00 00  13 00 00 00 00 00 00 00  |oo..U...........|
00085420  43 61 72 64 69 6e 61 6c  31 00 00 00 b0 69 08 00  |Cardinal1....i..|
00085430  47 ff ff ff 1d 6e ac cd  57 01 00 00 13 00 00 00  |G....n..W.......|
00085440  00 00 00 00 43 61 72 64  69 6e 61 6c 32 00 00 00  |....Cardinal2...|
00085450  08 6b 08 00 47 ff ff ff  66 68 ac cd 5a 01 00 00  |.k..G...fh..Z...|
00085460  13 00 00 00 00 00 00 00  43 61 72 64 69 6e 61 6c  |........Cardinal|
00085470  33 00 00 00 64 6c 08 00  47 ff ff ff c6 3d e5 d6  |3...dl..G....=..|
00085480  6c 01 00 00 13 00 00 00  00 00 00 00 43 61 72 64  |l...........Card|
00085490  69 6e 61 6c 34 00 00 00  d0 6d 08 00 47 ff ff ff  |inal4....m..G...|
000854a0  cb 33 ac cd 64 01 00 00  13 00 00 00 00 00 00 00  |.3..d...........|
000854b0  49 6e 74 65 67 65 72 31  00 00 00 00 34 6f 08 00  |Integer1....4o..|
000854c0  48 ff ff ff 9b 01 8a 1a  68 01 00 00 13 00 00 00  |H.......h.......|
000854d0  00 00 00 00 49 6e 74 65  67 65 72 32 00 00 00 00  |....Integer2....|
000854e0  9c 70 08 00 47 ff ff ff  e2 58 ac cd 6c 01 00 00  |.p..G....X..l...|
000854f0  13 00 00 00 00 00 00 00  49 6e 74 65 67 65 72 33  |........Integer3|
00085500  00 00 00 00 08 72 08 00  47 ff ff ff 37 57 ac cd  |.....r..G...7W..|
00085510  73 01 00 00 13 00 00 00  00 00 00 00 49 6e 74 65  |s...........Inte|
00085520  67 65 72 34 00 00 00 00  7c 73 08 00 48 ff ff ff  |ger4....|s..H...|
00085530  82 ce 88 1a 2e 01 00 00  13 00 00 00 00 00 00 00  |................|
00085540  42 69 6e 61 72 79 31 00  ac 74 08 00 48 ff ff ff  |Binary1..t..H...|
00085550  fe d9 88 1a 2f 01 00 00  13 00 00 00 00 00 00 00  |..../...........|
00085560  42 69 6e 61 72 79 32 00  dc 75 08 00 48 ff ff ff  |Binary2..u..H...|
00085570  45 df 88 1a 2f 01 00 00  13 00 00 00 00 00 00 00  |E.../...........|
00085580  42 69 6e 61 72 79 33 00  0c 77 08 00 48 ff ff ff  |Binary3..w..H...|
00085590  48 e6 88 1a 2f 01 00 00  13 00 00 00 00 00 00 00  |H.../...........|
000855a0  42 69 6e 61 72 79 34 00  3c 78 08 00 48 ff ff ff  |Binary4.<x..H...|
000855b0  99 43 8a 1a 6a 01 00 00  13 00 00 00 00 00 00 00  |.C..j...........|
000855c0  53 70 61 63 65 64 43 61  72 64 69 6e 61 6c 31 00  |SpacedCardinal1.|
000855d0  a8 79 08 00 48 ff ff ff  5e 47 8a 1a 6d 01 00 00  |.y..H...^G..m...|
000855e0  13 00 00 00 00 00 00 00  53 70 61 63 65 64 43 61  |........SpacedCa|
000855f0  72 64 69 6e 61 6c 32 00  18 7b 08 00 48 ff ff ff  |rdinal2..{..H...|
00085600  13 52 8a 1a 72 01 00 00  13 00 00 00 00 00 00 00  |.R..r...........|
00085610  53 70 61 63 65 64 43 61  72 64 69 6e 61 6c 33 00  |SpacedCardinal3.|
00085620  8c 7c 08 00 48 ff ff ff  16 5b 8a 1a 75 01 00 00  |.|..H....[..u...|
00085630  13 00 00 00 00 00 00 00  53 70 61 63 65 64 43 61  |........SpacedCa|
00085640  72 64 69 6e 61 6c 34 00  04 7e 08 00 48 ff ff ff  |rdinal4..~..H...|
00085650  79 d5 89 1a 6a 01 00 00  13 00 00 00 00 00 00 00  |y...j...........|
00085660  53 70 61 63 65 64 49 6e  74 65 67 65 72 31 00 00  |SpacedInteger1..|
00085670  70 7f 08 00 48 ff ff ff  0b 90 8a 1a 70 01 00 00  |p...H.......p...|
00085680  13 00 00 00 00 00 00 00  53 70 61 63 65 64 49 6e  |........SpacedIn|
00085690  74 65 67 65 72 32 00 00  e0 80 08 00 48 ff ff ff  |teger2......H...|
000856a0  f4 29 8a 1a 77 01 00 00  13 00 00 00 00 00 00 00  |.)..w...........|
000856b0  53 70 61 63 65 64 49 6e  74 65 67 65 72 33 00 00  |SpacedInteger3..|
000856c0  58 82 08 00 48 ff ff ff  58 39 8a 1a 7f 01 00 00  |X...H...X9......|
000856d0  13 00 00 00 00 00 00 00  53 70 61 63 65 64 49 6e  |........SpacedIn|
000856e0  74 65 67 65 72 34 00 00  d8 83 08 00 48 ff ff ff  |teger4......H...|
000856f0  bf f4 fb 18 77 02 00 00  13 00 00 00 00 00 00 00  |....w...........|
00085700  46 69 78 65 64 4e 65 74  53 74 61 74 69 6f 6e 00  |FixedNetStation.|
00085710  50 86 08 00 48 ff ff ff  31 04 fc 18 05 02 00 00  |P...H...1.......|
00085720  13 00 00 00 00 00 00 00  4e 65 74 53 74 61 74 69  |........NetStati|
00085730  6f 6e 00 00 58 88 08 00  48 fd ff ff 80 92 fb 18  |on..X...H.......|
00085740  7a 00 00 00 13 00 00 00  00 00 00 00 6e 65 74 73  |z...........nets|
00085750  74 61 74 69 6f 6e 62 6c  6f 63 6b 00 44 41 54 41  |tationblock.DATA|
00085760  25 05 00 00 4f 53 5f 43  6f 6e 76 65 72 74 3c 6e  |%...OS_Convert<n|
00085770  61 6d 65 3e 3c 6e 75 6d  62 65 72 3e 20 20 28 26  |ame><number>  (&|
00085780  44 30 2d 26 45 38 29 0a  23 50 61 72 65 6e 74 20  |D0-&E8).#Parent |
00085790  4f 53 5f 0a 3d 3e 09 52  30 20 3d 09 56 61 6c 75  |OS_.=>.R0 =.Valu|
000857a0  65 20 74 6f 20 62 65 20  63 6f 6e 76 65 72 74 65  |e to be converte|
000857b0  64 0a 09 52 31 20 3d 09  42 75 66 66 65 72 20 66  |d..R1 =.Buffer f|
000857c0  6f 72 20 72 65 73 75 6c  74 69 6e 67 20 73 74 72  |or resulting str|
000857d0  69 6e 67 0a 09 52 32 20  3d 09 73 69 7a 65 20 6f  |ing..R2 =.size o|
000857e0  66 20 62 75 66 66 65 72  0a 0a 3c 3d 09 52 30 20  |f buffer..<=.R0 |
000857f0  3d 09 42 75 66 66 65 72  20 28 52 31 20 6f 6e 20  |=.Buffer (R1 on |
00085800  65 6e 74 72 79 29 0a 09  52 31 20 3d 09 70 6f 69  |entry)..R1 =.poi|
00085810  6e 74 65 72 20 74 6f 20  74 65 72 6d 69 6e 61 74  |nter to terminat|
00085820  69 6e 67 20 30 20 69 6e  20 62 75 66 66 65 72 0a  |ing 0 in buffer.|
00085830  09 52 32 20 3d 09 66 72  65 65 20 62 79 74 65 73  |.R2 =.free bytes|
00085840  20 69 6e 20 62 75 66 66  65 72 0a 0a 54 68 69 73  | in buffer..This|
00085850  20 72 61 6e 67 65 20 6f  66 20 53 57 49 73 20 63  | range of SWIs c|
00085860  6f 6e 76 65 72 74 20 61  20 6e 75 6d 62 65 72 20  |onvert a number |
00085870  69 6e 74 6f 20 73 6f 6d  65 20 6b 69 6e 64 20 6f  |into some kind o|
00085880  66 20 73 74 72 69 6e 67  2e 0a 0a 23 54 61 62 0a  |f string...#Tab.|
00085890  5c 3c 6e 61 6d 65 3e 09  09 5c 3c 6e 75 6d 62 65  |\<name>..\<numbe|
000858a0  72 3e 0a 23 4c 69 6e 65  0a 48 65 78 09 09 3c 31  |r>.#Line.Hex..<1|
000858b0  3d 3e 4f 53 5f 43 6f 6e  76 65 72 74 48 65 78 31  |=>OS_ConvertHex1|
000858c0  3e 2c 3c 32 3d 3e 4f 53  5f 43 6f 6e 76 65 72 74  |>,<2=>OS_Convert|
000858d0  48 65 78 32 3e 2c 3c 34  3d 3e 4f 53 5f 43 6f 6e  |Hex2>,<4=>OS_Con|
000858e0  76 65 72 74 48 65 78 34  3e 2c 3c 36 3d 3e 4f 53  |vertHex4>,<6=>OS|
000858f0  5f 43 6f 6e 76 65 72 74  48 65 78 36 3e 2c 3c 38  |_ConvertHex6>,<8|
00085900  3d 3e 4f 53 5f 43 6f 6e  76 65 72 74 48 65 78 38  |=>OS_ConvertHex8|
00085910  3e 09 28 6e 69 62 62 6c  65 73 29 0a 43 61 72 64  |>.(nibbles).Card|
00085920  69 6e 61 6c 09 3c 31 3d  3e 4f 53 5f 43 6f 6e 76  |inal.<1=>OS_Conv|
00085930  65 72 74 43 61 72 64 69  6e 61 6c 31 3e 2c 3c 32  |ertCardinal1>,<2|
00085940  3d 3e 4f 53 5f 43 6f 6e  76 65 72 74 43 61 72 64  |=>OS_ConvertCard|
00085950  69 6e 61 6c 32 3e 2c 3c  33 3d 3e 4f 53 5f 43 6f  |inal2>,<3=>OS_Co|
00085960  6e 76 65 72 74 43 61 72  64 69 6e 61 6c 33 3e 2c  |nvertCardinal3>,|
00085970  3c 34 3d 3e 4f 53 5f 43  6f 6e 76 65 72 74 43 61  |<4=>OS_ConvertCa|
00085980  72 64 69 6e 61 6c 34 3e  09 28 62 79 74 65 73 29  |rdinal4>.(bytes)|
00085990  20 28 75 6e 73 69 67 6e  65 64 29 0a 49 6e 74 65  | (unsigned).Inte|
000859a0  67 65 72 09 09 3c 31 3d  3e 4f 53 5f 43 6f 6e 76  |ger..<1=>OS_Conv|
000859b0  65 72 74 49 6e 74 65 67  65 72 31 3e 2c 3c 32 3d  |ertInteger1>,<2=|
000859c0  3e 4f 53 5f 43 6f 6e 76  65 72 74 49 6e 74 65 67  |>OS_ConvertInteg|
000859d0  65 72 32 3e 2c 3c 33 3d  3e 4f 53 5f 43 6f 6e 76  |er2>,<3=>OS_Conv|
000859e0  65 72 74 49 6e 74 65 67  65 72 33 3e 2c 3c 34 3d  |ertInteger3>,<4=|
000859f0  3e 4f 53 5f 43 6f 6e 76  65 72 74 49 6e 74 65 67  |>OS_ConvertInteg|
00085a00  65 72 34 3e 09 09 28 62  79 74 65 73 29 20 28 73  |er4>..(bytes) (s|
00085a10  69 67 6e 65 64 29 0a 42  69 6e 61 72 79 09 09 3c  |igned).Binary..<|
00085a20  31 3d 3e 4f 53 5f 43 6f  6e 76 65 72 74 42 69 6e  |1=>OS_ConvertBin|
00085a30  61 72 79 31 3e 2c 3c 32  3d 3e 4f 53 5f 43 6f 6e  |ary1>,<2=>OS_Con|
00085a40  76 65 72 74 42 69 6e 61  72 79 32 3e 2c 3c 33 3d  |vertBinary2>,<3=|
00085a50  3e 4f 53 5f 43 6f 6e 76  65 72 74 42 69 6e 61 72  |>OS_ConvertBinar|
00085a60  79 33 3e 2c 3c 34 3d 3e  4f 53 5f 43 6f 6e 76 65  |y3>,<4=>OS_Conve|
00085a70  72 74 42 69 6e 61 72 79  34 3e 09 09 28 62 79 74  |rtBinary4>..(byt|
00085a80  65 73 29 0a 53 70 61 63  65 64 43 61 72 64 69 6e  |es).SpacedCardin|
00085a90  61 6c 09 3c 31 3d 3e 4f  53 5f 43 6f 6e 76 65 72  |al.<1=>OS_Conver|
00085aa0  74 53 70 61 63 65 64 43  61 72 64 69 6e 61 6c 31  |tSpacedCardinal1|
00085ab0  3e 2c 3c 32 3d 3e 4f 53  5f 43 6f 6e 76 65 72 74  |>,<2=>OS_Convert|
00085ac0  53 70 61 63 65 64 43 61  72 64 69 6e 61 6c 32 3e  |SpacedCardinal2>|
00085ad0  2c 3c 33 3d 3e 4f 53 5f  43 6f 6e 76 65 72 74 53  |,<3=>OS_ConvertS|
00085ae0  70 61 63 65 64 43 61 72  64 69 6e 61 6c 33 3e 2c  |pacedCardinal3>,|
00085af0  3c 34 3d 3e 4f 53 5f 43  6f 6e 76 65 72 74 53 70  |<4=>OS_ConvertSp|
00085b00  61 63 65 64 43 61 72 64  69 6e 61 6c 34 3e 09 09  |acedCardinal4>..|
00085b10  28 62 79 74 65 73 29 20  28 75 6e 73 69 67 6e 65  |(bytes) (unsigne|
00085b20  64 29 0a 53 70 61 63 65  64 49 6e 74 65 67 65 72  |d).SpacedInteger|
00085b30  09 3c 31 3d 3e 4f 53 5f  43 6f 6e 76 65 72 74 53  |.<1=>OS_ConvertS|
00085b40  70 61 63 65 64 49 6e 74  65 67 65 72 31 3e 2c 3c  |pacedInteger1>,<|
00085b50  32 3d 3e 4f 53 5f 43 6f  6e 76 65 72 74 53 70 61  |2=>OS_ConvertSpa|
00085b60  63 65 64 49 6e 74 65 67  65 72 32 3e 2c 3c 33 3d  |cedInteger2>,<3=|
00085b70  3e 4f 53 5f 43 6f 6e 76  65 72 74 53 70 61 63 65  |>OS_ConvertSpace|
00085b80  64 49 6e 74 65 67 65 72  33 3e 2c 3c 34 3d 3e 4f  |dInteger3>,<4=>O|
00085b90  53 5f 43 6f 6e 76 65 72  74 53 70 61 63 65 64 49  |S_ConvertSpacedI|
00085ba0  6e 74 65 67 65 72 34 3e  09 09 09 28 62 79 74 65  |nteger4>...(byte|
00085bb0  73 29 20 28 73 69 67 6e  65 64 29 0a 0a 23 50 72  |s) (signed)..#Pr|
00085bc0  65 66 69 78 0a 49 6e 20  61 64 64 69 74 69 6f 6e  |efix.In addition|
00085bd0  20 77 65 20 68 61 76 65  20 3a 0a 20 20 3c 4f 53  | we have :.  <OS|
00085be0  5f 43 6f 6e 76 65 72 74  46 69 78 65 64 4e 65 74  |_ConvertFixedNet|
00085bf0  53 74 61 74 69 6f 6e 3e  0a 20 20 3c 4f 53 5f 43  |Station>.  <OS_C|
00085c00  6f 6e 76 65 72 74 4e 65  74 53 74 61 74 69 6f 6e  |onvertNetStation|
00085c10  3e 0a 20 20 3c 4f 53 5f  43 6f 6e 76 65 72 74 46  |>.  <OS_ConvertF|
00085c20  69 78 65 64 46 69 6c 65  53 69 7a 65 3e 0a 20 20  |ixedFileSize>.  |
00085c30  3c 4f 53 5f 43 6f 6e 76  65 72 74 46 69 6c 65 53  |<OS_ConvertFileS|
00085c40  69 7a 65 3e 0a 20 20 3c  4f 53 5f 43 6f 6e 76 65  |ize>.  <OS_Conve|
00085c50  72 74 44 61 74 65 41 6e  64 54 69 6d 65 3e 0a 20  |rtDateAndTime>. |
00085c60  20 3c 4f 53 5f 43 6f 6e  76 65 72 74 53 74 61 6e  | <OS_ConvertStan|
00085c70  64 61 72 64 44 61 74 65  41 6e 64 54 69 6d 65 3e  |dardDateAndTime>|
00085c80  0a 00 00 00 44 41 54 41  83 01 00 00 4f 53 5f 43  |....DATA....OS_C|
00085c90  6f 6e 76 65 72 74 53 74  61 6e 64 61 72 64 44 61  |onvertStandardDa|
00085ca0  74 65 41 6e 64 54 69 6d  65 20 20 28 26 43 30 29  |teAndTime  (&C0)|
00085cb0  0a 23 50 61 72 65 6e 74  20 4f 53 5f 43 6f 6e 76  |.#Parent OS_Conv|
00085cc0  65 72 74 0a 3d 3e 09 52  30 20 3d 09 70 6f 69 6e  |ert.=>.R0 =.poin|
00085cd0  74 65 72 20 74 6f 20 35  2d 62 79 74 65 20 74 69  |ter to 5-byte ti|
00085ce0  6d 65 20 62 6c 6f 63 6b  0a 09 52 31 20 3d 09 70  |me block..R1 =.p|
00085cf0  6f 69 6e 74 65 72 20 74  6f 20 62 75 66 66 65 72  |ointer to buffer|
00085d00  20 66 6f 72 20 72 65 73  75 6c 74 69 6e 67 20 73  | for resulting s|
00085d10  74 72 69 6e 67 0a 09 52  32 20 3d 09 73 69 7a 65  |tring..R2 =.size|
00085d20  20 6f 66 20 62 75 66 66  65 72 0a 0a 3c 3d 09 52  | of buffer..<=.R|
00085d30  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 62  |0 =.pointer to b|
00085d40  75 66 66 65 72 20 28 52  31 20 6f 6e 20 65 6e 74  |uffer (R1 on ent|
00085d50  72 79 29 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |ry)..R1 =.pointe|
00085d60  72 20 74 6f 20 74 65 72  6d 69 6e 61 74 6f 72 0a  |r to terminator.|
00085d70  09 52 32 20 3d 09 66 72  65 65 20 62 79 74 65 73  |.R2 =.free bytes|
00085d80  20 69 6e 20 62 75 66 66  65 72 0a 0a 54 68 69 73  | in buffer..This|
00085d90  20 53 57 49 20 63 6f 6e  76 65 72 74 73 20 61 20  | SWI converts a |
00085da0  66 69 76 65 2d 62 79 74  65 20 76 61 6c 75 65 20  |five-byte value |
00085db0  72 65 70 72 65 73 65 6e  74 69 6e 67 20 63 65 6e  |representing cen|
00085dc0  74 69 73 65 63 6f 6e 64  73 20 73 69 6e 63 65 20  |tiseconds since |
00085dd0  31 39 30 30 2c 20 69 6e  74 6f 20 61 20 73 74 72  |1900, into a str|
00085de0  69 6e 67 2e 20 49 74 20  75 73 65 73 20 7b 66 43  |ing. It uses {fC|
00085df0  6f 64 65 7d 53 79 73 24  44 61 74 65 46 6f 72 6d  |ode}Sys$DateForm|
00085e00  61 74 7b 66 7d 2e 0a 00  44 41 54 41 44 01 00 00  |at{f}...DATAD...|
00085e10  4f 53 5f 43 6f 6e 76 65  72 74 46 69 6c 65 53 69  |OS_ConvertFileSi|
00085e20  7a 65 20 20 28 26 45 43  29 0a 23 50 61 72 65 6e  |ze  (&EC).#Paren|
00085e30  74 20 4f 53 5f 43 6f 6e  76 65 72 74 0a 3d 3e 09  |t OS_Convert.=>.|
00085e40  52 30 20 3d 09 66 69 6c  65 20 73 69 7a 65 0a 09  |R0 =.file size..|
00085e50  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
00085e60  62 75 66 66 65 72 20 66  6f 72 20 72 65 73 75 6c  |buffer for resul|
00085e70  74 69 6e 67 20 73 74 72  69 6e 67 0a 09 52 32 20  |ting string..R2 |
00085e80  3d 09 73 69 7a 65 20 6f  66 20 62 75 66 66 65 72  |=.size of buffer|
00085e90  0a 3c 3d 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |.<=.R0 =.pointer|
00085ea0  20 74 6f 20 62 75 66 66  65 72 20 28 52 31 20 6f  | to buffer (R1 o|
00085eb0  6e 20 65 6e 74 72 79 29  0a 09 52 31 20 3d 09 70  |n entry)..R1 =.p|
00085ec0  6f 69 6e 74 65 72 20 74  6f 20 74 65 72 6d 69 6e  |ointer to termin|
00085ed0  61 74 6f 72 0a 09 52 32  20 3d 09 66 72 65 65 20  |ator..R2 =.free |
00085ee0  62 79 74 65 73 20 69 6e  20 62 75 66 66 65 72 0a  |bytes in buffer.|
00085ef0  0a 54 68 69 73 20 53 57  49 20 63 6f 6e 76 65 72  |.This SWI conver|
00085f00  74 73 20 61 20 76 61 6c  75 65 20 74 6f 20 61 6e  |ts a value to an|
00085f10  20 61 6d 6f 75 6e 74 20  6f 66 20 73 70 61 63 65  | amount of space|
00085f20  20 69 6e 20 74 68 65 20  66 6f 72 6d 20 78 20 62  | in the form x b|
00085f30  79 74 65 73 2c 20 78 20  4b 62 79 74 65 73 2c 20  |ytes, x Kbytes, |
00085f40  6f 72 20 78 20 4d 62 79  74 65 73 2e 44 41 54 41  |or x Mbytes.DATA|
00085f50  b8 01 00 00 4f 53 5f 43  6f 6e 76 65 72 74 46 69  |....OS_ConvertFi|
00085f60  78 65 64 46 69 6c 65 53  69 7a 65 20 20 28 26 45  |xedFileSize  (&E|
00085f70  42 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 43 6f  |B).#Parent OS_Co|
00085f80  6e 76 65 72 74 0a 3d 3e  09 52 30 20 3d 09 66 69  |nvert.=>.R0 =.fi|
00085f90  6c 65 20 73 69 7a 65 0a  09 52 31 20 3d 09 70 6f  |le size..R1 =.po|
00085fa0  69 6e 74 65 72 20 74 6f  20 62 75 66 66 65 72 20  |inter to buffer |
00085fb0  66 6f 72 20 72 65 73 75  6c 74 69 6e 67 20 73 74  |for resulting st|
00085fc0  72 69 6e 67 0a 09 52 32  20 3d 09 73 69 7a 65 20  |ring..R2 =.size |
00085fd0  6f 66 20 62 75 66 66 65  72 0a 0a 3c 3d 09 52 30  |of buffer..<=.R0|
00085fe0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 62 75  | =.pointer to bu|
00085ff0  66 66 65 72 20 28 52 31  20 6f 6e 20 65 6e 74 72  |ffer (R1 on entr|
00086000  79 29 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |y)..R1 =.pointer|
00086010  20 74 6f 20 74 65 72 6d  69 6e 61 74 6f 72 0a 09  | to terminator..|
00086020  52 32 20 3d 09 66 72 65  65 20 62 79 74 65 73 20  |R2 =.free bytes |
00086030  69 6e 20 62 75 66 66 65  72 0a 0a 54 68 69 73 20  |in buffer..This |
00086040  53 57 49 20 63 6f 6e 76  65 72 74 73 20 61 20 76  |SWI converts a v|
00086050  61 6c 75 65 20 74 6f 20  61 20 61 6d 6f 75 6e 74  |alue to a amount|
00086060  20 6f 66 20 73 70 61 63  65 20 61 76 61 69 6c 61  | of space availa|
00086070  62 6c 65 20 69 6e 20 74  68 65 20 66 6f 72 6d 20  |ble in the form |
00086080  78 20 62 79 74 65 73 2c  20 78 20 4b 62 79 74 65  |x bytes, x Kbyte|
00086090  73 2c 20 6f 72 20 78 20  4d 62 79 74 65 73 2e 20  |s, or x Mbytes. |
000860a0  54 68 69 73 20 69 73 20  74 68 65 20 66 69 78 65  |This is the fixe|
000860b0  64 20 73 74 72 69 6e 67  20 6c 65 6e 67 74 68 20  |d string length |
000860c0  76 65 72 73 69 6f 6e 20  6f 66 20 3c 4f 53 5f 43  |version of <OS_C|
000860d0  6f 6e 76 65 72 74 46 69  6c 65 53 69 7a 65 3e 2c  |onvertFileSize>,|
000860e0  20 77 69 74 68 20 74 68  65 20 73 74 61 72 74 20  | with the start |
000860f0  70 61 64 64 65 64 20 77  69 74 68 20 73 70 61 63  |padded with spac|
00086100  65 73 2e 0a 44 41 54 41  89 01 00 00 4f 53 5f 43  |es..DATA....OS_C|
00086110  6f 6e 76 65 72 74 44 61  74 65 41 6e 64 54 69 6d  |onvertDateAndTim|
00086120  65 20 20 28 26 43 31 29  0a 23 50 61 72 65 6e 74  |e  (&C1).#Parent|
00086130  20 4f 53 5f 43 6f 6e 76  65 72 74 0a 3d 3e 09 52  | OS_Convert.=>.R|
00086140  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 35  |0 =.pointer to 5|
00086150  2d 62 79 74 65 20 74 69  6d 65 20 62 6c 6f 63 6b  |-byte time block|
00086160  0a 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
00086170  6f 20 62 75 66 66 65 72  20 66 6f 72 20 72 65 73  |o buffer for res|
00086180  75 6c 74 69 6e 67 20 73  74 72 69 6e 67 0a 09 52  |ulting string..R|
00086190  32 20 3d 09 73 69 7a 65  20 6f 66 20 62 75 66 66  |2 =.size of buff|
000861a0  65 72 0a 09 52 33 20 3d  09 70 6f 69 6e 74 65 72  |er..R3 =.pointer|
000861b0  20 74 6f 20 3c 66 6f 72  6d 61 74 20 73 74 72 69  | to <format stri|
000861c0  6e 67 3d 3e 73 77 69 5f  64 61 74 65 66 6f 72 6d  |ng=>swi_dateform|
000861d0  61 74 3e 0a 0a 3c 3d 09  52 30 20 3d 09 70 6f 69  |at>..<=.R0 =.poi|
000861e0  6e 74 65 72 20 74 6f 20  62 75 66 66 65 72 20 28  |nter to buffer (|
000861f0  52 31 20 6f 6e 20 65 6e  74 72 79 29 0a 09 52 31  |R1 on entry)..R1|
00086200  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 74 65  | =.pointer to te|
00086210  72 6d 69 6e 61 74 6f 72  0a 09 52 32 20 3d 09 66  |rminator..R2 =.f|
00086220  72 65 65 20 62 79 74 65  73 20 69 6e 20 62 75 66  |ree bytes in buf|
00086230  66 65 72 0a 0a 54 68 69  73 20 53 57 49 20 63 6f  |fer..This SWI co|
00086240  6e 76 65 72 74 73 20 61  20 66 69 76 65 2d 62 79  |nverts a five-by|
00086250  74 65 20 76 61 6c 75 65  20 72 65 70 72 65 73 65  |te value represe|
00086260  6e 74 69 6e 67 20 63 65  6e 74 69 73 65 63 6f 6e  |nting centisecon|
00086270  64 73 20 73 69 6e 63 65  20 31 39 30 30 2c 20 69  |ds since 1900, i|
00086280  6e 74 6f 20 61 20 73 74  72 69 6e 67 2e 00 00 00  |nto a string....|
00086290  44 41 54 41 28 01 00 00  4f 53 5f 43 6f 6e 76 65  |DATA(...OS_Conve|
000862a0  72 74 48 65 78 34 0a 23  50 61 72 65 6e 74 20 4f  |rtHex4.#Parent O|
000862b0  53 5f 43 6f 6e 76 65 72  74 0a 3d 3e 09 52 30 20  |S_Convert.=>.R0 |
000862c0  3d 09 76 61 6c 75 65 20  74 6f 20 62 65 20 63 6f  |=.value to be co|
000862d0  6e 76 65 72 74 65 64 0a  09 52 31 20 3d 09 70 6f  |nverted..R1 =.po|
000862e0  69 6e 74 65 72 20 74 6f  20 62 75 66 66 65 72 20  |inter to buffer |
000862f0  66 6f 72 20 72 65 73 75  6c 74 69 6e 67 20 73 74  |for resulting st|
00086300  72 69 6e 67 0a 09 52 32  20 3d 09 73 69 7a 65 20  |ring..R2 =.size |
00086310  6f 66 20 62 75 66 66 65  72 0a 0a 3c 3d 09 52 30  |of buffer..<=.R0|
00086320  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 62 75  | =.pointer to bu|
00086330  66 66 65 72 20 28 52 31  20 6f 6e 20 65 6e 74 72  |ffer (R1 on entr|
00086340  79 29 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |y)..R1 =.pointer|
00086350  20 74 6f 20 74 65 72 6d  69 6e 61 74 6f 72 0a 09  | to terminator..|
00086360  52 32 20 3d 09 66 72 65  65 20 62 79 74 65 73 20  |R2 =.free bytes |
00086370  69 6e 20 62 75 66 66 65  72 0a 0a 54 68 69 73 20  |in buffer..This |
00086380  53 57 49 20 63 6f 6e 76  65 72 74 73 20 61 20 76  |SWI converts a v|
00086390  61 6c 75 65 20 69 6e 74  6f 20 61 20 73 74 72 69  |alue into a stri|
000863a0  6e 67 20 6f 66 20 34 20  68 65 78 20 63 68 61 72  |ng of 4 hex char|
000863b0  61 63 74 65 72 73 2e 0a  44 41 54 41 27 01 00 00  |acters..DATA'...|
000863c0  4f 53 5f 43 6f 6e 76 65  72 74 48 65 78 32 0a 23  |OS_ConvertHex2.#|
000863d0  50 61 72 65 6e 74 20 4f  53 5f 43 6f 6e 76 65 72  |Parent OS_Conver|
000863e0  74 0a 3d 3e 09 52 30 20  3d 09 76 61 6c 75 65 20  |t.=>.R0 =.value |
000863f0  74 6f 20 62 65 20 63 6f  6e 76 65 72 74 65 64 0a  |to be converted.|
00086400  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
00086410  20 62 75 66 66 65 72 20  66 6f 72 20 72 65 73 75  | buffer for resu|
00086420  6c 74 69 6e 67 20 73 74  72 69 6e 67 0a 09 52 32  |lting string..R2|
00086430  20 3d 09 73 69 7a 65 20  6f 66 20 62 75 66 66 65  | =.size of buffe|
00086440  72 0a 0a 3d 09 52 30 20  3d 09 70 6f 69 6e 74 65  |r..=.R0 =.pointe|
00086450  72 20 74 6f 20 62 75 66  66 65 72 20 28 52 31 20  |r to buffer (R1 |
00086460  6f 6e 20 65 6e 74 72 79  29 0a 09 52 31 20 3d 09  |on entry)..R1 =.|
00086470  70 6f 69 6e 74 65 72 20  74 6f 20 74 65 72 6d 69  |pointer to termi|
00086480  6e 61 74 6f 72 0a 09 52  32 20 3d 09 66 72 65 65  |nator..R2 =.free|
00086490  20 62 79 74 65 73 20 69  6e 20 62 75 66 66 65 72  | bytes in buffer|
000864a0  0a 0a 54 68 69 73 20 53  57 49 20 63 6f 6e 76 65  |..This SWI conve|
000864b0  72 74 73 20 61 20 76 61  6c 75 65 20 69 6e 74 6f  |rts a value into|
000864c0  20 61 20 73 74 72 69 6e  67 20 6f 66 20 32 20 68  | a string of 2 h|
000864d0  65 78 20 63 68 61 72 61  63 74 65 72 73 2e 0a 00  |ex characters...|
000864e0  44 41 54 41 27 01 00 00  4f 53 5f 43 6f 6e 76 65  |DATA'...OS_Conve|
000864f0  72 74 48 65 78 31 0a 23  50 61 72 65 6e 74 20 4f  |rtHex1.#Parent O|
00086500  53 5f 43 6f 6e 76 65 72  74 0a 3d 3e 09 52 30 20  |S_Convert.=>.R0 |
00086510  3d 09 76 61 6c 75 65 20  74 6f 20 62 65 20 63 6f  |=.value to be co|
00086520  6e 76 65 72 74 65 64 0a  09 52 31 20 3d 09 70 6f  |nverted..R1 =.po|
00086530  69 6e 74 65 72 20 74 6f  20 62 75 66 66 65 72 20  |inter to buffer |
00086540  66 6f 72 20 72 65 73 75  6c 74 69 6e 67 20 73 74  |for resulting st|
00086550  72 69 6e 67 0a 09 52 32  20 3d 09 73 69 7a 65 20  |ring..R2 =.size |
00086560  6f 66 20 62 75 66 66 65  72 0a 0a 3c 3d 09 52 30  |of buffer..<=.R0|
00086570  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 62 75  | =.pointer to bu|
00086580  66 66 65 72 20 28 52 31  20 6f 6e 20 65 6e 74 72  |ffer (R1 on entr|
00086590  79 29 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |y)..R1 =.pointer|
000865a0  20 74 6f 20 74 65 72 6d  69 6e 61 74 6f 72 0a 09  | to terminator..|
000865b0  52 32 20 3d 09 66 72 65  65 20 62 79 74 65 73 20  |R2 =.free bytes |
000865c0  69 6e 20 62 75 66 66 65  72 0a 0a 54 68 69 73 20  |in buffer..This |
000865d0  53 57 49 20 63 6f 6e 76  65 72 74 73 20 61 20 76  |SWI converts a v|
000865e0  61 6c 75 65 20 69 6e 74  6f 20 61 20 73 74 72 69  |alue into a stri|
000865f0  6e 67 20 6f 66 20 31 20  68 65 78 20 63 68 61 72  |ng of 1 hex char|
00086600  61 63 74 65 72 2e 0a 00  44 41 54 41 25 01 00 00  |acter...DATA%...|
00086610  4f 53 5f 43 6f 6e 76 65  72 74 48 65 78 38 0a 23  |OS_ConvertHex8.#|
00086620  50 61 72 65 6e 74 20 4f  53 5f 43 6f 6e 76 65 72  |Parent OS_Conver|
00086630  74 0a 3d 3e 09 52 30 20  3d 09 76 61 6c 75 65 20  |t.=>.R0 =.value |
00086640  74 6f 20 62 65 20 63 6f  6e 76 65 72 74 65 64 0a  |to be converted.|
00086650  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 62 75  |.R1 =.pointer bu|
00086660  66 66 65 72 20 66 6f 72  20 72 65 73 75 6c 74 69  |ffer for resulti|
00086670  6e 67 20 73 74 72 69 6e  67 0a 09 52 32 20 3d 09  |ng string..R2 =.|
00086680  73 69 7a 65 20 6f 66 20  62 75 66 66 65 72 0a 0a  |size of buffer..|
00086690  3c 3d 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |<=.R0 =.pointer |
000866a0  74 6f 20 62 75 66 66 65  72 20 28 52 31 20 6f 6e  |to buffer (R1 on|
000866b0  20 65 6e 74 72 79 29 0a  09 52 31 20 3d 09 70 6f  | entry)..R1 =.po|
000866c0  69 6e 74 65 72 20 74 6f  20 74 65 72 6d 69 6e 61  |inter to termina|
000866d0  74 6f 72 0a 09 52 32 20  3d 09 66 72 65 65 20 62  |tor..R2 =.free b|
000866e0  79 74 65 73 20 69 6e 20  62 75 66 66 65 72 0a 0a  |ytes in buffer..|
000866f0  54 68 69 73 20 53 57 49  20 63 6f 6e 76 65 72 74  |This SWI convert|
00086700  73 20 61 20 76 61 6c 75  65 20 69 6e 74 6f 20 61  |s a value into a|
00086710  20 73 74 72 69 6e 67 20  6f 66 20 38 20 68 65 78  | string of 8 hex|
00086720  20 63 68 61 72 61 63 74  65 72 73 2e 0a 00 00 00  | characters.....|
00086730  44 41 54 41 28 01 00 00  4f 53 5f 43 6f 6e 76 65  |DATA(...OS_Conve|
00086740  72 74 48 65 78 36 0a 23  50 61 72 65 6e 74 20 4f  |rtHex6.#Parent O|
00086750  53 5f 43 6f 6e 76 65 72  74 0a 3d 3e 09 52 30 20  |S_Convert.=>.R0 |
00086760  3d 09 76 61 6c 75 65 20  74 6f 20 62 65 20 63 6f  |=.value to be co|
00086770  6e 76 65 72 74 65 64 0a  09 52 31 20 3d 09 70 6f  |nverted..R1 =.po|
00086780  69 6e 74 65 72 20 74 6f  20 62 75 66 66 65 72 20  |inter to buffer |
00086790  66 6f 72 20 72 65 73 75  6c 74 69 6e 67 20 73 74  |for resulting st|
000867a0  72 69 6e 67 0a 09 52 32  20 3d 09 73 69 7a 65 20  |ring..R2 =.size |
000867b0  6f 66 20 62 75 66 66 65  72 0a 0a 3c 3d 09 52 30  |of buffer..<=.R0|
000867c0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 62 75  | =.pointer to bu|
000867d0  66 66 65 72 20 28 52 31  20 6f 6e 20 65 6e 74 72  |ffer (R1 on entr|
000867e0  79 29 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |y)..R1 =.pointer|
000867f0  20 74 6f 20 74 65 72 6d  69 6e 61 74 6f 72 0a 09  | to terminator..|
00086800  52 32 20 3d 09 66 72 65  65 20 62 79 74 65 73 20  |R2 =.free bytes |
00086810  69 6e 20 62 75 66 66 65  72 0a 0a 54 68 69 73 20  |in buffer..This |
00086820  53 57 49 20 63 6f 6e 76  65 72 74 73 20 61 20 76  |SWI converts a v|
00086830  61 6c 75 65 20 69 6e 74  6f 20 61 20 73 74 72 69  |alue into a stri|
00086840  6e 67 20 6f 66 20 36 20  68 65 78 20 63 68 61 72  |ng of 6 hex char|
00086850  61 63 74 65 72 73 2e 0a  44 41 54 41 55 01 00 00  |acters..DATAU...|
00086860  4f 53 5f 43 6f 6e 76 65  72 74 43 61 72 64 69 6e  |OS_ConvertCardin|
00086870  61 6c 31 0a 23 50 61 72  65 6e 74 20 4f 53 5f 43  |al1.#Parent OS_C|
00086880  6f 6e 76 65 72 74 0a 3d  3e 09 52 30 20 3d 09 76  |onvert.=>.R0 =.v|
00086890  61 6c 75 65 20 74 6f 20  62 65 20 63 6f 6e 76 65  |alue to be conve|
000868a0  72 74 65 64 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |rted..R1 =.point|
000868b0  65 72 20 74 6f 20 62 75  66 66 65 72 20 66 6f 72  |er to buffer for|
000868c0  20 72 65 73 75 6c 74 69  6e 67 20 73 74 72 69 6e  | resulting strin|
000868d0  67 0a 09 52 32 20 3d 09  73 69 7a 65 20 6f 66 20  |g..R2 =.size of |
000868e0  62 75 66 66 65 72 0a 0a  3c 3d 09 52 30 20 3d 09  |buffer..<=.R0 =.|
000868f0  70 6f 69 6e 74 65 72 20  74 6f 20 62 75 66 66 65  |pointer to buffe|
00086900  72 20 28 52 31 20 6f 6e  20 65 6e 74 72 79 29 0a  |r (R1 on entry).|
00086910  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
00086920  20 74 65 72 6d 69 6e 61  74 6f 72 0a 09 52 32 20  | terminator..R2 |
00086930  3d 09 66 72 65 65 20 62  79 74 65 73 20 69 6e 20  |=.free bytes in |
00086940  62 75 66 66 65 72 0a 0a  54 68 69 73 20 53 57 49  |buffer..This SWI|
00086950  20 63 6f 6e 76 65 72 74  73 20 61 20 76 61 6c 75  | converts a valu|
00086960  65 20 69 6e 74 6f 20 61  6e 20 75 6e 73 69 67 6e  |e into an unsign|
00086970  65 64 20 73 74 72 69 6e  67 20 6f 66 20 64 65 63  |ed string of dec|
00086980  69 6d 61 6c 20 63 68 61  72 61 63 74 65 72 73 2e  |imal characters.|
00086990  20 54 68 65 20 6e 75 6d  62 65 72 20 63 61 6e 20  | The number can |
000869a0  62 65 20 30 20 74 6f 20  32 35 35 2e 0a 00 00 00  |be 0 to 255.....|
000869b0  44 41 54 41 57 01 00 00  4f 53 5f 43 6f 6e 76 65  |DATAW...OS_Conve|
000869c0  72 74 43 61 72 64 69 6e  61 6c 32 0a 23 50 61 72  |rtCardinal2.#Par|
000869d0  65 6e 74 20 4f 53 5f 43  6f 6e 76 65 72 74 0a 3d  |ent OS_Convert.=|
000869e0  3e 09 52 30 20 3d 09 76  61 6c 75 65 20 74 6f 20  |>.R0 =.value to |
000869f0  62 65 20 63 6f 6e 76 65  72 74 65 64 0a 09 52 31  |be converted..R1|
00086a00  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 62 75  | =.pointer to bu|
00086a10  66 66 65 72 20 66 6f 72  20 72 65 73 75 6c 74 69  |ffer for resulti|
00086a20  6e 67 20 73 74 72 69 6e  67 0a 09 52 32 20 3d 09  |ng string..R2 =.|
00086a30  73 69 7a 65 20 6f 66 20  62 75 66 66 65 72 0a 0a  |size of buffer..|
00086a40  3c 3d 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |<=.R0 =.pointer |
00086a50  74 6f 20 62 75 66 66 65  72 20 28 52 31 20 6f 6e  |to buffer (R1 on|
00086a60  20 65 6e 74 72 79 29 0a  09 52 31 20 3d 09 70 6f  | entry)..R1 =.po|
00086a70  69 6e 74 65 72 20 74 6f  20 74 65 72 6d 69 6e 61  |inter to termina|
00086a80  74 6f 72 0a 09 52 32 20  3d 09 66 72 65 65 20 62  |tor..R2 =.free b|
00086a90  79 74 65 73 20 69 6e 20  62 75 66 66 65 72 0a 0a  |ytes in buffer..|
00086aa0  54 68 69 73 20 53 57 49  20 63 6f 6e 76 65 72 74  |This SWI convert|
00086ab0  73 20 61 20 76 61 6c 75  65 20 69 6e 74 6f 20 61  |s a value into a|
00086ac0  6e 20 75 6e 73 69 67 6e  65 64 20 73 74 72 69 6e  |n unsigned strin|
00086ad0  67 20 6f 66 20 64 65 63  69 6d 61 6c 20 63 68 61  |g of decimal cha|
00086ae0  72 61 63 74 65 72 73 2e  20 54 68 65 20 6e 75 6d  |racters. The num|
00086af0  62 65 72 20 63 61 6e 20  62 65 20 30 20 74 6f 20  |ber can be 0 to |
00086b00  36 35 35 33 35 2e 0a 00  44 41 54 41 5a 01 00 00  |65535...DATAZ...|
00086b10  4f 53 5f 43 6f 6e 76 65  72 74 43 61 72 64 69 6e  |OS_ConvertCardin|
00086b20  61 6c 33 0a 23 50 61 72  65 6e 74 20 4f 53 5f 43  |al3.#Parent OS_C|
00086b30  6f 6e 76 65 72 74 0a 3d  3e 09 52 30 20 3d 09 76  |onvert.=>.R0 =.v|
00086b40  61 6c 75 65 20 74 6f 20  62 65 20 63 6f 6e 76 65  |alue to be conve|
00086b50  72 74 65 64 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |rted..R1 =.point|
00086b60  65 72 20 74 6f 20 62 75  66 66 65 72 20 66 6f 72  |er to buffer for|
00086b70  20 72 65 73 75 6c 74 69  6e 67 20 73 74 72 69 6e  | resulting strin|
00086b80  67 0a 09 52 32 20 3d 09  73 69 7a 65 20 6f 66 20  |g..R2 =.size of |
00086b90  62 75 66 66 65 72 0a 0a  3c 3d 09 52 30 20 3d 09  |buffer..<=.R0 =.|
00086ba0  70 6f 69 6e 74 65 72 20  74 6f 20 62 75 66 66 65  |pointer to buffe|
00086bb0  72 20 28 52 31 20 6f 6e  20 65 6e 74 72 79 29 0a  |r (R1 on entry).|
00086bc0  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
00086bd0  20 74 65 72 6d 69 6e 61  74 6f 72 0a 09 52 32 20  | terminator..R2 |
00086be0  3d 09 66 72 65 65 20 62  79 74 65 73 20 69 6e 20  |=.free bytes in |
00086bf0  62 75 66 66 65 72 0a 0a  54 68 69 73 20 53 57 49  |buffer..This SWI|
00086c00  20 63 6f 6e 76 65 72 74  73 20 61 20 76 61 6c 75  | converts a valu|
00086c10  65 20 69 6e 74 6f 20 61  6e 20 75 6e 73 69 67 6e  |e into an unsign|
00086c20  65 64 20 73 74 72 69 6e  67 20 6f 66 20 64 65 63  |ed string of dec|
00086c30  69 6d 61 6c 20 63 68 61  72 61 63 74 65 72 73 2e  |imal characters.|
00086c40  20 54 68 65 20 6e 75 6d  62 65 72 20 63 61 6e 20  | The number can |
00086c50  62 65 20 30 20 74 6f 20  31 36 37 37 37 32 31 35  |be 0 to 16777215|
00086c60  2e 0a 00 00 44 41 54 41  6c 01 00 00 4f 53 5f 43  |....DATAl...OS_C|
00086c70  6f 6e 76 65 72 74 43 61  72 64 69 6e 61 6c 34 0a  |onvertCardinal4.|
00086c80  23 50 61 72 65 6e 74 20  4f 53 5f 43 6f 6e 76 65  |#Parent OS_Conve|
00086c90  72 74 0a 3d 3e 09 52 30  20 3d 09 76 61 6c 75 65  |rt.=>.R0 =.value|
00086ca0  20 74 6f 20 62 65 20 63  6f 6e 76 65 72 74 65 64  | to be converted|
00086cb0  0a 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
00086cc0  6f 20 62 75 66 66 65 72  20 66 6f 72 20 72 65 73  |o buffer for res|
00086cd0  75 6c 74 69 6e 67 20 73  74 72 69 6e 67 0a 09 52  |ulting string..R|
00086ce0  32 20 3d 09 73 69 7a 65  20 6f 66 20 62 75 66 66  |2 =.size of buff|
00086cf0  65 72 0a 0a 3c 3d 09 52  30 20 3d 09 70 6f 69 6e  |er..<=.R0 =.poin|
00086d00  74 65 72 20 74 6f 20 62  75 66 66 65 72 20 28 52  |ter to buffer (R|
00086d10  31 20 6f 6e 20 65 6e 74  72 79 29 0a 09 52 31 20  |1 on entry)..R1 |
00086d20  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 74 65 72  |=.pointer to ter|
00086d30  6d 69 6e 61 74 6f 72 0a  09 52 32 20 3d 09 66 72  |minator..R2 =.fr|
00086d40  65 65 20 62 79 74 65 73  20 69 6e 20 62 75 66 66  |ee bytes in buff|
00086d50  65 72 0a 0a 54 68 69 73  20 53 57 49 20 63 6f 6e  |er..This SWI con|
00086d60  76 65 72 74 73 20 61 20  76 61 6c 75 65 20 69 6e  |verts a value in|
00086d70  74 6f 20 61 6e 20 75 6e  73 69 67 6e 65 64 20 73  |to an unsigned s|
00086d80  74 72 69 6e 67 20 6f 66  20 64 65 63 69 6d 61 6c  |tring of decimal|
00086d90  20 63 68 61 72 61 63 74  65 72 73 2e 20 54 68 65  | characters. The|
00086da0  20 6e 75 6d 62 65 72 20  63 61 6e 20 62 65 20 30  | number can be 0|
00086db0  20 74 6f 20 34 32 39 34  39 36 37 32 39 35 20 28  | to 4294967295 (|
00086dc0  31 30 20 63 68 61 72 61  63 74 65 72 73 29 2e 0a  |10 characters)..|
00086dd0  44 41 54 41 64 01 00 00  4f 53 5f 43 6f 6e 76 65  |DATAd...OS_Conve|
00086de0  72 74 49 6e 74 65 67 65  72 31 0a 23 50 61 72 65  |rtInteger1.#Pare|
00086df0  6e 74 20 4f 53 5f 43 6f  6e 76 65 72 74 0a 3d 3e  |nt OS_Convert.=>|
00086e00  09 52 30 20 3d 09 76 61  6c 75 65 20 74 6f 20 62  |.R0 =.value to b|
00086e10  65 20 63 6f 6e 76 65 72  74 65 64 0a 09 52 31 20  |e converted..R1 |
00086e20  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 62 75 66  |=.pointer to buf|
00086e30  66 65 72 20 66 6f 72 20  72 65 73 75 6c 74 69 6e  |fer for resultin|
00086e40  67 20 73 74 72 69 6e 67  0a 09 52 32 20 3d 09 73  |g string..R2 =.s|
00086e50  69 7a 65 20 6f 66 20 62  75 66 66 65 72 0a 0a 3c  |ize of buffer..<|
00086e60  3d 09 52 30 20 3d 09 70  6f 69 6e 74 65 72 20 74  |=.R0 =.pointer t|
00086e70  6f 20 62 75 66 66 65 72  20 28 52 31 20 6f 6e 20  |o buffer (R1 on |
00086e80  65 6e 74 72 79 29 0a 09  52 31 20 3d 09 70 6f 69  |entry)..R1 =.poi|
00086e90  6e 74 65 72 20 74 6f 20  74 65 72 6d 69 6e 61 74  |nter to terminat|
00086ea0  6f 72 0a 09 52 32 20 3d  09 66 72 65 65 20 62 79  |or..R2 =.free by|
00086eb0  74 65 73 20 69 6e 20 62  75 66 66 65 72 0a 0a 54  |tes in buffer..T|
00086ec0  68 69 73 20 53 57 49 20  63 6f 6e 76 65 72 74 73  |his SWI converts|
00086ed0  20 61 20 76 61 6c 75 65  20 69 6e 74 6f 20 61 6e  | a value into an|
00086ee0  20 73 69 67 6e 65 64 20  73 74 72 69 6e 67 20 6f  | signed string o|
00086ef0  66 20 64 65 63 69 6d 61  6c 20 63 68 61 72 61 63  |f decimal charac|
00086f00  74 65 72 73 2e 20 54 68  65 20 6e 75 6d 62 65 72  |ters. The number|
00086f10  20 63 61 6e 20 62 65 20  2d 31 32 38 20 74 6f 20  | can be -128 to |
00086f20  31 32 37 20 28 34 20 63  68 61 72 61 63 74 65 72  |127 (4 character|
00086f30  73 29 2e 0a 44 41 54 41  68 01 00 00 4f 53 5f 43  |s)..DATAh...OS_C|
00086f40  6f 6e 76 65 72 74 49 6e  74 65 67 65 72 32 0a 23  |onvertInteger2.#|
00086f50  50 61 72 65 6e 74 20 4f  53 5f 43 6f 6e 76 65 72  |Parent OS_Conver|
00086f60  74 0a 3d 3e 09 52 30 20  3d 09 76 61 6c 75 65 20  |t.=>.R0 =.value |
00086f70  74 6f 20 62 65 20 63 6f  6e 76 65 72 74 65 64 0a  |to be converted.|
00086f80  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
00086f90  20 62 75 66 66 65 72 20  66 6f 72 20 72 65 73 75  | buffer for resu|
00086fa0  6c 74 69 6e 67 20 73 74  72 69 6e 67 0a 09 52 32  |lting string..R2|
00086fb0  20 3d 09 73 69 7a 65 20  6f 66 20 62 75 66 66 65  | =.size of buffe|
00086fc0  72 0a 0a 3c 3d 09 52 30  20 3d 09 70 6f 69 6e 74  |r..<=.R0 =.point|
00086fd0  65 72 20 74 6f 20 62 75  66 66 65 72 20 28 52 31  |er to buffer (R1|
00086fe0  20 6f 6e 20 65 6e 74 72  79 29 0a 09 52 31 20 3d  | on entry)..R1 =|
00086ff0  09 70 6f 69 6e 74 65 72  20 74 6f 20 74 65 72 6d  |.pointer to term|
00087000  69 6e 61 74 6f 72 0a 09  52 32 20 3d 09 66 72 65  |inator..R2 =.fre|
00087010  65 20 62 79 74 65 73 20  69 6e 20 62 75 66 66 65  |e bytes in buffe|
00087020  72 0a 0a 54 68 69 73 20  53 57 49 20 63 6f 6e 76  |r..This SWI conv|
00087030  65 72 74 73 20 61 20 76  61 6c 75 65 20 69 6e 74  |erts a value int|
00087040  6f 20 61 6e 20 73 69 67  6e 65 64 20 73 74 72 69  |o an signed stri|
00087050  6e 67 20 6f 66 20 64 65  63 69 6d 61 6c 20 63 68  |ng of decimal ch|
00087060  61 72 61 63 74 65 72 73  2e 20 54 68 65 20 6e 75  |aracters. The nu|
00087070  6d 62 65 72 20 63 61 6e  20 62 65 20 2d 33 32 37  |mber can be -327|
00087080  36 38 20 74 6f 20 33 32  37 36 37 20 28 36 20 63  |68 to 32767 (6 c|
00087090  68 61 72 61 63 74 65 72  73 29 2e 0a 44 41 54 41  |haracters)..DATA|
000870a0  6c 01 00 00 4f 53 5f 43  6f 6e 76 65 72 74 49 6e  |l...OS_ConvertIn|
000870b0  74 65 67 65 72 33 0a 23  50 61 72 65 6e 74 20 4f  |teger3.#Parent O|
000870c0  53 5f 43 6f 6e 76 65 72  74 0a 3d 3e 09 52 30 20  |S_Convert.=>.R0 |
000870d0  3d 09 76 61 6c 75 65 20  74 6f 20 62 65 20 63 6f  |=.value to be co|
000870e0  6e 76 65 72 74 65 64 0a  09 52 31 20 3d 09 70 6f  |nverted..R1 =.po|
000870f0  69 6e 74 65 72 20 74 6f  20 62 75 66 66 65 72 20  |inter to buffer |
00087100  66 6f 72 20 72 65 73 75  6c 74 69 6e 67 20 73 74  |for resulting st|
00087110  72 69 6e 67 0a 09 52 32  20 3d 09 73 69 7a 65 20  |ring..R2 =.size |
00087120  6f 66 20 62 75 66 66 65  72 0a 0a 3c 3d 09 52 30  |of buffer..<=.R0|
00087130  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 62 75  | =.pointer to bu|
00087140  66 66 65 72 20 28 52 31  20 6f 6e 20 65 6e 74 72  |ffer (R1 on entr|
00087150  79 29 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |y)..R1 =.pointer|
00087160  20 74 6f 20 74 65 72 6d  69 6e 61 74 6f 72 0a 09  | to terminator..|
00087170  52 32 20 3d 09 66 72 65  65 20 62 79 74 65 73 20  |R2 =.free bytes |
00087180  69 6e 20 62 75 66 66 65  72 0a 0a 54 68 69 73 20  |in buffer..This |
00087190  53 57 49 20 63 6f 6e 76  65 72 74 73 20 61 20 76  |SWI converts a v|
000871a0  61 6c 75 65 20 69 6e 74  6f 20 61 6e 20 73 69 67  |alue into an sig|
000871b0  6e 65 64 20 73 74 72 69  6e 67 20 6f 66 20 64 65  |ned string of de|
000871c0  63 69 6d 61 6c 20 63 68  61 72 61 63 74 65 72 73  |cimal characters|
000871d0  2e 20 54 68 65 20 6e 75  6d 62 65 72 20 63 61 6e  |. The number can|
000871e0  20 62 65 20 2d 38 33 38  38 36 30 38 20 74 6f 20  | be -8388608 to |
000871f0  38 33 38 38 36 30 37 20  28 38 20 63 68 61 72 61  |8388607 (8 chara|
00087200  63 74 65 72 73 29 2e 0a  44 41 54 41 73 01 00 00  |cters)..DATAs...|
00087210  4f 53 5f 43 6f 6e 76 65  72 74 49 6e 74 65 67 65  |OS_ConvertIntege|
00087220  72 34 0a 23 50 61 72 65  6e 74 20 4f 53 5f 43 6f  |r4.#Parent OS_Co|
00087230  6e 76 65 72 74 0a 3d 3e  09 52 30 20 3d 09 76 61  |nvert.=>.R0 =.va|
00087240  6c 75 65 20 74 6f 20 62  65 20 63 6f 6e 76 65 72  |lue to be conver|
00087250  74 65 64 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |ted..R1 =.pointe|
00087260  72 20 74 6f 20 62 75 66  66 65 72 20 66 6f 72 20  |r to buffer for |
00087270  72 65 73 75 6c 74 69 6e  67 20 73 74 72 69 6e 67  |resulting string|
00087280  0a 09 52 32 20 3d 09 73  69 7a 65 20 6f 66 20 62  |..R2 =.size of b|
00087290  75 66 66 65 72 0a 0a 3c  3d 09 52 30 20 3d 09 70  |uffer..<=.R0 =.p|
000872a0  6f 69 6e 74 65 72 20 74  6f 20 62 75 66 66 65 72  |ointer to buffer|
000872b0  20 28 52 31 20 6f 6e 20  65 6e 74 72 79 29 0a 09  | (R1 on entry)..|
000872c0  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
000872d0  74 65 72 6d 69 6e 61 74  6f 72 0a 09 52 32 20 3d  |terminator..R2 =|
000872e0  09 66 72 65 65 20 62 79  74 65 73 20 69 6e 20 62  |.free bytes in b|
000872f0  75 66 66 65 72 0a 0a 54  68 69 73 20 53 57 49 20  |uffer..This SWI |
00087300  63 6f 6e 76 65 72 74 73  20 61 20 76 61 6c 75 65  |converts a value|
00087310  20 69 6e 74 6f 20 61 6e  20 73 69 67 6e 65 64 20  | into an signed |
00087320  73 74 72 69 6e 67 20 6f  66 20 64 65 63 69 6d 61  |string of decima|
00087330  6c 20 63 68 61 72 61 63  74 65 72 73 2e 20 54 68  |l characters. Th|
00087340  65 20 6e 75 6d 62 65 72  20 63 61 6e 20 62 65 20  |e number can be |
00087350  2d 32 31 34 37 34 38 33  36 34 38 20 74 6f 20 32  |-2147483648 to 2|
00087360  31 34 37 34 38 33 36 34  37 20 28 31 31 20 63 68  |147483647 (11 ch|
00087370  61 72 61 63 74 65 72 73  29 2e 0a 00 44 41 54 41  |aracters)...DATA|
00087380  2e 01 00 00 4f 53 5f 43  6f 6e 76 65 72 74 42 69  |....OS_ConvertBi|
00087390  6e 61 72 79 31 0a 23 50  61 72 65 6e 74 20 4f 53  |nary1.#Parent OS|
000873a0  5f 43 6f 6e 76 65 72 74  0a 3d 3e 09 52 30 20 3d  |_Convert.=>.R0 =|
000873b0  09 76 61 6c 75 65 20 74  6f 20 62 65 20 63 6f 6e  |.value to be con|
000873c0  76 65 72 74 65 64 0a 09  52 31 20 3d 09 70 6f 69  |verted..R1 =.poi|
000873d0  6e 74 65 72 20 74 6f 20  62 75 66 66 65 72 20 66  |nter to buffer f|
000873e0  6f 72 20 72 65 73 75 6c  74 69 6e 67 20 73 74 72  |or resulting str|
000873f0  69 6e 67 0a 09 52 32 20  3d 09 73 69 7a 65 20 6f  |ing..R2 =.size o|
00087400  66 20 62 75 66 66 65 72  0a 0a 3c 3d 09 52 30 20  |f buffer..<=.R0 |
00087410  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 62 75 66  |=.pointer to buf|
00087420  66 65 72 20 28 52 31 20  6f 6e 20 65 6e 74 72 79  |fer (R1 on entry|
00087430  29 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |)..R1 =.pointer |
00087440  74 6f 20 74 65 72 6d 69  6e 61 74 6f 72 0a 09 52  |to terminator..R|
00087450  32 20 3d 09 66 72 65 65  20 62 79 74 65 73 20 69  |2 =.free bytes i|
00087460  6e 20 62 75 66 66 65 72  0a 0a 54 68 69 73 20 53  |n buffer..This S|
00087470  57 49 20 63 6f 6e 76 65  72 74 73 20 61 20 76 61  |WI converts a va|
00087480  6c 75 65 20 69 6e 74 6f  20 61 20 73 74 72 69 6e  |lue into a strin|
00087490  67 20 6f 66 20 38 20 62  69 6e 61 72 79 20 63 68  |g of 8 binary ch|
000874a0  61 72 61 63 74 65 72 73  2e 0a 00 00 44 41 54 41  |aracters....DATA|
000874b0  2f 01 00 00 4f 53 5f 43  6f 6e 76 65 72 74 42 69  |/...OS_ConvertBi|
000874c0  6e 61 72 79 32 0a 23 50  61 72 65 6e 74 20 4f 53  |nary2.#Parent OS|
000874d0  5f 43 6f 6e 76 65 72 74  0a 3d 3e 09 52 30 20 3d  |_Convert.=>.R0 =|
000874e0  09 76 61 6c 75 65 20 74  6f 20 62 65 20 63 6f 6e  |.value to be con|
000874f0  76 65 72 74 65 64 0a 09  52 31 20 3d 09 70 6f 69  |verted..R1 =.poi|
00087500  6e 74 65 72 20 74 6f 20  62 75 66 66 65 72 20 66  |nter to buffer f|
00087510  6f 72 20 72 65 73 75 6c  74 69 6e 67 20 73 74 72  |or resulting str|
00087520  69 6e 67 0a 09 52 32 20  3d 09 73 69 7a 65 20 6f  |ing..R2 =.size o|
00087530  66 20 62 75 66 66 65 72  0a 0a 3c 3d 09 52 30 20  |f buffer..<=.R0 |
00087540  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 62 75 66  |=.pointer to buf|
00087550  66 65 72 20 28 52 31 20  6f 6e 20 65 6e 74 72 79  |fer (R1 on entry|
00087560  29 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |)..R1 =.pointer |
00087570  74 6f 20 74 65 72 6d 69  6e 61 74 6f 72 0a 09 52  |to terminator..R|
00087580  32 20 3d 09 66 72 65 65  20 62 79 74 65 73 20 69  |2 =.free bytes i|
00087590  6e 20 62 75 66 66 65 72  0a 0a 54 68 69 73 20 53  |n buffer..This S|
000875a0  57 49 20 63 6f 6e 76 65  72 74 73 20 61 20 76 61  |WI converts a va|
000875b0  6c 75 65 20 69 6e 74 6f  20 61 20 73 74 72 69 6e  |lue into a strin|
000875c0  67 20 6f 66 20 31 36 20  62 69 6e 61 72 79 20 63  |g of 16 binary c|
000875d0  68 61 72 61 63 74 65 72  73 2e 0a 00 44 41 54 41  |haracters...DATA|
000875e0  2f 01 00 00 4f 53 5f 43  6f 6e 76 65 72 74 42 69  |/...OS_ConvertBi|
000875f0  6e 61 72 79 33 0a 23 50  61 72 65 6e 74 20 4f 53  |nary3.#Parent OS|
00087600  5f 43 6f 6e 76 65 72 74  0a 3d 3e 09 52 30 20 3d  |_Convert.=>.R0 =|
00087610  09 76 61 6c 75 65 20 74  6f 20 62 65 20 63 6f 6e  |.value to be con|
00087620  76 65 72 74 65 64 0a 09  52 31 20 3d 09 70 6f 69  |verted..R1 =.poi|
00087630  6e 74 65 72 20 74 6f 20  62 75 66 66 65 72 20 66  |nter to buffer f|
00087640  6f 72 20 72 65 73 75 6c  74 69 6e 67 20 73 74 72  |or resulting str|
00087650  69 6e 67 0a 09 52 32 20  3d 09 73 69 7a 65 20 6f  |ing..R2 =.size o|
00087660  66 20 62 75 66 66 65 72  0a 0a 3c 3d 09 52 30 20  |f buffer..<=.R0 |
00087670  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 62 75 66  |=.pointer to buf|
00087680  66 65 72 20 28 52 31 20  6f 6e 20 65 6e 74 72 79  |fer (R1 on entry|
00087690  29 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |)..R1 =.pointer |
000876a0  74 6f 20 74 65 72 6d 69  6e 61 74 6f 72 0a 09 52  |to terminator..R|
000876b0  32 20 3d 09 66 72 65 65  20 62 79 74 65 73 20 69  |2 =.free bytes i|
000876c0  6e 20 62 75 66 66 65 72  0a 0a 54 68 69 73 20 53  |n buffer..This S|
000876d0  57 49 20 63 6f 6e 76 65  72 74 73 20 61 20 76 61  |WI converts a va|
000876e0  6c 75 65 20 69 6e 74 6f  20 61 20 73 74 72 69 6e  |lue into a strin|
000876f0  67 20 6f 66 20 32 34 20  62 69 6e 61 72 79 20 63  |g of 24 binary c|
00087700  68 61 72 61 63 74 65 72  73 2e 0a 00 44 41 54 41  |haracters...DATA|
00087710  2f 01 00 00 4f 53 5f 43  6f 6e 76 65 72 74 42 69  |/...OS_ConvertBi|
00087720  6e 61 72 79 34 0a 23 50  61 72 65 6e 74 20 4f 53  |nary4.#Parent OS|
00087730  5f 43 6f 6e 76 65 72 74  0a 3d 3e 09 52 30 20 3d  |_Convert.=>.R0 =|
00087740  09 76 61 6c 75 65 20 74  6f 20 62 65 20 63 6f 6e  |.value to be con|
00087750  76 65 72 74 65 64 0a 09  52 31 20 3d 09 70 6f 69  |verted..R1 =.poi|
00087760  6e 74 65 72 20 74 6f 20  62 75 66 66 65 72 20 66  |nter to buffer f|
00087770  6f 72 20 72 65 73 75 6c  74 69 6e 67 20 73 74 72  |or resulting str|
00087780  69 6e 67 0a 09 52 32 20  3d 09 73 69 7a 65 20 6f  |ing..R2 =.size o|
00087790  66 20 62 75 66 66 65 72  0a 0a 3c 3d 09 52 30 20  |f buffer..<=.R0 |
000877a0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 62 75 66  |=.pointer to buf|
000877b0  66 65 72 20 28 52 31 20  6f 6e 20 65 6e 74 72 79  |fer (R1 on entry|
000877c0  29 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |)..R1 =.pointer |
000877d0  74 6f 20 74 65 72 6d 69  6e 61 74 6f 72 0a 09 52  |to terminator..R|
000877e0  32 20 3d 09 66 72 65 65  20 62 79 74 65 73 20 69  |2 =.free bytes i|
000877f0  6e 20 62 75 66 66 65 72  0a 0a 54 68 69 73 20 53  |n buffer..This S|
00087800  57 49 20 63 6f 6e 76 65  72 74 73 20 61 20 76 61  |WI converts a va|
00087810  6c 75 65 20 69 6e 74 6f  20 61 20 73 74 72 69 6e  |lue into a strin|
00087820  67 20 6f 66 20 33 32 20  62 69 6e 61 72 79 20 63  |g of 32 binary c|
00087830  68 61 72 61 63 74 65 72  73 2e 0a 00 44 41 54 41  |haracters...DATA|
00087840  6a 01 00 00 4f 53 5f 43  6f 6e 76 65 72 74 53 70  |j...OS_ConvertSp|
00087850  61 63 65 64 43 61 72 64  69 6e 61 6c 31 0a 23 50  |acedCardinal1.#P|
00087860  61 72 65 6e 74 20 4f 53  5f 43 6f 6e 76 65 72 74  |arent OS_Convert|
00087870  0a 3d 3e 09 52 30 20 3d  09 76 61 6c 75 65 20 74  |.=>.R0 =.value t|
00087880  6f 20 62 65 20 63 6f 6e  76 65 72 74 65 64 0a 09  |o be converted..|
00087890  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
000878a0  62 75 66 66 65 72 20 66  6f 72 20 72 65 73 75 6c  |buffer for resul|
000878b0  74 69 6e 67 20 73 74 72  69 6e 67 0a 09 52 32 20  |ting string..R2 |
000878c0  3d 09 73 69 7a 65 20 6f  66 20 62 75 66 66 65 72  |=.size of buffer|
000878d0  0a 0a 3c 3d 09 52 30 20  3d 09 70 6f 69 6e 74 65  |..<=.R0 =.pointe|
000878e0  72 20 74 6f 20 62 75 66  66 65 72 20 28 52 31 20  |r to buffer (R1 |
000878f0  6f 6e 20 65 6e 74 72 79  29 0a 09 52 31 20 3d 09  |on entry)..R1 =.|
00087900  70 6f 69 6e 74 65 72 20  74 6f 20 74 65 72 6d 69  |pointer to termi|
00087910  6e 61 74 6f 72 0a 09 52  32 20 3d 09 66 72 65 65  |nator..R2 =.free|
00087920  20 62 79 74 65 73 20 69  6e 20 62 75 66 66 65 72  | bytes in buffer|
00087930  0a 0a 54 68 69 73 20 53  57 49 20 63 6f 6e 76 65  |..This SWI conve|
00087940  72 74 73 20 61 20 76 61  6c 75 65 20 69 6e 74 6f  |rts a value into|
00087950  20 61 6e 20 75 6e 73 69  67 6e 65 64 20 73 74 72  | an unsigned str|
00087960  69 6e 67 20 6f 66 20 64  65 63 69 6d 61 6c 20 63  |ing of decimal c|
00087970  68 61 72 61 63 74 65 72  73 2e 20 54 68 65 20 6e  |haracters. The n|
00087980  75 6d 62 65 72 20 63 61  6e 20 62 65 20 30 20 74  |umber can be 0 t|
00087990  6f 20 32 35 35 20 28 33  20 63 68 61 72 61 63 74  |o 255 (3 charact|
000879a0  65 72 73 29 2e 0a 00 00  44 41 54 41 6d 01 00 00  |ers)....DATAm...|
000879b0  4f 53 5f 43 6f 6e 76 65  72 74 53 70 61 63 65 64  |OS_ConvertSpaced|
000879c0  43 61 72 64 69 6e 61 6c  32 0a 23 50 61 72 65 6e  |Cardinal2.#Paren|
000879d0  74 20 4f 53 5f 43 6f 6e  76 65 72 74 0a 3d 3e 09  |t OS_Convert.=>.|
000879e0  52 30 20 3d 09 76 61 6c  75 65 20 74 6f 20 62 65  |R0 =.value to be|
000879f0  20 63 6f 6e 76 65 72 74  65 64 0a 09 52 31 20 3d  | converted..R1 =|
00087a00  09 70 6f 69 6e 74 65 72  20 74 6f 20 62 75 66 66  |.pointer to buff|
00087a10  65 72 20 66 6f 72 20 72  65 73 75 6c 74 69 6e 67  |er for resulting|
00087a20  20 73 74 72 69 6e 67 0a  09 52 32 20 3d 09 73 69  | string..R2 =.si|
00087a30  7a 65 20 6f 66 20 62 75  66 66 65 72 0a 0a 3c 3d  |ze of buffer..<=|
00087a40  09 52 30 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R0 =.pointer to|
00087a50  20 62 75 66 66 65 72 20  28 52 31 20 6f 6e 20 65  | buffer (R1 on e|
00087a60  6e 74 72 79 29 0a 09 52  31 20 3d 09 70 6f 69 6e  |ntry)..R1 =.poin|
00087a70  74 65 72 20 74 6f 20 74  65 72 6d 69 6e 61 74 6f  |ter to terminato|
00087a80  72 0a 09 52 32 20 3d 09  66 72 65 65 20 62 79 74  |r..R2 =.free byt|
00087a90  65 73 20 69 6e 20 62 75  66 66 65 72 0a 0a 54 68  |es in buffer..Th|
00087aa0  69 73 20 53 57 49 20 63  6f 6e 76 65 72 74 73 20  |is SWI converts |
00087ab0  61 20 76 61 6c 75 65 20  69 6e 74 6f 20 61 6e 20  |a value into an |
00087ac0  75 6e 73 69 67 6e 65 64  20 73 74 72 69 6e 67 20  |unsigned string |
00087ad0  6f 66 20 64 65 63 69 6d  61 6c 20 63 68 61 72 61  |of decimal chara|
00087ae0  63 74 65 72 73 2e 20 54  68 65 20 6e 75 6d 62 65  |cters. The numbe|
00087af0  72 20 63 61 6e 20 62 65  20 30 20 74 6f 20 36 35  |r can be 0 to 65|
00087b00  20 35 33 35 20 28 36 20  63 68 61 72 61 63 74 65  | 535 (6 characte|
00087b10  72 73 29 2e 0a 00 00 00  44 41 54 41 72 01 00 00  |rs).....DATAr...|
00087b20  4f 53 5f 43 6f 6e 76 65  72 74 53 70 61 63 65 64  |OS_ConvertSpaced|
00087b30  43 61 72 64 69 6e 61 6c  33 0a 23 50 61 72 65 6e  |Cardinal3.#Paren|
00087b40  74 20 4f 53 5f 43 6f 6e  76 65 72 74 0a 3d 3e 09  |t OS_Convert.=>.|
00087b50  52 30 20 3d 09 76 61 6c  75 65 20 74 6f 20 62 65  |R0 =.value to be|
00087b60  20 63 6f 6e 76 65 72 74  65 64 0a 09 52 31 20 3d  | converted..R1 =|
00087b70  09 70 6f 69 6e 74 65 72  20 74 6f 20 62 75 66 66  |.pointer to buff|
00087b80  65 72 20 66 6f 72 20 72  65 73 75 6c 74 69 6e 67  |er for resulting|
00087b90  20 73 74 72 69 6e 67 0a  09 52 32 20 3d 09 73 69  | string..R2 =.si|
00087ba0  7a 65 20 6f 66 20 62 75  66 66 65 72 0a 0a 3c 3d  |ze of buffer..<=|
00087bb0  09 52 30 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R0 =.pointer to|
00087bc0  20 62 75 66 66 65 72 20  28 52 31 20 6f 6e 20 65  | buffer (R1 on e|
00087bd0  6e 74 72 79 29 0a 09 52  31 20 3d 09 70 6f 69 6e  |ntry)..R1 =.poin|
00087be0  74 65 72 20 74 6f 20 74  65 72 6d 69 6e 61 74 6f  |ter to terminato|
00087bf0  72 0a 09 52 32 20 3d 09  66 72 65 65 20 62 79 74  |r..R2 =.free byt|
00087c00  65 73 20 69 6e 20 62 75  66 66 65 72 0a 0a 54 68  |es in buffer..Th|
00087c10  69 73 20 53 57 49 20 63  6f 6e 76 65 72 74 73 20  |is SWI converts |
00087c20  61 20 76 61 6c 75 65 20  69 6e 74 6f 20 61 6e 20  |a value into an |
00087c30  75 6e 73 69 67 6e 65 64  20 73 74 72 69 6e 67 20  |unsigned string |
00087c40  6f 66 20 64 65 63 69 6d  61 6c 20 63 68 61 72 61  |of decimal chara|
00087c50  63 74 65 72 73 2e 20 54  68 65 20 6e 75 6d 62 65  |cters. The numbe|
00087c60  72 20 63 61 6e 20 62 65  20 30 20 74 6f 20 31 36  |r can be 0 to 16|
00087c70  20 37 37 37 20 32 31 35  20 28 31 30 20 63 68 61  | 777 215 (10 cha|
00087c80  72 61 63 74 65 72 73 29  2e 0a 00 00 44 41 54 41  |racters)....DATA|
00087c90  75 01 00 00 4f 53 5f 43  6f 6e 76 65 72 74 53 70  |u...OS_ConvertSp|
00087ca0  61 63 65 64 43 61 72 64  69 6e 61 6c 34 0a 23 50  |acedCardinal4.#P|
00087cb0  61 72 65 6e 74 20 4f 53  5f 43 6f 6e 76 65 72 74  |arent OS_Convert|
00087cc0  0a 3d 3e 09 52 30 20 3d  09 76 61 6c 75 65 20 74  |.=>.R0 =.value t|
00087cd0  6f 20 62 65 20 63 6f 6e  76 65 72 74 65 64 0a 09  |o be converted..|
00087ce0  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
00087cf0  62 75 66 66 65 72 20 66  6f 72 20 72 65 73 75 6c  |buffer for resul|
00087d00  74 69 6e 67 20 73 74 72  69 6e 67 0a 09 52 32 20  |ting string..R2 |
00087d10  3d 09 73 69 7a 65 20 6f  66 20 62 75 66 66 65 72  |=.size of buffer|
00087d20  0a 0a 3c 3d 09 52 30 20  3d 09 70 6f 69 6e 74 65  |..<=.R0 =.pointe|
00087d30  72 20 74 6f 20 62 75 66  66 65 72 20 28 52 31 20  |r to buffer (R1 |
00087d40  6f 6e 20 65 6e 74 72 79  29 0a 09 52 31 20 3d 09  |on entry)..R1 =.|
00087d50  70 6f 69 6e 74 65 72 20  74 6f 20 74 65 72 6d 69  |pointer to termi|
00087d60  6e 61 74 6f 72 0a 09 52  32 20 3d 09 66 72 65 65  |nator..R2 =.free|
00087d70  20 62 79 74 65 73 20 69  6e 20 62 75 66 66 65 72  | bytes in buffer|
00087d80  0a 0a 54 68 69 73 20 53  57 49 20 63 6f 6e 76 65  |..This SWI conve|
00087d90  72 74 73 20 61 20 76 61  6c 75 65 20 69 6e 74 6f  |rts a value into|
00087da0  20 61 6e 20 75 6e 73 69  67 6e 65 64 20 73 74 72  | an unsigned str|
00087db0  69 6e 67 20 6f 66 20 64  65 63 69 6d 61 6c 20 63  |ing of decimal c|
00087dc0  68 61 72 61 63 74 65 72  73 2e 20 54 68 65 20 6e  |haracters. The n|
00087dd0  75 6d 62 65 72 20 63 61  6e 20 62 65 20 30 20 74  |umber can be 0 t|
00087de0  6f 20 34 20 32 39 34 20  39 36 37 20 32 39 35 20  |o 4 294 967 295 |
00087df0  28 31 33 20 63 68 61 72  61 63 74 65 72 73 29 2e  |(13 characters).|
00087e00  0a 00 00 00 44 41 54 41  6a 01 00 00 4f 53 5f 43  |....DATAj...OS_C|
00087e10  6f 6e 76 65 72 74 53 70  61 63 65 64 49 6e 74 65  |onvertSpacedInte|
00087e20  67 65 72 31 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |ger1.#Parent OS_|
00087e30  43 6f 6e 76 65 72 74 0a  3d 3e 09 52 30 20 3d 09  |Convert.=>.R0 =.|
00087e40  76 61 6c 75 65 20 74 6f  20 62 65 20 63 6f 6e 76  |value to be conv|
00087e50  65 72 74 65 64 0a 09 52  31 20 3d 09 70 6f 69 6e  |erted..R1 =.poin|
00087e60  74 65 72 20 74 6f 20 62  75 66 66 65 72 20 66 6f  |ter to buffer fo|
00087e70  72 20 72 65 73 75 6c 74  69 6e 67 20 73 74 72 69  |r resulting stri|
00087e80  6e 67 0a 09 52 32 20 3d  09 73 69 7a 65 20 6f 66  |ng..R2 =.size of|
00087e90  20 62 75 66 66 65 72 0a  0a 3c 3d 09 52 30 20 3d  | buffer..<=.R0 =|
00087ea0  09 70 6f 69 6e 74 65 72  20 74 6f 20 62 75 66 66  |.pointer to buff|
00087eb0  65 72 20 28 52 31 20 6f  6e 20 65 6e 74 72 79 29  |er (R1 on entry)|
00087ec0  0a 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
00087ed0  6f 20 74 65 72 6d 69 6e  61 74 6f 72 0a 09 52 32  |o terminator..R2|
00087ee0  20 3d 09 66 72 65 65 20  62 79 74 65 73 20 69 6e  | =.free bytes in|
00087ef0  20 62 75 66 66 65 72 0a  0a 54 68 69 73 20 53 57  | buffer..This SW|
00087f00  49 20 63 6f 6e 76 65 72  74 73 20 61 20 76 61 6c  |I converts a val|
00087f10  75 65 20 69 6e 74 6f 20  61 6e 20 73 69 67 6e 65  |ue into an signe|
00087f20  64 20 73 74 72 69 6e 67  20 6f 66 20 64 65 63 69  |d string of deci|
00087f30  6d 61 6c 20 63 68 61 72  61 63 74 65 72 73 2e 20  |mal characters. |
00087f40  54 68 65 20 6e 75 6d 62  65 72 20 63 61 6e 20 62  |The number can b|
00087f50  65 20 2d 31 32 38 20 74  6f 20 31 32 37 20 28 34  |e -128 to 127 (4|
00087f60  20 63 68 61 72 61 63 74  65 72 73 29 2e 0a 00 00  | characters)....|
00087f70  44 41 54 41 70 01 00 00  4f 53 5f 43 6f 6e 76 65  |DATAp...OS_Conve|
00087f80  72 74 53 70 61 63 65 64  49 6e 74 65 67 65 72 32  |rtSpacedInteger2|
00087f90  0a 23 50 61 72 65 6e 74  20 4f 53 5f 43 6f 6e 76  |.#Parent OS_Conv|
00087fa0  65 72 74 0a 3d 3e 09 52  30 20 3d 09 76 61 6c 75  |ert.=>.R0 =.valu|
00087fb0  65 20 74 6f 20 62 65 20  63 6f 6e 76 65 72 74 65  |e to be converte|
00087fc0  64 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |d..R1 =.pointer |
00087fd0  74 6f 20 62 75 66 66 65  72 20 66 6f 72 20 72 65  |to buffer for re|
00087fe0  73 75 6c 74 69 6e 67 20  73 74 72 69 6e 67 0a 09  |sulting string..|
00087ff0  52 32 20 3d 09 73 69 7a  65 20 6f 66 20 62 75 66  |R2 =.size of buf|
00088000  66 65 72 0a 0a 3c 3d 09  52 30 20 3d 09 70 6f 69  |fer..<=.R0 =.poi|
00088010  6e 74 65 72 20 74 6f 20  62 75 66 66 65 72 20 28  |nter to buffer (|
00088020  52 31 20 6f 6e 20 65 6e  74 72 79 29 0a 09 52 31  |R1 on entry)..R1|
00088030  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 74 65  | =.pointer to te|
00088040  72 6d 69 6e 61 74 6f 72  0a 09 52 32 20 3d 09 66  |rminator..R2 =.f|
00088050  72 65 65 20 62 79 74 65  73 20 69 6e 20 62 75 66  |ree bytes in buf|
00088060  66 65 72 0a 0a 54 68 69  73 20 53 57 49 20 63 6f  |fer..This SWI co|
00088070  6e 76 65 72 74 73 20 61  20 76 61 6c 75 65 20 69  |nverts a value i|
00088080  6e 74 6f 20 61 6e 20 73  69 67 6e 65 64 20 73 74  |nto an signed st|
00088090  72 69 6e 67 20 6f 66 20  64 65 63 69 6d 61 6c 20  |ring of decimal |
000880a0  63 68 61 72 61 63 74 65  72 73 2e 20 54 68 65 20  |characters. The |
000880b0  6e 75 6d 62 65 72 20 63  61 6e 20 62 65 20 2d 33  |number can be -3|
000880c0  32 20 37 36 38 20 74 6f  20 33 32 20 37 36 37 20  |2 768 to 32 767 |
000880d0  28 37 20 63 68 61 72 61  63 74 65 72 73 29 2e 0a  |(7 characters)..|
000880e0  44 41 54 41 77 01 00 00  4f 53 5f 43 6f 6e 76 65  |DATAw...OS_Conve|
000880f0  72 74 53 70 61 63 65 64  49 6e 74 65 67 65 72 33  |rtSpacedInteger3|
00088100  0a 23 50 61 72 65 6e 74  20 4f 53 5f 43 6f 6e 76  |.#Parent OS_Conv|
00088110  65 72 74 0a 3d 3e 09 52  30 20 3d 09 76 61 6c 75  |ert.=>.R0 =.valu|
00088120  65 20 74 6f 20 62 65 20  63 6f 6e 76 65 72 74 65  |e to be converte|
00088130  64 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |d..R1 =.pointer |
00088140  74 6f 20 62 75 66 66 65  72 20 66 6f 72 20 72 65  |to buffer for re|
00088150  73 75 6c 74 69 6e 67 20  73 74 72 69 6e 67 0a 09  |sulting string..|
00088160  52 32 20 3d 09 73 69 7a  65 20 6f 66 20 62 75 66  |R2 =.size of buf|
00088170  66 65 72 0a 0a 3c 3d 09  52 30 20 3d 09 70 6f 69  |fer..<=.R0 =.poi|
00088180  6e 74 65 72 20 74 6f 20  62 75 66 66 65 72 20 28  |nter to buffer (|
00088190  52 31 20 6f 6e 20 65 6e  74 72 79 29 0a 09 52 31  |R1 on entry)..R1|
000881a0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 74 65  | =.pointer to te|
000881b0  72 6d 69 6e 61 74 6f 72  0a 09 52 32 20 3d 09 66  |rminator..R2 =.f|
000881c0  72 65 65 20 62 79 74 65  73 20 69 6e 20 62 75 66  |ree bytes in buf|
000881d0  66 65 72 0a 0a 54 68 69  73 20 53 57 49 20 63 6f  |fer..This SWI co|
000881e0  6e 76 65 72 74 73 20 61  20 76 61 6c 75 65 20 69  |nverts a value i|
000881f0  6e 74 6f 20 61 6e 20 73  69 67 6e 65 64 20 73 74  |nto an signed st|
00088200  72 69 6e 67 20 6f 66 20  64 65 63 69 6d 61 6c 20  |ring of decimal |
00088210  63 68 61 72 61 63 74 65  72 73 2e 20 54 68 65 20  |characters. The |
00088220  6e 75 6d 62 65 72 20 63  61 6e 20 62 65 20 2d 38  |number can be -8|
00088230  20 33 38 38 20 36 30 38  20 74 6f 20 38 20 33 38  | 388 608 to 8 38|
00088240  38 20 36 30 37 20 28 31  30 20 63 68 61 72 61 63  |8 607 (10 charac|
00088250  74 65 72 73 29 2e 0a 00  44 41 54 41 7f 01 00 00  |ters)...DATA....|
00088260  4f 53 5f 43 6f 6e 76 65  72 74 53 70 61 63 65 64  |OS_ConvertSpaced|
00088270  49 6e 74 65 67 65 72 34  0a 23 50 61 72 65 6e 74  |Integer4.#Parent|
00088280  20 4f 53 5f 43 6f 6e 76  65 72 74 0a 3d 3e 09 52  | OS_Convert.=>.R|
00088290  30 20 3d 09 76 61 6c 75  65 20 74 6f 20 62 65 20  |0 =.value to be |
000882a0  63 6f 6e 76 65 72 74 65  64 0a 09 52 31 20 3d 09  |converted..R1 =.|
000882b0  70 6f 69 6e 74 65 72 20  74 6f 20 62 75 66 66 65  |pointer to buffe|
000882c0  72 20 66 6f 72 20 72 65  73 75 6c 74 69 6e 67 20  |r for resulting |
000882d0  73 74 72 69 6e 67 0a 09  52 32 20 3d 09 73 69 7a  |string..R2 =.siz|
000882e0  65 20 6f 66 20 62 75 66  66 65 72 0a 0a 3c 3d 09  |e of buffer..<=.|
000882f0  52 30 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R0 =.pointer to |
00088300  62 75 66 66 65 72 20 28  52 31 20 6f 6e 20 65 6e  |buffer (R1 on en|
00088310  74 72 79 29 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |try)..R1 =.point|
00088320  65 72 20 74 6f 20 74 65  72 6d 69 6e 61 74 6f 72  |er to terminator|
00088330  0a 09 52 32 20 3d 09 66  72 65 65 20 62 79 74 65  |..R2 =.free byte|
00088340  73 20 69 6e 20 62 75 66  66 65 72 0a 0a 54 68 69  |s in buffer..Thi|
00088350  73 20 53 57 49 20 63 6f  6e 76 65 72 74 73 20 61  |s SWI converts a|
00088360  20 76 61 6c 75 65 20 69  6e 74 6f 20 61 6e 20 73  | value into an s|
00088370  69 67 6e 65 64 20 73 74  72 69 6e 67 20 6f 66 20  |igned string of |
00088380  64 65 63 69 6d 61 6c 20  63 68 61 72 61 63 74 65  |decimal characte|
00088390  72 73 2e 20 54 68 65 20  6e 75 6d 62 65 72 20 63  |rs. The number c|
000883a0  61 6e 20 62 65 20 2d 32  20 31 34 37 20 34 38 33  |an be -2 147 483|
000883b0  20 36 34 38 20 74 6f 20  32 20 31 34 37 20 34 38  | 648 to 2 147 48|
000883c0  33 20 36 34 37 20 28 31  34 20 63 68 61 72 61 63  |3 647 (14 charac|
000883d0  74 65 72 73 29 2e 0a 00  44 41 54 41 77 02 00 00  |ters)...DATAw...|
000883e0  4f 53 5f 43 6f 6e 76 65  72 74 46 69 78 65 64 4e  |OS_ConvertFixedN|
000883f0  65 74 53 74 61 74 69 6f  6e 20 20 28 26 45 39 29  |etStation  (&E9)|
00088400  0a 23 50 61 72 65 6e 74  20 4f 53 5f 43 6f 6e 76  |.#Parent OS_Conv|
00088410  65 72 74 0a 3d 3e 09 52  30 20 3d 09 70 6f 69 6e  |ert.=>.R0 =.poin|
00088420  74 65 72 20 74 6f 20 3c  6e 65 74 20 61 6e 64 20  |ter to <net and |
00088430  73 74 61 74 69 6f 6e 20  6e 75 6d 62 65 72 3d 3e  |station number=>|
00088440  4f 53 5f 43 6f 6e 76 65  72 74 6e 65 74 73 74 61  |OS_Convertnetsta|
00088450  74 69 6f 6e 62 6c 6f 63  6b 3e 0a 09 52 31 20 3d  |tionblock>..R1 =|
00088460  09 70 6f 69 6e 74 65 72  20 74 6f 20 62 75 66 66  |.pointer to buff|
00088470  65 72 20 66 6f 72 20 72  65 73 75 6c 74 69 6e 67  |er for resulting|
00088480  20 73 74 72 69 6e 67 0a  09 52 32 20 3d 09 73 69  | string..R2 =.si|
00088490  7a 65 20 6f 66 20 62 75  66 66 65 72 0a 3c 3d 09  |ze of buffer.<=.|
000884a0  52 30 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R0 =.pointer to |
000884b0  62 75 66 66 65 72 20 28  52 31 20 6f 6e 20 65 6e  |buffer (R1 on en|
000884c0  74 72 79 29 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |try)..R1 =.point|
000884d0  65 72 20 74 6f 20 74 65  72 6d 69 6e 61 74 6f 72  |er to terminator|
000884e0  0a 09 52 32 20 3d 09 66  72 65 65 20 62 79 74 65  |..R2 =.free byte|
000884f0  73 20 69 6e 20 62 75 66  66 65 72 0a 0a 54 68 69  |s in buffer..Thi|
00088500  73 20 53 57 49 20 63 6f  6e 76 65 72 74 73 20 74  |s SWI converts t|
00088510  68 65 20 6e 65 74 77 6f  72 6b 20 61 6e 64 20 73  |he network and s|
00088520  74 61 74 69 6f 6e 20 6e  75 6d 62 65 72 20 74 6f  |tation number to|
00088530  20 61 20 73 74 72 69 6e  67 20 6f 66 20 74 68 65  | a string of the|
00088540  20 66 6f 72 6d 20 22 7b  2f 7d 6e 6e 6e 2e 73 73  | form "{/}nnn.ss|
00088550  73 7b 2f 7d 22 2e 0a 0a  49 66 20 74 68 65 20 6e  |s{/}"...If the n|
00088560  65 74 77 6f 72 6b 20 69  73 20 30 0a 8f 09 74 68  |etwork is 0...th|
00088570  65 20 66 69 72 73 74 20  66 6f 75 72 20 63 68 61  |e first four cha|
00088580  72 61 63 74 65 72 73 20  61 72 65 20 73 70 61 63  |racters are spac|
00088590  65 73 0a 8f 09 6c 65 61  64 69 6e 67 20 7a 65 72  |es...leading zer|
000885a0  6f 73 20 69 6e 20 74 68  65 20 73 74 61 74 69 6f  |os in the statio|
000885b0  6e 20 6e 75 6d 62 65 72  20 61 72 65 20 63 6f 6e  |n number are con|
000885c0  76 65 72 74 65 64 20 74  6f 20 73 70 61 63 65 73  |verted to spaces|
000885d0  0a 6f 74 68 65 72 77 69  73 65 0a 8f 09 6c 65 61  |.otherwise...lea|
000885e0  64 69 6e 67 20 7a 65 72  6f 73 20 69 6e 20 74 68  |ding zeros in th|
000885f0  65 20 6e 65 74 77 6f 72  6b 20 6e 75 6d 62 65 72  |e network number|
00088600  20 61 72 65 20 63 6f 6e  76 65 72 74 65 64 20 74  | are converted t|
00088610  6f 20 73 70 61 63 65 73  0a 8f 09 6c 65 61 64 69  |o spaces...leadi|
00088620  6e 67 20 7a 65 72 6f 73  20 69 6e 20 74 68 65 20  |ng zeros in the |
00088630  73 74 61 74 69 6f 6e 20  6e 75 6d 62 65 72 20 72  |station number r|
00088640  65 6d 61 69 6e 20 61 73  20 7a 65 72 6f 73 0a 00  |emain as zeros..|
00088650  44 41 54 41 05 02 00 00  4f 53 5f 43 6f 6e 76 65  |DATA....OS_Conve|
00088660  72 74 4e 65 74 53 74 61  74 69 6f 6e 20 20 28 26  |rtNetStation  (&|
00088670  45 41 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 43  |EA).#Parent OS_C|
00088680  6f 6e 76 65 72 74 0a 3d  3e 09 52 30 20 3d 09 70  |onvert.=>.R0 =.p|
00088690  6f 69 6e 74 65 72 20 74  6f 20 3c 6e 65 74 20 61  |ointer to <net a|
000886a0  6e 64 20 73 74 61 74 69  6f 6e 20 6e 75 6d 62 65  |nd station numbe|
000886b0  72 3d 3e 4f 53 5f 43 6f  6e 76 65 72 74 6e 65 74  |r=>OS_Convertnet|
000886c0  73 74 61 74 69 6f 6e 62  6c 6f 63 6b 3e 0a 09 52  |stationblock>..R|
000886d0  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 62  |1 =.pointer to b|
000886e0  75 66 66 65 72 20 66 6f  72 20 72 65 73 75 6c 74  |uffer for result|
000886f0  69 6e 67 20 73 74 72 69  6e 67 0a 09 52 32 20 3d  |ing string..R2 =|
00088700  09 73 69 7a 65 20 6f 66  20 62 75 66 66 65 72 0a  |.size of buffer.|
00088710  3c 3d 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |<=.R0 =.pointer |
00088720  74 6f 20 62 75 66 66 65  72 20 28 52 31 20 6f 6e  |to buffer (R1 on|
00088730  20 65 6e 74 72 79 29 0a  09 52 31 20 3d 09 70 6f  | entry)..R1 =.po|
00088740  69 6e 74 65 72 20 74 6f  20 74 65 72 6d 69 6e 61  |inter to termina|
00088750  74 6f 72 0a 09 52 32 20  3d 09 66 72 65 65 20 62  |tor..R2 =.free b|
00088760  79 74 65 73 20 69 6e 20  62 75 66 66 65 72 0a 0a  |ytes in buffer..|
00088770  54 68 69 73 20 53 57 49  20 63 6f 6e 76 65 72 74  |This SWI convert|
00088780  73 20 74 68 65 20 6e 65  74 77 6f 72 6b 20 61 6e  |s the network an|
00088790  64 20 73 74 61 74 69 6f  6e 20 6e 75 6d 62 65 72  |d station number|
000887a0  20 74 6f 20 61 20 73 74  72 69 6e 67 20 6f 66 20  | to a string of |
000887b0  74 68 65 20 66 6f 72 6d  20 22 7b 2f 7d 6e 6e 6e  |the form "{/}nnn|
000887c0  2e 73 73 73 7b 2f 7d 22  2c 20 62 75 74 20 73 75  |.sss{/}", but su|
000887d0  70 70 72 65 73 73 65 73  20 7a 65 72 6f 73 20 61  |ppresses zeros a|
000887e0  6e 64 20 73 70 61 63 65  73 20 74 6f 20 79 69 65  |nd spaces to yie|
000887f0  6c 64 20 74 68 65 20 73  68 6f 72 74 65 73 74 20  |ld the shortest |
00088800  73 74 72 69 6e 67 20 2d  20 68 65 6e 63 65 20 69  |string - hence i|
00088810  66 20 74 68 65 20 6e 65  74 77 6f 72 6b 20 69 73  |f the network is|
00088820  20 30 20 6e 6f 20 6e 65  74 77 6f 72 6b 20 6e 75  | 0 no network nu|
00088830  6d 62 65 72 20 6f 72 20  22 2e 22 20 69 73 20 70  |mber or "." is p|
00088840  6c 61 63 65 64 20 69 6e  20 74 68 65 20 62 75 66  |laced in the buf|
00088850  66 65 72 2e 0a 00 00 00  44 41 54 41 7a 00 00 00  |fer.....DATAz...|
00088860  4f 53 5f 43 6f 6e 76 65  72 74 28 46 69 78 65 64  |OS_Convert(Fixed|
00088870  29 4e 65 74 53 74 61 74  69 6f 6e 20 62 6c 6f 63  |)NetStation bloc|
00088880  6b 0a 23 50 61 72 65 6e  74 20 4f 53 5f 43 6f 6e  |k.#Parent OS_Con|
00088890  76 65 72 74 4e 65 74 53  74 61 74 69 6f 6e 0a 53  |vertNetStation.S|
000888a0  69 7a 65 09 56 61 6c 75  65 0a 23 4c 69 6e 65 0a  |ize.Value.#Line.|
000888b0  34 09 6e 65 74 77 6f 72  6b 20 6e 75 6d 62 65 72  |4.network number|
000888c0  0a 34 09 73 74 61 74 69  6f 6e 20 6e 75 6d 62 65  |.4.station numbe|
000888d0  72 0a 00 00 44 49 52 24  d4 01 00 00 d4 01 00 00  |r...DIR$........|
000888e0  a8 8a 08 00 47 fd ff ff  df 9b bd cd 40 01 00 00  |....G.......@...|
000888f0  13 00 00 00 00 00 00 00  31 00 00 00 e8 8b 08 00  |........1.......|
00088900  46 fd ff ff 7d c0 7e f5  c9 01 00 00 13 00 00 00  |F...}.~.........|
00088910  00 00 00 00 31 30 00 00  b4 8d 08 00 46 fd ff ff  |....10......F...|
00088920  2d c4 7e f5 b8 01 00 00  13 00 00 00 00 00 00 00  |-.~.............|
00088930  31 31 00 00 6c 8f 08 00  47 fd ff ff 24 44 9e ce  |11..l...G...$D..|
00088940  60 01 00 00 13 00 00 00  00 00 00 00 32 00 00 00  |`...........2...|
00088950  cc 90 08 00 48 fd ff ff  ac 4b e1 1b 8c 03 00 00  |....H....K......|
00088960  13 00 00 00 00 00 00 00  32 35 36 00 58 94 08 00  |........256.X...|
00088970  47 fd ff ff 8d a3 bd cd  bf 02 00 00 13 00 00 00  |G...............|
00088980  00 00 00 00 32 35 37 00  18 97 08 00 46 fd ff ff  |....257.....F...|
00088990  58 a7 7e f5 3a 02 00 00  13 00 00 00 00 00 00 00  |X.~.:...........|
000889a0  34 00 00 00 54 99 08 00  48 ff ff ff d7 6f 2f 1e  |4...T...H....o/.|
000889b0  52 04 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |R...........!Roo|
000889c0  74 00 00 00 a8 9d 08 00  47 fd ff ff e2 ff ef b2  |t.......G.......|
000889d0  df 01 00 00 13 00 00 00  00 00 00 00 72 65 61 73  |............reas|
000889e0  6f 6e 73 00 88 9f 08 00  48 fd ff ff 38 1d 81 2b  |ons.....H...8..+|
000889f0  98 01 00 00 13 01 00 00  00 00 00 00 33 5f 00 00  |............3_..|
00088a00  5c ac 08 00 46 fd ff ff  5c 83 7e f5 18 06 00 00  |\...F...\.~.....|
00088a10  13 00 00 00 00 00 00 00  33 00 00 00 74 b2 08 00  |........3...t...|
00088a20  47 fd ff ff c0 57 9e ce  79 06 00 00 13 00 00 00  |G....W..y.......|
00088a30  00 00 00 00 31 2b 32 00  f0 b8 08 00 47 fd ff ff  |....1+2.....G...|
00088a40  e4 a9 bd cd cc 04 00 00  13 00 00 00 00 00 00 00  |................|
00088a50  36 00 00 00 bc bd 08 00  47 fd ff ff eb 48 9b 1a  |6.......G....H..|
00088a60  c9 02 00 00 13 00 00 00  00 00 00 00 37 00 00 00  |............7...|
00088a70  88 c0 08 00 46 fd ff ff  3a b9 7e f5 96 01 00 00  |....F...:.~.....|
00088a80  13 00 00 00 00 00 00 00  38 00 00 00 20 c2 08 00  |........8... ...|
00088a90  46 fd ff ff 18 bd 7e f5  b6 01 00 00 13 00 00 00  |F.....~.........|
00088aa0  00 00 00 00 39 00 00 00  44 41 54 41 40 01 00 00  |....9...DATA@...|
00088ab0  55 70 63 61 6c 6c 20 31  20 2d 20 4d 65 64 69 61  |Upcall 1 - Media|
00088ac0  20 6e 6f 74 20 70 72 65  73 65 6e 74 0a 23 50 61  | not present.#Pa|
00088ad0  72 65 6e 74 20 4f 53 5f  55 70 63 61 6c 6c 52 65  |rent OS_UpcallRe|
00088ae0  61 73 6f 6e 73 0a 3d 3e  09 52 30 20 3d 09 31 0a  |asons.=>.R0 =.1.|
00088af0  09 52 31 20 3d 09 46 53  20 6e 75 6d 62 65 72 0a  |.R1 =.FS number.|
00088b00  09 52 32 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R2 =.pointer to|
00088b10  20 6d 65 64 69 61 20 6e  61 6d 65 0a 09 52 33 20  | media name..R3 |
00088b20  3d 09 64 65 76 69 63 65  20 6e 75 6d 62 65 72 0a  |=.device number.|
00088b30  09 52 34 20 3d 09 69 74  65 72 61 74 69 6f 6e 20  |.R4 =.iteration |
00088b40  63 6f 75 6e 74 0a 09 52  35 20 3d 09 74 69 6d 65  |count..R5 =.time|
00088b50  6f 75 74 20 64 65 6c 61  79 0a 09 52 36 20 3d 09  |out delay..R6 =.|
00088b60  70 6f 69 6e 74 65 72 20  74 6f 20 6d 65 64 69 61  |pointer to media|
00088b70  20 74 79 70 65 0a 0a 3c  3d 09 52 30 20 3d 09 63  | type..<=.R0 =.c|
00088b80  68 61 6e 67 65 64 0a 0a  54 68 69 73 20 55 70 63  |hanged..This Upc|
00088b90  61 6c 6c 20 69 73 20 63  61 6c 6c 65 64 20 77 68  |all is called wh|
00088ba0  65 6e 20 61 20 6d 65 64  69 61 20 63 68 61 6e 67  |en a media chang|
00088bb0  65 20 28 65 67 20 61 6e  6f 74 68 65 72 20 64 69  |e (eg another di|
00088bc0  73 63 29 20 69 73 20 72  65 71 75 69 72 65 64 2e  |sc) is required.|
00088bd0  0a 0a 23 49 6e 63 6c 75  64 65 20 4f 53 5f 55 70  |..#Include OS_Up|
00088be0  43 61 6c 6c 31 2b 32 0a  44 41 54 41 c9 01 00 00  |Call1+2.DATA....|
00088bf0  4f 53 5f 55 70 43 61 6c  6c 20 31 30 20 2d 20 53  |OS_UpCall 10 - S|
00088c00  74 72 65 61 6d 20 43 72  65 61 74 65 64 0a 3d 3e  |tream Created.=>|
00088c10  09 52 30 20 3d 09 31 30  20 28 53 74 72 65 61 6d  |.R0 =.10 (Stream|
00088c20  20 63 72 65 61 74 65 64  29 0a 09 52 31 20 3d 09  | created)..R1 =.|
00088c30  64 65 76 69 63 65 20 64  72 69 76 65 72 27 73 20  |device driver's |
00088c40  68 61 6e 64 6c 65 0a 09  52 32 20 3d 09 30 20 69  |handle..R2 =.0 i|
00088c50  66 20 63 72 65 61 74 65  64 20 66 6f 72 20 72 65  |f created for re|
00088c60  63 65 70 74 69 6f 6e 20  28 65 6c 73 65 20 63 72  |ception (else cr|
00088c70  65 61 74 65 64 20 66 6f  72 20 74 72 61 6e 73 6d  |eated for transm|
00088c80  69 73 73 69 6f 6e 29 0a  09 52 33 20 3d 09 66 69  |ission)..R3 =.fi|
00088c90  6c 65 20 68 61 6e 64 6c  65 20 66 6f 72 20 73 74  |le handle for st|
00088ca0  72 65 61 6d 0a 09 52 34  20 3d 09 44 65 76 69 63  |ream..R4 =.Devic|
00088cb0  65 46 53 20 73 74 72 65  61 6d 20 68 61 6e 64 6c  |eFS stream handl|
00088cc0  65 2c 20 61 73 20 70 61  73 73 65 64 20 74 6f 20  |e, as passed to |
00088cd0  64 65 76 69 63 65 20 64  72 69 76 65 72 20 6f 6e  |device driver on|
00088ce0  20 69 6e 69 74 69 61 6c  69 73 61 74 69 6f 6e 0a  | initialisation.|
00088cf0  20 20 20 0a 3c 3d 09 41  6c 6c 20 72 65 67 69 73  |   .<=.All regis|
00088d00  74 65 72 73 20 70 72 65  73 65 72 76 65 64 0a 0a  |ters preserved..|
00088d10  44 65 76 69 63 65 46 53  20 69 73 73 75 65 73 20  |DeviceFS issues |
00088d20  74 68 69 73 20 63 61 6c  6c 20 77 68 65 6e 20 61  |this call when a|
00088d30  20 73 74 72 65 61 6d 20  69 73 20 63 72 65 61 74  | stream is creat|
00088d40  65 64 2e 20 49 74 20 73  65 72 76 65 73 20 61 73  |ed. It serves as|
00088d50  20 61 20 62 72 6f 61 64  63 61 73 74 2c 20 61 6e  | a broadcast, an|
00088d60  64 20 61 6c 6c 20 72 65  67 69 73 74 65 72 73 20  |d all registers |
00088d70  73 68 6f 75 6c 64 20 62  65 20 70 72 65 73 65 72  |should be preser|
00088d80  76 65 64 2e 0a 0a 54 68  69 73 20 63 61 6c 6c 20  |ved...This call |
00088d90  69 73 20 6e 65 76 65 72  20 69 73 73 75 65 64 20  |is never issued |
00088da0  75 6e 64 65 72 20 52 49  53 43 20 4f 53 20 32 2e  |under RISC OS 2.|
00088db0  0a 00 00 00 44 41 54 41  b8 01 00 00 4f 53 5f 55  |....DATA....OS_U|
00088dc0  70 43 61 6c 6c 20 31 31  20 2d 20 53 74 72 65 61  |pCall 11 - Strea|
00088dd0  6d 20 43 6c 6f 73 65 64  0a 3d 3e 09 52 30 20 3d  |m Closed.=>.R0 =|
00088de0  09 31 30 20 28 53 74 72  65 61 6d 20 63 6c 6f 73  |.10 (Stream clos|
00088df0  65 64 29 0a 09 52 31 20  3d 09 64 65 76 69 63 65  |ed)..R1 =.device|
00088e00  20 64 72 69 76 65 72 27  73 20 68 61 6e 64 6c 65  | driver's handle|
00088e10  0a 09 52 32 20 3d 09 30  20 69 66 20 63 6c 6f 73  |..R2 =.0 if clos|
00088e20  65 64 20 66 6f 72 20 72  65 63 65 70 74 69 6f 6e  |ed for reception|
00088e30  20 28 65 6c 73 65 20 63  6c 6f 73 65 20 66 6f 72  | (else close for|
00088e40  20 74 72 61 6e 73 6d 69  73 73 69 6f 6e 29 0a 09  | transmission)..|
00088e50  52 33 20 3d 09 66 69 6c  65 20 68 61 6e 64 6c 65  |R3 =.file handle|
00088e60  20 66 6f 72 20 73 74 72  65 61 6d 0a 09 52 34 20  | for stream..R4 |
00088e70  3d 09 44 65 76 69 63 65  46 53 20 73 74 72 65 61  |=.DeviceFS strea|
00088e80  6d 20 68 61 6e 64 6c 65  2c 20 61 73 20 70 61 73  |m handle, as pas|
00088e90  73 65 64 20 74 6f 20 64  65 76 69 63 65 20 64 72  |sed to device dr|
00088ea0  69 76 65 72 20 6f 6e 20  69 6e 73 74 61 6c 6c 61  |iver on installa|
00088eb0  74 69 6f 6e 0a 0a 3c 3d  09 41 6c 6c 20 72 65 67  |tion..<=.All reg|
00088ec0  69 73 74 65 72 73 20 70  72 65 73 65 72 76 65 64  |isters preserved|
00088ed0  0a 0a 44 65 76 69 63 65  46 53 20 69 73 73 75 65  |..DeviceFS issue|
00088ee0  64 20 74 68 69 73 20 63  61 6c 6c 20 77 68 65 6e  |d this call when|
00088ef0  20 61 20 73 74 72 65 61  6d 20 69 73 20 63 6c 6f  | a stream is clo|
00088f00  73 65 64 2e 20 49 74 20  73 65 72 76 65 73 20 61  |sed. It serves a|
00088f10  73 20 61 20 62 72 6f 61  64 63 61 73 74 2c 20 61  |s a broadcast, a|
00088f20  6e 64 20 61 6c 6c 20 72  65 67 69 73 74 65 72 73  |nd all registers|
00088f30  20 73 68 6f 75 6c 64 20  62 65 20 70 72 65 73 65  | should be prese|
00088f40  72 76 65 64 2e 0a 0a 54  68 69 73 20 63 61 6c 6c  |rved...This call|
00088f50  20 69 73 20 69 73 73 75  65 64 20 75 6e 64 65 72  | is issued under|
00088f60  20 52 49 53 43 20 4f 53  20 32 2e 0a 44 41 54 41  | RISC OS 2..DATA|
00088f70  60 01 00 00 55 70 63 61  6c 6c 20 32 20 2d 20 4d  |`...Upcall 2 - M|
00088f80  65 64 69 61 20 6e 6f 74  20 6b 6e 6f 77 6e 0a 3d  |edia not known.=|
00088f90  3e 09 52 30 20 3d 09 32  0a 09 52 31 20 3d 09 3c  |>.R0 =.2..R1 =.<|
00088fa0  46 53 20 6e 75 6d 62 65  72 3d 3e 66 73 79 73 5f  |FS number=>fsys_|
00088fb0  69 64 65 6e 74 3e 0a 09  52 32 20 3d 09 70 6f 69  |ident>..R2 =.poi|
00088fc0  6e 74 65 72 20 74 6f 20  6d 65 64 69 61 20 6e 61  |nter to media na|
00088fd0  6d 65 0a 09 52 33 20 3d  09 64 65 76 69 63 65 20  |me..R3 =.device |
00088fe0  6e 75 6d 62 65 72 0a 09  52 34 20 3d 09 69 74 65  |number..R4 =.ite|
00088ff0  72 61 74 69 6f 6e 20 63  6f 75 6e 74 0a 09 52 35  |ration count..R5|
00089000  20 3d 09 74 69 6d 65 6f  75 74 20 64 65 6c 61 79  | =.timeout delay|
00089010  0a 09 52 36 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R6 =.pointer t|
00089020  6f 20 6d 65 64 69 61 20  74 79 70 65 0a 0a 3c 3d  |o media type..<=|
00089030  09 52 30 20 3d 09 30 20  69 66 20 63 68 61 6e 67  |.R0 =.0 if chang|
00089040  65 64 2c 20 2d 31 20 69  66 20 6e 6f 20 6c 6f 6e  |ed, -1 if no lon|
00089050  67 65 72 20 72 65 71 75  69 72 65 64 0a 0a 54 68  |ger required..Th|
00089060  69 73 20 55 70 63 61 6c  6c 20 69 73 20 63 61 6c  |is Upcall is cal|
00089070  6c 65 64 20 77 68 65 6e  20 61 20 6d 65 64 69 61  |led when a media|
00089080  20 68 61 73 20 6e 65 76  65 72 20 62 65 65 6e 20  | has never been |
00089090  73 65 65 6e 20 62 65 66  6f 72 65 2c 20 62 75 74  |seen before, but|
000890a0  20 68 61 73 20 62 65 65  6e 20 72 65 71 75 65 73  | has been reques|
000890b0  74 65 64 2e 0a 0a 23 49  6e 63 6c 75 64 65 20 4f  |ted...#Include O|
000890c0  53 5f 55 70 43 61 6c 6c  31 2b 32 0a 44 41 54 41  |S_UpCall1+2.DATA|
000890d0  8c 03 00 00 4f 53 5f 55  70 43 61 6c 6c 20 32 35  |....OS_UpCall 25|
000890e0  36 20 2d 20 4e 65 77 20  41 70 70 6c 69 63 61 74  |6 - New Applicat|
000890f0  69 6f 6e 0a 3d 3e 09 52  30 20 3d 09 32 35 36 20  |ion.=>.R0 =.256 |
00089100  28 4e 65 77 20 41 70 70  6c 69 63 61 74 69 6f 6e  |(New Application|
00089110  29 0a 09 52 32 20 3d 09  3c 43 75 72 72 65 6e 74  |)..R2 =.<Current|
00089120  6c 79 20 41 63 74 69 76  65 20 4f 62 6a 65 63 74  |ly Active Object|
00089130  20 70 6f 69 6e 74 65 72  3d 3e 4f 53 5f 68 61 6e  | pointer=>OS_han|
00089140  64 6c 65 72 73 5f 63 61  6f 3e 0a 20 20 20 0a 3c  |dlers_cao>.   .<|
00089150  3d 09 52 30 20 3d 09 30  20 74 6f 20 73 74 6f 70  |=.R0 =.0 to stop|
00089160  20 61 70 70 6c 69 63 61  74 69 6f 6e 2c 20 65 6c  | application, el|
00089170  73 65 20 52 30 20 69 73  20 70 72 65 73 65 72 76  |se R0 is preserv|
00089180  65 64 0a 0a 54 68 69 73  20 75 70 63 61 6c 6c 20  |ed..This upcall |
00089190  77 61 72 6e 73 20 79 6f  75 72 20 70 72 6f 67 72  |warns your progr|
000891a0  61 6d 20 74 68 61 74 20  61 20 6e 65 77 20 61 70  |am that a new ap|
000891b0  70 6c 69 63 61 74 69 6f  6e 20 69 73 20 67 6f 69  |plication is goi|
000891c0  6e 67 20 74 6f 20 62 65  20 73 74 61 72 74 65 64  |ng to be started|
000891d0  0a 0a 54 68 69 73 20 63  61 6c 6c 20 69 73 20 6d  |..This call is m|
000891e0  61 64 65 20 6a 75 73 74  20 62 65 66 6f 72 65 20  |ade just before |
000891f0  61 20 6e 65 77 20 61 70  70 6c 69 63 61 74 69 6f  |a new applicatio|
00089200  6e 20 69 73 20 67 6f 69  6e 67 20 74 6f 20 62 65  |n is going to be|
00089210  20 73 74 61 72 74 65 64  20 69 6e 20 74 68 65 20  | started in the |
00089220  63 75 72 72 65 6e 74 20  61 70 70 6c 69 63 61 74  |current applicat|
00089230  69 6f 6e 20 73 70 61 63  65 20 2d 20 66 6f 72 20  |ion space - for |
00089240  65 78 61 6d 70 6c 65 20  64 75 65 20 74 6f 20 61  |example due to a|
00089250  20 2a 52 75 6e 20 6f 72  20 6d 6f 64 75 6c 65 20  | *Run or module |
00089260  63 6f 6d 6d 61 6e 64 2e  20 49 74 20 63 61 6c 6c  |command. It call|
00089270  73 20 74 68 65 20 55 70  43 61 6c 6c 20 76 65 63  |s the UpCall vec|
00089280  74 6f 72 2e 0a 0a 4f 6e  65 20 72 65 61 73 6f 6e  |tor...One reason|
00089290  20 74 6f 20 75 73 65 20  74 68 69 73 20 63 61 6c  | to use this cal|
000892a0  6c 20 69 73 20 73 6f 20  74 68 61 74 20 61 6e 20  |l is so that an |
000892b0  61 70 70 6c 69 63 61 74  69 6f 6e 20 63 61 6e 20  |application can |
000892c0  74 69 64 79 20 75 70 20  69 74 73 65 6c 66 20 62  |tidy up itself b|
000892d0  65 66 6f 72 65 20 61 20  6e 65 77 20 6f 6e 65 20  |efore a new one |
000892e0  69 73 20 73 74 61 72 74  65 64 2c 20 65 67 20 72  |is started, eg r|
000892f0  65 6d 6f 76 69 6e 67 20  72 6f 75 74 69 6e 65 73  |emoving routines|
00089300  20 66 72 6f 6d 20 76 65  63 74 6f 72 2e 0a 0a 41  | from vector...A|
00089310  6e 6f 74 68 65 72 20 72  65 61 73 6f 6e 20 74 6f  |nother reason to|
00089320  20 75 73 65 20 74 68 69  73 20 55 70 43 61 6c 6c  | use this UpCall|
00089330  20 69 73 20 74 6f 20 70  72 65 76 65 6e 74 20 61  | is to prevent a|
00089340  6e 20 61 70 70 6c 69 63  61 74 69 6f 6e 20 66 72  |n application fr|
00089350  6f 6d 20 73 74 61 72 74  69 6e 67 2e 20 49 66 20  |om starting. If |
00089360  79 6f 75 20 64 6f 6e 27  74 20 77 61 6e 74 20 74  |you don't want t|
00089370  68 65 20 61 70 70 6c 69  63 61 74 69 6f 6e 20 74  |he application t|
00089380  6f 20 73 74 61 72 74 2c  20 79 6f 75 72 20 72 6f  |o start, your ro|
00089390  75 74 69 6e 65 20 73 68  6f 75 6c 64 20 73 65 74  |utine should set|
000893a0  20 52 30 20 74 6f 20 30  2c 20 61 6e 64 20 69 6e  | R0 to 0, and in|
000893b0  74 65 72 63 65 70 74 20  74 68 65 20 63 61 6c 6c  |tercept the call|
000893c0  20 74 6f 20 74 68 65 20  76 65 63 74 6f 72 2e 20  | to the vector. |
000893d0  54 68 69 73 20 77 69 6c  6c 20 63 61 75 73 65 20  |This will cause |
000893e0  74 68 65 20 65 72 72 6f  72 20 27 55 6e 61 62 6c  |the error 'Unabl|
000893f0  65 20 74 6f 20 73 74 61  72 74 20 61 70 70 6c 69  |e to start appli|
00089400  63 61 74 69 6f 6e 27 20  74 6f 20 62 65 20 67 69  |cation' to be gi|
00089410  76 65 6e 2e 20 4f 74 68  65 72 77 69 73 65 2c 20  |ven. Otherwise, |
00089420  79 6f 75 20 6d 75 73 74  20 70 61 73 73 20 74 68  |you must pass th|
00089430  65 20 63 61 6c 6c 20 6f  6e 20 77 69 74 68 20 61  |e call on with a|
00089440  6c 6c 20 72 65 69 67 73  74 65 72 73 20 70 72 65  |ll reigsters pre|
00089450  73 65 72 76 65 64 2e 0a  44 41 54 41 bf 02 00 00  |served..DATA....|
00089460  4f 53 5f 55 70 43 61 6c  6c 20 32 35 37 20 2d 20  |OS_UpCall 257 - |
00089470  4d 6f 76 69 6e 67 20 6d  65 6d 6f 72 79 0a 23 50  |Moving memory.#P|
00089480  61 72 65 6e 74 20 4f 53  5f 55 70 63 61 6c 6c 52  |arent OS_UpcallR|
00089490  65 61 73 6f 6e 73 0a 3d  3e 09 52 30 20 3d 09 32  |easons.=>.R0 =.2|
000894a0  35 37 20 28 4d 6f 76 69  6e 67 20 6d 65 6d 6f 72  |57 (Moving memor|
000894b0  79 29 0a 09 52 31 20 3d  09 61 6d 6f 75 6e 74 20  |y)..R1 =.amount |
000894c0  74 68 61 74 20 61 70 70  6c 69 63 61 74 69 6f 6e  |that application|
000894d0  20 73 70 61 63 65 20 69  73 20 67 6f 69 6e 67 20  | space is going |
000894e0  74 6f 20 63 68 61 6e 67  65 20 62 79 0a 20 20 20  |to change by.   |
000894f0  20 20 20 20 20 20 20 20  20 20 20 0a 3c 3d 09 52  |           .<=.R|
00089500  30 20 3d 09 30 20 74 6f  20 70 65 72 6d 69 74 20  |0 =.0 to permit |
00089510  6d 65 6d 6f 72 79 20 6d  6f 76 65 64 2c 20 65 6c  |memory moved, el|
00089520  73 65 20 70 72 65 73 65  72 76 65 64 0a 09 52 31  |se preserved..R1|
00089530  20 70 72 65 73 65 72 76  65 64 0a 0a 54 68 69 73  | preserved..This|
00089540  20 55 70 63 61 6c 6c 20  69 6e 66 6f 72 6d 73 20  | Upcall informs |
00089550  79 6f 75 72 20 70 72 6f  67 72 61 6d 20 74 68 61  |your program tha|
00089560  74 20 52 49 53 43 20 4f  53 20 77 6f 75 6c 64 20  |t RISC OS would |
00089570  6c 69 6b 65 20 74 6f 20  6d 6f 76 65 20 6d 65 6d  |like to move mem|
00089580  6f 72 79 0a 0a 54 68 69  73 20 63 61 6c 6c 20 69  |ory..This call i|
00089590  73 20 6d 61 64 65 20 6a  75 73 74 20 62 65 66 6f  |s made just befo|
000895a0  72 65 20 3c 4f 53 5f 43  68 61 6e 67 65 44 79 6e  |re <OS_ChangeDyn|
000895b0  61 6d 69 63 41 72 65 61  3e 20 74 72 69 65 73 20  |amicArea> tries |
000895c0  74 6f 20 6d 6f 76 65 20  6d 65 6d 6f 72 79 2e 20  |to move memory. |
000895d0  54 68 65 20 63 61 6c 6c  20 69 73 20 6f 6e 6c 79  |The call is only|
000895e0  20 6d 61 64 65 20 69 66  20 74 68 65 20 63 75 72  | made if the cur|
000895f0  72 65 6e 74 6c 79 20 61  63 74 69 76 65 20 6f 62  |rently active ob|
00089600  6a 65 63 74 20 69 73 20  69 6e 20 74 68 65 20 61  |ject is in the a|
00089610  70 70 6c 69 63 61 74 69  6f 6e 20 73 70 61 63 65  |pplication space|
00089620  2e 20 49 74 20 63 61 6c  6c 73 20 74 68 65 20 55  |. It calls the U|
00089630  70 43 61 6c 6c 20 76 65  63 74 6f 72 2e 20 42 79  |pCall vector. By|
00089640  20 64 65 66 61 75 6c 74  20 28 69 66 20 79 6f 75  | default (if you|
00089650  20 64 6f 6e 27 74 20 63  6c 61 69 6d 20 74 68 65  | don't claim the|
00089660  20 76 65 63 74 6f 72 29  20 74 68 65 20 6d 65 6d  | vector) the mem|
00089670  6f 72 79 20 69 73 6e 27  74 20 6d 6f 76 65 64 2e  |ory isn't moved.|
00089680  0a 0a 59 6f 75 72 20 72  6f 75 74 69 6e 65 20 6d  |..Your routine m|
00089690  75 73 74 20 73 68 75 66  66 6c 65 20 79 6f 75 72  |ust shuffle your|
000896a0  20 61 70 70 6c 69 63 61  74 69 6f 6e 27 73 20 77  | application's w|
000896b0  6f 72 6b 73 70 61 63 65  20 73 6f 20 74 68 61 74  |orkspace so that|
000896c0  20 74 68 65 20 6d 65 6d  6f 72 79 20 63 61 6e 20  | the memory can |
000896d0  67 6f 20 61 68 65 61 64  2e 20 49 74 20 6d 75 73  |go ahead. It mus|
000896e0  74 20 74 68 65 6e 20 73  65 74 20 52 30 20 3d 20  |t then set R0 = |
000896f0  30 2c 20 61 6e 64 20 70  61 73 73 20 6f 6e 20 74  |0, and pass on t|
00089700  68 65 20 63 61 6c 6c 20  74 6f 20 74 68 65 20 76  |he call to the v|
00089710  65 63 74 6f 72 2e 0a 00  44 41 54 41 3a 02 00 00  |ector...DATA:...|
00089720  55 70 63 61 6c 6c 20 34  20 2d 20 4d 65 64 69 61  |Upcall 4 - Media|
00089730  20 73 65 61 72 63 68 20  65 6e 64 0a 3d 3e 09 52  | search end.=>.R|
00089740  30 20 3d 09 34 20 28 4d  65 64 69 61 20 73 65 61  |0 =.4 (Media sea|
00089750  72 63 68 20 65 6e 64 29  0a 3c 3d 09 52 30 20 70  |rch end).<=.R0 p|
00089760  72 65 73 65 72 76 65 64  0a 0a 54 68 69 73 20 55  |reserved..This U|
00089770  70 63 61 6c 6c 20 49 6e  66 6f 72 6d 73 20 79 6f  |pcall Informs yo|
00089780  75 72 20 70 72 6f 67 72  61 6d 20 74 68 61 74 20  |ur program that |
00089790  61 20 6d 69 73 73 69 6e  67 20 66 69 6c 69 6e 67  |a missing filing|
000897a0  20 6d 65 64 69 75 6d 20  68 61 73 20 62 65 65 6e  | medium has been|
000897b0  20 73 75 70 70 6c 69 65  64 2c 20 6f 72 20 74 68  | supplied, or th|
000897c0  61 74 20 61 6e 20 6f 70  65 72 61 74 69 6f 6e 20  |at an operation |
000897d0  69 6e 76 6f 6c 76 69 6e  67 20 6f 6e 65 20 68 61  |involving one ha|
000897e0  73 20 62 65 65 6e 20 63  61 6e 63 65 6c 6c 65 64  |s been cancelled|
000897f0  0a 0a 54 68 69 73 20 63  61 6c 6c 20 69 73 20 6d  |..This call is m|
00089800  61 64 65 20 62 79 20 52  49 53 43 20 4f 53 20 74  |ade by RISC OS t|
00089810  6f 20 69 6e 66 6f 72 6d  20 79 6f 75 72 20 70 72  |o inform your pr|
00089820  6f 67 72 61 6d 20 74 68  61 74 20 61 20 6d 69 73  |ogram that a mis|
00089830  73 69 6e 67 20 66 69 6c  69 6e 67 20 6d 65 64 69  |sing filing medi|
00089840  75 6d 20 68 61 73 20 62  65 65 6e 20 73 75 70 70  |um has been supp|
00089850  6c 69 65 64 2c 20 6f 72  20 74 68 61 74 20 61 6e  |lied, or that an|
00089860  20 6f 70 65 72 61 74 69  6f 6e 20 69 6e 76 6f 6c  | operation invol|
00089870  76 69 6e 67 20 6f 6e 65  20 68 61 73 20 62 65 65  |ving one has bee|
00089880  6e 20 63 61 6e 63 65 6c  6c 65 64 2e 20 49 74 20  |n cancelled. It |
00089890  69 73 20 61 6c 77 61 79  73 20 70 72 65 63 65 64  |is always preced|
000898a0  65 64 20 62 79 20 63 61  6c 6c 28 73 29 20 6f 66  |ed by call(s) of|
000898b0  20 3c 4f 53 5f 55 70 43  61 6c 6c 20 31 3d 3e 4f  | <OS_UpCall 1=>O|
000898c0  53 5f 55 70 43 61 6c 6c  31 3e 20 6f 72 20 3c 4f  |S_UpCall1> or <O|
000898d0  53 5f 55 70 43 61 6c 6c  20 32 3d 3e 4f 53 5f 55  |S_UpCall 2=>OS_U|
000898e0  70 43 61 6c 6c 32 3e 2e  20 54 68 69 73 20 63 61  |pCall2>. This ca|
000898f0  6c 6c 20 69 73 20 74 79  70 69 63 61 6c 6c 79 20  |ll is typically |
00089900  75 73 65 64 20 74 6f 20  72 65 6d 6f 76 65 20 65  |used to remove e|
00089910  72 72 6f 72 20 6d 65 73  73 61 67 65 73 20 64 69  |rror messages di|
00089920  73 70 6c 61 79 65 64 20  77 68 65 6e 20 4f 53 5f  |splayed when OS_|
00089930  55 70 43 61 6c 6c 20 31  20 6f 72 20 32 20 77 61  |UpCall 1 or 2 wa|
00089940  73 20 66 69 72 73 74 20  67 65 6e 65 72 61 74 65  |s first generate|
00089950  64 2e 00 00 44 41 54 41  52 04 00 00 4f 53 5f 55  |d...DATAR...OS_U|
00089960  70 43 61 6c 6c 20 28 26  33 33 29 0a 23 50 61 72  |pCall (&33).#Par|
00089970  65 6e 74 20 4f 53 5f 0a  3d 3e 09 52 30 20 3d 09  |ent OS_.=>.R0 =.|
00089980  3c 72 65 61 73 6f 6e 20  63 6f 64 65 3d 3e 4f 53  |<reason code=>OS|
00089990  5f 55 70 43 61 6c 6c 52  65 61 73 6f 6e 73 3e 0a  |_UpCallReasons>.|
000899a0  09 41 6c 6c 20 6f 74 68  65 72 20 72 65 67 69 73  |.All other regis|
000899b0  74 65 72 73 20 64 65 70  65 6e 64 20 6f 6e 20 72  |ters depend on r|
000899c0  65 61 73 6f 6e 20 63 6f  64 65 0a 20 20 20 0a 3c  |eason code.   .<|
000899d0  3d 09 52 30 20 70 72 65  73 65 72 76 65 64 0a 09  |=.R0 preserved..|
000899e0  41 6c 6c 20 6f 74 68 65  72 20 72 65 67 69 73 74  |All other regist|
000899f0  65 72 73 20 64 65 70 65  6e 64 20 6f 6e 20 72 65  |ers depend on re|
00089a00  61 73 6f 6e 20 63 6f 64  65 0a 20 20 20 0a 54 68  |ason code.   .Th|
00089a10  69 73 20 53 57 49 20 63  61 6c 6c 73 20 74 68 65  |is SWI calls the|
00089a20  20 3c 76 65 63 74 6f 72  20 55 70 43 61 6c 6c 56  | <vector UpCallV|
00089a30  3d 3e 76 65 63 74 6f 72  5f 55 70 43 61 6c 6c 56  |=>vector_UpCallV|
00089a40  3e 2e 20 54 6f 20 75 73  65 20 55 70 43 61 6c 6c  |>. To use UpCall|
00089a50  73 2c 20 79 6f 75 20 6d  75 73 74 20 65 69 74 68  |s, you must eith|
00089a60  65 72 20 63 6c 61 69 6d  20 74 68 65 20 76 65 63  |er claim the vec|
00089a70  74 6f 72 20 61 6e 64 20  69 6e 73 74 61 6c 6c 20  |tor and install |
00089a80  61 20 72 6f 75 74 69 6e  65 20 6f 6e 20 69 74 2c  |a routine on it,|
00089a90  20 6f 72 20 69 6e 73 74  61 6c 6c 20 61 6e 20 55  | or install an U|
00089aa0  70 43 61 6c 6c 20 68 61  6e 64 6c 65 72 2e 0a 0a  |pCall handler...|
00089ab0  54 68 65 79 20 61 72 65  20 63 61 6c 6c 65 64 20  |They are called |
00089ac0  55 70 43 61 6c 6c 73 20  62 65 63 61 75 73 65 20  |UpCalls because |
00089ad0  74 68 65 79 20 61 72 65  20 63 61 6c 6c 73 20 74  |they are calls t|
00089ae0  68 61 74 20 52 49 53 43  20 4f 53 20 6d 61 6b 65  |hat RISC OS make|
00089af0  73 20 75 70 20 74 6f 20  61 6e 20 61 70 70 6c 69  |s up to an appli|
00089b00  63 61 74 69 6f 6e 20 6d  61 6b 65 73 20 64 6f 77  |cation makes dow|
00089b10  6e 20 74 6f 20 52 49 53  43 20 4f 53 2e 20 54 68  |n to RISC OS. Th|
00089b20  65 79 20 67 65 6e 65 72  61 6c 6c 79 20 6f 63 63  |ey generally occ|
00089b30  75 72 20 69 6e 20 74 68  65 20 66 6f 72 65 67 72  |ur in the foregr|
00089b40  6f 75 6e 64 2c 20 61 6e  64 20 61 72 65 20 68 65  |ound, and are he|
00089b50  6e 63 65 20 64 69 66 66  65 72 65 6e 74 20 74 6f  |nce different to|
00089b60  20 45 76 65 6e 74 73 2c  20 77 68 69 63 68 20 6f  | Events, which o|
00089b70  63 63 75 72 20 69 6e 20  74 68 65 20 62 61 63 6b  |ccur in the back|
00089b80  67 72 6f 75 6e 64 2e 0a  0a 43 6c 69 63 6b 20 3c  |ground...Click <|
00089b90  68 65 72 65 3d 3e 2e 63  6f 64 65 3e 20 66 6f 72  |here=>.code> for|
00089ba0  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 20 6f 6e 20  | information on |
00089bb0  77 72 69 74 69 6e 67 20  55 70 43 61 6c 6c 20 63  |writing UpCall c|
00089bc0  6f 64 65 2e 0a 23 53 75  62 70 61 67 65 20 63 6f  |ode..#Subpage co|
00089bd0  64 65 0a 57 72 69 74 69  6e 67 20 63 6f 64 65 20  |de.Writing code |
00089be0  74 6f 20 68 61 6e 64 6c  65 20 55 70 43 61 6c 6c  |to handle UpCall|
00089bf0  73 0a 52 6f 75 74 69 6e  65 73 20 74 68 61 74 20  |s.Routines that |
00089c00  64 65 61 6c 20 77 69 74  68 20 55 70 43 61 6c 6c  |deal with UpCall|
00089c10  73 20 73 68 6f 75 6c 64  20 62 65 20 76 69 65 77  |s should be view|
00089c20  65 64 20 61 73 20 73 79  73 74 65 6d 20 65 78 74  |ed as system ext|
00089c30  65 6e 73 69 6f 6e 73 2c  20 61 6e 64 20 73 6f 20  |ensions, and so |
00089c40  73 68 6f 75 6c 64 20 6f  6e 6c 79 20 63 61 6c 6c  |should only call|
00089c50  20 65 72 72 6f 72 2d 72  65 74 75 72 6e 69 6e 67  | error-returning|
00089c60  20 53 57 49 27 73 20 28  27 58 27 2b 53 57 49 29  | SWI's ('X'+SWI)|
00089c70  2e 0a 20 0a 49 66 20 61  20 72 6f 75 74 69 6e 65  |.. .If a routine|
00089c80  20 69 6e 73 74 61 6c 6c  65 64 20 6f 6e 20 74 68  | installed on th|
00089c90  65 20 76 65 63 74 6f 72  20 64 65 61 6c 73 20 77  |e vector deals w|
00089ca0  69 74 68 20 74 68 65 20  73 69 74 75 61 74 69 6f  |ith the situatio|
00089cb0  6e 20 69 74 20 73 68 6f  75 6c 64 20 69 6e 74 65  |n it should inte|
00089cc0  72 63 65 70 74 20 74 68  65 20 63 61 6c 6c 20 74  |rcept the call t|
00089cd0  6f 20 74 68 65 20 76 65  63 74 6f 72 2c 20 61 73  |o the vector, as|
00089ce0  20 74 68 65 72 65 20 69  73 20 6e 6f 20 6c 6f 6e  | there is no lon|
00089cf0  67 65 72 20 61 6e 79 20  70 6f 69 6e 74 20 69 6e  |ger any point in|
00089d00  66 6f 72 6d 69 6e 67 20  61 6e 79 20 6f 74 68 65  |forming any othe|
00089d10  72 20 72 6f 75 74 69 6e  65 73 20 6f 72 20 74 68  |r routines or th|
00089d20  65 20 55 70 43 61 6c 6c  20 68 61 6e 64 6c 65 72  |e UpCall handler|
00089d30  20 6f 66 20 74 68 65 20  73 69 74 75 61 74 69 6f  | of the situatio|
00089d40  6e 2e 20 49 66 20 69 74  20 63 61 6e 27 74 20 64  |n. If it can't d|
00089d50  65 61 6c 20 77 69 74 68  20 74 68 65 20 73 69 74  |eal with the sit|
00089d60  75 61 74 69 6f 6e 20 69  74 20 6d 75 73 74 20 70  |uation it must p|
00089d70  61 73 73 20 74 68 65 20  63 61 6c 6c 20 6f 6e 2c  |ass the call on,|
00089d80  20 61 73 20 61 6e 6f 74  68 65 72 20 6f 6e 65 20  | as another one |
00089d90  6d 61 79 20 62 65 20 61  62 6c 65 20 74 6f 20 64  |may be able to d|
00089da0  6f 20 73 6f 2e 0a 00 00  44 41 54 41 df 01 00 00  |o so....DATA....|
00089db0  55 70 43 61 6c 6c 20 72  65 61 73 6f 6e 73 0a 52  |UpCall reasons.R|
00089dc0  30 09 44 65 73 63 72 69  70 74 69 6f 6e 0a 23 4c  |0.Description.#L|
00089dd0  69 6e 65 0a 31 09 3c 4d  65 64 69 61 20 6e 6f 74  |ine.1.<Media not|
00089de0  20 70 72 65 73 65 6e 74  3d 3e 6f 73 5f 75 70 63  | present=>os_upc|
00089df0  61 6c 6c 31 3e 0a 32 09  3c 4d 65 64 69 61 20 6e  |all1>.2.<Media n|
00089e00  6f 74 20 6b 6e 6f 77 6e  3d 3e 6f 73 5f 75 70 63  |ot known=>os_upc|
00089e10  61 6c 6c 32 3e 0a 33 09  3c 4d 69 73 63 20 66 69  |all2>.3.<Misc fi|
00089e20  6c 65 20 63 68 61 6e 67  65 64 20 69 6e 66 6f 72  |le changed infor|
00089e30  6d 61 74 69 6f 6e 3d 3e  6f 73 5f 75 70 63 61 6c  |mation=>os_upcal|
00089e40  6c 33 3e 0a 34 09 3c 4d  65 64 69 61 20 73 65 61  |l3>.4.<Media sea|
00089e50  72 63 68 20 65 6e 64 3d  3e 6f 73 5f 75 70 63 61  |rch end=>os_upca|
00089e60  6c 6c 34 3e 0a 36 09 3c  54 61 73 6b 77 69 6e 64  |ll4>.6.<Taskwind|
00089e70  6f 77 20 53 6c 65 65 70  3d 3e 6f 73 5f 75 70 63  |ow Sleep=>os_upc|
00089e80  61 6c 6c 36 3e 0a 37 09  3c 50 69 70 65 46 53 20  |all6>.7.<PipeFS |
00089e90  73 6c 65 65 70 20 6e 6f  20 6d 6f 72 65 3d 3e 6f  |sleep no more=>o|
00089ea0  73 5f 75 70 63 61 6c 6c  37 3e 0a 38 09 3c 42 75  |s_upcall7>.8.<Bu|
00089eb0  66 66 65 72 20 66 69 6c  6c 69 6e 67 3d 3e 6f 73  |ffer filling=>os|
00089ec0  5f 75 70 63 61 6c 6c 38  3e 0a 39 09 3c 42 75 66  |_upcall8>.9.<Buf|
00089ed0  66 65 72 20 65 6d 70 74  79 69 6e 67 3d 3e 6f 73  |fer emptying=>os|
00089ee0  5f 75 70 63 61 6c 6c 39  3e 0a 41 09 3c 44 65 76  |_upcall9>.A.<Dev|
00089ef0  69 63 65 46 53 20 73 74  72 65 61 6d 20 63 72 65  |iceFS stream cre|
00089f00  61 74 65 64 3d 3e 6f 73  5f 75 70 63 61 6c 6c 31  |ated=>os_upcall1|
00089f10  30 3e 0a 42 09 3c 44 65  76 69 63 65 46 53 20 73  |0>.B.<DeviceFS s|
00089f20  74 72 65 61 6d 20 63 6c  6f 73 65 64 3d 3e 6f 73  |tream closed=>os|
00089f30  5f 75 70 63 61 6c 6c 31  31 3e 0a 31 30 30 09 3c  |_upcall11>.100.<|
00089f40  4e 65 77 20 61 70 70 6c  69 63 61 74 69 6f 6e 3d  |New application=|
00089f50  3e 6f 73 5f 75 70 63 61  6c 6c 32 35 36 3e 0a 31  |>os_upcall256>.1|
00089f60  30 31 09 3c 4d 6f 76 65  20 6d 65 6d 6f 72 79 20  |01.<Move memory |
00089f70  72 65 71 75 65 73 74 3d  3e 6f 73 5f 75 70 63 61  |request=>os_upca|
00089f80  6c 6c 32 35 37 3e 0a 00  44 49 52 24 98 01 00 00  |ll257>..DIR$....|
00089f90  98 01 00 00 20 a1 08 00  46 fd ff ff a8 78 6d f5  |.... ...F....xm.|
00089fa0  4b 02 00 00 13 00 00 00  00 00 00 00 72 65 61 73  |K...........reas|
00089fb0  6f 6e 73 00 6c a3 08 00  46 ff ff ff 0c 6f 6d f5  |ons.l...F....om.|
00089fc0  e0 00 00 00 13 00 00 00  00 00 00 00 30 00 00 00  |............0...|
00089fd0  4c a4 08 00 46 ff ff ff  d2 97 6d f5 ba 00 00 00  |L...F.....m.....|
00089fe0  13 00 00 00 00 00 00 00  31 00 00 00 08 a5 08 00  |........1.......|
00089ff0  46 ff ff ff 70 9e 6d f5  8f 00 00 00 13 00 00 00  |F...p.m.........|
0008a000  00 00 00 00 32 00 00 00  98 a5 08 00 46 ff ff ff  |....2.......F...|
0008a010  a1 a3 6d f5 99 00 00 00  13 00 00 00 00 00 00 00  |..m.............|
0008a020  33 00 00 00 34 a6 08 00  46 ff ff ff 11 a9 6d f5  |3...4...F.....m.|
0008a030  8e 00 00 00 13 00 00 00  00 00 00 00 34 00 00 00  |............4...|
0008a040  c4 a6 08 00 46 ff ff ff  e5 ad 6d f5 74 00 00 00  |....F.....m.t...|
0008a050  13 00 00 00 00 00 00 00  36 00 00 00 38 a7 08 00  |........6...8...|
0008a060  46 ff ff ff 6e b3 6d f5  c7 00 00 00 13 00 00 00  |F...n.m.........|
0008a070  00 00 00 00 37 00 00 00  00 a8 08 00 46 ff ff ff  |....7.......F...|
0008a080  92 b8 6d f5 00 01 00 00  13 00 00 00 00 00 00 00  |..m.............|
0008a090  38 00 00 00 00 a9 08 00  46 ff ff ff 58 be 6d f5  |8.......F...X.m.|
0008a0a0  c8 00 00 00 13 00 00 00  00 00 00 00 32 35 37 00  |............257.|
0008a0b0  c8 a9 08 00 46 ff ff ff  6c c6 6d f5 bf 00 00 00  |....F...l.m.....|
0008a0c0  13 00 00 00 00 00 00 00  32 35 38 00 88 aa 08 00  |........258.....|
0008a0d0  46 ff ff ff d9 cc 6d f5  c9 00 00 00 13 00 00 00  |F.....m.........|
0008a0e0  00 00 00 00 35 32 30 00  54 ab 08 00 46 ff ff ff  |....520.T...F...|
0008a0f0  d5 d0 6d f5 49 00 00 00  13 00 00 00 00 00 00 00  |..m.I...........|
0008a100  32 35 39 00 a0 ab 08 00  46 ff ff ff cb d7 6d f5  |259.....F.....m.|
0008a110  bb 00 00 00 13 00 00 00  00 00 00 00 35 32 31 00  |............521.|
0008a120  44 41 54 41 4b 02 00 00  4f 53 5f 55 70 43 61 6c  |DATAK...OS_UpCal|
0008a130  6c 20 33 20 72 65 61 73  6f 6e 20 63 6f 64 65 73  |l 3 reason codes|
0008a140  0a 52 39 09 4d 65 61 6e  69 6e 67 0a 23 4c 69 6e  |.R9.Meaning.#Lin|
0008a150  65 0a 30 09 3c 53 61 76  69 6e 67 20 6d 65 6d 6f  |e.0.<Saving memo|
0008a160  72 79 20 74 6f 20 66 69  6c 65 3d 3e 4f 53 5f 55  |ry to file=>OS_U|
0008a170  70 43 61 6c 6c 33 5f 30  3e 0a 31 09 3c 57 72 69  |pCall3_0>.1.<Wri|
0008a180  74 69 6e 67 20 63 61 74  61 6c 6f 67 75 65 20 69  |ting catalogue i|
0008a190  6e 66 6f 72 6d 61 74 69  6f 6e 3d 3e 4f 53 5f 55  |nformation=>OS_U|
0008a1a0  70 43 61 6c 6c 33 5f 31  3e 0a 32 09 3c 57 72 69  |pCall3_1>.2.<Wri|
0008a1b0  74 69 6e 67 20 6c 6f 61  64 20 61 64 64 72 65 73  |ting load addres|
0008a1c0  73 20 6f 6e 6c 79 3d 3e  4f 53 5f 55 70 43 61 6c  |s only=>OS_UpCal|
0008a1d0  6c 33 5f 32 3e 0a 33 09  3c 57 72 69 74 69 6e 67  |l3_2>.3.<Writing|
0008a1e0  20 65 78 65 63 75 74 69  6f 6e 20 61 64 64 72 65  | execution addre|
0008a1f0  73 73 20 6f 6e 6c 79 3d  3e 4f 53 5f 55 70 43 61  |ss only=>OS_UpCa|
0008a200  6c 6c 33 5f 33 3e 0a 34  09 3c 57 72 69 74 69 6e  |ll3_3>.4.<Writin|
0008a210  67 20 61 74 74 72 69 62  75 74 65 73 20 6f 6e 6c  |g attributes onl|
0008a220  79 3d 3e 4f 53 5f 55 70  43 61 6c 6c 33 5f 34 3e  |y=>OS_UpCall3_4>|
0008a230  0a 36 09 3c 44 65 6c 65  74 69 6e 67 20 66 69 6c  |.6.<Deleting fil|
0008a240  65 3d 3e 4f 53 5f 55 70  43 61 6c 6c 33 5f 36 3e  |e=>OS_UpCall3_6>|
0008a250  0a 37 09 3c 43 72 65 61  74 69 6e 67 20 65 6d 70  |.7.<Creating emp|
0008a260  74 79 20 66 69 6c 65 3d  3e 4f 53 5f 55 70 43 61  |ty file=>OS_UpCa|
0008a270  6c 6c 33 5f 37 3e 0a 38  09 3c 43 72 65 61 74 69  |ll3_7>.8.<Creati|
0008a280  6e 67 20 64 69 72 65 63  74 6f 72 79 3d 3e 4f 53  |ng directory=>OS|
0008a290  5f 55 70 43 61 6c 6c 33  5f 38 3e 0a 32 35 37 09  |_UpCall3_8>.257.|
0008a2a0  3c 43 72 65 61 74 69 6e  67 20 61 6e 64 20 6f 70  |<Creating and op|
0008a2b0  65 6e 69 6e 67 20 66 6f  72 20 75 70 64 61 74 65  |ening for update|
0008a2c0  3d 3e 4f 53 5f 55 70 43  61 6c 6c 33 5f 32 35 37  |=>OS_UpCall3_257|
0008a2d0  3e 0a 32 35 38 09 3c 4f  70 65 6e 69 6e 67 20 66  |>.258.<Opening f|
0008a2e0  6f 72 20 75 70 64 61 74  65 3d 3e 4f 53 5f 55 70  |or update=>OS_Up|
0008a2f0  43 61 6c 6c 33 5f 32 35  38 3e 0a 32 35 39 09 3c  |Call3_258>.259.<|
0008a300  43 6c 6f 73 69 6e 67 20  66 69 6c 65 3d 3e 4f 53  |Closing file=>OS|
0008a310  5f 55 70 43 61 6c 6c 33  5f 32 35 39 3e 0a 35 32  |_UpCall3_259>.52|
0008a320  30 09 3c 52 65 6e 61 6d  69 6e 67 20 66 69 6c 65  |0.<Renaming file|
0008a330  3d 3e 4f 53 5f 55 70 43  61 6c 6c 33 5f 35 32 30  |=>OS_UpCall3_520|
0008a340  3e 0a 35 32 31 09 3c 53  65 74 74 69 6e 67 20 61  |>.521.<Setting a|
0008a350  74 74 72 69 62 75 74 65  73 3d 3e 4f 53 5f 55 70  |ttributes=>OS_Up|
0008a360  43 61 6c 6c 33 5f 35 32  31 3e 0a 00 44 41 54 41  |Call3_521>..DATA|
0008a370  e0 00 00 00 4f 53 5f 55  70 43 61 6c 6c 20 33 20  |....OS_UpCall 3 |
0008a380  73 75 62 72 65 61 73 6f  6e 20 63 6f 64 65 20 30  |subreason code 0|
0008a390  0a 53 61 76 69 6e 67 20  6d 65 6d 6f 72 79 20 74  |.Saving memory t|
0008a3a0  6f 20 66 69 6c 65 0a 0a  52 31 20 3d 09 70 6f 69  |o file..R1 =.poi|
0008a3b0  6e 74 65 72 20 74 6f 20  66 69 6c 65 6e 61 6d 65  |nter to filename|
0008a3c0  0a 52 32 20 3d 09 6c 6f  61 64 20 61 64 64 72 65  |.R2 =.load addre|
0008a3d0  73 73 0a 52 33 20 3d 09  65 78 65 63 75 74 69 6f  |ss.R3 =.executio|
0008a3e0  6e 20 61 64 64 72 65 73  73 0a 52 34 20 3d 09 70  |n address.R4 =.p|
0008a3f0  6f 69 6e 74 65 72 20 74  6f 20 73 74 61 72 74 20  |ointer to start |
0008a400  6f 66 20 62 75 66 66 65  72 0a 52 35 20 3d 09 70  |of buffer.R5 =.p|
0008a410  6f 69 6e 74 65 72 20 74  6f 20 65 6e 64 20 6f 66  |ointer to end of|
0008a420  20 62 75 66 66 65 72 0a  52 36 20 3d 09 70 6f 69  | buffer.R6 =.poi|
0008a430  6e 74 65 72 20 74 6f 20  73 70 65 63 69 61 6c 20  |nter to special |
0008a440  66 69 65 6c 64 20 28 6f  72 20 30 29 44 41 54 41  |field (or 0)DATA|
0008a450  ba 00 00 00 4f 53 5f 55  70 43 61 6c 6c 20 33 20  |....OS_UpCall 3 |
0008a460  73 75 62 72 65 61 73 6f  6e 20 63 6f 64 65 20 31  |subreason code 1|
0008a470  0a 57 72 69 74 69 6e 67  20 63 61 74 61 6c 6f 67  |.Writing catalog|
0008a480  75 65 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 0a 0a  |ue information..|
0008a490  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
0008a4a0  66 69 6c 65 6e 61 6d 65  0a 52 32 20 3d 09 6c 6f  |filename.R2 =.lo|
0008a4b0  61 64 20 61 64 64 72 65  73 73 0a 52 33 20 3d 09  |ad address.R3 =.|
0008a4c0  65 78 65 63 75 74 69 6f  6e 20 61 64 64 72 65 73  |execution addres|
0008a4d0  73 0a 52 35 20 3d 09 61  74 74 72 69 62 75 74 65  |s.R5 =.attribute|
0008a4e0  73 0a 52 36 20 3d 09 70  6f 69 6e 74 65 72 20 74  |s.R6 =.pointer t|
0008a4f0  6f 20 73 70 65 63 69 61  6c 20 66 69 65 6c 64 20  |o special field |
0008a500  28 6f 72 20 30 29 00 00  44 41 54 41 8f 00 00 00  |(or 0)..DATA....|
0008a510  4f 53 5f 55 70 43 61 6c  6c 20 33 20 73 75 62 72  |OS_UpCall 3 subr|
0008a520  65 61 73 6f 6e 20 63 6f  64 65 20 32 0a 57 72 69  |eason code 2.Wri|
0008a530  74 69 6e 67 20 6c 6f 61  64 20 61 64 64 72 65 73  |ting load addres|
0008a540  73 20 6f 6e 6c 79 0a 0a  52 31 20 3d 09 70 6f 69  |s only..R1 =.poi|
0008a550  6e 74 65 72 20 74 6f 20  66 69 6c 65 6e 61 6d 65  |nter to filename|
0008a560  0a 52 32 20 3d 09 6c 6f  61 64 20 61 64 64 72 65  |.R2 =.load addre|
0008a570  73 73 0a 52 36 20 3d 09  70 6f 69 6e 74 65 72 20  |ss.R6 =.pointer |
0008a580  74 6f 20 73 70 65 63 69  61 6c 20 66 69 65 6c 64  |to special field|
0008a590  20 28 6f 72 20 30 29 00  44 41 54 41 99 00 00 00  | (or 0).DATA....|
0008a5a0  4f 53 5f 55 70 43 61 6c  6c 20 33 20 73 75 62 72  |OS_UpCall 3 subr|
0008a5b0  65 61 73 6f 6e 20 63 6f  64 65 20 33 0a 57 72 69  |eason code 3.Wri|
0008a5c0  74 69 6e 67 20 65 78 65  63 75 74 69 6f 6e 20 61  |ting execution a|
0008a5d0  64 64 72 65 73 73 20 6f  6e 6c 79 0a 0a 52 31 20  |ddress only..R1 |
0008a5e0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 66 69 6c  |=.pointer to fil|
0008a5f0  65 6e 61 6d 65 0a 52 33  20 3d 09 65 78 65 63 75  |ename.R3 =.execu|
0008a600  74 69 6f 6e 20 61 64 64  72 65 73 73 0a 52 36 20  |tion address.R6 |
0008a610  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 73 70 65  |=.pointer to spe|
0008a620  63 69 61 6c 20 66 69 65  6c 64 20 28 6f 72 20 30  |cial field (or 0|
0008a630  29 00 00 00 44 41 54 41  8e 00 00 00 4f 53 5f 55  |)...DATA....OS_U|
0008a640  70 43 61 6c 6c 20 33 20  73 75 62 72 65 61 73 6f  |pCall 3 subreaso|
0008a650  6e 20 63 6f 64 65 20 34  0a 57 72 69 74 69 6e 67  |n code 4.Writing|
0008a660  20 61 74 74 72 69 62 75  74 65 73 20 6f 6e 6c 79  | attributes only|
0008a670  0a 0a 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
0008a680  6f 20 6f 62 6a 65 63 74  20 6e 61 6d 65 0a 52 35  |o object name.R5|
0008a690  20 3d 09 61 74 74 72 69  62 75 74 65 73 0a 52 36  | =.attributes.R6|
0008a6a0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 73 70  | =.pointer to sp|
0008a6b0  65 63 69 61 6c 20 66 69  65 6c 64 20 28 6f 72 20  |ecial field (or |
0008a6c0  30 29 00 00 44 41 54 41  74 00 00 00 4f 53 5f 55  |0)..DATAt...OS_U|
0008a6d0  70 43 61 6c 6c 20 33 20  73 75 62 72 65 61 73 6f  |pCall 3 subreaso|
0008a6e0  6e 20 63 6f 64 65 20 36  0a 44 65 6c 65 74 69 6e  |n code 6.Deletin|
0008a6f0  67 20 66 69 6c 65 0a 0a  52 31 20 3d 09 70 6f 69  |g file..R1 =.poi|
0008a700  6e 74 65 72 20 74 6f 20  6f 62 6a 65 63 74 20 6e  |nter to object n|
0008a710  61 6d 65 0a 52 36 20 3d  09 70 6f 69 6e 74 65 72  |ame.R6 =.pointer|
0008a720  20 74 6f 20 73 70 65 63  69 61 6c 20 66 69 65 6c  | to special fiel|
0008a730  64 20 28 6f 72 20 30 29  44 41 54 41 c7 00 00 00  |d (or 0)DATA....|
0008a740  4f 53 5f 55 70 43 61 6c  6c 20 33 20 73 75 62 72  |OS_UpCall 3 subr|
0008a750  65 61 73 6f 6e 20 63 6f  64 65 20 37 0a 43 72 65  |eason code 7.Cre|
0008a760  61 74 69 6e 67 20 65 6d  70 74 79 20 66 69 6c 65  |ating empty file|
0008a770  0a 0a 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
0008a780  6f 20 6f 62 6a 65 63 74  20 6e 61 6d 65 0a 52 32  |o object name.R2|
0008a790  20 3d 09 6c 6f 61 64 20  61 64 64 72 65 73 73 0a  | =.load address.|
0008a7a0  52 33 20 3d 09 65 78 65  63 75 74 69 6f 6e 20 61  |R3 =.execution a|
0008a7b0  64 64 72 65 73 73 0a 52  34 20 3d 09 73 74 61 72  |ddress.R4 =.star|
0008a7c0  74 20 61 64 64 72 65 73  73 0a 52 35 20 3d 09 65  |t address.R5 =.e|
0008a7d0  6e 64 20 61 64 64 72 65  73 73 0a 52 36 20 3d 09  |nd address.R6 =.|
0008a7e0  70 6f 69 6e 74 65 72 20  74 6f 20 73 70 65 63 69  |pointer to speci|
0008a7f0  61 6c 20 66 69 65 6c 64  20 28 6f 72 20 30 29 00  |al field (or 0).|
0008a800  44 41 54 41 00 01 00 00  4f 53 5f 55 70 43 61 6c  |DATA....OS_UpCal|
0008a810  6c 20 33 20 73 75 62 72  65 61 73 6f 6e 20 63 6f  |l 3 subreason co|
0008a820  64 65 20 38 0a 43 72 65  61 74 69 6e 67 20 64 69  |de 8.Creating di|
0008a830  72 65 63 74 6f 72 79 0a  0a 52 31 20 3d 09 70 6f  |rectory..R1 =.po|
0008a840  69 6e 74 65 72 20 74 6f  20 64 69 72 65 63 74 6f  |inter to directo|
0008a850  72 79 20 6e 61 6d 65 0a  52 32 20 3d 09 6c 6f 61  |ry name.R2 =.loa|
0008a860  64 20 61 64 64 72 65 73  73 20 28 74 6f 20 62 65  |d address (to be|
0008a870  20 75 73 65 64 20 61 73  20 74 69 6d 65 73 74 61  | used as timesta|
0008a880  6d 70 29 0a 52 33 20 3d  09 65 78 65 63 75 74 69  |mp).R3 =.executi|
0008a890  6f 6e 20 61 64 64 72 65  73 73 20 28 74 6f 20 62  |on address (to b|
0008a8a0  65 20 75 73 65 64 20 61  73 20 74 69 6d 65 73 74  |e used as timest|
0008a8b0  61 6d 70 29 0a 52 34 20  3d 09 6e 75 6d 62 65 72  |amp).R4 =.number|
0008a8c0  20 6f 66 20 65 6e 74 72  69 65 73 20 28 30 20 66  | of entries (0 f|
0008a8d0  6f 72 20 64 65 66 61 75  6c 74 29 0a 52 36 20 3d  |or default).R6 =|
0008a8e0  09 70 6f 69 6e 74 65 72  20 74 6f 20 73 70 65 63  |.pointer to spec|
0008a8f0  69 61 6c 20 66 69 65 6c  64 20 28 6f 72 20 30 29  |ial field (or 0)|
0008a900  44 41 54 41 c8 00 00 00  4f 53 5f 55 70 43 61 6c  |DATA....OS_UpCal|
0008a910  6c 20 33 20 73 75 62 72  65 61 73 6f 6e 20 63 6f  |l 3 subreason co|
0008a920  64 65 20 32 35 37 0a 43  72 65 61 74 69 6e 67 20  |de 257.Creating |
0008a930  61 6e 64 20 6f 70 65 6e  69 6e 67 20 75 70 64 61  |and opening upda|
0008a940  74 65 0a 0a 52 31 20 3d  09 70 6f 69 6e 74 65 72  |te..R1 =.pointer|
0008a950  20 74 6f 20 66 69 6c 65  20 6e 61 6d 65 0a 52 32  | to file name.R2|
0008a960  20 3d 09 65 78 74 65 72  6e 61 6c 20 68 61 6e 64  | =.external hand|
0008a970  6c 65 20 74 68 61 74 20  66 69 6c 65 20 77 69 6c  |le that file wil|
0008a980  6c 20 62 65 20 67 69 76  65 6e 20 28 69 66 20 73  |l be given (if s|
0008a990  75 63 63 65 73 73 66 75  6c 6c 79 20 6f 70 65 6e  |uccessfully open|
0008a9a0  65 64 29 0a 52 36 20 3d  09 70 6f 69 6e 74 65 72  |ed).R6 =.pointer|
0008a9b0  20 74 6f 20 73 70 65 63  69 61 6c 20 66 69 65 6c  | to special fiel|
0008a9c0  64 20 28 6f 72 20 30 29  44 41 54 41 bf 00 00 00  |d (or 0)DATA....|
0008a9d0  4f 53 5f 55 70 43 61 6c  6c 20 33 20 73 75 62 72  |OS_UpCall 3 subr|
0008a9e0  65 61 73 6f 6e 20 63 6f  64 65 20 32 35 38 0a 4f  |eason code 258.O|
0008a9f0  70 65 6e 69 6e 67 20 66  6f 72 20 75 70 64 61 74  |pening for updat|
0008aa00  65 0a 0a 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |e..R1 =.pointer |
0008aa10  74 6f 20 66 69 6c 65 20  6e 61 6d 65 0a 52 32 20  |to file name.R2 |
0008aa20  3d 09 65 78 74 65 72 6e  61 6c 20 68 61 6e 64 6c  |=.external handl|
0008aa30  65 20 74 68 61 74 20 66  69 6c 65 20 77 69 6c 6c  |e that file will|
0008aa40  20 62 65 20 67 69 76 65  6e 20 28 69 66 20 73 75  | be given (if su|
0008aa50  63 63 65 73 73 66 75 6c  6c 79 20 6f 70 65 6e 65  |ccessfully opene|
0008aa60  64 29 0a 52 36 20 3d 09  70 6f 69 6e 74 65 72 20  |d).R6 =.pointer |
0008aa70  74 6f 20 73 70 65 63 69  61 6c 20 66 69 65 6c 64  |to special field|
0008aa80  20 28 6f 72 20 30 29 00  44 41 54 41 c9 00 00 00  | (or 0).DATA....|
0008aa90  4f 53 5f 55 70 43 61 6c  6c 20 33 20 73 75 62 72  |OS_UpCall 3 subr|
0008aaa0  65 61 73 6f 6e 20 63 6f  64 65 20 35 32 30 0a 52  |eason code 520.R|
0008aab0  65 6e 61 6d 69 6e 67 20  66 69 6c 65 0a 0a 52 31  |enaming file..R1|
0008aac0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 63 75  | =.pointer to cu|
0008aad0  72 72 65 6e 74 20 6f 62  6a 65 63 74 20 6e 61 6d  |rrent object nam|
0008aae0  65 0a 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |e.R2 =.pointer t|
0008aaf0  6f 20 64 65 73 69 72 65  64 20 6f 62 6a 65 63 74  |o desired object|
0008ab00  20 6e 61 6d 65 0a 52 36  20 3d 09 70 6f 69 6e 74  | name.R6 =.point|
0008ab10  65 72 20 74 6f 20 63 75  72 72 65 6e 74 20 73 70  |er to current sp|
0008ab20  65 63 69 61 6c 20 66 69  65 6c 64 0a 52 37 20 3d  |ecial field.R7 =|
0008ab30  09 70 6f 69 6e 74 65 72  20 74 6f 20 64 65 73 69  |.pointer to desi|
0008ab40  72 65 64 20 73 70 65 63  69 61 6c 20 66 69 65 6c  |red special fiel|
0008ab50  64 00 00 00 44 41 54 41  49 00 00 00 4f 53 5f 55  |d...DATAI...OS_U|
0008ab60  70 43 61 6c 6c 20 33 20  73 75 62 72 65 61 73 6f  |pCall 3 subreaso|
0008ab70  6e 20 63 6f 64 65 20 32  35 39 0a 43 6c 6f 73 69  |n code 259.Closi|
0008ab80  6e 67 20 66 69 6c 65 0a  0a 52 31 20 3d 09 65 78  |ng file..R1 =.ex|
0008ab90  74 65 72 6e 61 6c 20 68  61 6e 64 6c 65 00 00 00  |ternal handle...|
0008aba0  44 41 54 41 bb 00 00 00  4f 53 5f 55 70 43 61 6c  |DATA....OS_UpCal|
0008abb0  6c 20 33 20 73 75 62 72  65 61 73 6f 6e 20 63 6f  |l 3 subreason co|
0008abc0  64 65 20 35 32 31 0a 53  65 74 74 69 6e 67 20 61  |de 521.Setting a|
0008abd0  74 74 72 69 62 75 74 65  73 0a 0a 52 31 20 3d 09  |ttributes..R1 =.|
0008abe0  70 6f 69 6e 74 65 72 20  74 6f 20 6f 62 6a 65 63  |pointer to objec|
0008abf0  74 20 6e 61 6d 65 0a 52  32 20 3d 09 70 6f 69 6e  |t name.R2 =.poin|
0008ac00  74 65 72 20 74 6f 20 61  74 74 72 69 62 75 74 65  |ter to attribute|
0008ac10  20 73 74 72 69 6e 67 20  28 63 6f 6e 74 72 6f 6c  | string (control|
0008ac20  20 63 68 61 72 61 63 74  65 72 20 74 65 72 6d 69  | character termi|
0008ac30  6e 61 74 65 64 29 0a 52  36 20 3d 09 70 6f 69 6e  |nated).R6 =.poin|
0008ac40  74 65 72 20 74 6f 20 73  70 65 63 69 61 6c 20 66  |ter to special f|
0008ac50  69 65 6c 64 20 28 6f 72  20 30 29 00 44 41 54 41  |ield (or 0).DATA|
0008ac60  18 06 00 00 4f 53 5f 55  70 43 61 6c 6c 20 33 20  |....OS_UpCall 3 |
0008ac70  2d 20 4d 6f 64 69 66 79  69 6e 67 20 66 69 6c 65  |- Modifying file|
0008ac80  0a 3d 3e 09 52 30 20 3d  09 33 20 28 4d 6f 64 69  |.=>.R0 =.3 (Modi|
0008ac90  66 79 69 6e 67 20 66 69  6c 65 29 0a 09 52 31 2d  |fying file)..R1-|
0008aca0  52 37 20 76 61 72 79 2c  20 64 65 70 65 6e 64 69  |R7 vary, dependi|
0008acb0  6e 67 20 6f 6e 20 74 68  65 20 76 61 6c 75 65 20  |ng on the value |
0008acc0  6f 66 20 52 39 0a 0a 09  52 38 20 3d 09 66 69 6c  |of R9...R8 =.fil|
0008acd0  69 6e 67 20 73 79 73 74  65 6d 20 69 6e 66 6f 72  |ing system infor|
0008ace0  6d 61 74 69 6f 6e 20 77  6f 72 64 0a 09 52 39 20  |mation word..R9 |
0008acf0  3d 09 3c 52 65 61 73 6f  6e 20 63 6f 64 65 3d 3e  |=.<Reason code=>|
0008ad00  4f 53 5f 55 70 43 61 6c  6c 33 5f 72 65 61 73 6f  |OS_UpCall3_reaso|
0008ad10  6e 73 3e 0a 0a 3c 3d 09  41 6c 6c 20 72 65 67 69  |ns>..<=.All regi|
0008ad20  73 74 65 72 73 20 70 72  65 73 65 72 76 65 64 0a  |sters preserved.|
0008ad30  0a 57 61 72 6e 73 20 79  6f 75 72 20 70 72 6f 67  |.Warns your prog|
0008ad40  72 61 6d 20 74 68 61 74  20 61 20 66 69 6c 65 20  |ram that a file |
0008ad50  69 73 20 62 65 69 6e 67  20 6d 6f 64 69 66 69 65  |is being modifie|
0008ad60  64 2e 20 49 74 20 69 73  20 6d 61 64 65 20 77 68  |d. It is made wh|
0008ad70  65 6e 20 61 20 70 72 6f  67 72 61 6d 20 63 61 6c  |en a program cal|
0008ad80  6c 73 20 6f 6e 65 20 6f  66 20 73 65 72 76 65 72  |ls one of server|
0008ad90  61 6c 20 53 57 49 20 70  72 6f 76 69 64 65 64 20  |al SWI provided |
0008ada0  62 79 20 46 69 6c 65 53  77 69 74 63 68 20 6d 6f  |by FileSwitch mo|
0008adb0  64 75 6c 65 3a 0a 23 54  61 62 3b 49 6e 64 65 6e  |dule:.#Tab;Inden|
0008adc0  74 20 32 0a 8f 09 72 65  61 73 6f 6e 20 63 6f 64  |t 2...reason cod|
0008add0  65 73 20 30 2d 38 20 61  72 65 20 63 61 75 73 65  |es 0-8 are cause|
0008ade0  64 20 62 79 20 63 61 6c  6c 73 20 74 6f 20 3c 4f  |d by calls to <O|
0008adf0  53 5f 46 69 6c 65 3e 0a  8f 09 72 65 61 73 6f 6e  |S_File>...reason|
0008ae00  20 63 6f 64 65 73 20 32  35 37 2d 39 20 61 72 65  | codes 257-9 are|
0008ae10  20 63 61 75 73 65 64 20  62 79 20 63 61 6c 6c 73  | caused by calls|
0008ae20  20 74 6f 20 3c 4f 53 5f  46 69 6e 64 3e 0a 8f 09  | to <OS_Find>...|
0008ae30  72 65 61 73 6f 6e 20 63  6f 64 65 73 20 35 32 30  |reason codes 520|
0008ae40  2f 31 20 61 72 65 20 63  61 75 73 65 64 20 62 79  |/1 are caused by|
0008ae50  20 63 61 6c 6c 73 20 74  6f 20 3c 4f 53 5f 46 53  | calls to <OS_FS|
0008ae60  43 6f 6e 74 72 6f 6c 3e  0a 23 49 6e 64 65 6e 74  |Control>.#Indent|
0008ae70  0a 0a 59 6f 75 20 6d 61  79 20 66 69 6e 64 20 69  |..You may find i|
0008ae80  74 20 68 65 6c 70 66 75  6c 20 74 6f 20 65 78 61  |t helpful to exa|
0008ae90  6d 69 6e 65 20 74 68 65  20 64 6f 63 75 6d 65 6e  |mine the documen|
0008aea0  74 61 74 69 6f 6e 20 6f  66 20 74 68 65 20 61 62  |tation of the ab|
0008aeb0  6f 76 65 20 46 69 6c 65  53 77 69 74 63 68 20 53  |ove FileSwitch S|
0008aec0  57 49 20 63 61 6c 6c 73  2e 0a 0a 54 68 65 20 66  |WI calls...The f|
0008aed0  6f 6c 6c 6f 77 69 6e 67  20 67 65 6e 65 72 61 6c  |ollowing general|
0008aee0  20 70 6f 69 6e 74 73 20  61 70 70 6c 79 3a 0a 23  | points apply:.#|
0008aef0  54 61 62 3b 49 6e 64 65  6e 74 20 32 0a 8f 09 61  |Tab;Indent 2...a|
0008af00  6c 6c 20 73 74 72 69 6e  67 73 20 61 72 65 20 30  |ll strings are 0|
0008af10  2d 74 65 72 6d 69 6e 61  74 65 64 20 65 78 63 65  |-terminated exce|
0008af20  70 74 20 77 68 65 72 65  20 73 70 65 63 69 66 69  |pt where specifi|
0008af30  65 64 0a 8f 09 61 6c 6c  20 6f 62 6a 65 63 74 20  |ed...all object |
0008af40  6e 61 6d 65 73 20 77 69  6c 6c 20 61 6c 72 65 61  |names will alrea|
0008af50  64 79 20 68 61 76 65 20  62 65 65 6e 20 65 78 70  |dy have been exp|
0008af60  61 6e 64 65 64 20 62 79  20 46 69 6c 65 53 77 69  |anded by FileSwi|
0008af70  74 63 68 2c 20 63 68 65  63 6b 65 64 20 66 6f 72  |tch, checked for|
0008af80  20 62 61 73 69 63 20 76  61 6c 69 64 69 74 79 2c  | basic validity,|
0008af90  20 61 6e 64 20 68 61 64  20 66 69 6c 69 6e 67 20  | and had filing |
0008afa0  73 79 73 74 65 6d 20 70  72 65 66 69 78 65 73 20  |system prefixes |
0008afb0  73 74 72 69 70 70 65 64  0a 8f 09 6f 62 6a 65 63  |stripped...objec|
0008afc0  74 20 6e 61 6d 65 73 20  77 69 6c 6c 20 61 6c 73  |t names will als|
0008afd0  6f 20 62 65 20 63 61 6e  6f 6e 69 63 61 6c 69 73  |o be canonicalis|
0008afe0  65 64 2c 20 65 78 63 65  70 74 20 75 6e 64 65 72  |ed, except under|
0008aff0  20 52 49 53 43 20 4f 53  20 32 2e 0a 23 49 6e 64  | RISC OS 2..#Ind|
0008b000  65 6e 74 0a 0a 54 68 69  73 20 55 70 43 61 6c 6c  |ent..This UpCall|
0008b010  20 69 73 20 6d 61 64 65  20 62 65 66 6f 72 65 20  | is made before |
0008b020  74 68 65 20 6f 70 65 72  61 74 69 6f 6e 2c 20 77  |the operation, w|
0008b030  68 69 63 68 20 6d 61 79  20 73 75 62 73 65 71 75  |hich may subsequ|
0008b040  65 6e 74 6c 79 20 66 61  69 6c 2e 20 46 6f 72 20  |ently fail. For |
0008b050  65 78 61 6d 70 6c 65 2c  20 79 6f 75 20 6d 61 79  |example, you may|
0008b060  20 72 65 63 65 69 76 65  20 61 20 72 65 6e 61 6d  | receive a renam|
0008b070  65 20 55 70 43 61 6c 6c  20 66 6f 72 20 61 20 6c  |e UpCall for a l|
0008b080  6f 63 6b 65 64 20 66 69  6c 65 2c 20 77 68 69 63  |ocked file, whic|
0008b090  68 20 77 69 6c 6c 20 73  65 62 73 65 71 75 65 6e  |h will sebsequen|
0008b0a0  74 6c 79 20 66 61 69 6c  20 74 6f 20 72 65 6e 61  |tly fail to rena|
0008b0b0  6d 65 20 28 62 65 63 61  75 73 65 20 69 74 27 73  |me (because it's|
0008b0c0  20 6c 6f 63 6b 65 64 29  2e 20 49 66 20 61 20 66  | locked). If a f|
0008b0d0  69 6c 65 20 6e 61 6d 65  20 69 73 20 69 6e 76 61  |ile name is inva|
0008b0e0  6c 69 64 20 66 6f 72 20  61 20 67 69 76 65 6e 20  |lid for a given |
0008b0f0  6f 70 65 72 61 74 69 6f  6e 20 28 65 67 20 79 6f  |operation (eg yo|
0008b100  75 20 74 72 79 20 74 6f  20 63 72 65 61 74 65 20  |u try to create |
0008b110  61 20 66 69 6c 65 20 77  69 74 68 20 61 20 77 69  |a file with a wi|
0008b120  6c 64 63 61 72 64 65 64  20 6c 65 61 66 6e 61 6d  |ldcarded leafnam|
0008b130  65 29 20 46 69 6c 65 53  77 69 74 63 68 20 77 69  |e) FileSwitch wi|
0008b140  6c 6c 20 67 65 6e 65 72  61 74 65 20 61 6e 20 65  |ll generate an e|
0008b150  72 72 6f 72 2c 20 61 6e  64 20 6e 6f 20 55 70 43  |rror, and no UpC|
0008b160  61 6c 6c 20 77 69 6c 6c  20 62 65 20 67 65 6e 65  |all will be gene|
0008b170  72 61 74 65 64 2e 0a 0a  54 68 65 20 63 61 6c 6c  |rated...The call|
0008b180  20 69 73 20 75 73 65 64  20 62 79 20 74 68 65 20  | is used by the |
0008b190  64 65 73 6b 74 6f 70 20  66 69 6c 65 72 20 74 6f  |desktop filer to|
0008b1a0  20 6d 61 69 6e 74 61 69  6e 20 69 74 73 20 64 69  | maintain its di|
0008b1b0  72 65 63 74 6f 72 79 20  64 69 73 70 6c 61 79 73  |rectory displays|
0008b1c0  2e 20 49 74 27 73 20 70  72 6f 76 69 64 65 64 20  |. It's provided |
0008b1d0  66 6f 72 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |for information |
0008b1e0  6f 6e 6c 79 3b 20 69 66  20 79 6f 75 20 77 69 73  |only; if you wis|
0008b1f0  68 20 74 6f 20 75 73 65  20 74 68 69 73 20 55 70  |h to use this Up|
0008b200  43 61 6c 6c 2c 20 79 6f  75 20 6d 75 73 74 20 6e  |Call, you must n|
0008b210  6f 74 20 69 6e 74 65 72  63 65 70 74 20 69 74 2c  |ot intercept it,|
0008b220  20 6e 6f 72 20 6d 75 73  74 20 79 6f 75 20 61 6c  | nor must you al|
0008b230  74 65 72 20 74 68 65 20  63 6f 6e 74 65 6e 74 73  |ter the contents|
0008b240  20 6f 66 20 61 6e 79 20  6f 66 20 74 68 65 73 65  | of any of these|
0008b250  20 72 65 67 69 73 74 65  72 73 20 75 73 65 64 20  | registers used |
0008b260  74 6f 20 70 61 73 73 20  70 61 72 61 6d 65 74 65  |to pass paramete|
0008b270  72 73 21 0a 44 41 54 41  79 06 00 00 41 6e 79 20  |rs!.DATAy...Any |
0008b280  72 6f 75 74 69 6e 65 73  20 6f 6e 20 74 68 69 73  |routines on this|
0008b290  20 76 65 63 74 6f 72 20  73 68 6f 75 6c 64 20 3a  | vector should :|
0008b2a0  0a 23 20 54 68 69 73 20  66 69 6c 65 20 77 6f 72  |.# This file wor|
0008b2b0  6b 73 20 62 75 74 20 77  69 6c 6c 20 68 61 76 65  |ks but will have|
0008b2c0  20 67 69 76 65 6e 20 61  6e 20 27 69 6e 61 63 63  | given an 'inacc|
0008b2d0  65 73 73 69 62 6c 65 27  20 77 61 72 6e 69 6e 67  |essible' warning|
0008b2e0  20 2d 20 69 67 6e 6f 72  65 20 69 74 0a 23 54 61  | - ignore it.#Ta|
0008b2f0  62 3b 49 6e 64 65 6e 74  20 32 0a 8f 09 50 72 6f  |b;Indent 2...Pro|
0008b300  6d 70 74 20 79 6f 75 20  74 6f 20 73 75 70 70 6c  |mpt you to suppl|
0008b310  79 20 74 68 65 20 6d 65  64 69 75 6d 20 77 69 74  |y the medium wit|
0008b320  68 20 61 20 73 74 72 69  6e 67 20 62 75 69 6c 74  |h a string built|
0008b330  20 75 70 20 75 73 69 6e  67 3a 0a 09 20 20 31 09  | up using:..  1.|
0008b340  74 68 65 20 6d 65 64 69  75 6d 20 74 79 70 65 20  |the medium type |
0008b350  73 74 72 69 6e 67 20 28  70 61 73 73 65 64 20 69  |string (passed i|
0008b360  6e 20 52 36 29 0a 09 20  20 32 09 74 68 65 20 66  |n R6)..  2.the f|
0008b370  69 6c 69 6e 67 20 73 79  73 74 65 6d 20 6e 61 6d  |iling system nam|
0008b380  65 20 28 6f 62 74 61 69  6e 65 64 20 62 79 20 63  |e (obtained by c|
0008b390  61 6c 6c 69 6e 67 20 3c  58 4f 53 5f 46 53 43 6f  |alling <XOS_FSCo|
0008b3a0  6e 74 72 6f 6c 20 33 33  3d 3e 4f 53 5f 46 53 43  |ntrol 33=>OS_FSC|
0008b3b0  6f 6e 74 72 6f 6c 3e 20  61 63 74 69 6e 67 20 6f  |ontrol> acting o|
0008b3c0  6e 20 74 68 65 20 76 61  6c 75 65 20 6f 66 20 52  |n the value of R|
0008b3d0  31 29 0a 09 20 20 33 09  74 68 65 20 6d 65 64 69  |1)..  3.the medi|
0008b3e0  75 6d 20 6e 61 6d 65 20  28 70 61 73 73 65 64 20  |um name (passed |
0008b3f0  69 6e 20 52 32 29 0a 09  66 6f 72 20 65 78 61 6d  |in R2)..for exam|
0008b400  70 6c 65 3a 0a 09 27 50  6c 65 61 73 65 20 69 6e  |ple:..'Please in|
0008b410  73 65 72 74 20 64 69 73  63 20 41 44 46 53 3a 58  |sert disc ADFS:X|
0008b420  59 5a 20 61 6e 64 20 70  72 65 73 73 20 53 70 61  |YZ and press Spa|
0008b430  63 65 20 28 45 73 63 61  70 65 20 74 6f 20 61 62  |ce (Escape to ab|
0008b440  6f 72 74 29 27 0a 8f 09  67 69 76 65 20 79 6f 75  |ort)'...give you|
0008b450  20 61 20 77 61 79 20 6f  66 20 69 6e 64 69 63 61  | a way of indica|
0008b460  74 69 6e 67 20 74 68 61  74 20 79 6f 75 20 68 61  |ting that you ha|
0008b470  76 65 20 65 69 74 68 65  72 20 73 75 70 70 6c 69  |ve either suppli|
0008b480  65 64 20 74 68 65 20 6d  65 64 69 75 6d 2c 20 6f  |ed the medium, o|
0008b490  72 20 77 69 73 68 20 74  6f 20 63 61 6e 63 65 6c  |r wish to cancel|
0008b4a0  20 74 68 65 20 6f 70 65  72 61 74 69 6f 6e 0a 8f  | the operation..|
0008b4b0  09 69 6e 74 65 72 63 65  70 74 20 74 68 65 20 76  |.intercept the v|
0008b4c0  65 63 74 6f 72 20 77 69  74 68 20 52 30 20 3d 20  |ector with R0 = |
0008b4d0  2d 31 20 69 66 20 79 6f  75 20 77 69 73 68 20 74  |-1 if you wish t|
0008b4e0  6f 20 63 61 6e 63 65 6c  20 74 68 65 20 6f 70 65  |o cancel the ope|
0008b4f0  72 61 74 69 6f 6e 0a 8f  09 69 6e 74 65 72 63 65  |ration...interce|
0008b500  70 74 20 74 68 65 20 76  65 63 74 6f 72 20 77 69  |pt the vector wi|
0008b510  74 68 20 52 30 20 3d 20  30 20 69 66 20 74 68 65  |th R0 = 0 if the|
0008b520  20 74 69 6d 65 20 6c 69  6d 69 74 20 69 73 20 72  | time limit is r|
0008b530  65 61 63 68 65 64 2c 20  6f 72 20 69 66 20 79 6f  |eached, or if yo|
0008b540  75 20 73 61 79 20 79 6f  75 20 68 61 76 65 20 73  |u say you have s|
0008b550  75 70 70 6c 69 65 64 20  74 68 65 20 6d 65 64 69  |upplied the medi|
0008b560  75 6d 0a 23 49 6e 64 65  6e 74 0a 0a 57 68 65 6e  |um.#Indent..When|
0008b570  20 79 6f 75 20 69 6e 74  65 72 63 65 70 74 20 74  | you intercept t|
0008b580  68 65 20 63 61 6c 6c 20  74 6f 20 74 68 65 20 76  |he call to the v|
0008b590  65 63 74 6f 72 2c 20 63  6f 6e 74 72 6f 6c 20 70  |ector, control p|
0008b5a0  61 73 73 65 73 20 62 61  63 6b 20 74 6f 20 74 68  |asses back to th|
0008b5b0  65 20 66 69 6c 69 6e 67  0a 73 79 73 74 65 6d 20  |e filing.system |
0008b5c0  72 6f 75 74 69 6e 65 20  74 68 61 74 20 63 61 6c  |routine that cal|
0008b5d0  6c 65 64 20 3c 4f 53 5f  55 70 43 61 6c 6c 3e 2e  |led <OS_UpCall>.|
0008b5e0  2e 2e 0a 23 49 6e 64 65  6e 74 20 32 0a 8f 09 49  |...#Indent 2...I|
0008b5f0  66 20 52 30 20 3d 20 2d  31 2c 20 74 68 65 6e 20  |f R0 = -1, then |
0008b600  74 68 65 20 72 6f 75 74  69 6e 65 20 63 61 6c 6c  |the routine call|
0008b610  73 20 3c 4f 53 5f 55 70  43 61 6c 6c 20 34 3d 3e  |s <OS_UpCall 4=>|
0008b620  4f 53 5f 55 70 43 61 6c  6c 34 3e 3b 20 69 74 20  |OS_UpCall4>; it |
0008b630  74 68 65 6e 20 72 65 74  75 72 6e 73 20 61 6e 20  |then returns an |
0008b640  65 72 72 6f 72 20 74 6f  20 73 61 79 20 74 68 61  |error to say tha|
0008b650  74 20 74 68 65 20 6d 65  64 69 75 6d 20 77 61 73  |t the medium was|
0008b660  6e 27 74 20 66 6f 75 6e  64 2e 0a 8f 09 49 66 20  |n't found....If |
0008b670  52 30 20 3d 20 30 2c 20  74 68 65 6e 20 74 68 65  |R0 = 0, then the|
0008b680  20 72 6f 75 74 69 6e 65  20 63 68 65 63 6b 73 20  | routine checks |
0008b690  66 6f 72 20 79 6f 75 20  74 68 61 74 20 74 68 65  |for you that the|
0008b6a0  20 6d 65 64 69 75 6d 20  68 61 73 20 62 65 65 6e  | medium has been|
0008b6b0  20 63 68 61 6e 67 65 64  20 61 6e 64 20 74 68 65  | changed and the|
0008b6c0  20 63 6f 72 72 65 63 74  20 6f 6e 65 20 73 75 70  | correct one sup|
0008b6d0  70 6c 69 65 64 2e 20 49  66 20 73 6f 2c 20 69 74  |plied. If so, it|
0008b6e0  20 63 61 6c 6c 73 20 4f  53 5f 55 70 43 61 6c 6c  | calls OS_UpCall|
0008b6f0  20 34 3b 20 6f 74 68 65  72 77 69 73 65 20 69 74  | 4; otherwise it|
0008b700  20 6a 75 73 74 20 63 61  6c 6c 73 20 4f 53 5f 55  | just calls OS_U|
0008b710  70 43 61 6c 6c 20 31 20  6f 72 20 32 20 61 67 61  |pCall 1 or 2 aga|
0008b720  69 6e 2c 20 61 66 74 65  72 20 69 6e 63 72 65 6d  |in, after increm|
0008b730  65 6e 74 69 6e 67 20 52  34 0a 23 49 6e 64 65 6e  |enting R4.#Inden|
0008b740  74 0a 0a 54 68 65 20 74  69 6d 65 6f 75 74 20 70  |t..The timeout p|
0008b750  65 72 69 6f 64 20 69 6e  20 52 35 20 69 73 20 73  |eriod in R5 is s|
0008b760  65 74 20 74 6f 20 61 20  73 6d 61 6c 6c 20 76 61  |et to a small va|
0008b770  6c 75 65 20 66 6f 72 20  6d 65 64 69 61 20 74 68  |lue for media th|
0008b780  61 74 20 63 61 6e 20 64  65 74 65 63 74 20 77 68  |at can detect wh|
0008b790  65 6e 20 74 68 65 20 6d  65 64 69 75 6d 20 68 61  |en the medium ha|
0008b7a0  73 20 62 65 65 6e 20 63  68 61 6e 67 65 64 20 28  |s been changed (|
0008b7b0  73 75 63 68 20 61 20 66  6c 6f 70 70 79 20 64 69  |such a floppy di|
0008b7c0  73 63 20 64 72 69 76 65  73 29 20 61 6e 64 20 74  |sc drives) and t|
0008b7d0  6f 20 61 20 6c 61 72 67  65 20 76 61 6c 75 65 20  |o a large value |
0008b7e0  28 74 79 70 69 63 61 6c  6c 79 20 26 46 46 46 46  |(typically &FFFF|
0008b7f0  46 46 46 46 29 20 66 6f  72 20 6f 74 68 65 72 20  |FFFF) for other |
0008b800  6d 65 64 69 61 2e 20 49  6e 20 74 68 65 20 66 6f  |media. In the fo|
0008b810  72 6d 65 72 20 63 61 73  65 2c 20 74 68 69 73 20  |rmer case, this |
0008b820  6d 65 61 6e 73 20 74 68  61 74 20 52 49 53 43 20  |means that RISC |
0008b830  4f 53 20 77 69 6c 6c 20  61 75 74 6f 6d 61 74 69  |OS will automati|
0008b840  63 61 6c 6c 79 20 64 65  74 65 63 74 20 74 68 61  |cally detect tha|
0008b850  74 20 6e 65 77 20 6d 65  64 69 75 6d 20 68 61 73  |t new medium has|
0008b860  20 62 65 65 6e 20 73 75  70 70 6c 69 65 64 2c 20  | been supplied, |
0008b870  61 6e 64 20 63 68 65 63  6b 20 74 68 61 74 20 69  |and check that i|
0008b880  74 20 69 73 20 74 68 65  20 63 6f 72 72 65 63 74  |t is the correct|
0008b890  20 6f 6e 65 2e 0a 0a 54  68 65 20 6d 6f 73 74 20  | one...The most |
0008b8a0  63 6f 6d 6d 6f 6e 20 75  73 65 20 6f 66 20 4f 53  |common use of OS|
0008b8b0  5f 55 70 43 61 6c 6c 20  31 20 61 6e 64 20 32 20  |_UpCall 1 and 2 |
0008b8c0  69 73 20 74 6f 20 72 65  71 75 65 73 74 20 74 68  |is to request th|
0008b8d0  61 74 20 61 20 66 6c 6f  70 70 79 20 64 69 73 63  |at a floppy disc|
0008b8e0  20 69 73 20 69 6e 73 65  72 74 65 64 2e 00 00 00  | is inserted....|
0008b8f0  44 41 54 41 cc 04 00 00  4f 53 5f 55 70 43 61 6c  |DATA....OS_UpCal|
0008b900  6c 20 36 20 2d 20 53 6c  65 65 70 0a 23 50 61 72  |l 6 - Sleep.#Par|
0008b910  65 6e 74 20 4f 53 5f 55  70 43 61 6c 6c 52 65 61  |ent OS_UpCallRea|
0008b920  73 6f 6e 73 0a 3d 3e 09  52 30 20 3d 09 36 20 28  |sons.=>.R0 =.6 (|
0008b930  53 6c 65 65 70 29 0a 09  52 31 20 3d 09 70 6f 69  |Sleep)..R1 =.poi|
0008b940  6e 74 65 72 20 74 6f 20  70 6f 6c 6c 20 77 6f 72  |nter to poll wor|
0008b950  64 20 28 69 6e 20 61 20  67 6c 6f 62 61 6c 20 6d  |d (in a global m|
0008b960  65 6d 6f 72 79 20 61 72  65 61 2c 20 65 67 20 74  |emory area, eg t|
0008b970  68 65 20 52 4d 41 29 0a  0a 3c 3d 09 52 30 20 3d  |he RMA)..<=.R0 =|
0008b980  09 30 20 69 66 20 55 70  43 61 6c 6c 20 63 6c 61  |.0 if UpCall cla|
0008b990  69 6d 65 64 0a 0a 54 68  69 73 20 55 70 63 61 6c  |imed..This Upcal|
0008b9a0  6c 20 69 6e 66 6f 72 6d  73 20 74 68 65 20 54 61  |l informs the Ta|
0008b9b0  73 6b 57 69 6e 64 6f 77  20 6d 6f 64 75 6c 65 20  |skWindow module |
0008b9c0  74 68 61 74 20 61 20 74  61 73 6b 20 77 61 6e 74  |that a task want|
0008b9d0  73 20 74 6f 20 73 6c 65  65 70 20 75 6e 74 69 6c  |s to sleep until|
0008b9e0  20 73 6f 6d 65 20 74 65  72 6d 69 6e 61 74 69 6f  | some terminatio|
0008b9f0  6e 20 63 6f 6e 64 69 74  69 6f 6e 20 69 73 20 6d  |n condition is m|
0008ba00  65 74 0a 0a 54 68 69 73  20 63 61 6c 6c 20 69 73  |et..This call is|
0008ba10  20 6d 61 64 65 20 62 79  20 61 20 74 61 73 6b 20  | made by a task |
0008ba20  74 68 61 74 20 77 61 6e  74 73 20 74 6f 20 73 6c  |that wants to sl|
0008ba30  65 65 70 20 75 6e 74 69  6c 20 73 6f 6d 65 20 74  |eep until some t|
0008ba40  65 72 6d 69 6e 61 74 69  6f 6e 20 63 6f 6e 64 69  |ermination condi|
0008ba50  74 69 6f 6e 20 69 73 20  6d 65 74 2c 20 73 69 67  |tion is met, sig|
0008ba60  6e 61 6c 6c 65 64 20 62  79 20 74 68 65 20 63 6f  |nalled by the co|
0008ba70  6e 74 65 6e 74 73 20 6f  66 20 74 68 65 20 70 6f  |ntents of the po|
0008ba80  6c 6c 20 77 6f 72 64 20  62 65 63 6f 6d 69 6e 67  |ll word becoming|
0008ba90  20 6e 6f 6e 20 7a 65 72  6f 2e 20 49 74 20 69 73  | non zero. It is|
0008baa0  20 6e 6f 74 20 61 76 61  69 6c 61 62 6c 65 20 69  | not available i|
0008bab0  6e 20 52 49 53 43 20 4f  53 20 32 2e 0a 0a 43 6f  |n RISC OS 2...Co|
0008bac0  6e 74 72 6f 6c 20 6d 61  79 20 72 65 74 75 72 6e  |ntrol may return|
0008bad0  20 74 6f 20 74 68 65 20  74 61 73 6b 20 62 65 66  | to the task bef|
0008bae0  6f 72 65 20 74 68 65 20  70 6f 6c 6c 20 77 6f 72  |ore the poll wor|
0008baf0  64 20 62 65 63 6f 6d 65  73 20 6e 6f 6e 20 7a 65  |d becomes non ze|
0008bb00  72 6f 2e 20 57 68 69 6c  65 20 74 68 65 20 74 61  |ro. While the ta|
0008bb10  73 6b 20 69 73 20 73 6c  65 65 70 69 6e 67 20 6f  |sk is sleeping o|
0008bb20  74 68 65 72 20 74 61 73  6b 73 20 77 69 6c 6c 20  |ther tasks will |
0008bb30  63 6f 6e 74 69 6e 75 65  20 74 6f 20 62 65 20 70  |continue to be p|
0008bb40  6f 6c 6c 65 64 20 62 79  20 74 68 65 20 57 69 6d  |olled by the Wim|
0008bb50  70 2e 0a 0a 49 66 20 74  68 65 20 74 65 72 6d 69  |p...If the termi|
0008bb60  6e 61 74 69 6f 6e 20 63  6f 6e 64 69 74 69 6f 6e  |nation condition|
0008bb70  20 63 61 6e 20 62 65 20  72 65 63 6f 67 6e 69 73  | can be recognis|
0008bb80  65 64 20 65 78 74 65 72  6e 61 6c 6c 79 20 28 69  |ed externally (i|
0008bb90  65 20 69 6e 20 61 6e 6f  74 68 65 72 20 57 69 6d  |e in another Wim|
0008bba0  70 20 74 61 73 6b 20 6f  72 20 75 6e 64 65 72 20  |p task or under |
0008bbb0  69 6e 74 65 72 72 75 70  74 29 20 68 65 6e 63 65  |interrupt) hence|
0008bbc0  20 63 61 75 73 69 6e 67  20 74 68 65 20 70 6f 6c  | causing the pol|
0008bbd0  6c 20 77 6f 72 64 20 74  6f 20 62 65 20 73 65 74  |l word to be set|
0008bbe0  20 6e 6f 6e 20 7a 65 72  6f 2c 20 74 68 65 20 63  | non zero, the c|
0008bbf0  61 6c 6c 69 6e 67 20 74  61 73 6b 20 73 68 6f 75  |alling task shou|
0008bc00  6c 64 20 73 65 74 20 74  68 65 20 70 6f 6c 6c 20  |ld set the poll |
0008bc10  77 6f 72 64 20 74 6f 20  7a 65 72 6f 20 6f 6e 20  |word to zero on |
0008bc20  65 6e 74 72 79 2e 20 4f  74 68 65 72 77 69 73 65  |entry. Otherwise|
0008bc30  20 74 68 65 20 70 6f 6c  6c 20 77 6f 72 64 20 6d  | the poll word m|
0008bc40  75 73 74 20 62 65 20 6e  6f 6e 20 7a 65 72 6f 20  |ust be non zero |
0008bc50  6f 6e 20 65 6e 74 72 79  2c 20 73 6f 20 74 68 61  |on entry, so tha|
0008bc60  74 20 74 68 65 20 63 6f  6e 72 6f 6c 20 77 69 6c  |t the conrol wil|
0008bc70  6c 20 72 65 74 75 72 6e  20 74 6f 20 74 68 65 20  |l return to the |
0008bc80  63 61 6c 6c 69 6e 67 20  74 61 73 6b 20 61 66 74  |calling task aft|
0008bc90  65 72 20 65 61 63 68 20  3c 57 69 6d 70 20 50 6f  |er each <Wimp Po|
0008bca0  6c 6c 3d 3e 57 69 6d 70  3a 57 69 6d 70 5f 50 6f  |ll=>Wimp:Wimp_Po|
0008bcb0  6c 6c 3e 2e 0a 0a 4e 6f  74 65 20 74 68 61 74 20  |ll>...Note that |
0008bcc0  61 20 74 61 73 6b 20 6d  75 73 6e 27 74 20 75 73  |a task musn't us|
0008bcd0  65 20 74 68 69 73 20 55  70 43 61 6c 6c 20 69 66  |e this UpCall if|
0008bce0  20 69 74 27 73 20 6e 6f  74 20 72 65 2d 65 6e 74  | it's not re-ent|
0008bcf0  72 61 6e 74 2e 0a 0a 54  68 65 20 63 61 6c 6c 69  |rant...The calli|
0008bd00  6e 67 20 74 61 73 6b 20  6d 75 73 74 20 62 65 20  |ng task must be |
0008bd10  72 75 6e 6e 69 6e 67 20  69 6e 20 61 20 74 61 73  |running in a tas|
0008bd20  6b 20 77 69 6e 64 6f 77  2e 20 54 68 65 20 74 61  |k window. The ta|
0008bd30  73 6b 20 77 69 6e 64 6f  77 20 6d 6f 64 75 6c 65  |sk window module|
0008bd40  20 69 6e 74 65 72 63 65  70 74 73 20 74 68 69 73  | intercepts this|
0008bd50  20 55 70 43 61 6c 6c 3b  20 79 6f 75 20 73 68 6f  | UpCall; you sho|
0008bd60  75 6c 64 20 6e 6f 74 20  64 6f 20 73 6f 20 79 6f  |uld not do so yo|
0008bd70  75 72 73 65 6c 66 2e 20  54 68 65 73 65 20 74 77  |urself. These tw|
0008bd80  6f 20 72 65 73 74 72 69  63 74 69 6f 6e 73 20 6d  |o restrictions m|
0008bd90  61 79 20 62 65 20 72 65  6d 6f 76 65 64 20 69 6e  |ay be removed in|
0008bda0  20 66 75 74 75 72 65 20  76 65 72 73 69 6f 6e 73  | future versions|
0008bdb0  20 6f 66 20 52 49 53 43  20 4f 53 2e 44 41 54 41  | of RISC OS.DATA|
0008bdc0  c9 02 00 00 4f 53 5f 55  70 43 61 6c 6c 20 37 20  |....OS_UpCall 7 |
0008bdd0  2d 20 53 6c 65 65 70 20  4e 6f 20 4d 6f 72 65 0a  |- Sleep No More.|
0008bde0  3d 3e 09 52 30 20 3d 09  37 20 28 53 6c 65 65 70  |=>.R0 =.7 (Sleep|
0008bdf0  20 6e 6f 20 6d 6f 72 65  29 0a 09 52 31 20 3d 09  | no more)..R1 =.|
0008be00  70 6f 69 6e 74 65 72 20  74 6f 20 70 6f 6c 6c 20  |pointer to poll |
0008be10  77 6f 72 64 20 28 69 6e  20 61 20 67 6c 6f 62 61  |word (in a globa|
0008be20  6c 20 6d 65 6d 6f 72 79  20 61 72 65 61 2c 20 65  |l memory area, e|
0008be30  67 20 74 68 65 20 52 4d  41 29 0a 0a 3c 3d 09 52  |g the RMA)..<=.R|
0008be40  30 20 70 72 65 73 65 72  76 65 64 20 69 66 20 56  |0 preserved if V|
0008be50  20 66 6c 61 67 20 63 6c  65 61 72 0a 09 52 30 20  | flag clear..R0 |
0008be60  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 65 72 72  |=.pointer to err|
0008be70  6f 72 20 62 6c 6f 63 6b  20 69 66 20 56 20 66 6c  |or block if V fl|
0008be80  61 67 20 73 65 74 0a 0a  54 68 69 73 20 55 70 63  |ag set..This Upc|
0008be90  61 6c 6c 20 69 6e 66 6f  72 6d 73 20 74 68 65 20  |all informs the |
0008bea0  54 61 73 6b 57 69 6e 64  6f 77 20 6d 6f 64 75 6c  |TaskWindow modul|
0008beb0  65 20 74 68 61 74 20 61  6e 20 6f 70 65 6e 20 70  |e that an open p|
0008bec0  69 70 65 20 68 61 73 20  62 65 65 6e 20 63 6c 6f  |ipe has been clo|
0008bed0  73 65 64 20 6f 72 20 64  65 6c 65 74 65 64 2e 20  |sed or deleted. |
0008bee0  49 74 20 69 73 20 6d 61  64 65 20 62 79 20 50 69  |It is made by Pi|
0008bef0  70 65 46 53 20 69 66 20  61 6e 20 6f 70 65 6e 20  |peFS if an open |
0008bf00  70 69 70 65 20 69 73 20  63 6c 6f 73 65 64 20 6f  |pipe is closed o|
0008bf10  72 20 64 65 6c 65 74 65  64 2e 20 49 74 27 73 20  |r deleted. It's |
0008bf20  6e 6f 74 20 61 76 61 69  6c 61 62 6c 65 20 69 6e  |not available in|
0008bf30  20 52 49 53 43 20 4f 53  20 32 2e 0a 0a 54 68 65  | RISC OS 2...The|
0008bf40  20 54 61 73 6b 20 57 69  6e 64 6f 77 20 6d 6f 64  | Task Window mod|
0008bf50  75 6c 65 20 74 68 65 6e  20 74 72 61 70 73 20 74  |ule then traps t|
0008bf60  68 69 73 20 61 6e 64 20  6f 62 6a 65 63 74 73 20  |his and objects |
0008bf70  69 66 20 61 6e 79 20 6f  66 20 69 74 73 20 74 61  |if any of its ta|
0008bf80  73 6b 73 20 61 72 65 20  63 75 72 72 65 6e 74 6c  |sks are currentl|
0008bf90  79 20 77 61 69 74 69 6e  67 20 66 6f 72 20 74 68  |y waiting for th|
0008bfa0  65 20 70 6f 6c 6c 20 77  6f 72 64 20 72 65 6c 61  |e poll word rela|
0008bfb0  74 65 64 20 74 6f 20 74  68 61 74 20 70 69 70 65  |ted to that pipe|
0008bfc0  20 74 6f 20 62 65 63 6f  6d 65 20 6e 6f 6e 20 7a  | to become non z|
0008bfd0  65 72 6f 2c 20 62 79 20  72 65 74 75 72 6e 69 6e  |ero, by returnin|
0008bfe0  67 20 61 6e 20 65 72 72  6f 72 2e 0a 0a 54 68 69  |g an error...Thi|
0008bff0  73 20 70 72 65 76 65 6e  74 73 20 61 20 2a 53 68  |s prevents a *Sh|
0008c000  75 74 20 63 6f 6d 6d 61  6e 64 20 66 72 6f 6d 20  |ut command from |
0008c010  64 65 6c 65 74 69 6e 67  20 74 68 65 20 77 6f 72  |deleting the wor|
0008c020  6b 73 70 61 63 65 20 77  68 69 63 68 20 69 73 20  |kspace which is |
0008c030  62 65 69 6e 67 20 61 63  63 65 73 73 65 64 20 62  |being accessed b|
0008c040  79 20 74 68 65 20 54 61  73 6b 20 57 69 6e 64 6f  |y the Task Windo|
0008c050  77 2c 20 77 68 69 63 68  20 63 6f 75 6c 64 20 70  |w, which could p|
0008c060  6f 74 65 6e 74 69 61 6c  6c 79 20 63 61 75 73 65  |otentially cause|
0008c070  20 61 64 64 72 65 73 73  20 65 78 63 65 70 74 69  | address excepti|
0008c080  6f 6e 73 2e 0a 00 00 00  44 41 54 41 96 01 00 00  |ons.....DATA....|
0008c090  4f 53 5f 55 70 43 61 6c  6c 20 38 20 2d 20 42 75  |OS_UpCall 8 - Bu|
0008c0a0  66 66 65 72 20 66 69 6c  6c 69 6e 67 0a 3d 3e 09  |ffer filling.=>.|
0008c0b0  52 30 20 3d 09 38 20 28  42 75 66 66 65 72 20 66  |R0 =.8 (Buffer f|
0008c0c0  69 6c 6c 69 6e 67 29 0a  09 52 31 20 3d 09 62 75  |illing)..R1 =.bu|
0008c0d0  66 66 65 72 20 68 61 6e  64 6c 65 0a 09 52 32 20  |ffer handle..R2 |
0008c0e0  3d 09 30 0a 0a 3c 3d 09  41 6c 6c 20 72 65 67 69  |=.0..<=.All regi|
0008c0f0  73 74 65 72 73 20 70 72  65 73 65 72 76 65 64 0a  |sters preserved.|
0008c100  0a 54 68 69 73 20 55 70  63 61 6c 6c 20 69 6e 66  |.This Upcall inf|
0008c110  6f 72 6d 73 20 79 6f 75  20 74 68 61 74 20 61 20  |orms you that a |
0008c120  62 75 66 66 65 72 27 73  20 66 72 65 65 20 73 70  |buffer's free sp|
0008c130  61 63 65 20 68 61 73 20  62 65 63 6f 6d 65 20 6c  |ace has become l|
0008c140  65 73 73 20 74 68 61 6e  20 69 74 73 20 73 70 65  |ess than its spe|
0008c150  63 69 66 69 65 64 20 74  68 72 65 73 68 6f 6c 64  |cified threshold|
0008c160  2e 20 54 68 65 20 42 75  66 66 65 72 20 4d 61 6e  |. The Buffer Man|
0008c170  61 67 65 72 20 69 73 73  75 65 73 20 74 68 69 73  |ager issues this|
0008c180  20 63 61 6c 6c 20 77 68  65 6e 20 64 61 74 61 20  | call when data |
0008c190  69 73 20 69 6e 73 65 72  74 65 64 20 69 6e 74 6f  |is inserted into|
0008c1a0  20 74 68 65 20 73 70 65  63 69 66 69 65 64 20 62  | the specified b|
0008c1b0  75 66 66 65 72 2c 20 61  6e 64 20 74 68 65 20 66  |uffer, and the f|
0008c1c0  72 65 65 20 73 70 61 63  65 20 62 65 63 6f 6d 65  |ree space become|
0008c1d0  73 20 6c 65 73 73 20 74  68 61 6e 20 69 74 73 20  |s less than its |
0008c1e0  63 75 72 72 65 6e 74 20  74 68 72 65 73 68 6f 6c  |current threshol|
0008c1f0  64 2e 0a 0a 54 68 69 73  20 63 61 6c 6c 20 69 73  |d...This call is|
0008c200  20 6e 65 76 65 72 20 69  73 73 75 65 64 20 75 6e  | never issued un|
0008c210  64 65 72 20 52 49 53 43  20 4f 53 20 32 2e 00 00  |der RISC OS 2...|
0008c220  44 41 54 41 b6 01 00 00  4f 53 5f 55 70 43 61 6c  |DATA....OS_UpCal|
0008c230  6c 20 39 20 2d 20 42 75  66 66 65 72 20 65 6d 70  |l 9 - Buffer emp|
0008c240  74 79 69 6e 67 0a 3d 3e  09 52 30 20 3d 09 39 20  |tying.=>.R0 =.9 |
0008c250  28 42 75 66 66 65 72 a0  65 6d 70 74 79 69 6e 67  |(Buffer.emptying|
0008c260  29 0a 09 52 31 20 3d 09  62 75 66 66 65 72 20 68  |)..R1 =.buffer h|
0008c270  61 6e 64 6c 65 0a 09 52  32 20 3d 09 2d 31 0a 0a  |andle..R2 =.-1..|
0008c280  3c 3d 09 41 6c 6c 20 72  65 67 69 73 74 65 72 73  |<=.All registers|
0008c290  20 70 72 65 73 65 72 76  65 64 0a 0a 54 68 69 73  | preserved..This|
0008c2a0  20 55 70 63 61 6c 6c 20  69 6e 66 6f 72 6d 73 20  | Upcall informs |
0008c2b0  79 6f 75 20 74 68 61 74  20 61 20 62 75 66 66 65  |you that a buffe|
0008c2c0  72 27 73 20 66 72 65 65  20 73 70 61 63 65 20 68  |r's free space h|
0008c2d0  61 73 20 62 65 63 6f 6d  65 20 67 72 65 61 74 65  |as become greate|
0008c2e0  72 20 74 68 61 6e 20 6f  72 20 65 71 75 61 6c 20  |r than or equal |
0008c2f0  74 6f 20 69 74 73 20 73  70 65 63 69 66 69 65 64  |to its specified|
0008c300  20 74 68 72 65 73 68 6f  6c 64 2e 20 54 68 65 20  | threshold. The |
0008c310  42 75 66 66 65 72 20 4d  61 6e 61 67 65 72 20 69  |Buffer Manager i|
0008c320  73 73 75 65 73 20 74 68  69 73 20 63 61 6c 6c 20  |ssues this call |
0008c330  77 68 65 6e 20 64 61 74  61 20 69 73 20 72 65 6d  |when data is rem|
0008c340  6f 76 65 64 20 66 72 6f  6d 20 74 68 65 20 73 70  |oved from the sp|
0008c350  65 63 69 66 69 65 64 20  62 75 66 66 65 72 2c 20  |ecified buffer, |
0008c360  61 6e 64 20 74 68 65 20  66 72 65 65 20 73 70 61  |and the free spa|
0008c370  63 65 20 62 65 63 6f 6d  65 73 20 67 72 65 61 74  |ce becomes great|
0008c380  65 72 20 74 68 61 6e 20  6f 72 20 65 71 75 61 6c  |er than or equal|
0008c390  20 74 6f 20 69 74 73 20  63 75 72 72 65 6e 74 20  | to its current |
0008c3a0  74 68 72 65 73 68 6f 6c  64 2e 0a 0a 54 68 69 73  |threshold...This|
0008c3b0  20 63 61 6c 6c 20 69 73  20 6e 65 76 65 72 20 69  | call is never i|
0008c3c0  73 73 75 65 64 20 75 6e  64 65 72 20 52 49 53 43  |ssued under RISC|
0008c3d0  20 4f 53 20 32 2e 00 00  44 49 52 24 54 01 00 00  | OS 2...DIR$T...|
0008c3e0  54 01 00 00 2c c5 08 00  47 ff ff ff 2b 69 b8 cd  |T...,...G...+i..|
0008c3f0  b0 02 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
0008c400  74 00 00 00 dc c7 08 00  48 fd ff ff 31 c3 33 1f  |t.......H...1.3.|
0008c410  72 01 00 00 13 00 00 00  00 00 00 00 31 00 00 00  |r...........1...|
0008c420  50 c9 08 00 48 fd ff ff  74 bc 33 1f 92 01 00 00  |P...H...t.3.....|
0008c430  13 00 00 00 00 00 00 00  33 00 00 00 e4 ca 08 00  |........3.......|
0008c440  48 fd ff ff e3 6b 7b 20  41 03 00 00 13 00 00 00  |H....k{ A.......|
0008c450  00 00 00 00 39 00 00 00  28 ce 08 00 48 fd ff ff  |....9...(...H...|
0008c460  0d 5e 7b 20 6e 03 00 00  13 00 00 00 00 00 00 00  |.^{ n...........|
0008c470  31 30 00 00 98 d1 08 00  48 fd ff ff 96 9e 7c 20  |10......H.....| |
0008c480  16 03 00 00 13 00 00 00  00 00 00 00 31 31 00 00  |............11..|
0008c490  b0 d4 08 00 48 fd ff ff  80 ee 7e 20 1d 04 00 00  |....H.....~ ....|
0008c4a0  13 00 00 00 00 00 00 00  31 32 00 00 d0 d8 08 00  |........12......|
0008c4b0  48 fd ff ff c6 a4 3d 0e  5c 03 00 00 13 00 00 00  |H.....=.\.......|
0008c4c0  00 00 00 00 35 00 00 00  2c dc 08 00 46 fd ff ff  |....5...,...F...|
0008c4d0  2c 78 60 f5 1e 04 00 00  13 00 00 00 00 00 00 00  |,x`.............|
0008c4e0  38 00 00 00 4c e0 08 00  48 fd ff ff d4 cc 7c 20  |8...L...H.....| |
0008c4f0  fa 00 00 00 13 00 00 00  00 00 00 00 31 30 62 75  |............10bu|
0008c500  66 66 65 72 00 00 00 00  48 e1 08 00 48 fd ff ff  |ffer....H...H...|
0008c510  bd c6 7c 20 2b 01 00 00  13 00 00 00 00 00 00 00  |..| +...........|
0008c520  31 31 62 75 66 66 65 72  00 00 00 00 44 41 54 41  |11buffer....DATA|
0008c530  b0 02 00 00 4f 53 5f 47  42 50 42 20 20 28 26 30  |....OS_GBPB  (&0|
0008c540  43 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 0a 54  |C).#Parent OS_.T|
0008c550  68 69 73 20 53 57 49 20  52 65 61 64 2f 57 72 69  |his SWI Read/Wri|
0008c560  74 65 73 20 61 20 62 6c  6f 63 6b 20 66 72 6f 6d  |tes a block from|
0008c570  2f 74 6f 20 61 6e 20 6f  70 65 6e 20 66 69 6c 65  |/to an open file|
0008c580  0a 0a 52 30 09 41 63 74  69 6f 6e 0a 23 4c 69 6e  |..R0.Action.#Lin|
0008c590  65 0a 31 09 3c 57 72 69  74 65 20 62 79 74 65 73  |e.1.<Write bytes|
0008c5a0  20 74 6f 20 67 69 76 65  6e 20 70 6f 69 6e 74 65  | to given pointe|
0008c5b0  72 3d 3e 4f 53 5f 47 42  50 42 31 3e 0a 32 09 3c  |r=>OS_GBPB1>.2.<|
0008c5c0  57 72 69 74 65 20 62 79  74 65 73 20 74 6f 20 63  |Write bytes to c|
0008c5d0  75 72 72 65 6e 74 20 70  6f 69 6e 74 65 72 3d 3e  |urrent pointer=>|
0008c5e0  4f 53 5f 47 42 50 42 31  3e 0a 33 09 3c 52 65 61  |OS_GBPB1>.3.<Rea|
0008c5f0  64 20 62 79 74 65 73 20  66 72 6f 6d 20 67 69 76  |d bytes from giv|
0008c600  65 6e 20 70 6f 69 6e 74  65 72 3d 3e 4f 53 5f 47  |en pointer=>OS_G|
0008c610  42 50 42 33 3e 0a 34 09  3c 52 65 61 64 20 62 79  |BPB3>.4.<Read by|
0008c620  74 65 73 20 66 72 6f 6d  20 63 75 72 72 65 6e 74  |tes from current|
0008c630  20 70 6f 69 6e 74 65 72  3d 3e 4f 53 5f 47 42 50  | pointer=>OS_GBP|
0008c640  42 33 3e 0a 35 09 3c 52  65 61 64 20 6e 61 6d 65  |B3>.5.<Read name|
0008c650  20 26 20 62 6f 6f 74 20  6f 70 74 69 6f 6e 73 3d  | & boot options=|
0008c660  3e 4f 53 5f 47 42 50 42  35 3e 0a 36 09 3c 52 65  |>OS_GBPB5>.6.<Re|
0008c670  61 64 20 63 75 72 72 65  6e 74 20 64 69 72 20 61  |ad current dir a|
0008c680  6e 64 20 70 72 69 76 69  6c 65 67 65 20 62 79 74  |nd privilege byt|
0008c690  65 3d 3e 4f 53 5f 47 42  50 42 35 3e 0a 37 09 3c  |e=>OS_GBPB5>.7.<|
0008c6a0  52 65 61 64 20 6c 69 62  72 61 72 79 20 64 69 72  |Read library dir|
0008c6b0  20 61 6e 64 20 70 72 69  76 69 6c 65 67 65 20 62  | and privilege b|
0008c6c0  79 74 65 3d 3e 4f 53 5f  47 42 50 42 35 3e 0a 38  |yte=>OS_GBPB5>.8|
0008c6d0  09 3c 52 65 61 64 20 65  6e 74 72 69 65 73 20 66  |.<Read entries f|
0008c6e0  72 6f 6d 20 63 75 72 72  65 6e 74 20 64 69 72 3d  |rom current dir=|
0008c6f0  3e 4f 53 5f 47 42 50 42  38 3e 0a 39 09 3c 52 65  |>OS_GBPB8>.9.<Re|
0008c700  61 64 20 65 6e 74 72 69  65 73 20 66 72 6f 6d 20  |ad entries from |
0008c710  67 69 76 65 6e 20 64 69  72 3d 3e 4f 53 5f 47 42  |given dir=>OS_GB|
0008c720  50 42 39 3e 0a 31 30 09  3c 52 65 61 64 20 65 6e  |PB9>.10.<Read en|
0008c730  74 72 69 65 73 20 61 6e  64 20 69 6e 66 6f 20 66  |tries and info f|
0008c740  72 6f 6d 20 67 69 76 65  6e 20 64 69 72 3d 3e 4f  |rom given dir=>O|
0008c750  53 5f 47 42 50 42 31 30  3e 0a 31 31 09 3c 52 65  |S_GBPB10>.11.<Re|
0008c760  61 64 20 65 6e 74 72 69  65 73 20 61 6e 64 20 66  |ad entries and f|
0008c770  75 6c 6c 20 69 6e 66 6f  20 66 72 6f 6d 20 67 69  |ull info from gi|
0008c780  76 65 6e 20 64 69 72 3d  3e 4f 53 5f 47 42 50 42  |ven dir=>OS_GBPB|
0008c790  31 31 3e 0a 31 32 09 3c  52 65 61 64 20 65 6e 74  |11>.12.<Read ent|
0008c7a0  72 69 65 73 20 61 6e 64  20 66 75 6c 6c 20 69 6e  |ries and full in|
0008c7b0  66 6f 20 77 69 74 68 20  66 69 6c 65 74 79 70 65  |fo with filetype|
0008c7c0  20 66 72 6f 6d 20 67 69  76 65 6e 20 64 69 72 3d  | from given dir=|
0008c7d0  3e 4f 53 5f 47 42 50 42  31 32 3e 0a 44 41 54 41  |>OS_GBPB12>.DATA|
0008c7e0  72 01 00 00 4f 53 5f 47  42 50 42 20 31 20 61 6e  |r...OS_GBPB 1 an|
0008c7f0  64 20 32 0a 23 50 61 72  65 6e 74 20 4f 53 5f 47  |d 2.#Parent OS_G|
0008c800  42 50 42 0a 3d 3e 09 52  30 20 3d 09 31 20 6f 72  |BPB.=>.R0 =.1 or|
0008c810  20 32 0a 09 52 31 20 3d  09 66 69 6c 65 20 68 61  | 2..R1 =.file ha|
0008c820  6e 64 6c 65 0a 09 52 32  20 3d 09 62 75 66 66 65  |ndle..R2 =.buffe|
0008c830  72 0a 09 52 33 20 3d 09  62 79 74 65 73 20 74 6f  |r..R3 =.bytes to|
0008c840  20 77 72 69 74 65 0a 49  66 20 52 30 20 3d 20 31  | write.If R0 = 1|
0008c850  20 3a 0a 09 52 34 20 3d  09 66 69 6c 65 20 70 6f  | :..R4 =.file po|
0008c860  69 6e 74 65 72 0a 0a 3c  3d 09 52 32 20 3d 09 70  |inter..<=.R2 =.p|
0008c870  6f 69 6e 74 65 72 20 61  66 74 65 72 20 65 6e 64  |ointer after end|
0008c880  20 6f 66 20 64 61 74 61  0a 09 52 33 20 3d 09 6e  | of data..R3 =.n|
0008c890  75 6d 62 65 72 20 6f 66  20 62 79 74 65 73 20 2a  |umber of bytes *|
0008c8a0  6e 6f 74 2a 20 74 72 61  6e 73 66 65 72 72 65 64  |not* transferred|
0008c8b0  0a 09 52 34 20 3d 09 6e  65 77 20 66 69 6c 65 20  |..R4 =.new file |
0008c8c0  70 6f 69 6e 74 65 72 0a  09 43 20 69 73 20 63 6c  |pointer..C is cl|
0008c8d0  65 61 72 0a 0a 54 68 65  20 27 45 4f 46 2d 65 72  |ear..The 'EOF-er|
0008c8e0  72 6f 72 2d 6f 6e 2d 6e  65 78 74 2d 72 65 61 64  |ror-on-next-read|
0008c8f0  27 20 66 6c 61 67 20 69  73 20 63 6c 65 61 72 65  |' flag is cleare|
0008c900  64 2e 0a 0a 45 72 72 6f  72 20 69 73 20 67 65 6e  |d...Error is gen|
0008c910  65 72 61 74 65 64 20 69  66 20 69 6e 76 61 6c 69  |erated if invali|
0008c920  64 20 66 69 6c 65 20 68  61 6e 64 6c 65 2c 20 64  |d file handle, d|
0008c930  69 72 65 63 74 6f 72 79  2c 20 6f 72 20 6e 6f 20  |irectory, or no |
0008c940  77 72 69 74 65 20 61 63  63 65 73 73 2e 0a 00 00  |write access....|
0008c950  44 41 54 41 92 01 00 00  4f 53 5f 47 42 50 42 20  |DATA....OS_GBPB |
0008c960  33 20 61 6e 64 20 34 0a  23 50 61 72 65 6e 74 20  |3 and 4.#Parent |
0008c970  4f 53 5f 47 42 50 42 0a  3d 3e 09 52 30 20 3d 09  |OS_GBPB.=>.R0 =.|
0008c980  33 20 6f 72 20 34 0a 09  52 31 20 3d 09 66 69 6c  |3 or 4..R1 =.fil|
0008c990  65 20 68 61 6e 64 6c 65  0a 09 52 32 20 3d 09 70  |e handle..R2 =.p|
0008c9a0  6f 69 6e 74 65 72 20 74  6f 20 62 75 66 66 65 72  |ointer to buffer|
0008c9b0  0a 09 52 33 20 3d 09 62  79 74 65 73 20 74 6f 20  |..R3 =.bytes to |
0008c9c0  72 65 61 64 0a 49 66 20  52 30 20 3d 20 33 20 3a  |read.If R0 = 3 :|
0008c9d0  0a 09 52 34 20 3d 09 66  69 6c 65 20 70 6f 69 6e  |..R4 =.file poin|
0008c9e0  74 65 72 0a 0a 3c 3d 09  52 32 20 3d 09 70 6f 69  |ter..<=.R2 =.poi|
0008c9f0  6e 74 65 72 20 61 66 74  65 72 20 64 61 74 61 0a  |nter after data.|
0008ca00  09 52 33 20 3d 09 6e 75  6d 62 65 72 20 6f 66 20  |.R3 =.number of |
0008ca10  62 79 74 65 73 20 2a 6e  6f 74 2a 20 74 72 61 6e  |bytes *not* tran|
0008ca20  73 66 65 72 72 65 64 0a  09 52 34 20 3d 09 6e 65  |sferred..R4 =.ne|
0008ca30  77 20 66 69 6c 65 20 70  6f 69 6e 74 65 72 0a 09  |w file pointer..|
0008ca40  43 20 69 73 20 63 6c 65  61 72 20 69 66 20 52 33  |C is clear if R3|
0008ca50  20 3d 20 30 2c 20 65 6c  73 65 20 69 74 20 69 73  | = 0, else it is|
0008ca60  20 73 65 74 2e 0a 0a 54  68 65 20 27 45 4f 46 2d  | set...The 'EOF-|
0008ca70  65 72 72 6f 72 2d 6f 6e  2d 6e 65 78 74 2d 72 65  |error-on-next-re|
0008ca80  61 64 27 20 66 6c 61 67  20 69 73 20 63 6c 65 61  |ad' flag is clea|
0008ca90  72 65 64 2e 0a 0a 45 72  72 6f 72 20 69 73 20 67  |red...Error is g|
0008caa0  65 6e 65 72 61 74 65 64  20 69 66 20 69 6e 76 61  |enerated if inva|
0008cab0  6c 69 64 20 66 69 6c 65  20 68 61 6e 64 6c 65 2c  |lid file handle,|
0008cac0  20 6f 72 20 64 69 72 65  63 74 6f 72 79 2c 20 6f  | or directory, o|
0008cad0  72 20 6e 6f 20 72 65 61  64 20 61 63 63 65 73 73  |r no read access|
0008cae0  2e 0a 00 00 44 41 54 41  41 03 00 00 4f 53 5f 47  |....DATAA...OS_G|
0008caf0  42 50 42 20 20 39 0a 23  50 61 72 65 6e 74 20 4f  |BPB  9.#Parent O|
0008cb00  53 5f 47 42 50 42 0a 3d  3e 09 52 30 20 3d 09 39  |S_GBPB.=>.R0 =.9|
0008cb10  0a 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
0008cb20  6f 20 64 69 72 65 63 74  6f 72 79 20 6e 61 6d 65  |o directory name|
0008cb30  0a 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R2 =.pointer t|
0008cb40  6f 20 62 75 66 66 65 72  0a 09 52 33 20 3d 09 6e  |o buffer..R3 =.n|
0008cb50  75 6d 62 65 72 20 6f 66  20 6f 62 6a 65 63 74 73  |umber of objects|
0008cb60  20 74 6f 20 72 65 61 64  0a 09 52 34 20 3d 09 77  | to read..R4 =.w|
0008cb70  68 65 72 65 20 74 6f 20  73 74 61 72 74 2c 20 30  |here to start, 0|
0008cb80  20 66 6f 72 20 66 69 72  73 74 20 74 69 6d 65 0a  | for first time.|
0008cb90  09 52 35 20 3d 09 6c 65  6e 67 74 68 20 6f 66 20  |.R5 =.length of |
0008cba0  62 75 66 66 65 72 0a 09  52 36 20 3d 09 77 69 6c  |buffer..R6 =.wil|
0008cbb0  64 63 61 72 64 65 64 20  6e 61 6d 65 20 74 6f 20  |dcarded name to |
0008cbc0  6d 61 74 63 68 20 28 69  66 20 30 20 22 2a 22 20  |match (if 0 "*" |
0008cbd0  69 73 20 75 73 65 64 29  0a 3c 3d 09 52 33 20 3d  |is used).<=.R3 =|
0008cbe0  09 6e 75 6d 62 65 72 20  6f 66 20 6f 62 6a 65 63  |.number of objec|
0008cbf0  74 73 20 72 65 61 64 0a  09 52 34 20 3d 09 77 68  |ts read..R4 =.wh|
0008cc00  65 72 65 20 74 6f 20 63  6f 6e 74 69 6e 75 65 2c  |ere to continue,|
0008cc10  20 6f 72 20 2d 31 20 66  6f 72 20 6e 6f 20 6d 6f  | or -1 for no mo|
0008cc20  72 65 0a 09 43 20 66 6c  61 67 20 69 73 20 63 6c  |re..C flag is cl|
0008cc30  65 61 72 20 69 66 20 52  33 20 3d 20 30 2c 20 65  |ear if R3 = 0, e|
0008cc40  6c 73 65 20 69 74 20 69  73 20 73 65 74 0a 0a 54  |lse it is set..T|
0008cc50  68 69 73 20 53 57 49 20  72 65 61 64 73 20 66 69  |his SWI reads fi|
0008cc60  6c 65 6e 61 6d 65 20 65  6e 74 72 69 65 73 20 66  |lename entries f|
0008cc70  72 6f 6d 20 74 68 65 20  73 70 65 63 69 66 69 65  |rom the specifie|
0008cc80  64 20 64 69 72 65 63 74  6f 72 79 2c 20 72 65 74  |d directory, ret|
0008cc90  75 72 6e 69 6e 67 20 61  20 67 72 6f 75 70 20 6f  |urning a group o|
0008cca0  66 20 30 2d 74 65 72 6d  69 6e 61 74 65 64 20 73  |f 0-terminated s|
0008ccb0  74 72 69 6e 67 73 20 69  6e 20 74 68 65 20 62 75  |trings in the bu|
0008ccc0  66 66 65 72 2e 20 54 68  65 20 63 6f 72 72 65 63  |ffer. The correc|
0008ccd0  74 20 63 6f 64 65 20 73  74 72 75 63 74 75 72 65  |t code structure|
0008cce0  20 74 6f 20 63 61 6c 6c  20 74 68 69 73 20 53 57  | to call this SW|
0008ccf0  49 20 69 73 3a 0a 0a 63  61 6c 6c 20 4f 53 5f 47  |I is:..call OS_G|
0008cd00  42 50 42 20 39 0a 77 68  69 6c 65 20 28 52 34 20  |BPB 9.while (R4 |
0008cd10  5c 3c 3e 20 2d 31 29 0a  5c 7b 0a 20 20 69 66 20  |\<> -1).\{.  if |
0008cd20  28 52 33 20 5c 3c 3e 20  30 29 0a 20 20 5c 7b 0a  |(R3 \<> 0).  \{.|
0008cd30  20 20 20 20 70 72 6f 63  65 73 73 20 62 75 66 66  |    process buff|
0008cd40  65 72 0a 20 20 7d 0a 20  20 63 61 6c 6c 20 4f 53  |er.  }.  call OS|
0008cd50  5f 47 42 50 42 20 39 0a  7d 0a 0a 61 73 20 69 74  |_GBPB 9.}..as it|
0008cd60  20 69 73 20 6c 65 67 61  6c 20 74 6f 20 72 65 74  | is legal to ret|
0008cd70  75 72 6e 20 52 33 20 3d  20 30 20 62 65 66 6f 72  |urn R3 = 0 befor|
0008cd80  65 20 74 68 65 20 65 6e  64 20 6f 66 20 74 68 65  |e the end of the|
0008cd90  20 64 69 72 65 63 74 6f  72 79 2e 20 41 6c 73 6f  | directory. Also|
0008cda0  2c 20 64 6f 20 2a 6e 6f  74 2a 20 61 73 73 75 6d  |, do *not* assum|
0008cdb0  65 20 61 6e 79 74 68 69  6e 67 20 61 62 6f 75 74  |e anything about|
0008cdc0  20 74 68 65 20 76 61 6c  75 65 20 69 6e 20 52 34  | the value in R4|
0008cdd0  2e 0a 0a 4e 6f 74 65 3a  20 54 68 65 20 50 52 4d  |...Note: The PRM|
0008cde0  20 6c 69 65 73 20 77 68  65 6e 20 69 74 20 73 61  | lies when it sa|
0008cdf0  79 73 20 74 68 61 74 20  69 66 20 52 36 20 70 6f  |ys that if R6 po|
0008ce00  69 6e 74 73 20 74 6f 20  61 6e 20 65 6d 70 74 79  |ints to an empty|
0008ce10  20 73 74 72 69 6e 67 20  22 2a 22 20 69 73 20 75  | string "*" is u|
0008ce20  73 65 64 2e 0a 00 00 00  44 41 54 41 6e 03 00 00  |sed.....DATAn...|
0008ce30  4f 53 5f 47 42 50 42 20  20 31 30 0a 23 50 61 72  |OS_GBPB  10.#Par|
0008ce40  65 6e 74 20 4f 53 5f 47  42 50 42 0a 3d 3e 09 52  |ent OS_GBPB.=>.R|
0008ce50  30 20 3d 09 31 30 0a 09  52 31 20 3d 09 70 6f 69  |0 =.10..R1 =.poi|
0008ce60  6e 74 65 72 20 74 6f 20  64 69 72 65 63 74 6f 72  |nter to director|
0008ce70  79 20 6e 61 6d 65 0a 09  52 32 20 3d 09 70 6f 69  |y name..R2 =.poi|
0008ce80  6e 74 65 72 20 74 6f 20  3c 62 75 66 66 65 72 3d  |nter to <buffer=|
0008ce90  3e 4f 53 5f 47 42 50 42  31 30 62 75 66 66 65 72  |>OS_GBPB10buffer|
0008cea0  3e 0a 09 52 33 20 3d 09  6e 75 6d 62 65 72 20 6f  |>..R3 =.number o|
0008ceb0  66 20 6f 62 6a 65 63 74  73 20 74 6f 20 72 65 61  |f objects to rea|
0008cec0  64 0a 09 52 34 20 3d 09  77 68 65 72 65 20 74 6f  |d..R4 =.where to|
0008ced0  20 73 74 61 72 74 2c 20  30 20 66 69 72 73 74 20  | start, 0 first |
0008cee0  74 69 6d 65 0a 09 52 35  20 3d 09 6c 65 6e 67 74  |time..R5 =.lengt|
0008cef0  68 20 6f 66 20 62 75 66  66 65 72 0a 09 52 36 20  |h of buffer..R6 |
0008cf00  3d 09 77 69 6c 64 63 61  72 64 65 64 20 6e 61 6d  |=.wildcarded nam|
0008cf10  65 20 74 6f 20 6d 61 74  63 68 20 28 69 66 20 30  |e to match (if 0|
0008cf20  20 22 2a 22 20 69 73 20  75 73 65 64 29 0a 3c 3d  | "*" is used).<=|
0008cf30  09 52 33 20 3d 09 6e 75  6d 62 65 72 20 6f 66 20  |.R3 =.number of |
0008cf40  6f 62 6a 65 63 74 73 20  72 65 61 64 0a 09 52 34  |objects read..R4|
0008cf50  20 3d 09 77 68 65 72 65  20 74 6f 20 63 6f 6e 74  | =.where to cont|
0008cf60  69 6e 75 65 2c 20 6f 72  20 2d 31 20 66 6f 72 20  |inue, or -1 for |
0008cf70  6e 6f 20 6d 6f 72 65 0a  09 43 20 66 6c 61 67 20  |no more..C flag |
0008cf80  69 73 20 63 6c 65 61 72  20 69 66 20 52 33 20 3d  |is clear if R3 =|
0008cf90  20 30 2c 20 65 6c 73 65  20 69 74 20 69 73 20 73  | 0, else it is s|
0008cfa0  65 74 0a 0a 54 68 69 73  20 53 57 49 20 72 65 61  |et..This SWI rea|
0008cfb0  64 73 20 65 6e 74 72 69  65 73 20 66 72 6f 6d 20  |ds entries from |
0008cfc0  74 68 65 20 73 70 65 63  69 66 69 65 64 20 64 69  |the specified di|
0008cfd0  72 65 63 74 6f 72 79 2e  20 54 68 65 20 63 6f 72  |rectory. The cor|
0008cfe0  72 65 63 74 20 63 6f 64  65 20 73 74 72 75 63 74  |rect code struct|
0008cff0  75 72 65 20 74 6f 20 63  61 6c 6c 20 74 68 69 73  |ure to call this|
0008d000  20 53 57 49 20 69 73 3a  0a 0a 63 61 6c 6c 20 4f  | SWI is:..call O|
0008d010  53 5f 47 42 50 42 20 31  30 0a 77 68 69 6c 65 20  |S_GBPB 10.while |
0008d020  28 52 34 20 5c 3c 3e 20  2d 31 29 0a 5c 7b 0a 20  |(R4 \<> -1).\{. |
0008d030  20 69 66 20 28 52 33 20  5c 3c 3e 20 30 29 0a 20  | if (R3 \<> 0). |
0008d040  20 5c 7b 0a 20 20 20 20  70 72 6f 63 65 73 73 20  | \{.    process |
0008d050  62 75 66 66 65 72 0a 20  20 7d 0a 20 20 63 61 6c  |buffer.  }.  cal|
0008d060  6c 20 4f 53 5f 47 42 50  42 20 31 30 0a 7d 0a 0a  |l OS_GBPB 10.}..|
0008d070  61 73 20 69 74 20 69 73  20 6c 65 67 61 6c 20 74  |as it is legal t|
0008d080  6f 20 72 65 74 75 72 6e  20 52 33 20 3d 20 30 20  |o return R3 = 0 |
0008d090  62 65 66 6f 72 65 20 74  68 65 20 65 6e 64 20 6f  |before the end o|
0008d0a0  66 20 74 68 65 20 64 69  72 65 63 74 6f 72 79 2e  |f the directory.|
0008d0b0  20 41 6c 73 6f 2c 20 64  6f 20 2a 6e 6f 74 2a 20  | Also, do *not* |
0008d0c0  61 73 73 75 6d 65 20 61  6e 79 74 68 69 6e 67 20  |assume anything |
0008d0d0  61 62 6f 75 74 20 74 68  65 20 76 61 6c 75 65 20  |about the value |
0008d0e0  69 6e 20 52 34 20 2d 20  46 69 6c 65 72 5f 41 63  |in R4 - Filer_Ac|
0008d0f0  74 69 6f 6e 20 61 73 73  75 6d 65 73 20 74 68 61  |tion assumes tha|
0008d100  74 20 69 6e 63 72 65 61  73 65 73 20 62 79 20 6f  |t increases by o|
0008d110  6e 65 20 66 6f 72 20 65  61 63 68 20 65 6e 74 72  |ne for each entr|
0008d120  79 20 72 65 61 64 20 61  6e 64 20 63 6f 6d 65 73  |y read and comes|
0008d130  20 68 6f 72 72 69 62 6c  79 20 75 6e 73 74 75 63  | horribly unstuc|
0008d140  6b 2e 0a 0a 4e 6f 74 65  3a 20 54 68 65 20 50 52  |k...Note: The PR|
0008d150  4d 20 6c 69 65 73 20 77  68 65 6e 20 69 74 20 73  |M lies when it s|
0008d160  61 79 73 20 74 68 61 74  20 69 66 20 52 36 20 70  |ays that if R6 p|
0008d170  6f 69 6e 74 73 20 74 6f  20 61 6e 20 65 6d 70 74  |oints to an empt|
0008d180  79 20 73 74 72 69 6e 67  20 22 2a 22 20 69 73 20  |y string "*" is |
0008d190  75 73 65 64 2e 0a 00 00  44 41 54 41 16 03 00 00  |used....DATA....|
0008d1a0  4f 53 5f 47 42 50 42 20  20 31 31 0a 23 50 61 72  |OS_GBPB  11.#Par|
0008d1b0  65 6e 74 20 4f 53 5f 47  42 50 42 0a 3d 3e 09 52  |ent OS_GBPB.=>.R|
0008d1c0  30 20 3d 09 31 31 0a 09  52 31 20 3d 09 70 6f 69  |0 =.11..R1 =.poi|
0008d1d0  6e 74 65 72 20 74 6f 20  64 69 72 65 63 74 6f 72  |nter to director|
0008d1e0  79 20 6e 61 6d 65 0a 09  52 32 20 3d 09 70 6f 69  |y name..R2 =.poi|
0008d1f0  6e 74 65 72 20 74 6f 20  3c 62 75 66 66 65 72 3d  |nter to <buffer=|
0008d200  3e 4f 53 5f 47 42 50 42  31 31 62 75 66 66 65 72  |>OS_GBPB11buffer|
0008d210  3e 0a 09 52 33 20 3d 09  6e 75 6d 62 65 72 20 6f  |>..R3 =.number o|
0008d220  66 20 6f 62 6a 65 63 74  73 20 74 6f 20 72 65 61  |f objects to rea|
0008d230  64 0a 09 52 34 20 3d 09  77 68 65 72 65 20 74 6f  |d..R4 =.where to|
0008d240  20 73 74 61 72 74 2c 20  30 20 66 6f 72 20 66 69  | start, 0 for fi|
0008d250  72 73 74 20 74 69 6d 65  0a 09 52 35 20 3d 09 6c  |rst time..R5 =.l|
0008d260  65 6e 67 74 68 20 6f 66  20 62 75 66 66 65 72 0a  |ength of buffer.|
0008d270  09 52 36 20 3d 09 77 69  6c 64 63 61 72 64 65 64  |.R6 =.wildcarded|
0008d280  20 6e 61 6d 65 20 74 6f  20 6d 61 74 63 68 20 28  | name to match (|
0008d290  69 66 20 30 20 22 2a 22  20 69 73 20 75 73 65 64  |if 0 "*" is used|
0008d2a0  29 0a 3c 3d 09 52 33 20  3d 09 6e 75 6d 62 65 72  |).<=.R3 =.number|
0008d2b0  20 6f 66 20 6f 62 6a 65  63 74 73 20 72 65 61 64  | of objects read|
0008d2c0  0a 09 52 34 20 3d 09 77  68 65 72 65 20 74 6f 20  |..R4 =.where to |
0008d2d0  63 6f 6e 74 69 6e 75 65  2c 20 6f 72 20 2d 31 20  |continue, or -1 |
0008d2e0  66 6f 72 20 6e 6f 20 6d  6f 72 65 0a 09 43 20 66  |for no more..C f|
0008d2f0  6c 61 67 20 69 73 20 63  6c 65 61 72 20 69 66 20  |lag is clear if |
0008d300  52 33 20 3d 20 30 2c 20  65 6c 73 65 20 69 74 20  |R3 = 0, else it |
0008d310  69 73 20 73 65 74 0a 0a  54 68 69 73 20 53 57 49  |is set..This SWI|
0008d320  20 72 65 61 64 73 20 65  6e 74 72 69 65 73 20 66  | reads entries f|
0008d330  72 6f 6d 20 74 68 65 20  73 70 65 63 69 66 69 65  |rom the specifie|
0008d340  64 20 64 69 72 65 63 74  6f 72 79 2e 20 54 68 65  |d directory. The|
0008d350  20 63 6f 72 72 65 63 74  20 63 6f 64 65 20 73 74  | correct code st|
0008d360  72 75 63 74 75 72 65 20  74 6f 20 63 61 6c 6c 20  |ructure to call |
0008d370  74 68 69 73 20 53 57 49  20 69 73 3a 0a 0a 63 61  |this SWI is:..ca|
0008d380  6c 6c 20 4f 53 5f 47 42  50 42 20 31 31 0a 77 68  |ll OS_GBPB 11.wh|
0008d390  69 6c 65 20 28 52 34 20  5c 3c 3e 20 2d 31 29 0a  |ile (R4 \<> -1).|
0008d3a0  5c 7b 0a 20 20 69 66 20  28 52 33 20 5c 3c 3e 20  |\{.  if (R3 \<> |
0008d3b0  30 29 0a 20 20 5c 7b 0a  20 20 20 20 70 72 6f 63  |0).  \{.    proc|
0008d3c0  65 73 73 20 62 75 66 66  65 72 0a 20 20 7d 0a 20  |ess buffer.  }. |
0008d3d0  20 63 61 6c 6c 20 4f 53  5f 47 42 50 42 20 31 31  | call OS_GBPB 11|
0008d3e0  0a 7d 0a 0a 61 73 20 69  74 20 69 73 20 6c 65 67  |.}..as it is leg|
0008d3f0  61 6c 20 74 6f 20 72 65  74 75 72 6e 20 52 33 20  |al to return R3 |
0008d400  3d 20 30 20 62 65 66 6f  72 65 20 74 68 65 20 65  |= 0 before the e|
0008d410  6e 64 20 6f 66 20 74 68  65 20 64 69 72 65 63 74  |nd of the direct|
0008d420  6f 72 79 2e 20 41 6c 73  6f 2c 20 64 6f 20 2a 6e  |ory. Also, do *n|
0008d430  6f 74 2a 20 61 73 73 75  6d 65 20 61 6e 79 74 68  |ot* assume anyth|
0008d440  69 6e 67 20 61 62 6f 75  74 20 74 68 65 20 76 61  |ing about the va|
0008d450  6c 75 65 20 69 6e 20 52  34 2e 0a 0a 4e 6f 74 65  |lue in R4...Note|
0008d460  3a 20 54 68 65 20 50 52  4d 20 6c 69 65 73 20 77  |: The PRM lies w|
0008d470  68 65 6e 20 69 74 20 73  61 79 73 20 74 68 61 74  |hen it says that|
0008d480  20 69 66 20 52 36 20 70  6f 69 6e 74 73 20 74 6f  | if R6 points to|
0008d490  20 61 6e 20 65 6d 70 74  79 20 73 74 72 69 6e 67  | an empty string|
0008d4a0  20 22 2a 22 20 69 73 20  75 73 65 64 2e 0a 00 00  | "*" is used....|
0008d4b0  44 41 54 41 1d 04 00 00  4f 53 5f 47 42 50 42 20  |DATA....OS_GBPB |
0008d4c0  31 32 0a 23 50 61 72 65  6e 74 20 4f 53 5f 47 42  |12.#Parent OS_GB|
0008d4d0  50 42 0a 3d 3e 09 52 30  20 3d 09 31 32 0a 09 52  |PB.=>.R0 =.12..R|
0008d4e0  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 64  |1 =.pointer to d|
0008d4f0  69 72 65 63 74 6f 72 79  20 6e 61 6d 65 0a 09 52  |irectory name..R|
0008d500  32 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |2 =.pointer to <|
0008d510  62 75 66 66 65 72 3d 3e  2e 62 75 66 66 65 72 3e  |buffer=>.buffer>|
0008d520  0a 09 52 33 20 3d 09 6e  75 6d 62 65 72 20 6f 66  |..R3 =.number of|
0008d530  20 6f 62 6a 65 63 74 73  20 74 6f 20 72 65 61 64  | objects to read|
0008d540  0a 09 52 34 20 3d 09 77  68 65 72 65 20 74 6f 20  |..R4 =.where to |
0008d550  73 74 61 72 74 2c 20 30  20 66 6f 72 20 66 69 72  |start, 0 for fir|
0008d560  73 74 20 74 69 6d 65 0a  09 52 35 20 3d 09 6c 65  |st time..R5 =.le|
0008d570  6e 67 74 68 20 6f 66 20  62 75 66 66 65 72 0a 09  |ngth of buffer..|
0008d580  52 36 20 3d 09 77 69 6c  64 63 61 72 64 65 64 20  |R6 =.wildcarded |
0008d590  6e 61 6d 65 20 74 6f 20  6d 61 74 63 68 20 28 69  |name to match (i|
0008d5a0  66 20 30 20 22 2a 22 20  69 73 20 75 73 65 64 29  |f 0 "*" is used)|
0008d5b0  0a 3c 3d 09 52 33 20 3d  09 6e 75 6d 62 65 72 20  |.<=.R3 =.number |
0008d5c0  6f 66 20 6f 62 6a 65 63  74 73 20 72 65 61 64 0a  |of objects read.|
0008d5d0  09 52 34 20 3d 09 77 68  65 72 65 20 74 6f 20 63  |.R4 =.where to c|
0008d5e0  6f 6e 74 69 6e 75 65 2c  20 6f 72 20 2d 31 20 66  |ontinue, or -1 f|
0008d5f0  6f 72 20 6e 6f 20 6d 6f  72 65 0a 09 43 20 66 6c  |or no more..C fl|
0008d600  61 67 20 69 73 20 63 6c  65 61 72 20 69 66 20 52  |ag is clear if R|
0008d610  33 20 3d 20 30 2c 20 65  6c 73 65 20 69 74 20 69  |3 = 0, else it i|
0008d620  73 20 73 65 74 0a 0a 54  68 69 73 20 53 57 49 20  |s set..This SWI |
0008d630  72 65 61 64 73 20 65 6e  74 72 69 65 73 20 66 72  |reads entries fr|
0008d640  6f 6d 20 74 68 65 20 73  70 65 63 69 66 69 65 64  |om the specified|
0008d650  20 64 69 72 65 63 74 6f  72 79 2e 20 54 68 65 20  | directory. The |
0008d660  63 6f 72 72 65 63 74 20  63 6f 64 65 20 73 74 72  |correct code str|
0008d670  75 63 74 75 72 65 20 74  6f 20 63 61 6c 6c 20 74  |ucture to call t|
0008d680  68 69 73 20 53 57 49 20  69 73 3a 0a 0a 63 61 6c  |his SWI is:..cal|
0008d690  6c 20 4f 53 5f 47 42 50  42 20 31 32 0a 77 68 69  |l OS_GBPB 12.whi|
0008d6a0  6c 65 20 28 52 34 20 5c  3c 3e 20 2d 31 29 0a 5c  |le (R4 \<> -1).\|
0008d6b0  7b 0a 20 20 69 66 20 28  52 33 20 5c 3c 3e 20 30  |{.  if (R3 \<> 0|
0008d6c0  29 0a 20 20 5c 7b 0a 20  20 20 20 70 72 6f 63 65  |).  \{.    proce|
0008d6d0  73 73 20 62 75 66 66 65  72 0a 20 20 7d 0a 20 20  |ss buffer.  }.  |
0008d6e0  63 61 6c 6c 20 4f 53 5f  47 42 50 42 20 31 32 0a  |call OS_GBPB 12.|
0008d6f0  7d 0a 0a 61 73 20 69 74  20 69 73 20 6c 65 67 61  |}..as it is lega|
0008d700  6c 20 74 6f 20 72 65 74  75 72 6e 20 52 33 20 3d  |l to return R3 =|
0008d710  20 30 20 62 65 66 6f 72  65 20 74 68 65 20 65 6e  | 0 before the en|
0008d720  64 20 6f 66 20 74 68 65  20 64 69 72 65 63 74 6f  |d of the directo|
0008d730  72 79 2e 20 41 6c 73 6f  2c 20 64 6f 20 2a 6e 6f  |ry. Also, do *no|
0008d740  74 2a 20 61 73 73 75 6d  65 20 61 6e 79 74 68 69  |t* assume anythi|
0008d750  6e 67 20 61 62 6f 75 74  20 74 68 65 20 76 61 6c  |ng about the val|
0008d760  75 65 20 69 6e 20 52 34  2e 0a 0a 4e 6f 74 65 3a  |ue in R4...Note:|
0008d770  20 54 68 65 20 50 52 4d  20 6c 69 65 73 20 77 68  | The PRM lies wh|
0008d780  65 6e 20 69 74 20 73 61  79 73 20 74 68 61 74 20  |en it says that |
0008d790  69 66 20 52 36 20 70 6f  69 6e 74 73 20 74 6f 20  |if R6 points to |
0008d7a0  61 6e 20 65 6d 70 74 79  20 73 74 72 69 6e 67 20  |an empty string |
0008d7b0  22 2a 22 20 69 73 20 75  73 65 64 2e 0a 23 73 75  |"*" is used..#su|
0008d7c0  62 70 61 67 65 20 62 75  66 66 65 72 0a 4f 53 5f  |bpage buffer.OS_|
0008d7d0  47 42 50 42 20 31 32 20  62 75 66 66 65 72 0a 4f  |GBPB 12 buffer.O|
0008d7e0  66 66 73 65 74 09 43 6f  6e 74 65 6e 74 73 0a 23  |ffset.Contents.#|
0008d7f0  6c 69 6e 65 0a 30 09 3c  4c 6f 61 64 20 61 64 64  |line.0.<Load add|
0008d800  72 65 73 73 3d 3e 66 73  79 73 5f 6c 6f 61 64 65  |ress=>fsys_loade|
0008d810  78 65 63 3e 0a 34 09 3c  45 78 65 63 20 61 64 64  |xec>.4.<Exec add|
0008d820  72 65 73 73 3d 3e 66 73  79 73 5f 6c 6f 61 64 65  |ress=>fsys_loade|
0008d830  78 65 63 3e 0a 38 09 4c  65 6e 67 74 68 0a 31 32  |xec>.8.Length.12|
0008d840  09 3c 41 74 74 72 69 62  75 74 65 73 3d 3e 66 73  |.<Attributes=>fs|
0008d850  79 73 5f 6f 62 6a 61 74  74 72 3e 0a 31 36 09 3c  |ys_objattr>.16.<|
0008d860  4f 62 6a 65 63 74 20 74  79 70 65 3d 3e 66 73 79  |Object type=>fsy|
0008d870  73 5f 6f 62 6a 74 79 70  65 3e 0a 32 30 09 3c 46  |s_objtype>.20.<F|
0008d880  69 6c 65 20 74 79 70 65  3d 3e 46 69 6c 65 74 79  |ile type=>Filety|
0008d890  70 65 73 3a 21 52 6f 6f  74 3e 0a 32 34 09 6e 61  |pes:!Root>.24.na|
0008d8a0  6d 65 20 28 30 2d 74 65  72 6d 69 6e 61 74 65 64  |me (0-terminated|
0008d8b0  29 0a 0a 45 6e 74 72 69  65 73 20 61 72 65 20 77  |)..Entries are w|
0008d8c0  6f 72 64 20 61 6c 69 67  6e 65 64 2e 0a 00 00 00  |ord aligned.....|
0008d8d0  44 41 54 41 5c 03 00 00  4f 53 5f 47 42 50 42 20  |DATA\...OS_GBPB |
0008d8e0  35 2c 20 36 20 61 6e 64  20 37 0a 23 50 61 72 65  |5, 6 and 7.#Pare|
0008d8f0  6e 74 20 4f 53 5f 47 42  50 42 0a 3d 3e 09 52 30  |nt OS_GBPB.=>.R0|
0008d900  20 3d 09 35 2c 20 36 20  6f 72 20 37 0a 09 52 32  | =.5, 6 or 7..R2|
0008d910  20 3d 09 62 75 66 66 65  72 0a 0a 3c 3d 09 52 30  | =.buffer..<=.R0|
0008d920  2c 20 52 32 20 70 72 65  73 65 72 76 65 64 0a 09  |, R2 preserved..|
0008d930  43 20 66 6c 61 67 20 63  6f 72 72 75 70 74 65 64  |C flag corrupted|
0008d940  0a 0a 54 68 65 73 65 20  63 61 6c 6c 73 20 72 65  |..These calls re|
0008d950  61 64 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 6f  |ad information o|
0008d960  6e 20 74 68 65 20 74 65  6d 70 6f 72 61 72 79 20  |n the temporary |
0008d970  66 69 6c 69 6e 67 20 73  79 73 74 65 6d 20 28 6e  |filing system (n|
0008d980  6f 72 6d 61 6c 6c 79 20  74 68 65 20 63 75 72 72  |ormally the curr|
0008d990  65 6e 74 29 20 74 6f 20  74 68 65 20 62 75 66 66  |ent) to the buff|
0008d9a0  65 72 20 70 6f 69 6e 74  65 64 20 74 6f 20 62 79  |er pointed to by|
0008d9b0  20 52 32 2e 0a 49 66 20  52 30 20 3d 20 35 20 3a  | R2..If R0 = 5 :|
0008d9c0  0a 23 49 6e 64 65 6e 74  20 32 0a 5c 3c 6e 61 6d  |.#Indent 2.\<nam|
0008d9d0  65 20 6c 65 6e 67 74 68  20 62 79 74 65 3e 5c 3c  |e length byte>\<|
0008d9e0  64 69 73 63 20 6e 61 6d  65 3e 5c 3c 62 6f 6f 74  |disc name>\<boot|
0008d9f0  20 6f 70 74 69 6f 6e 20  62 79 74 65 3e 0a 6f 66  | option byte>.of|
0008da00  20 64 69 73 63 20 63 6f  6e 74 61 69 6e 69 6e 67  | disc containing|
0008da10  20 74 68 65 20 63 75 72  72 65 6e 74 20 64 69 72  | the current dir|
0008da20  65 63 74 6f 72 79 0a 23  49 6e 64 65 6e 74 0a 0a  |ectory.#Indent..|
0008da30  49 66 20 52 30 20 3d 20  36 20 3a 0a 23 49 6e 64  |If R0 = 6 :.#Ind|
0008da40  65 6e 74 20 32 0a 5c 3c  30 3e 5c 3c 6e 61 6d 65  |ent 2.\<0>\<name|
0008da50  20 6c 65 6e 67 74 68 20  62 79 74 65 3e 5c 3c 63  | length byte>\<c|
0008da60  75 72 72 65 6e 74 20 64  69 72 65 63 74 6f 72 79  |urrent directory|
0008da70  20 6e 61 6d 65 3e 5c 3c  70 72 69 76 69 6c 69 67  | name>\<privilig|
0008da80  65 64 20 62 79 74 65 3e  0a 6f 66 20 74 68 65 20  |ed byte>.of the |
0008da90  63 75 72 72 65 6e 74 6c  79 20 73 65 6c 65 63 74  |currently select|
0008daa0  65 64 20 64 69 72 65 63  74 6f 72 79 2e 20 54 68  |ed directory. Th|
0008dab0  65 20 70 72 69 76 69 6c  69 67 65 64 20 62 79 74  |e priviliged byt|
0008dac0  65 20 69 73 20 65 69 74  68 65 72 20 26 30 30 20  |e is either &00 |
0008dad0  69 65 20 61 6c 6c 6f 77  61 6e 63 65 20 74 6f 20  |ie allowance to |
0008dae0  63 72 65 61 74 65 20 6f  72 20 64 65 6c 65 74 65  |create or delete|
0008daf0  20 6f 62 6a 65 63 74 73  20 69 6e 20 74 68 65 20  | objects in the |
0008db00  64 69 72 65 63 74 6f 72  79 20 26 46 46 20 69 65  |directory &FF ie|
0008db10  20 70 72 6f 68 69 62 69  74 69 6f 6e 20 6f 66 20  | prohibition of |
0008db20  63 72 65 61 74 69 6e 67  20 6f 72 20 64 65 6c 65  |creating or dele|
0008db30  74 69 6e 67 20 6f 62 6a  65 63 74 73 3b 20 69 6e  |ting objects; in|
0008db40  20 41 44 46 53 20 6f 72  20 6f 74 68 65 72 20 46  | ADFS or other F|
0008db50  69 6c 65 43 6f 72 65 20  62 61 73 65 64 20 73 79  |ileCore based sy|
0008db60  73 74 65 6d 73 2c 20 79  6f 75 20 61 6c 77 61 79  |stems, you alway|
0008db70  73 20 67 6f 74 20 26 30  30 0a 23 49 6e 64 65 6e  |s got &00.#Inden|
0008db80  74 0a 49 66 20 52 30 20  3d 20 37 20 3a 0a 23 49  |t.If R0 = 7 :.#I|
0008db90  6e 64 65 6e 74 20 32 0a  5c 3c 30 3e 5c 3c 6e 61  |ndent 2.\<0>\<na|
0008dba0  6d 65 20 6c 65 6e 67 74  68 20 62 79 74 65 3e 5c  |me length byte>\|
0008dbb0  3c 6c 69 62 72 61 72 79  20 64 69 72 65 63 74 6f  |<library directo|
0008dbc0  72 79 20 6e 61 6d 65 3e  5c 3c 70 72 69 76 69 6c  |ry name>\<privil|
0008dbd0  69 67 65 64 20 62 79 74  65 3e 0a 6f 66 20 74 68  |iged byte>.of th|
0008dbe0  65 20 6c 69 62 72 61 72  79 20 64 69 72 65 63 74  |e library direct|
0008dbf0  6f 72 79 0a 23 49 6e 64  65 6e 74 0a 0a 54 68 65  |ory.#Indent..The|
0008dc00  20 6e 61 6d 65 73 20 61  72 65 20 73 74 6f 72 65  | names are store|
0008dc10  64 20 77 69 74 68 6f 75  74 20 74 65 72 6d 69 6e  |d without termin|
0008dc20  61 74 69 6f 6e 20 62 79  74 65 2e 0a 44 41 54 41  |ation byte..DATA|
0008dc30  1e 04 00 00 4f 53 5f 47  42 50 42 20 38 0a 23 50  |....OS_GBPB 8.#P|
0008dc40  61 72 65 6e 74 20 4f 53  5f 47 42 50 42 0a 3d 3e  |arent OS_GBPB.=>|
0008dc50  09 52 30 20 3d 09 38 0a  09 52 32 20 3d 09 62 75  |.R0 =.8..R2 =.bu|
0008dc60  66 66 65 72 20 61 64 64  72 65 73 73 0a 09 52 33  |ffer address..R3|
0008dc70  20 3d 09 6e 75 6d 62 65  72 20 6f 66 20 6f 62 6a  | =.number of obj|
0008dc80  65 63 74 20 6e 61 6d 65  73 20 74 6f 20 72 65 61  |ect names to rea|
0008dc90  64 20 66 72 6f 6d 20 64  69 72 65 63 74 6f 72 79  |d from directory|
0008dca0  0a 09 52 34 20 3d 09 6f  66 66 73 65 74 20 6f 66  |..R4 =.offset of|
0008dcb0  20 66 69 72 73 74 20 69  74 65 6d 20 74 6f 20 62  | first item to b|
0008dcc0  65 20 72 65 61 64 20 69  6e 20 64 69 72 65 63 74  |e read in direct|
0008dcd0  6f 72 79 2c 20 6f 72 20  30 20 74 6f 20 73 74 61  |ory, or 0 to sta|
0008dce0  72 74 0a 0a 3c 3d 09 52  30 2c 20 52 32 20 70 72  |rt..<=.R0, R2 pr|
0008dcf0  65 73 65 72 76 65 64 0a  09 52 33 20 3d 09 6e 75  |eserved..R3 =.nu|
0008dd00  6d 62 65 72 20 6f 66 20  6f 62 6a 65 63 74 73 20  |mber of objects |
0008dd10  61 73 6b 65 64 20 66 6f  72 20 62 75 74 20 6e 6f  |asked for but no|
0008dd20  74 20 72 65 61 64 0a 09  52 34 20 3d 09 6e 65 78  |t read..R4 =.nex|
0008dd30  74 20 6f 66 66 73 65 74  20 69 6e 74 6f 20 64 69  |t offset into di|
0008dd40  72 65 63 74 6f 72 79 0a  09 43 20 46 6c 61 67 20  |rectory..C Flag |
0008dd50  63 6c 65 61 72 20 69 66  20 52 33 20 3d 20 30 2c  |clear if R3 = 0,|
0008dd60  20 65 6c 73 65 20 73 65  74 0a 0a 54 68 69 73 20  | else set..This |
0008dd70  63 61 6c 6c 20 72 65 61  64 73 20 65 6e 74 72 69  |call reads entri|
0008dd80  65 73 20 66 72 6f 6d 20  74 68 65 20 63 75 72 72  |es from the curr|
0008dd90  65 6e 74 20 64 69 72 65  63 74 6f 72 79 20 6f 6e  |ent directory on|
0008dda0  20 74 68 65 20 74 65 6d  70 6f 72 61 72 79 20 66  | the temporary f|
0008ddb0  69 6c 69 6e 67 20 73 79  73 74 65 6d 2e 20 59 6f  |iling system. Yo|
0008ddc0  75 20 63 61 6e 20 61 6c  73 6f 20 64 6f 20 69 74  |u can also do it|
0008ddd0  20 75 73 69 6e 67 20 3c  4f 53 5f 47 42 50 42 20  | using <OS_GBPB |
0008dde0  39 3d 3e 4f 53 5f 47 42  50 42 39 3e 2e 20 46 69  |9=>OS_GBPB9>. Fi|
0008ddf0  6c 65 20 6e 61 6d 65 73  20 61 72 65 20 72 65 74  |le names are ret|
0008de00  75 72 6e 65 64 20 69 6e  20 74 68 65 20 61 72 65  |urned in the are|
0008de10  61 20 6f 66 20 6d 65 6d  6f 72 79 20 73 70 65 63  |a of memory spec|
0008de20  69 66 69 65 64 20 69 6e  20 52 32 2e 20 54 68 65  |ified in R2. The|
0008de30  20 66 6f 72 6d 61 74 20  6f 66 20 74 68 65 20 72  | format of the r|
0008de40  65 74 75 72 6e 65 64 20  64 61 74 61 20 69 73 3a  |eturned data is:|
0008de50  0a 23 49 6e 64 65 6e 74  20 32 3b 54 61 62 0a 6c  |.#Indent 2;Tab.l|
0008de60  65 6e 67 74 68 20 6f 66  20 66 69 72 73 74 20 6f  |ength of first o|
0008de70  62 6a 65 63 74 20 6e 61  6d 65 09 28 6f 6e 65 20  |bject name.(one |
0008de80  62 79 74 65 29 0a 66 69  72 73 74 20 6f 62 6a 65  |byte).first obje|
0008de90  63 74 20 6e 61 6d 65 20  69 6e 20 41 53 43 49 49  |ct name in ASCII|
0008dea0  09 28 61 73 20 73 70 65  63 69 66 69 65 64 29 0a  |.(as specified).|
0008deb0  2e 2e 2e 20 72 65 70 65  61 74 65 64 20 61 73 20  |... repeated as |
0008dec0  73 70 65 63 69 66 69 65  64 20 69 6e 20 52 33 0a  |specified in R3.|
0008ded0  23 49 6e 64 65 6e 74 0a  0a 4f 6e 20 65 78 69 74  |#Indent..On exit|
0008dee0  20 52 34 20 63 6f 6e 74  61 69 6e 73 20 74 68 65  | R4 contains the|
0008def0  20 76 61 6c 75 65 20 77  68 69 63 68 20 73 68 6f  | value which sho|
0008df00  75 6c 64 20 62 65 20 75  73 65 64 20 6f 6e 20 74  |uld be used on t|
0008df10  68 65 20 6e 65 78 74 20  63 61 6c 6c 2e 20 54 68  |he next call. Th|
0008df20  65 72 65 20 69 73 20 6e  6f 20 67 75 61 72 61 6e  |ere is no guaran|
0008df30  74 65 65 20 74 68 61 74  20 74 68 65 20 6e 75 6d  |tee that the num|
0008df40  62 65 72 20 6f 66 20 6f  62 6a 65 63 74 73 20 79  |ber of objects y|
0008df50  6f 75 20 61 73 6b 65 64  20 66 6f 72 20 77 69 6c  |ou asked for wil|
0008df60  6c 20 62 65 20 72 65 61  64 2e 20 54 68 69 73 20  |l be read. This |
0008df70  69 73 20 62 65 63 61 75  73 65 20 6f 66 20 74 68  |is because of th|
0008df80  65 20 65 78 74 65 72 6e  61 6c 20 63 6f 6e 73 74  |e external const|
0008df90  72 61 69 6e 74 73 20 73  6f 6d 65 20 66 69 6c 69  |raints some fili|
0008dfa0  6e 67 20 73 79 73 74 65  6d 73 20 6d 61 79 20 69  |ng systems may i|
0008dfb0  6d 70 6f 73 65 2e 20 54  6f 20 65 6e 73 75 72 65  |mpose. To ensure|
0008dfc0  20 72 65 61 64 69 6e 67  20 61 6c 6c 20 74 68 65  | reading all the|
0008dfd0  20 65 6e 74 72 69 65 73  20 79 6f 75 20 77 61 6e  | entries you wan|
0008dfe0  74 20 74 6f 2c 20 74 68  69 73 20 63 61 6c 6c 20  |t to, this call |
0008dff0  73 68 6f 75 6c 64 20 62  65 20 72 65 70 65 61 74  |should be repeat|
0008e000  65 64 20 75 6e 74 69 6c  20 52 34 20 3d 20 2d 31  |ed until R4 = -1|
0008e010  2e 0a 0a 54 68 69 73 20  63 61 6c 6c 20 69 73 20  |...This call is |
0008e020  6f 6e 6c 79 20 70 72 6f  76 69 64 65 64 20 66 6f  |only provided fo|
0008e030  72 20 62 61 63 6b 77 61  72 64 20 63 6f 6d 70 61  |r backward compa|
0008e040  74 69 62 69 6c 69 74 79  2e 0a 00 00 44 41 54 41  |tibility....DATA|
0008e050  fa 00 00 00 4f 53 5f 47  42 50 42 20 31 30 20 62  |....OS_GBPB 10 b|
0008e060  75 66 66 65 72 0a 23 50  61 72 65 6e 74 20 4f 53  |uffer.#Parent OS|
0008e070  5f 47 42 50 42 31 30 0a  4f 66 66 73 65 74 09 43  |_GBPB10.Offset.C|
0008e080  6f 6e 74 65 6e 74 73 0a  23 6c 69 6e 65 0a 30 09  |ontents.#line.0.|
0008e090  3c 4c 6f 61 64 20 61 64  64 72 65 73 73 3d 3e 66  |<Load address=>f|
0008e0a0  73 79 73 5f 6c 6f 61 64  65 78 65 63 3e 0a 34 09  |sys_loadexec>.4.|
0008e0b0  3c 45 78 65 63 20 61 64  64 72 65 73 73 3d 3e 66  |<Exec address=>f|
0008e0c0  73 79 73 5f 6c 6f 61 64  65 78 65 63 3e 0a 38 09  |sys_loadexec>.8.|
0008e0d0  4c 65 6e 67 74 68 0a 31  32 09 3c 41 74 74 72 69  |Length.12.<Attri|
0008e0e0  62 75 74 65 73 3d 3e 66  73 79 73 5f 6f 62 6a 61  |butes=>fsys_obja|
0008e0f0  74 74 72 3e 0a 31 36 09  3c 4f 62 6a 65 63 74 20  |ttr>.16.<Object |
0008e100  74 79 70 65 3d 3e 66 73  79 73 5f 6f 62 6a 74 79  |type=>fsys_objty|
0008e110  70 65 3e 0a 32 30 09 6e  61 6d 65 20 28 30 2d 74  |pe>.20.name (0-t|
0008e120  65 72 6d 69 6e 61 74 65  64 29 0a 0a 45 6e 74 72  |erminated)..Entr|
0008e130  69 65 73 20 61 72 65 20  77 6f 72 64 20 61 6c 69  |ies are word ali|
0008e140  67 6e 65 64 2e 0a 00 00  44 41 54 41 2b 01 00 00  |gned....DATA+...|
0008e150  4f 53 5f 47 42 50 42 20  31 31 20 62 75 66 66 65  |OS_GBPB 11 buffe|
0008e160  72 0a 23 50 61 72 65 6e  74 20 4f 53 5f 47 42 50  |r.#Parent OS_GBP|
0008e170  42 31 31 0a 4f 66 66 73  65 74 09 43 6f 6e 74 65  |B11.Offset.Conte|
0008e180  6e 74 73 0a 23 6c 69 6e  65 0a 30 09 3c 4c 6f 61  |nts.#line.0.<Loa|
0008e190  64 20 61 64 64 72 65 73  73 3d 3e 66 73 79 73 5f  |d address=>fsys_|
0008e1a0  6c 6f 61 64 65 78 65 63  3e 0a 34 09 3c 45 78 65  |loadexec>.4.<Exe|
0008e1b0  63 20 61 64 64 72 65 73  73 3d 3e 66 73 79 73 5f  |c address=>fsys_|
0008e1c0  6c 6f 61 64 65 78 65 63  3e 0a 38 09 4c 65 6e 67  |loadexec>.8.Leng|
0008e1d0  74 68 0a 31 32 09 3c 41  74 74 72 69 62 75 74 65  |th.12.<Attribute|
0008e1e0  73 3d 3e 66 73 79 73 5f  6f 62 6a 61 74 74 72 3e  |s=>fsys_objattr>|
0008e1f0  0a 31 36 09 3c 4f 62 6a  65 63 74 20 74 79 70 65  |.16.<Object type|
0008e200  3d 3e 66 73 79 73 5f 6f  62 6a 74 79 70 65 3e 0a  |=>fsys_objtype>.|
0008e210  32 30 09 49 6e 74 65 72  6e 61 6c 20 6e 61 6d 65  |20.Internal name|
0008e220  0a 32 34 09 54 69 6d 65  2f 44 61 74 65 20 28 30  |.24.Time/Date (0|
0008e230  20 69 66 20 6e 6f 74 20  73 74 61 6d 70 65 64 29  | if not stamped)|
0008e240  0a 32 39 09 6e 61 6d 65  20 28 30 2d 74 65 72 6d  |.29.name (0-term|
0008e250  69 6e 61 74 65 64 29 0a  0a 45 6e 74 72 69 65 73  |inated)..Entries|
0008e260  20 61 72 65 20 77 6f 72  64 20 61 6c 69 67 6e 65  | are word aligne|
0008e270  64 2e 0a 00 44 49 52 24  98 00 00 00 98 00 00 00  |d...DIR$........|
0008e280  0c e3 08 00 47 ff ff ff  e6 ef ac cd a5 00 00 00  |....G...........|
0008e290  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
0008e2a0  b4 e3 08 00 48 fd ff ff  77 69 49 22 f8 0b 00 00  |....H...wiI"....|
0008e2b0  13 00 00 00 00 00 00 00  49 6e 64 65 78 00 00 00  |........Index...|
0008e2c0  ac ef 08 00 48 fd ff ff  de bd 5a 1a 50 01 00 00  |....H.....Z.P...|
0008e2d0  13 00 00 00 00 00 00 00  4d 6f 64 69 66 69 65 72  |........Modifier|
0008e2e0  73 00 00 00 fc f0 08 00  48 fd ff ff 98 b8 5a 1a  |s.......H.....Z.|
0008e2f0  5c 01 00 00 13 00 00 00  00 00 00 00 42 6c 6f 63  |\...........Bloc|
0008e300  6b 4d 6f 64 69 66 69 65  72 73 00 00 44 41 54 41  |kModifiers..DATA|
0008e310  a5 00 00 00 4f 53 5f 50  6c 6f 74 20 20 28 26 34  |....OS_Plot  (&4|
0008e320  35 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 0a 3d  |5).#Parent OS_.=|
0008e330  3e 09 52 30 20 3d 09 3c  70 6c 6f 74 20 63 6f 6d  |>.R0 =.<plot com|
0008e340  6d 61 6e 64 20 63 6f 64  65 3d 3e 4f 53 5f 50 6c  |mand code=>OS_Pl|
0008e350  6f 74 49 6e 64 65 78 3e  0a 09 52 31 20 3d 09 78  |otIndex>..R1 =.x|
0008e360  20 63 6f 6f 72 64 0a 09  52 32 20 3d 09 79 20 63  | coord..R2 =.y c|
0008e370  6f 6f 72 64 0a 0a 3c 3d  09 52 30 2c 52 31 2c 52  |oord..<=.R0,R1,R|
0008e380  32 20 61 72 65 20 63 6f  72 72 75 70 74 65 64 0a  |2 are corrupted.|
0008e390  0a 54 68 69 73 20 53 57  49 20 64 6f 65 73 20 61  |.This SWI does a|
0008e3a0  20 64 69 72 65 63 74 20  56 44 55 20 63 61 6c 6c  | direct VDU call|
0008e3b0  2e 00 00 00 44 41 54 41  f8 0b 00 00 50 6c 6f 74  |....DATA....Plot|
0008e3c0  20 63 6f 6d 6d 61 6e 64  73 0a 23 50 61 72 65 6e  | commands.#Paren|
0008e3d0  74 20 4f 53 5f 50 6c 6f  74 0a 23 41 6c 69 67 6e  |t OS_Plot.#Align|
0008e3e0  20 43 65 6e 74 72 65 0a  23 66 31 3a 50 6c 6f 74  | Centre.#f1:Plot|
0008e3f0  20 43 6f 6d 6d 61 6e 64  73 20 3a 0a 0a 23 41 6c  | Commands :..#Al|
0008e400  69 67 6e 0a 23 54 41 42  20 41 6c 69 67 6e 20 52  |ign.#TAB Align R|
0008e410  69 67 68 74 2c 20 41 6c  69 67 6e 20 4c 65 66 74  |ight, Align Left|
0008e420  2c 20 41 6c 69 67 6e 20  52 69 67 68 74 2c 20 41  |, Align Right, A|
0008e430  6c 69 67 6e 20 4c 65 66  74 0a 30 09 53 6f 6c 69  |lign Left.0.Soli|
0008e440  64 20 3c 6c 69 6e 65 3d  3e 2e 6c 69 6e 65 3e 20  |d <line=>.line> |
0008e450  69 6e 63 6c 20 65 6e 64  20 70 74 73 09 38 09 65  |incl end pts.8.e|
0008e460  78 63 6c 20 65 6e 64 20  70 74 0a 31 36 09 44 6f  |xcl end pt.16.Do|
0008e470  74 74 65 64 20 3c 6c 69  6e 65 3d 3e 2e 6c 69 6e  |tted <line=>.lin|
0008e480  65 3e 20 69 6e 63 6c 20  65 6e 64 20 70 74 73 09  |e> incl end pts.|
0008e490  32 34 09 65 78 63 6c 20  65 6e 64 20 70 74 0a 33  |24.excl end pt.3|
0008e4a0  32 09 53 6f 6c 69 64 20  3c 6c 69 6e 65 3d 3e 2e  |2.Solid <line=>.|
0008e4b0  6c 69 6e 65 3e 20 65 78  63 6c 20 66 69 72 73 74  |line> excl first|
0008e4c0  20 70 74 09 34 30 09 65  78 63 6c 20 62 6f 74 68  | pt.40.excl both|
0008e4d0  20 65 6e 64 20 70 74 73  0a 34 38 09 44 6f 74 74  | end pts.48.Dott|
0008e4e0  65 64 20 3c 6c 69 6e 65  3d 3e 2e 6c 69 6e 65 3e  |ed <line=>.line>|
0008e4f0  20 65 78 63 6c 20 66 69  72 73 74 20 70 74 2c 09  | excl first pt,.|
0008e500  35 36 09 65 78 63 6c 20  62 6f 74 68 20 65 6e 64  |56.excl both end|
0008e510  20 70 74 73 0a 09 70 61  74 74 65 72 6e 20 63 6f  | pts..pattern co|
0008e520  6e 74 69 6e 75 65 64 0a  09 20 09 09 09 09 09 20  |ntinued.. ..... |
0008e530  09 48 6f 72 69 7a 6f 6e  74 61 6c 20 6c 69 6e 65  |.Horizontal line|
0008e540  66 69 6c 6c 3a 0a 36 34  09 50 6f 69 6e 74 20 70  |fill:.64.Point p|
0008e550  6c 6f 74 09 09 09 09 37  32 09 20 20 28 6c 65 66  |lot....72.  (lef|
0008e560  74 26 72 69 67 68 74 29  20 74 6f 20 6e 6f 6e 20  |t&right) to non |
0008e570  62 61 63 6b 67 72 0a 38  30 09 3c 54 72 69 61 6e  |backgr.80.<Trian|
0008e580  67 6c 65 3d 3e 2e 74 72  69 61 6e 67 6c 65 3e 20  |gle=>.triangle> |
0008e590  66 69 6c 6c 09 09 38 38  09 20 20 28 74 6f 20 72  |fill..88.  (to r|
0008e5a0  69 67 68 74 29 20 74 6f  20 62 61 63 6b 67 72 0a  |ight) to backgr.|
0008e5b0  39 36 09 3c 52 65 63 74  61 6e 67 6c 65 3d 3e 2e  |96.<Rectangle=>.|
0008e5c0  72 65 63 74 61 6e 67 6c  65 3e 20 66 69 6c 6c 09  |rectangle> fill.|
0008e5d0  09 31 30 34 09 20 20 28  6c 65 66 74 26 72 69 67  |.104.  (left&rig|
0008e5e0  68 74 29 20 74 6f 20 66  6f 72 65 67 72 0a 31 31  |ht) to foregr.11|
0008e5f0  32 09 3c 50 61 72 61 6c  6c 65 6c 6f 67 72 61 6d  |2.<Parallelogram|
0008e600  3d 3e 2e 70 61 72 61 6c  6c 65 6c 6f 67 72 61 6d  |=>.parallelogram|
0008e610  3e 20 66 69 6c 6c 09 31  32 30 09 20 20 28 74 6f  |> fill.120.  (to|
0008e620  20 72 69 67 68 74 29 20  74 6f 20 6e 6f 6e 20 66  | right) to non f|
0008e630  6f 72 65 67 72 0a 31 32  38 09 46 6c 6f 6f 64 20  |oregr.128.Flood |
0008e640  74 6f 20 6e 6f 6e 2d 62  61 63 6b 67 72 6f 75 6e  |to non-backgroun|
0008e650  64 09 09 09 31 33 36 09  46 6c 6f 6f 64 20 74 6f  |d...136.Flood to|
0008e660  20 66 6f 72 65 67 72 6f  75 6e 64 0a 31 34 34 09  | foreground.144.|
0008e670  3c 43 69 72 63 6c 65 3d  3e 2e 63 69 72 63 6c 65  |<Circle=>.circle|
0008e680  3e 20 6f 75 74 6c 69 6e  65 09 09 31 35 32 09 3c  |> outline..152.<|
0008e690  43 69 72 63 6c 65 3d 3e  2e 43 69 72 63 6c 65 3e  |Circle=>.Circle>|
0008e6a0  20 66 69 6c 6c 0a 31 36  30 09 43 69 72 63 75 6c  | fill.160.Circul|
0008e6b0  61 72 20 3c 61 72 63 3d  3e 2e 61 72 63 2f 73 65  |ar <arc=>.arc/se|
0008e6c0  67 6d 65 6e 74 2f 73 65  63 74 6f 72 3e 09 31 36  |gment/sector>.16|
0008e6d0  38 09 3c 53 65 67 6d 65  6e 74 3d 3e 2e 61 72 63  |8.<Segment=>.arc|
0008e6e0  2f 73 65 67 6d 65 6e 74  2f 73 65 63 74 6f 72 3e  |/segment/sector>|
0008e6f0  0a 31 37 36 09 3c 53 65  63 74 6f 72 3d 3e 2e 61  |.176.<Sector=>.a|
0008e700  72 63 2f 73 65 67 6d 65  6e 74 2f 73 65 63 74 6f  |rc/segment/secto|
0008e710  72 3e 09 09 31 38 34 09  3c 42 6c 6f 63 6b 20 63  |r>..184.<Block c|
0008e720  6f 70 79 2f 6d 6f 76 65  3d 3e 2e 63 6f 70 79 2f  |opy/move=>.copy/|
0008e730  6d 6f 76 65 3e 0a 31 39  32 09 3c 45 6c 6c 69 70  |move>.192.<Ellip|
0008e740  73 65 3d 3e 2e 65 6c 6c  69 70 73 65 3e 20 6f 75  |se=>.ellipse> ou|
0008e750  74 6c 69 6e 65 09 09 32  30 30 09 3c 45 6c 6c 69  |tline..200.<Elli|
0008e760  70 73 65 3d 3e 2e 65 6c  6c 69 70 73 65 3e 20 66  |pse=>.ellipse> f|
0008e770  69 6c 6c 0a 32 30 38 09  46 6f 6e 74 20 70 72 69  |ill.208.Font pri|
0008e780  6e 74 69 6e 67 20 28 64  6f 6e 27 74 20 75 73 65  |nting (don't use|
0008e790  29 09 09 32 33 32 09 53  70 72 69 74 65 20 50 6c  |)..232.Sprite Pl|
0008e7a0  6f 74 0a 0a 54 68 65 20  62 61 73 65 20 63 6f 6d  |ot..The base com|
0008e7b0  6d 61 6e 64 73 20 61 72  65 20 73 70 65 63 69 66  |mands are specif|
0008e7c0  69 65 64 20 69 6e 20 74  68 65 20 74 6f 70 20 35  |ied in the top 5|
0008e7d0  20 62 69 74 73 2c 20 6d  6f 64 69 66 69 65 64 20  | bits, modified |
0008e7e0  62 79 20 74 68 65 20 3c  76 61 6c 75 65 20 69 6e  |by the <value in|
0008e7f0  20 74 68 65 20 62 6f 74  74 6f 6d 20 33 20 62 69  | the bottom 3 bi|
0008e800  74 73 20 3d 3e 4f 53 5f  50 6c 6f 74 4d 6f 64 69  |ts =>OS_PlotModi|
0008e810  66 69 65 72 73 3e 2e 20  42 6c 6f 63 6b 20 63 6f  |fiers>. Block co|
0008e820  70 79 2f 6d 6f 76 65 20  75 73 65 73 20 61 20 3c  |py/move uses a <|
0008e830  73 70 65 63 69 61 6c 20  73 65 74 20 6f 66 20 6d  |special set of m|
0008e840  6f 64 69 66 69 65 72 73  20 3d 3e 4f 53 5f 50 6c  |odifiers =>OS_Pl|
0008e850  6f 74 42 6c 6f 63 6b 4d  6f 64 69 66 69 65 72 73  |otBlockModifiers|
0008e860  3e 2e 0a 0a 53 6f 6d 65  20 73 68 61 70 65 73 20  |>...Some shapes |
0008e870  6e 65 65 64 20 74 6f 20  62 65 20 64 65 66 69 6e  |need to be defin|
0008e880  65 64 20 62 79 20 61 20  73 65 71 75 65 6e 63 65  |ed by a sequence|
0008e890  20 6f 66 20 70 6f 69 6e  74 73 2e 20 54 68 65 20  | of points. The |
0008e8a0  56 44 55 20 64 72 69 76  65 72 73 20 75 73 65 20  |VDU drivers use |
0008e8b0  74 68 65 20 70 72 65 76  69 6f 75 73 20 70 6f 73  |the previous pos|
0008e8c0  69 74 69 6f 6e 73 20 6f  66 20 74 68 65 20 67 72  |itions of the gr|
0008e8d0  61 70 68 69 63 73 20 63  75 72 73 6f 72 20 74 6f  |aphics cursor to|
0008e8e0  20 64 65 66 69 6e 65 20  74 68 65 73 65 2e 20 54  | define these. T|
0008e8f0  68 65 73 65 20 63 61 6e  20 62 65 20 73 70 65 63  |hese can be spec|
0008e900  69 66 69 65 64 20 62 79  20 61 20 73 65 71 75 65  |ified by a seque|
0008e910  6e 63 65 20 6f 66 20 61  62 73 6f 6c 75 74 65 20  |nce of absolute |
0008e920  6f 72 20 72 65 6c 61 74  69 76 65 20 6d 6f 76 65  |or relative move|
0008e930  73 20 28 63 6f 6d 6d 61  6e 64 73 20 36 34 20 6f  |s (commands 64 o|
0008e940  72 20 36 38 29 20 2d 20  74 68 65 20 70 6f 69 6e  |r 68) - the poin|
0008e950  74 73 20 74 6f 20 76 69  73 69 74 20 74 6f 20 64  |ts to visit to d|
0008e960  65 66 69 6e 65 20 61 20  70 61 72 74 69 63 75 6c  |efine a particul|
0008e970  61 72 20 73 68 61 70 65  20 69 73 20 67 69 76 65  |ar shape is give|
0008e980  6e 20 61 73 20 61 20 6c  69 6e 6b 20 69 6e 20 74  |n as a link in t|
0008e990  68 65 20 74 61 62 6c 65  20 61 62 6f 76 65 2e 0a  |he table above..|
0008e9a0  0a 55 6e 6b 6e 6f 77 6e  20 70 6c 6f 74 20 63 6f  |.Unknown plot co|
0008e9b0  64 65 73 20 28 32 31 36  2d 32 33 31 2c 32 34 30  |des (216-231,240|
0008e9c0  2d 32 35 35 29 20 61 72  65 20 73 65 6e 74 20 74  |-255) are sent t|
0008e9d0  6f 20 74 68 65 20 3c 75  6e 6b 6e 6f 77 6e 20 70  |o the <unknown p|
0008e9e0  6c 6f 74 20 76 65 63 74  6f 72 3d 3e 76 65 63 74  |lot vector=>vect|
0008e9f0  6f 72 5f 75 6b 70 6c 6f  74 76 3e 2c 20 77 68 69  |or_ukplotv>, whi|
0008ea00  63 68 20 62 79 20 64 65  66 61 75 6c 74 20 64 6f  |ch by default do|
0008ea10  65 73 20 6e 6f 74 68 69  6e 67 2e 0a 0a 54 68 65  |es nothing...The|
0008ea20  20 64 61 73 68 20 70 61  74 74 65 72 6e 20 69 73  | dash pattern is|
0008ea30  20 73 65 74 20 77 69 74  68 20 3c 56 44 55 20 32  | set with <VDU 2|
0008ea40  33 2c 36 3d 3e 56 44 55  3a 32 33 2c 36 3e 20 61  |3,6=>VDU:23,6> a|
0008ea50  6e 64 20 63 61 6e 20 62  65 20 72 65 61 64 20 77  |nd can be read w|
0008ea60  69 74 68 20 3c 4f 53 5f  57 6f 72 64 20 31 30 2c  |ith <OS_Word 10,|
0008ea70  36 3d 3e 4f 53 5f 57 6f  72 64 31 30 3e 2e 20 49  |6=>OS_Word10>. I|
0008ea80  74 73 20 6c 65 6e 67 74  68 20 69 73 20 73 65 74  |ts length is set|
0008ea90  20 61 6e 64 20 72 65 61  64 20 77 69 74 68 20 3c  | and read with <|
0008eaa0  4f 53 5f 42 79 74 65 20  31 36 33 3d 3e 4f 53 5f  |OS_Byte 163=>OS_|
0008eab0  42 79 74 65 31 36 33 3e  2e 0a 23 53 75 62 50 61  |Byte163>..#SubPa|
0008eac0  67 65 20 6c 69 6e 65 0a  4c 69 6e 65 20 4d 6f 76  |ge line.Line Mov|
0008ead0  65 73 0a 54 6f 20 70 6c  6f 74 20 61 20 6c 69 6e  |es.To plot a lin|
0008eae0  65 2c 20 6d 6f 76 65 20  74 6f 20 6f 6e 65 20 65  |e, move to one e|
0008eaf0  6e 64 70 6f 69 6e 74 2c  20 74 68 65 6e 20 70 6c  |ndpoint, then pl|
0008eb00  6f 74 20 6c 69 6e 65 20  74 6f 20 6f 74 68 65 72  |ot line to other|
0008eb10  20 65 6e 64 70 6f 69 6e  74 0a 23 53 75 62 50 61  | endpoint.#SubPa|
0008eb20  67 65 20 74 72 69 61 6e  67 6c 65 0a 54 72 69 61  |ge triangle.Tria|
0008eb30  6e 67 6c 65 20 4d 6f 76  65 73 0a 54 6f 20 70 6c  |ngle Moves.To pl|
0008eb40  6f 74 20 61 20 74 72 69  61 6e 67 6c 65 2c 20 6d  |ot a triangle, m|
0008eb50  6f 76 65 20 74 6f 20 76  65 72 74 65 78 2c 20 6d  |ove to vertex, m|
0008eb60  6f 76 65 20 74 6f 20 6e  65 78 74 20 76 65 72 74  |ove to next vert|
0008eb70  65 78 2c 20 74 68 65 6e  20 70 6c 6f 74 20 74 72  |ex, then plot tr|
0008eb80  69 61 6e 67 6c 65 20 74  6f 20 74 68 69 72 64 20  |iangle to third |
0008eb90  76 65 72 74 65 78 2e 0a  23 53 75 62 50 61 67 65  |vertex..#SubPage|
0008eba0  20 72 65 63 74 61 6e 67  6c 65 0a 52 65 63 74 61  | rectangle.Recta|
0008ebb0  6e 67 6c 65 20 4d 6f 76  65 73 0a 54 6f 20 70 6c  |ngle Moves.To pl|
0008ebc0  6f 74 20 61 20 72 65 63  74 61 6e 67 6c 65 2c 20  |ot a rectangle, |
0008ebd0  6d 6f 76 65 20 74 6f 20  6f 6e 65 20 63 6f 72 6e  |move to one corn|
0008ebe0  65 72 2c 20 74 68 65 6e  20 70 6c 6f 74 20 72 65  |er, then plot re|
0008ebf0  63 74 61 6e 67 6c 65 20  74 6f 20 64 69 61 67 6f  |ctangle to diago|
0008ec00  6e 61 6c 6c 79 20 6f 70  70 6f 73 69 74 65 20 63  |nally opposite c|
0008ec10  6f 72 6e 65 72 2e 0a 23  53 75 62 50 61 67 65 20  |orner..#SubPage |
0008ec20  70 61 72 61 6c 6c 65 6c  6f 67 72 61 6d 0a 50 61  |parallelogram.Pa|
0008ec30  72 61 6c 6c 65 6c 6f 67  72 61 6d 20 4d 6f 76 65  |rallelogram Move|
0008ec40  73 0a 54 6f 20 70 6c 6f  74 20 61 20 70 61 72 61  |s.To plot a para|
0008ec50  6c 6c 65 6c 6f 67 72 61  6d 2c 20 6d 6f 76 65 20  |llelogram, move |
0008ec60  74 6f 20 76 65 72 74 65  78 2c 20 6d 6f 76 65 20  |to vertex, move |
0008ec70  74 6f 20 6e 65 78 74 20  76 65 72 74 65 78 2c 20  |to next vertex, |
0008ec80  74 68 65 6e 20 70 6c 6f  74 20 70 61 72 61 6c 6c  |then plot parall|
0008ec90  65 6c 6f 67 72 61 6d 20  74 6f 20 74 68 69 72 64  |elogram to third|
0008eca0  20 76 65 72 74 65 78 2e  20 46 6f 75 72 74 68 20  | vertex. Fourth |
0008ecb0  76 65 72 74 65 78 20 77  69 6c 6c 20 62 65 20 6f  |vertex will be o|
0008ecc0  70 70 6f 73 69 74 65 20  73 65 63 6f 6e 64 2e 0a  |pposite second..|
0008ecd0  23 53 75 62 50 61 67 65  20 63 69 72 63 6c 65 0a  |#SubPage circle.|
0008ece0  43 69 72 63 6c 65 20 4d  6f 76 65 73 0a 54 6f 20  |Circle Moves.To |
0008ecf0  70 6c 6f 74 20 61 20 63  69 72 63 6c 65 2c 20 6d  |plot a circle, m|
0008ed00  6f 76 65 20 74 6f 20 63  65 6e 74 72 65 2c 20 74  |ove to centre, t|
0008ed10  68 65 6e 20 70 6c 6f 74  20 63 69 72 63 6c 65 20  |hen plot circle |
0008ed20  74 6f 20 61 20 70 6f 69  6e 74 20 6f 6e 20 74 68  |to a point on th|
0008ed30  65 20 63 69 72 63 75 6d  66 65 72 65 6e 63 65 2e  |e circumference.|
0008ed40  0a 23 53 75 62 50 61 67  65 20 61 72 63 2f 73 65  |.#SubPage arc/se|
0008ed50  67 6d 65 6e 74 2f 73 65  63 74 6f 72 0a 41 72 63  |gment/sector.Arc|
0008ed60  2f 53 65 67 6d 65 6e 74  2f 53 65 63 74 6f 72 20  |/Segment/Sector |
0008ed70  4d 6f 76 65 73 0a 54 6f  20 70 6c 6f 74 20 61 6e  |Moves.To plot an|
0008ed80  20 61 72 63 2f 73 65 67  6d 65 6e 74 2f 73 65 63  | arc/segment/sec|
0008ed90  74 6f 72 2c 20 6d 6f 76  65 20 74 6f 20 63 65 6e  |tor, move to cen|
0008eda0  74 72 65 2c 20 6d 6f 76  65 20 74 6f 20 73 74 61  |tre, move to sta|
0008edb0  72 74 2c 20 74 68 65 6e  20 70 6c 6f 74 20 61 72  |rt, then plot ar|
0008edc0  63 2f 73 65 67 6d 65 6e  74 2f 73 65 63 74 6f 72  |c/segment/sector|
0008edd0  20 74 6f 20 61 20 70 6f  69 6e 74 20 6f 6e 20 74  | to a point on t|
0008ede0  68 65 20 6c 69 6e 65 20  6a 6f 69 6e 69 6e 67 20  |he line joining |
0008edf0  63 65 6e 74 72 65 20 74  6f 20 65 6e 64 2e 20 41  |centre to end. A|
0008ee00  72 63 2f 73 65 67 6d 65  6e 74 2f 73 65 63 74 6f  |rc/segment/secto|
0008ee10  72 20 77 69 6c 6c 20 62  65 20 70 6c 6f 74 74 65  |r will be plotte|
0008ee20  64 20 61 6e 74 69 63 6c  6f 63 6b 77 69 73 65 2e  |d anticlockwise.|
0008ee30  0a 23 53 75 62 50 61 67  65 20 63 6f 70 79 2f 6d  |.#SubPage copy/m|
0008ee40  6f 76 65 0a 42 6c 6f 63  6b 20 43 6f 70 79 2f 4d  |ove.Block Copy/M|
0008ee50  6f 76 65 20 4d 6f 76 65  73 0a 46 69 72 73 74 20  |ove Moves.First |
0008ee60  64 65 66 69 6e 65 20 74  68 65 20 73 6f 75 72 63  |define the sourc|
0008ee70  65 20 72 65 63 74 61 6e  67 6c 65 3a 20 6d 6f 76  |e rectangle: mov|
0008ee80  65 20 74 6f 20 6f 6e 65  20 63 6f 72 6e 65 72 2c  |e to one corner,|
0008ee90  20 74 68 65 6e 20 6d 6f  76 65 20 74 6f 20 64 69  | then move to di|
0008eea0  61 67 6f 6e 61 6c 6c 79  20 6f 70 70 6f 73 69 74  |agonally opposit|
0008eeb0  65 20 63 6f 72 6e 65 72  2e 20 54 68 65 6e 20 70  |e corner. Then p|
0008eec0  6c 6f 74 20 62 6f 74 74  6f 6d 20 6c 65 66 74 20  |lot bottom left |
0008eed0  63 6f 72 6e 65 72 20 6f  66 20 64 65 73 74 69 6e  |corner of destin|
0008eee0  61 74 69 6f 6e 2e 0a 23  53 75 62 50 61 67 65 20  |ation..#SubPage |
0008eef0  65 6c 6c 69 70 73 65 0a  45 6c 6c 69 70 73 65 20  |ellipse.Ellipse |
0008ef00  4d 6f 76 65 73 0a 54 6f  20 70 6c 6f 74 20 61 20  |Moves.To plot a |
0008ef10  65 6c 6c 69 70 73 65 2c  20 6d 6f 76 65 20 74 6f  |ellipse, move to|
0008ef20  20 63 65 6e 74 72 65 2c  20 6d 6f 76 65 20 74 6f  | centre, move to|
0008ef30  20 70 6f 69 6e 74 20 6f  6e 20 63 69 72 63 75 6d  | point on circum|
0008ef40  66 65 72 65 6e 63 65 20  77 69 74 68 20 73 61 6d  |ference with sam|
0008ef50  65 20 59 20 63 6f 6f 72  64 20 61 73 20 63 65 6e  |e Y coord as cen|
0008ef60  74 72 65 2c 20 74 68 65  6e 20 70 6c 6f 74 20 65  |tre, then plot e|
0008ef70  6c 6c 69 70 73 65 20 74  6f 20 74 68 65 20 6c 6f  |llipse to the lo|
0008ef80  77 65 73 74 20 6f 72 20  68 69 67 68 65 73 74 20  |west or highest |
0008ef90  70 6f 69 6e 74 20 6f 6e  20 74 68 65 20 63 69 72  |point on the cir|
0008efa0  63 75 6d 66 65 72 65 6e  63 65 2e 0a 44 41 54 41  |cumference..DATA|
0008efb0  50 01 00 00 4d 6f 64 69  66 69 65 72 73 0a 23 50  |P...Modifiers.#P|
0008efc0  61 72 65 6e 74 20 4f 53  5f 50 6c 6f 74 49 6e 64  |arent OS_PlotInd|
0008efd0  65 78 0a 23 41 6c 69 67  6e 20 43 65 6e 74 72 65  |ex.#Align Centre|
0008efe0  3b 57 72 61 70 20 4f 66  66 0a 23 66 31 3a 4d 6f  |;Wrap Off.#f1:Mo|
0008eff0  64 69 66 69 65 72 73 20  3a 0a 23 41 6c 69 67 6e  |difiers :.#Align|
0008f000  0a 23 54 41 42 20 41 6c  69 67 6e 20 52 69 67 68  |.#TAB Align Righ|
0008f010  74 2c 20 41 6c 69 67 6e  20 4c 65 66 74 2c 20 41  |t, Align Left, A|
0008f020  6c 69 67 6e 20 52 69 67  68 74 2c 20 41 6c 69 67  |lign Right, Alig|
0008f030  6e 20 4c 65 66 74 0a 30  09 4d 6f 76 65 20 72 65  |n Left.0.Move re|
0008f040  6c 61 74 69 76 65 09 09  09 34 09 4d 6f 76 65 20  |lative...4.Move |
0008f050  61 62 73 6f 6c 75 74 65  0a 31 09 50 6c 6f 74 20  |absolute.1.Plot |
0008f060  72 65 6c 61 74 69 76 65  2c 20 66 6f 72 65 67 72  |relative, foregr|
0008f070  6f 75 6e 64 09 35 09 50  6c 6f 74 20 61 62 73 6f  |ound.5.Plot abso|
0008f080  6c 75 74 65 2c 20 66 6f  72 65 67 72 6f 75 6e 64  |lute, foreground|
0008f090  0a 32 09 50 6c 6f 74 20  72 65 6c 61 74 69 76 65  |.2.Plot relative|
0008f0a0  2c 20 69 6e 76 65 72 73  65 09 09 36 09 50 6c 6f  |, inverse..6.Plo|
0008f0b0  74 20 61 62 73 6f 6c 75  74 65 2c 20 69 6e 76 65  |t absolute, inve|
0008f0c0  72 73 65 0a 33 09 50 6c  6f 74 20 72 65 6c 61 74  |rse.3.Plot relat|
0008f0d0  69 76 65 2c 20 62 61 63  6b 67 72 6f 75 6e 64 09  |ive, background.|
0008f0e0  37 09 50 6c 6f 74 20 61  62 73 6f 6c 75 74 65 2c  |7.Plot absolute,|
0008f0f0  20 62 61 63 6b 67 72 6f  75 6e 64 0a 44 41 54 41  | background.DATA|
0008f100  5c 01 00 00 42 6c 6f 63  6b 20 63 6f 70 79 2f 6d  |\...Block copy/m|
0008f110  6f 76 65 20 6d 6f 64 69  66 69 65 72 73 0a 23 50  |ove modifiers.#P|
0008f120  61 72 65 6e 74 20 4f 53  5f 50 6c 6f 74 49 6e 64  |arent OS_PlotInd|
0008f130  65 78 0a 23 41 6c 69 67  6e 20 43 65 6e 74 72 65  |ex.#Align Centre|
0008f140  3b 57 72 61 70 20 4f 66  66 0a 23 66 31 3a 4d 6f  |;Wrap Off.#f1:Mo|
0008f150  64 69 66 69 65 72 73 20  3a 0a 23 41 6c 69 67 6e  |difiers :.#Align|
0008f160  0a 23 54 41 42 20 41 6c  69 67 6e 20 52 69 67 68  |.#TAB Align Righ|
0008f170  74 2c 20 41 6c 69 67 6e  20 4c 65 66 74 2c 20 41  |t, Align Left, A|
0008f180  6c 69 67 6e 20 52 69 67  68 74 2c 20 41 6c 69 67  |lign Right, Alig|
0008f190  6e 20 4c 65 66 74 0a 30  09 4d 6f 76 65 20 72 65  |n Left.0.Move re|
0008f1a0  6c 61 74 69 76 65 09 09  09 34 09 4d 6f 76 65 20  |lative...4.Move |
0008f1b0  61 62 73 6f 6c 75 74 65  0a 31 09 52 65 6c 61 74  |absolute.1.Relat|
0008f1c0  69 76 65 20 72 65 63 74  61 6e 67 6c 65 20 6d 6f  |ive rectangle mo|
0008f1d0  76 65 09 09 35 09 41 62  73 6f 6c 75 74 65 20 72  |ve..5.Absolute r|
0008f1e0  65 63 74 61 6e 67 6c 65  20 6d 6f 76 65 0a 32 09  |ectangle move.2.|
0008f1f0  52 65 6c 61 74 69 76 65  20 72 65 63 74 61 6e 67  |Relative rectang|
0008f200  6c 65 20 63 6f 70 79 09  09 36 09 41 62 73 6f 6c  |le copy..6.Absol|
0008f210  75 74 65 20 72 65 63 74  61 6e 67 6c 65 20 63 6f  |ute rectangle co|
0008f220  70 79 0a 33 09 52 65 6c  61 74 69 76 65 20 72 65  |py.3.Relative re|
0008f230  63 74 61 6e 67 6c 65 20  63 6f 70 79 09 09 37 09  |ctangle copy..7.|
0008f240  41 62 73 6f 6c 75 74 65  20 72 65 63 74 61 6e 67  |Absolute rectang|
0008f250  6c 65 20 63 6f 70 79 0a  44 49 52 24 a4 00 00 00  |le copy.DIR$....|
0008f260  a4 00 00 00 fc f2 08 00  43 fd ff ff 3f 98 1e c5  |........C...?...|
0008f270  90 00 00 00 13 00 00 00  00 00 00 00 30 00 00 00  |............0...|
0008f280  8c f3 08 00 47 fd ff ff  6c 40 b7 cd 2d 01 00 00  |....G...l@..-...|
0008f290  13 00 00 00 00 00 00 00  31 00 00 00 bc f4 08 00  |........1.......|
0008f2a0  47 ff ff ff 17 f5 ac cd  dc 00 00 00 13 00 00 00  |G...............|
0008f2b0  00 00 00 00 49 6e 69 74  00 00 00 00 98 f5 08 00  |....Init........|
0008f2c0  47 ff ff ff c9 fd ac cd  19 01 00 00 13 00 00 00  |G...............|
0008f2d0  00 00 00 00 52 65 61 64  00 00 00 00 b4 f6 08 00  |....Read........|
0008f2e0  47 ff ff ff 18 08 ad cd  83 01 00 00 13 00 00 00  |G...............|
0008f2f0  00 00 00 00 54 72 61 6e  73 00 00 00 44 41 54 41  |....Trans...DATA|
0008f300  90 00 00 00 47 53 20 66  6c 61 67 73 0a 62 69 74  |....GS flags.bit|
0008f310  09 20 4d 65 61 6e 69 6e  67 20 77 68 65 6e 20 73  |. Meaning when s|
0008f320  65 74 0a 23 4c 69 6e 65  0a 32 39 09 53 70 61 63  |et.#Line.29.Spac|
0008f330  65 20 69 73 20 73 74 72  69 6e 67 20 74 65 72 6d  |e is string term|
0008f340  69 6e 61 74 6f 72 0a 33  30 09 43 74 72 6c 20 63  |inator.30.Ctrl c|
0008f350  6f 64 65 73 20 28 27 7c  27 29 20 6e 6f 74 20 63  |odes ('|') not c|
0008f360  6f 6e 76 65 72 74 65 64  0a 33 31 09 22 20 69 73  |onverted.31." is|
0008f370  20 6e 6f 74 20 73 74 72  69 70 70 65 64 20 61 72  | not stripped ar|
0008f380  6f 75 6e 64 20 73 74 72  69 6e 67 73 44 41 54 41  |ound stringsDATA|
0008f390  2d 01 00 00 54 72 61 6e  73 6c 61 74 69 6f 6e 73  |-...Translations|
0008f3a0  0a 54 6f 6b 65 6e 09 52  65 70 6c 61 63 65 64 20  |.Token.Replaced |
0008f3b0  62 79 0a 23 4c 69 6e 65  0a 7c 22 09 22 0a 7c 5c  |by.#Line.|".".|\|
0008f3c0  3c 09 5c 3c 0a 7c 21 09  66 6f 72 63 65 73 20 74  |<.\<.|!.forces t|
0008f3d0  6f 70 20 62 69 74 20 6f  66 20 6e 65 78 74 20 63  |op bit of next c|
0008f3e0  68 61 72 20 74 6f 20 62  65 20 73 65 74 2e 0a 7c  |har to be set..||
0008f3f0  63 68 61 72 09 43 54 52  4c 28 20 41 53 43 49 49  |char.CTRL( ASCII|
0008f400  28 75 70 70 65 72 63 61  73 65 28 63 68 61 72 29  |(uppercase(char)|
0008f410  20 2d 20 36 34 20 29 0a  22 73 74 72 22 09 73 74  | - 64 )."str".st|
0008f420  72 0a 5c 3c 6e 75 6d 3e  09 43 54 52 4c 28 6e 75  |r.\<num>.CTRL(nu|
0008f430  6d 29 0a 5c 3c 73 74 72  3e 09 73 79 73 74 65 6d  |m).\<str>.system|
0008f440  20 76 61 72 69 61 62 6c  65 20 73 74 72 0a 0a 45  | variable str..E|
0008f450  78 61 6d 70 6c 65 3a 20  3c 5c 3c 37 5c 3e 44 61  |xample: <\<7\>Da|
0008f460  74 65 3a 20 5c 3c 53 79  73 24 44 61 74 65 5c 3e  |te: \<Sys$Date\>|
0008f470  7c 4d 7c 4a 54 69 6d 65  3a 20 5c 3c 53 79 73 24  ||M|JTime: \<Sys$|
0008f480  54 69 6d 65 5c 3e 3d 3e  2a 45 43 48 4f 20 3c 37  |Time\>=>*ECHO <7|
0008f490  5c 3e 44 61 74 65 3a 20  3c 53 79 73 24 44 61 74  |\>Date: <Sys$Dat|
0008f4a0  65 5c 3e 7c 4d 7c 4a 54  69 6d 65 3a 20 3c 53 79  |e\>|M|JTime: <Sy|
0008f4b0  73 24 54 69 6d 65 5c 3e  3e 00 00 00 44 41 54 41  |s$Time\>>...DATA|
0008f4c0  dc 00 00 00 4f 53 5f 47  53 49 6e 69 74 20 20 28  |....OS_GSInit  (|
0008f4d0  26 32 35 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |&25).#Parent OS_|
0008f4e0  0a 3d 3e 09 52 30 20 3d  09 73 74 72 69 6e 67 20  |.=>.R0 =.string |
0008f4f0  74 6f 20 74 72 61 6e 73  6c 61 74 65 0a 09 52 32  |to translate..R2|
0008f500  20 3d 09 3c 66 6c 61 67  73 3d 3e 6f 73 5f 67 73  | =.<flags=>os_gs|
0008f510  30 3e 0a 0a 3c 3d 09 52  30 20 3d 09 76 61 6c 75  |0>..<=.R0 =.valu|
0008f520  65 20 66 6f 72 20 4f 53  5f 47 53 52 65 61 64 0a  |e for OS_GSRead.|
0008f530  09 52 31 20 3d 09 31 73  74 20 6e 6f 6e 62 6c 61  |.R1 =.1st nonbla|
0008f540  6e 6b 20 63 68 61 72 0a  09 52 32 20 3d 09 76 61  |nk char..R2 =.va|
0008f550  6c 75 65 20 66 6f 72 20  4f 53 5f 47 53 52 65 61  |lue for OS_GSRea|
0008f560  64 0a 0a 54 68 69 73 20  53 57 49 20 69 73 20 66  |d..This SWI is f|
0008f570  6f 6c 6c 6f 77 65 64 20  62 79 20 72 65 70 65 61  |ollowed by repea|
0008f580  74 65 64 20 63 61 6c 6c  73 20 74 6f 20 3c 4f 53  |ted calls to <OS|
0008f590  5f 47 53 52 65 61 64 3e  44 41 54 41 19 01 00 00  |_GSRead>DATA....|
0008f5a0  4f 53 5f 47 53 52 65 61  64 20 20 28 26 32 36 29  |OS_GSRead  (&26)|
0008f5b0  0a 23 50 61 72 65 6e 74  20 4f 53 5f 0a 3d 3e 09  |.#Parent OS_.=>.|
0008f5c0  52 30 2c 52 32 20 66 72  6f 6d 20 6c 61 73 74 20  |R0,R2 from last |
0008f5d0  63 61 6c 6c 2c 20 6f 72  20 66 72 6f 6d 20 4f 53  |call, or from OS|
0008f5e0  5f 47 53 49 6e 69 74 0a  0a 3c 3d 09 52 31 20 3d  |_GSInit..<=.R1 =|
0008f5f0  09 74 72 61 6e 73 6c 61  74 65 64 20 63 68 61 72  |.translated char|
0008f600  0a 09 43 20 73 65 74 20  69 66 20 65 6e 64 2d 6f  |..C set if end-o|
0008f610  66 2d 73 74 72 69 6e 67  0a 0a 54 68 69 73 20 53  |f-string..This S|
0008f620  57 49 20 72 65 61 64 73  20 26 20 3c 74 72 61 6e  |WI reads & <tran|
0008f630  73 6c 61 74 65 73 3d 3e  6f 73 5f 67 73 31 3e 20  |slates=>os_gs1> |
0008f640  61 20 73 74 72 69 6e 67  2c 20 6f 6e 65 20 63 68  |a string, one ch|
0008f650  61 72 20 61 74 20 61 20  74 69 6d 65 2e 20 42 65  |ar at a time. Be|
0008f660  66 6f 72 65 20 66 69 72  73 74 20 63 61 6c 6c 2c  |fore first call,|
0008f670  20 3c 4f 53 5f 47 53 49  6e 69 74 3e 20 6d 75 73  | <OS_GSInit> mus|
0008f680  74 20 62 65 20 63 61 6c  6c 65 64 2e 20 54 6f 20  |t be called. To |
0008f690  64 6f 20 77 68 6f 6c 65  20 73 74 72 69 6e 67 2c  |do whole string,|
0008f6a0  20 75 73 65 20 3c 4f 53  5f 47 53 54 72 61 6e 73  | use <OS_GSTrans|
0008f6b0  3e 00 00 00 44 41 54 41  83 01 00 00 4f 53 5f 47  |>...DATA....OS_G|
0008f6c0  53 54 72 61 6e 73 20 20  28 26 32 37 29 0a 23 50  |STrans  (&27).#P|
0008f6d0  61 72 65 6e 74 20 4f 53  5f 0a 3d 3e 09 52 30 20  |arent OS_.=>.R0 |
0008f6e0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 73 74 72  |=.pointer to str|
0008f6f0  69 6e 67 2c 20 74 65 72  6d 69 6e 61 74 65 64 20  |ing, terminated |
0008f700  62 79 20 31 30 2c 31 33  2c 30 0a 09 52 31 20 3d  |by 10,13,0..R1 =|
0008f710  09 70 6f 69 6e 74 65 72  20 74 6f 20 64 65 73 74  |.pointer to dest|
0008f720  69 6e 61 74 69 6f 6e 20  62 75 66 66 65 72 0a 09  |ination buffer..|
0008f730  52 32 20 3d 09 62 75 66  66 65 72 20 73 69 7a 65  |R2 =.buffer size|
0008f740  20 2b 20 3c 66 6c 61 67  73 3d 3e 6f 73 5f 67 73  | + <flags=>os_gs|
0008f750  30 3e 0a 0a 3c 3d 09 52  30 20 3d 09 70 6f 69 6e  |0>..<=.R0 =.poin|
0008f760  74 65 72 20 74 6f 20 74  65 72 6d 69 6e 61 74 6f  |ter to terminato|
0008f770  72 2b 31 0a 09 52 32 20  3d 09 63 68 61 72 61 63  |r+1..R2 =.charac|
0008f780  74 65 72 73 20 63 6f 6e  76 65 72 74 65 64 0a 09  |ters converted..|
0008f790  43 20 73 65 74 20 69 66  20 62 75 66 66 65 72 20  |C set if buffer |
0008f7a0  6f 76 65 72 66 6c 6f 77  0a 0a 54 68 69 73 20 53  |overflow..This S|
0008f7b0  57 49 20 69 73 20 65 71  75 69 76 61 6c 65 6e 74  |WI is equivalent|
0008f7c0  20 74 6f 20 61 20 63 61  6c 6c 20 74 6f 20 3c 4f  | to a call to <O|
0008f7d0  53 5f 47 53 49 6e 69 74  3e 2c 20 66 6f 6c 6c 6f  |S_GSInit>, follo|
0008f7e0  77 65 64 20 62 79 20 72  65 70 65 61 74 65 64 20  |wed by repeated |
0008f7f0  63 61 6c 6c 73 20 74 6f  20 3c 4f 53 5f 47 53 52  |calls to <OS_GSR|
0008f800  65 61 64 3e 2e 20 49 74  20 72 65 61 64 73 20 61  |ead>. It reads a|
0008f810  6e 64 20 3c 74 72 61 6e  73 6c 61 74 65 73 3d 3e  |nd <translates=>|
0008f820  6f 73 5f 67 73 31 3e 20  61 20 77 68 6f 6c 65 20  |os_gs1> a whole |
0008f830  73 74 72 69 6e 67 2e 00  44 49 52 24 70 01 00 00  |string..DIR$p...|
0008f840  70 01 00 00 a8 f9 08 00  46 ff ff ff 08 79 bb 88  |p.......F....y..|
0008f850  c1 01 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
0008f860  74 00 00 00 6c fb 08 00  47 ff ff ff 81 15 b7 cd  |t...l...G.......|
0008f870  7c 01 00 00 13 00 00 00  00 00 00 00 53 6f 72 74  ||...........Sort|
0008f880  00 00 00 00 e8 fc 08 00  45 fd ff ff 8b df e9 ff  |........E.......|
0008f890  8c 00 00 00 13 00 00 00  00 00 00 00 73 6f 72 74  |............sort|
0008f8a0  30 00 00 00 74 fd 08 00  47 fd ff ff 37 6c b8 cd  |0...t...G...7l..|
0008f8b0  25 01 00 00 13 00 00 00  00 00 00 00 73 6f 72 74  |%...........sort|
0008f8c0  31 00 00 00 9c fe 08 00  47 fd ff ff 72 6e b8 cd  |1.......G...rn..|
0008f8d0  e8 00 00 00 13 00 00 00  00 00 00 00 73 6f 72 74  |............sort|
0008f8e0  32 00 00 00 84 ff 08 00  47 fd ff ff 3f bb bd cd  |2.......G...?...|
0008f8f0  ac 00 00 00 13 00 00 00  00 00 00 00 30 00 00 00  |............0...|
0008f900  30 00 09 00 47 fd ff ff  17 13 ad cd b1 00 00 00  |0...G...........|
0008f910  13 00 00 00 00 00 00 00  31 00 00 00 e4 00 09 00  |........1.......|
0008f920  47 fd ff ff 93 19 ad cd  a7 00 00 00 13 00 00 00  |G...............|
0008f930  00 00 00 00 32 00 00 00  8c 01 09 00 47 fd ff ff  |....2.......G...|
0008f940  c9 bd bd cd 9f 00 00 00  13 00 00 00 00 00 00 00  |................|
0008f950  33 00 00 00 2c 02 09 00  47 fd ff ff a0 23 ad cd  |3...,...G....#..|
0008f960  e5 00 00 00 13 00 00 00  00 00 00 00 34 00 00 00  |............4...|
0008f970  14 03 09 00 47 fd ff ff  72 c1 bd cd 24 01 00 00  |....G...r...$...|
0008f980  13 00 00 00 00 00 00 00  35 00 00 00 38 04 09 00  |........5...8...|
0008f990  47 fd ff ff 68 26 ad cd  ba 00 00 00 13 00 00 00  |G...h&..........|
0008f9a0  00 00 00 00 36 00 00 00  44 41 54 41 c1 01 00 00  |....6...DATA....|
0008f9b0  4f 53 5f 48 65 61 70 20  20 28 26 31 44 29 0a 23  |OS_Heap  (&1D).#|
0008f9c0  50 61 72 65 6e 74 20 4f  53 5f 0a 3d 3e 09 52 30  |Parent OS_.=>.R0|
0008f9d0  20 3d 09 52 65 61 73 6f  6e 20 3a 0a 09 20 09 20  | =.Reason :.. . |
0008f9e0  20 30 09 3c 49 6e 69 74  69 61 6c 69 73 65 20 68  | 0.<Initialise h|
0008f9f0  65 61 70 3d 3e 4f 53 5f  48 65 61 70 30 3e 0a 09  |eap=>OS_Heap0>..|
0008fa00  20 09 20 20 31 09 3c 44  65 73 63 72 69 62 65 20  | .  1.<Describe |
0008fa10  68 65 61 70 3d 3e 4f 53  5f 48 65 61 70 31 3e 0a  |heap=>OS_Heap1>.|
0008fa20  09 20 09 20 20 32 09 3c  43 6c 61 69 6d 20 62 6c  |. .  2.<Claim bl|
0008fa30  6f 63 6b 3d 3e 4f 53 5f  48 65 61 70 32 3e 0a 09  |ock=>OS_Heap2>..|
0008fa40  20 09 20 20 33 09 3c 52  65 6c 65 61 73 65 20 62  | .  3.<Release b|
0008fa50  6c 6f 63 6b 3d 3e 4f 53  5f 48 65 61 70 33 3e 0a  |lock=>OS_Heap3>.|
0008fa60  09 20 09 20 20 34 09 3c  43 68 61 6e 67 65 20 73  |. .  4.<Change s|
0008fa70  69 7a 65 20 6f 66 20 62  6c 6f 63 6b 3d 3e 4f 53  |ize of block=>OS|
0008fa80  5f 48 65 61 70 34 3e 0a  09 20 09 20 20 35 09 3c  |_Heap4>.. .  5.<|
0008fa90  43 68 61 6e 67 65 20 73  69 7a 65 20 6f 66 20 68  |Change size of h|
0008faa0  65 61 70 3d 3e 4f 53 5f  48 65 61 70 35 3e 0a 09  |eap=>OS_Heap5>..|
0008fab0  20 09 20 20 36 09 3c 52  65 61 64 20 62 6c 6f 63  | .  6.<Read bloc|
0008fac0  6b 20 73 69 7a 65 3d 3e  4f 53 5f 48 65 61 70 36  |k size=>OS_Heap6|
0008fad0  3e 0a 09 52 31 20 3d 09  50 6f 69 6e 74 65 72 20  |>..R1 =.Pointer |
0008fae0  74 6f 20 68 65 61 70 0a  0a 54 68 65 73 65 20 63  |to heap..These c|
0008faf0  61 6c 6c 73 20 63 6f 6e  74 72 6f 6c 20 61 20 75  |alls control a u|
0008fb00  73 65 72 20 68 65 61 70  20 62 6c 6f 63 6b 20 61  |ser heap block a|
0008fb10  6e 64 20 74 68 65 20 61  6c 6c 6f 63 61 74 69 6f  |nd the allocatio|
0008fb20  6e 20 6f 66 20 73 70 61  63 65 20 77 69 74 68 20  |n of space with |
0008fb30  69 6e 20 69 74 2e 20 4e  6f 74 65 20 74 68 61 74  |in it. Note that|
0008fb40  20 6e 6f 20 63 6f 64 65  20 69 73 20 70 72 6f 76  | no code is prov|
0008fb50  69 64 65 64 20 74 6f 20  63 6f 6d 70 61 63 74 20  |ided to compact |
0008fb60  74 68 65 20 68 65 61 70  2e 00 00 00 44 41 54 41  |the heap....DATA|
0008fb70  7c 01 00 00 4f 53 5f 48  65 61 70 53 6f 72 74 20  ||...OS_HeapSort |
0008fb80  20 28 26 34 46 29 0a 23  50 61 72 65 6e 74 20 4f  | (&4F).#Parent O|
0008fb90  53 5f 0a 3d 3e 09 52 30  20 3d 09 6e 75 6d 62 65  |S_.=>.R0 =.numbe|
0008fba0  72 20 6f 66 20 65 6c 65  6d 65 6e 74 73 0a 09 52  |r of elements..R|
0008fbb0  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 77  |1 =.pointer to w|
0008fbc0  6f 72 64 2d 61 72 72 61  79 20 2b 20 3c 66 6c 61  |ord-array + <fla|
0008fbd0  67 73 3d 3e 6f 73 5f 68  65 61 70 73 6f 72 74 30  |gs=>os_heapsort0|
0008fbe0  3e 0a 09 52 32 20 3d 09  3c 74 79 70 65 3d 3e 6f  |>..R2 =.<type=>o|
0008fbf0  73 5f 68 65 61 70 73 6f  72 74 31 3e 20 6f 72 20  |s_heapsort1> or |
0008fc00  3c 63 6f 6d 70 61 72 69  73 6f 6e 20 72 6f 75 74  |<comparison rout|
0008fc10  69 6e 65 3d 3e 6f 73 5f  68 65 61 70 73 6f 72 74  |ine=>os_heapsort|
0008fc20  32 3e 0a 6f 70 74 69 6f  6e 61 6c 20 3a 0a 09 52  |2>.optional :..R|
0008fc30  33 20 3d 09 77 6f 72 6b  73 70 61 63 65 20 70 6f  |3 =.workspace po|
0008fc40  69 6e 74 65 72 0a 09 52  34 20 3d 09 61 72 72 61  |inter..R4 =.arra|
0008fc50  79 20 6f 66 20 61 63 74  75 61 6c 20 6f 62 6a 65  |y of actual obje|
0008fc60  63 74 73 0a 09 52 35 20  3d 09 73 69 7a 65 20 6f  |cts..R5 =.size o|
0008fc70  66 20 6f 62 6a 65 63 74  20 69 6e 20 52 34 0a 09  |f object in R4..|
0008fc80  52 36 20 3d 09 77 6f 72  6b 73 70 61 63 65 20 6f  |R6 =.workspace o|
0008fc90  66 20 52 35 20 62 79 74  65 73 20 28 69 66 20 52  |f R5 bytes (if R|
0008fca0  35 3e 31 36 4b 29 0a 0a  54 68 69 73 20 53 57 49  |5>16K)..This SWI|
0008fcb0  20 73 6f 72 74 73 20 61  20 6c 69 73 74 20 6f 66  | sorts a list of|
0008fcc0  20 6f 62 6a 65 63 74 73  2c 20 75 73 69 6e 67 20  | objects, using |
0008fcd0  74 68 65 20 48 65 61 70  20 53 6f 72 74 20 61 6c  |the Heap Sort al|
0008fce0  67 6f 72 69 74 68 6d 2e  44 41 54 41 8c 00 00 00  |gorithm.DATA....|
0008fcf0  46 6c 61 67 73 0a 42 69  74 09 4d 65 61 6e 69 6e  |Flags.Bit.Meanin|
0008fd00  67 20 77 68 65 6e 20 73  65 74 0a 23 4c 69 6e 65  |g when set.#Line|
0008fd10  0a 32 39 09 55 73 65 20  52 36 20 61 73 20 77 6f  |.29.Use R6 as wo|
0008fd20  72 6b 73 70 61 63 65 0a  33 30 09 42 75 69 6c 64  |rkspace.30.Build|
0008fd30  20 77 6f 72 64 20 61 72  72 61 79 20 69 6e 20 52  | word array in R|
0008fd40  31 20 66 72 6f 6d 20 52  34 2b 52 35 0a 33 31 09  |1 from R4+R5.31.|
0008fd50  53 6f 72 74 20 52 34 20  61 72 72 61 79 20 61 66  |Sort R4 array af|
0008fd60  74 65 72 20 73 6f 72 74  69 6e 67 20 70 6f 69 6e  |ter sorting poin|
0008fd70  74 65 72 73 44 41 54 41  25 01 00 00 53 74 61 6e  |tersDATA%...Stan|
0008fd80  64 61 72 64 20 73 6f 72  74 20 72 6f 75 74 69 6e  |dard sort routin|
0008fd90  65 73 0a 52 31 20 69 73  20 61 72 72 61 79 20 6f  |es.R1 is array o|
0008fda0  66 20 3a 0a 20 30 20 63  61 72 64 69 6e 61 6c 0a  |f :. 0 cardinal.|
0008fdb0  20 31 20 69 6e 74 65 67  65 72 0a 20 32 20 70 6f  | 1 integer. 2 po|
0008fdc0  69 6e 74 65 72 20 74 6f  20 63 61 72 64 69 6e 61  |inter to cardina|
0008fdd0  6c 0a 20 33 20 70 6f 69  6e 74 65 72 20 74 6f 20  |l. 3 pointer to |
0008fde0  69 6e 74 65 67 65 72 0a  20 34 20 70 6f 69 6e 74  |integer. 4 point|
0008fdf0  65 72 20 74 6f 20 63 68  61 72 73 20 28 63 61 73  |er to chars (cas|
0008fe00  65 20 69 6e 73 65 6e 73  69 74 69 76 65 29 0a 20  |e insensitive). |
0008fe10  35 20 70 6f 69 6e 74 65  72 20 74 6f 20 63 68 61  |5 pointer to cha|
0008fe20  72 73 20 28 63 61 73 65  20 73 65 6e 73 69 74 69  |rs (case sensiti|
0008fe30  76 65 29 0a 0a 49 66 20  52 32 20 3e 20 35 2c 20  |ve)..If R2 > 5, |
0008fe40  74 68 65 6e 20 52 31 20  70 6f 69 6e 74 73 20 74  |then R1 points t|
0008fe50  6f 20 63 75 73 74 6f 6d  20 6f 62 6a 65 63 74 73  |o custom objects|
0008fe60  2c 20 61 6e 64 20 52 32  20 69 73 20 61 64 64 72  |, and R2 is addr|
0008fe70  65 73 73 20 6f 66 20 3c  63 6f 6d 70 61 72 69 73  |ess of <comparis|
0008fe80  6f 6e 20 72 6f 75 74 69  6e 65 3d 3e 6f 73 5f 68  |on routine=>os_h|
0008fe90  65 61 70 73 6f 72 74 32  3e 00 00 00 44 41 54 41  |eapsort2>...DATA|
0008fea0  e8 00 00 00 43 6f 6d 70  61 72 69 73 6f 6e 20 72  |....Comparison r|
0008feb0  6f 75 74 69 6e 65 0a 23  50 61 72 65 6e 74 20 4f  |outine.#Parent O|
0008fec0  53 5f 48 65 61 70 53 6f  72 74 0a 3d 3e 09 52 30  |S_HeapSort.=>.R0|
0008fed0  2c 52 31 09 3d 09 6f 62  6a 65 63 74 73 20 66 72  |,R1.=.objects fr|
0008fee0  6f 6d 20 52 31 20 61 72  72 61 79 0a 09 52 31 32  |om R1 array..R12|
0008fef0  09 3d 09 77 6f 72 6b 73  70 61 63 65 20 70 6f 69  |.=.workspace poi|
0008ff00  6e 74 65 72 20 67 69 76  65 6e 20 69 6e 20 52 33  |nter given in R3|
0008ff10  0a 0a 3c 3d 09 52 30 2d  52 33 20 6d 61 79 20 62  |..<=.R0-R3 may b|
0008ff20  65 20 63 6f 72 72 75 70  74 65 64 0a 09 66 6c 61  |e corrupted..fla|
0008ff30  67 73 3a 20 4c 54 20 69  66 20 52 30 5c 3c 52 31  |gs: LT if R0\<R1|
0008ff40  2c 20 65 6c 73 65 20 47  45 0a 0a 54 68 69 73 20  |, else GE..This |
0008ff50  72 6f 75 74 69 6e 65 20  63 6f 6d 70 61 72 65 73  |routine compares|
0008ff60  20 74 68 65 20 74 77 6f  20 6f 62 6a 65 63 74 73  | the two objects|
0008ff70  20 67 69 76 65 6e 20 62  79 20 52 30 20 61 6e 64  | given by R0 and|
0008ff80  20 52 31 2e 44 41 54 41  ac 00 00 00 4f 53 5f 48  | R1.DATA....OS_H|
0008ff90  65 61 70 20 30 0a 23 50  61 72 65 6e 74 20 4f 53  |eap 0.#Parent OS|
0008ffa0  5f 48 65 61 70 0a 23 57  72 61 70 20 6f 66 66 0a  |_Heap.#Wrap off.|
0008ffb0  3d 3e 09 52 30 20 3d 09  30 0a 09 52 31 20 3d 09  |=>.R0 =.0..R1 =.|
0008ffc0  70 6f 69 6e 74 65 72 20  74 6f 20 68 65 61 70 20  |pointer to heap |
0008ffd0  28 77 6f 72 64 20 61 6c  69 67 6e 65 64 29 0a 09  |(word aligned)..|
0008ffe0  52 33 20 3d 09 73 69 7a  65 20 6f 66 20 68 65 61  |R3 =.size of hea|
0008fff0  70 20 28 6d 75 6c 74 69  70 6c 65 20 6f 66 20 34  |p (multiple of 4|
00090000  29 0a 0a 54 68 69 73 20  53 57 49 20 73 65 74 73  |)..This SWI sets|
00090010  20 75 70 20 61 20 68 65  61 70 20 6f 66 20 61 20  | up a heap of a |
00090020  70 61 72 74 69 63 75 6c  61 72 20 73 69 7a 65 2e  |particular size.|
00090030  44 41 54 41 b1 00 00 00  4f 53 5f 48 65 61 70 20  |DATA....OS_Heap |
00090040  31 0a 23 50 61 72 65 6e  74 20 4f 53 5f 48 65 61  |1.#Parent OS_Hea|
00090050  70 0a 23 57 72 61 70 20  6f 66 66 0a 3d 3e 09 52  |p.#Wrap off.=>.R|
00090060  30 20 3d 09 31 0a 09 52  31 20 3d 09 70 6f 69 6e  |0 =.1..R1 =.poin|
00090070  74 65 72 20 74 6f 20 68  65 61 70 0a 3c 3d 09 52  |ter to heap.<=.R|
00090080  32 20 3d 09 6c 61 72 67  65 73 74 20 66 72 65 65  |2 =.largest free|
00090090  20 73 70 61 63 65 0a 09  52 33 20 3d 09 74 6f 74  | space..R3 =.tot|
000900a0  61 6c 20 66 72 65 65 20  73 70 61 63 65 0a 0a 54  |al free space..T|
000900b0  68 69 73 20 53 57 49 20  72 65 61 64 73 20 74 68  |his SWI reads th|
000900c0  65 20 63 75 72 72 65 6e  74 20 73 74 61 74 75 73  |e current status|
000900d0  20 6f 66 20 61 20 68 65  61 70 20 62 6c 6f 63 6b  | of a heap block|
000900e0  2e 00 00 00 44 41 54 41  a7 00 00 00 4f 53 5f 48  |....DATA....OS_H|
000900f0  65 61 70 20 32 0a 23 50  61 72 65 6e 74 20 4f 53  |eap 2.#Parent OS|
00090100  5f 48 65 61 70 0a 3d 3e  09 52 30 20 3d 09 32 0a  |_Heap.=>.R0 =.2.|
00090110  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
00090120  20 68 65 61 70 0a 09 52  33 20 3d 09 73 69 7a 65  | heap..R3 =.size|
00090130  20 74 6f 20 63 6c 61 69  6d 0a 0a 3c 3d 09 52 32  | to claim..<=.R2|
00090140  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 62 6c  | =.pointer to bl|
00090150  6f 63 6b 2c 20 6f 72 20  30 20 69 66 20 66 61 69  |ock, or 0 if fai|
00090160  6c 65 64 0a 0a 54 68 69  73 20 53 57 49 20 63 6c  |led..This SWI cl|
00090170  61 69 6d 73 20 61 20 73  65 63 74 69 6f 6e 20 6f  |aims a section o|
00090180  66 20 74 68 65 20 68 65  61 70 2e 00 44 41 54 41  |f the heap..DATA|
00090190  9f 00 00 00 4f 53 5f 48  65 61 70 20 33 0a 23 50  |....OS_Heap 3.#P|
000901a0  61 72 65 6e 74 20 4f 53  5f 48 65 61 70 0a 23 57  |arent OS_Heap.#W|
000901b0  72 61 70 20 6f 66 66 0a  3d 3e 09 52 30 20 3d 09  |rap off.=>.R0 =.|
000901c0  33 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |3..R1 =.pointer |
000901d0  74 6f 20 68 65 61 70 0a  09 52 32 20 3d 09 70 6f  |to heap..R2 =.po|
000901e0  69 6e 74 65 72 20 74 6f  20 62 6c 6f 63 6b 0a 0a  |inter to block..|
000901f0  54 68 69 73 20 53 57 49  20 72 65 6c 65 61 73 65  |This SWI release|
00090200  73 20 61 20 70 72 65 76  69 6f 75 73 6c 79 20 63  |s a previously c|
00090210  6c 61 69 6d 65 64 20 73  65 63 74 69 6f 6e 20 6f  |laimed section o|
00090220  66 20 74 68 65 20 68 65  61 70 2e 00 44 41 54 41  |f the heap..DATA|
00090230  e5 00 00 00 4f 53 5f 48  65 61 70 20 34 0a 23 50  |....OS_Heap 4.#P|
00090240  61 72 65 6e 74 20 4f 53  5f 48 65 61 70 0a 23 57  |arent OS_Heap.#W|
00090250  72 61 70 20 6f 66 66 0a  3d 3e 09 52 30 20 3d 09  |rap off.=>.R0 =.|
00090260  34 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |4..R1 =.pointer |
00090270  74 6f 20 68 65 61 70 0a  09 52 32 20 3d 09 70 6f  |to heap..R2 =.po|
00090280  69 6e 74 65 72 20 74 6f  20 62 6c 6f 63 6b 0a 09  |inter to block..|
00090290  52 33 20 3d 09 73 69 7a  65 20 69 6e 63 72 65 61  |R3 =.size increa|
000902a0  73 65 2c 20 6f 72 20 2d  76 65 20 66 6f 72 20 64  |se, or -ve for d|
000902b0  65 63 72 65 61 73 65 0a  3c 3d 09 52 32 20 3d 09  |ecrease.<=.R2 =.|
000902c0  70 6f 69 6e 74 65 72 20  74 6f 20 6e 65 77 20 62  |pointer to new b|
000902d0  6c 6f 63 6b 0a 0a 54 68  69 73 20 53 57 49 20 63  |lock..This SWI c|
000902e0  68 61 6e 67 65 73 20 74  68 65 20 73 69 7a 65 20  |hanges the size |
000902f0  6f 66 20 61 20 63 6c 61  69 6d 65 64 20 73 65 63  |of a claimed sec|
00090300  74 69 6f 6e 20 6f 66 20  74 68 65 20 68 65 61 70  |tion of the heap|
00090310  2e 00 00 00 44 41 54 41  24 01 00 00 4f 53 5f 48  |....DATA$...OS_H|
00090320  65 61 70 20 35 0a 23 50  61 72 65 6e 74 20 4f 53  |eap 5.#Parent OS|
00090330  5f 48 65 61 70 0a 23 57  72 61 70 20 6f 66 66 0a  |_Heap.#Wrap off.|
00090340  3d 3e 09 52 30 20 3d 09  35 0a 09 52 31 20 3d 09  |=>.R0 =.5..R1 =.|
00090350  70 6f 69 6e 74 65 72 20  74 6f 20 68 65 61 70 0a  |pointer to heap.|
00090360  09 52 33 20 3d 09 73 69  7a 65 20 69 6e 63 72 65  |.R3 =.size incre|
00090370  61 73 65 2c 20 6f 72 20  2d 76 65 20 66 6f 72 20  |ase, or -ve for |
00090380  64 65 63 72 65 61 73 65  0a 3c 3d 09 52 33 20 3d  |decrease.<=.R3 =|
00090390  09 61 63 74 75 61 6c 20  63 68 61 6e 67 65 20 69  |.actual change i|
000903a0  6e 20 73 69 7a 65 0a 0a  23 57 72 61 70 0a 54 68  |n size..#Wrap.Th|
000903b0  69 73 20 53 57 49 20 6e  6f 74 69 66 69 65 73 20  |is SWI notifies |
000903c0  74 68 65 20 4f 53 20 6f  66 20 61 20 63 68 61 6e  |the OS of a chan|
000903d0  67 65 20 69 6e 20 74 68  65 20 73 69 7a 65 20 6f  |ge in the size o|
000903e0  66 20 74 68 65 20 68 65  61 70 2e 20 49 66 20 74  |f the heap. If t|
000903f0  68 65 20 68 65 61 70 20  63 61 6e 6e 6f 74 20 62  |he heap cannot b|
00090400  65 20 73 68 72 75 6e 6b  20 62 79 20 74 68 65 20  |e shrunk by the |
00090410  72 65 71 75 69 72 65 64  20 61 6d 6f 75 6e 74 20  |required amount |
00090420  61 6e 20 65 72 72 6f 72  20 77 69 6c 6c 20 62 65  |an error will be|
00090430  20 63 61 75 73 65 64 2e  44 41 54 41 ba 00 00 00  | caused.DATA....|
00090440  4f 53 5f 48 65 61 70 20  36 0a 23 50 61 72 65 6e  |OS_Heap 6.#Paren|
00090450  74 20 4f 53 5f 48 65 61  70 0a 23 57 72 61 70 20  |t OS_Heap.#Wrap |
00090460  6f 66 66 0a 3d 3e 09 52  30 20 3d 09 36 0a 09 52  |off.=>.R0 =.6..R|
00090470  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 68  |1 =.pointer to h|
00090480  65 61 70 0a 09 52 32 20  3d 09 70 6f 69 6e 74 65  |eap..R2 =.pointe|
00090490  72 20 74 6f 20 62 6c 6f  63 6b 0a 3c 3d 09 52 33  |r to block.<=.R3|
000904a0  20 3d 09 73 69 7a 65 20  6f 66 20 62 6c 6f 63 6b  | =.size of block|
000904b0  20 28 69 6e 63 6c 75 64  69 6e 67 20 68 65 61 64  | (including head|
000904c0  65 72 29 0a 0a 54 68 69  73 20 53 57 49 20 72 65  |er)..This SWI re|
000904d0  74 75 72 6e 73 20 74 68  65 20 73 69 7a 65 20 6f  |turns the size o|
000904e0  66 20 61 20 63 6c 61 69  6d 65 64 20 62 6c 6f 63  |f a claimed bloc|
000904f0  6b 2e 00 00 44 49 52 24  8c 02 00 00 8c 02 00 00  |k...DIR$........|
00090500  80 07 09 00 47 ff ff ff  5a 2a ad cd 05 01 00 00  |....G...Z*......|
00090510  13 00 00 00 00 00 00 00  44 79 6e 61 6d 69 63 41  |........DynamicA|
00090520  72 65 61 00 88 08 09 00  47 ff ff ff 96 a3 68 25  |rea.....G.....h%|
00090530  53 02 00 00 13 00 00 00  00 00 00 00 4c 69 6e 65  |S...........Line|
00090540  00 00 00 00 dc 0a 09 00  47 ff ff ff 10 2c ad cd  |........G....,..|
00090550  ef 00 00 00 13 00 00 00  00 00 00 00 4d 65 6d 4d  |............MemM|
00090560  61 70 49 6e 66 6f 00 00  cc 0b 09 00 48 fd ff ff  |apInfo......H...|
00090570  45 3e c0 26 54 01 00 00  13 00 00 00 00 00 00 00  |E>.&T...........|
00090580  4d 6f 64 65 56 61 72 69  61 62 6c 65 00 00 00 00  |ModeVariable....|
00090590  20 0d 09 00 47 ff ff ff  58 34 ad cd 67 00 00 00  | ...G...X4..g...|
000905a0  13 00 00 00 00 00 00 00  4d 6f 6e 6f 74 6f 6e 69  |........Monotoni|
000905b0  63 54 69 6d 65 00 00 00  88 0d 09 00 47 ff ff ff  |cTime.......G...|
000905c0  0d 3e ad cd c0 00 00 00  13 00 00 00 00 00 00 00  |.>..............|
000905d0  50 6f 69 6e 74 00 00 00  48 0e 09 00 47 ff ff ff  |Point...H...G...|
000905e0  8b 56 cb bc 4a 02 00 00  13 00 00 00 00 00 00 00  |.V..J...........|
000905f0  55 6e 73 69 67 6e 65 64  00 00 00 00 94 10 09 00  |Unsigned........|
00090600  47 ff ff ff 95 49 ad cd  c6 01 00 00 13 00 00 00  |G....I..........|
00090610  00 00 00 00 56 61 72 56  61 6c 00 00 5c 12 09 00  |....VarVal..\...|
00090620  47 ff ff ff b8 58 ad cd  64 07 00 00 13 00 00 00  |G....X..d.......|
00090630  00 00 00 00 53 79 73 49  6e 66 6f 00 c0 19 09 00  |....SysInfo.....|
00090640  47 ff ff ff 69 62 ad cd  7c 05 00 00 13 00 00 00  |G...ib..|.......|
00090650  00 00 00 00 41 72 67 73  00 00 00 00 3c 1f 09 00  |....Args....<...|
00090660  48 ff ff ff be 40 c0 26  28 0f 00 00 13 00 00 00  |H....@.&(.......|
00090670  00 00 00 00 56 64 75 56  61 72 69 61 62 6c 65 73  |....VduVariables|
00090680  00 00 00 00 64 2e 09 00  47 ff ff ff ce c5 bd cd  |....d...G.......|
00090690  0e 01 00 00 13 00 00 00  00 00 00 00 4d 65 6d 4d  |............MemM|
000906a0  61 70 45 6e 74 72 69 65  73 00 00 00 74 2f 09 00  |apEntries...t/..|
000906b0  46 ff ff ff f7 2b 1e a2  03 01 00 00 13 00 00 00  |F....+..........|
000906c0  00 00 00 00 52 41 4d 46  73 4c 69 6d 69 74 73 00  |....RAMFsLimits.|
000906d0  78 30 09 00 48 ff ff ff  ab 90 0d 1e eb 01 00 00  |x0..H...........|
000906e0  13 00 00 00 00 00 00 00  43 00 00 00 64 32 09 00  |........C...d2..|
000906f0  46 ff ff ff 2b c3 64 f5  0c 01 00 00 13 00 00 00  |F...+.d.........|
00090700  00 00 00 00 44 65 66 61  75 6c 74 48 61 6e 64 6c  |....DefaultHandl|
00090710  65 72 00 00 70 33 09 00  48 ff ff ff 75 04 2d 1e  |er..p3..H...u.-.|
00090720  1c 03 00 00 13 00 00 00  00 00 00 00 45 73 63 61  |............Esca|
00090730  70 65 53 74 61 74 65 00  8c 36 09 00 47 ff ff ff  |peState..6..G...|
00090740  6b cd bd cd 5d 03 00 00  13 00 00 00 00 00 00 00  |k...]...........|
00090750  50 61 6c 65 74 74 65 00  ec 39 09 00 48 fd ff ff  |Palette..9..H...|
00090760  bd 3b c0 26 4d 04 00 00  13 00 00 00 00 00 00 00  |.;.&M...........|
00090770  4d 6f 64 65 56 61 72 69  61 62 6c 65 73 00 00 00  |ModeVariables...|
00090780  44 41 54 41 05 01 00 00  4f 53 5f 52 65 61 64 44  |DATA....OS_ReadD|
00090790  79 6e 61 6d 69 63 41 72  65 61 20 20 28 26 35 43  |ynamicArea  (&5C|
000907a0  29 0a 23 50 61 72 65 6e  74 20 4f 53 5f 0a 3d 3e  |).#Parent OS_.=>|
000907b0  09 52 30 20 3d 09 3c 61  72 65 61 3d 3e 4f 53 5f  |.R0 =.<area=>OS_|
000907c0  41 72 65 61 73 3e 20 74  6f 20 72 65 61 64 2c 20  |Areas> to read, |
000907d0  62 69 74 20 37 20 73 65  74 20 74 6f 20 72 65 61  |bit 7 set to rea|
000907e0  64 20 6d 61 78 69 6d 75  6d 20 73 69 7a 65 20 74  |d maximum size t|
000907f0  6f 20 52 32 0a 0a 3c 3d  09 52 30 20 3d 09 70 6f  |o R2..<=.R0 =.po|
00090800  69 6e 74 65 72 20 74 6f  20 73 74 61 72 74 20 61  |inter to start a|
00090810  64 64 72 65 73 73 20 6f  66 20 61 72 65 61 0a 09  |ddress of area..|
00090820  52 31 20 3d 09 63 75 72  72 65 6e 74 20 6e 75 6d  |R1 =.current num|
00090830  62 65 72 20 6f 66 20 62  79 74 65 73 20 69 6e 20  |ber of bytes in |
00090840  61 72 65 61 0a 09 52 32  20 3d 09 6d 61 78 69 6d  |area..R2 =.maxim|
00090850  75 6d 20 73 69 7a 65 20  6f 66 20 61 72 65 61 0a  |um size of area.|
00090860  09 0a 54 68 69 73 20 53  57 49 20 72 65 61 64 73  |..This SWI reads|
00090870  20 74 68 65 20 73 69 7a  65 20 6f 66 20 61 6e 20  | the size of an |
00090880  61 72 65 61 2e 00 00 00  44 41 54 41 53 02 00 00  |area....DATAS...|
00090890  4f 53 5f 52 65 61 64 4c  69 6e 65 20 20 28 26 30  |OS_ReadLine  (&0|
000908a0  45 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 0a 3d  |E).#Parent OS_.=|
000908b0  3e 09 52 30 20 3d 09 62  75 66 66 65 72 20 2b 20  |>.R0 =.buffer + |
000908c0  3c 66 6c 61 67 73 3d 3e  2e 66 6c 61 67 73 3e 0a  |<flags=>.flags>.|
000908d0  09 52 31 20 3d 09 73 69  7a 65 20 6f 66 20 62 75  |.R1 =.size of bu|
000908e0  66 66 65 72 0a 09 52 32  20 3d 09 6c 6f 77 65 73  |ffer..R2 =.lowes|
000908f0  74 20 63 68 61 72 20 61  6c 6c 6f 77 65 64 0a 09  |t char allowed..|
00090900  52 33 20 3d 09 68 69 67  68 65 73 74 20 63 68 61  |R3 =.highest cha|
00090910  72 20 61 6c 6c 6f 77 65  64 0a 09 52 34 20 3d 09  |r allowed..R4 =.|
00090920  63 68 61 72 61 63 74 65  72 20 74 6f 20 6f 75 74  |character to out|
00090930  70 75 74 20 28 69 66 20  62 69 74 20 33 30 20 73  |put (if bit 30 s|
00090940  65 74 29 0a 0a 3c 3d 09  52 30 20 63 6f 72 72 75  |et)..<=.R0 corru|
00090950  70 74 65 64 0a 09 52 31  20 3d 09 63 68 61 72 73  |pted..R1 =.chars|
00090960  20 72 65 61 64 2c 20 65  78 63 6c 20 52 65 74 75  | read, excl Retu|
00090970  72 6e 0a 09 52 32 20 63  6f 72 72 75 70 74 65 64  |rn..R2 corrupted|
00090980  0a 09 52 33 20 63 6f 72  72 75 70 74 65 64 0a 09  |..R3 corrupted..|
00090990  43 20 73 65 74 20 69 66  20 45 73 63 61 70 65 0a  |C set if Escape.|
000909a0  0a 54 68 69 73 20 53 57  49 20 72 65 61 64 73 20  |.This SWI reads |
000909b0  61 20 6c 69 6e 65 20 66  72 6f 6d 20 74 68 65 20  |a line from the |
000909c0  63 75 72 72 65 6e 74 20  69 6e 70 75 74 20 73 74  |current input st|
000909d0  72 65 61 6d 2e 20 49 6e  70 75 74 20 69 73 20 74  |ream. Input is t|
000909e0  65 72 6d 69 6e 61 74 65  64 20 77 69 74 68 20 52  |erminated with R|
000909f0  65 74 75 72 6e 2c 20 43  74 72 6c 2d 4a 20 6f 72  |eturn, Ctrl-J or|
00090a00  20 45 73 63 61 70 65 2e  20 44 65 6c 65 74 65 20  | Escape. Delete |
00090a10  61 6e 64 20 42 61 63 6b  73 70 61 63 65 20 64 65  |and Backspace de|
00090a20  6c 65 74 65 73 20 6c 61  73 74 20 63 68 61 72 20  |letes last char |
00090a30  65 6e 74 65 72 65 64 2e  20 43 74 72 6c 2d 55 20  |entered. Ctrl-U |
00090a40  65 6d 70 74 69 65 73 20  62 75 66 66 65 72 2e 0a  |empties buffer..|
00090a50  23 53 75 62 70 61 67 65  20 66 6c 61 67 73 0a 4f  |#Subpage flags.O|
00090a60  53 5f 52 65 61 64 4c 69  6e 65 20 66 6c 61 67 73  |S_ReadLine flags|
00090a70  0a 42 69 74 09 4d 65 61  6e 69 6e 67 20 69 66 20  |.Bit.Meaning if |
00090a80  73 65 74 0a 23 4c 69 6e  65 0a 33 30 09 45 63 68  |set.#Line.30.Ech|
00090a90  6f 20 63 68 61 72 61 63  74 65 72 20 69 6e 20 52  |o character in R|
00090aa0  34 20 28 70 61 73 73 77  6f 72 64 20 73 74 79 6c  |4 (password styl|
00090ab0  65 29 0a 33 31 09 45 63  68 6f 20 6f 6e 6c 79 20  |e).31.Echo only |
00090ac0  63 68 61 72 61 63 74 65  72 73 20 65 6e 74 65 72  |characters enter|
00090ad0  69 6e 67 20 62 75 66 66  65 72 0a 00 44 41 54 41  |ing buffer..DATA|
00090ae0  ef 00 00 00 4f 53 5f 52  65 61 64 4d 65 6d 4d 61  |....OS_ReadMemMa|
00090af0  70 49 6e 66 6f 20 20 28  26 35 31 29 0a 23 50 61  |pInfo  (&51).#Pa|
00090b00  72 65 6e 74 20 4f 53 5f  0a 3c 3d 09 52 30 20 3d  |rent OS_.<=.R0 =|
00090b10  09 70 61 67 65 20 73 69  7a 65 20 69 6e 20 62 79  |.page size in by|
00090b20  74 65 73 0a 09 52 31 20  3d 09 6e 75 6d 62 65 72  |tes..R1 =.number|
00090b30  20 6f 66 20 70 61 67 65  73 0a 0a 54 68 69 73 20  | of pages..This |
00090b40  63 61 6c 6c 20 72 65 61  64 73 20 74 68 65 20 70  |call reads the p|
00090b50  61 67 65 20 73 69 7a 65  20 75 73 65 64 20 62 79  |age size used by|
00090b60  20 4d 45 4d 43 20 61 6e  64 20 74 68 65 20 6e 75  | MEMC and the nu|
00090b70  6d 62 65 72 20 6f 66 20  70 61 67 65 73 20 69 6e  |mber of pages in|
00090b80  20 75 73 65 2e 20 56 61  6c 69 64 20 70 61 67 65  | use. Valid page|
00090b90  20 6e 75 6d 62 65 72 73  20 61 72 65 20 30 20 74  | numbers are 0 t|
00090ba0  6f 20 52 31 2d 31 2c 20  61 6e 64 20 74 68 65 20  |o R1-1, and the |
00090bb0  74 6f 74 61 6c 20 6d 65  6d 6f 72 79 20 73 69 7a  |total memory siz|
00090bc0  65 20 69 73 20 52 30 2a  52 31 2e 00 44 41 54 41  |e is R0*R1..DATA|
00090bd0  54 01 00 00 4f 53 5f 52  65 61 64 4d 6f 64 65 56  |T...OS_ReadModeV|
00090be0  61 72 69 61 62 6c 65 20  20 28 26 33 35 29 0a 23  |ariable  (&35).#|
00090bf0  50 61 72 65 6e 74 20 4f  53 5f 0a 3d 3e 09 52 30  |Parent OS_.=>.R0|
00090c00  20 3d 09 73 63 72 65 65  6e 20 6d 6f 64 65 2c 20  | =.screen mode, |
00090c10  6f 72 20 2d 31 20 66 6f  72 20 63 75 72 72 65 6e  |or -1 for curren|
00090c20  74 0a 09 52 31 20 3d 09  3c 76 61 72 69 61 62 6c  |t..R1 =.<variabl|
00090c30  65 20 6e 75 6d 62 65 72  3d 3e 4f 53 5f 52 65 61  |e number=>OS_Rea|
00090c40  64 4d 6f 64 65 56 61 72  69 61 62 6c 65 73 3e 0a  |dModeVariables>.|
00090c50  0a 3c 3d 09 52 32 20 3d  09 76 61 6c 75 65 20 6f  |.<=.R2 =.value o|
00090c60  66 20 76 61 72 69 61 62  6c 65 0a 09 43 20 69 73  |f variable..C is|
00090c70  20 73 65 74 20 69 66 20  76 61 72 69 61 62 6c 65  | set if variable|
00090c80  20 6f 72 20 6d 6f 64 65  20 77 65 72 65 20 69 6e  | or mode were in|
00090c90  76 61 6c 69 64 0a 0a 54  68 69 73 20 53 57 49 20  |valid..This SWI |
00090ca0  61 6c 6c 6f 77 73 20 79  6f 75 20 74 6f 20 72 65  |allows you to re|
00090cb0  61 64 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 61  |ad information a|
00090cc0  62 6f 75 74 20 61 20 70  61 72 74 69 63 75 6c 61  |bout a particula|
00090cd0  72 20 6d 6f 64 65 20 77  69 74 68 6f 75 74 20 68  |r mode without h|
00090ce0  61 76 69 6e 67 20 74 6f  20 63 68 61 6e 67 65 20  |aving to change |
00090cf0  69 6e 74 6f 20 74 68 61  74 20 6d 6f 64 65 2e 20  |into that mode. |
00090d00  53 65 65 20 61 6c 73 6f  20 3c 4f 53 5f 52 65 61  |See also <OS_Rea|
00090d10  64 56 64 75 56 61 72 69  61 62 6c 65 73 3e 2e 0a  |dVduVariables>..|
00090d20  44 41 54 41 67 00 00 00  4f 53 5f 52 65 61 64 4d  |DATAg...OS_ReadM|
00090d30  6f 6e 6f 74 6f 6e 69 63  54 69 6d 65 20 20 28 26  |onotonicTime  (&|
00090d40  34 32 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |42).#Parent OS_.|
00090d50  3c 3d 09 52 30 20 3d 09  4e 75 6d 62 65 72 20 6f  |<=.R0 =.Number o|
00090d60  66 20 63 65 6e 74 69 2d  63 65 63 6f 6e 64 73 20  |f centi-ceconds |
00090d70  73 69 6e 63 65 20 6c 61  73 74 20 68 61 72 64 20  |since last hard |
00090d80  72 65 73 65 74 2e 0a 00  44 41 54 41 c0 00 00 00  |reset...DATA....|
00090d90  4f 53 5f 52 65 61 64 50  6f 69 6e 74 20 20 28 26  |OS_ReadPoint  (&|
00090da0  33 32 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |32).#Parent OS_.|
00090db0  3d 3e 09 52 30 20 3d 09  58 20 63 6f 6f 72 64 0a  |=>.R0 =.X coord.|
00090dc0  09 52 31 20 3d 09 59 20  63 6f 6f 72 64 0a 0a 3c  |.R1 =.Y coord..<|
00090dd0  3d 09 52 32 20 3d 09 43  6f 6c 6f 75 72 0a 09 52  |=.R2 =.Colour..R|
00090de0  33 20 3d 09 54 69 6e 74  0a 09 52 34 20 3d 09 2d  |3 =.Tint..R4 =.-|
00090df0  31 20 69 66 20 70 6f 69  6e 74 20 77 61 73 20 6f  |1 if point was o|
00090e00  66 66 20 73 63 72 65 65  6e 2c 20 30 20 6f 74 68  |ff screen, 0 oth|
00090e10  65 72 77 69 73 65 0a 0a  54 68 69 73 20 53 57 49  |erwise..This SWI|
00090e20  20 72 65 74 75 72 6e 73  20 74 68 65 20 63 6f 6c  | returns the col|
00090e30  6f 75 72 20 61 6e 64 20  74 69 6e 74 20 6f 66 20  |our and tint of |
00090e40  61 20 70 6f 69 6e 74 2e  44 41 54 41 4a 02 00 00  |a point.DATAJ...|
00090e50  4f 53 5f 52 65 61 64 55  6e 73 69 67 6e 65 64 20  |OS_ReadUnsigned |
00090e60  20 28 26 32 31 29 0a 23  50 61 72 65 6e 74 20 4f  | (&21).#Parent O|
00090e70  53 5f 0a 3d 3e 09 52 30  20 3d 09 62 61 73 65 20  |S_.=>.R0 =.base |
00090e80  28 32 2d 33 36 20 44 65  66 61 75 6c 74 20 31 30  |(2-36 Default 10|
00090e90  29 20 2b 20 3c 66 6c 61  67 73 3d 3e 2e 66 6c 61  |) + <flags=>.fla|
00090ea0  67 73 3e 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |gs>..R1 =.pointe|
00090eb0  72 20 74 6f 20 73 74 72  69 6e 67 20 74 6f 20 63  |r to string to c|
00090ec0  6f 6e 76 65 72 74 0a 09  52 32 20 3d 09 6d 61 78  |onvert..R2 =.max|
00090ed0  69 6d 75 6d 20 76 61 6c  75 65 2c 20 69 66 20 62  |imum value, if b|
00090ee0  69 74 20 32 39 20 73 65  74 0a 0a 3c 3d 09 52 31  |it 29 set..<=.R1|
00090ef0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 74 65  | =.pointer to te|
00090f00  72 6d 69 6e 61 74 6f 72  20 63 68 61 72 0a 09 52  |rminator char..R|
00090f10  32 20 3d 09 76 61 6c 75  65 20 63 6f 6e 76 65 72  |2 =.value conver|
00090f20  74 65 64 0a 0a 54 68 69  73 20 53 57 49 20 63 6f  |ted..This SWI co|
00090f30  6e 76 65 72 74 73 20 61  20 73 74 72 69 6e 67 20  |nverts a string |
00090f40  69 6e 74 6f 20 61 6e 20  69 6e 74 65 67 65 72 2e  |into an integer.|
00090f50  20 49 66 20 73 74 72 69  6e 67 20 73 74 61 72 74  | If string start|
00090f60  73 20 77 69 74 68 20 26  2c 20 62 61 73 65 20 31  |s with &, base 1|
00090f70  36 20 69 73 20 61 73 73  75 6d 65 64 2e 20 49 66  |6 is assumed. If|
00090f80  20 73 74 72 69 6e 67 20  73 74 61 72 74 73 20 77  | string starts w|
00090f90  69 74 68 20 62 61 73 65  5f 2c 20 74 68 69 73 20  |ith base_, this |
00090fa0  62 61 73 65 20 69 73 20  75 73 65 64 2e 20 49 66  |base is used. If|
00090fb0  20 6e 6f 20 62 61 73 65  20 69 73 20 67 69 76 65  | no base is give|
00090fc0  6e 20 69 6e 20 73 74 72  69 6e 67 2c 20 74 68 65  |n in string, the|
00090fd0  20 62 61 73 65 20 69 6e  20 52 30 20 69 73 20 75  | base in R0 is u|
00090fe0  73 65 64 2c 20 6f 72 20  31 30 20 69 66 20 74 68  |sed, or 10 if th|
00090ff0  61 74 20 62 61 73 65 20  69 73 20 69 6e 76 61 6c  |at base is inval|
00091000  69 64 2e 0a 23 0a 23 53  75 62 70 61 67 65 20 66  |id..#.#Subpage f|
00091010  6c 61 67 73 0a 46 6c 61  67 20 62 69 74 73 20 69  |lags.Flag bits i|
00091020  6e 20 52 30 0a 23 77 72  61 70 20 6f 66 66 0a 20  |n R0.#wrap off. |
00091030  33 31 09 4d 75 73 74 20  74 65 72 6d 69 6e 61 74  |31.Must terminat|
00091040  65 20 77 69 74 68 20 63  74 72 6c 2c 73 70 61 63  |e with ctrl,spac|
00091050  65 0a 20 33 30 09 4d 75  73 74 20 62 65 20 69 6e  |e. 30.Must be in|
00091060  20 74 68 65 20 72 61 6e  67 65 20 5b 30 2c 32 35  | the range [0,25|
00091070  35 5d 0a 20 32 39 09 4d  75 73 74 20 62 65 20 69  |5]. 29.Must be i|
00091080  6e 20 74 68 65 20 72 61  6e 67 65 20 5b 30 2c 52  |n the range [0,R|
00091090  32 5d 00 00 44 41 54 41  c6 01 00 00 4f 53 5f 52  |2]..DATA....OS_R|
000910a0  65 61 64 56 61 72 56 61  6c 20 20 28 26 32 33 29  |eadVarVal  (&23)|
000910b0  0a 23 50 61 72 65 6e 74  20 4f 53 5f 0a 3d 3e 09  |.#Parent OS_.=>.|
000910c0  52 30 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R0 =.pointer to |
000910d0  77 69 6c 64 63 61 72 64  65 64 20 6e 61 6d 65 0a  |wildcarded name.|
000910e0  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
000910f0  20 62 75 66 66 65 72 0a  09 52 32 20 3d 09 6c 65  | buffer..R2 =.le|
00091100  6e 67 74 68 20 6f 66 20  62 75 66 66 65 72 0a 09  |ngth of buffer..|
00091110  52 33 20 3d 09 6e 61 6d  65 20 70 6f 69 6e 74 65  |R3 =.name pointe|
00091120  72 2c 20 6f 72 20 30 20  66 6f 72 20 31 73 74 20  |r, or 0 for 1st |
00091130  63 61 6c 6c 0a 09 52 34  20 3d 09 3c 56 61 72 69  |call..R4 =.<Vari|
00091140  61 62 6c 65 20 74 79 70  65 3d 3e 4f 53 5f 76 61  |able type=>OS_va|
00091150  72 74 79 70 65 73 3e 0a  09 0a 3c 3d 09 52 32 20  |rtypes>...<=.R2 |
00091160  3d 09 62 79 74 65 73 20  72 65 61 64 0a 09 52 33  |=.bytes read..R3|
00091170  20 3d 09 6e 65 77 20 6e  61 6d 65 20 70 6f 69 6e  | =.new name poin|
00091180  74 65 72 0a 09 52 34 20  3d 09 76 61 72 69 61 62  |ter..R4 =.variab|
00091190  6c 65 20 74 79 70 65 0a  0a 54 68 69 73 20 53 57  |le type..This SW|
000911a0  49 20 72 65 74 75 72 6e  73 20 74 79 70 65 20 61  |I returns type a|
000911b0  6e 64 20 76 61 6c 75 65  20 6f 66 20 61 20 76 61  |nd value of a va|
000911c0  72 69 61 62 6c 65 2e 20  54 6f 20 6a 75 73 74 20  |riable. To just |
000911d0  63 68 65 63 6b 20 69 66  20 69 74 20 65 78 69 73  |check if it exis|
000911e0  74 73 2c 20 63 61 6c 6c  20 77 69 74 68 20 52 32  |ts, call with R2|
000911f0  5c 3c 30 2e 20 49 66 20  69 74 27 73 20 73 74 69  |\<0. If it's sti|
00091200  6c 6c 20 5c 3c 30 20 6f  6e 20 65 78 69 74 2c 20  |ll \<0 on exit, |
00091210  76 61 72 69 61 62 6c 65  20 65 78 69 73 74 73 2e  |variable exists.|
00091220  20 41 6e 20 65 72 72 6f  72 20 77 69 6c 6c 20 62  | An error will b|
00091230  65 20 72 65 74 75 72 6e  65 64 20 69 66 20 74 68  |e returned if th|
00091240  65 20 76 61 72 69 61 62  6c 65 20 64 6f 65 73 20  |e variable does |
00091250  6e 6f 74 20 65 78 69 73  74 2e 00 00 44 41 54 41  |not exist...DATA|
00091260  64 07 00 00 4f 53 5f 52  65 61 64 53 79 73 49 6e  |d...OS_ReadSysIn|
00091270  66 6f 20 20 28 26 35 38  29 0a 23 50 61 72 65 6e  |fo  (&58).#Paren|
00091280  74 20 4f 53 5f 0a 3d 3e  20 52 30 20 3d 09 76 61  |t OS_.=> R0 =.va|
00091290  72 69 61 62 6c 65 20 3a  0a 09 20 20 30 09 3c 53  |riable :..  0.<S|
000912a0  63 72 65 65 6e 20 73 69  7a 65 3d 3e 2e 30 3e 0a  |creen size=>.0>.|
000912b0  09 20 20 31 09 3c 4d 6f  64 65 3d 3e 2e 31 3e 0a  |.  1.<Mode=>.1>.|
000912c0  09 20 20 32 09 3c 4d 61  63 68 69 6e 65 20 49 64  |.  2.<Machine Id|
000912d0  3d 3e 2e 32 3e 0a 09 20  20 33 09 3c 38 32 43 37  |=>.2>..  3.<82C7|
000912e0  31 78 20 66 65 61 74 75  72 65 73 3d 3e 2e 33 3e  |1x features=>.3>|
000912f0  0a 0a 54 68 65 73 65 20  63 61 6c 6c 73 20 72 65  |..These calls re|
00091300  61 64 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 61  |ad information a|
00091310  62 6f 75 74 20 74 68 65  20 63 75 72 72 65 6e 74  |bout the current|
00091320  20 73 79 73 74 65 6d 2e  0a 23 0a 23 53 75 62 70  | system..#.#Subp|
00091330  61 67 65 20 30 0a 4f 53  5f 52 65 61 64 53 79 73  |age 0.OS_ReadSys|
00091340  49 6e 66 6f 20 30 0a 3d  3e 09 52 30 20 3d 09 30  |Info 0.=>.R0 =.0|
00091350  0a 3c 3d 09 52 30 20 3d  09 73 63 72 65 65 6e 20  |.<=.R0 =.screen |
00091360  73 69 7a 65 0a 0a 54 68  69 73 20 63 61 6c 6c 20  |size..This call |
00091370  72 65 61 64 73 20 74 68  65 20 73 69 7a 65 20 6f  |reads the size o|
00091380  66 20 73 63 72 65 65 6e  20 6d 65 6d 6f 72 79 2e  |f screen memory.|
00091390  0a 23 0a 23 53 75 62 70  61 67 65 20 31 0a 4f 53  |.#.#Subpage 1.OS|
000913a0  5f 52 65 61 64 53 79 73  49 6e 66 6f 20 31 0a 3d  |_ReadSysInfo 1.=|
000913b0  3e 09 52 30 20 3d 09 31  0a 3c 3d 09 52 30 20 3d  |>.R0 =.1.<=.R0 =|
000913c0  09 6d 6f 64 65 0a 09 52  31 20 3d 09 6d 6f 6e 69  |.mode..R1 =.moni|
000913d0  74 6f 72 20 74 79 70 65  0a 09 52 32 20 3d 09 73  |tor type..R2 =.s|
000913e0  79 6e 63 0a 0a 54 68 69  73 20 63 61 6c 6c 20 72  |ync..This call r|
000913f0  65 61 64 73 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  |eads information|
00091400  20 61 62 6f 75 74 20 74  68 65 20 63 75 72 72 65  | about the curre|
00091410  6e 74 20 73 63 72 65 65  6e 2e 0a 23 0a 23 53 75  |nt screen..#.#Su|
00091420  62 70 61 67 65 20 32 0a  4f 53 5f 52 65 61 64 53  |bpage 2.OS_ReadS|
00091430  79 73 49 6e 66 6f 20 32  0a 3d 3e 09 52 30 20 3d  |ysInfo 2.=>.R0 =|
00091440  09 32 0a 3c 3d 09 52 30  20 3d 09 49 4f 45 42 20  |.2.<=.R0 =.IOEB |
00091450  41 53 49 43 20 70 72 65  73 65 6e 63 65 20 66 6c  |ASIC presence fl|
00091460  61 67 0a 09 52 31 20 3d  09 38 32 43 37 31 30 20  |ag..R1 =.82C710 |
00091470  70 72 65 73 65 6e 63 65  20 66 6c 61 67 0a 09 52  |presence flag..R|
00091480  32 20 3d 09 4c 43 44 20  41 53 49 43 20 70 72 65  |2 =.LCD ASIC pre|
00091490  73 65 6e 63 65 20 66 6c  61 67 0a 09 52 33 20 3d  |sence flag..R3 =|
000914a0  09 6c 6f 77 20 68 61 6c  66 20 6f 66 20 49 64 0a  |.low half of Id.|
000914b0  09 52 34 20 3d 09 68 69  67 68 20 68 61 6c 66 20  |.R4 =.high half |
000914c0  6f 66 20 49 64 0a 0a 54  68 69 73 20 63 61 6c 6c  |of Id..This call|
000914d0  20 63 68 65 63 6b 73 20  66 6f 72 20 74 68 65 20  | checks for the |
000914e0  70 72 65 73 65 6e 63 65  20 6f 66 20 76 61 72 69  |presence of vari|
000914f0  6f 75 73 20 63 68 69 70  73 2c 20 72 65 74 75 72  |ous chips, retur|
00091500  6e 69 6e 67 20 66 6c 61  67 73 2e 20 49 74 20 61  |ning flags. It a|
00091510  6c 73 6f 20 72 65 61 64  73 20 74 68 65 20 75 6e  |lso reads the un|
00091520  69 71 75 65 20 6d 61 63  68 69 6e 65 20 49 44 20  |ique machine ID |
00091530  69 66 20 61 20 73 75 69  74 61 62 6c 65 20 63 68  |if a suitable ch|
00091540  69 70 20 69 73 20 66 69  74 74 65 64 20 74 6f 20  |ip is fitted to |
00091550  74 68 65 20 63 6f 6d 70  75 74 65 72 3b 20 69 66  |the computer; if|
00091560  20 6e 6f 6e 65 20 69 73  2c 20 61 20 49 44 20 6f  | none is, a ID o|
00091570  66 20 7a 65 72 6f 20 69  73 20 72 65 74 75 72 6e  |f zero is return|
00091580  65 64 2e 0a 23 0a 23 53  75 62 70 61 67 65 20 33  |ed..#.#Subpage 3|
00091590  0a 4f 53 5f 52 65 61 64  53 79 73 49 6e 66 6f 20  |.OS_ReadSysInfo |
000915a0  33 0a 3d 3e 09 52 30 20  3d 09 33 0a 3c 3d 09 52  |3.=>.R0 =.3.<=.R|
000915b0  30 20 3d 09 3c 38 32 43  37 31 30 2f 38 32 43 37  |0 =.<82C710/82C7|
000915c0  31 31 20 62 61 73 69 63  20 66 65 61 74 75 72 65  |11 basic feature|
000915d0  73 3d 3e 2e 6d 61 69 6e  3e 0a 09 52 31 20 3d 09  |s=>.main>..R1 =.|
000915e0  38 32 43 37 31 30 2f 38  32 43 37 31 31 20 65 78  |82C710/82C711 ex|
000915f0  74 72 61 20 66 65 61 74  75 72 65 73 20 6d 61 73  |tra features mas|
00091600  6b 20 28 72 65 73 65 72  76 65 64 20 66 6f 72 20  |k (reserved for |
00091610  75 70 77 61 72 64 73 20  63 6f 6d 70 61 74 69 62  |upwards compatib|
00091620  6c 65 20 61 64 64 69 74  69 6f 6e 61 6c 20 66 75  |le additional fu|
00091630  6e 63 74 69 6f 6e 61 6c  69 74 79 29 0a 09 52 32  |nctionality)..R2|
00091640  20 3d 09 65 78 74 65 6e  64 65 64 20 66 65 61 74  | =.extended feat|
00091650  75 72 65 73 20 31 0a 09  52 33 20 3d 09 65 78 74  |ures 1..R3 =.ext|
00091660  65 6e 64 65 64 20 66 65  61 74 75 72 65 73 20 32  |ended features 2|
00091670  0a 09 52 34 20 3d 09 65  78 74 65 6e 64 65 64 20  |..R4 =.extended |
00091680  66 65 61 74 75 72 65 73  20 33 0a 0a 54 68 69 73  |features 3..This|
00091690  20 63 61 6c 6c 20 72 65  61 64 73 20 66 65 61 74  | call reads feat|
000916a0  75 72 65 73 20 61 76 61  69 6c 61 62 6c 65 20 69  |ures available i|
000916b0  6e 20 74 68 65 20 38 32  43 37 31 78 20 63 68 69  |n the 82C71x chi|
000916c0  70 2e 0a 23 53 75 62 70  61 67 65 20 6d 61 69 6e  |p..#Subpage main|
000916d0  0a 38 32 43 37 31 30 2f  38 32 43 37 31 31 20 62  |.82C710/82C711 b|
000916e0  61 73 69 63 20 66 65 61  74 75 72 65 73 20 6d 61  |asic features ma|
000916f0  73 6b 0a 54 68 65 20 38  32 43 37 31 30 20 63 68  |sk.The 82C710 ch|
00091700  69 70 20 66 61 6d 69 6c  79 20 61 72 65 20 63 6f  |ip family are co|
00091710  6d 70 6f 73 65 64 20 6f  66 20 73 65 76 65 72 61  |mposed of severa|
00091720  6c 20 73 75 62 20 75 6e  69 74 73 2e 20 46 75 74  |l sub units. Fut|
00091730  75 72 65 20 63 68 69 70  73 20 69 6e 20 74 68 65  |ure chips in the|
00091740  20 66 61 6d 69 6c 79 20  6d 61 79 20 68 61 76 65  | family may have|
00091750  20 73 6f 6d 65 20 73 75  62 20 75 6e 69 74 73 20  | some sub units |
00091760  77 68 69 63 68 20 61 72  65 20 69 6e 63 6f 6d 70  |which are incomp|
00091770  61 74 69 62 6c 65 20 77  69 74 68 20 65 61 72 6c  |atible with earl|
00091780  69 65 72 20 76 65 72 73  69 6f 6e 73 2c 20 77 68  |ier versions, wh|
00091790  69 6c 65 20 6c 65 61 76  69 6e 67 20 74 68 65 20  |ile leaving the |
000917a0  66 75 6e 63 74 69 6f 6e  61 6c 69 74 79 20 6f 66  |functionality of|
000917b0  20 6f 74 68 65 72 20 73  75 62 20 75 6e 69 74 73  | other sub units|
000917c0  20 75 6e 63 68 61 6e 67  65 64 2e 20 54 68 69 73  | unchanged. This|
000917d0  20 63 61 6c 6c 20 72 65  74 75 72 6e 73 20 61 20  | call returns a |
000917e0  66 65 61 74 75 72 65 20  6d 61 73 6b 2c 20 73 75  |feature mask, su|
000917f0  62 20 66 69 65 6c 64 73  20 77 69 74 68 69 6e 20  |b fields within |
00091800  77 68 69 63 68 20 73 68  6f 77 20 74 68 65 20 27  |which show the '|
00091810  63 6f 6d 70 61 74 69 62  69 6c 69 74 79 20 6c 65  |compatibility le|
00091820  76 65 6c 27 20 6f 66 20  65 61 63 68 20 73 75 62  |vel' of each sub|
00091830  20 75 6e 69 74 2e 20 44  69 66 66 65 72 69 6e 67  | unit. Differing|
00091840  20 76 61 6c 75 65 73 20  6f 66 20 61 20 73 75 62  | values of a sub|
00091850  20 66 69 65 6c 64 20 69  6e 64 69 63 61 74 65 20  | field indicate |
00091860  69 6e 63 6f 6d 70 61 74  69 62 6c 65 20 76 65 72  |incompatible ver|
00091870  73 69 6f 6e 73 20 6f 66  20 74 68 65 20 63 6f 72  |sions of the cor|
00091880  72 65 73 70 6f 6e 64 69  6e 67 20 73 75 62 20 75  |responding sub u|
00091890  6e 69 74 2e 20 41 20 73  75 62 20 66 69 65 6c 64  |nit. A sub field|
000918a0  20 6f 66 20 7a 65 72 6f  20 69 6e 64 69 63 61 74  | of zero indicat|
000918b0  65 73 20 74 68 61 74 20  74 68 65 20 73 75 62 20  |es that the sub |
000918c0  75 6e 69 74 20 69 73 20  6e 6f 74 20 70 72 65 73  |unit is not pres|
000918d0  65 6e 74 2e 0a 0a 54 68  65 20 76 61 6c 75 65 73  |ent...The values|
000918e0  20 61 72 65 3a 0a 42 69  74 73 09 53 75 62 20 75  | are:.Bits.Sub u|
000918f0  6e 69 74 09 09 37 31 30  09 37 31 31 0a 23 4c 69  |nit..710.711.#Li|
00091900  6e 65 0a 30 2d 33 09 49  44 45 20 68 61 72 64 20  |ne.0-3.IDE hard |
00091910  64 69 73 63 20 69 6e 74  65 72 66 61 63 65 09 31  |disc interface.1|
00091920  09 31 0a 34 2d 37 09 66  6c 6f 70 70 79 20 64 69  |.1.4-7.floppy di|
00091930  73 63 20 69 6e 74 65 72  66 61 63 65 09 31 09 31  |sc interface.1.1|
00091940  0a 38 2d 31 31 09 70 61  72 61 6c 6c 65 6c 20 70  |.8-11.parallel p|
00091950  6f 72 74 09 09 31 09 31  0a 31 32 2d 31 35 09 31  |ort..1.1.12-15.1|
00091960  73 74 20 73 65 72 69 61  6c 20 70 6f 72 74 09 09  |st serial port..|
00091970  31 09 31 0a 31 36 2d 31  39 09 32 6e 64 20 73 65  |1.1.16-19.2nd se|
00091980  72 69 61 6c 20 70 6f 72  74 09 09 30 09 31 0a 32  |rial port..0.1.2|
00091990  30 2d 32 33 09 63 68 69  70 20 63 6f 6e 66 69 67  |0-23.chip config|
000919a0  75 72 61 74 69 6f 6e 09  31 09 32 0a 32 34 2d 33  |uration.1.2.24-3|
000919b0  31 09 72 65 73 65 72 76  65 64 09 09 30 09 30 0a  |1.reserved..0.0.|
000919c0  44 41 54 41 7c 05 00 00  4f 53 5f 52 65 61 64 41  |DATA|...OS_ReadA|
000919d0  72 67 73 20 20 28 26 34  39 29 0a 23 50 61 72 65  |rgs  (&49).#Pare|
000919e0  6e 74 20 4f 53 5f 0a 3d  3e 09 52 30 20 3d 09 70  |nt OS_.=>.R0 =.p|
000919f0  6f 69 6e 74 65 72 20 74  6f 20 3c 73 79 6e 74 61  |ointer to <synta|
00091a00  78 20 73 74 72 69 6e 67  3d 3e 2e 73 79 6e 74 61  |x string=>.synta|
00091a10  78 3e 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |x>..R1 =.pointer|
00091a20  20 74 6f 20 3c 69 6e 70  75 74 20 73 74 72 69 6e  | to <input strin|
00091a30  67 3d 3e 2e 69 6e 70 75  74 3e 0a 09 52 32 20 3d  |g=>.input>..R2 =|
00091a40  09 70 6f 69 6e 74 65 72  20 74 6f 20 3c 6f 75 74  |.pointer to <out|
00091a50  70 75 74 20 62 75 66 66  65 72 3d 3e 2e 6f 75 74  |put buffer=>.out|
00091a60  70 75 74 3e 0a 09 52 33  20 3d 09 73 69 7a 65 20  |put>..R3 =.size |
00091a70  6f 66 20 6f 75 74 70 75  74 20 62 75 66 66 65 72  |of output buffer|
00091a80  0a 0a 3c 3d 09 52 33 20  3d 09 62 79 74 65 73 20  |..<=.R3 =.bytes |
00091a90  6c 65 66 74 20 69 6e 20  6f 75 74 70 75 74 20 62  |left in output b|
00091aa0  75 66 66 65 72 0a 0a 54  68 69 73 20 63 6f 6d 6d  |uffer..This comm|
00091ab0  61 6e 64 20 73 63 61 6e  73 20 74 68 65 20 69 6e  |and scans the in|
00091ac0  70 75 74 20 73 74 72 69  6e 67 2c 20 61 6e 64 20  |put string, and |
00091ad0  70 6c 61 63 65 73 20 76  61 6c 75 65 73 20 69 6e  |places values in|
00091ae0  20 6f 75 74 70 75 74 20  62 75 66 66 65 72 20 61  | output buffer a|
00091af0  63 63 6f 72 64 69 6e 67  20 74 6f 20 74 68 65 20  |ccording to the |
00091b00  73 79 6e 74 61 78 20 73  74 72 69 6e 67 2e 0a 23  |syntax string..#|
00091b10  0a 23 53 75 62 70 61 67  65 20 73 79 6e 74 61 78  |.#Subpage syntax|
00091b20  0a 53 79 6e 74 61 78 20  73 74 72 69 6e 67 0a 73  |.Syntax string.s|
00091b30  74 72 69 6e 67 09 09 3d  20 65 6c 65 6d 65 6e 74  |tring..= element|
00091b40  5c 7b 2c 20 65 6c 65 6d  65 6e 74 5c 7d 0a 65 6c  |\{, element\}.el|
00091b50  65 6d 65 6e 74 09 09 3d  20 5b 69 64 65 6e 74 69  |ement..= [identi|
00091b60  66 69 65 72 20 5b 3d 61  6c 69 61 73 5d 20 5d 20  |fier [=alias] ] |
00091b70  5c 7b 2f 71 75 61 6c 69  66 69 65 72 7d 0a 71 75  |\{/qualifier}.qu|
00091b80  61 6c 69 66 69 65 72 09  3d 0a 20 20 41 09 3a 09  |alifier.=.  A.:.|
00091b90  4b 65 79 77 6f 72 64 20  6d 75 73 74 20 61 6c 77  |Keyword must alw|
00091ba0  61 79 73 20 62 65 20 67  69 76 65 6e 20 76 61 6c  |ays be given val|
00091bb0  75 65 0a 20 20 4b 09 3a  09 49 64 65 6e 74 69 66  |ue.  K.:.Identif|
00091bc0  69 65 72 20 6d 75 73 74  20 62 65 20 75 73 65 64  |ier must be used|
00091bd0  0a 20 20 53 09 3a 09 53  77 69 74 63 68 0a 20 20  |.  S.:.Switch.  |
00091be0  45 09 3a 09 44 6f 20 3c  4f 53 5f 45 76 61 6c 75  |E.:.Do <OS_Evalu|
00091bf0  61 74 65 45 78 70 72 65  73 73 69 6f 6e 3e 20 6f  |ateExpression> o|
00091c00  6e 20 76 61 6c 75 65 0a  20 20 47 09 3a 09 44 6f  |n value.  G.:.Do|
00091c10  20 3c 4f 53 5f 47 53 54  72 61 6e 73 3e 20 6f 6e  | <OS_GSTrans> on|
00091c20  20 76 61 6c 75 65 0a 0a  4e 6f 74 65 3a 20 41 6e  | value..Note: An|
00091c30  20 65 6c 65 6d 65 6e 74  20 64 6f 65 73 6e 27 74  | element doesn't|
00091c40  20 68 61 76 65 20 74 6f  20 68 61 76 65 20 61 20  | have to have a |
00091c50  6e 61 6d 65 2e 20 22 2c  22 20 69 73 20 61 20 70  |name. "," is a p|
00091c60  65 72 66 65 63 74 6c 79  20 6c 65 67 61 6c 20 73  |erfectly legal s|
00091c70  79 6e 74 61 78 20 73 74  72 69 6e 67 2e 0a 23 0a  |yntax string..#.|
00091c80  23 53 75 62 70 61 67 65  20 69 6e 70 75 74 0a 49  |#Subpage input.I|
00091c90  6e 70 75 74 2d 73 74 72  69 6e 67 0a 65 78 61 6d  |nput-string.exam|
00091ca0  70 6c 65 3a 0a 20 20 53  79 6e 74 61 78 0a 20 20  |ple:.  Syntax.  |
00091cb0  20 20 22 6e 75 6d 62 65  72 3d 74 69 6d 65 73 2f  |  "number=times/|
00091cc0  65 2c 66 69 6c 65 2f 6b  2f 61 2c 65 78 70 61 6e  |e,file/k/a,expan|
00091cd0  64 2f 73 22 0a 0a 20 20  54 68 65 73 65 20 69 6e  |d/s"..  These in|
00091ce0  70 75 74 2d 73 74 72 69  6e 67 73 20 77 69 6c 6c  |put-strings will|
00091cf0  20 6d 61 74 63 68 3a 0a  20 20 20 20 22 2d 6e 20  | match:.    "-n |
00091d00  31 30 20 2d 66 69 6c 65  20 6d 79 66 69 6c 65 22  |10 -file myfile"|
00091d10  0a 20 20 20 20 22 2d 74  69 6d 65 73 20 31 2b 37  |.    "-times 1+7|
00091d20  20 2d 66 69 6c 65 20 6d  79 66 69 6c 65 20 2d 65  | -file myfile -e|
00091d30  78 70 61 6e 64 22 0a 20  20 20 20 22 2d 66 69 6c  |xpand".    "-fil|
00091d40  65 20 6d 79 66 69 6c 65  20 2d 65 22 0a 0a 20 20  |e myfile -e"..  |
00091d50  54 68 65 73 65 20 77 69  6c 6c 20 6e 6f 74 3a 0a  |These will not:.|
00091d60  20 20 20 20 22 6d 79 66  69 6c 65 20 2d 6e 75 6d  |    "myfile -num|
00091d70  62 65 72 20 34 22 0a 20  20 20 20 22 2d 6e 75 6d  |ber 4".    "-num|
00091d80  62 65 72 20 32 30 20 2d  74 69 6d 65 73 20 34 20  |ber 20 -times 4 |
00091d90  2d 66 69 6c 65 20 6d 79  66 69 6c 65 22 0a 23 0a  |-file myfile".#.|
00091da0  23 53 75 62 70 61 67 65  20 6f 75 74 70 75 74 0a  |#Subpage output.|
00091db0  4f 75 74 70 75 74 20 62  75 66 66 65 72 0a 46 6f  |Output buffer.Fo|
00091dc0  72 20 69 64 65 6e 74 69  66 69 65 72 20 78 20 28  |r identifier x (|
00091dd0  6e 61 6d 65 64 20 6f 72  20 6e 6f 74 29 2c 20 77  |named or not), w|
00091de0  6f 72 64 20 78 20 69 6e  20 6f 75 74 70 75 74 20  |ord x in output |
00091df0  62 75 66 66 65 72 20 63  6f 6e 74 61 69 6e 73 20  |buffer contains |
00091e00  3a 0a 0a 20 20 20 73 77  69 74 63 68 09 28 2f 53  |:..   switch.(/S|
00091e10  29 09 3a 09 6e 6f 6e 20  7a 65 72 6f 20 76 61 6c  |).:.non zero val|
00091e20  75 65 20 69 66 20 73 77  69 74 63 68 20 75 73 65  |ue if switch use|
00091e30  64 0a 20 20 20 47 53 54  72 61 6e 73 65 64 09 28  |d.   GSTransed.(|
00091e40  2f 47 29 09 3a 09 70 6f  69 6e 74 65 72 20 74 6f  |/G).:.pointer to|
00091e50  20 62 6c 6f 63 6b 20 28  30 20 69 66 20 75 6e 75  | block (0 if unu|
00091e60  73 65 64 29 20 77 69 74  68 20 74 77 6f 2d 62 79  |sed) with two-by|
00091e70  74 65 20 6c 65 6e 67 74  68 20 61 6e 64 20 74 68  |te length and th|
00091e80  65 6e 20 73 74 72 69 6e  67 20 69 74 73 65 6c 66  |en string itself|
00091e90  20 28 6e 6f 74 20 74 65  72 6d 69 6e 61 74 65 64  | (not terminated|
00091ea0  29 0a 20 20 20 45 76 61  6c 75 61 74 65 64 09 28  |).   Evaluated.(|
00091eb0  2f 45 29 09 3a 09 70 6f  69 6e 74 65 72 20 74 6f  |/E).:.pointer to|
00091ec0  20 62 6c 6f 63 6b 20 28  30 20 69 66 20 75 6e 75  | block (0 if unu|
00091ed0  73 65 64 29 20 77 69 74  68 20 6f 6e 65 20 62 79  |sed) with one by|
00091ee0  74 65 20 6f 66 20 74 79  70 65 20 66 6f 75 72 20  |te of type four |
00091ef0  62 79 74 65 73 20 6f 66  20 76 61 6c 75 65 20 28  |bytes of value (|
00091f00  69 6e 74 20 69 66 20 74  79 70 65 3d 30 29 0a 20  |int if type=0). |
00091f10  20 20 65 6c 73 65 09 09  20 09 3a 09 70 6f 69 6e  |  else.. .:.poin|
00091f20  74 65 72 20 74 6f 20 30  2d 74 65 72 6d 69 6e 61  |ter to 0-termina|
00091f30  74 65 64 20 73 74 72 69  6e 67 2e 0a 44 41 54 41  |ted string..DATA|
00091f40  28 0f 00 00 4f 53 5f 52  65 61 64 56 64 75 56 61  |(...OS_ReadVduVa|
00091f50  72 69 61 62 6c 65 73 20  20 28 26 33 31 29 0a 23  |riables  (&31).#|
00091f60  50 61 72 65 6e 74 20 4f  53 5f 0a 3d 3e 09 52 30  |Parent OS_.=>.R0|
00091f70  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 69 6e  | =.pointer to in|
00091f80  70 75 74 20 62 6c 6f 63  6b 0a 09 52 31 20 3d 09  |put block..R1 =.|
00091f90  70 6f 69 6e 74 65 72 20  74 6f 20 6f 75 74 70 75  |pointer to outpu|
00091fa0  74 20 62 6c 6f 63 6b 20  28 63 61 6e 20 62 65 20  |t block (can be |
00091fb0  73 61 6d 65 20 61 73 20  52 30 29 0a 0a 54 68 65  |same as R0)..The|
00091fc0  20 69 6e 70 75 74 20 62  6c 6f 63 6b 20 69 73 20  | input block is |
00091fd0  61 20 6c 69 73 74 20 6f  66 20 3c 76 61 72 69 61  |a list of <varia|
00091fe0  62 6c 65 20 6e 75 6d 62  65 72 73 3d 3e 2e 76 61  |ble numbers=>.va|
00091ff0  72 69 61 62 6c 65 73 3e  20 28 77 6f 72 64 73 29  |riables> (words)|
00092000  20 74 65 72 6d 69 6e 61  74 65 64 20 62 79 20 2d  | terminated by -|
00092010  31 2e 20 45 61 63 68 20  76 61 72 69 61 62 6c 65  |1. Each variable|
00092020  20 69 73 20 72 65 61 64  2c 20 61 6e 64 20 69 74  | is read, and it|
00092030  73 20 76 61 6c 75 65 20  69 73 20 77 72 69 74 74  |s value is writt|
00092040  65 6e 20 61 73 20 61 20  77 6f 72 64 20 69 6e 74  |en as a word int|
00092050  6f 20 74 68 65 20 6f 75  74 70 75 74 20 62 6c 6f  |o the output blo|
00092060  63 6b 2e 0a 0a 4e 6f 74  65 3a 20 59 6f 75 20 63  |ck...Note: You c|
00092070  61 6e 20 61 6c 73 6f 20  72 65 61 64 20 74 68 65  |an also read the|
00092080  20 3c 6d 6f 64 65 20 76  61 72 69 61 62 6c 65 73  | <mode variables|
00092090  3d 3e 4f 53 5f 52 65 61  64 4d 6f 64 65 56 61 72  |=>OS_ReadModeVar|
000920a0  69 61 62 6c 65 73 3e 20  77 69 74 68 20 74 68 69  |iables> with thi|
000920b0  73 20 63 61 6c 6c 2e 0a  23 0a 23 53 75 62 70 61  |s call..#.#Subpa|
000920c0  67 65 20 76 61 72 69 61  62 6c 65 73 0a 56 44 55  |ge variables.VDU|
000920d0  20 56 61 72 69 61 62 6c  65 73 0a 23 77 72 61 70  | Variables.#wrap|
000920e0  20 6f 66 66 0a 26 09 23  09 4e 61 6d 65 09 09 4d  | off.&.#.Name..M|
000920f0  65 61 6e 69 6e 67 0a 23  4c 69 6e 65 0a 38 30 09  |eaning.#Line.80.|
00092100  31 32 38 09 47 57 4c 43  6f 6c 09 09 47 72 61 70  |128.GWLCol..Grap|
00092110  68 69 63 73 20 57 69 6e  64 6f 77 09 4c 65 66 74  |hics Window.Left|
00092120  68 61 6e 64 20 43 6f 6c  75 6d 6e 09 09 28 69 63  |hand Column..(ic|
00092130  29 0a 38 31 09 31 32 39  09 47 57 42 52 6f 77 09  |).81.129.GWBRow.|
00092140  09 20 09 09 42 6f 74 74  6f 6d 20 52 6f 77 09 09  |. ..Bottom Row..|
00092150  28 69 63 29 0a 38 32 09  31 33 30 09 47 57 52 43  |(ic).82.130.GWRC|
00092160  6f 6c 09 09 20 09 09 52  69 67 68 74 68 61 6e 64  |ol.. ..Righthand|
00092170  20 43 6f 6c 75 6d 6e 09  28 69 63 29 0a 38 33 09  | Column.(ic).83.|
00092180  31 33 31 09 47 57 54 52  6f 77 09 09 20 09 09 54  |131.GWTRow.. ..T|
00092190  6f 70 20 52 6f 77 09 09  09 28 69 63 29 0a 0a 38  |op Row...(ic)..8|
000921a0  34 09 31 33 32 09 54 57  4c 43 6f 6c 09 09 54 65  |4.132.TWLCol..Te|
000921b0  78 74 20 57 69 6e 64 6f  77 09 4c 65 66 74 68 61  |xt Window.Leftha|
000921c0  6e 64 20 43 6f 6c 75 6d  6e 0a 38 35 09 31 33 33  |nd Column.85.133|
000921d0  09 54 57 42 52 6f 77 09  09 20 09 09 42 6f 74 74  |.TWBRow.. ..Bott|
000921e0  6f 6d 20 52 6f 77 0a 38  36 09 31 33 34 09 54 57  |om Row.86.134.TW|
000921f0  52 43 6f 6c 09 09 20 09  09 52 69 67 68 74 68 61  |RCol.. ..Rightha|
00092200  6e 64 20 43 6f 6c 75 6d  6e 0a 38 37 09 31 33 35  |nd Column.87.135|
00092210  09 54 57 54 52 6f 77 09  09 20 09 09 54 6f 70 20  |.TWTRow.. ..Top |
00092220  52 6f 77 0a 0a 38 38 09  31 33 36 09 4f 72 67 58  |Row..88.136.OrgX|
00092230  09 09 78 20 63 6f 6f 72  64 20 6f 66 20 67 72 61  |..x coord of gra|
00092240  70 68 69 63 73 20 4f 72  69 67 69 6e 09 20 09 28  |phics Origin. .(|
00092250  65 63 29 0a 38 39 09 31  33 37 09 4f 72 67 59 09  |ec).89.137.OrgY.|
00092260  09 79 20 63 6f 6f 72 64  20 6f 66 20 67 72 61 70  |.y coord of grap|
00092270  68 69 63 73 20 4f 72 69  67 69 6e 09 20 09 28 65  |hics Origin. .(e|
00092280  63 29 0a 0a 38 41 09 31  33 38 09 47 43 73 58 09  |c)..8A.138.GCsX.|
00092290  09 47 72 61 70 68 69 63  73 20 43 75 72 73 6f 72  |.Graphics Cursor|
000922a0  20 58 20 63 6f 6f 72 64  09 09 20 09 28 65 63 29  | X coord.. .(ec)|
000922b0  0a 38 42 09 31 33 39 09  47 43 73 59 09 09 47 72  |.8B.139.GCsY..Gr|
000922c0  61 70 68 69 63 73 20 43  75 72 73 6f 72 20 59 20  |aphics Cursor Y |
000922d0  63 6f 6f 72 64 09 09 20  09 28 65 63 29 0a 38 43  |coord.. .(ec).8C|
000922e0  09 31 34 30 09 4f 6c 64  65 72 43 73 58 09 4f 6c  |.140.OlderCsX.Ol|
000922f0  64 65 73 74 20 67 72 2e  20 43 75 72 73 6f 72 20  |dest gr. Cursor |
00092300  58 20 63 6f 6f 72 64 09  20 09 28 69 63 29 0a 38  |X coord. .(ic).8|
00092310  44 09 31 34 31 09 4f 6c  64 65 72 43 73 59 09 4f  |D.141.OlderCsY.O|
00092320  6c 64 65 73 74 20 67 72  2e 20 43 75 72 73 6f 72  |ldest gr. Cursor|
00092330  20 59 20 63 6f 6f 72 64  09 20 09 28 69 63 29 0a  | Y coord. .(ic).|
00092340  38 45 09 31 34 32 09 4f  6c 64 43 73 58 09 09 50  |8E.142.OldCsX..P|
00092350  72 65 76 69 6f 75 73 20  67 72 2e 20 43 75 72 73  |revious gr. Curs|
00092360  6f 72 20 58 20 63 6f 6f  72 64 09 20 09 28 69 63  |or X coord. .(ic|
00092370  29 0a 38 46 09 31 34 33  09 4f 6c 64 43 73 59 09  |).8F.143.OldCsY.|
00092380  09 50 72 65 76 69 6f 75  73 20 67 72 2e 20 43 75  |.Previous gr. Cu|
00092390  72 73 6f 72 20 59 20 63  6f 6f 72 64 09 20 09 28  |rsor Y coord. .(|
000923a0  69 63 29 0a 39 30 09 31  34 34 09 47 43 73 49 58  |ic).90.144.GCsIX|
000923b0  09 09 47 72 61 70 68 69  63 73 20 43 75 72 73 6f  |..Graphics Curso|
000923c0  72 20 58 20 63 6f 6f 72  64 09 09 20 09 28 69 63  |r X coord.. .(ic|
000923d0  29 0a 39 31 09 31 34 35  09 47 43 73 49 59 09 09  |).91.145.GCsIY..|
000923e0  47 72 61 70 68 69 63 73  20 43 75 72 73 6f 72 20  |Graphics Cursor |
000923f0  59 20 63 6f 6f 72 64 09  09 20 09 28 69 63 29 0a  |Y coord.. .(ic).|
00092400  39 32 09 31 34 36 09 4e  65 77 50 74 58 09 09 4e  |92.146.NewPtX..N|
00092410  65 77 20 70 6f 69 6e 74  20 58 20 63 6f 6f 72 64  |ew point X coord|
00092420  09 09 20 09 28 69 63 29  0a 39 33 09 31 34 37 09  |.. .(ic).93.147.|
00092430  4e 65 77 50 74 59 09 09  4e 65 77 20 70 6f 69 6e  |NewPtY..New poin|
00092440  74 20 59 20 63 6f 6f 72  64 09 09 20 09 28 69 63  |t Y coord.. .(ic|
00092450  29 0a 0a 39 34 09 31 34  38 09 53 63 72 65 65 6e  |)..94.148.Screen|
00092460  53 74 61 72 74 09 41 73  20 75 73 65 64 20 62 79  |Start.As used by|
00092470  20 56 44 55 20 64 72 69  76 65 72 73 0a 39 35 09  | VDU drivers.95.|
00092480  31 34 39 09 44 69 73 70  6c 61 79 53 74 61 72 74  |149.DisplayStart|
00092490  09 41 73 20 75 73 65 64  20 62 79 20 64 69 73 70  |.As used by disp|
000924a0  6c 61 79 20 68 61 72 64  77 61 72 65 0a 39 36 09  |lay hardware.96.|
000924b0  31 35 30 09 54 6f 74 61  6c 53 63 72 65 65 6e 53  |150.TotalScreenS|
000924c0  69 7a 65 09 4d 65 6d 6f  72 79 20 61 6c 6c 6f 63  |ize.Memory alloc|
000924d0  61 74 65 64 20 74 6f 20  73 63 72 65 65 6e 0a 0a  |ated to screen..|
000924e0  39 37 09 31 35 31 09 47  50 4c 46 4d 44 09 09 47  |97.151.GPLFMD..G|
000924f0  43 4f 4c 20 61 63 74 69  6f 6e 20 66 6f 72 20 66  |COL action for f|
00092500  6f 72 65 67 72 6f 75 6e  64 20 63 6f 6c 0a 39 38  |oreground col.98|
00092510  09 31 35 32 09 47 50 4c  42 4d 44 09 09 47 43 4f  |.152.GPLBMD..GCO|
00092520  4c 20 61 63 74 69 6f 6e  20 66 6f 72 20 62 61 63  |L action for bac|
00092530  6b 67 72 6f 75 6e 64 20  63 6f 6c 0a 39 39 09 31  |kground col.99.1|
00092540  35 33 09 47 46 43 4f 4c  09 09 47 72 61 70 68 69  |53.GFCOL..Graphi|
00092550  63 73 20 66 6f 72 65 67  72 6f 75 6e 64 20 63 6f  |cs foreground co|
00092560  6c 0a 39 41 09 31 35 34  09 47 42 43 4f 4c 09 09  |l.9A.154.GBCOL..|
00092570  47 72 61 70 68 69 63 73  20 62 61 63 6b 67 72 6f  |Graphics backgro|
00092580  75 6e 64 20 63 6f 6c 0a  39 42 09 31 35 35 09 54  |und col.9B.155.T|
00092590  46 6f 72 65 43 6f 6c 09  54 65 78 74 20 66 6f 72  |ForeCol.Text for|
000925a0  65 67 72 6f 75 6e 64 20  63 6f 6c 0a 39 43 09 31  |eground col.9C.1|
000925b0  35 36 09 54 42 61 63 6b  43 6f 6c 09 54 65 78 74  |56.TBackCol.Text|
000925c0  20 62 61 63 6b 67 72 6f  75 6e 64 20 63 6f 6c 0a  | background col.|
000925d0  39 44 09 31 35 37 09 47  46 54 69 6e 74 09 09 47  |9D.157.GFTint..G|
000925e0  72 61 70 68 69 63 73 20  66 6f 72 65 67 72 6f 75  |raphics foregrou|
000925f0  6e 64 20 74 69 6e 74 0a  39 45 09 31 35 38 09 47  |nd tint.9E.158.G|
00092600  42 54 69 6e 74 09 09 47  72 61 70 68 69 63 73 20  |BTint..Graphics |
00092610  62 61 63 6b 67 72 6f 75  6e 64 20 74 69 6e 74 0a  |background tint.|
00092620  39 46 09 31 35 39 09 54  46 54 69 6e 74 09 09 54  |9F.159.TFTint..T|
00092630  65 78 74 20 66 6f 72 65  67 72 6f 75 6e 64 20 74  |ext foreground t|
00092640  69 6e 74 0a 41 30 09 31  36 30 09 54 42 54 69 6e  |int.A0.160.TBTin|
00092650  74 09 09 54 65 78 74 20  62 61 63 6b 67 72 6f 75  |t..Text backgrou|
00092660  6e 64 20 74 69 6e 74 0a  0a 41 31 09 31 36 31 09  |nd tint..A1.161.|
00092670  4d 61 78 4d 6f 64 65 09  09 48 69 67 68 65 73 74  |MaxMode..Highest|
00092680  20 28 73 74 61 6e 64 61  72 64 29 20 6d 6f 64 65  | (standard) mode|
00092690  20 61 76 61 69 6c 61 62  6c 65 0a 0a 41 32 09 31  | available..A2.1|
000926a0  36 32 09 47 43 68 61 72  53 69 7a 65 58 09 58 20  |62.GCharSizeX.X |
000926b0  73 69 7a 65 20 6f 66 20  56 44 55 35 20 63 68 61  |size of VDU5 cha|
000926c0  72 73 20 28 70 69 78 65  6c 73 29 0a 41 33 09 31  |rs (pixels).A3.1|
000926d0  36 33 09 47 43 68 61 72  53 69 7a 65 59 09 59 20  |63.GCharSizeY.Y |
000926e0  73 69 7a 65 20 6f 66 20  56 44 55 35 20 63 68 61  |size of VDU5 cha|
000926f0  72 73 20 28 70 69 78 65  6c 73 29 0a 41 34 09 31  |rs (pixels).A4.1|
00092700  36 34 09 47 43 68 61 72  53 70 61 63 65 58 09 58  |64.GCharSpaceX.X|
00092710  20 73 70 61 63 69 6e 67  20 6f 66 20 56 44 55 35  | spacing of VDU5|
00092720  20 63 68 61 72 73 20 28  70 69 78 65 6c 73 29 0a  | chars (pixels).|
00092730  41 35 09 31 36 35 09 47  43 68 61 72 53 70 61 63  |A5.165.GCharSpac|
00092740  65 59 09 59 20 73 70 61  63 69 6e 67 20 6f 66 20  |eY.Y spacing of |
00092750  56 44 55 35 20 63 68 61  72 73 20 28 70 69 78 65  |VDU5 chars (pixe|
00092760  6c 73 29 0a 0a 41 36 09  31 36 36 09 48 4c 69 6e  |ls)..A6.166.HLin|
00092770  65 41 64 64 72 09 41 64  64 72 65 73 73 20 6f 66  |eAddr.Address of|
00092780  20 3c 68 6f 72 69 7a 6f  6e 74 61 6c 20 6c 69 6e  | <horizontal lin|
00092790  65 2d 64 72 61 77 20 72  6f 75 74 69 6e 65 3d 3e  |e-draw routine=>|
000927a0  2e 68 6c 69 6e 65 61 64  64 72 3e 0a 0a 41 37 09  |.hlineaddr>..A7.|
000927b0  31 36 37 09 54 43 68 61  72 53 69 7a 65 58 09 58  |167.TCharSizeX.X|
000927c0  20 73 69 7a 65 20 6f 66  20 56 44 55 34 20 63 68  | size of VDU4 ch|
000927d0  61 72 73 20 28 70 69 78  65 6c 73 29 0a 41 38 09  |ars (pixels).A8.|
000927e0  31 36 38 09 54 43 68 61  72 53 69 7a 65 59 09 59  |168.TCharSizeY.Y|
000927f0  20 73 69 7a 65 20 6f 66  20 56 44 55 34 20 63 68  | size of VDU4 ch|
00092800  61 72 73 20 28 70 69 78  65 6c 73 29 0a 41 39 09  |ars (pixels).A9.|
00092810  31 36 39 09 54 43 68 61  72 53 70 61 63 65 58 09  |169.TCharSpaceX.|
00092820  58 20 73 70 61 63 69 6e  67 20 6f 66 20 56 44 55  |X spacing of VDU|
00092830  34 20 63 68 61 72 73 20  28 70 69 78 65 6c 73 29  |4 chars (pixels)|
00092840  0a 41 41 09 31 37 30 09  54 43 68 61 72 53 70 61  |.AA.170.TCharSpa|
00092850  63 65 59 09 59 20 73 70  61 63 69 6e 67 20 6f 66  |ceY.Y spacing of|
00092860  20 56 44 55 34 20 63 68  61 72 73 20 28 70 69 78  | VDU4 chars (pix|
00092870  65 6c 73 29 0a 0a 41 42  09 31 37 31 09 47 63 6f  |els)..AB.171.Gco|
00092880  6c 4f 72 61 45 6f 72 41  64 64 72 09 41 64 64 72  |lOraEorAddr.Addr|
00092890  20 6f 66 20 3c 63 6f 6c  6f 75 72 20 62 6c 6f 63  | of <colour bloc|
000928a0  6b 73 3d 3e 2e 67 63 6f  6c 6f 72 61 65 6f 72 61  |ks=>.gcoloraeora|
000928b0  64 64 72 3e 20 66 6f 72  20 63 75 72 72 65 6e 74  |ddr> for current|
000928c0  20 47 43 4f 4c 73 0a 0a  31 30 30 09 32 35 36 09  | GCOLs..100.256.|
000928d0  57 69 6e 64 6f 77 57 69  64 74 68 09 57 69 64 74  |WindowWidth.Widt|
000928e0  68 20 6f 66 20 74 65 78  74 20 77 69 6e 64 6f 77  |h of text window|
000928f0  20 69 6e 20 63 68 61 72  73 0a 31 30 31 09 32 35  | in chars.101.25|
00092900  37 09 57 69 6e 64 6f 77  48 65 69 67 68 74 09 48  |7.WindowHeight.H|
00092910  65 69 67 68 74 20 6f 66  20 74 65 78 74 20 77 69  |eight of text wi|
00092920  6e 64 6f 77 20 69 6e 20  63 68 61 72 73 0a 23 53  |ndow in chars.#S|
00092930  75 62 70 61 67 65 20 68  6c 69 6e 65 61 64 64 72  |ubpage hlineaddr|
00092940  0a 46 61 73 74 20 68 6f  72 69 7a 6f 6e 74 61 6c  |.Fast horizontal|
00092950  20 6c 69 6e 65 20 64 72  61 77 20 72 6f 75 74 69  | line draw routi|
00092960  6e 65 0a 3d 3e 09 52 30  20 3d 09 6c 65 66 74 20  |ne.=>.R0 =.left |
00092970  78 20 63 6f 6f 72 64 69  6e 61 74 65 20 6f 66 20  |x coordinate of |
00092980  65 6e 64 20 6f 66 20 6c  69 6e 65 0a 09 52 31 20  |end of line..R1 |
00092990  3d 09 79 20 63 6f 6f 64  69 6e 61 64 65 20 6f 66  |=.y coodinade of|
000929a0  20 6c 69 6e 65 0a 09 52  32 20 3d 09 72 69 67 68  | line..R2 =.righ|
000929b0  74 20 78 20 63 6f 6f 72  64 69 6e 61 74 65 20 6f  |t x coordinate o|
000929c0  66 20 65 6e 64 20 6f 66  20 6c 69 6e 65 0a 09 52  |f end of line..R|
000929d0  33 20 3d 09 30 09 70 6c  6f 74 20 77 69 74 68 20  |3 =.0.plot with |
000929e0  6e 6f 20 61 63 74 69 6f  6e 20 28 64 6f 20 6e 6f  |no action (do no|
000929f0  74 68 69 6e 67 21 29 0a  09 20 09 31 09 70 6c 6f  |thing!).. .1.plo|
00092a00  74 20 77 69 74 68 20 66  6f 72 65 67 72 6f 75 6e  |t with foregroun|
00092a10  64 20 63 6f 6c 6f 75 72  20 61 6e 64 20 61 63 74  |d colour and act|
00092a20  69 6f 6e 0a 09 20 09 32  09 69 6e 76 65 72 74 20  |ion.. .2.invert |
00092a30  63 75 72 72 65 6e 74 20  73 63 72 65 65 6e 20 63  |current screen c|
00092a40  6f 6c 6f 75 72 0a 09 20  09 33 09 70 6c 6f 74 20  |olour.. .3.plot |
00092a50  77 69 74 68 20 62 61 63  6b 67 72 6f 75 6e 64 20  |with background |
00092a60  63 6f 6c 6f 75 72 20 61  6e 64 20 61 63 74 69 6f  |colour and actio|
00092a70  6e 0a 09 20 09 3e 33 09  70 6f 69 6e 74 65 72 20  |n.. .>3.pointer |
00092a80  74 6f 20 3c 61 6c 69 67  6e 65 64 20 45 43 46 20  |to <aligned ECF |
00092a90  62 6c 6f 63 6b 3d 3e 2e  65 63 66 62 6c 6f 63 6b  |block=>.ecfblock|
00092aa0  3e 0a 09 52 31 34 20 3d  09 72 65 74 75 72 6e 20  |>..R14 =.return |
00092ab0  61 64 64 72 65 73 73 0a  3c 3d 09 61 6c 6c 20 72  |address.<=.all r|
00092ac0  65 67 69 73 74 65 72 73  20 70 72 65 73 65 72 76  |egisters preserv|
00092ad0  65 64 0a 0a 54 68 69 73  20 6d 75 73 74 20 62 65  |ed..This must be|
00092ae0  20 63 61 6c 6c 65 64 20  69 6e 20 53 56 43 20 6d  | called in SVC m|
00092af0  6f 64 65 2e 20 54 68 65  20 63 61 6c 6c 65 72 20  |ode. The caller |
00092b00  73 68 6f 75 6c 64 20 3c  4f 53 5f 52 65 6d 6f 76  |should <OS_Remov|
00092b10  65 43 75 72 73 6f 72 73  3e 20 62 65 66 6f 72 65  |eCursors> before|
00092b20  20 63 61 6c 6c 69 6e 67  2c 20 61 6e 64 20 3c 4f  | calling, and <O|
00092b30  53 5f 52 65 73 74 6f 72  65 43 75 72 73 6f 72 73  |S_RestoreCursors|
00092b40  3e 20 61 66 74 65 72 77  61 72 64 73 2e 20 41 6c  |> afterwards. Al|
00092b50  6c 20 63 6f 6f 72 64 69  6e 61 74 65 73 20 61 72  |l coordinates ar|
00092b60  65 20 69 6e 74 65 72 6e  61 6c 20 63 6f 6f 72 64  |e internal coord|
00092b70  69 6e 61 74 65 73 2c 20  61 6e 64 20 74 68 65 20  |inates, and the |
00092b80  6c 69 6e 65 20 69 73 20  70 6c 6f 74 74 65 64 20  |line is plotted |
00092b90  61 73 20 73 70 65 63 69  66 69 65 64 20 62 79 20  |as specified by |
00092ba0  52 33 2c 20 63 6c 69 70  70 65 64 20 74 6f 20 74  |R3, clipped to t|
00092bb0  68 65 20 63 75 72 72 65  6e 74 20 67 72 61 70 68  |he current graph|
00092bc0  69 63 73 20 77 69 6e 64  6f 77 2e 0a 23 73 75 62  |ics window..#sub|
00092bd0  70 61 67 65 20 67 63 6f  6c 6f 72 61 65 6f 72 61  |page gcoloraeora|
00092be0  64 64 72 0a 47 43 6f 6c  20 4f 52 20 61 6e 64 20  |ddr.GCol OR and |
00092bf0  45 4f 52 20 61 64 64 72  65 73 73 0a 54 68 65 20  |EOR address.The |
00092c00  72 65 74 75 72 6e 65 64  20 76 61 6c 75 65 20 69  |returned value i|
00092c10  73 20 61 20 70 6f 69 6e  74 65 72 20 74 6f 20 33  |s a pointer to 3|
00092c20  20 3c 63 6f 6c 6f 75 72  20 62 6c 6f 63 6b 73 3d  | <colour blocks=|
00092c30  3e 2e 65 63 66 62 6c 6f  63 6b 3e 2c 20 77 68 69  |>.ecfblock>, whi|
00092c40  63 68 20 61 72 65 20 75  70 64 61 74 65 64 20 77  |ch are updated w|
00092c50  68 65 6e 65 76 65 72 20  47 43 4f 4c 20 6f 72 20  |henever GCOL or |
00092c60  54 49 4e 54 20 61 72 65  20 69 73 73 75 65 64 2c  |TINT are issued,|
00092c70  20 6f 72 20 74 68 65 20  45 43 46 20 6f 72 69 67  | or the ECF orig|
00092c80  69 6e 20 69 73 20 63 68  61 6e 67 65 64 2e 0a 0a  |in is changed...|
00092c90  4f 66 66 73 65 74 09 43  6f 6e 74 65 6e 74 73 0a  |Offset.Contents.|
00092ca0  23 4c 69 6e 65 0a 30 09  43 6f 6c 6f 75 72 20 62  |#Line.0.Colour b|
00092cb0  6c 6f 63 6b 20 66 6f 72  20 63 75 72 72 65 6e 74  |lock for current|
00092cc0  20 66 6f 72 65 67 72 6f  75 6e 64 20 63 6f 6c 6f  | foreground colo|
00092cd0  75 72 20 61 6e 64 20 61  63 74 69 6f 6e 0a 36 34  |ur and action.64|
00092ce0  09 43 6f 6c 6f 75 72 20  62 6c 6f 63 6b 20 66 6f  |.Colour block fo|
00092cf0  72 20 63 75 72 72 65 6e  74 20 62 61 63 6b 67 72  |r current backgr|
00092d00  6f 75 6e 64 20 63 6f 6c  6f 75 72 20 61 6e 64 20  |ound colour and |
00092d10  61 63 74 69 6f 6e 0a 31  32 38 09 43 6f 6c 6f 75  |action.128.Colou|
00092d20  72 20 62 6c 6f 63 6b 20  66 6f 72 20 63 75 72 72  |r block for curr|
00092d30  65 6e 74 20 62 61 63 6b  67 72 6f 75 6e 64 20 63  |ent background c|
00092d40  6f 6c 6f 75 72 20 77 69  74 68 20 73 74 6f 72 65  |olour with store|
00092d50  20 61 63 74 69 6f 6e 0a  23 73 75 62 70 61 67 65  | action.#subpage|
00092d60  20 65 63 66 62 6c 6f 63  6b 0a 45 43 46 20 62 6c  | ecfblock.ECF bl|
00092d70  6f 63 6b 0a 54 68 69 73  20 62 6c 6f 63 6b 20 73  |ock.This block s|
00092d80  68 6f 75 6c 64 20 62 65  20 6f 6e 20 61 20 36 34  |hould be on a 64|
00092d90  20 62 79 74 65 20 62 6f  75 6e 64 61 72 79 0a 0a  | byte boundary..|
00092da0  4f 66 66 73 65 74 09 56  61 6c 75 65 0a 23 4c 69  |Offset.Value.#Li|
00092db0  6e 65 0a 30 09 4f 52 20  6d 61 73 6b 20 66 6f 72  |ne.0.OR mask for|
00092dc0  20 74 6f 70 20 45 43 46  20 6c 69 6e 65 0a 34 09  | top ECF line.4.|
00092dd0  45 4f 52 20 6d 61 73 6b  20 66 6f 72 20 74 6f 70  |EOR mask for top|
00092de0  20 45 43 46 20 6c 69 6e  65 0a 38 09 4f 52 20 6d  | ECF line.8.OR m|
00092df0  61 73 6b 20 66 6f 72 20  6e 65 78 74 20 45 43 46  |ask for next ECF|
00092e00  20 6c 69 6e 65 0a 31 32  09 45 4f 52 20 6d 61 73  | line.12.EOR mas|
00092e10  6b 20 66 6f 72 20 6e 65  78 74 20 45 43 46 20 6c  |k for next ECF l|
00092e20  69 6e 65 0a 0a 35 36 09  4f 52 20 6d 61 73 6b 20  |ine..56.OR mask |
00092e30  66 6f 72 20 62 6f 74 74  6f 6d 20 45 43 46 20 6c  |for bottom ECF l|
00092e40  69 6e 65 0a 36 30 09 45  4f 52 20 6d 61 73 6b 20  |ine.60.EOR mask |
00092e50  66 6f 72 20 62 6f 74 74  6f 6d 20 45 43 46 20 6c  |for bottom ECF l|
00092e60  69 6e 65 0a 44 41 54 41  0e 01 00 00 4f 53 5f 52  |ine.DATA....OS_R|
00092e70  65 61 64 4d 65 6d 4d 61  70 45 6e 74 72 69 65 73  |eadMemMapEntries|
00092e80  20 20 28 26 35 32 29 0a  23 50 61 72 65 6e 74 20  |  (&52).#Parent |
00092e90  4f 53 5f 0a 3d 3e 09 52  30 20 3d 09 70 6f 69 6e  |OS_.=>.R0 =.poin|
00092ea0  74 65 72 20 74 6f 20 3c  72 65 71 75 65 73 74 20  |ter to <request |
00092eb0  62 6c 6f 63 6b 3d 3e 4f  53 5f 6d 65 6d 6d 61 70  |block=>OS_memmap|
00092ec0  72 65 71 75 65 73 74 3e  0a 3c 3d 09 62 6c 6f 63  |request>.<=.bloc|
00092ed0  6b 20 61 74 20 52 30 20  75 70 64 61 74 65 64 0a  |k at R0 updated.|
00092ee0  0a 54 68 69 73 20 53 57  49 20 72 65 74 75 72 6e  |.This SWI return|
00092ef0  73 20 74 68 65 20 6c 6f  67 69 63 61 6c 20 70 61  |s the logical pa|
00092f00  67 65 20 6e 75 6d 62 65  72 20 69 6e 20 77 68 69  |ge number in whi|
00092f10  63 68 20 74 68 65 20 6d  65 6d 6f 72 79 20 70 61  |ch the memory pa|
00092f20  67 65 73 20 73 70 65 63  69 66 69 65 64 20 72 65  |ges specified re|
00092f30  73 69 64 65 2c 20 69 65  20 70 61 67 65 20 2d 3e  |side, ie page ->|
00092f40  20 61 64 64 72 65 73 73  2e 0a 0a 54 68 65 20 63  | address...The c|
00092f50  6f 6e 76 65 72 73 65 20  69 73 20 3c 4f 53 5f 46  |onverse is <OS_F|
00092f60  69 6e 64 4d 65 6d 4d 61  70 45 6e 74 72 69 65 73  |indMemMapEntries|
00092f70  3e 2e 00 00 44 41 54 41  03 01 00 00 4f 53 5f 52  |>...DATA....OS_R|
00092f80  65 61 64 52 41 4d 46 73  4c 69 6d 69 74 73 20 20  |eadRAMFsLimits  |
00092f90  28 26 34 41 29 0a 23 50  61 72 65 6e 74 20 4f 53  |(&4A).#Parent OS|
00092fa0  5f 0a 3d 3e 09 52 30 20  3d 09 73 74 61 72 74 20  |_.=>.R0 =.start |
00092fb0  6f 66 20 52 41 4d 20 64  69 73 63 0a 09 52 31 20  |of RAM disc..R1 |
00092fc0  3d 09 65 6e 64 20 6f 66  20 52 41 4d 20 64 69 73  |=.end of RAM dis|
00092fd0  63 0a 0a 52 65 61 64 73  20 77 68 65 72 65 20 69  |c..Reads where i|
00092fe0  6e 20 6d 65 6d 6f 72 79  20 74 68 65 20 52 41 4d  |n memory the RAM|
00092ff0  20 64 69 73 63 20 72 65  73 69 64 65 73 2e 20 54  | disc resides. T|
00093000  68 69 73 20 69 73 20 6e  6f 74 20 72 65 61 6c 6c  |his is not reall|
00093010  79 20 61 6c 6c 20 74 68  61 74 20 75 73 65 66 75  |y all that usefu|
00093020  6c 20 61 73 20 66 6f 72  20 74 68 65 20 6d 61 6a  |l as for the maj|
00093030  6f 72 69 74 79 20 6f 66  20 74 68 65 20 74 69 6d  |ority of the tim|
00093040  65 20 74 68 65 20 52 41  4d 20 64 69 73 63 20 69  |e the RAM disc i|
00093050  73 20 73 65 74 20 61 73  20 69 6e 61 63 63 65 73  |s set as inacces|
00093060  73 61 62 6c 65 20 74 6f  20 75 73 65 72 20 70 72  |sable to user pr|
00093070  6f 67 72 61 6d 73 2e 00  44 41 54 41 eb 01 00 00  |ograms..DATA....|
00093080  4f 53 5f 52 65 61 64 43  20 20 28 26 30 34 29 0a  |OS_ReadC  (&04).|
00093090  23 50 61 72 65 6e 74 20  4f 53 5f 0a 3c 3d 09 69  |#Parent OS_.<=.i|
000930a0  66 20 43 20 66 6c 61 67  20 69 73 20 30 0a 09 20  |f C flag is 0.. |
000930b0  09 52 30 20 3d 09 41 53  43 49 49 20 63 6f 64 65  |.R0 =.ASCII code|
000930c0  0a 09 69 66 20 43 20 66  6c 61 67 20 69 73 20 31  |..if C flag is 1|
000930d0  0a 09 20 09 52 30 20 3d  09 65 72 72 6f 72 20 6e  |.. .R0 =.error n|
000930e0  75 6d 62 65 72 2c 20 26  31 42 20 6d 65 61 6e 73  |umber, &1B means|
000930f0  20 65 73 63 61 70 65 0a  0a 54 68 69 73 20 63 61  | escape..This ca|
00093100  6c 6c 20 72 65 61 64 73  20 61 20 63 68 61 72 61  |ll reads a chara|
00093110  63 74 65 72 20 66 72 6f  6d 20 74 68 65 20 69 6e  |cter from the in|
00093120  70 75 74 20 73 74 72 65  61 6d 2e 20 49 74 20 77  |put stream. It w|
00093130  61 69 74 73 20 74 6f 20  67 65 74 20 74 68 65 20  |aits to get the |
00093140  6e 65 78 74 20 63 68 61  72 61 63 74 65 72 2c 20  |next character, |
00093150  7b 2f 7d 69 2e 65 2e 7b  2f 7d 20 79 6f 75 20 77  |{/}i.e.{/} you w|
00093160  69 6c 6c 20 6f 6e 6c 79  20 67 65 74 20 74 68 65  |ill only get the|
00093170  20 63 6f 6e 74 72 6f 6c  20 62 61 63 6b 20 77 68  | control back wh|
00093180  65 6e 2c 20 66 6f 72 20  65 78 61 6d 70 6c 65 2c  |en, for example,|
00093190  20 61 20 6b 65 79 20 69  73 20 70 72 65 73 73 65  | a key is presse|
000931a0  64 2e 20 54 68 65 20 73  6f 75 72 63 65 20 66 6f  |d. The source fo|
000931b0  72 20 74 68 65 20 69 6e  70 75 74 20 73 74 72 65  |r the input stre|
000931c0  61 6d 20 63 61 6e 20 62  65 20 72 65 61 64 20 77  |am can be read w|
000931d0  69 74 68 20 3c 4f 53 5f  42 79 74 65 20 31 37 37  |ith <OS_Byte 177|
000931e0  3d 3e 4f 53 5f 42 79 74  65 31 37 37 3e 2e 0a 0a  |=>OS_Byte177>...|
000931f0  49 66 20 63 75 72 73 6f  72 20 65 64 69 74 69 6e  |If cursor editin|
00093200  67 20 69 73 20 65 6e 61  62 6c 65 64 20 28 73 65  |g is enabled (se|
00093210  65 20 3c 4f 53 5f 42 79  74 65 20 34 3d 3e 4f 53  |e <OS_Byte 4=>OS|
00093220  5f 42 79 74 65 30 30 34  3e 29 2c 20 74 68 65 6e  |_Byte004>), then|
00093230  20 70 72 65 73 73 69 6e  67 20 61 20 63 75 72 73  | pressing a curs|
00093240  6f 72 20 6b 65 79 73 20  77 69 6c 6c 20 73 74 61  |or keys will sta|
00093250  72 74 20 63 75 72 73 6f  72 20 65 64 69 74 69 6e  |rt cursor editin|
00093260  67 2e 0a 00 44 41 54 41  0c 01 00 00 4f 53 5f 52  |g...DATA....OS_R|
00093270  65 61 64 44 65 66 61 75  6c 74 48 61 6e 64 6c 65  |eadDefaultHandle|
00093280  72 20 20 28 26 35 35 29  0a 23 50 61 72 65 6e 74  |r  (&55).#Parent|
00093290  20 4f 53 5f 0a 3d 3e 09  52 30 20 3d 09 3c 68 61  | OS_.=>.R0 =.<ha|
000932a0  6e 64 6c 65 72 20 6e 75  6d 62 65 72 3d 3e 6f 73  |ndler number=>os|
000932b0  5f 68 61 6e 64 6c 65 72  73 3e 0a 0a 3c 3d 09 52  |_handlers>..<=.R|
000932c0  30 20 70 72 65 73 65 72  76 65 64 0a 09 52 31 20  |0 preserved..R1 |
000932d0  3d 09 61 64 64 72 65 73  73 20 6f 66 20 64 65 66  |=.address of def|
000932e0  61 75 6c 74 20 68 61 6e  64 6c 65 72 0a 09 52 32  |ault handler..R2|
000932f0  20 3d 09 77 6f 72 6b 73  70 61 63 65 20 61 64 64  | =.workspace add|
00093300  72 65 73 73 0a 09 52 33  20 3d 09 62 75 66 66 65  |ress..R3 =.buffe|
00093310  72 20 61 64 64 72 65 73  73 0a 0a 54 68 69 73 20  |r address..This |
00093320  65 6e 61 62 6c 65 73 20  79 6f 75 20 74 6f 20 72  |enables you to r|
00093330  65 2d 69 6e 73 74 61 6c  6c 20 74 68 65 20 68 61  |e-install the ha|
00093340  6e 64 6c 65 72 20 77 68  69 63 68 20 69 73 20 73  |ndler which is s|
00093350  65 74 20 75 70 20 61 66  74 65 72 20 61 20 72 65  |et up after a re|
00093360  73 65 74 20 6f 72 20 70  6f 77 65 72 20 6f 6e 2e  |set or power on.|
00093370  44 41 54 41 1c 03 00 00  4f 53 5f 52 65 61 64 45  |DATA....OS_ReadE|
00093380  73 63 61 70 65 53 74 61  74 65 20 20 28 26 32 43  |scapeState  (&2C|
00093390  29 0a 23 50 61 72 65 6e  74 20 4f 53 5f 0a 54 68  |).#Parent OS_.Th|
000933a0  69 73 20 73 65 74 73 20  6f 72 20 63 6c 65 61 72  |is sets or clear|
000933b0  73 20 74 68 65 20 63 61  72 72 79 20 66 6c 61 67  |s the carry flag|
000933c0  20 64 65 70 65 6e 64 69  6e 67 20 6f 6e 20 77 68  | depending on wh|
000933d0  65 74 68 65 72 20 74 68  65 20 65 73 63 61 70 65  |ether the escape|
000933e0  20 6b 65 79 20 69 73 20  70 72 65 73 73 65 64 20  | key is pressed |
000933f0  6f 72 20 6e 6f 74 2e 0a  0a 4f 6e 63 65 20 61 6e  |or not...Once an|
00093400  20 65 73 63 61 70 65 20  63 6f 6e 64 69 74 69 6f  | escape conditio|
00093410  6e 20 68 61 73 20 62 65  65 6e 20 64 65 74 65 63  |n has been detec|
00093420  74 65 64 2c 20 28 65 69  74 68 65 72 20 74 68 72  |ted, (either thr|
00093430  6f 75 67 68 20 74 68 69  73 20 6f 72 20 66 6f 72  |ough this or for|
00093440  20 65 78 61 6d 70 6c 65  2c 20 77 69 74 68 20 3c  | example, with <|
00093450  4f 53 5f 52 65 61 64 43  3e 29 2c 20 69 74 20 73  |OS_ReadC>), it s|
00093460  68 6f 75 6c 64 20 62 65  20 61 63 6b 6e 6f 77 6c  |hould be acknowl|
00093470  65 64 67 65 64 20 77 69  74 68 20 3c 4f 53 5f 42  |edged with <OS_B|
00093480  79 74 65 20 31 32 36 3d  3e 4f 53 5f 42 79 74 65  |yte 126=>OS_Byte|
00093490  31 32 36 3e 20 6f 72 20  63 6c 65 61 72 65 64 20  |126> or cleared |
000934a0  75 73 69 6e 67 20 3c 4f  53 5f 42 79 74 65 20 31  |using <OS_Byte 1|
000934b0  32 34 3d 3e 4f 53 5f 42  79 74 65 31 32 34 3e 2e  |24=>OS_Byte124>.|
000934c0  0a 0a 54 68 69 73 20 63  61 6c 6c 20 69 73 20 75  |..This call is u|
000934d0  73 65 66 75 6c 20 69 66  20 61 20 70 72 6f 67 72  |seful if a progr|
000934e0  61 6d 20 69 73 20 65 78  65 63 75 74 69 6e 67 20  |am is executing |
000934f0  69 6e 20 61 20 6c 6f 6f  70 20 77 68 69 63 68 20  |in a loop which |
00093500  74 68 65 20 75 73 65 72  20 6d 61 79 20 77 61 6e  |the user may wan|
00093510  74 20 74 6f 20 65 73 63  61 70 65 20 66 72 6f 6d  |t to escape from|
00093520  2c 20 62 75 74 20 69 73  6e 27 74 20 70 65 72 66  |, but isn't perf|
00093530  6f 72 6d 69 6e 67 20 61  6e 79 20 69 6e 70 75 74  |orming any input|
00093540  20 6f 70 65 72 61 74 69  6f 6e 73 20 77 68 69 63  | operations whic|
00093550  68 20 77 6f 75 6c 64 20  6c 65 74 20 69 74 20 6b  |h would let it k|
00093560  6e 6f 77 20 61 62 6f 75  74 20 74 68 65 20 65 73  |now about the es|
00093570  63 61 70 65 2e 0a 0a 4e  6f 74 65 20 74 68 61 74  |cape...Note that|
00093580  20 74 68 69 73 20 6d 61  79 20 62 65 20 63 61 6c  | this may be cal|
00093590  6c 65 64 20 66 72 6f 6d  20 61 6e 20 69 6e 74 65  |led from an inte|
000935a0  72 72 75 70 74 20 72 6f  75 74 69 6e 65 2e 20 48  |rrupt routine. H|
000935b0  6f 77 65 76 65 72 2c 20  3c 4f 53 5f 42 79 74 65  |owever, <OS_Byte|
000935c0  20 31 32 36 3d 3e 4f 53  5f 42 79 74 65 31 32 36  | 126=>OS_Byte126|
000935d0  3e 20 6d 61 79 20 6e 6f  74 20 62 65 2c 20 73 6f  |> may not be, so|
000935e0  20 69 66 20 61 6e 20 65  73 63 61 70 65 20 69 73  | if an escape is|
000935f0  20 64 65 74 65 63 74 65  64 20 75 6e 64 65 72 20  | detected under |
00093600  69 6e 74 65 72 72 75 70  74 73 2c 20 74 68 65 20  |interrupts, the |
00093610  69 6e 74 65 72 72 75 70  74 20 72 6f 75 74 69 6e  |interrupt routin|
00093620  65 20 6d 75 73 74 20 73  65 74 20 61 20 66 6c 61  |e must set a fla|
00093630  67 20 77 68 69 63 68 20  69 73 20 63 68 65 63 6b  |g which is check|
00093640  65 64 20 62 79 20 74 68  65 20 66 6f 72 65 67 72  |ed by the foregr|
00093650  6f 75 6e 64 20 74 61 73  6b 20 72 61 74 68 65 72  |ound task rather|
00093660  20 74 68 61 6e 20 74 72  79 20 74 6f 20 61 63 6b  | than try to ack|
00093670  6e 6f 77 6c 65 64 67 65  20 74 68 65 20 65 73 63  |nowledge the esc|
00093680  61 70 65 20 69 74 73 65  6c 66 2e 0a 44 41 54 41  |ape itself..DATA|
00093690  5d 03 00 00 4f 53 5f 52  65 61 64 50 61 6c 65 74  |]...OS_ReadPalet|
000936a0  74 65 20 20 28 26 32 46  29 0a 23 50 61 72 65 6e  |te  (&2F).#Paren|
000936b0  74 20 4f 53 5f 0a 3d 3e  09 52 30 20 3d 09 6c 6f  |t OS_.=>.R0 =.lo|
000936c0  67 69 63 61 6c 20 63 6f  6c 6f 75 72 0a 09 52 31  |gical colour..R1|
000936d0  20 3d 09 74 79 70 65 20  6f 66 20 63 6f 6c 6f 75  | =.type of colou|
000936e0  72 0a 0a 3c 3d 09 52 32  20 3d 09 73 65 74 74 69  |r..<=.R2 =.setti|
000936f0  6e 67 20 6f 66 20 66 69  72 73 74 20 66 6c 61 73  |ng of first flas|
00093700  68 69 6e 67 20 63 6f 6c  6f 75 72 0a 09 52 33 20  |hing colour..R3 |
00093710  3d 09 73 65 74 74 69 6e  67 20 6f 66 20 73 65 63  |=.setting of sec|
00093720  6f 6e 64 20 66 6c 61 73  68 69 6e 67 20 63 6f 6c  |ond flashing col|
00093730  6f 75 72 0a 0a 54 68 69  73 20 72 65 61 64 73 20  |our..This reads |
00093740  74 68 65 20 73 65 74 74  69 6e 67 20 6f 66 20 61  |the setting of a|
00093750  20 70 61 72 74 69 63 75  6c 61 72 20 63 6f 6c 6f  | particular colo|
00093760  75 72 20 74 68 61 74 20  69 73 20 73 65 6e 74 20  |ur that is sent |
00093770  74 6f 20 74 68 65 20 68  61 72 64 77 61 72 65 2e  |to the hardware.|
00093780  20 52 31 20 73 65 6c 65  63 74 73 20 77 68 65 74  | R1 selects whet|
00093790  68 65 72 20 74 68 65 20  6e 6f 72 6d 61 6c 20 63  |her the normal c|
000937a0  6f 6c 6f 75 72 20 28 31  36 29 2c 20 62 6f 72 64  |olour (16), bord|
000937b0  65 72 20 63 6f 6c 6f 75  72 20 28 32 34 29 20 6f  |er colour (24) o|
000937c0  72 20 70 6f 69 6e 74 65  72 20 63 6f 6c 6f 75 72  |r pointer colour|
000937d0  20 28 32 35 29 20 69 73  20 72 65 61 64 2e 20 49  | (25) is read. I|
000937e0  66 20 52 32 20 3d 20 52  33 20 6f 6e 20 65 78 69  |f R2 = R3 on exi|
000937f0  74 20 74 68 65 20 63 6f  6c 6f 75 72 20 72 65 71  |t the colour req|
00093800  75 65 73 74 65 64 20 69  73 20 61 20 6e 6f 6e 20  |uested is a non |
00093810  66 6c 61 73 68 69 6e 67  20 63 6f 6c 6f 75 72 2e  |flashing colour.|
00093820  20 54 68 65 20 76 61 6c  75 65 73 20 61 72 65 20  | The values are |
00093830  74 6f 20 69 6e 74 65 72  70 72 65 74 20 61 73 20  |to interpret as |
00093840  66 6f 6c 6c 6f 77 73 3a  0a 0a 23 54 61 62 0a 42  |follows:..#Tab.B|
00093850  69 74 73 09 4d 65 61 6e  69 6e 67 0a 23 4c 69 6e  |its.Meaning.#Lin|
00093860  65 0a 30 2d 36 09 56 61  6c 75 65 20 73 68 6f 77  |e.0-6.Value show|
00093870  69 6e 67 20 68 6f 77 20  63 6f 6c 6f 75 72 20 77  |ing how colour w|
00093880  61 73 20 70 72 6f 67 72  61 6d 6d 65 64 0a 37 09  |as programmed.7.|
00093890  53 75 70 72 65 6d 61 63  79 20 62 69 74 0a 38 2d  |Supremacy bit.8-|
000938a0  31 35 09 41 6d 6f 75 6e  74 20 6f 66 20 72 65 64  |15.Amount of red|
000938b0  0a 31 36 2d 32 33 09 41  6d 6f 75 6e 74 20 6f 66  |.16-23.Amount of|
000938c0  20 67 72 65 65 6e 0a 32  34 2d 33 31 09 41 6d 6f  | green.24-31.Amo|
000938d0  75 6e 74 20 6f 66 20 62  6c 75 65 20 20 0a 0a 54  |unt of blue  ..T|
000938e0  68 65 20 62 6f 74 74 6f  6d 20 62 79 74 65 20 72  |he bottom byte r|
000938f0  65 74 75 72 6e 73 20 74  68 65 20 73 65 63 6f 6e  |eturns the secon|
00093900  64 20 70 61 72 61 6d 65  74 65 72 20 74 6f 20 74  |d parameter to t|
00093910  68 65 20 3c 56 44 55 20  31 39 3d 3e 56 44 55 3a  |he <VDU 19=>VDU:|
00093920  31 39 3e 20 63 6f 6d 6d  61 6e 64 2e 20 46 6f 72  |19> command. For|
00093930  20 65 78 61 6d 70 6c 65  3a 0a 0a 23 54 61 62 0a  | example:..#Tab.|
00093940  56 61 6c 75 65 09 4d 65  61 6e 69 6e 67 0a 23 4c  |Value.Meaning.#L|
00093950  69 6e 65 0a 30 2d 31 35  09 41 63 74 75 61 6c 20  |ine.0-15.Actual |
00093960  63 6f 6c 6f 75 72 20 28  42 42 43 20 63 6f 6d 70  |colour (BBC comp|
00093970  61 74 69 62 6c 65 29 0a  31 36 09 44 65 66 69 6e  |atible).16.Defin|
00093980  65 64 20 62 79 20 67 69  76 69 6e 67 20 61 6d 6f  |ed by giving amo|
00093990  75 6e 74 73 20 6f 66 20  52 20 47 20 61 6e 64 20  |unts of R G and |
000939a0  42 0a 31 37 2d 31 38 09  46 6c 61 73 68 69 6e 67  |B.17-18.Flashing|
000939b0  20 63 6f 6c 6f 75 72 20  64 65 66 69 6e 65 64 20  | colour defined |
000939c0  62 79 20 67 69 76 69 6e  67 20 61 6d 6f 75 6e 74  |by giving amount|
000939d0  73 20 6f 66 20 72 65 64  2c 20 67 72 65 65 6e 20  |s of red, green |
000939e0  61 6e 64 20 62 6c 75 65  0a 00 00 00 44 41 54 41  |and blue....DATA|
000939f0  4d 04 00 00 4d 6f 64 65  20 76 61 72 69 61 62 6c  |M...Mode variabl|
00093a00  65 20 6e 75 6d 62 65 72  73 0a 23 50 61 72 65 6e  |e numbers.#Paren|
00093a10  74 20 4f 53 5f 52 65 61  64 4d 6f 64 65 56 61 72  |t OS_ReadModeVar|
00093a20  69 61 62 6c 65 0a 56 61  72 09 4e 61 6d 65 09 09  |iable.Var.Name..|
00093a30  4d 65 61 6e 69 6e 67 0a  23 4c 69 6e 65 0a 30 09  |Meaning.#Line.0.|
00093a40  4d 6f 64 65 46 6c 61 67  73 09 42 69 74 73 20 6f  |ModeFlags.Bits o|
00093a50  66 20 72 65 73 75 6c 74  3a 0a 09 20 09 09 20 20  |f result:.. ..  |
00093a60  30 20 20 31 20 2d 3e 09  6e 6f 6e 20 67 72 61 70  |0  1 ->.non grap|
00093a70  68 69 63 73 20 6d 6f 64  65 0a 09 20 09 09 20 20  |hics mode.. ..  |
00093a80  31 20 20 31 20 2d 3e 09  74 65 6c 65 74 65 78 74  |1  1 ->.teletext|
00093a90  20 6d 6f 64 65 0a 09 20  09 09 20 20 32 20 20 31  | mode.. ..  2  1|
00093aa0  20 2d 3e 09 67 61 70 20  6d 6f 64 65 20 28 67 61  | ->.gap mode (ga|
00093ab0  70 20 62 65 74 77 2e 20  76 64 75 34 20 6c 69 6e  |p betw. vdu4 lin|
00093ac0  65 73 29 0a 09 20 09 09  20 20 33 20 20 31 20 2d  |es).. ..  3  1 -|
00093ad0  3e 09 27 42 42 43 27 20  67 61 70 20 6d 6f 64 65  |>.'BBC' gap mode|
00093ae0  20 28 33 20 26 20 36 29  2c 20 30 20 2d 3e 20 6e  | (3 & 6), 0 -> n|
00093af0  6f 6e 20 67 61 70 0a 09  20 09 09 20 20 34 20 20  |on gap.. ..  4  |
00093b00  31 20 2d 3e 09 68 69 2d  72 65 73 20 6d 6f 6e 6f  |1 ->.hi-res mono|
00093b10  20 6d 6f 64 65 0a 09 20  09 09 20 20 35 20 20 31  | mode.. ..  5  1|
00093b20  20 2d 3e 09 64 6f 75 62  6c 65 20 68 65 69 67 68  | ->.double heigh|
00093b30  74 20 56 44 55 20 63 68  61 72 73 2c 20 30 20 2d  |t VDU chars, 0 -|
00093b40  3e 20 6e 6f 72 6d 61 6c  0a 09 20 09 09 20 20 36  |> normal.. ..  6|
00093b50  20 20 31 20 2d 3e 09 68  61 72 64 77 61 72 65 20  |  1 ->.hardware |
00093b60  73 63 72 6f 6c 6c 20 6e  65 76 65 72 20 75 73 65  |scroll never use|
00093b70  64 0a 09 20 09 09 20 20  38 20 20 31 20 2d 3e 09  |d.. ..  8  1 ->.|
00093b80  66 75 6c 6c 79 20 64 65  66 69 6e 61 62 6c 65 20  |fully definable |
00093b90  38 20 62 69 74 20 70 61  6c 65 74 74 65 0a 31 09  |8 bit palette.1.|
00093ba0  53 63 72 52 43 6f 6c 09  09 4e 75 6d 62 65 72 20  |ScrRCol..Number |
00093bb0  6f 66 20 74 65 78 74 63  6f 6c 75 6d 6e 73 20 2d  |of textcolumns -|
00093bc0  31 0a 32 09 53 63 72 42  52 6f 77 09 09 4e 75 6d  |1.2.ScrBRow..Num|
00093bd0  62 65 72 20 6f 66 20 74  65 78 74 72 6f 77 73 20  |ber of textrows |
00093be0  2d 31 0a 33 09 4e 43 6f  6c 6f 75 72 09 09 3c 4d  |-1.3.NColour..<M|
00093bf0  61 78 69 6d 75 6d 20 6c  6f 67 69 63 61 6c 20 63  |aximum logical c|
00093c00  6f 6c 6f 75 72 3d 3e 2e  63 6f 6c 6f 75 72 73 3e  |olour=>.colours>|
00093c10  0a 34 09 58 45 69 67 46  61 63 74 6f 72 09 53 63  |.4.XEigFactor.Sc|
00093c20  72 65 65 6e 78 20 3d 20  6f 73 78 20 3e 3e 20 58  |reenx = osx >> X|
00093c30  45 69 67 46 61 63 74 6f  72 0a 35 09 59 45 69 67  |EigFactor.5.YEig|
00093c40  46 61 63 74 6f 72 09 53  63 72 65 65 6e 79 20 3d  |Factor.Screeny =|
00093c50  20 6f 73 79 20 3e 3e 20  59 45 69 67 46 61 63 74  | osy >> YEigFact|
00093c60  6f 72 0a 36 09 4c 69 6e  65 4c 65 6e 67 74 68 09  |or.6.LineLength.|
00093c70  42 79 74 65 6c 65 6e 67  74 68 20 6f 66 20 6f 6e  |Bytelength of on|
00093c80  65 20 70 69 78 65 6c 2d  6c 69 6e 65 0a 37 09 53  |e pixel-line.7.S|
00093c90  63 72 65 65 6e 53 69 7a  65 09 42 79 74 65 73 69  |creenSize.Bytesi|
00093ca0  7a 65 20 6f 66 20 65 6e  74 69 72 65 20 73 63 72  |ze of entire scr|
00093cb0  65 65 6e 0a 38 09 59 53  68 66 74 46 61 63 74 6f  |een.8.YShftFacto|
00093cc0  72 09 4b 65 70 74 20 66  6f 72 20 63 6f 6d 70 61  |r.Kept for compa|
00093cd0  62 69 6c 69 74 79 2e 20  44 6f 6e 27 74 20 75 73  |bility. Don't us|
00093ce0  65 2e 0a 39 09 4c 6f 67  32 42 50 50 09 09 42 69  |e..9.Log2BPP..Bi|
00093cf0  74 73 20 70 65 72 20 70  69 78 65 6c 20 3d 20 31  |ts per pixel = 1|
00093d00  20 5c 3c 5c 3c 20 4c 6f  67 32 42 50 50 0a 31 30  | \<\< Log2BPP.10|
00093d10  09 4c 6f 67 32 42 50 43  09 09 42 79 74 65 73 20  |.Log2BPC..Bytes |
00093d20  70 65 72 20 63 68 61 72  20 3d 20 31 20 5c 3c 5c  |per char = 1 \<\|
00093d30  3c 20 4c 6f 67 32 42 50  43 0a 31 31 09 58 57 69  |< Log2BPC.11.XWi|
00093d40  6e 64 4c 69 6d 69 74 09  4e 75 6d 62 65 72 20 6f  |ndLimit.Number o|
00093d50  66 20 78 20 70 69 78 65  6c 73 20 6f 6e 20 73 63  |f x pixels on sc|
00093d60  72 65 65 6e 20 2d 31 0a  31 32 09 59 57 69 6e 64  |reen -1.12.YWind|
00093d70  4c 69 6d 69 74 09 4e 75  6d 62 65 72 20 6f 66 20  |Limit.Number of |
00093d80  79 20 70 69 78 65 6c 73  20 6f 6e 20 73 63 72 65  |y pixels on scre|
00093d90  65 6e 20 2d 31 0a 23 0a  23 53 75 62 70 61 67 65  |en -1.#.#Subpage|
00093da0  20 63 6f 6c 6f 75 72 73  0a 4d 61 78 69 6d 75 6d  | colours.Maximum|
00093db0  20 6c 6f 67 69 63 61 6c  20 63 6f 6c 6f 75 72 0a  | logical colour.|
00093dc0  56 61 6c 75 65 09 4e 75  6d 62 65 72 20 6f 66 20  |Value.Number of |
00093dd0  63 6f 6c 6f 75 72 73 0a  23 4c 69 6e 65 0a 31 09  |colours.#Line.1.|
00093de0  32 0a 33 09 34 0a 31 35  09 31 36 0a 36 33 09 32  |2.3.4.15.16.63.2|
00093df0  35 36 20 28 62 75 74 20  69 6e 20 62 6c 6f 63 6b  |56 (but in block|
00093e00  73 20 6f 66 20 34 29 0a  32 35 35 09 32 35 36 20  |s of 4).255.256 |
00093e10  28 66 75 6c 6c 79 20 64  65 66 69 6e 61 62 6c 65  |(fully definable|
00093e20  29 0a 36 35 35 33 35 09  31 36 20 62 69 74 0a 2d  |).65535.16 bit.-|
00093e30  31 09 32 34 20 62 69 74  0a 00 00 00 44 49 52 24  |1.24 bit....DIR$|
00093e40  94 03 00 00 94 03 00 00  d0 41 09 00 47 ff ff ff  |.........A..G...|
00093e50  ff 78 8f 09 88 00 00 00  13 00 00 00 00 00 00 00  |.x..............|
00093e60  21 52 6f 6f 74 00 00 00  58 42 09 00 47 fd ff ff  |!Root...XB..G...|
00093e70  a5 d3 bd cd c1 00 00 00  13 00 00 00 00 00 00 00  |................|
00093e80  30 00 00 00 1c 43 09 00  47 fd ff ff 35 d8 bd cd  |0....C..G...5...|
00093e90  fc 00 00 00 13 00 00 00  00 00 00 00 31 00 00 00  |............1...|
00093ea0  18 44 09 00 47 fd ff ff  17 70 ad cd 46 01 00 00  |.D..G....p..F...|
00093eb0  13 00 00 00 00 00 00 00  31 30 00 00 60 45 09 00  |........10..`E..|
00093ec0  48 fd ff ff 95 61 2c 1f  40 01 00 00 13 00 00 00  |H....a,.@.......|
00093ed0  00 00 00 00 31 34 00 00  a0 46 09 00 48 fd ff ff  |....14...F..H...|
00093ee0  e3 bf 6d 26 77 01 00 00  13 00 00 00 00 00 00 00  |..m&w...........|
00093ef0  31 34 2c 31 00 00 00 00  18 48 09 00 47 fd ff ff  |14,1.....H..G...|
00093f00  14 5e 01 83 cb 00 00 00  13 00 00 00 00 00 00 00  |.^..............|
00093f10  32 00 00 00 e4 48 09 00  47 fd ff ff 02 e3 bd cd  |2....H..G.......|
00093f20  77 01 00 00 13 00 00 00  00 00 00 00 32 32 00 00  |w...........22..|
00093f30  5c 4a 09 00 47 fd ff ff  b0 a0 ad cd 6a 01 00 00  |\J..G.......j...|
00093f40  13 00 00 00 00 00 00 00  39 00 00 00 c8 4b 09 00  |........9....K..|
00093f50  48 fd ff ff c8 7e 6e 26  72 02 00 00 13 00 00 00  |H....~n&r.......|
00093f60  00 00 00 00 69 6e 64 65  78 00 00 00 3c 4e 09 00  |....index...<N..|
00093f70  48 fd ff ff c7 e5 2d 1f  0a 01 00 00 13 00 00 00  |H.....-.........|
00093f80  00 00 00 00 31 31 00 00  48 4f 09 00 48 fd ff ff  |....11..HO..H...|
00093f90  a6 49 2e 1f 17 01 00 00  13 00 00 00 00 00 00 00  |.I..............|
00093fa0  31 32 00 00 60 50 09 00  48 fd ff ff f8 29 2e 1f  |12..`P..H....)..|
00093fb0  94 01 00 00 13 00 00 00  00 00 00 00 31 33 00 00  |............13..|
00093fc0  f4 51 09 00 48 fd ff ff  83 c1 6d 26 19 01 00 00  |.Q..H.....m&....|
00093fd0  13 00 00 00 00 00 00 00  31 34 2c 30 00 00 00 00  |........14,0....|
00093fe0  10 53 09 00 48 fd ff ff  9d d4 2c 1f cc 01 00 00  |.S..H.....,.....|
00093ff0  13 00 00 00 00 00 00 00  31 34 2c 32 00 00 00 00  |........14,2....|
00094000  dc 54 09 00 48 fd ff ff  bb aa 2c 1f 9f 01 00 00  |.T..H.....,.....|
00094010  13 00 00 00 00 00 00 00  31 34 2c 33 00 00 00 00  |........14,3....|
00094020  7c 56 09 00 48 fd ff ff  cc dc 6d 26 2e 02 00 00  ||V..H.....m&....|
00094030  13 00 00 00 00 00 00 00  31 35 00 00 ac 58 09 00  |........15...X..|
00094040  48 fd ff ff 01 a3 2d 1f  67 01 00 00 13 00 00 00  |H.....-.g.......|
00094050  00 00 00 00 31 35 2c 31  35 00 00 00 14 5a 09 00  |....15,15....Z..|
00094060  48 fd ff ff 6f be 2d 1f  84 01 00 00 13 00 00 00  |H...o.-.........|
00094070  00 00 00 00 31 35 2c 32  34 00 00 00 98 5b 09 00  |....15,24....[..|
00094080  48 fd ff ff aa 60 2d 1f  32 01 00 00 13 00 00 00  |H....`-.2.......|
00094090  00 00 00 00 31 35 2c 38  00 00 00 00 cc 5c 09 00  |....15,8.....\..|
000940a0  48 fd ff ff bb 63 31 1f  b0 01 00 00 13 00 00 00  |H....c1.........|
000940b0  00 00 00 00 32 31 00 00  7c 5e 09 00 48 fd ff ff  |....21..|^..H...|
000940c0  e9 49 2f 1f be 02 00 00  13 00 00 00 00 00 00 00  |.I/.............|
000940d0  32 31 2c 30 00 00 00 00  3c 61 09 00 48 fd ff ff  |21,0....<a..H...|
000940e0  b2 57 31 1f 80 02 00 00  13 00 00 00 00 00 00 00  |.W1.............|
000940f0  32 31 2c 31 00 00 00 00  bc 63 09 00 48 fd ff ff  |21,1.....c..H...|
00094100  17 0c 30 1f 1f 01 00 00  13 00 00 00 00 00 00 00  |..0.............|
00094110  32 31 2c 32 00 00 00 00  dc 64 09 00 48 fd ff ff  |21,2.....d..H...|
00094120  79 6f 30 1f 72 01 00 00  13 00 00 00 00 00 00 00  |yo0.r...........|
00094130  32 31 2c 33 00 00 00 00  50 66 09 00 48 fd ff ff  |21,3....Pf..H...|
00094140  e8 5c 30 1f 18 01 00 00  13 00 00 00 00 00 00 00  |.\0.............|
00094150  32 31 2c 34 00 00 00 00  68 67 09 00 48 fd ff ff  |21,4....hg..H...|
00094160  b1 48 6e 26 1e 02 00 00  13 00 00 00 00 00 00 00  |.Hn&............|
00094170  32 31 2c 35 00 00 00 00  88 69 09 00 48 fd ff ff  |21,5.....i..H...|
00094180  47 c6 30 1f 4c 01 00 00  13 00 00 00 00 00 00 00  |G.0.L...........|
00094190  32 31 2c 36 00 00 00 00  d4 6a 09 00 48 fd ff ff  |21,6.....j..H...|
000941a0  19 b6 fe 1c ec 01 00 00  13 00 00 00 00 00 00 00  |................|
000941b0  33 00 00 00 c0 6c 09 00  48 fd ff ff ed 9c fe 1c  |3....l..H.......|
000941c0  a4 01 00 00 13 00 00 00  00 00 00 00 34 00 00 00  |............4...|
000941d0  44 41 54 41 88 00 00 00  4f 53 5f 57 6f 72 64 20  |DATA....OS_Word |
000941e0  20 28 26 30 37 29 0a 23  50 61 72 65 6e 74 20 4f  | (&07).#Parent O|
000941f0  53 5f 0a 3d 3e 09 52 30  20 3d 09 3c 72 65 61 73  |S_.=>.R0 =.<reas|
00094200  6f 6e 20 63 6f 64 65 3d  3e 6f 73 5f 77 6f 72 64  |on code=>os_word|
00094210  69 6e 64 65 78 3e 0a 09  52 31 20 3d 09 70 61 72  |index>..R1 =.par|
00094220  61 6d 65 74 65 72 20 62  6c 6f 63 6b 0a 0a 41 63  |ameter block..Ac|
00094230  74 69 6f 6e 20 74 61 6b  65 6e 20 64 65 70 65 6e  |tion taken depen|
00094240  64 73 20 6f 6e 20 72 65  61 73 6f 6e 20 63 6f 64  |ds on reason cod|
00094250  65 20 69 6e 20 52 30 2e  44 41 54 41 c1 00 00 00  |e in R0.DATA....|
00094260  4f 53 5f 57 6f 72 64 20  30 0a 23 50 61 72 65 6e  |OS_Word 0.#Paren|
00094270  74 20 4f 53 5f 57 6f 72  64 0a 3d 3e 09 52 30 20  |t OS_Word.=>.R0 |
00094280  3d 09 30 0a 09 52 31 20  3d 09 62 75 66 66 65 72  |=.0..R1 =.buffer|
00094290  3a 0a 09 20 20 30 20 54  77 6f 20 62 79 74 65 20  |:..  0 Two byte |
000942a0  62 75 66 66 65 72 20 61  64 64 72 65 73 73 0a 09  |buffer address..|
000942b0  20 20 32 20 53 69 7a 65  20 6f 66 20 62 75 66 66  |  2 Size of buff|
000942c0  65 72 0a 09 20 20 33 20  4c 6f 77 65 73 74 20 41  |er..  3 Lowest A|
000942d0  53 43 49 49 20 63 6f 64  65 0a 09 20 20 34 20 48  |SCII code..  4 H|
000942e0  69 67 68 65 73 74 20 41  53 43 49 49 20 63 6f 64  |ighest ASCII cod|
000942f0  65 0a 0a 44 6f 6e 27 74  20 75 73 65 20 74 68 69  |e..Don't use thi|
00094300  73 20 53 57 49 2c 20 75  73 65 20 3c 4f 53 5f 52  |s SWI, use <OS_R|
00094310  65 61 64 4c 69 6e 65 3e  2e 00 00 00 44 41 54 41  |eadLine>....DATA|
00094320  fc 00 00 00 4f 53 5f 57  6f 72 64 20 31 0a 23 50  |....OS_Word 1.#P|
00094330  61 72 65 6e 74 20 4f 53  5f 57 6f 72 64 0a 3d 3e  |arent OS_Word.=>|
00094340  09 52 30 20 3d 09 31 0a  09 52 31 20 3d 09 70 6f  |.R0 =.1..R1 =.po|
00094350  69 6e 74 65 72 20 74 6f  20 66 69 76 65 20 62 79  |inter to five by|
00094360  74 65 20 62 6c 6f 63 6b  0a 0a 54 68 69 73 20 53  |te block..This S|
00094370  57 49 20 72 65 61 64 73  20 74 68 65 20 73 79 73  |WI reads the sys|
00094380  74 65 6d 20 63 6c 6f 63  6b 2e 20 4f 6e 20 65 78  |tem clock. On ex|
00094390  69 74 2c 20 74 68 65 20  62 75 66 66 65 72 20 63  |it, the buffer c|
000943a0  6f 6e 74 61 69 6e 73 20  66 69 76 65 20 62 79 74  |ontains five byt|
000943b0  65 20 73 79 73 74 65 6d  20 63 6c 6f 63 6b 2c 20  |e system clock, |
000943c0  77 69 74 68 20 4c 53 42  20 66 69 72 73 74 2e 0a  |with LSB first..|
000943d0  0a 54 68 65 20 63 6c 6f  63 6b 20 69 73 20 69 6e  |.The clock is in|
000943e0  63 72 65 6d 65 6e 74 65  64 20 31 30 30 20 74 69  |cremented 100 ti|
000943f0  6d 65 73 20 61 20 73 65  63 6f 6e 64 2c 20 61 6e  |mes a second, an|
00094400  64 20 72 65 73 65 74 20  6f 6e 20 61 20 68 61 72  |d reset on a har|
00094410  64 20 62 72 65 61 6b 2e  44 41 54 41 46 01 00 00  |d break.DATAF...|
00094420  4f 53 5f 57 6f 72 64 20  31 30 0a 23 50 61 72 65  |OS_Word 10.#Pare|
00094430  6e 74 20 4f 53 5f 57 6f  72 64 0a 3d 3e 09 52 30  |nt OS_Word.=>.R0|
00094440  20 3d 09 31 30 0a 09 52  31 20 3d 09 39 20 62 79  | =.10..R1 =.9 by|
00094450  74 65 20 62 6c 6f 63 6b  20 3a 0a 09 20 09 20 20  |te block :.. .  |
00094460  30 20 63 68 61 72 61 63  74 65 72 20 63 6f 64 65  |0 character code|
00094470  0a 3c 3d 09 52 31 20 3d  09 62 75 66 66 65 72 20  |.<=.R1 =.buffer |
00094480  63 6f 6e 74 61 69 6e 69  6e 67 20 3a 0a 09 20 09  |containing :.. .|
00094490  20 20 31 20 74 6f 70 20  72 6f 77 20 6f 66 20 64  |  1 top row of d|
000944a0  65 66 2e 0a 09 20 09 20  20 2e 0a 09 20 09 20 20  |ef... .  ... .  |
000944b0  2e 0a 09 20 09 20 20 38  20 62 6f 74 74 6f 6d 20  |... .  8 bottom |
000944c0  72 6f 77 20 6f 66 20 64  65 66 2e 0a 0a 54 68 69  |row of def...Thi|
000944d0  73 20 53 57 49 20 72 65  61 64 73 20 61 20 63 68  |s SWI reads a ch|
000944e0  61 72 61 63 74 65 72 20  64 65 66 69 6e 69 74 69  |aracter definiti|
000944f0  6f 6e 2e 20 56 61 6c 69  64 20 76 61 6c 75 65 73  |on. Valid values|
00094500  20 61 72 65 20 33 32 2d  31 32 36 20 61 6e 64 20  | are 32-126 and |
00094510  31 32 38 2d 32 35 36 2e  20 56 61 6c 75 65 73 20  |128-256. Values |
00094520  32 2d 35 20 72 65 74 75  72 6e 73 20 45 43 46 20  |2-5 returns ECF |
00094530  70 61 74 74 65 72 6e 20  31 2d 34 2e 20 56 61 6c  |pattern 1-4. Val|
00094540  75 65 20 36 20 72 65 74  75 72 6e 73 20 64 6f 74  |ue 6 returns dot|
00094550  2d 64 61 73 68 20 70 61  74 74 65 72 6e 2e 00 00  |-dash pattern...|
00094560  44 41 54 41 40 01 00 00  4f 53 5f 57 6f 72 64 20  |DATA@...OS_Word |
00094570  31 34 0a 23 50 61 72 65  6e 74 20 4f 53 5f 57 6f  |14.#Parent OS_Wo|
00094580  72 64 0a 3d 3e 09 52 30  20 3d 09 31 34 0a 09 52  |rd.=>.R0 =.14..R|
00094590  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 70  |1 =.pointer to p|
000945a0  61 72 61 6d 65 74 65 72  20 62 6c 6f 63 6b 0a 09  |arameter block..|
000945b0  52 31 2b 30 20 3d 20 72  65 61 73 6f 6e 20 63 6f  |R1+0 = reason co|
000945c0  64 65 20 3a 0a 09 20 20  30 20 3a 09 3c 52 65 61  |de :..  0 :.<Rea|
000945d0  64 20 73 6f 66 74 2d 63  6f 70 79 20 6f 66 20 43  |d soft-copy of C|
000945e0  4d 4f 53 20 63 6c 6f 63  6b 20 61 73 20 73 74 72  |MOS clock as str|
000945f0  69 6e 67 3d 3e 4f 53 5f  57 6f 72 64 31 34 2c 30  |ing=>OS_Word14,0|
00094600  3e 0a 09 20 20 31 20 3a  09 3c 52 65 61 64 20 43  |>..  1 :.<Read C|
00094610  4d 4f 53 20 63 6c 6f 63  6b 20 61 73 20 42 43 44  |MOS clock as BCD|
00094620  3d 3e 4f 53 5f 57 6f 72  64 31 34 2c 31 3e 0a 09  |=>OS_Word14,1>..|
00094630  20 20 32 20 3a 09 3c 43  6f 6e 76 65 72 74 20 42  |  2 :.<Convert B|
00094640  43 44 20 74 6f 20 73 74  72 69 6e 67 3d 3e 4f 53  |CD to string=>OS|
00094650  5f 57 6f 72 64 31 34 2c  32 3e 0a 09 20 20 33 20  |_Word14,2>..  3 |
00094660  3a 09 3c 52 65 61 64 20  73 6f 66 74 2d 63 6f 70  |:.<Read soft-cop|
00094670  79 20 6f 66 20 43 4d 4f  53 20 63 6c 6f 63 6b 20  |y of CMOS clock |
00094680  61 73 20 35 2d 62 79 74  65 20 69 6e 74 65 67 65  |as 5-byte intege|
00094690  72 3d 3e 4f 53 5f 57 6f  72 64 31 34 2c 33 3e 0a  |r=>OS_Word14,3>.|
000946a0  44 41 54 41 77 01 00 00  4f 53 5f 57 6f 72 64 20  |DATAw...OS_Word |
000946b0  31 34 2c 31 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |14,1.#Parent OS_|
000946c0  57 6f 72 64 0a 3d 3e 09  52 30 20 3d 09 31 34 0a  |Word.=>.R0 =.14.|
000946d0  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
000946e0  20 37 2d 62 79 74 65 20  62 6c 6f 63 6b 20 63 6f  | 7-byte block co|
000946f0  6e 74 61 69 6e 69 6e 67  20 3a 0a 09 20 09 20 09  |ntaining :.. . .|
00094700  30 20 3d 20 31 0a 0a 3c  3d 09 52 31 20 3d 09 70  |0 = 1..<=.R1 =.p|
00094710  6f 69 6e 74 65 72 20 74  6f 20 62 6c 6f 63 6b 20  |ointer to block |
00094720  63 6f 6e 74 61 69 6e 69  6e 67 20 3a 0a 09 09 20  |containing :... |
00094730  09 30 20 3d 20 79 65 61  72 09 09 28 30 2d 39 39  |.0 = year..(0-99|
00094740  29 0a 09 09 20 09 31 20  3d 20 6d 6f 6e 74 68 09  |)... .1 = month.|
00094750  09 28 31 2d 31 32 29 0a  09 09 20 09 32 20 3d 20  |.(1-12)... .2 = |
00094760  64 61 79 20 6f 66 20 6d  6f 6e 74 68 09 28 31 2d  |day of month.(1-|
00094770  33 31 29 0a 09 09 20 09  33 20 3d 20 64 61 79 20  |31)... .3 = day |
00094780  6f 66 20 77 65 65 6b 09  09 28 31 2d 37 2c 20 31  |of week..(1-7, 1|
00094790  3d 53 75 6e 64 61 79 29  0a 09 09 20 09 34 20 3d  |=Sunday)... .4 =|
000947a0  20 68 6f 75 72 09 09 28  30 2d 32 33 29 0a 09 09  | hour..(0-23)...|
000947b0  20 09 35 20 3d 20 6d 69  6e 75 74 65 09 09 28 30  | .5 = minute..(0|
000947c0  2d 35 39 29 0a 09 09 20  09 36 20 3d 20 73 65 63  |-59)... .6 = sec|
000947d0  6f 6e 64 09 09 28 30 2d  35 39 29 0a 0a 54 68 69  |ond..(0-59)..Thi|
000947e0  73 20 4f 53 5f 57 6f 72  64 20 72 65 61 64 73 20  |s OS_Word reads |
000947f0  74 68 65 20 74 69 6d 65  20 64 69 72 65 63 74 6c  |the time directl|
00094800  79 20 66 72 6f 6d 20 74  68 65 20 43 4d 4f 53 20  |y from the CMOS |
00094810  63 6c 6f 63 6b 2e 0a 00  44 41 54 41 cb 00 00 00  |clock...DATA....|
00094820  4f 53 5f 57 6f 72 64 20  32 0a 3d 3e 09 52 30 20  |OS_Word 2.=>.R0 |
00094830  3d 09 32 0a 09 52 31 20  3d 09 66 69 76 65 20 62  |=.2..R1 =.five b|
00094840  79 74 65 20 62 6c 6f 63  6b 20 63 6f 6e 74 61 69  |yte block contai|
00094850  6e 69 6e 67 20 6e 65 77  20 73 79 73 74 65 6d 20  |ning new system |
00094860  63 6c 6f 63 6b 20 76 61  6c 75 65 2c 20 4c 53 42  |clock value, LSB|
00094870  20 66 69 72 73 74 0a 0a  54 68 69 73 20 53 57 49  | first..This SWI|
00094880  20 77 72 69 74 65 73 20  74 68 65 20 73 79 73 74  | writes the syst|
00094890  65 6d 20 63 6c 6f 63 6b  2e 20 0a 0a 54 68 65 20  |em clock. ..The |
000948a0  63 6c 6f 63 6b 20 69 73  20 69 6e 63 72 65 6d 65  |clock is increme|
000948b0  6e 74 65 64 20 31 30 30  20 74 69 6d 65 73 20 61  |nted 100 times a|
000948c0  20 73 65 63 6f 6e 64 2c  20 61 6e 64 20 72 65 73  | second, and res|
000948d0  65 74 20 6f 6e 20 61 20  68 61 72 64 20 62 72 65  |et on a hard bre|
000948e0  61 6b 2e 00 44 41 54 41  77 01 00 00 4f 53 5f 57  |ak..DATAw...OS_W|
000948f0  6f 72 64 20 32 32 0a 23  50 61 72 65 6e 74 20 4f  |ord 22.#Parent O|
00094900  53 5f 57 6f 72 64 0a 3d  3e 09 52 30 20 3d 09 32  |S_Word.=>.R0 =.2|
00094910  32 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |2..R1 =.pointer |
00094920  74 6f 20 66 69 76 65 2d  62 79 74 65 20 62 75 66  |to five-byte buf|
00094930  66 65 72 3a 0a 09 20 20  30 20 54 79 70 65 0a 09  |fer:..  0 Type..|
00094940  20 20 31 20 55 6e 2d 41  6c 69 67 6e 65 64 20 77  |  1 Un-Aligned w|
00094950  6f 72 64 20 63 6f 6e 74  61 69 6e 69 6e 67 20 6e  |ord containing n|
00094960  65 77 20 73 63 72 65 65  6e 20 6f 66 66 73 65 74  |ew screen offset|
00094970  2e 0a 0a 54 68 69 73 20  53 57 49 20 73 65 74 73  |...This SWI sets|
00094980  20 75 70 20 61 20 6e 65  77 20 73 63 72 65 65 6e  | up a new screen|
00094990  20 62 61 73 65 20 61 64  64 72 65 73 73 2e 20 49  | base address. I|
000949a0  74 20 69 73 20 67 69 76  65 6e 20 61 73 20 74 68  |t is given as th|
000949b0  65 20 6f 66 66 73 65 74  20 66 72 6f 6d 20 74 68  |e offset from th|
000949c0  65 20 62 61 73 65 20 6f  66 20 74 68 65 20 73 63  |e base of the sc|
000949d0  72 65 65 6e 2e 20 4f 66  66 73 65 74 20 6d 75 73  |reen. Offset mus|
000949e0  74 20 62 65 20 64 69 76  69 73 69 62 6c 65 20 62  |t be divisible b|
000949f0  79 20 31 36 2e 0a 54 79  70 65 20 3a 0a 20 20 42  |y 16..Type :.  B|
00094a00  69 74 20 30 20 20 69 66  20 73 65 74 3a 20 53 65  |it 0  if set: Se|
00094a10  74 20 73 63 72 65 65 6e  20 62 61 73 65 20 75 73  |t screen base us|
00094a20  65 64 20 62 79 20 56 44  55 0a 20 20 42 69 74 20  |ed by VDU.  Bit |
00094a30  31 20 20 69 66 20 73 65  74 3a 20 53 65 74 20 73  |1  if set: Set s|
00094a40  63 72 65 65 6e 20 62 61  73 65 20 75 73 65 64 20  |creen base used |
00094a50  62 79 20 68 61 72 64 77  61 72 65 00 44 41 54 41  |by hardware.DATA|
00094a60  6a 01 00 00 4f 53 5f 57  6f 72 64 20 39 0a 3d 3e  |j...OS_Word 9.=>|
00094a70  09 52 30 20 3d 09 39 0a  09 52 31 20 3d 09 70 6f  |.R0 =.9..R1 =.po|
00094a80  69 6e 74 65 72 20 74 6f  20 66 69 76 65 20 62 79  |inter to five by|
00094a90  74 65 20 62 6c 6f 63 6b  3a 0a 09 09 20 20 30 20  |te block:...  0 |
00094aa0  54 77 6f 20 62 79 74 65  20 78 20 63 6f 6f 72 64  |Two byte x coord|
00094ab0  2e 0a 09 09 20 20 32 20  54 77 6f 20 62 79 74 65  |....  2 Two byte|
00094ac0  20 79 20 63 6f 6f 72 64  2e 0a 3c 3d 09 52 31 2b  | y coord..<=.R1+|
00094ad0  34 20 63 6f 6e 74 61 69  6e 73 20 6c 6f 67 69 63  |4 contains logic|
00094ae0  61 6c 20 63 6f 6c 6f 75  72 20 6f 66 20 73 70 65  |al colour of spe|
00094af0  63 69 66 69 65 64 20 70  69 78 65 6c 2e 0a 0a 54  |cified pixel...T|
00094b00  68 69 73 20 53 57 49 20  72 65 74 75 72 6e 73 20  |his SWI returns |
00094b10  74 68 65 20 6c 6f 67 69  63 61 6c 20 63 6f 6c 6f  |the logical colo|
00094b20  75 72 20 61 74 20 74 68  65 20 73 70 65 63 69 66  |ur at the specif|
00094b30  69 65 64 20 70 69 78 65  6c 2e 20 26 46 46 20 69  |ied pixel. &FF i|
00094b40  73 20 72 65 74 75 72 6e  65 64 20 69 66 20 3a 0a  |s returned if :.|
00094b50  20 20 53 63 72 65 65 6e  20 69 73 20 69 6e 20 61  |  Screen is in a|
00094b60  20 32 35 36 2d 63 6f 6c  6f 75 72 20 6d 6f 64 65  | 256-colour mode|
00094b70  2e 0a 20 20 50 69 78 65  6c 20 69 73 20 6f 66 66  |..  Pixel is off|
00094b80  20 73 63 72 65 65 6e 0a  20 20 4d 6f 64 65 20 69  | screen.  Mode i|
00094b90  73 20 6e 6f 6e 2d 67 72  61 70 69 63 61 6c 0a 0a  |s non-grapical..|
00094ba0  44 6f 6e 27 74 20 75 73  65 20 74 68 69 73 20 53  |Don't use this S|
00094bb0  57 49 2c 20 75 73 65 20  3c 4f 53 5f 52 65 61 64  |WI, use <OS_Read|
00094bc0  50 6f 69 6e 74 3e 00 00  44 41 54 41 72 02 00 00  |Point>..DATAr...|
00094bd0  4f 53 5f 57 6f 72 64 20  69 6e 64 65 78 0a 23 50  |OS_Word index.#P|
00094be0  61 72 65 6e 74 20 4f 53  5f 57 6f 72 64 0a 30 09  |arent OS_Word.0.|
00094bf0  26 30 30 09 3c 52 65 61  64 20 6c 69 6e 65 20 66  |&00.<Read line f|
00094c00  72 6f 6d 20 69 6e 70 75  74 20 73 74 72 65 61 6d  |rom input stream|
00094c10  3d 3e 6f 73 5f 77 6f 72  64 30 3e 0a 31 09 26 30  |=>os_word0>.1.&0|
00094c20  31 09 3c 52 65 61 64 20  73 79 73 74 65 6d 20 63  |1.<Read system c|
00094c30  6c 6f 63 6b 3d 3e 6f 73  5f 77 6f 72 64 31 3e 0a  |lock=>os_word1>.|
00094c40  32 09 26 30 32 09 3c 57  72 69 74 65 20 73 79 73  |2.&02.<Write sys|
00094c50  74 65 6d 20 63 6c 6f 63  6b 3d 3e 6f 73 5f 77 6f  |tem clock=>os_wo|
00094c60  72 64 32 3e 0a 33 09 26  30 33 09 3c 52 65 61 64  |rd2>.3.&03.<Read|
00094c70  20 69 6e 74 65 72 76 61  6c 20 74 69 6d 65 72 3d  | interval timer=|
00094c80  3e 6f 73 5f 77 6f 72 64  33 3e 0a 34 09 26 30 34  |>os_word3>.4.&04|
00094c90  09 3c 57 72 69 74 65 20  69 6e 74 65 72 76 61 6c  |.<Write interval|
00094ca0  20 74 69 6d 65 72 3d 3e  6f 73 5f 77 6f 72 64 34  | timer=>os_word4|
00094cb0  3e 0a 39 09 26 30 39 09  3c 52 65 61 64 20 70 69  |>.9.&09.<Read pi|
00094cc0  78 65 6c 20 6c 6f 67 69  63 61 6c 20 63 6f 6c 6f  |xel logical colo|
00094cd0  75 72 3d 3e 6f 73 5f 77  6f 72 64 39 3e 0a 31 30  |ur=>os_word9>.10|
00094ce0  09 26 30 41 09 3c 52 65  61 64 20 61 20 63 68 61  |.&0A.<Read a cha|
00094cf0  72 61 63 74 65 72 20 64  65 66 69 6e 69 74 69 6f  |racter definitio|
00094d00  6e 3d 3e 6f 73 5f 77 6f  72 64 31 30 3e 0a 31 31  |n=>os_word10>.11|
00094d10  09 26 30 42 09 3c 52 65  61 64 20 70 61 6c 65 74  |.&0B.<Read palet|
00094d20  74 65 3d 3e 6f 73 5f 77  6f 72 64 31 31 3e 0a 31  |te=>os_word11>.1|
00094d30  32 09 26 30 43 09 3c 57  72 69 74 65 20 70 61 6c  |2.&0C.<Write pal|
00094d40  65 74 74 65 3d 3e 6f 73  5f 77 6f 72 64 31 32 3e  |ette=>os_word12>|
00094d50  0a 31 33 09 26 30 44 09  3c 52 65 61 64 20 63 75  |.13.&0D.<Read cu|
00094d60  72 72 65 6e 74 20 61 6e  64 20 6c 61 73 74 20 67  |rrent and last g|
00094d70  72 61 70 68 69 63 73 20  63 75 72 73 6f 72 73 3d  |raphics cursors=|
00094d80  3e 6f 73 5f 77 6f 72 64  31 33 3e 0a 31 34 09 26  |>os_word13>.14.&|
00094d90  30 45 09 3c 52 65 61 64  20 43 4d 4f 53 20 63 6c  |0E.<Read CMOS cl|
00094da0  6f 63 6b 3d 3e 6f 73 5f  77 6f 72 64 31 34 3e 0a  |ock=>os_word14>.|
00094db0  31 35 09 26 30 46 09 3c  57 72 69 74 65 20 43 4d  |15.&0F.<Write CM|
00094dc0  4f 53 20 63 6c 6f 63 6b  3d 3e 6f 73 5f 77 6f 72  |OS clock=>os_wor|
00094dd0  64 31 35 3e 0a 32 31 09  26 31 35 09 3c 44 65 66  |d15>.21.&15.<Def|
00094de0  69 6e 65 20 70 6f 69 6e  74 65 72 20 61 6e 64 20  |ine pointer and |
00094df0  6d 6f 75 73 65 20 70 61  72 61 6d 65 74 65 72 73  |mouse parameters|
00094e00  3d 3e 6f 73 5f 77 6f 72  64 32 31 3e 0a 32 32 09  |=>os_word21>.22.|
00094e10  26 31 36 09 3c 57 72 69  74 65 20 73 63 72 65 65  |&16.<Write scree|
00094e20  6e 20 62 61 73 65 20 61  64 64 72 65 73 73 3d 3e  |n base address=>|
00094e30  6f 73 5f 77 6f 72 64 32  32 3e 00 00 44 41 54 41  |os_word22>..DATA|
00094e40  0a 01 00 00 4f 53 5f 57  6f 72 64 20 31 31 0a 23  |....OS_Word 11.#|
00094e50  50 61 72 65 6e 74 20 4f  53 5f 57 6f 72 64 0a 3d  |Parent OS_Word.=|
00094e60  3e 09 52 30 20 3d 09 31  31 0a 09 52 31 20 3d 09  |>.R0 =.11..R1 =.|
00094e70  62 75 66 66 65 72 3a 0a  09 20 09 20 30 20 6c 6f  |buffer:.. . 0 lo|
00094e80  67 69 63 61 6c 20 63 6f  6c 6f 75 72 20 74 6f 20  |gical colour to |
00094e90  72 65 61 64 0a 0a 3c 3d  09 52 30 20 70 72 65 73  |read..<=.R0 pres|
00094ea0  65 72 76 65 64 0a 09 52  31 20 70 72 65 73 65 72  |erved..R1 preser|
00094eb0  76 65 64 3a 0a 09 20 31  09 70 68 79 73 69 63 61  |ved:.. 1.physica|
00094ec0  6c 20 63 6f 6c 6f 75 72  20 61 73 73 6f 63 69 61  |l colour associa|
00094ed0  74 65 64 20 77 69 74 68  20 74 68 65 20 6c 6f 67  |ted with the log|
00094ee0  69 63 61 6c 20 63 6f 6c  6f 75 72 0a 09 20 32 09  |ical colour.. 2.|
00094ef0  72 65 64 20 63 6f 6d 70  6f 6e 65 6e 74 0a 09 20  |red component.. |
00094f00  33 09 67 72 65 65 6e 20  63 6f 6d 70 6f 6e 65 6e  |3.green componen|
00094f10  74 0a 09 20 34 09 62 6c  75 65 20 63 6f 6d 70 6f  |t.. 4.blue compo|
00094f20  6e 65 6e 74 0a 0a 50 72  65 66 65 72 61 62 6c 65  |nent..Preferable|
00094f30  20 69 73 20 3c 4f 53 5f  52 65 61 64 50 61 6c 65  | is <OS_ReadPale|
00094f40  74 74 65 3e 2e 0a 00 00  44 41 54 41 17 01 00 00  |tte>....DATA....|
00094f50  4f 53 5f 57 6f 72 64 20  31 32 0a 23 50 61 72 65  |OS_Word 12.#Pare|
00094f60  6e 74 20 4f 53 5f 57 6f  72 64 49 6e 64 65 78 0a  |nt OS_WordIndex.|
00094f70  3d 3e 09 52 30 20 3d 09  31 32 0a 09 52 31 20 3d  |=>.R0 =.12..R1 =|
00094f80  09 62 75 66 66 65 72 3a  0a 09 20 09 20 30 20 6c  |.buffer:.. . 0 l|
00094f90  6f 67 69 63 61 6c 20 63  6f 6c 6f 75 72 20 74 6f  |ogical colour to|
00094fa0  20 63 68 61 6e 67 65 0a  09 20 09 20 31 20 6e 65  | change.. . 1 ne|
00094fb0  77 20 70 68 79 73 69 63  61 6c 20 63 6f 6c 6f 75  |w physical colou|
00094fc0  72 0a 09 20 09 20 32 20  72 65 64 20 63 6f 6d 70  |r.. . 2 red comp|
00094fd0  6f 6e 65 6e 74 0a 09 20  09 20 33 20 67 72 65 65  |onent.. . 3 gree|
00094fe0  6e 20 63 6f 6d 70 6f 6e  65 6e 74 0a 09 20 09 20  |n component.. . |
00094ff0  34 20 62 6c 75 65 20 63  6f 6d 70 6f 6e 65 6e 74  |4 blue component|
00095000  0a 0a 54 68 69 73 20 69  73 20 65 71 75 69 76 61  |..This is equiva|
00095010  6c 65 6e 74 20 74 6f 20  3c 56 44 55 20 31 39 3d  |lent to <VDU 19=|
00095020  3e 56 44 55 3a 31 39 3e  2c 20 62 75 74 20 69 73  |>VDU:19>, but is|
00095030  20 66 61 73 74 65 72 20  61 6e 64 20 6d 61 79 20  | faster and may |
00095040  62 65 20 75 73 65 64 20  69 6e 20 69 6e 74 65 72  |be used in inter|
00095050  72 75 70 74 20 72 6f 75  74 69 6e 65 73 2e 0a 00  |rupt routines...|
00095060  44 41 54 41 94 01 00 00  4f 53 5f 57 6f 72 64 20  |DATA....OS_Word |
00095070  31 33 0a 23 50 61 72 65  6e 74 20 4f 53 5f 57 6f  |13.#Parent OS_Wo|
00095080  72 64 0a 3d 3e 09 52 30  20 3d 09 31 33 0a 09 52  |rd.=>.R0 =.13..R|
00095090  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 38  |1 =.pointer to 8|
000950a0  20 62 79 74 65 20 62 75  66 66 65 72 0a 0a 54 68  | byte buffer..Th|
000950b0  69 73 20 4f 53 5f 57 6f  72 64 20 66 69 6c 6c 73  |is OS_Word fills|
000950c0  20 74 68 65 20 3c 62 75  66 66 65 72 3d 3e 2e 62  | the <buffer=>.b|
000950d0  75 66 66 65 72 3e 20 77  69 74 68 20 74 68 65 20  |uffer> with the |
000950e0  63 75 72 72 65 6e 74 20  61 6e 64 20 70 72 65 76  |current and prev|
000950f0  69 6f 75 73 20 67 72 61  70 68 69 63 73 20 63 75  |ious graphics cu|
00095100  72 73 6f 72 20 63 6f 6f  72 64 69 6e 61 74 65 73  |rsor coordinates|
00095110  2e 20 59 6f 75 20 73 68  6f 75 6c 64 20 75 73 65  |. You should use|
00095120  20 3c 4f 53 5f 52 65 61  64 56 44 55 56 61 72 69  | <OS_ReadVDUVari|
00095130  61 62 6c 65 73 3e 20 69  6e 73 74 65 61 64 2e 0a  |ables> instead..|
00095140  23 73 75 62 70 61 67 65  20 62 75 66 66 65 72 0a  |#subpage buffer.|
00095150  4f 53 5f 57 6f 72 64 20  31 33 20 62 75 66 66 65  |OS_Word 13 buffe|
00095160  72 0a 4f 66 66 73 65 74  09 43 6f 6e 74 65 6e 74  |r.Offset.Content|
00095170  73 0a 23 4c 69 6e 65 0a  30 09 70 72 65 76 69 6f  |s.#Line.0.previo|
00095180  75 73 09 78 20 63 6f 6f  72 64 09 4c 53 42 0a 31  |us.x coord.LSB.1|
00095190  09 20 09 09 20 09 4d 53  42 0a 32 09 20 09 09 79  |. .. .MSB.2. ..y|
000951a0  20 63 6f 6f 72 64 09 4c  53 42 0a 33 09 20 09 09  | coord.LSB.3. ..|
000951b0  20 09 4d 53 42 0a 34 09  63 75 72 72 65 6e 74 09  | .MSB.4.current.|
000951c0  09 78 20 63 6f 6f 72 64  09 4c 53 42 0a 35 09 20  |.x coord.LSB.5. |
000951d0  09 09 20 09 4d 53 42 0a  36 09 20 09 09 79 20 63  |.. .MSB.6. ..y c|
000951e0  6f 6f 72 64 09 4c 53 42  0a 37 09 20 09 09 20 09  |oord.LSB.7. .. .|
000951f0  4d 53 42 0a 44 41 54 41  19 01 00 00 4f 53 5f 57  |MSB.DATA....OS_W|
00095200  6f 72 64 20 31 34 2c 30  0a 23 50 61 72 65 6e 74  |ord 14,0.#Parent|
00095210  20 4f 53 5f 57 6f 72 64  0a 3d 3e 09 52 30 20 3d  | OS_Word.=>.R0 =|
00095220  09 31 34 0a 23 57 72 61  70 20 6f 66 66 0a 09 52  |.14.#Wrap off..R|
00095230  31 20 3d 09 70 6f 69 6e  74 65 72 20 62 75 66 66  |1 =.pointer buff|
00095240  65 72 20 66 6f 72 20 73  74 72 69 6e 67 2c 20 63  |er for string, c|
00095250  6f 6e 74 61 69 6e 69 6e  67 20 3a 0a 23 57 72 61  |ontaining :.#Wra|
00095260  70 0a 09 20 09 20 09 30  20 3d 20 31 0a 0a 54 68  |p.. . .0 = 1..Th|
00095270  69 73 20 4f 53 5f 57 6f  72 64 20 72 65 61 64 73  |is OS_Word reads|
00095280  20 74 68 65 20 74 69 6d  65 20 66 72 6f 6d 20 74  | the time from t|
00095290  68 65 20 73 6f 66 74 20  63 6f 70 79 20 6f 66 20  |he soft copy of |
000952a0  74 68 65 20 43 4d 4f 53  20 63 6c 6f 63 6b 2e 20  |the CMOS clock. |
000952b0  54 68 65 20 66 6f 72 6d  61 74 20 6f 66 20 74 68  |The format of th|
000952c0  65 20 43 52 20 74 65 72  6d 69 6e 61 74 65 64 20  |e CR terminated |
000952d0  73 74 72 69 6e 67 20 77  72 69 74 74 65 6e 20 74  |string written t|
000952e0  6f 20 52 31 20 69 73 20  64 65 74 65 72 6d 69 6e  |o R1 is determin|
000952f0  65 64 20 62 79 20 74 68  65 20 63 75 72 72 65 6e  |ed by the curren|
00095300  74 20 74 65 72 72 69 74  6f 72 79 2e 0a 00 00 00  |t territory.....|
00095310  44 41 54 41 cc 01 00 00  4f 53 5f 57 6f 72 64 20  |DATA....OS_Word |
00095320  31 34 2c 32 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |14,2.#Parent OS_|
00095330  57 6f 72 64 0a 3d 3e 09  52 30 20 3d 09 31 34 0a  |Word.=>.R0 =.14.|
00095340  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
00095350  20 62 75 66 66 65 72 2c  20 73 74 61 72 74 69 6e  | buffer, startin|
00095360  67 20 77 69 74 68 20 38  2d 62 79 74 65 20 62 6c  |g with 8-byte bl|
00095370  6f 63 6b 20 20 3a 0a 09  09 20 09 30 20 3d 20 32  |ock  :... .0 = 2|
00095380  0a 09 09 20 09 31 20 3d  20 79 65 61 72 09 09 28  |... .1 = year..(|
00095390  30 2d 39 39 29 0a 09 09  20 09 32 20 3d 20 6d 6f  |0-99)... .2 = mo|
000953a0  6e 74 68 09 09 28 31 2d  31 32 29 0a 09 09 20 09  |nth..(1-12)... .|
000953b0  33 20 3d 20 64 61 79 20  6f 66 20 6d 6f 6e 74 68  |3 = day of month|
000953c0  09 28 31 2d 33 31 29 0a  09 09 20 09 34 20 3d 20  |.(1-31)... .4 = |
000953d0  64 61 79 20 6f 66 20 77  65 65 6b 09 09 28 31 2d  |day of week..(1-|
000953e0  37 2c 20 31 3d 53 75 6e  64 61 79 29 0a 09 09 20  |7, 1=Sunday)... |
000953f0  09 35 20 3d 20 68 6f 75  72 09 09 28 30 2d 32 33  |.5 = hour..(0-23|
00095400  29 0a 09 09 20 09 36 20  3d 20 6d 69 6e 75 74 65  |)... .6 = minute|
00095410  09 09 28 30 2d 35 39 29  0a 09 09 20 09 37 20 3d  |..(0-59)... .7 =|
00095420  20 73 65 63 6f 6e 64 09  09 28 30 2d 35 39 29 0a  | second..(0-59).|
00095430  3c 3d 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |<=.R1 =.pointer |
00095440  74 6f 20 62 75 66 66 65  72 20 77 68 69 63 68 20  |to buffer which |
00095450  6e 6f 77 20 63 6f 6e 74  61 69 6e 73 20 73 74 72  |now contains str|
00095460  69 6e 67 0a 0a 54 68 69  73 20 4f 53 5f 57 6f 72  |ing..This OS_Wor|
00095470  64 20 63 6f 6e 76 65 72  74 73 20 74 68 65 20 62  |d converts the b|
00095480  6c 6f 63 6b 20 74 6f 20  61 20 43 52 20 74 65 72  |lock to a CR ter|
00095490  6d 69 6e 61 74 65 64 20  73 74 72 69 6e 67 2c 20  |minated string, |
000954a0  74 68 65 20 66 6f 72 6d  61 74 20 6f 66 20 77 68  |the format of wh|
000954b0  69 63 68 20 69 73 20 64  65 74 65 72 6d 69 6e 65  |ich is determine|
000954c0  64 20 62 79 20 74 68 65  20 63 75 72 72 65 6e 74  |d by the current|
000954d0  20 74 65 72 72 69 74 6f  72 79 2e 0a 44 41 54 41  | territory..DATA|
000954e0  9f 01 00 00 4f 53 5f 57  6f 72 64 20 31 34 2c 33  |....OS_Word 14,3|
000954f0  0a 23 50 61 72 65 6e 74  20 4f 53 5f 57 6f 72 64  |.#Parent OS_Word|
00095500  0a 3d 3e 09 52 30 20 3d  09 31 34 0a 09 52 31 20  |.=>.R0 =.14..R1 |
00095510  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 35 2d 62  |=.pointer to 5-b|
00095520  79 74 65 20 62 6c 6f 63  6b 20 63 6f 6e 74 61 69  |yte block contai|
00095530  6e 69 6e 67 20 3a 0a 09  20 09 20 09 30 20 3d 20  |ning :.. . .0 = |
00095540  33 0a 0a 3c 3d 09 52 31  20 3d 09 70 6f 69 6e 74  |3..<=.R1 =.point|
00095550  65 72 20 74 6f 20 62 6c  6f 63 6b 20 63 6f 6e 74  |er to block cont|
00095560  61 69 6e 69 6e 67 20 3a  0a 09 09 20 09 30 20 3d  |aining :... .0 =|
00095570  20 4c 53 42 20 6f 66 20  74 69 6d 65 0a 09 09 20  | LSB of time... |
00095580  09 31 0a 09 09 20 09 32  0a 09 09 20 09 33 0a 09  |.1... .2... .3..|
00095590  09 20 09 34 20 3d 20 4d  53 42 20 6f 66 20 74 69  |. .4 = MSB of ti|
000955a0  6d 65 0a 0a 54 68 69 73  20 4f 53 5f 57 6f 72 64  |me..This OS_Word|
000955b0  20 72 65 61 64 73 20 74  68 65 20 74 69 6d 65 20  | reads the time |
000955c0  66 72 6f 6d 20 74 68 65  20 43 4d 4f 53 20 63 6c  |from the CMOS cl|
000955d0  6f 63 6b 20 61 73 20 61  20 73 74 61 6e 64 61 72  |ock as a standar|
000955e0  64 20 52 49 53 43 20 4f  53 20 35 20 62 79 74 65  |d RISC OS 5 byte|
000955f0  20 74 69 6d 65 20 62 6c  6f 63 6b 20 28 63 65 6e  | time block (cen|
00095600  74 69 73 65 63 6f 6e 64  73 20 66 72 6f 6d 20 31  |tiseconds from 1|
00095610  39 30 30 2f 30 31 2f 30  31 20 30 30 3a 30 30 3a  |900/01/01 00:00:|
00095620  30 30 29 2e 20 4f 6e 20  52 49 53 43 20 4f 53 20  |00). On RISC OS |
00095630  32 20 74 68 65 20 63 6c  6f 63 6b 20 69 73 20 61  |2 the clock is a|
00095640  73 73 75 6d 65 64 20 74  6f 20 62 65 20 73 65 74  |ssumed to be set|
00095650  20 74 6f 20 6c 6f 63 61  6c 20 74 69 6d 65 2c 20  | to local time, |
00095660  6c 61 74 65 72 20 52 49  53 43 20 4f 53 20 61 73  |later RISC OS as|
00095670  73 75 6d 65 73 20 55 54  43 2e 0a 00 44 41 54 41  |sumes UTC...DATA|
00095680  2e 02 00 00 4f 53 5f 57  6f 72 64 20 31 35 0a 23  |....OS_Word 15.#|
00095690  50 61 72 65 6e 74 20 4f  53 5f 57 6f 72 64 0a 3d  |Parent OS_Word.=|
000956a0  3e 09 52 30 20 3d 09 31  35 0a 09 52 31 20 3d 09  |>.R0 =.15..R1 =.|
000956b0  70 6f 69 6e 74 65 72 20  74 6f 20 70 61 72 61 6d  |pointer to param|
000956c0  65 74 65 72 20 62 6c 6f  63 6b 0a 09 52 31 2b 30  |eter block..R1+0|
000956d0  20 3d 20 72 65 61 73 6f  6e 20 63 6f 64 65 20 3a  | = reason code :|
000956e0  0a 09 20 20 38 20 3a 09  3c 57 72 69 74 65 20 43  |..  8 :.<Write C|
000956f0  4d 4f 53 20 63 6c 6f 63  6b 20 61 6e 64 20 73 6f  |MOS clock and so|
00095700  66 74 2d 63 6f 70 79 20  74 69 6d 65 20 66 72 6f  |ft-copy time fro|
00095710  6d 20 73 74 72 69 6e 67  3d 3e 4f 53 5f 57 6f 72  |m string=>OS_Wor|
00095720  64 31 35 2c 38 3e 0a 09  20 20 31 35 20 3a 09 3c  |d15,8>..  15 :.<|
00095730  57 72 69 74 65 20 43 4d  4f 53 20 63 6c 6f 63 6b  |Write CMOS clock|
00095740  20 61 6e 64 20 73 6f 66  74 2d 63 6f 70 79 20 64  | and soft-copy d|
00095750  61 74 65 20 66 72 6f 6d  20 73 74 72 69 6e 67 3d  |ate from string=|
00095760  3e 4f 53 5f 57 6f 72 64  31 35 2c 31 35 3e 0a 09  |>OS_Word15,15>..|
00095770  20 20 32 34 20 3a 09 3c  57 72 69 74 65 20 43 4d  |  24 :.<Write CM|
00095780  4f 53 20 63 6c 6f 63 6b  20 61 6e 64 20 73 6f 66  |OS clock and sof|
00095790  74 2d 63 6f 70 79 20 74  69 6d 65 20 61 6e 64 20  |t-copy time and |
000957a0  64 61 74 65 20 66 72 6f  6d 20 73 74 72 69 6e 67  |date from string|
000957b0  3d 3e 4f 53 5f 57 6f 72  64 31 35 2c 32 34 3e 0a  |=>OS_Word15,24>.|
000957c0  0a 4e 6f 77 68 65 72 65  20 64 6f 65 73 20 74 68  |.Nowhere does th|
000957d0  65 20 50 52 4d 20 73 61  79 20 68 6f 77 20 74 6f  |e PRM say how to|
000957e0  20 64 65 74 65 72 6d 69  6e 65 20 74 68 65 20 63  | determine the c|
000957f0  6f 72 72 65 63 74 20 66  6f 72 6d 61 74 20 6f 66  |orrect format of|
00095800  20 73 74 72 69 6e 67 20  74 6f 20 70 61 73 73 20  | string to pass |
00095810  66 6f 72 20 74 68 65 20  63 75 72 72 65 6e 74 20  |for the current |
00095820  74 65 72 72 69 74 6f 72  79 2e 20 50 72 65 73 75  |territory. Presu|
00095830  6d 61 62 6c 79 20 69 74  20 69 73 20 74 6f 20 62  |mably it is to b|
00095840  65 20 64 6f 6e 65 20 62  79 20 69 6e 73 70 65 63  |e done by inspec|
00095850  74 69 6f 6e 20 66 72 6f  6d 20 61 20 74 69 6d 65  |tion from a time|
00095860  20 72 65 61 64 20 77 69  74 68 20 3c 4f 53 5f 57  | read with <OS_W|
00095870  6f 72 64 20 31 34 3d 3e  4f 53 5f 57 6f 72 64 31  |ord 14=>OS_Word1|
00095880  34 3e 2e 0a 23 20 57 65  6c 6c 2c 20 74 68 61 74  |4>..# Well, that|
00095890  27 73 20 65 61 73 79 20  74 6f 20 64 6f 20 67 65  |'s easy to do ge|
000958a0  6e 65 72 69 63 61 6c 6c  79 0a 00 00 44 41 54 41  |nerically...DATA|
000958b0  67 01 00 00 4f 53 5f 57  6f 72 64 20 31 35 2c 31  |g...OS_Word 15,1|
000958c0  35 0a 23 50 61 72 65 6e  74 20 4f 53 5f 57 6f 72  |5.#Parent OS_Wor|
000958d0  64 0a 3d 3e 09 52 30 20  3d 09 31 35 0a 09 52 31  |d.=>.R0 =.15..R1|
000958e0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 62 6c  | =.pointer to bl|
000958f0  6f 63 6b 20 63 6f 6e 74  61 69 6e 69 6e 67 20 3a  |ock containing :|
00095900  0a 09 20 09 20 09 30 20  3d 20 31 35 0a 09 20 09  |.. . .0 = 15.. .|
00095910  20 09 31 20 3d 20 64 61  74 65 20 73 74 72 69 6e  | .1 = date strin|
00095920  67 20 69 6e 20 6c 6f 63  61 6c 20 6c 61 6e 67 75  |g in local langu|
00095930  61 67 65 0a 0a 54 68 69  73 20 4f 53 5f 57 6f 72  |age..This OS_Wor|
00095940  64 20 73 65 74 73 20 74  68 65 20 64 61 74 65 20  |d sets the date |
00095950  69 6e 20 74 68 65 20 43  4d 4f 53 20 63 6c 6f 63  |in the CMOS cloc|
00095960  6b 20 61 6e 64 20 69 74  73 20 73 6f 66 74 20 63  |k and its soft c|
00095970  6f 70 79 2e 20 54 68 65  20 73 74 72 69 6e 67 20  |opy. The string |
00095980  66 6f 72 6d 61 74 20 69  73 20 74 65 72 72 69 74  |format is territ|
00095990  6f 72 79 20 64 65 70 65  6e 64 61 6e 74 20 2d 20  |ory dependant - |
000959a0  66 6f 72 20 74 68 65 20  55 4b 20 28 61 6e 64 20  |for the UK (and |
000959b0  52 49 53 43 20 4f 53 20  32 29 20 69 74 20 69 73  |RISC OS 2) it is|
000959c0  20 6f 66 20 74 68 65 20  66 6f 72 6d 0a 23 74 61  | of the form.#ta|
000959d0  62 0a 0a 23 77 72 61 70  20 6f 66 66 0a 20 20 44  |b..#wrap off.  D|
000959e0  61 79 2c 44 44 20 4d 4d  4d 20 59 59 59 59 20 20  |ay,DD MMM YYYY  |
000959f0  20 20 7b 2f 7d 65 2e 67  2e 7b 2f 7d 20 54 68 75  |  {/}e.g.{/} Thu|
00095a00  2c 32 31 20 53 65 70 20  31 39 37 32 0a 23 77 72  |,21 Sep 1972.#wr|
00095a10  61 70 0a 00 44 41 54 41  84 01 00 00 4f 53 5f 57  |ap..DATA....OS_W|
00095a20  6f 72 64 20 31 35 2c 32  34 0a 23 50 61 72 65 6e  |ord 15,24.#Paren|
00095a30  74 20 4f 53 5f 57 6f 72  64 0a 3d 3e 09 52 30 20  |t OS_Word.=>.R0 |
00095a40  3d 09 32 34 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |=.24..R1 =.point|
00095a50  65 72 20 74 6f 20 62 6c  6f 63 6b 20 63 6f 6e 74  |er to block cont|
00095a60  61 69 6e 69 6e 67 20 3a  0a 09 20 09 20 09 30 20  |aining :.. . .0 |
00095a70  3d 20 31 35 0a 09 20 09  20 09 31 20 3d 20 64 61  |= 15.. . .1 = da|
00095a80  74 65 20 61 6e 64 20 74  69 6d 65 20 73 74 72 69  |te and time stri|
00095a90  6e 67 20 69 6e 20 6c 6f  63 61 6c 20 6c 61 6e 67  |ng in local lang|
00095aa0  75 61 67 65 0a 0a 54 68  69 73 20 4f 53 5f 57 6f  |uage..This OS_Wo|
00095ab0  72 64 20 73 65 74 73 20  74 68 65 20 64 61 74 65  |rd sets the date|
00095ac0  20 69 6e 20 74 68 65 20  43 4d 4f 53 20 63 6c 6f  | in the CMOS clo|
00095ad0  63 6b 20 61 6e 64 20 69  74 73 20 73 6f 66 74 20  |ck and its soft |
00095ae0  63 6f 70 79 2e 20 54 68  65 20 73 74 72 69 6e 67  |copy. The string|
00095af0  20 66 6f 72 6d 61 74 20  69 73 20 74 65 72 72 69  | format is terri|
00095b00  74 6f 72 79 20 64 65 70  65 6e 64 61 6e 74 20 2d  |tory dependant -|
00095b10  20 66 6f 72 20 74 68 65  20 55 4b 20 28 61 6e 64  | for the UK (and|
00095b20  20 52 49 53 43 20 4f 53  20 32 29 20 69 74 20 69  | RISC OS 2) it i|
00095b30  73 20 6f 66 20 74 68 65  20 66 6f 72 6d 0a 23 74  |s of the form.#t|
00095b40  61 62 0a 0a 23 77 72 61  70 20 6f 66 66 0a 20 20  |ab..#wrap off.  |
00095b50  44 61 79 2c 44 44 20 4d  4d 4d 20 59 59 59 59 2e  |Day,DD MMM YYYY.|
00095b60  48 48 3a 3a 4d 4d 3a 3a  53 53 20 20 20 20 7b 2f  |HH::MM::SS    {/|
00095b70  7d 65 2e 67 2e 7b 2f 7d  20 4d 6f 6e 2c 31 37 20  |}e.g.{/} Mon,17 |
00095b80  46 65 62 20 31 39 39 32  2e 31 37 3a 33 35 3a 30  |Feb 1992.17:35:0|
00095b90  34 0a 23 77 72 61 70 0a  44 41 54 41 32 01 00 00  |4.#wrap.DATA2...|
00095ba0  4f 53 5f 57 6f 72 64 20  31 35 2c 38 0a 23 50 61  |OS_Word 15,8.#Pa|
00095bb0  72 65 6e 74 20 4f 53 5f  57 6f 72 64 0a 3d 3e 09  |rent OS_Word.=>.|
00095bc0  52 30 20 3d 09 31 35 0a  09 52 31 20 3d 09 70 6f  |R0 =.15..R1 =.po|
00095bd0  69 6e 74 65 72 20 74 6f  20 62 6c 6f 63 6b 20 63  |inter to block c|
00095be0  6f 6e 74 61 69 6e 69 6e  67 20 3a 0a 09 20 09 20  |ontaining :.. . |
00095bf0  09 30 20 3d 20 38 0a 09  20 09 20 09 31 20 3d 20  |.0 = 8.. . .1 = |
00095c00  74 69 6d 65 20 73 74 72  69 6e 67 20 69 6e 20 6c  |time string in l|
00095c10  6f 63 61 6c 20 6c 61 6e  67 75 61 67 65 0a 0a 54  |ocal language..T|
00095c20  68 69 73 20 4f 53 5f 57  6f 72 64 20 73 65 74 73  |his OS_Word sets|
00095c30  20 74 68 65 20 74 69 6d  65 20 6f 66 20 64 61 79  | the time of day|
00095c40  20 69 6e 20 74 68 65 20  43 4d 4f 53 20 63 6c 6f  | in the CMOS clo|
00095c50  63 6b 20 61 6e 64 20 69  74 73 20 73 6f 66 74 20  |ck and its soft |
00095c60  63 6f 70 79 2e 20 54 68  65 20 73 74 72 69 6e 67  |copy. The string|
00095c70  20 66 6f 72 6d 61 74 20  69 73 20 74 65 72 72 69  | format is terri|
00095c80  74 6f 72 79 20 64 65 70  65 6e 64 61 6e 74 20 2d  |tory dependant -|
00095c90  20 66 6f 72 20 74 68 65  20 55 4b 20 28 61 6e 64  | for the UK (and|
00095ca0  20 52 49 53 43 20 4f 53  20 32 29 20 69 74 20 69  | RISC OS 2) it i|
00095cb0  73 20 6f 66 20 74 68 65  20 66 6f 72 6d 0a 0a 20  |s of the form.. |
00095cc0  20 48 48 3a 4d 4d 3a 53  53 0a 00 00 44 41 54 41  | HH:MM:SS...DATA|
00095cd0  b0 01 00 00 4f 53 5f 57  6f 72 64 20 32 31 0a 23  |....OS_Word 21.#|
00095ce0  50 61 72 65 6e 74 20 4f  53 5f 57 6f 72 64 0a 3d  |Parent OS_Word.=|
00095cf0  3e 09 52 30 20 3d 09 32  31 0a 09 52 31 20 3d 09  |>.R0 =.21..R1 =.|
00095d00  70 6f 69 6e 74 65 72 20  74 6f 20 70 61 72 61 6d  |pointer to param|
00095d10  65 74 65 72 20 62 6c 6f  63 6b 0a 09 52 31 2b 30  |eter block..R1+0|
00095d20  20 3d 20 72 65 61 73 6f  6e 20 63 6f 64 65 20 3a  | = reason code :|
00095d30  0a 09 20 20 30 20 3a 09  3c 64 65 66 69 6e 65 20  |..  0 :.<define |
00095d40  70 6f 69 6e 74 65 72 20  73 68 61 70 65 3d 3e 4f  |pointer shape=>O|
00095d50  53 5f 57 6f 72 64 32 31  2c 30 3e 0a 09 20 20 31  |S_Word21,0>..  1|
00095d60  20 3a 09 3c 64 65 66 69  6e 65 20 74 68 65 20 6d  | :.<define the m|
00095d70  6f 75 73 65 20 63 6f 6f  72 64 69 6e 61 74 65 20  |ouse coordinate |
00095d80  62 6f 75 6e 64 69 6e 67  20 62 6f 78 3d 3e 4f 53  |bounding box=>OS|
00095d90  5f 57 6f 72 64 32 31 2c  31 3e 0a 09 20 20 32 20  |_Word21,1>..  2 |
00095da0  3a 09 3c 73 65 74 20 6d  6f 75 73 65 20 6d 75 6c  |:.<set mouse mul|
00095db0  74 69 70 6c 69 65 72 73  3d 3e 4f 53 5f 57 6f 72  |tipliers=>OS_Wor|
00095dc0  64 32 31 2c 32 3e 0a 09  20 20 33 20 3a 09 3c 73  |d21,2>..  3 :.<s|
00095dd0  65 74 20 6d 6f 75 73 65  20 70 6f 73 69 74 69 6f  |et mouse positio|
00095de0  6e 3d 3e 4f 53 5f 57 6f  72 64 32 31 2c 33 3e 0a  |n=>OS_Word21,3>.|
00095df0  09 20 20 34 20 3a 09 3c  72 65 61 64 20 75 6e 62  |.  4 :.<read unb|
00095e00  75 66 66 65 72 65 64 20  6d 6f 75 73 65 20 70 6f  |uffered mouse po|
00095e10  73 69 74 69 6f 6e 3d 3e  4f 53 5f 57 6f 72 64 32  |sition=>OS_Word2|
00095e20  31 2c 34 3e 0a 09 20 20  35 20 3a 09 3c 73 65 74  |1,4>..  5 :.<set|
00095e30  20 70 6f 69 6e 74 65 72  20 70 6f 73 69 74 69 6f  | pointer positio|
00095e40  6e 3d 3e 4f 53 5f 57 6f  72 64 32 31 2c 35 3e 0a  |n=>OS_Word21,5>.|
00095e50  09 20 20 36 20 3a 09 3c  72 65 61 64 20 70 6f 69  |.  6 :.<read poi|
00095e60  6e 74 65 72 20 70 6f 73  69 74 69 6f 6e 3d 3e 4f  |nter position=>O|
00095e70  53 5f 57 6f 72 64 32 31  2c 36 3e 0a 44 41 54 41  |S_Word21,6>.DATA|
00095e80  be 02 00 00 4f 53 5f 57  6f 72 64 20 32 31 2c 30  |....OS_Word 21,0|
00095e90  0a 23 50 61 72 65 6e 74  20 4f 53 5f 57 6f 72 64  |.#Parent OS_Word|
00095ea0  0a 3d 3e 09 52 30 20 3d  09 32 31 0a 09 52 31 20  |.=>.R0 =.21..R1 |
00095eb0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 62 6c 6f  |=.pointer to blo|
00095ec0  63 6b 20 63 6f 6e 74 61  69 6e 69 6e 67 20 3a 0a  |ck containing :.|
00095ed0  09 09 20 09 30 20 3d 20  30 0a 09 09 20 09 31 20  |.. .0 = 0... .1 |
00095ee0  3d 20 31 2d 34 09 09 09  73 68 61 70 65 20 6e 75  |= 1-4...shape nu|
00095ef0  6d 62 65 72 20 0a 09 09  20 09 32 20 3d 20 30 2d  |mber ... .2 = 0-|
00095f00  38 09 09 09 2f 77 2f 20  2d 20 77 69 64 74 68 20  |8.../w/ - width |
00095f10  69 6e 20 62 79 74 65 73  0a 09 09 20 09 33 20 3d  |in bytes... .3 =|
00095f20  20 30 2d 33 32 09 09 2f  68 2f 20 2d 20 68 65 69  | 0-32../h/ - hei|
00095f30  67 68 74 20 69 6e 20 70  69 78 65 6c 73 0a 09 09  |ght in pixels...|
00095f40  20 09 34 20 3d 20 30 2d  28 7b 2f 7d 77 7b 2f 7d  | .4 = 0-({/}w{/}|
00095f50  2a 34 2d 31 29 09 78 20  61 63 74 69 76 65 20 70  |*4-1).x active p|
00095f60  6f 69 6e 74 20 28 69 6e  20 70 69 78 65 6c 73 20  |oint (in pixels |
00095f70  66 72 6f 6d 20 6c 65 66  74 29 0a 09 09 20 09 35  |from left)... .5|
00095f80  20 3d 20 30 2d 28 7b 2f  7d 68 7b 2f 7d 2d 31 29  | = 0-({/}h{/}-1)|
00095f90  09 79 20 61 63 74 69 76  65 20 70 6f 69 6e 74 20  |.y active point |
00095fa0  28 69 6e 20 70 69 78 65  6c 73 20 66 72 6f 6d 20  |(in pixels from |
00095fb0  74 6f 70 29 0a 09 09 20  09 36 20 3d 20 4c 53 42  |top)... .6 = LSB|
00095fc0  20 6f 66 20 2a 70 6f 69  6e 74 65 72 2a 20 74 6f  | of *pointer* to|
00095fd0  20 73 68 61 70 65 20 64  61 74 61 0a 09 09 20 09  | shape data... .|
00095fe0  37 0a 09 09 20 09 38 0a  09 09 20 09 39 20 3d 20  |7... .8... .9 = |
00095ff0  4d 53 42 20 6f 66 20 70  6f 69 6e 74 65 72 0a 0a  |MSB of pointer..|
00096000  54 68 69 73 20 4f 53 5f  57 6f 72 64 20 64 65 66  |This OS_Word def|
00096010  69 6e 65 73 20 61 20 70  6f 69 6e 74 65 72 20 73  |ines a pointer s|
00096020  68 61 70 65 2c 20 77 68  69 63 68 20 6d 61 79 20  |hape, which may |
00096030  62 65 20 73 65 6c 65 63  74 65 64 20 77 69 74 68  |be selected with|
00096040  20 3c 4f 53 5f 42 79 74  65 20 31 30 36 3d 3e 4f  | <OS_Byte 106=>O|
00096050  53 5f 42 79 74 65 31 30  36 3e 2e 20 50 6f 69 6e  |S_Byte106>. Poin|
00096060  74 65 72 73 20 61 72 65  20 61 6c 77 61 79 73 20  |ters are always |
00096070  64 65 66 69 6e 65 64 20  69 6e 20 32 20 62 69 74  |defined in 2 bit|
00096080  73 20 70 65 72 20 70 69  78 65 6c 73 2c 20 63 6f  |s per pixels, co|
00096090  6c 6f 75 72 20 30 20 69  73 20 74 72 61 6e 73 70  |lour 0 is transp|
000960a0  61 72 65 6e 74 2e 20 54  68 65 20 73 68 61 70 65  |arent. The shape|
000960b0  20 64 61 74 61 20 69 73  20 67 69 76 65 6e 20 66  | data is given f|
000960c0  72 6f 6d 20 74 6f 70 20  74 6f 20 62 6f 74 74 6f  |rom top to botto|
000960d0  6d 2c 20 77 69 74 68 20  62 69 74 73 20 30 2c 31  |m, with bits 0,1|
000960e0  20 69 6e 20 65 61 63 68  20 62 79 74 65 20 67 69  | in each byte gi|
000960f0  76 69 6e 67 20 74 68 65  20 6c 65 66 74 20 6d 6f  |ving the left mo|
00096100  73 74 20 70 69 78 65 6c  2e 20 4d 6f 75 73 65 20  |st pixel. Mouse |
00096110  63 6f 6c 6f 75 72 73 20  63 61 6e 20 62 65 20 73  |colours can be s|
00096120  65 74 20 77 69 74 68 20  3c 56 44 55 20 31 39 3d  |et with <VDU 19=|
00096130  3e 56 44 55 3a 31 39 3e  2e 0a 00 00 44 41 54 41  |>VDU:19>....DATA|
00096140  80 02 00 00 4f 53 5f 57  6f 72 64 20 32 31 2c 31  |....OS_Word 21,1|
00096150  0a 23 50 61 72 65 6e 74  20 4f 53 5f 57 6f 72 64  |.#Parent OS_Word|
00096160  0a 3d 3e 09 52 30 20 3d  09 32 31 0a 09 52 31 20  |.=>.R0 =.21..R1 |
00096170  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 62 6c 6f  |=.pointer to blo|
00096180  63 6b 20 63 6f 6e 74 61  69 6e 69 6e 67 20 3a 0a  |ck containing :.|
00096190  09 09 20 09 30 20 3d 20  31 0a 09 09 20 09 31 20  |.. .0 = 1... .1 |
000961a0  3d 20 6c 65 66 74 09 4c  53 42 0a 09 09 20 09 32  |= left.LSB... .2|
000961b0  20 3d 09 09 4d 53 42 0a  09 09 20 09 33 20 3d 20  | =..MSB... .3 = |
000961c0  62 6f 74 74 6f 6d 09 4c  53 42 0a 09 09 20 09 34  |bottom.LSB... .4|
000961d0  20 3d 09 09 4d 53 42 0a  09 09 20 09 35 20 3d 20  | =..MSB... .5 = |
000961e0  72 69 67 68 74 09 4c 53  42 0a 09 09 20 09 36 20  |right.LSB... .6 |
000961f0  3d 09 09 4d 53 42 0a 09  09 20 09 37 20 3d 20 74  |=..MSB... .7 = t|
00096200  6f 70 09 09 4c 53 42 0a  09 09 20 09 38 20 3d 09  |op..LSB... .8 =.|
00096210  09 4d 53 42 0a 0a 54 68  69 73 20 4f 53 5f 57 6f  |.MSB..This OS_Wo|
00096220  72 64 20 64 65 66 69 6e  65 73 20 74 68 65 20 6d  |rd defines the m|
00096230  6f 75 73 65 20 63 6f 6f  72 64 69 6e 61 74 65 20  |ouse coordinate |
00096240  62 6f 75 6e 64 69 6e 67  20 62 6f 78 2c 20 72 65  |bounding box, re|
00096250  6c 61 74 69 76 65 20 74  6f 20 74 68 65 20 67 72  |lative to the gr|
00096260  61 70 68 69 63 73 20 6f  72 69 67 69 6e 2e 20 49  |aphics origin. I|
00096270  74 20 69 73 20 69 67 6e  6f 72 65 64 20 69 66 20  |t is ignored if |
00096280  28 6c 65 66 74 20 3e 20  72 69 67 68 74 29 20 6f  |(left > right) o|
00096290  72 20 28 74 6f 70 20 3e  20 62 6f 74 74 6f 6d 29  |r (top > bottom)|
000962a0  2e 0a 0a 6c 65 66 74 20  3d 20 62 6f 74 74 6f 6d  |...left = bottom|
000962b0  20 3d 20 26 38 30 30 30  2c 20 72 69 67 68 74 20  | = &8000, right |
000962c0  3d 20 74 6f 70 20 3d 20  26 37 46 46 46 20 67 69  |= top = &7FFF gi|
000962d0  76 65 73 20 61 6e 20 69  6e 66 69 6e 69 74 65 20  |ves an infinite |
000962e0  62 6f 78 2e 0a 0a 49 66  20 6f 75 74 73 69 64 65  |box...If outside|
000962f0  20 74 68 65 20 62 6f 78  2c 20 74 68 65 20 63 75  | the box, the cu|
00096300  72 72 65 6e 74 20 6d 6f  75 73 65 20 70 6f 73 69  |rrent mouse posi|
00096310  74 69 6f 6e 20 69 73 20  68 6f 6d 65 64 20 74 6f  |tion is homed to|
00096320  20 74 68 65 20 6e 65 61  72 65 73 74 20 70 6f 69  | the nearest poi|
00096330  6e 74 20 69 6e 73 69 64  65 2e 20 57 68 65 6e 20  |nt inside. When |
00096340  72 65 61 64 20 61 6c 6c  20 62 75 66 66 65 72 65  |read all buffere|
00096350  64 20 63 6f 6f 72 64 69  6e 61 74 65 73 20 61 72  |d coordinates ar|
00096360  65 20 73 69 6d 69 6c 61  72 6c 79 20 6d 6f 76 65  |e similarly move|
00096370  64 20 77 69 74 68 69 6e  20 74 68 65 20 62 6f 78  |d within the box|
00096380  2e 20 54 68 65 20 62 6f  78 20 69 73 20 73 65 74  |. The box is set|
00096390  20 74 6f 20 74 68 65 20  73 69 7a 65 20 6f 66 20  | to the size of |
000963a0  74 68 65 20 73 63 72 65  65 6e 20 6f 6e 20 6d 6f  |the screen on mo|
000963b0  64 65 20 63 68 61 6e 67  65 73 2e 0a 44 41 54 41  |de changes..DATA|
000963c0  1f 01 00 00 4f 53 5f 57  6f 72 64 20 32 31 2c 32  |....OS_Word 21,2|
000963d0  0a 23 50 61 72 65 6e 74  20 4f 53 5f 57 6f 72 64  |.#Parent OS_Word|
000963e0  0a 3d 3e 09 52 30 20 3d  09 32 31 0a 09 52 31 20  |.=>.R0 =.21..R1 |
000963f0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 62 6c 6f  |=.pointer to blo|
00096400  63 6b 20 63 6f 6e 74 61  69 6e 69 6e 67 20 3a 0a  |ck containing :.|
00096410  09 09 20 09 30 20 3d 20  32 0a 09 09 20 09 31 20  |.. .0 = 2... .1 |
00096420  3d 20 78 20 6d 75 6c 74  69 70 6c 69 65 72 0a 09  |= x multiplier..|
00096430  09 20 09 32 20 3d 20 79  20 6d 75 6c 74 69 70 6c  |. .2 = y multipl|
00096440  69 65 72 0a 0a 54 68 69  73 20 4f 53 5f 57 6f 72  |ier..This OS_Wor|
00096450  64 20 73 65 74 73 20 74  68 65 20 6d 6f 75 73 65  |d sets the mouse|
00096460  20 6d 75 6c 74 69 70 6c  69 65 72 73 2e 20 54 68  | multipliers. Th|
00096470  65 20 76 61 6c 75 65 73  20 67 69 76 65 6e 20 61  |e values given a|
00096480  72 65 20 2a 73 69 67 6e  65 64 2a 20 38 20 62 69  |re *signed* 8 bi|
00096490  74 2c 20 61 6e 64 20 64  65 66 61 75 6c 74 20 74  |t, and default t|
000964a0  6f 20 74 68 65 20 63 6f  6e 66 69 67 75 72 65 64  |o the configured|
000964b0  20 4d 6f 75 73 65 53 74  65 70 20 28 3c 43 4d 4f  | MouseStep (<CMO|
000964c0  53 3d 3e 4f 53 5f 42 79  74 65 63 6d 6f 73 3e 20  |S=>OS_Bytecmos> |
000964d0  62 79 74 65 20 31 39 34  29 2e 0a 00 44 41 54 41  |byte 194)...DATA|
000964e0  72 01 00 00 4f 53 5f 57  6f 72 64 20 32 31 2c 33  |r...OS_Word 21,3|
000964f0  0a 23 50 61 72 65 6e 74  20 4f 53 5f 57 6f 72 64  |.#Parent OS_Word|
00096500  0a 3d 3e 09 52 30 20 3d  09 32 31 0a 09 52 31 20  |.=>.R0 =.21..R1 |
00096510  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 62 6c 6f  |=.pointer to blo|
00096520  63 6b 20 63 6f 6e 74 61  69 6e 69 6e 67 20 3a 0a  |ck containing :.|
00096530  09 09 20 09 30 20 3d 20  33 0a 09 09 20 09 31 20  |.. .0 = 3... .1 |
00096540  3d 20 78 09 4c 53 42 0a  09 09 20 09 32 20 3d 09  |= x.LSB... .2 =.|
00096550  4d 53 42 0a 09 09 20 09  33 20 3d 20 79 09 4c 53  |MSB... .3 = y.LS|
00096560  42 0a 09 09 20 09 34 20  3d 09 4d 53 42 0a 0a 54  |B... .4 =.MSB..T|
00096570  68 69 73 20 4f 53 5f 57  6f 72 64 20 73 65 74 73  |his OS_Word sets|
00096580  20 74 68 65 20 6d 6f 75  73 65 20 70 6f 73 69 74  | the mouse posit|
00096590  69 6f 6e 20 66 72 6f 6d  20 74 68 65 20 74 77 6f  |ion from the two|
000965a0  20 2a 73 69 67 6e 65 64  2a 20 31 36 20 62 69 74  | *signed* 16 bit|
000965b0  20 76 61 6c 75 65 73 2e  20 49 74 20 69 73 20 69  | values. It is i|
000965c0  67 6e 6f 72 65 64 20 69  66 20 74 68 65 20 70 6f  |gnored if the po|
000965d0  73 69 74 69 6f 6e 20 69  73 20 6f 75 74 73 69 64  |sition is outsid|
000965e0  65 20 74 68 65 20 6d 6f  75 73 65 20 62 6f 75 6e  |e the mouse boun|
000965f0  64 69 6e 67 20 62 6f 78  2e 20 49 66 20 74 68 65  |ding box. If the|
00096600  20 6d 6f 75 73 65 20 61  6e 64 20 70 6f 69 6e 74  | mouse and point|
00096610  65 72 20 61 72 65 20 75  6e 6c 69 6e 6b 65 64 20  |er are unlinked |
00096620  74 68 65 6e 20 74 68 65  20 73 63 72 65 65 6e 20  |then the screen |
00096630  70 6f 73 69 74 69 6f 6e  20 77 69 6c 6c 20 6e 6f  |position will no|
00096640  74 20 62 65 20 61 6c 74  65 72 65 64 2e 0a 00 00  |t be altered....|
00096650  44 41 54 41 18 01 00 00  4f 53 5f 57 6f 72 64 20  |DATA....OS_Word |
00096660  32 31 2c 34 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |21,4.#Parent OS_|
00096670  57 6f 72 64 0a 3d 3e 09  52 30 20 3d 09 32 31 0a  |Word.=>.R0 =.21.|
00096680  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
00096690  20 62 6c 6f 63 6b 20 63  6f 6e 74 61 69 6e 69 6e  | block containin|
000966a0  67 20 3a 0a 09 09 20 09  30 20 3d 20 34 0a 0a 3c  |g :... .0 = 4..<|
000966b0  3d 09 62 6c 6f 63 6b 20  75 70 64 61 74 65 64 20  |=.block updated |
000966c0  3a 0a 09 09 20 09 31 20  3d 20 78 09 4c 53 42 0a  |:... .1 = x.LSB.|
000966d0  09 09 20 09 32 20 3d 09  4d 53 42 0a 09 09 20 09  |.. .2 =.MSB... .|
000966e0  33 20 3d 20 79 09 4c 53  42 0a 09 09 20 09 34 20  |3 = y.LSB... .4 |
000966f0  3d 09 4d 53 42 0a 0a 54  68 69 73 20 4f 53 5f 57  |=.MSB..This OS_W|
00096700  6f 72 64 20 72 65 61 64  73 20 74 68 65 20 2a 75  |ord reads the *u|
00096710  6e 62 75 66 66 65 72 65  64 2a 20 6d 6f 75 73 65  |nbuffered* mouse|
00096720  20 70 6f 73 69 74 69 6f  6e 2c 20 77 68 69 63 68  | position, which|
00096730  20 6d 61 79 20 62 65 20  73 69 67 6e 69 66 69 63  | may be signific|
00096740  61 6e 74 6c 79 20 6f 75  74 20 6f 66 20 73 74 65  |antly out of ste|
00096750  70 20 77 69 74 68 20 62  75 66 66 65 72 65 64 20  |p with buffered |
00096760  76 61 6c 75 65 73 2e 0a  44 41 54 41 1e 02 00 00  |values..DATA....|
00096770  4f 53 5f 57 6f 72 64 20  32 31 2c 35 0a 23 50 61  |OS_Word 21,5.#Pa|
00096780  72 65 6e 74 20 4f 53 5f  57 6f 72 64 0a 3d 3e 09  |rent OS_Word.=>.|
00096790  52 30 20 3d 09 32 31 0a  09 52 31 20 3d 09 70 6f  |R0 =.21..R1 =.po|
000967a0  69 6e 74 65 72 20 74 6f  20 62 6c 6f 63 6b 20 63  |inter to block c|
000967b0  6f 6e 74 61 69 6e 69 6e  67 20 3a 0a 09 09 20 09  |ontaining :... .|
000967c0  30 20 3d 20 35 0a 09 09  20 09 31 20 3d 20 78 09  |0 = 5... .1 = x.|
000967d0  4c 53 42 0a 09 09 20 09  32 20 3d 09 4d 53 42 0a  |LSB... .2 =.MSB.|
000967e0  09 09 20 09 33 20 3d 20  79 09 4c 53 42 0a 09 09  |.. .3 = y.LSB...|
000967f0  20 09 34 20 3d 09 4d 53  42 0a 0a 54 68 69 73 20  | .4 =.MSB..This |
00096800  4f 53 5f 57 6f 72 64 20  73 65 74 73 20 74 68 65  |OS_Word sets the|
00096810  20 70 6f 69 6e 74 65 72  20 28 6e 6f 74 20 6d 6f  | pointer (not mo|
00096820  75 73 65 29 20 70 6f 73  69 74 69 6f 6e 20 66 72  |use) position fr|
00096830  6f 6d 20 74 68 65 20 74  77 6f 20 2a 73 69 67 6e  |om the two *sign|
00096840  65 64 2a 20 31 36 20 62  69 74 20 76 61 6c 75 65  |ed* 16 bit value|
00096850  73 2e 20 49 66 20 74 68  65 20 6d 6f 75 73 65 20  |s. If the mouse |
00096860  61 6e 64 20 70 6f 69 6e  74 65 72 20 61 72 65 20  |and pointer are |
00096870  6c 69 6e 6b 65 64 20 74  68 65 6e 20 74 68 65 20  |linked then the |
00096880  70 6f 69 6e 74 65 72 20  70 6f 73 69 74 69 6f 6e  |pointer position|
00096890  20 77 69 6c 6c 20 62 65  20 75 70 64 61 74 65 64  | will be updated|
000968a0  20 77 69 74 68 20 74 68  65 20 6d 6f 75 73 65 20  | with the mouse |
000968b0  70 6f 73 69 74 69 6f 6e  20 61 74 20 6e 65 78 74  |position at next|
000968c0  20 56 53 79 6e 63 20 69  6e 74 65 72 72 75 70 74  | VSync interrupt|
000968d0  2e 0a 23 20 41 73 20 61  20 63 6f 72 72 6f 6c 61  |..# As a corrola|
000968e0  72 79 2c 20 69 66 20 79  6f 75 20 66 69 6e 64 20  |ry, if you find |
000968f0  74 68 61 74 20 74 68 65  20 70 6f 69 6e 74 65 72  |that the pointer|
00096900  20 6e 6f 20 6c 6f 6e 67  65 72 20 6d 6f 76 65 73  | no longer moves|
00096910  20 77 69 74 68 20 74 68  65 20 6d 6f 75 73 65 2c  | with the mouse,|
00096920  20 79 6f 75 20 6b 6e 6f  77 20 74 68 61 74 20 79  | you know that y|
00096930  6f 75 27 72 65 20 73 68  61 66 74 65 64 20 77 69  |ou're shafted wi|
00096940  74 68 20 69 6e 74 65 72  75 70 74 73 20 6f 66 66  |th interupts off|
00096950  2c 20 61 6e 64 20 61 72  65 20 70 72 6f 62 61 62  |, and are probab|
00096960  6c 79 20 67 6f 69 6e 67  20 74 6f 20 68 61 76 65  |ly going to have|
00096970  20 74 6f 20 72 65 73 65  74 20 74 68 65 20 6d 61  | to reset the ma|
00096980  63 68 69 6e 65 0a 00 00  44 41 54 41 4c 01 00 00  |chine...DATAL...|
00096990  4f 53 5f 57 6f 72 64 20  32 31 2c 36 0a 23 50 61  |OS_Word 21,6.#Pa|
000969a0  72 65 6e 74 20 4f 53 5f  57 6f 72 64 0a 3d 3e 09  |rent OS_Word.=>.|
000969b0  52 30 20 3d 09 32 31 0a  09 52 31 20 3d 09 70 6f  |R0 =.21..R1 =.po|
000969c0  69 6e 74 65 72 20 74 6f  20 62 6c 6f 63 6b 20 63  |inter to block c|
000969d0  6f 6e 74 61 69 6e 69 6e  67 20 3a 0a 09 09 20 09  |ontaining :... .|
000969e0  30 20 3d 20 36 0a 0a 3c  3d 09 62 6c 6f 63 6b 20  |0 = 6..<=.block |
000969f0  75 70 64 61 74 65 64 20  3a 0a 09 09 20 09 31 20  |updated :... .1 |
00096a00  3d 20 78 09 4c 53 42 0a  09 09 20 09 32 20 3d 09  |= x.LSB... .2 =.|
00096a10  4d 53 42 0a 09 09 20 09  33 20 3d 20 79 09 4c 53  |MSB... .3 = y.LS|
00096a20  42 0a 09 09 20 09 34 20  3d 09 4d 53 42 0a 0a 54  |B... .4 =.MSB..T|
00096a30  68 69 73 20 4f 53 5f 57  6f 72 64 20 72 65 61 64  |his OS_Word read|
00096a40  73 20 74 68 65 20 70 6f  69 6e 74 65 72 20 70 6f  |s the pointer po|
00096a50  73 69 74 69 6f 6e 2e 20  49 66 20 74 68 65 20 6d  |sition. If the m|
00096a60  6f 75 73 65 20 61 6e 64  20 70 6f 69 6e 74 65 72  |ouse and pointer|
00096a70  20 61 72 65 20 6c 69 6e  6b 65 64 20 74 68 65 6e  | are linked then|
00096a80  20 74 68 65 20 70 6f 69  6e 74 65 72 20 70 6f 73  | the pointer pos|
00096a90  69 74 69 6f 6e 20 77 69  6c 6c 20 62 65 20 75 70  |ition will be up|
00096aa0  64 61 74 65 64 20 77 69  74 68 20 74 68 65 20 6d  |dated with the m|
00096ab0  6f 75 73 65 20 70 6f 73  69 74 69 6f 6e 20 65 61  |ouse position ea|
00096ac0  63 68 20 56 53 79 6e 63  20 69 6e 74 65 72 72 75  |ch VSync interru|
00096ad0  70 74 2e 0a 44 41 54 41  ec 01 00 00 4f 53 5f 57  |pt..DATA....OS_W|
00096ae0  6f 72 64 20 33 0a 23 50  61 72 65 6e 74 20 4f 53  |ord 3.#Parent OS|
00096af0  5f 57 6f 72 64 0a 3d 3e  09 52 30 20 3d 09 33 0a  |_Word.=>.R0 =.3.|
00096b00  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
00096b10  20 66 69 76 65 20 62 79  74 65 20 62 6c 6f 63 6b  | five byte block|
00096b20  0a 0a 54 68 69 73 20 53  57 49 20 72 65 61 64 73  |..This SWI reads|
00096b30  20 74 68 65 20 69 6e 74  65 72 76 61 6c 20 74 69  | the interval ti|
00096b40  6d 65 72 2e 20 4f 6e 20  65 78 69 74 2c 20 74 68  |mer. On exit, th|
00096b50  65 20 62 75 66 66 65 72  20 63 6f 6e 74 61 69 6e  |e buffer contain|
00096b60  73 20 66 69 76 65 20 62  79 74 65 20 69 6e 74 65  |s five byte inte|
00096b70  72 76 61 6c 20 74 69 6d  65 72 2c 20 77 69 74 68  |rval timer, with|
00096b80  20 4c 53 42 20 66 69 72  73 74 2e 0a 0a 54 68 65  | LSB first...The|
00096b90  20 74 69 6d 65 72 20 69  73 20 69 6e 63 72 65 6d  | timer is increm|
00096ba0  65 6e 74 65 64 20 31 30  30 20 74 69 6d 65 73 20  |ented 100 times |
00096bb0  61 20 73 65 63 6f 6e 64  2c 20 61 6e 64 20 67 65  |a second, and ge|
00096bc0  6e 65 72 61 74 65 73 20  3c 65 76 65 6e 74 20 35  |nerates <event 5|
00096bd0  3d 3e 65 76 65 6e 74 5f  35 3e 20 77 68 65 6e 20  |=>event_5> when |
00096be0  69 74 20 72 65 61 63 68  65 73 20 30 2e 20 28 59  |it reaches 0. (Y|
00096bf0  6f 75 20 6d 75 73 74 20  65 6e 61 62 6c 65 20 74  |ou must enable t|
00096c00  68 65 20 65 76 65 6e 74  20 77 69 74 68 20 3c 4f  |he event with <O|
00096c10  53 5f 42 79 74 65 20 31  34 3d 3e 4f 53 5f 42 79  |S_Byte 14=>OS_By|
00096c20  74 65 30 31 34 3e 29 2e  20 54 6f 20 67 65 6e 65  |te014>). To gene|
00096c30  72 61 74 65 20 72 65 70  65 61 74 69 6e 67 20 65  |rate repeating e|
00096c40  76 65 6e 74 73 20 79 6f  75 20 77 6f 75 6c 64 20  |vents you would |
00096c50  68 61 76 65 20 74 6f 20  72 65 6c 6f 61 64 20 74  |have to reload t|
00096c60  68 65 20 74 69 6d 65 72  20 6f 6e 20 65 61 63 68  |he timer on each|
00096c70  20 65 76 65 6e 74 2e 20  54 68 65 20 74 69 6d 65  | event. The time|
00096c80  72 20 69 73 20 6f 62 73  6f 6c 65 63 65 6e 74 20  |r is obsolecent |
00096c90  2d 20 75 73 65 20 3c 4f  53 5f 43 61 6c 6c 41 66  |- use <OS_CallAf|
00096ca0  74 65 72 3e 20 6f 72 20  3c 4f 53 5f 43 61 6c 6c  |ter> or <OS_Call|
00096cb0  45 76 65 72 79 3e 20 69  6e 73 74 65 61 64 2e 0a  |Every> instead..|
00096cc0  44 41 54 41 a4 01 00 00  4f 53 5f 57 6f 72 64 20  |DATA....OS_Word |
00096cd0  34 0a 23 50 61 72 65 6e  74 20 4f 53 5f 57 6f 72  |4.#Parent OS_Wor|
00096ce0  64 0a 3d 3e 09 52 30 20  3d 09 34 0a 09 52 31 20  |d.=>.R0 =.4..R1 |
00096cf0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 66 69 76  |=.pointer to fiv|
00096d00  65 20 62 79 74 65 20 62  6c 6f 63 6b 0a 0a 54 68  |e byte block..Th|
00096d10  69 73 20 53 57 49 20 73  65 74 73 20 74 68 65 20  |is SWI sets the |
00096d20  69 6e 74 65 72 76 61 6c  20 74 69 6d 65 72 2e 0a  |interval timer..|
00096d30  0a 54 68 65 20 74 69 6d  65 72 20 69 73 20 69 6e  |.The timer is in|
00096d40  63 72 65 6d 65 6e 74 65  64 20 31 30 30 20 74 69  |cremented 100 ti|
00096d50  6d 65 73 20 61 20 73 65  63 6f 6e 64 2c 20 61 6e  |mes a second, an|
00096d60  64 20 67 65 6e 65 72 61  74 65 73 20 3c 65 76 65  |d generates <eve|
00096d70  6e 74 20 35 3d 3e 65 76  65 6e 74 5f 35 3e 20 77  |nt 5=>event_5> w|
00096d80  68 65 6e 20 69 74 20 72  65 61 63 68 65 73 20 30  |hen it reaches 0|
00096d90  2e 20 28 59 6f 75 20 6d  75 73 74 20 65 6e 61 62  |. (You must enab|
00096da0  6c 65 20 74 68 65 20 65  76 65 6e 74 20 77 69 74  |le the event wit|
00096db0  68 20 3c 4f 53 5f 42 79  74 65 20 31 34 3d 3e 4f  |h <OS_Byte 14=>O|
00096dc0  53 5f 42 79 74 65 30 31  34 3e 29 2e 20 54 6f 20  |S_Byte014>). To |
00096dd0  67 65 6e 65 72 61 74 65  20 72 65 70 65 61 74 69  |generate repeati|
00096de0  6e 67 20 65 76 65 6e 74  73 20 79 6f 75 20 77 6f  |ng events you wo|
00096df0  75 6c 64 20 68 61 76 65  20 74 6f 20 72 65 6c 6f  |uld have to relo|
00096e00  61 64 20 74 68 65 20 74  69 6d 65 72 20 6f 6e 20  |ad the timer on |
00096e10  65 61 63 68 20 65 76 65  6e 74 2e 20 54 68 65 20  |each event. The |
00096e20  74 69 6d 65 72 20 69 73  20 6f 62 73 6f 6c 65 63  |timer is obsolec|
00096e30  65 6e 74 20 2d 20 75 73  65 20 3c 4f 53 5f 43 61  |ent - use <OS_Ca|
00096e40  6c 6c 41 66 74 65 72 3e  20 6f 72 20 3c 4f 53 5f  |llAfter> or <OS_|
00096e50  43 61 6c 6c 45 76 65 72  79 3e 20 69 6e 73 74 65  |CallEvery> inste|
00096e60  61 64 2e 0a 44 49 52 24  b4 00 00 00 b4 00 00 00  |ad..DIR$........|
00096e70  18 6f 09 00 48 ff ff ff  54 b6 19 1e 02 01 00 00  |.o..H...T.......|
00096e80  13 00 00 00 00 00 00 00  30 00 00 00 1c 70 09 00  |........0....p..|
00096e90  48 ff ff ff 41 13 69 1a  80 00 00 00 13 00 00 00  |H...A.i.........|
00096ea0  00 00 00 00 49 00 00 00  9c 70 09 00 48 ff ff ff  |....I....p..H...|
00096eb0  81 51 1a 1e e7 04 00 00  13 00 00 00 00 00 00 00  |.Q..............|
00096ec0  43 00 00 00 84 75 09 00  48 ff ff ff a7 13 00 18  |C....u..H.......|
00096ed0  df 00 00 00 13 00 00 00  00 00 00 00 4e 00 00 00  |............N...|
00096ee0  64 76 09 00 48 ff ff ff  49 24 72 2a 02 02 00 00  |dv..H...I$r*....|
00096ef0  13 00 00 00 00 00 00 00  53 00 00 00 68 78 09 00  |........S...hx..|
00096f00  47 ff ff ff 5b 9e fd b6  e6 00 00 00 33 00 00 00  |G...[.......3...|
00096f10  00 00 00 00 45 6e 76 00  44 41 54 41 02 01 00 00  |....Env.DATA....|
00096f20  4f 53 5f 57 72 69 74 65  30 20 20 28 26 30 32 29  |OS_Write0  (&02)|
00096f30  0a 23 50 61 72 65 6e 74  20 4f 53 5f 0a 3d 3e 09  |.#Parent OS_.=>.|
00096f40  52 30 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R0 =.pointer to |
00096f50  6e 75 6c 6c 2d 74 65 72  6d 69 6e 61 74 65 64 20  |null-terminated |
00096f60  73 74 72 69 6e 67 0a 3c  3d 09 52 30 20 3d 09 70  |string.<=.R0 =.p|
00096f70  6f 69 6e 74 65 72 20 74  6f 20 74 65 72 6d 69 6e  |ointer to termin|
00096f80  61 74 69 6e 67 20 7a 65  72 6f 0a 0a 54 68 69 73  |ating zero..This|
00096f90  20 53 57 49 20 73 65 6e  64 73 20 74 68 65 20 73  | SWI sends the s|
00096fa0  74 72 69 6e 67 20 70 6f  69 6e 74 65 64 20 74 6f  |tring pointed to|
00096fb0  20 62 79 20 52 30 20 74  6f 20 61 6c 6c 20 3c 61  | by R0 to all <a|
00096fc0  63 74 69 76 65 20 6f 75  74 70 75 74 20 73 74 72  |ctive output str|
00096fd0  65 61 6d 73 3d 3e 4f 53  5f 42 79 74 65 30 30 33  |eams=>OS_Byte003|
00096fe0  3e 2e 20 49 74 20 6e 6f  6d 69 6e 61 6c 6c 79 20  |>. It nominally |
00096ff0  75 73 65 73 20 3c 4f 53  5f 57 72 69 74 65 43 3e  |uses <OS_WriteC>|
00097000  20 74 6f 20 77 72 69 74  65 20 65 61 63 68 20 63  | to write each c|
00097010  68 61 72 61 63 74 65 72  2e 0a 00 00 44 41 54 41  |haracter....DATA|
00097020  80 00 00 00 4f 53 5f 57  72 69 74 65 49 20 20 28  |....OS_WriteI  (|
00097030  26 31 30 30 2d 26 31 46  46 29 0a 23 50 61 72 65  |&100-&1FF).#Pare|
00097040  6e 74 20 4f 53 5f 0a 54  68 69 73 20 53 57 49 20  |nt OS_.This SWI |
00097050  77 72 69 74 65 73 20 74  68 65 20 63 68 61 72 20  |writes the char |
00097060  63 6f 6e 74 61 69 6e 65  64 20 69 6e 20 74 68 65  |contained in the|
00097070  20 62 6f 74 74 6f 6d 20  62 79 74 65 20 6f 66 20  | bottom byte of |
00097080  74 68 65 20 53 57 49 2c  20 75 73 69 6e 67 20 3c  |the SWI, using <|
00097090  4f 53 5f 57 72 69 74 65  43 3e 2e 0a 44 41 54 41  |OS_WriteC>..DATA|
000970a0  e7 04 00 00 4f 53 5f 57  72 69 74 65 43 20 20 28  |....OS_WriteC  (|
000970b0  26 30 30 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |&00).#Parent OS_|
000970c0  0a 3d 3e 09 52 30 20 3d  09 63 68 61 72 61 63 74  |.=>.R0 =.charact|
000970d0  65 72 20 74 6f 20 77 72  69 74 65 0a 0a 54 68 69  |er to write..Thi|
000970e0  73 20 53 57 49 20 73 65  6e 64 73 20 74 68 65 20  |s SWI sends the |
000970f0  62 79 74 65 20 69 6e 20  52 30 20 74 6f 20 61 6c  |byte in R0 to al|
00097100  6c 20 3c 61 63 74 69 76  65 20 6f 75 74 70 75 74  |l <active output|
00097110  20 73 74 72 65 61 6d 73  3d 3e 4f 53 5f 42 79 74  | streams=>OS_Byt|
00097120  65 30 30 33 3e 2e 20 44  6f 20 2a 6e 6f 74 2a 20  |e003>. Do *not* |
00097130  61 73 73 75 6d 65 20 74  68 61 74 20 74 68 69 73  |assume that this|
00097140  20 53 57 49 20 77 69 6c  6c 20 6e 65 76 65 72 20  | SWI will never |
00097150  67 65 6e 65 72 61 74 65  20 61 6e 20 65 72 72 6f  |generate an erro|
00097160  72 20 2d 20 69 74 20 63  61 6e 20 61 6e 64 20 6f  |r - it can and o|
00097170  63 63 61 73 69 6f 6e 61  6c 6c 79 20 64 6f 65 73  |ccasionally does|
00097180  2e 0a 23 20 4e 3e 20 6e  65 76 65 72 20 73 61 79  |..# N> never say|
00097190  20 6e 65 76 65 72 20 3a  2d 29 0a 23 20 47 65 72  | never :-).# Ger|
000971a0  70 68 3e 20 2e 2e 2e 20  61 67 61 69 6e 20 3f 0a  |ph> ... again ?.|
000971b0  0a 43 6f 6e 73 69 64 65  72 20 74 68 65 20 63 61  |.Consider the ca|
000971c0  73 65 20 77 68 65 72 65  20 6f 75 74 70 75 74 20  |se where output |
000971d0  69 73 20 72 65 64 69 72  65 63 74 65 64 20 74 6f  |is redirected to|
000971e0  20 61 20 66 69 6c 65 20  6f 6e 20 61 20 66 69 6c  | a file on a fil|
000971f0  69 6e 67 20 73 79 73 74  65 6d 20 77 68 69 63 68  |ing system which|
00097200  20 68 61 73 20 6e 6f 20  73 70 61 63 65 2e 20 54  | has no space. T|
00097210  68 69 73 20 69 73 20 74  68 65 20 6d 6f 73 74 20  |his is the most |
00097220  63 6f 6d 6d 6f 6e 20 65  78 61 6d 70 6c 65 2e 0a  |common example..|
00097230  0a 41 20 6c 65 73 73 20  63 6f 6d 6d 6f 6e 2c 20  |.A less common, |
00097240  62 75 74 20 70 6f 73 73  69 62 6c 65 20 63 61 73  |but possible cas|
00097250  65 20 69 73 20 77 68 65  72 65 20 61 6e 20 61 70  |e is where an ap|
00097260  70 6c 69 63 61 74 69 6f  6e 20 64 69 73 70 6c 61  |plication displa|
00097270  79 73 20 61 20 73 74 72  69 6e 67 20 69 6e 20 69  |ys a string in i|
00097280  74 73 20 65 78 69 74 20  68 61 6e 64 6c 65 72 2e  |ts exit handler.|
00097290  20 55 6e 64 65 72 20 61  20 3c 54 61 73 6b 57 69  | Under a <TaskWi|
000972a0  6e 64 6f 77 3d 3e 57 69  6d 70 3a 54 61 73 6b 57  |ndow=>Wimp:TaskW|
000972b0  69 6e 64 6f 77 5f 3e 2c  20 69 66 20 79 6f 75 20  |indow_>, if you |
000972c0  63 6c 6f 73 65 20 74 68  65 20 77 69 6e 64 6f 77  |close the window|
000972d0  20 62 65 66 6f 72 65 20  74 68 65 20 74 61 73 6b  | before the task|
000972e0  20 68 61 73 20 65 78 69  74 65 64 2c 20 69 74 73  | has exited, its|
000972f0  20 65 78 69 74 20 68 61  6e 64 6c 65 72 20 69 73  | exit handler is|
00097300  20 63 61 6c 6c 65 64 2e  20 54 68 69 73 20 73 68  | called. This sh|
00097310  6f 75 6c 64 20 74 69 64  79 20 75 70 20 61 6e 64  |ould tidy up and|
00097320  20 65 78 69 74 2e 20 49  66 20 69 74 20 70 72 69  | exit. If it pri|
00097330  6e 74 73 20 73 74 72 69  6e 67 73 20 75 73 69 6e  |nts strings usin|
00097340  67 20 6e 6f 6e 2d 58 20  76 65 72 73 69 6f 6e 73  |g non-X versions|
00097350  20 6f 66 20 74 68 65 20  53 57 49 73 20 61 6e 20  | of the SWIs an |
00097360  65 72 72 6f 72 20 77 69  6c 6c 20 62 65 20 67 65  |error will be ge|
00097370  6e 65 72 61 74 65 64 2e  20 54 68 69 73 20 77 69  |nerated. This wi|
00097380  6c 6c 20 63 61 6c 6c 20  74 68 65 20 45 72 72 6f  |ll call the Erro|
00097390  72 20 68 61 6e 64 6c 65  72 2e 20 57 68 69 63 68  |r handler. Which|
000973a0  20 77 69 6c 6c 20 65 69  74 68 65 72 2c 20 61 29  | will either, a)|
000973b0  20 64 69 73 70 6c 61 79  20 61 20 6d 65 73 73 61  | display a messa|
000973c0  67 65 2c 20 6f 72 20 62  29 20 63 61 6c 6c 20 74  |ge, or b) call t|
000973d0  68 65 20 65 78 69 74 20  68 61 6e 64 6c 65 72 2e  |he exit handler.|
000973e0  20 49 6e 20 74 68 65 20  66 6f 72 6d 65 72 20 63  | In the former c|
000973f0  61 73 65 2c 20 69 66 20  58 20 53 57 49 73 20 61  |ase, if X SWIs a|
00097400  72 65 20 75 73 65 64 20  74 68 65 20 65 78 69 74  |re used the exit|
00097410  20 68 20 69 73 20 75 73  75 61 6c 6c 79 20 63 61  | h is usually ca|
00097420  6c 6c 65 64 2e 0a 0a 54  68 65 20 6f 75 74 63 6f  |lled...The outco|
00097430  6d 65 20 6f 66 20 74 68  69 73 20 69 73 20 74 68  |me of this is th|
00097440  61 74 20 61 20 54 61 73  6b 57 69 6e 64 6f 77 20  |at a TaskWindow |
00097450  63 61 6e 20 68 6f 67 20  39 39 25 20 6f 66 20 74  |can hog 99% of t|
00097460  68 65 20 70 72 6f 63 65  73 73 6f 72 20 74 69 6d  |he processor tim|
00097470  65 20 61 73 20 69 74 20  73 77 69 74 63 68 65 73  |e as it switches|
00097480  20 69 6e 20 61 6e 64 20  6f 75 74 20 6f 66 20 53  | in and out of S|
00097490  56 43 20 6d 6f 64 65 20  69 6e 63 72 65 64 69 62  |VC mode incredib|
000974a0  6c 79 20 71 75 69 63 6b  6c 79 20 69 6e 20 61 6e  |ly quickly in an|
000974b0  20 69 6e 66 69 6e 69 74  65 20 73 65 71 75 65 6e  | infinite sequen|
000974c0  63 65 20 6f 66 20 65 72  72 6f 72 73 2e 20 41 76  |ce of errors. Av|
000974d0  6f 69 64 20 74 68 69 73  20 62 79 20 75 73 69 6e  |oid this by usin|
000974e0  67 20 58 20 53 57 49 73  2e 0a 23 20 47 65 72 70  |g X SWIs..# Gerp|
000974f0  68 3e 20 46 61 6e 63 79  20 74 61 72 74 69 6e 67  |h> Fancy tarting|
00097500  20 74 68 61 74 20 75 70  20 61 6e 64 20 70 75 74  | that up and put|
00097510  74 69 6e 67 20 69 74 20  73 65 6e 73 69 62 6c 79  |ting it sensibly|
00097520  20 69 6e 20 43 68 61 6e  67 65 45 6e 76 69 72 6f  | in ChangeEnviro|
00097530  6e 6d 65 6e 74 0a 23 20  20 20 20 20 20 20 20 61  |nment.#        a|
00097540  6e 64 20 74 68 65 20 54  61 73 6b 57 69 6e 64 6f  |nd the TaskWindo|
00097550  77 20 74 68 69 6e 67 73  20 3f 20 4f 72 20 61 20  |w things ? Or a |
00097560  73 65 70 65 72 61 74 65  20 70 61 67 65 20 66 6f  |seperate page fo|
00097570  72 20 61 6c 6c 20 74 6f  20 72 65 66 65 72 20 74  |r all to refer t|
00097580  6f 2e 0a 00 44 41 54 41  df 00 00 00 4f 53 5f 57  |o...DATA....OS_W|
00097590  72 69 74 65 4e 20 20 28  26 34 36 29 0a 23 50 61  |riteN  (&46).#Pa|
000975a0  72 65 6e 74 20 4f 53 5f  0a 3d 3e 09 52 30 20 3d  |rent OS_.=>.R0 =|
000975b0  09 70 6f 69 6e 74 65 72  20 74 6f 20 73 74 72 69  |.pointer to stri|
000975c0  6e 67 0a 09 52 31 20 3d  09 6e 75 6d 62 65 72 20  |ng..R1 =.number |
000975d0  6f 66 20 62 79 74 65 73  20 74 6f 20 77 72 69 74  |of bytes to writ|
000975e0  65 0a 0a 54 68 69 73 20  53 57 49 20 73 65 6e 64  |e..This SWI send|
000975f0  73 20 74 68 65 20 52 31  20 62 79 74 65 73 20 69  |s the R1 bytes i|
00097600  6e 20 52 30 20 74 6f 20  61 6c 6c 20 3c 61 63 74  |n R0 to all <act|
00097610  69 76 65 20 6f 75 74 70  75 74 20 73 74 72 65 61  |ive output strea|
00097620  6d 73 3d 3e 4f 53 5f 42  79 74 65 30 30 33 3e 2e  |ms=>OS_Byte003>.|
00097630  20 49 74 20 6e 6f 6d 69  6e 61 6c 6c 79 20 75 73  | It nominally us|
00097640  65 73 20 3c 4f 53 5f 57  72 69 74 65 43 3e 20 74  |es <OS_WriteC> t|
00097650  6f 20 77 72 69 74 65 20  65 61 63 68 20 63 68 61  |o write each cha|
00097660  72 2e 0a 00 44 41 54 41  02 02 00 00 4f 53 5f 57  |r...DATA....OS_W|
00097670  72 69 74 65 53 20 20 28  26 30 31 29 0a 23 50 61  |riteS  (&01).#Pa|
00097680  72 65 6e 74 20 4f 53 5f  0a 54 68 69 73 20 53 57  |rent OS_.This SW|
00097690  49 20 77 72 69 74 65 73  20 74 68 65 20 6e 75 6c  |I writes the nul|
000976a0  6c 20 74 65 72 6d 69 6e  61 74 65 64 20 73 74 72  |l terminated str|
000976b0  69 6e 67 20 66 6f 6c 6c  6f 77 69 6e 67 20 74 68  |ing following th|
000976c0  69 73 20 53 57 49 20 69  6e 20 6d 65 6d 6f 72 79  |is SWI in memory|
000976d0  20 75 73 69 6e 67 20 3c  4f 53 5f 57 72 69 74 65  | using <OS_Write|
000976e0  43 3e 2e 20 49 74 20 75  73 65 73 20 74 68 65 20  |C>. It uses the |
000976f0  76 61 6c 75 65 20 69 6e  20 52 31 34 20 74 6f 20  |value in R14 to |
00097700  66 69 6e 64 20 74 68 65  20 73 74 72 69 6e 67 2c  |find the string,|
00097710  20 61 6e 64 20 75 70 64  61 74 65 73 20 52 31 34  | and updates R14|
00097720  20 74 6f 20 70 6f 69 6e  74 20 61 66 74 65 72 20  | to point after |
00097730  73 74 72 69 6e 67 2e 0a  54 68 69 73 20 53 57 49  |string..This SWI|
00097740  20 63 61 6e 20 6e 6f 74  20 62 65 20 63 6f 6e 64  | can not be cond|
00097750  69 74 69 6f 6e 61 6c 6c  79 20 65 78 65 63 75 74  |itionally execut|
00097760  65 64 20 5b 75 6e 6c 65  73 73 20 74 68 65 20 73  |ed [unless the s|
00097770  74 72 69 6e 67 20 79 6f  75 20 77 69 73 68 20 74  |tring you wish t|
00097780  6f 20 77 72 69 74 65 20  6f 75 74 20 61 6c 73 6f  |o write out also|
00097790  20 68 61 70 70 65 6e 73  20 74 6f 20 62 65 20 76  | happens to be v|
000977a0  61 6c 69 64 20 41 52 4d  20 63 6f 64 65 20 66 6f  |alid ARM code fo|
000977b0  72 20 74 68 65 20 63 6f  6e 64 69 74 69 6f 6e 20  |r the condition |
000977c0  66 61 69 6c 65 64 20 63  61 73 65 20 3a 2d 29 20  |failed case :-) |
000977d0  5d 2e 0a 23 20 47 65 72  70 68 3e 20 4f 6b 2c 20  |]..# Gerph> Ok, |
000977e0  49 27 64 20 6c 69 6b 65  20 74 6f 20 73 65 65 20  |I'd like to see |
000977f0  73 6f 6d 65 6f 6e 65 20  77 72 69 74 65 20 61 20  |someone write a |
00097800  70 69 65 63 65 20 6f 66  20 63 6f 64 65 20 74 68  |piece of code th|
00097810  61 74 20 61 63 74 75 61  6c 6c 79 20 64 69 64 0a  |at actually did.|
00097820  23 20 20 20 20 20 20 20  20 73 6f 6d 65 74 68 69  |#        somethi|
00097830  6e 67 20 75 73 65 66 75  6c 20 75 73 69 6e 67 20  |ng useful using |
00097840  61 20 63 6f 6e 64 69 74  69 6f 6e 61 6c 20 4f 53  |a conditional OS|
00097850  5f 57 72 69 74 65 53 2e  20 41 6e 79 20 74 61 6b  |_WriteS. Any tak|
00097860  65 72 73 20 3f 0a 00 00  44 41 54 41 e6 00 00 00  |ers ?...DATA....|
00097870  4f 53 5f 57 72 69 74 65  45 6e 76 20 28 26 34 38  |OS_WriteEnv (&48|
00097880  29 0a 23 50 61 72 65 6e  74 20 4f 53 5f 0a 3d 3e  |).#Parent OS_.=>|
00097890  09 52 30 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R0 =.pointer to|
000978a0  20 65 6e 76 69 72 6f 6e  6d 65 6e 74 20 73 74 72  | environment str|
000978b0  69 6e 67 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |ing..R1 =.pointe|
000978c0  72 20 74 6f 20 72 65 61  6c 20 74 69 6d 65 20 74  |r to real time t|
000978d0  68 65 20 70 72 6f 67 72  61 6d 20 77 61 73 20 73  |he program was s|
000978e0  74 61 72 74 65 64 20 28  35 20 62 79 74 65 73 29  |tarted (5 bytes)|
000978f0  0a 0a 3c 3d 09 52 30 2c  20 52 31 20 70 72 65 73  |..<=.R0, R1 pres|
00097900  65 72 76 65 64 0a 0a 54  68 69 73 20 53 57 49 20  |erved..This SWI |
00097910  69 73 20 75 73 65 64 20  74 6f 20 73 65 74 20 74  |is used to set t|
00097920  68 65 20 65 6e 76 69 72  6f 6e 6d 65 6e 74 20 73  |he environment s|
00097930  74 72 69 6e 67 20 61 73  20 72 65 61 64 20 62 79  |tring as read by|
00097940  20 3c 4f 53 5f 47 65 74  45 6e 76 3e 2e 0a 00 00  | <OS_GetEnv>....|
00097950  44 41 54 41 51 03 00 00  4f 53 5f 46 69 6e 64 4d  |DATAQ...OS_FindM|
00097960  65 6d 4d 61 70 45 6e 74  72 69 65 73 20 20 28 26  |emMapEntries  (&|
00097970  36 30 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |60).#Parent OS_.|
00097980  3d 3e 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |=>.R0 =.pointer |
00097990  74 6f 20 3c 72 65 71 75  65 73 74 20 62 6c 6f 63  |to <request bloc|
000979a0  6b 3d 3e 4f 53 5f 6d 65  6d 6d 61 70 72 65 71 75  |k=>OS_memmaprequ|
000979b0  65 73 74 3e 2c 20 74 65  72 6d 69 6e 61 74 65 64  |est>, terminated|
000979c0  20 77 69 74 68 20 2d 31  0a 3c 3d 09 62 6c 6f 63  | with -1.<=.bloc|
000979d0  6b 20 61 74 20 52 30 20  75 70 64 61 74 65 64 0a  |k at R0 updated.|
000979e0  0a 54 68 69 73 20 53 57  49 20 72 65 74 75 72 6e  |.This SWI return|
000979f0  73 20 74 68 65 20 6c 6f  67 69 63 61 6c 20 61 64  |s the logical ad|
00097a00  64 72 65 73 73 20 74 6f  20 77 68 69 63 68 20 74  |dress to which t|
00097a10  68 65 20 72 65 71 75 65  73 74 65 64 20 70 61 67  |he requested pag|
00097a20  65 20 6e 75 6d 62 65 72  73 20 61 72 65 20 6d 61  |e numbers are ma|
00097a30  70 70 65 64 2c 20 69 65  20 61 64 64 72 65 73 73  |pped, ie address|
00097a40  20 2d 3e 20 70 61 67 65  2e 0a 0a 4f 6e 20 65 6e  | -> page...On en|
00097a50  74 72 79 2c 20 74 68 65  20 6c 6f 67 69 63 61 6c  |try, the logical|
00097a60  20 61 64 64 72 65 73 73  20 66 69 65 6c 64 20 6d  | address field m|
00097a70  75 73 74 20 62 65 20 73  65 74 2e 20 59 6f 75 20  |ust be set. You |
00097a80  6d 61 79 20 73 75 70 70  6c 79 20 70 72 6f 62 61  |may supply proba|
00097a90  62 6c 65 20 70 61 67 65  20 6e 75 6d 62 65 72 73  |ble page numbers|
00097aa0  2c 20 77 68 69 63 68 2c  20 69 66 20 63 6f 72 72  |, which, if corr|
00097ab0  65 63 74 20 77 69 6c 6c  20 6d 61 6b 65 20 74 68  |ect will make th|
00097ac0  69 73 20 63 61 6c 6c 20  72 65 74 75 72 6e 20 6d  |is call return m|
00097ad0  6f 72 65 20 71 75 69 63  6b 6c 79 20 74 68 61 6e  |ore quickly than|
00097ae0  20 69 74 20 6d 69 67 68  74 20 6f 74 68 65 72 77  | it might otherw|
00097af0  69 73 65 2e 20 49 66 20  79 6f 75 20 68 61 76 65  |ise. If you have|
00097b00  20 6e 6f 20 69 64 65 61  20 77 68 61 74 20 74 68  | no idea what th|
00097b10  65 20 70 61 67 65 20 6e  75 6d 62 65 72 20 6d 69  |e page number mi|
00097b20  67 68 74 20 62 65 2c 20  79 6f 75 20 73 68 6f 75  |ght be, you shou|
00097b30  6c 64 20 73 65 74 20 74  68 65 20 70 61 67 65 20  |ld set the page |
00097b40  6e 75 6d 62 65 72 20 74  6f 20 7a 65 72 6f 20 6f  |number to zero o|
00097b50  6e 20 65 6e 74 72 79 2e  20 54 68 65 20 70 72 6f  |n entry. The pro|
00097b60  74 65 63 74 69 6f 6e 20  76 61 6c 75 65 20 69 73  |tection value is|
00097b70  20 69 67 6e 6f 72 65 64  20 6f 6e 20 65 6e 74 72  | ignored on entr|
00097b80  79 2e 20 49 66 20 74 68  65 20 70 61 67 65 20 6e  |y. If the page n|
00097b90  75 6d 62 65 72 20 69 73  20 2d 31 20 6f 6e 20 65  |umber is -1 on e|
00097ba0  78 69 74 2c 20 74 68 65  6e 20 74 68 65 20 6d 65  |xit, then the me|
00097bb0  6d 6f 72 79 20 6d 61 70  20 65 6e 74 72 79 20 77  |mory map entry w|
00097bc0  61 73 20 6e 6f 74 20 66  6f 75 6e 64 3b 20 69 6e  |as not found; in|
00097bd0  20 74 68 69 73 20 63 61  73 65 2c 20 74 68 65 20  | this case, the |
00097be0  70 72 6f 74 65 63 74 69  6f 6e 20 6c 65 76 65 6c  |protection level|
00097bf0  20 77 69 6c 6c 6c 20 61  6c 77 61 79 73 20 62 65  | willl always be|
00097c00  20 33 2e 20 4f 74 68 65  72 77 69 73 65 20 74 68  | 3. Otherwise th|
00097c10  65 20 72 65 71 75 65 73  74 20 6c 69 73 74 20 68  |e request list h|
00097c20  61 73 20 62 65 65 6e 20  75 70 64 61 74 65 64 20  |as been updated |
00097c30  77 69 74 68 20 74 68 65  20 70 61 67 65 20 6e 75  |with the page nu|
00097c40  6d 62 65 72 20 61 6e 64  20 70 72 6f 74 65 63 74  |mber and protect|
00097c50  69 6f 6e 20 6c 65 76 65  6c 20 66 6f 72 20 74 68  |ion level for th|
00097c60  65 20 67 69 76 65 6e 20  6c 6f 67 69 63 61 6c 20  |e given logical |
00097c70  61 64 64 72 65 73 73 2e  0a 0a 54 68 65 20 63 6f  |address...The co|
00097c80  6e 76 65 72 73 65 20 69  73 20 3c 4f 53 5f 52 65  |nverse is <OS_Re|
00097c90  61 64 4d 65 6d 4d 61 70  45 6e 74 72 69 65 73 3e  |adMemMapEntries>|
00097ca0  2e 00 00 00 44 41 54 41  74 01 00 00 4d 65 6d 6f  |....DATAt...Memo|
00097cb0  72 79 20 6d 61 70 20 72  65 71 75 65 73 74 65 72  |ry map requester|
00097cc0  20 62 6c 6f 63 6b 0a 6f  66 66 73 65 74 09 63 6f  | block.offset.co|
00097cd0  6e 74 65 6e 74 73 0a 23  4c 69 6e 65 0a 30 09 70  |ntents.#Line.0.p|
00097ce0  61 67 65 20 6e 75 6d 62  65 72 0a 34 09 62 61 73  |age number.4.bas|
00097cf0  65 20 61 64 64 72 65 73  73 20 6f 66 20 6d 61 70  |e address of map|
00097d00  70 69 6e 67 0a 38 09 3c  61 63 63 65 73 73 20 74  |ping.8.<access t|
00097d10  6f 20 70 61 67 65 3d 3e  2e 61 63 63 65 73 73 3e  |o page=>.access>|
00097d20  0a 2e 2e 2e 09 72 65 70  65 61 74 65 64 20 3f 0a  |.....repeated ?.|
00097d30  23 53 75 62 70 61 67 65  20 61 63 63 65 73 73 0a  |#Subpage access.|
00097d40  50 61 67 65 20 61 63 63  65 73 73 0a 56 61 6c 75  |Page access.Valu|
00097d50  65 09 4d 65 61 6e 69 6e  67 0a 23 4c 69 6e 65 0a  |e.Meaning.#Line.|
00097d60  30 09 52 65 61 64 2f 57  72 69 74 65 0a 31 09 52  |0.Read/Write.1.R|
00097d70  65 61 64 20 6f 6e 6c 79  0a 32 09 49 6e 61 63 63  |ead only.2.Inacc|
00097d80  65 73 73 69 62 6c 65 20  69 6e 20 75 73 65 72 20  |essible in user |
00097d90  6d 6f 64 65 0a 33 09 4d  61 70 70 65 64 20 6f 75  |mode.3.Mapped ou|
00097da0  74 0a 31 30 09 4e 6f 74  20 62 75 66 66 65 72 61  |t.10.Not buffera|
00097db0  62 6c 65 20 3f 0a 32 30  09 4e 6f 74 20 63 61 63  |ble ?.20.Not cac|
00097dc0  68 65 61 62 6c 65 20 3f  0a 34 30 09 44 6f 75 62  |heable ?.40.Doub|
00097dd0  6c 79 20 6d 61 70 70 65  64 20 3f 0a 38 30 09 4e  |ly mapped ?.80.N|
00097de0  6f 20 75 73 65 72 20 64  72 61 67 20 28 66 6f 72  |o user drag (for|
00097df0  20 64 79 6e 61 6d 69 63  20 61 72 65 61 73 29 0a  | dynamic areas).|
00097e00  31 30 30 09 4e 65 65 64  73 20 67 69 76 65 6e 20  |100.Needs given |
00097e10  70 61 67 65 73 20 3f 0a  44 41 54 41 63 01 00 00  |pages ?.DATAc...|
00097e20  4f 53 5f 53 65 74 4d 65  6d 4d 61 70 45 6e 74 72  |OS_SetMemMapEntr|
00097e30  69 65 73 20 20 28 26 35  33 29 0a 23 50 61 72 65  |ies  (&53).#Pare|
00097e40  6e 74 20 4f 53 5f 0a 3d  3e 09 52 30 20 3d 09 70  |nt OS_.=>.R0 =.p|
00097e50  6f 69 6e 74 65 72 20 74  6f 20 3c 72 65 71 75 65  |ointer to <reque|
00097e60  73 74 20 62 6c 6f 63 6b  3d 3e 4f 53 5f 6d 65 6d  |st block=>OS_mem|
00097e70  6d 61 70 72 65 71 75 65  73 74 3e 0a 3c 3d 09 62  |maprequest>.<=.b|
00097e80  6c 6f 63 6b 20 61 74 20  52 30 20 75 70 64 61 74  |lock at R0 updat|
00097e90  65 64 0a 0a 54 68 69 73  20 53 57 49 20 73 65 74  |ed..This SWI set|
00097ea0  73 20 74 68 65 20 6c 6f  67 69 63 61 6c 20 74 6f  |s the logical to|
00097eb0  20 70 68 79 73 69 63 61  6c 20 6d 61 70 70 69 6e  | physical mappin|
00097ec0  67 20 6f 66 20 74 68 65  20 6d 65 6d 6f 72 79 20  |g of the memory |
00097ed0  70 61 67 65 73 2e 0a 0a  49 66 20 79 6f 75 20 61  |pages...If you a|
00097ee0  72 65 20 75 73 69 6e 67  20 74 68 69 73 20 63 61  |re using this ca|
00097ef0  6c 6c 2c 20 74 68 65 6e  20 79 6f 75 20 63 61 6e  |ll, then you can|
00097f00  20 6f 6e 6c 79 20 75 73  65 20 3c 4f 53 5f 43 68  | only use <OS_Ch|
00097f10  61 6e 67 65 44 79 6e 61  6d 69 63 41 72 65 61 3e  |angeDynamicArea>|
00097f20  20 69 66 20 74 68 65 20  6b 65 72 6e 65 6c 27 73  | if the kernel's|
00097f30  20 6c 69 6d 69 74 73 20  61 72 65 20 6d 61 69 6e  | limits are main|
00097f40  74 61 69 6e 65 64 2c 20  61 6e 64 20 61 6c 6c 20  |tained, and all |
00097f50  61 70 70 72 6f 70 72 69  61 74 65 20 61 72 65 61  |appropriate area|
00097f60  73 20 63 6f 6e 74 61 69  6e 20 63 6f 6e 74 69 6e  |s contain contin|
00097f70  6f 75 73 20 6d 65 6d 6f  72 79 2e 00 44 41 54 41  |ous memory..DATA|
00097f80  37 01 00 00 4f 53 5f 43  61 6c 6c 41 66 74 65 72  |7...OS_CallAfter|
00097f90  20 20 28 26 33 42 29 0a  23 50 61 72 65 6e 74 20  |  (&3B).#Parent |
00097fa0  4f 53 5f 0a 3d 3e 09 52  30 20 3d 09 64 65 6c 61  |OS_.=>.R0 =.dela|
00097fb0  79 20 69 6e 20 63 73 0a  09 52 31 20 3d 09 70 6f  |y in cs..R1 =.po|
00097fc0  69 6e 74 65 72 20 74 6f  20 61 64 64 72 65 73 73  |inter to address|
00097fd0  20 74 6f 20 63 61 6c 6c  0a 09 52 32 20 3d 09 76  | to call..R2 =.v|
00097fe0  61 6c 75 65 20 6f 66 20  52 31 32 20 74 6f 20 62  |alue of R12 to b|
00097ff0  65 20 63 61 6c 6c 65 64  20 77 69 74 68 0a 0a 3c  |e called with..<|
00098000  3d 09 52 30 2d 52 32 20  70 72 65 73 65 72 76 65  |=.R0-R2 preserve|
00098010  64 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |d.              |
00098020  20 20 20 0a 53 65 74 73  20 61 20 43 61 6c 6c 42  |   .Sets a CallB|
00098030  61 63 6b 20 72 6f 75 74  69 6e 65 20 74 6f 20 62  |ack routine to b|
00098040  65 20 74 72 69 67 67 65  72 65 64 20 61 66 74 65  |e triggered afte|
00098050  72 20 61 20 73 70 65 63  69 66 69 65 64 20 64 65  |r a specified de|
00098060  6c 61 79 2e 20 53 65 65  20 3c 4f 53 5f 41 64 64  |lay. See <OS_Add|
00098070  43 61 6c 6c 42 61 63 6b  3e 20 66 6f 72 20 6d 6f  |CallBack> for mo|
00098080  72 65 20 64 65 74 61 69  6c 73 2e 20 54 6f 20 72  |re details. To r|
00098090  65 6d 6f 76 65 2c 20 75  73 65 20 3c 4f 53 5f 52  |emove, use <OS_R|
000980a0  65 6d 6f 76 65 54 69 63  6b 65 72 45 76 65 6e 74  |emoveTickerEvent|
000980b0  3e 2e 0a 00 44 41 54 41  9e 00 00 00 4f 53 5f 52  |>...DATA....OS_R|
000980c0  65 6d 6f 76 65 43 61 6c  6c 42 61 63 6b 20 20 28  |emoveCallBack  (|
000980d0  26 35 46 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |&5F).#Parent OS_|
000980e0  0a 3d 3e 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |.=>.R0 =.pointer|
000980f0  20 74 6f 20 63 6f 64 65  20 63 61 6c 6c 65 64 0a  | to code called.|
00098100  09 52 31 20 3d 09 76 61  6c 75 65 20 6f 66 20 52  |.R1 =.value of R|
00098110  31 32 20 63 61 6c 6c 65  64 20 77 69 74 68 0a 0a  |12 called with..|
00098120  52 65 6d 6f 76 65 73 20  61 20 63 61 6c 6c 20 62  |Removes a call b|
00098130  61 63 6b 20 65 76 65 6e  74 2c 20 73 75 63 68 20  |ack event, such |
00098140  61 73 20 3c 4f 53 5f 43  61 6c 6c 42 61 63 6b 3e  |as <OS_CallBack>|
00098150  2e 0a 00 00 44 41 54 41  ac 00 00 00 4f 53 5f 52  |....DATA....OS_R|
00098160  65 6d 6f 76 65 54 69 63  6b 65 72 45 76 65 6e 74  |emoveTickerEvent|
00098170  20 20 28 26 33 44 29 0a  23 50 61 72 65 6e 74 20  |  (&3D).#Parent |
00098180  4f 53 5f 0a 3d 3e 09 52  30 20 3d 09 63 6f 64 65  |OS_.=>.R0 =.code|
00098190  20 63 61 6c 6c 65 64 0a  09 52 31 20 3d 09 76 61  | called..R1 =.va|
000981a0  6c 75 65 20 6f 66 20 52  31 32 20 63 61 6c 6c 65  |lue of R12 calle|
000981b0  64 20 77 69 74 68 0a 0a  52 65 6d 6f 76 65 73 20  |d with..Removes |
000981c0  61 20 74 69 63 6b 65 72  20 74 69 6d 65 72 20 65  |a ticker timer e|
000981d0  76 65 6e 74 2c 20 73 75  63 68 20 61 73 20 3c 4f  |vent, such as <O|
000981e0  53 5f 43 61 6c 6c 45 76  65 72 79 3e 20 6f 72 20  |S_CallEvery> or |
000981f0  3c 4f 53 5f 43 61 6c 6c  41 66 74 65 72 3e 2e 0a  |<OS_CallAfter>..|
00098200  44 41 54 41 4e 01 00 00  4f 53 5f 43 61 6c 6c 45  |DATAN...OS_CallE|
00098210  76 65 72 79 20 20 28 26  33 43 29 0a 23 50 61 72  |very  (&3C).#Par|
00098220  65 6e 74 20 4f 53 5f 0a  3d 3e 09 52 30 20 3d 09  |ent OS_.=>.R0 =.|
00098230  74 69 6d 65 20 74 6f 20  63 61 6c 6c 20 69 6e 20  |time to call in |
00098240  63 73 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |cs..R1 =.pointer|
00098250  20 74 6f 20 61 64 64 72  65 73 73 20 74 6f 20 63  | to address to c|
00098260  61 6c 6c 0a 09 52 32 20  3d 09 76 61 6c 75 65 20  |all..R2 =.value |
00098270  6f 66 20 52 31 32 20 74  6f 20 62 65 20 63 61 6c  |of R12 to be cal|
00098280  6c 65 64 20 77 69 74 68  0a 0a 3c 3d 09 52 30 2c  |led with..<=.R0,|
00098290  52 31 20 70 72 65 73 65  72 76 65 64 0a 20 20 20  |R1 preserved.   |
000982a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0a 53  |              .S|
000982b0  65 74 73 20 61 20 43 61  6c 6c 42 61 63 6b 20 72  |ets a CallBack r|
000982c0  6f 75 74 69 6e 65 20 74  6f 20 62 65 20 74 72 69  |outine to be tri|
000982d0  67 67 65 72 65 64 20 65  76 65 72 79 20 74 69 6d  |ggered every tim|
000982e0  65 20 61 20 73 70 65 63  69 66 69 65 64 20 64 65  |e a specified de|
000982f0  6c 61 79 20 68 61 73 20  65 6c 61 70 73 65 64 2e  |lay has elapsed.|
00098300  20 53 65 65 20 3c 4f 53  5f 41 64 64 43 61 6c 6c  | See <OS_AddCall|
00098310  42 61 63 6b 3e 20 66 6f  72 20 6d 6f 72 65 20 64  |Back> for more d|
00098320  65 74 61 69 6c 73 2e 20  54 6f 20 72 65 6d 6f 76  |etails. To remov|
00098330  65 20 75 73 65 20 3c 4f  53 5f 52 65 6d 6f 76 65  |e use <OS_Remove|
00098340  54 69 63 6b 65 72 45 76  65 6e 74 3e 2e 0a 00 00  |TickerEvent>....|
00098350  44 49 52 24 88 01 00 00  88 01 00 00 d8 84 09 00  |DIR$............|
00098360  47 ff ff ff 4c d8 ad cd  a6 01 00 00 13 00 00 00  |G...L...........|
00098370  00 00 00 00 21 52 6f 6f  74 00 00 00 80 86 09 00  |....!Root.......|
00098380  48 fd ff ff 6c a0 fe 29  97 02 00 00 13 00 00 00  |H...l..)........|
00098390  00 00 00 00 30 00 00 00  18 89 09 00 47 fd ff ff  |....0.......G...|
000983a0  5a e1 ad cd 0d 02 00 00  13 00 00 00 00 00 00 00  |Z...............|
000983b0  48 61 6e 64 6c 65 72 00  28 8b 09 00 47 fd ff ff  |Handler.(...G...|
000983c0  af f6 ad cd 5b 04 00 00  13 00 00 00 00 00 00 00  |....[...........|
000983d0  48 61 6e 64 6c 65 72 30  00 00 00 00 84 8f 09 00  |Handler0........|
000983e0  47 fd ff ff 20 eb ad cd  a6 02 00 00 13 00 00 00  |G... ...........|
000983f0  00 00 00 00 68 61 6e 64  6c 65 72 31 00 00 00 00  |....handler1....|
00098400  2c 92 09 00 47 fd ff ff  db 2f b0 cd 89 03 00 00  |,...G..../......|
00098410  13 00 00 00 00 00 00 00  48 61 6e 64 6c 65 72 32  |........Handler2|
00098420  00 00 00 00 b8 95 09 00  47 fd ff ff f2 29 b0 cd  |........G....)..|
00098430  14 02 00 00 13 00 00 00  00 00 00 00 48 61 6e 64  |............Hand|
00098440  6c 65 72 33 00 00 00 00  cc 97 09 00 47 fd ff ff  |ler3........G...|
00098450  ed d2 ad cd ce 02 00 00  13 00 00 00 00 00 00 00  |................|
00098460  31 00 00 00 9c 9a 09 00  48 fd ff ff c5 15 d2 08  |1.......H.......|
00098470  b9 02 00 00 13 00 00 00  00 00 00 00 32 00 00 00  |............2...|
00098480  58 9d 09 00 47 fd ff ff  18 c5 ad cd 80 01 00 00  |X...G...........|
00098490  13 00 00 00 00 00 00 00  33 00 00 00 d8 9e 09 00  |........3.......|
000984a0  47 fd ff ff b8 38 b0 cd  cd 01 00 00 13 00 00 00  |G....8..........|
000984b0  00 00 00 00 34 00 00 00  a8 a0 09 00 48 fd ff ff  |....4.......H...|
000984c0  9d 0b d2 08 64 03 00 00  33 00 00 00 00 00 00 00  |....d...3.......|
000984d0  46 6c 61 67 73 00 00 00  44 41 54 41 a6 01 00 00  |Flags...DATA....|
000984e0  4f 53 5f 44 79 6e 61 6d  69 63 41 72 65 61 20 20  |OS_DynamicArea  |
000984f0  28 26 36 36 29 0a 23 50  61 72 65 6e 74 20 4f 53  |(&66).#Parent OS|
00098500  5f 0a 3d 3e 09 52 30 20  3d 09 72 65 61 73 6f 6e  |_.=>.R0 =.reason|
00098510  20 63 6f 64 65 0a 3c 3d  09 52 30 20 70 72 65 73  | code.<=.R0 pres|
00098520  65 72 76 65 64 0a 0a 50  65 72 66 6f 72 6d 73 20  |erved..Performs |
00098530  6f 70 65 72 61 74 69 6f  6e 73 20 6f 6e 20 75 73  |operations on us|
00098540  65 72 20 64 79 6e 61 6d  69 63 20 61 72 65 61 73  |er dynamic areas|
00098550  20 28 52 49 53 43 20 4f  53 20 33 2e 35 2b 29 2e  | (RISC OS 3.5+).|
00098560  0a 0a 23 54 61 62 0a 43  6f 64 65 09 41 63 74 69  |..#Tab.Code.Acti|
00098570  6f 6e 0a 23 4c 69 6e 65  0a 30 09 3c 43 72 65 61  |on.#Line.0.<Crea|
00098580  74 65 73 20 61 20 6e 65  77 20 64 79 6e 61 6d 69  |tes a new dynami|
00098590  63 20 61 72 65 61 3d 3e  4f 53 5f 44 79 6e 61 6d  |c area=>OS_Dynam|
000985a0  69 63 41 72 65 61 30 3e  0a 31 09 3c 52 65 6d 6f  |icArea0>.1.<Remo|
000985b0  76 65 73 20 61 20 70 72  65 76 69 6f 75 73 6c 79  |ves a previously|
000985c0  20 63 72 65 61 74 65 64  20 64 79 6e 61 6d 69 63  | created dynamic|
000985d0  20 61 72 65 61 3d 3e 4f  53 5f 44 79 6e 61 6d 69  | area=>OS_Dynami|
000985e0  63 41 72 65 61 31 3e 0a  32 09 3c 52 65 74 75 72  |cArea1>.2.<Retur|
000985f0  6e 73 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 6f  |ns information o|
00098600  6e 20 61 20 64 79 6e 61  6d 69 63 20 61 72 65 61  |n a dynamic area|
00098610  3d 3e 4f 53 5f 44 79 6e  61 6d 69 63 41 72 65 61  |=>OS_DynamicArea|
00098620  32 3e 0a 33 09 3c 45 6e  75 6d 65 72 61 74 65 73  |2>.3.<Enumerates|
00098630  20 64 79 6e 61 6d 69 63  20 61 72 65 61 73 3d 3e  | dynamic areas=>|
00098640  4f 53 5f 44 79 6e 61 6d  69 63 41 72 65 61 33 3e  |OS_DynamicArea3>|
00098650  0a 34 09 3c 52 65 6e 75  6d 62 65 72 73 20 64 79  |.4.<Renumbers dy|
00098660  6e 61 6d 69 63 20 61 72  65 61 73 3d 3e 4f 53 5f  |namic areas=>OS_|
00098670  44 79 6e 61 6d 69 63 41  72 65 61 34 3e 0a 00 00  |DynamicArea4>...|
00098680  44 41 54 41 97 02 00 00  4f 53 5f 44 79 6e 61 6d  |DATA....OS_Dynam|
00098690  69 63 41 72 65 61 20 30  20 20 28 26 36 36 29 0a  |icArea 0  (&66).|
000986a0  23 50 61 72 65 6e 74 20  4f 53 5f 44 79 6e 61 6d  |#Parent OS_Dynam|
000986b0  69 63 41 72 65 61 0a 3d  3e 09 52 30 20 3d 09 30  |icArea.=>.R0 =.0|
000986c0  0a 09 52 31 20 3d 09 2d  31 20 28 6f 72 20 6e 65  |..R1 =.-1 (or ne|
000986d0  77 20 61 72 65 61 20 6e  75 6d 62 65 72 20 31 32  |w area number 12|
000986e0  38 2d 32 35 35 3b 20 72  65 73 65 72 76 65 64 20  |8-255; reserved |
000986f0  66 6f 72 20 41 63 6f 72  6e 29 0a 09 52 32 20 3d  |for Acorn)..R2 =|
00098700  09 69 6e 69 74 69 61 6c  20 73 69 7a 65 20 6f 66  |.initial size of|
00098710  20 61 72 65 61 2c 20 69  6e 20 62 79 74 65 73 0a  | area, in bytes.|
00098720  09 52 33 20 3d 09 2d 31  20 28 6f 72 20 62 61 73  |.R3 =.-1 (or bas|
00098730  65 20 6f 66 20 61 72 65  61 3b 20 72 65 73 65 72  |e of area; reser|
00098740  76 65 64 20 66 6f 72 20  41 63 6f 72 6e 29 0a 09  |ved for Acorn)..|
00098750  52 34 20 3d 09 3c 61 72  65 61 20 66 6c 61 67 73  |R4 =.<area flags|
00098760  3d 3e 4f 53 5f 44 79 6e  61 6d 69 63 41 72 65 61  |=>OS_DynamicArea|
00098770  46 6c 61 67 73 3e 0a 09  52 35 20 3d 09 6d 61 78  |Flags>..R5 =.max|
00098780  69 6d 75 6d 20 73 69 7a  65 20 6f 66 20 61 72 65  |imum size of are|
00098790  61 2c 20 69 6e 20 62 79  74 65 73 20 28 2d 31 20  |a, in bytes (-1 |
000987a0  66 6f 72 20 75 6e 6c 69  6d 69 74 65 64 29 0a 09  |for unlimited)..|
000987b0  52 36 20 3d 09 3c 68 61  6e 64 6c 65 72 20 72 6f  |R6 =.<handler ro|
000987c0  75 74 69 6e 65 3d 3e 4f  53 5f 44 79 6e 61 6d 69  |utine=>OS_Dynami|
000987d0  63 41 72 65 61 48 61 6e  64 6c 65 72 3e 2c 20 6f  |cAreaHandler>, o|
000987e0  72 20 30 20 66 6f 72 20  6e 6f 6e 65 0a 09 52 37  |r 0 for none..R7|
000987f0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 77 6f  | =.pointer to wo|
00098800  72 6b 73 70 61 63 65 20  66 6f 72 20 68 61 6e 64  |rkspace for hand|
00098810  6c 65 72 2c 20 6f 72 20  2d 31 20 66 6f 72 20 62  |ler, or -1 for b|
00098820  61 73 65 20 6f 66 20 61  72 65 61 0a 09 52 38 20  |ase of area..R8 |
00098830  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 6e 61 6d  |=.pointer to nam|
00098840  65 20 6f 66 20 61 72 65  61 0a 09 0a 3c 3d 09 52  |e of area...<=.R|
00098850  30 2c 20 52 32 2c 20 52  34 2c 20 52 36 2d 52 38  |0, R2, R4, R6-R8|
00098860  20 3d 20 70 72 65 73 65  72 76 65 64 0a 09 52 31  | = preserved..R1|
00098870  20 3d 09 61 6c 6c 6f 63  61 74 65 64 20 61 72 65  | =.allocated are|
00098880  61 20 6e 75 6d 62 65 72  0a 09 52 33 20 3d 09 62  |a number..R3 =.b|
00098890  61 73 65 20 6f 66 20 61  72 65 61 0a 09 52 35 20  |ase of area..R5 |
000988a0  3d 09 6d 61 78 69 6d 75  6d 20 73 69 7a 65 20 6f  |=.maximum size o|
000988b0  66 20 61 72 65 61 0a 0a  54 68 69 73 20 63 61 6c  |f area..This cal|
000988c0  6c 20 63 72 65 61 74 65  73 20 61 20 6e 65 77 20  |l creates a new |
000988d0  64 79 6e 61 6d 69 63 20  61 72 65 61 2e 20 41 72  |dynamic area. Ar|
000988e0  65 61 20 6e 75 6d 62 65  72 73 20 61 6c 6c 6f 63  |ea numbers alloc|
000988f0  61 74 65 64 20 61 72 65  20 67 72 65 61 74 65 72  |ated are greater|
00098900  20 74 68 61 6e 20 6f 72  20 65 71 75 61 6c 20 74  | than or equal t|
00098910  6f 20 32 35 36 2e 0a 00  44 41 54 41 0d 02 00 00  |o 256...DATA....|
00098920  44 79 6e 61 6d 69 63 20  61 72 65 61 20 68 61 6e  |Dynamic area han|
00098930  64 6c 65 72 20 63 6f 64  65 0a 23 50 61 72 65 6e  |dler code.#Paren|
00098940  74 20 4f 53 5f 44 79 6e  61 6d 69 63 41 72 65 61  |t OS_DynamicArea|
00098950  0a 3d 3e 09 52 30 20 3d  09 72 65 61 73 6f 6e 0a  |.=>.R0 =.reason.|
00098960  09 52 31 32 20 3d 09 77  6f 72 6b 73 70 61 63 65  |.R12 =.workspace|
00098970  20 70 6f 69 6e 74 65 72  20 70 61 73 73 65 64 20  | pointer passed |
00098980  74 6f 20 3c 4f 53 5f 44  79 6e 61 6d 69 63 41 72  |to <OS_DynamicAr|
00098990  65 61 20 30 3d 3e 4f 53  5f 44 79 6e 61 6d 69 63  |ea 0=>OS_Dynamic|
000989a0  41 72 65 61 30 3e 0a 0a  44 79 6e 61 6d 69 63 20  |Area0>..Dynamic |
000989b0  68 61 6e 64 6c 65 72 20  63 6f 64 65 20 63 6f 6e  |handler code con|
000989c0  74 72 6f 6c 73 20 77 68  61 74 20 68 61 70 70 65  |trols what happe|
000989d0  6e 73 20 74 6f 20 61 20  64 79 6e 61 6d 69 63 20  |ns to a dynamic |
000989e0  61 72 65 61 20 61 73 20  69 74 20 69 73 20 6d 6f  |area as it is mo|
000989f0  64 69 66 69 65 64 20 62  79 20 74 68 65 20 73 79  |dified by the sy|
00098a00  73 74 65 6d 2e 0a 0a 23  54 61 62 0a 52 65 61 73  |stem...#Tab.Reas|
00098a10  6f 6e 09 4d 65 61 6e 69  6e 67 0a 23 4c 69 6e 65  |on.Meaning.#Line|
00098a20  0a 30 09 3c 50 72 65 47  72 6f 77 20 2d 20 74 68  |.0.<PreGrow - th|
00098a30  65 20 61 72 65 61 20 69  73 20 61 62 6f 75 74 20  |e area is about |
00098a40  74 6f 20 67 72 6f 77 3d  3e 4f 53 5f 44 79 6e 61  |to grow=>OS_Dyna|
00098a50  6d 69 63 41 72 65 61 48  61 6e 64 6c 65 72 30 3e  |micAreaHandler0>|
00098a60  0a 31 09 3c 50 6f 73 74  47 72 6f 77 20 2d 20 74  |.1.<PostGrow - t|
00098a70  68 65 20 61 72 65 61 20  68 61 73 20 6a 75 73 74  |he area has just|
00098a80  20 67 72 6f 77 6e 3d 3e  4f 53 5f 44 79 6e 61 6d  | grown=>OS_Dynam|
00098a90  69 63 41 72 65 61 48 61  6e 64 6c 65 72 31 3e 0a  |icAreaHandler1>.|
00098aa0  32 09 3c 50 72 65 53 68  72 69 6e 6b 20 2d 20 74  |2.<PreShrink - t|
00098ab0  68 65 20 61 72 65 61 20  69 73 20 61 62 6f 75 74  |he area is about|
00098ac0  20 74 6f 20 73 68 72 69  6e 6b 3d 3e 4f 53 5f 44  | to shrink=>OS_D|
00098ad0  79 6e 61 6d 69 63 41 72  65 61 48 61 6e 64 6c 65  |ynamicAreaHandle|
00098ae0  72 32 3e 0a 33 09 3c 50  6f 73 74 53 68 72 69 6e  |r2>.3.<PostShrin|
00098af0  6b 20 2d 20 74 68 65 20  61 72 65 61 20 68 61 73  |k - the area has|
00098b00  20 6a 75 73 74 20 73 68  72 75 6e 6b 3d 3e 4f 53  | just shrunk=>OS|
00098b10  5f 44 79 6e 61 6d 69 63  41 72 65 61 48 61 6e 64  |_DynamicAreaHand|
00098b20  6c 65 72 33 3e 00 00 00  44 41 54 41 5b 04 00 00  |ler3>...DATA[...|
00098b30  44 79 6e 61 6d 69 63 20  61 72 65 61 20 50 72 65  |Dynamic area Pre|
00098b40  47 72 6f 77 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |Grow.#Parent OS_|
00098b50  44 79 6e 61 6d 69 63 41  72 65 61 48 61 6e 64 6c  |DynamicAreaHandl|
00098b60  65 72 0a 3d 3e 09 52 30  20 3d 09 30 0a 09 52 31  |er.=>.R0 =.0..R1|
00098b70  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 70 61  | =.pointer to pa|
00098b80  67 65 20 62 6c 6f 63 6b  0a 09 52 32 20 3d 09 6e  |ge block..R2 =.n|
00098b90  75 6d 62 65 72 20 6f 66  20 65 6e 74 72 69 65 73  |umber of entries|
00098ba0  20 69 6e 20 74 68 65 20  62 6c 6f 63 6b 0a 09 52  | in the block..R|
00098bb0  33 20 3d 09 61 6d 6f 75  6e 74 20 74 68 65 20 61  |3 =.amount the a|
00098bc0  72 65 61 20 69 73 20 67  72 6f 77 69 6e 67 20 62  |rea is growing b|
00098bd0  79 0a 09 52 34 20 3d 09  63 75 72 72 65 6e 74 20  |y..R4 =.current |
00098be0  73 69 7a 65 20 6f 66 20  61 72 65 61 2c 20 69 6e  |size of area, in|
00098bf0  20 62 79 74 65 73 0a 09  52 35 20 3d 09 70 61 67  | bytes..R5 =.pag|
00098c00  65 20 73 69 7a 65 2c 20  69 6e 20 62 79 74 65 73  |e size, in bytes|
00098c10  0a 09 52 31 32 20 3d 09  77 6f 72 6b 73 70 61 63  |..R12 =.workspac|
00098c20  65 20 70 6f 69 6e 74 65  72 20 70 61 73 73 65 64  |e pointer passed|
00098c30  20 74 6f 20 3c 4f 53 5f  44 79 6e 61 6d 69 63 41  | to <OS_DynamicA|
00098c40  72 65 61 20 30 3d 3e 4f  53 5f 44 79 6e 61 6d 69  |rea 0=>OS_Dynami|
00098c50  63 41 72 65 61 30 3e 20  6f 72 20 62 61 73 65 20  |cArea0> or base |
00098c60  6f 66 20 61 72 65 61 2e  0a 0a 3c 3d 09 61 6c 6c  |of area...<=.all|
00098c70  20 70 72 65 73 65 72 76  65 64 2c 20 75 6e 6c 65  | preserved, unle|
00098c80  73 73 20 67 72 6f 77 20  69 73 20 64 69 73 61 6c  |ss grow is disal|
00098c90  6c 6f 77 65 64 0a 0a 54  68 69 73 20 68 61 6e 64  |lowed..This hand|
00098ca0  6c 65 72 20 69 73 20 63  61 6c 6c 65 64 20 77 68  |ler is called wh|
00098cb0  65 6e 20 61 20 63 61 6c  6c 20 74 6f 20 3c 4f 53  |en a call to <OS|
00098cc0  5f 43 68 61 6e 67 65 44  79 6e 61 6d 69 63 41 72  |_ChangeDynamicAr|
00098cd0  65 61 3e 20 72 65 73 75  6c 74 73 20 69 6e 20 61  |ea> results in a|
00098ce0  6e 20 61 72 65 61 20 67  72 6f 77 69 6e 67 2c 20  |n area growing, |
00098cf0  62 65 66 6f 72 65 20 61  6e 79 20 70 61 67 65 73  |before any pages|
00098d00  20 61 72 65 20 61 63 74  75 61 6c 6c 79 20 6d 6f  | are actually mo|
00098d10  76 65 64 2e 20 49 74 20  69 73 20 69 73 73 75 65  |ved. It is issue|
00098d20  64 20 6a 75 73 74 20 62  65 66 6f 72 65 20 74 68  |d just before th|
00098d30  65 20 70 61 67 65 73 20  74 68 65 6d 73 65 6c 76  |e pages themselv|
00098d40  65 73 20 61 72 65 20 61  6c 6c 6f 63 61 74 65 64  |es are allocated|
00098d50  20 74 6f 20 74 68 65 20  62 6c 6f 63 6b 2e 0a 0a  | to the block...|
00098d60  59 6f 75 20 63 61 6e 20  72 65 71 75 65 73 74 20  |You can request |
00098d70  74 68 61 74 20 73 70 65  63 69 66 69 63 20 70 61  |that specific pa|
00098d80  67 65 73 20 62 65 20 75  73 65 64 20 66 6f 72 20  |ges be used for |
00098d90  67 72 6f 77 69 6e 67 20  74 68 65 20 61 72 65 61  |growing the area|
00098da0  20 62 79 20 66 69 6c 6c  69 6e 67 20 69 6e 20 74  | by filling in t|
00098db0  68 65 69 72 20 70 61 67  65 20 6e 75 6d 62 65 72  |heir page number|
00098dc0  73 20 69 6e 20 74 68 65  20 70 61 67 65 20 62 6c  |s in the page bl|
00098dd0  6f 63 6b 2e 20 49 66 20  79 6f 75 20 64 6f 20 73  |ock. If you do s|
00098de0  6f 2c 20 79 6f 75 20 6d  75 73 74 20 73 70 65 63  |o, you must spec|
00098df0  69 66 79 20 61 6c 6c 20  74 68 65 20 70 61 67 65  |ify all the page|
00098e00  73 2e 20 54 68 65 20 66  69 72 73 74 20 65 6e 74  |s. The first ent|
00098e10  72 79 20 69 6e 20 74 68  65 20 70 61 67 65 20 62  |ry in the page b|
00098e20  6c 6f 63 6b 20 63 6f 72  72 65 73 70 6f 6e 64 73  |lock corresponds|
00098e30  20 74 6f 20 74 68 65 20  6c 6f 77 65 73 74 20 6d  | to the lowest m|
00098e40  65 6d 6f 72 79 20 61 64  64 72 65 73 73 20 6f 66  |emory address of|
00098e50  20 74 68 65 20 65 78 74  65 6e 73 69 6f 6e 2c 20  | the extension, |
00098e60  61 6e 64 20 74 68 65 20  6c 61 73 74 20 65 6e 74  |and the last ent|
00098e70  72 79 20 69 6e 20 74 68  65 20 70 61 67 65 20 62  |ry in the page b|
00098e80  6c 6f 63 6b 20 74 68 65  20 68 69 67 68 65 73 74  |lock the highest|
00098e90  20 6d 65 6d 6f 72 79 20  61 64 64 72 65 73 73 2e  | memory address.|
00098ea0  0a 0a 59 6f 75 20 63 61  6e 20 70 72 65 76 65 6e  |..You can preven|
00098eb0  74 20 74 68 65 20 61 72  65 61 20 63 68 61 6e 67  |t the area chang|
00098ec0  69 6e 67 20 73 69 7a 65  20 62 79 20 72 65 74 75  |ing size by retu|
00098ed0  72 6e 69 6e 67 20 61 6e  20 65 72 72 6f 72 2e 20  |rning an error. |
00098ee0  52 30 20 73 68 6f 75 6c  64 20 70 6f 69 6e 74 20  |R0 should point |
00098ef0  74 6f 20 61 20 73 74 61  6e 64 61 72 64 20 3c 65  |to a standard <e|
00098f00  72 72 6f 72 20 62 6c 6f  63 6b 3d 3e 73 77 69 5f  |rror block=>swi_|
00098f10  65 72 72 6f 72 62 6c 6f  63 6b 3e 2c 20 6f 72 20  |errorblock>, or |
00098f20  62 65 20 73 65 74 20 74  6f 20 7a 65 72 6f 20 66  |be set to zero f|
00098f30  6f 72 20 61 20 67 65 6e  65 72 69 63 20 65 72 72  |or a generic err|
00098f40  6f 72 20 6d 65 73 73 61  67 65 20 74 6f 20 62 65  |or message to be|
00098f50  20 75 73 65 64 2e 20 59  6f 75 20 73 68 6f 75 6c  | used. You shoul|
00098f60  64 20 74 68 65 6e 20 72  65 74 75 72 6e 20 77 69  |d then return wi|
00098f70  74 68 20 74 68 65 20 56  20 66 6c 61 67 20 73 65  |th the V flag se|
00098f80  74 2e 0a 00 44 41 54 41  a6 02 00 00 44 79 6e 61  |t...DATA....Dyna|
00098f90  6d 69 63 20 61 72 65 61  20 50 6f 73 74 47 72 6f  |mic area PostGro|
00098fa0  77 0a 23 50 61 72 65 6e  74 20 4f 53 5f 44 79 6e  |w.#Parent OS_Dyn|
00098fb0  61 6d 69 63 41 72 65 61  48 61 6e 64 6c 65 72 0a  |amicAreaHandler.|
00098fc0  3d 3e 09 52 30 09 3d 09  31 0a 09 52 31 09 3d 09  |=>.R0.=.1..R1.=.|
00098fd0  70 6f 69 6e 74 65 72 20  74 6f 20 70 61 67 65 20  |pointer to page |
00098fe0  62 6c 6f 63 6b 0a 09 52  32 09 3d 09 6e 75 6d 62  |block..R2.=.numb|
00098ff0  65 72 20 6f 66 20 65 6e  74 72 69 65 73 20 69 6e  |er of entries in|
00099000  20 74 68 65 20 62 6c 6f  63 6b 0a 09 52 33 09 3d  | the block..R3.=|
00099010  09 61 6d 6f 75 6e 74 20  74 68 65 20 61 72 65 61  |.amount the area|
00099020  20 67 72 65 77 20 62 79  0a 09 52 34 09 3d 09 6e  | grew by..R4.=.n|
00099030  65 77 20 73 69 7a 65 20  6f 66 20 61 72 65 61 2c  |ew size of area,|
00099040  20 69 6e 20 62 79 74 65  73 0a 09 52 35 09 3d 09  | in bytes..R5.=.|
00099050  70 61 67 65 20 73 69 7a  65 2c 20 69 6e 20 62 79  |page size, in by|
00099060  74 65 73 0a 09 52 31 32  09 3d 09 77 6f 72 6b 73  |tes..R12.=.works|
00099070  70 61 63 65 20 70 6f 69  6e 74 65 72 20 70 61 73  |pace pointer pas|
00099080  73 65 64 20 74 6f 20 3c  4f 53 5f 44 79 6e 61 6d  |sed to <OS_Dynam|
00099090  69 63 41 72 65 61 20 30  3d 3e 4f 53 5f 44 79 6e  |icArea 0=>OS_Dyn|
000990a0  61 6d 69 63 41 72 65 61  30 3e 20 6f 72 20 62 61  |amicArea0> or ba|
000990b0  73 65 20 6f 66 20 61 72  65 61 2e 0a 0a 3c 3d 09  |se of area...<=.|
000990c0  61 6c 6c 20 70 72 65 73  65 72 76 65 64 2c 20 75  |all preserved, u|
000990d0  6e 6c 65 73 73 20 67 72  6f 77 20 69 73 20 64 69  |nless grow is di|
000990e0  73 61 6c 6c 6f 77 65 64  0a 0a 54 68 69 73 20 72  |sallowed..This r|
000990f0  65 61 73 6f 6e 20 63 6f  64 65 20 69 73 20 69 73  |eason code is is|
00099100  73 75 65 64 20 77 68 65  6e 20 61 20 63 61 6c 6c  |sued when a call|
00099110  20 74 6f 20 3c 4f 53 5f  43 68 61 6e 67 65 44 79  | to <OS_ChangeDy|
00099120  6e 61 6d 69 63 41 72 65  61 3e 20 72 65 73 75 6c  |namicArea> resul|
00099130  74 73 20 69 6e 20 61 6e  20 61 72 65 61 20 67 72  |ts in an area gr|
00099140  6f 77 69 6e 67 2c 20 69  74 20 69 73 20 63 61 6c  |owing, it is cal|
00099150  6c 65 64 20 61 66 74 65  72 20 74 68 65 20 3c 50  |led after the <P|
00099160  72 65 47 72 6f 77 3d 3e  4f 53 5f 44 79 6e 61 6d  |reGrow=>OS_Dynam|
00099170  69 63 41 72 65 61 48 61  6e 64 6c 65 72 31 3e 20  |icAreaHandler1> |
00099180  72 65 61 73 6f 6e 20 63  6f 64 65 20 68 61 73 20  |reason code has |
00099190  62 65 65 6e 20 75 73 65  64 20 73 75 63 63 65 73  |been used succes|
000991a0  73 66 75 6c 6c 79 20 61  6e 64 20 74 68 65 20 6d  |sfully and the m|
000991b0  65 6d 6f 72 79 20 70 61  67 65 73 20 68 61 76 65  |emory pages have|
000991c0  20 62 65 65 6e 20 6d 6f  76 65 64 2e 20 20 49 74  | been moved.  It|
000991d0  20 70 72 6f 76 69 64 65  73 20 74 68 65 20 68 61  | provides the ha|
000991e0  6e 64 6c 65 72 20 77 69  74 68 20 61 20 6c 69 73  |ndler with a lis|
000991f0  74 20 6f 66 20 77 68 69  63 68 20 70 68 79 73 69  |t of which physi|
00099200  63 61 6c 20 70 61 67 65  73 20 68 61 76 65 20 62  |cal pages have b|
00099210  65 65 6e 20 6d 6f 76 65  64 20 69 6e 74 6f 20 74  |een moved into t|
00099220  68 65 20 61 72 65 61 2e  20 0a 00 00 44 41 54 41  |he area. ...DATA|
00099230  89 03 00 00 44 79 6e 61  6d 69 63 20 61 72 65 61  |....Dynamic area|
00099240  20 50 72 65 53 68 72 69  6e 6b 0a 23 50 61 72 65  | PreShrink.#Pare|
00099250  6e 74 20 4f 53 5f 44 79  6e 61 6d 69 63 41 72 65  |nt OS_DynamicAre|
00099260  61 48 61 6e 64 6c 65 72  0a 3d 3e 09 52 30 20 3d  |aHandler.=>.R0 =|
00099270  09 32 0a 09 52 33 20 3d  09 61 6d 6f 75 6e 74 20  |.2..R3 =.amount |
00099280  74 68 65 20 61 72 65 61  20 69 73 20 73 68 72 69  |the area is shri|
00099290  6e 6b 69 6e 67 20 62 79  0a 09 52 34 20 3d 09 6e  |nking by..R4 =.n|
000992a0  65 77 20 73 69 7a 65 20  6f 66 20 61 72 65 61 2c  |ew size of area,|
000992b0  20 69 6e 20 62 79 74 65  73 0a 09 52 35 20 3d 09  | in bytes..R5 =.|
000992c0  70 61 67 65 20 73 69 7a  65 2c 20 69 6e 20 62 79  |page size, in by|
000992d0  74 65 73 0a 09 52 31 32  20 3d 09 77 6f 72 6b 73  |tes..R12 =.works|
000992e0  70 61 63 65 20 70 6f 69  6e 74 65 72 20 70 61 73  |pace pointer pas|
000992f0  73 65 64 20 74 6f 20 3c  4f 53 5f 44 79 6e 61 6d  |sed to <OS_Dynam|
00099300  69 63 41 72 65 61 20 30  3d 3e 4f 53 5f 44 79 6e  |icArea 0=>OS_Dyn|
00099310  61 6d 69 63 41 72 65 61  30 3e 20 6f 72 20 62 61  |amicArea0> or ba|
00099320  73 65 20 6f 66 20 61 72  65 61 2e 0a 0a 3c 3d 09  |se of area...<=.|
00099330  52 33 20 3d 09 61 6d 6f  75 6e 74 20 61 72 65 61  |R3 =.amount area|
00099340  20 63 61 6e 20 73 68 72  69 6e 6b 20 62 79 0a 09  | can shrink by..|
00099350  61 6c 6c 20 6f 74 68 65  72 73 20 70 72 65 73 65  |all others prese|
00099360  72 76 65 64 2c 20 75 6e  6c 65 73 73 20 67 72 6f  |rved, unless gro|
00099370  77 20 69 73 20 64 69 73  61 6c 6c 6f 77 65 64 0a  |w is disallowed.|
00099380  0a 54 68 69 73 20 72 65  61 73 6f 6e 20 63 6f 64  |.This reason cod|
00099390  65 20 69 73 20 69 73 73  75 65 64 20 77 68 65 6e  |e is issued when|
000993a0  20 61 20 63 61 6c 6c 20  74 6f 20 3c 4f 53 5f 43  | a call to <OS_C|
000993b0  68 61 6e 67 65 44 79 6e  61 6d 69 63 41 72 65 61  |hangeDynamicArea|
000993c0  3e 20 72 65 73 75 6c 74  73 20 69 6e 20 61 6e 20  |> results in an |
000993d0  61 72 65 61 20 73 68 72  69 6e 6b 69 6e 67 2c 20  |area shrinking, |
000993e0  62 65 66 6f 72 65 20 61  6e 79 20 70 61 67 65 73  |before any pages|
000993f0  20 61 72 65 20 6d 6f 76  65 64 2e 20 59 6f 75 20  | are moved. You |
00099400  63 61 6e 20 6c 69 6d 69  74 20 74 68 65 20 61 6d  |can limit the am|
00099410  6f 75 6e 74 20 6f 66 20  6d 65 6d 6f 72 79 20 6d  |ount of memory m|
00099420  6f 76 65 64 20 6f 75 74  20 6f 66 20 74 68 65 20  |oved out of the |
00099430  61 72 65 61 2e 20 49 66  20 74 68 65 20 70 65 72  |area. If the per|
00099440  6d 69 74 74 65 64 20 73  6b 72 69 6e 6b 61 67 65  |mitted skrinkage|
00099450  20 79 6f 75 20 72 65 74  75 72 6e 20 69 73 20 61  | you return is a|
00099460  20 6e 6f 6e 2d 70 61 67  65 20 6d 75 6c 74 69 70  | non-page multip|
00099470  6c 65 2c 20 69 74 20 77  69 6c 6c 20 62 65 20 72  |le, it will be r|
00099480  6f 75 6e 64 65 64 20 64  6f 77 6e 20 74 6f 20 61  |ounded down to a|
00099490  20 70 61 67 65 20 6d 75  6c 74 69 70 6c 65 2e 0a  | page multiple..|
000994a0  09 0a 59 6f 75 20 63 61  6e 20 70 72 65 76 65 6e  |..You can preven|
000994b0  74 20 74 68 65 20 61 72  65 61 20 63 68 61 6e 67  |t the area chang|
000994c0  69 6e 67 20 73 69 7a 65  20 62 79 20 72 65 74 75  |ing size by retu|
000994d0  72 6e 69 6e 67 20 61 6e  64 20 65 72 72 6f 72 2e  |rning and error.|
000994e0  20 52 30 20 73 68 6f 75  6c 64 20 70 6f 69 6e 74  | R0 should point|
000994f0  20 74 6f 20 61 20 6e 75  6c 6c 20 74 65 72 6d 69  | to a null termi|
00099500  6e 61 74 65 64 20 65 72  72 6f 72 20 6d 65 73 73  |nated error mess|
00099510  61 67 65 2c 20 6f 72 20  62 65 20 73 65 74 20 74  |age, or be set t|
00099520  6f 20 7a 65 72 6f 20 66  6f 72 20 61 20 67 65 6e  |o zero for a gen|
00099530  65 72 69 63 20 65 72 72  6f 72 20 6d 65 73 73 61  |eric error messa|
00099540  67 65 20 74 6f 20 62 65  20 75 73 65 64 2e 20 52  |ge to be used. R|
00099550  33 20 73 68 6f 75 6c 64  20 62 65 20 7a 65 72 6f  |3 should be zero|
00099560  2c 20 74 6f 20 73 68 6f  77 20 74 68 61 74 20 6e  |, to show that n|
00099570  6f 20 73 68 72 69 6e 6b  61 67 65 20 69 73 20 70  |o shrinkage is p|
00099580  6f 73 73 69 62 6c 65 2e  20 59 6f 75 20 73 68 6f  |ossible. You sho|
00099590  75 6c 64 20 74 68 65 6e  20 72 65 74 75 72 6e 20  |uld then return |
000995a0  77 69 74 68 20 74 68 65  20 56 20 66 6c 61 67 20  |with the V flag |
000995b0  73 65 74 2e 0a 00 00 00  44 41 54 41 14 02 00 00  |set.....DATA....|
000995c0  44 79 6e 61 6d 69 63 20  61 72 65 61 20 50 72 65  |Dynamic area Pre|
000995d0  53 68 72 69 6e 6b 0a 23  50 61 72 65 6e 74 20 4f  |Shrink.#Parent O|
000995e0  53 5f 44 79 6e 61 6d 69  63 41 72 65 61 48 61 6e  |S_DynamicAreaHan|
000995f0  64 6c 65 72 0a 3d 3e 09  52 30 20 3d 09 33 0a 09  |dler.=>.R0 =.3..|
00099600  52 33 20 3d 09 61 6d 6f  75 6e 74 20 74 68 65 20  |R3 =.amount the |
00099610  61 72 65 61 20 73 68 72  75 6e 6b 20 62 79 0a 09  |area shrunk by..|
00099620  52 34 20 3d 09 6e 65 77  20 73 69 7a 65 20 6f 66  |R4 =.new size of|
00099630  20 61 72 65 61 2c 20 69  6e 20 62 79 74 65 73 0a  | area, in bytes.|
00099640  09 52 35 20 3d 09 70 61  67 65 20 73 69 7a 65 2c  |.R5 =.page size,|
00099650  20 69 6e 20 62 79 74 65  73 0a 09 52 31 32 20 3d  | in bytes..R12 =|
00099660  09 77 6f 72 6b 73 70 61  63 65 20 70 6f 69 6e 74  |.workspace point|
00099670  65 72 20 70 61 73 73 65  64 20 74 6f 20 3c 4f 53  |er passed to <OS|
00099680  5f 44 79 6e 61 6d 69 63  41 72 65 61 20 30 3d 3e  |_DynamicArea 0=>|
00099690  4f 53 5f 44 79 6e 61 6d  69 63 41 72 65 61 30 3e  |OS_DynamicArea0>|
000996a0  20 6f 72 20 62 61 73 65  20 6f 66 20 61 72 65 61  | or base of area|
000996b0  2e 0a 0a 3c 3d 09 61 6c  6c 20 70 72 65 73 65 72  |...<=.all preser|
000996c0  76 65 64 2c 20 75 6e 6c  65 73 73 20 67 72 6f 77  |ved, unless grow|
000996d0  20 69 73 20 64 69 73 61  6c 6c 6f 77 65 64 0a 0a  | is disallowed..|
000996e0  54 68 69 73 20 72 65 61  73 6f 6e 20 63 6f 64 65  |This reason code|
000996f0  20 69 73 20 69 73 73 75  65 64 20 77 68 65 6e 20  | is issued when |
00099700  61 20 63 61 6c 6c 20 74  6f 20 4f 53 5f 43 68 61  |a call to OS_Cha|
00099710  6e 67 65 44 79 6e 61 6d  69 63 41 72 65 61 20 72  |ngeDynamicArea r|
00099720  65 73 75 6c 74 73 20 69  6e 20 61 6e 20 61 72 65  |esults in an are|
00099730  61 20 73 68 72 69 6e 6b  69 6e 67 2e 20 20 49 74  |a shrinking.  It|
00099740  20 69 73 20 63 61 6c 6c  65 64 20 61 66 74 65 72  | is called after|
00099750  20 74 68 65 20 3c 50 72  65 53 68 72 69 6e 6b 3d  | the <PreShrink=|
00099760  3e 4f 53 5f 44 79 6e 61  6d 69 63 41 72 65 61 48  |>OS_DynamicAreaH|
00099770  61 6e 64 6c 65 72 32 3e  20 72 65 61 73 6f 6e 20  |andler2> reason |
00099780  63 6f 64 65 20 68 61 73  20 62 65 65 6e 20 69 73  |code has been is|
00099790  73 75 65 64 20 73 75 63  63 65 73 73 66 75 6c 6c  |sued successfull|
000997a0  79 20 65 76 65 6e 20 69  66 20 74 68 65 20 6d 65  |y even if the me|
000997b0  6d 6f 72 79 20 70 61 67  65 73 20 63 61 6e 6e 6f  |mory pages canno|
000997c0  74 20 62 65 20 6d 6f 76  65 64 2e 0a 44 41 54 41  |t be moved..DATA|
000997d0  ce 02 00 00 4f 53 5f 44  79 6e 61 6d 69 63 41 72  |....OS_DynamicAr|
000997e0  65 61 20 31 20 20 28 26  36 36 29 0a 23 50 61 72  |ea 1  (&66).#Par|
000997f0  65 6e 74 20 4f 53 5f 44  79 6e 61 6d 69 63 41 72  |ent OS_DynamicAr|
00099800  65 61 0a 3d 3e 09 52 30  20 3d 09 31 0a 09 52 31  |ea.=>.R0 =.1..R1|
00099810  20 3d 09 61 72 65 61 20  6e 75 6d 62 65 72 0a 3c  | =.area number.<|
00099820  3d 09 61 6c 6c 20 70 72  65 73 65 72 76 65 64 0a  |=.all preserved.|
00099830  0a 54 68 69 73 20 63 61  6c 6c 20 72 65 6d 6f 76  |.This call remov|
00099840  65 73 20 61 20 70 72 65  76 69 6f 75 73 6c 79 20  |es a previously |
00099850  63 72 65 61 74 65 64 20  64 79 6e 61 6d 69 63 20  |created dynamic |
00099860  61 72 65 61 2e 20 42 65  66 6f 72 65 20 74 68 65  |area. Before the|
00099870  20 61 72 65 61 20 69 73  20 72 65 6d 6f 76 65 64  | area is removed|
00099880  2c 20 52 49 53 43 20 4f  53 20 61 74 74 65 6d 70  |, RISC OS attemp|
00099890  74 73 20 74 6f 20 73 68  72 69 6e 6b 20 69 74 20  |ts to shrink it |
000998a0  74 6f 20 7a 65 72 6f 20  73 69 7a 65 2e 20 20 54  |to zero size.  T|
000998b0  68 69 73 20 69 73 20 64  6f 6e 65 20 75 73 69 6e  |his is done usin|
000998c0  67 20 3c 4f 53 5f 43 68  61 6e 67 65 44 79 6e 61  |g <OS_ChangeDyna|
000998d0  6d 69 63 41 72 65 61 3e  2e 20 0a 0a 49 66 20 4f  |micArea>. ..If O|
000998e0  53 5f 43 68 61 6e 67 65  44 79 6e 61 6d 69 63 41  |S_ChangeDynamicA|
000998f0  72 65 61 20 72 65 74 75  72 6e 73 20 61 6e 20 65  |rea returns an e|
00099900  72 72 6f 72 2c 20 74 68  65 6e 20 74 68 65 20 61  |rror, then the a|
00099910  72 65 61 20 77 69 6c 6c  20 62 65 20 67 72 6f 77  |rea will be grow|
00099920  6e 20 62 61 63 6b 20 74  6f 20 69 74 73 20 6f 72  |n back to its or|
00099930  69 67 69 6e 61 6c 20 73  69 7a 65 20 75 73 69 6e  |iginal size usin|
00099940  67 20 4f 53 5f 43 68 61  6e 67 65 44 79 6e 61 6d  |g OS_ChangeDynam|
00099950  69 63 41 72 65 61 2c 20  61 6e 64 20 74 68 69 73  |icArea, and this|
00099960  20 63 61 6c 6c 20 77 69  6c 6c 20 72 65 74 75 72  | call will retur|
00099970  6e 20 77 69 74 68 20 61  6e 20 65 72 72 6f 72 2e  |n with an error.|
00099980  0a 49 66 20 3c 4f 53 5f  43 68 61 6e 67 65 44 79  |.If <OS_ChangeDy|
00099990  6e 61 6d 69 63 41 72 65  61 3e 20 73 75 63 63 65  |namicArea> succe|
000999a0  73 73 66 75 6c 6c 79 20  72 65 64 75 63 65 64 20  |ssfully reduced |
000999b0  74 68 65 20 61 72 65 61  20 74 6f 20 7a 65 72 6f  |the area to zero|
000999c0  20 73 69 7a 65 2c 20 74  68 65 6e 20 69 74 20 77  | size, then it w|
000999d0  69 6c 6c 20 62 65 20 72  65 6d 6f 76 65 64 2e 0a  |ill be removed..|
000999e0  0a 4f 6e 63 65 20 74 68  65 20 61 72 65 61 20 68  |.Once the area h|
000999f0  61 73 20 62 65 65 6e 20  72 65 6d 6f 76 65 64 20  |as been removed |
00099a00  53 65 72 76 69 63 65 5f  44 79 6e 61 6d 69 63 41  |Service_DynamicA|
00099a10  72 65 61 52 65 6d 6f 76  65 20 69 73 20 69 73 73  |reaRemove is iss|
00099a20  75 65 64 20 74 6f 20 69  6e 66 6f 72 6d 20 74 68  |ued to inform th|
00099a30  65 20 72 65 73 74 20 6f  66 20 74 68 65 20 73 79  |e rest of the sy|
00099a40  73 74 65 6d 20 61 62 6f  75 74 20 74 68 69 73 20  |stem about this |
00099a50  63 68 61 6e 67 65 2e 0a  0a 41 6e 20 65 72 72 6f  |change...An erro|
00099a60  72 20 69 73 20 72 65 74  75 72 6e 65 64 20 69 66  |r is returned if|
00099a70  20 74 68 65 20 61 72 65  61 20 77 61 73 20 6e 6f  | the area was no|
00099a80  74 20 72 65 6d 6f 76 65  64 20 66 6f 72 20 61 6e  |t removed for an|
00099a90  79 20 72 65 61 73 6f 6e  2e 0a 00 00 44 41 54 41  |y reason....DATA|
00099aa0  b9 02 00 00 4f 53 5f 44  79 6e 61 6d 69 63 41 72  |....OS_DynamicAr|
00099ab0  65 61 20 32 20 20 28 26  36 36 29 0a 23 50 61 72  |ea 2  (&66).#Par|
00099ac0  65 6e 74 20 4f 53 5f 44  79 6e 61 6d 69 63 41 72  |ent OS_DynamicAr|
00099ad0  65 61 0a 3d 3e 09 52 30  20 3d 09 32 0a 09 52 31  |ea.=>.R0 =.2..R1|
00099ae0  20 3d 09 61 72 65 61 20  6e 75 6d 62 65 72 0a 09  | =.area number..|
00099af0  0a 3c 3d 09 52 30 2c 20  52 31 20 70 72 65 73 65  |.<=.R0, R1 prese|
00099b00  72 76 65 64 0a 09 52 32  20 3d 09 63 75 72 72 65  |rved..R2 =.curre|
00099b10  6e 74 20 73 69 7a 65 20  6f 66 20 61 72 65 61 2c  |nt size of area,|
00099b20  20 69 6e 20 62 79 74 65  73 0a 09 52 33 20 3d 09  | in bytes..R3 =.|
00099b30  62 61 73 65 20 6c 6f 67  69 63 61 6c 20 61 64 64  |base logical add|
00099b40  72 65 73 73 20 6f 66 20  61 72 65 61 0a 09 52 34  |ress of area..R4|
00099b50  20 3d 09 3c 61 72 65 61  20 66 6c 61 67 73 3d 3e  | =.<area flags=>|
00099b60  4f 53 5f 44 79 6e 61 6d  69 63 41 72 65 61 46 6c  |OS_DynamicAreaFl|
00099b70  61 67 73 3e 0a 09 52 35  20 3d 09 6d 61 78 69 6d  |ags>..R5 =.maxim|
00099b80  75 6d 20 73 69 7a 65 20  6f 66 20 61 72 65 61 2c  |um size of area,|
00099b90  20 69 6e 20 62 79 74 65  73 0a 09 52 36 20 3d 09  | in bytes..R6 =.|
00099ba0  70 6f 69 6e 74 65 72 20  74 6f 20 3c 64 79 6e 61  |pointer to <dyna|
00099bb0  6d 69 63 20 61 72 65 61  20 68 61 6e 64 6c 65 72  |mic area handler|
00099bc0  3d 3e 4f 53 5f 44 79 6e  61 6d 69 63 41 72 65 61  |=>OS_DynamicArea|
00099bd0  48 61 6e 64 6c 65 72 3e  2c 20 6f 72 20 30 20 69  |Handler>, or 0 i|
00099be0  66 20 6e 6f 20 72 6f 75  74 69 6e 65 0a 09 52 37  |f no routine..R7|
00099bf0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 77 6f  | =.pointer to wo|
00099c00  72 6b 73 70 61 63 65 20  66 6f 72 20 68 61 6e 64  |rkspace for hand|
00099c10  6c 65 72 0a 09 52 38 20  3d 09 70 6f 69 6e 74 65  |ler..R8 =.pointe|
00099c20  72 20 74 6f 20 6e 61 6d  65 20 6f 66 20 61 72 65  |r to name of are|
00099c30  61 0a 0a 54 68 69 73 20  63 61 6c 6c 20 72 65 74  |a..This call ret|
00099c40  75 72 6e 73 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  |urns information|
00099c50  20 6f 6e 20 61 20 64 79  6e 61 6d 69 63 20 61 72  | on a dynamic ar|
00099c60  65 61 2e 0a 0a 46 6f 72  20 64 6f 75 62 6c 79 2d  |ea...For doubly-|
00099c70  6d 61 70 70 65 64 20 61  72 65 61 73 2c 20 52 33  |mapped areas, R3|
00099c80  20 6f 6e 20 65 78 69 74  20 66 72 6f 6d 20 74 68  | on exit from th|
00099c90  69 73 20 63 61 6c 6c 20  72 65 74 75 72 6e 73 20  |is call returns |
00099ca0  74 68 65 20 61 64 64 72  65 73 73 20 6f 66 20 74  |the address of t|
00099cb0  68 65 20 62 6f 75 6e 64  61 72 79 20 62 65 74 77  |he boundary betw|
00099cc0  65 65 6e 20 74 68 65 20  66 69 72 73 74 20 61 6e  |een the first an|
00099cd0  64 20 73 65 63 6f 6e 64  20 63 6f 70 69 65 73 20  |d second copies |
00099ce0  6f 66 20 74 68 65 20 61  72 65 61 2c 20 77 68 65  |of the area, whe|
00099cf0  72 65 61 73 20 3c 4f 53  5f 52 65 61 64 44 79 6e  |reas <OS_ReadDyn|
00099d00  61 6d 69 63 41 72 65 61  3e 20 72 65 74 75 72 6e  |amicArea> return|
00099d10  73 20 74 68 65 20 73 74  61 72 74 20 61 64 64 72  |s the start addr|
00099d20  65 73 73 20 6f 66 20 74  68 65 20 66 69 72 73 74  |ess of the first|
00099d30  20 63 6f 70 79 20 28 66  6f 72 20 62 61 63 6b 77  | copy (for backw|
00099d40  61 72 64 73 20 63 6f 6d  70 61 74 69 62 69 6c 69  |ards compatibili|
00099d50  74 79 29 2e 0a 00 00 00  44 41 54 41 80 01 00 00  |ty).....DATA....|
00099d60  4f 53 5f 44 79 6e 61 6d  69 63 41 72 65 61 20 33  |OS_DynamicArea 3|
00099d70  20 20 28 26 36 36 29 0a  23 50 61 72 65 6e 74 20  |  (&66).#Parent |
00099d80  4f 53 5f 44 79 6e 61 6d  69 63 41 72 65 61 0a 3d  |OS_DynamicArea.=|
00099d90  3e 09 52 30 20 3d 09 33  0a 09 52 31 20 3d 09 61  |>.R0 =.3..R1 =.a|
00099da0  72 65 61 20 6e 75 6d 62  65 72 2c 20 2d 31 20 74  |rea number, -1 t|
00099db0  6f 20 73 74 61 72 74 0a  09 0a 3c 3d 09 52 31 20  |o start...<=.R1 |
00099dc0  3d 09 6e 65 78 74 20 61  72 65 61 20 6e 75 6d 62  |=.next area numb|
00099dd0  65 72 0a 0a 54 68 69 73  20 63 61 6c 6c 20 65 6e  |er..This call en|
00099de0  75 6d 65 72 61 74 65 73  20 64 79 6e 61 6d 69 63  |umerates dynamic|
00099df0  20 61 72 65 61 73 2e 20  20 54 68 69 73 20 61 6c  | areas.  This al|
00099e00  6c 6f 77 73 20 61 6e 20  61 70 70 6c 69 63 61 74  |lows an applicat|
00099e10  69 6f 6e 20 74 6f 20 66  69 6e 64 20 6f 75 74 20  |ion to find out |
00099e20  77 68 61 74 20 64 79 6e  61 6d 69 63 20 61 72 65  |what dynamic are|
00099e30  61 73 20 61 72 65 20 64  65 66 69 6e 65 64 2e 20  |as are defined. |
00099e40  2d 31 20 69 73 20 70 61  73 73 65 64 20 6f 6e 20  |-1 is passed on |
00099e50  65 6e 74 72 79 20 74 6f  20 73 74 61 72 74 20 74  |entry to start t|
00099e60  68 65 20 65 6e 75 6d 65  72 61 74 69 6f 6e 3b 20  |he enumeration; |
00099e70  74 68 65 20 63 61 6c 6c  20 69 73 20 74 68 65 6e  |the call is then|
00099e80  20 72 65 70 65 61 72 20  75 6e 74 69 6c 20 2d 31  | repear until -1|
00099e90  20 69 73 20 72 65 74 75  72 6e 65 64 20 6f 6e 20  | is returned on |
00099ea0  65 78 69 74 2c 20 77 68  69 63 68 20 69 6e 64 69  |exit, which indi|
00099eb0  63 61 74 65 73 20 74 68  65 20 74 68 65 20 65 6e  |cates the the en|
00099ec0  75 6d 65 72 61 74 69 6f  6e 20 68 61 73 20 66 69  |umeration has fi|
00099ed0  6e 69 73 68 65 64 2e 0a  44 41 54 41 cd 01 00 00  |nished..DATA....|
00099ee0  4f 53 5f 44 79 6e 61 6d  69 63 41 72 65 61 20 34  |OS_DynamicArea 4|
00099ef0  20 20 28 26 36 36 29 0a  23 50 61 72 65 6e 74 20  |  (&66).#Parent |
00099f00  4f 53 5f 44 79 6e 61 6d  69 63 41 72 65 61 0a 3d  |OS_DynamicArea.=|
00099f10  3e 09 52 30 20 3d 09 34  0a 09 52 31 20 3d 09 6f  |>.R0 =.4..R1 =.o|
00099f20  6c 64 20 61 72 65 61 20  6e 75 6d 62 65 72 0a 09  |ld area number..|
00099f30  52 32 20 3d 09 6e 65 77  20 61 72 65 61 20 6e 75  |R2 =.new area nu|
00099f40  6d 62 65 72 0a 09 0a 3c  3d 09 61 6c 6c 20 70 72  |mber...<=.all pr|
00099f50  65 73 65 72 76 65 64 0a  0a 54 68 69 73 20 63 61  |eserved..This ca|
00099f60  6c 6c 20 72 65 6e 75 6d  62 65 72 73 20 64 79 6e  |ll renumbers dyn|
00099f70  61 6d 69 63 20 61 72 65  61 73 2e 20 61 6e 64 20  |amic areas. and |
00099f80  69 73 20 69 6e 74 65 6e  64 65 64 20 66 6f 72 20  |is intended for |
00099f90  73 79 73 74 65 6d 20 75  73 65 20 6f 6e 6c 79 2e  |system use only.|
00099fa0  0a 0a 4f 6e 63 65 20 74  68 65 20 61 72 65 61 20  |..Once the area |
00099fb0  68 61 73 20 62 65 65 6e  20 72 65 6e 75 6d 62 65  |has been renumbe|
00099fc0  72 65 64 20 53 65 72 76  69 63 65 5f 44 79 6e 61  |red Service_Dyna|
00099fd0  6d 69 63 41 72 65 61 52  65 6e 75 6d 62 65 72 20  |micAreaRenumber |
00099fe0  69 73 20 69 73 73 75 65  64 20 74 6f 20 69 6e 66  |is issued to inf|
00099ff0  6f 72 6d 20 74 68 65 20  72 65 73 74 20 6f 66 20  |orm the rest of |
0009a000  74 68 65 20 73 79 73 74  65 6d 20 61 62 6f 75 74  |the system about|
0009a010  20 74 68 69 73 20 63 68  61 6e 67 65 2e 0a 0a 41  | this change...A|
0009a020  6e 20 65 72 72 6f 72 20  69 73 20 72 65 74 75 72  |n error is retur|
0009a030  6e 65 64 20 69 66 20 74  68 65 20 61 72 65 61 20  |ned if the area |
0009a040  73 70 65 63 69 66 69 65  64 20 62 79 20 74 68 65  |specified by the|
0009a050  20 6f 6c 64 20 61 72 65  61 20 6e 75 6d 62 65 72  | old area number|
0009a060  20 64 6f 65 73 20 6e 6f  74 20 65 78 69 73 74 2c  | does not exist,|
0009a070  20 6f 72 20 69 66 20 74  68 65 20 6e 65 77 20 6e  | or if the new n|
0009a080  75 6d 62 65 72 20 63 6c  61 73 68 65 73 20 77 69  |umber clashes wi|
0009a090  74 68 20 61 6e 20 65 78  69 73 74 69 6e 67 20 61  |th an existing a|
0009a0a0  72 65 61 2e 0a 00 00 00  44 41 54 41 64 03 00 00  |rea.....DATAd...|
0009a0b0  44 79 6e 61 6d 69 63 20  61 72 65 61 20 66 6c 61  |Dynamic area fla|
0009a0c0  67 73 0a 42 69 74 28 73  29 09 4d 65 61 6e 69 6e  |gs.Bit(s).Meanin|
0009a0d0  67 0a 23 4c 69 6e 65 0a  30 20 2d 20 33 09 61 63  |g.#Line.0 - 3.ac|
0009a0e0  63 65 73 73 20 70 72 69  76 69 6c 65 67 65 73 20  |cess privileges |
0009a0f0  74 6f 20 62 65 20 67 69  76 65 6e 20 74 6f 20 65  |to be given to e|
0009a100  61 63 68 20 70 61 67 65  20 69 6e 20 74 68 65 20  |ach page in the |
0009a110  61 72 65 61 20 28 73 61  6d 65 20 66 6f 72 6d 61  |area (same forma|
0009a120  74 20 61 73 20 66 6f 72  20 3c 4f 53 5f 52 65 61  |t as for <OS_Rea|
0009a130  64 4d 65 6d 4d 61 70 45  6e 74 72 69 65 73 3e 2f  |dMemMapEntries>/|
0009a140  3c 4f 53 5f 53 65 74 4d  65 6d 4d 61 70 45 6e 74  |<OS_SetMemMapEnt|
0009a150  72 69 65 73 3e 29 0a 34  09 53 65 74 20 69 66 20  |ries>).4.Set if |
0009a160  61 72 65 61 20 69 73 20  6e 6f 74 20 62 75 66 66  |area is not buff|
0009a170  65 72 61 62 6c 65 20 62  79 20 63 68 69 70 73 0a  |erable by chips.|
0009a180  35 09 53 65 74 20 69 66  20 61 72 65 61 20 69 73  |5.Set if area is|
0009a190  20 6e 6f 74 20 63 61 63  68 65 61 62 6c 65 20 62  | not cacheable b|
0009a1a0  79 20 63 68 69 70 73 0a  36 09 49 66 20 73 65 74  |y chips.6.If set|
0009a1b0  2c 20 61 72 65 61 20 69  73 20 64 6f 75 62 6c 79  |, area is doubly|
0009a1c0  20 6d 61 70 70 65 64 20  28 72 65 73 65 72 76 65  | mapped (reserve|
0009a1d0  64 29 2c 20 6f 74 68 65  72 77 69 73 65 20 61 72  |d), otherwise ar|
0009a1e0  65 61 20 69 73 20 73 69  6e 67 6c 79 20 6d 61 70  |ea is singly map|
0009a1f0  70 65 64 0a 37 09 30 20  3d 3e 20 61 72 65 61 20  |ped.7.0 => area |
0009a200  6d 61 79 20 62 65 20 64  72 61 67 67 65 64 20 62  |may be dragged b|
0009a210  79 20 74 68 65 20 75 73  65 72 20 69 6e 20 54 61  |y the user in Ta|
0009a220  73 6b 20 4d 61 6e 61 67  65 72 20 77 69 6e 64 6f  |sk Manager windo|
0009a230  77 20 28 68 61 73 20 72  65 64 20 62 61 72 29 0a  |w (has red bar).|
0009a240  09 31 20 3d 3e 20 61 72  65 61 20 6d 61 79 20 6e  |.1 => area may n|
0009a250  6f 74 20 62 65 20 64 72  61 67 67 65 64 20 62 79  |ot be dragged by|
0009a260  20 74 68 65 20 75 73 65  72 20 69 6e 20 54 61 73  | the user in Tas|
0009a270  6b 20 4d 61 6e 61 67 65  72 20 77 69 6e 64 6f 77  |k Manager window|
0009a280  20 28 68 61 73 20 67 72  65 65 6e 20 62 61 72 29  | (has green bar)|
0009a290  0a 38 09 30 20 3d 3e 20  61 72 65 61 20 64 6f 65  |.8.0 => area doe|
0009a2a0  73 20 6e 6f 74 20 72 65  71 75 69 72 65 20 73 70  |s not require sp|
0009a2b0  65 63 69 66 69 63 20 70  68 79 73 69 63 61 6c 20  |ecific physical |
0009a2c0  70 61 67 65 73 20 28 69  65 20 52 31 20 69 73 20  |pages (ie R1 is |
0009a2d0  75 6e 64 65 66 69 6e 65  64 20 6f 6e 20 65 6e 74  |undefined on ent|
0009a2e0  72 79 20 74 6f 20 74 68  65 20 3c 50 72 65 47 72  |ry to the <PreGr|
0009a2f0  6f 77 3d 3e 4f 53 5f 44  79 6e 61 6d 69 63 41 72  |ow=>OS_DynamicAr|
0009a300  65 61 48 61 6e 64 6c 65  72 30 3e 20 61 6e 64 20  |eaHandler0> and |
0009a310  3c 50 6f 73 74 47 72 6f  77 3d 3e 4f 53 5f 44 79  |<PostGrow=>OS_Dy|
0009a320  6e 61 6d 69 63 41 72 65  61 48 61 6e 64 6c 65 72  |namicAreaHandler|
0009a330  31 3e 20 68 61 6e 64 6c  65 72 73 29 0a 09 31 20  |1> handlers)..1 |
0009a340  3d 3e 20 61 72 65 61 20  6d 61 79 20 72 65 71 75  |=> area may requ|
0009a350  69 72 65 20 73 70 65 63  69 66 69 63 20 70 68 79  |ire specific phy|
0009a360  73 69 63 61 6c 20 70 61  67 65 73 20 28 69 65 20  |sical pages (ie |
0009a370  52 31 20 70 6f 69 6e 74  73 20 61 74 20 61 20 70  |R1 points at a p|
0009a380  61 67 65 20 62 6c 6f 63  6b 20 6f 6e 20 65 6e 74  |age block on ent|
0009a390  72 79 20 74 6f 20 74 68  65 20 3c 50 72 65 47 72  |ry to the <PreGr|
0009a3a0  6f 77 3d 3e 4f 53 5f 44  79 6e 61 6d 69 63 41 72  |ow=>OS_DynamicAr|
0009a3b0  65 61 48 61 6e 64 6c 65  72 30 3e 20 61 6e 64 20  |eaHandler0> and |
0009a3c0  3c 50 6f 73 74 47 72 6f  77 3d 3e 4f 53 5f 44 79  |<PostGrow=>OS_Dy|
0009a3d0  6e 61 6d 69 63 41 72 65  61 48 61 6e 64 6c 65 72  |namicAreaHandler|
0009a3e0  31 3e 20 68 61 6e 64 6c  65 72 73 29 0a 39 20 2d  |1> handlers).9 -|
0009a3f0  20 33 31 09 72 65 73 65  72 76 65 64 20 28 6d 75  | 31.reserved (mu|
0009a400  73 74 20 62 65 20 7a 65  72 6f 29 0a 44 41 54 41  |st be zero).DATA|
0009a410  75 00 00 00 4f 53 5f 41  64 64 54 6f 56 65 63 74  |u...OS_AddToVect|
0009a420  6f 72 20 20 28 26 34 37  29 0a 23 50 61 72 65 6e  |or  (&47).#Paren|
0009a430  74 20 4f 53 5f 0a 44 6f  65 73 20 74 68 65 20 73  |t OS_.Does the s|
0009a440  61 6d 65 20 61 73 20 3c  4f 53 5f 43 6c 61 69 6d  |ame as <OS_Claim|
0009a450  3e 20 64 6f 65 73 2c 20  62 75 74 20 64 6f 65 73  |> does, but does|
0009a460  6e 27 74 20 72 65 6d 6f  76 65 20 74 68 65 20 65  |n't remove the e|
0009a470  61 72 6c 69 65 72 20 69  6e 73 74 61 6e 63 65 73  |arlier instances|
0009a480  2e 00 00 00 44 41 54 41  2a 02 00 00 4f 53 5f 42  |....DATA*...OS_B|
0009a490  72 65 61 6b 43 74 72 6c  20 20 28 26 31 38 29 0a  |reakCtrl  (&18).|
0009a4a0  23 50 61 72 65 6e 74 20  4f 53 5f 0a 3d 3e 09 52  |#Parent OS_.=>.R|
0009a4b0  30 20 3d 09 61 64 64 72  65 73 73 20 6f 66 20 74  |0 =.address of t|
0009a4c0  68 65 20 72 65 67 69 73  74 65 72 20 73 61 76 65  |he register save|
0009a4d0  20 62 6c 6f 63 6b 2c 20  30 20 74 6f 20 72 65 61  | block, 0 to rea|
0009a4e0  64 0a 09 52 31 20 3d 09  61 64 64 72 65 73 73 20  |d..R1 =.address |
0009a4f0  6f 66 20 74 68 65 20 63  6f 6e 74 72 6f 6c 20 72  |of the control r|
0009a500  6f 75 74 69 6e 65 2c 20  30 20 74 6f 20 72 65 61  |outine, 0 to rea|
0009a510  64 0a 0a 3c 3d 09 52 30  20 3d 09 61 64 64 72 65  |d..<=.R0 =.addre|
0009a520  73 73 20 6f 66 20 70 72  65 76 69 6f 75 73 20 72  |ss of previous r|
0009a530  65 67 69 73 74 65 72 20  73 61 76 65 20 62 6c 6f  |egister save blo|
0009a540  63 6b 0a 09 52 31 20 3d  09 61 64 64 72 65 73 73  |ck..R1 =.address|
0009a550  20 6f 66 20 70 72 65 76  69 6f 75 73 20 63 6f 6e  | of previous con|
0009a560  74 72 6f 6c 20 72 6f 75  74 69 6e 65 0a 09 56 20  |trol routine..V |
0009a570  69 73 20 61 6c 77 61 79  73 20 63 6c 65 61 72 0a  |is always clear.|
0009a580  0a 54 68 69 73 20 73 65  74 73 20 75 70 20 74 68  |.This sets up th|
0009a590  65 20 61 64 64 72 65 73  73 20 6f 66 20 74 68 65  |e address of the|
0009a5a0  20 42 72 65 61 6b 50 6f  69 6e 74 20 68 61 6e 64  | BreakPoint hand|
0009a5b0  6c 65 72 20 61 6e 64 20  74 68 65 20 72 65 67 69  |ler and the regi|
0009a5c0  73 74 65 72 20 73 61 76  65 20 62 6c 6f 63 6b 2c  |ster save block,|
0009a5d0  20 7a 65 72 6f 20 66 6f  72 20 65 69 74 68 65 72  | zero for either|
0009a5e0  20 76 61 6c 75 65 20 6d  65 61 6e 69 6e 67 20 6e  | value meaning n|
0009a5f0  6f 20 63 68 61 6e 67 65  20 2d 20 68 65 6e 63 65  |o change - hence|
0009a600  20 79 6f 75 20 63 61 6e  20 72 65 61 64 20 74 68  | you can read th|
0009a610  65 20 63 75 72 72 65 6e  74 20 76 61 6c 75 65 2e  |e current value.|
0009a620  20 54 68 69 73 20 63 61  6c 6c 20 69 73 20 6f 62  | This call is ob|
0009a630  73 6f 6c 65 74 65 2c 20  3c 4f 53 5f 43 68 61 6e  |solete, <OS_Chan|
0009a640  67 65 45 6e 76 69 72 6f  6e 6d 65 6e 74 3e 20 70  |geEnvironment> p|
0009a650  72 6f 76 69 64 65 73 20  74 68 65 20 73 61 6d 65  |rovides the same|
0009a660  2c 20 69 6e 20 66 61 63  74 20 4f 53 5f 42 72 65  |, in fact OS_Bre|
0009a670  61 6b 43 74 72 6c 20 63  61 6c 6c 73 20 74 68 69  |akCtrl calls thi|
0009a680  73 20 61 6e 64 20 73 68  6f 75 6c 64 20 74 68 65  |s and should the|
0009a690  72 65 66 6f 72 65 20 62  65 20 75 73 65 64 20 69  |refore be used i|
0009a6a0  6e 20 70 72 65 66 65 72  65 6e 63 65 2e 0a 00 00  |n preference....|
0009a6b0  44 41 54 41 c9 01 00 00  4f 53 5f 42 72 65 61 6b  |DATA....OS_Break|
0009a6c0  50 74 20 28 26 31 37 29  0a 23 50 61 72 65 6e 74  |Pt (&17).#Parent|
0009a6d0  20 4f 53 5f 0a 57 68 65  6e 20 74 68 69 73 20 69  | OS_.When this i|
0009a6e0  73 20 65 78 65 63 75 74  65 64 2c 20 61 6c 6c 20  |s executed, all |
0009a6f0  75 73 65 72 20 6d 6f 64  65 20 72 65 67 69 73 74  |user mode regist|
0009a700  65 72 73 20 61 72 65 20  73 61 76 65 64 20 69 6e  |ers are saved in|
0009a710  74 6f 20 61 20 62 6c 6f  63 6b 20 61 6e 64 20 74  |to a block and t|
0009a720  68 65 20 3c 42 72 65 61  6b 50 6f 69 6e 74 20 68  |he <BreakPoint h|
0009a730  61 6e 64 6c 65 72 3d 3e  4f 53 5f 68 61 6e 64 6c  |andler=>OS_handl|
0009a740  65 72 73 5f 62 72 65 61  6b 70 6f 69 6e 74 3e 20  |ers_breakpoint> |
0009a750  69 73 20 63 61 6c 6c 65  64 2e 20 54 68 65 20 73  |is called. The s|
0009a760  61 76 65 64 20 72 65 67  69 73 74 65 72 73 20 61  |aved registers a|
0009a770  72 65 20 6f 6e 6c 79 20  67 75 61 72 61 6e 74 65  |re only guarante|
0009a780  65 64 20 74 6f 20 62 65  20 63 6f 72 72 65 63 74  |ed to be correct|
0009a790  20 66 6f 72 20 75 73 65  72 20 6d 6f 64 65 2e 20  | for user mode. |
0009a7a0  54 68 65 20 64 65 66 61  75 6c 74 20 68 61 6e 64  |The default hand|
0009a7b0  6c 65 72 20 64 69 73 70  6c 61 79 73 20 74 68 65  |ler displays the|
0009a7c0  20 6d 65 73 73 61 67 65  20 27 42 72 65 61 6b 20  | message 'Break |
0009a7d0  70 6f 69 6e 74 20 61 74  20 26 78 78 78 78 78 27  |point at &xxxxx'|
0009a7e0  20 61 6e 64 20 63 61 6c  6c 73 20 3c 4f 53 5f 45  | and calls <OS_E|
0009a7f0  78 69 74 3e 2e 20 54 68  69 73 20 53 57 49 20 77  |xit>. This SWI w|
0009a800  6f 75 6c 64 20 62 65 20  70 6c 61 63 65 64 20 69  |ould be placed i|
0009a810  6e 20 63 6f 64 65 20 62  79 20 74 68 65 20 64 65  |n code by the de|
0009a820  62 75 67 67 65 72 20 61  74 20 72 65 71 75 69 72  |bugger at requir|
0009a830  65 64 20 62 72 65 61 6b  70 6f 69 6e 74 73 2e 0a  |ed breakpoints..|
0009a840  0a 54 68 65 20 68 61 6e  64 6c 65 72 20 63 61 6e  |.The handler can|
0009a850  20 62 65 20 63 68 61 6e  67 65 64 20 77 69 74 68  | be changed with|
0009a860  20 3c 4f 53 5f 43 68 61  6e 67 65 45 6e 76 69 72  | <OS_ChangeEnvir|
0009a870  6f 6e 6d 65 6e 74 3e 2e  0a 00 00 00 44 41 54 41  |onment>.....DATA|
0009a880  e5 01 00 00 4f 53 5f 43  61 6c 6c 41 56 65 63 74  |....OS_CallAVect|
0009a890  6f 72 20 20 28 26 33 34  29 0a 23 50 61 72 65 6e  |or  (&34).#Paren|
0009a8a0  74 20 4f 53 5f 0a 3d 3e  09 52 30 2d 52 38 20 3d  |t OS_.=>.R0-R8 =|
0009a8b0  09 76 65 63 74 6f 72 20  72 6f 75 74 69 6e 65 20  |.vector routine |
0009a8c0  70 61 72 61 6d 65 74 65  72 73 0a 09 52 39 20 3d  |parameters..R9 =|
0009a8d0  09 3c 76 65 63 74 6f 72  20 6e 75 6d 62 65 72 3d  |.<vector number=|
0009a8e0  3e 76 65 63 74 6f 72 5f  69 6e 64 65 78 3e 0a 09  |>vector_index>..|
0009a8f0  56 20 61 6e 64 20 43 20  66 6c 61 67 20 61 72 65  |V and C flag are|
0009a900  20 70 61 73 73 65 64 20  6f 6e 20 74 6f 20 74 68  | passed on to th|
0009a910  65 20 76 65 63 74 6f 72  0a 0a 3c 3d 09 64 65 70  |e vector..<=.dep|
0009a920  65 6e 64 65 6e 74 20 6f  6e 20 76 65 63 74 6f 72  |endent on vector|
0009a930  20 63 61 6c 6c 65 64 0a  0a 54 68 69 73 20 63 61  | called..This ca|
0009a940  6c 6c 73 20 74 68 65 20  76 65 63 74 6f 72 20 67  |lls the vector g|
0009a950  69 76 65 6e 20 69 6e 20  52 39 2e 20 54 68 69 73  |iven in R9. This|
0009a960  20 69 73 20 75 73 65 64  20 66 6f 72 20 63 61 6c  | is used for cal|
0009a970  6c 69 6e 67 20 76 65 63  74 6f 72 65 64 20 72 6f  |ling vectored ro|
0009a980  75 74 69 6e 65 73 20 77  68 69 63 68 20 64 6f 6e  |utines which don|
0009a990  27 74 20 68 61 76 65 20  61 6e 79 20 6f 74 68 65  |'t have any othe|
0009a9a0  72 20 65 6e 74 72 79 20  70 6f 69 6e 74 20 73 75  |r entry point su|
0009a9b0  63 68 20 61 73 20 73 6f  6d 65 20 63 61 6c 6c 73  |ch as some calls|
0009a9c0  20 74 6f 20 3c 52 65 6d  56 3d 3e 76 65 63 74 6f  | to <RemV=>vecto|
0009a9d0  72 5f 72 65 6d 76 3e 20  6f 72 20 3c 43 6e 70 56  |r_remv> or <CnpV|
0009a9e0  3d 3e 76 65 63 74 6f 72  5f 43 6e 70 56 3e 2e 20  |=>vector_CnpV>. |
0009a9f0  44 6f 6e 27 74 20 75 73  65 20 74 68 69 73 20 74  |Don't use this t|
0009aa00  6f 20 63 61 6c 6c 20 42  79 74 65 56 20 6f 72 20  |o call ByteV or |
0009aa10  73 6f 6d 65 20 6f 74 68  65 72 73 2c 20 61 73 20  |some others, as |
0009aa20  74 68 65 20 76 65 63 74  6f 72 20 68 61 6e 64 6c  |the vector handl|
0009aa30  65 72 20 65 78 70 65 63  74 73 20 65 6e 74 72 79  |er expects entry|
0009aa40  20 63 6f 6e 64 69 74 69  6f 6e 73 20 79 6f 75 20  | conditions you |
0009aa50  6d 61 79 20 6e 6f 74 20  70 72 6f 76 69 64 65 2e  |may not provide.|
0009aa60  0a 00 00 00 44 41 54 41  4e 02 00 00 4f 53 5f 43  |....DATAN...OS_C|
0009aa70  61 6c 6c 42 61 63 6b 20  20 28 26 31 35 29 0a 23  |allBack  (&15).#|
0009aa80  50 61 72 65 6e 74 20 4f  53 5f 0a 3d 3e 09 52 30  |Parent OS_.=>.R0|
0009aa90  20 3d 09 61 64 64 72 65  73 73 20 6f 66 20 74 68  | =.address of th|
0009aaa0  65 20 72 65 67 69 73 74  65 72 20 73 61 76 65 20  |e register save |
0009aab0  62 6c 6f 63 6b 2c 20 30  20 74 6f 20 72 65 61 64  |block, 0 to read|
0009aac0  0a 09 52 31 20 3d 09 61  64 64 72 65 73 73 20 6f  |..R1 =.address o|
0009aad0  66 20 74 68 65 20 63 61  6c 6c 62 61 63 6b 20 68  |f the callback h|
0009aae0  61 6e 64 6c 65 72 2c 20  30 20 74 6f 20 72 65 61  |andler, 0 to rea|
0009aaf0  64 0a 0a 3c 3d 09 52 30  20 3d 09 61 64 64 72 65  |d..<=.R0 =.addre|
0009ab00  73 73 20 6f 66 20 70 72  65 76 69 6f 75 73 20 72  |ss of previous r|
0009ab10  65 67 69 73 74 65 72 20  73 61 76 65 20 62 6c 6f  |egister save blo|
0009ab20  63 6b 0a 09 52 31 20 3d  09 61 64 64 72 65 73 73  |ck..R1 =.address|
0009ab30  20 6f 66 20 70 72 65 76  69 6f 75 73 20 63 61 6c  | of previous cal|
0009ab40  6c 62 61 63 6b 20 68 61  6e 64 6c 65 72 0a 0a 54  |lback handler..T|
0009ab50  68 69 73 20 73 65 74 73  20 75 70 20 74 68 65 20  |his sets up the |
0009ab60  61 64 64 72 65 73 73 20  6f 66 20 74 68 65 20 43  |address of the C|
0009ab70  61 6c 6c 42 61 63 6b 20  68 61 6e 64 6c 65 72 20  |allBack handler |
0009ab80  61 6e 64 20 74 68 65 20  72 65 67 69 73 74 65 72  |and the register|
0009ab90  20 73 61 76 65 20 62 6c  6f 63 6b 2c 20 7a 65 72  | save block, zer|
0009aba0  6f 20 66 6f 72 20 65 69  74 68 65 72 20 76 61 6c  |o for either val|
0009abb0  75 65 20 6d 65 61 6e 69  6e 67 20 6e 6f 20 63 68  |ue meaning no ch|
0009abc0  61 6e 67 65 20 2d 20 68  65 6e 63 65 20 79 6f 75  |ange - hence you|
0009abd0  20 63 61 6e 20 72 65 61  64 20 74 68 65 20 63 75  | can read the cu|
0009abe0  72 72 65 6e 74 20 76 61  6c 75 65 2e 20 54 68 69  |rrent value. Thi|
0009abf0  73 20 63 61 6c 6c 20 69  73 20 6f 62 73 6f 6c 65  |s call is obsole|
0009ac00  74 65 2c 20 3c 4f 53 5f  43 68 61 6e 67 65 45 6e  |te, <OS_ChangeEn|
0009ac10  76 69 72 6f 6e 6d 65 6e  74 3e 20 70 72 6f 76 69  |vironment> provi|
0009ac20  64 65 73 20 74 68 65 20  73 61 6d 65 2c 20 69 6e  |des the same, in|
0009ac30  20 66 61 63 74 20 4f 53  5f 43 61 6c 6c 42 61 63  | fact OS_CallBac|
0009ac40  6b 20 63 61 6c 6c 73 20  74 68 69 73 20 61 6e 64  |k calls this and|
0009ac50  20 73 68 6f 75 6c 64 20  74 68 65 72 65 66 6f 72  | should therefor|
0009ac60  65 20 62 65 20 75 73 65  64 20 69 6e 20 70 72 65  |e be used in pre|
0009ac70  66 65 72 65 6e 63 65 2e  20 46 6f 72 20 69 6e 66  |ference. For inf|
0009ac80  6f 72 6d 61 74 69 6f 6e  73 20 6f 6e 20 63 61 6c  |ormations on cal|
0009ac90  6c 62 61 63 6b 73 20 72  65 66 65 72 20 74 6f 20  |lbacks refer to |
0009aca0  3c 4f 53 5f 41 64 64 43  61 6c 6c 42 61 63 6b 3e  |<OS_AddCallBack>|
0009acb0  2e 0a 00 00 44 41 54 41  e5 02 00 00 4f 53 5f 43  |....DATA....OS_C|
0009acc0  68 61 6e 67 65 64 42 6f  78 20 20 28 26 35 41 29  |hangedBox  (&5A)|
0009acd0  0a 23 50 61 72 65 6e 74  20 4f 53 5f 0a 3d 3e 09  |.#Parent OS_.=>.|
0009ace0  52 30 20 3d 09 30 09 64  69 73 61 62 6c 65 20 63  |R0 =.0.disable c|
0009acf0  68 61 6e 67 65 64 20 62  6f 78 20 63 61 6c 63 75  |hanged box calcu|
0009ad00  6c 61 74 69 6f 6e 73 0a  09 20 09 31 09 65 6e 61  |lations.. .1.ena|
0009ad10  62 6c 65 20 63 68 61 6e  67 65 64 20 62 6f 78 20  |ble changed box |
0009ad20  63 61 6c 63 75 6c 61 74  69 6f 6e 73 0a 09 20 09  |calculations.. .|
0009ad30  32 09 72 65 73 65 74 20  63 68 61 6e 67 65 64 20  |2.reset changed |
0009ad40  62 6f 78 20 74 6f 20 6e  75 6c 6c 20 72 65 63 74  |box to null rect|
0009ad50  61 6e 67 6c 65 0a 09 20  09 2d 31 09 72 65 61 64  |angle.. .-1.read|
0009ad60  20 63 68 61 6e 67 65 64  20 62 6f 78 20 69 6e 66  | changed box inf|
0009ad70  6f 72 6d 61 74 69 6f 6e  0a 0a 3c 3d 09 52 30 20  |ormation..<=.R0 |
0009ad80  3d 09 70 72 65 76 69 6f  75 73 20 65 6e 61 62 6c  |=.previous enabl|
0009ad90  65 20 73 74 61 74 65 20  69 6e 20 62 69 74 20 30  |e state in bit 0|
0009ada0  0a 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
0009adb0  6f 20 61 20 66 69 78 65  64 20 62 6c 6f 63 6b 20  |o a fixed block |
0009adc0  6f 66 20 35 20 77 6f 72  64 73 3a 0a 09 20 09 30  |of 5 words:.. .0|
0009add0  20 6e 65 77 20 64 69 73  61 62 6c 65 2f 65 6e 61  | new disable/ena|
0009ade0  62 6c 65 20 66 6c 61 67  0a 09 20 09 34 20 78 2d  |ble flag.. .4 x-|
0009adf0  63 6f 6f 72 64 69 6e 61  74 65 20 6f 66 20 6c 65  |coordinate of le|
0009ae00  66 74 20 65 64 67 65 20  6f 66 20 62 6f 78 0a 09  |ft edge of box..|
0009ae10  20 09 38 20 79 2d 63 6f  6f 72 64 69 6e 61 74 65  | .8 y-coordinate|
0009ae20  20 6f 66 20 62 6f 74 74  6f 6d 20 65 64 67 65 20  | of bottom edge |
0009ae30  6f 66 20 62 6f 78 0a 09  20 09 31 32 20 78 2d 63  |of box.. .12 x-c|
0009ae40  6f 6f 72 64 69 6e 61 74  65 20 6f 66 20 72 69 67  |oordinate of rig|
0009ae50  68 74 20 65 64 67 65 20  6f 66 20 62 6f 78 0a 09  |ht edge of box..|
0009ae60  20 09 31 36 20 79 2d 63  6f 6f 72 64 69 6e 61 74  | .16 y-coordinat|
0009ae70  65 20 6f 66 20 74 6f 70  20 65 64 67 65 20 6f 66  |e of top edge of|
0009ae80  20 62 6f 78 0a 0a 34 2d  31 36 20 61 72 65 20 6f  | box..4-16 are o|
0009ae90  6e 6c 79 20 76 61 6c 69  64 20 69 66 20 74 68 65  |nly valid if the|
0009aea0  20 63 68 61 6e 67 65 20  62 6f 78 20 63 61 6c 63  | change box calc|
0009aeb0  75 6c 61 74 69 6f 6e 73  20 77 65 72 65 20 69 6e  |ulations were in|
0009aec0  20 61 6e 20 65 6e 61 62  6c 65 64 20 73 74 61 74  | an enabled stat|
0009aed0  65 20 69 6d 6d 65 64 69  61 74 65 6c 79 20 61 66  |e immediately af|
0009aee0  74 65 72 20 74 68 65 20  63 61 6c 6c 3b 20 6f 74  |ter the call; ot|
0009aef0  68 65 72 77 69 73 65 20  74 68 65 79 20 61 72 65  |herwise they are|
0009af00  20 75 6e 64 65 66 69 6e  65 64 2e 0a 0a 54 68 69  | undefined...Thi|
0009af10  73 20 63 61 6c 6c 20 63  68 65 63 6b 73 2c 20 77  |s call checks, w|
0009af20  68 69 63 68 20 61 72 65  61 73 20 6f 66 20 74 68  |hich areas of th|
0009af30  65 20 73 63 72 65 65 6e  20 77 65 72 65 20 63 68  |e screen were ch|
0009af40  61 6e 67 65 64 20 62 79  20 56 44 55 20 63 6f 6d  |anged by VDU com|
0009af50  6d 61 6e 64 73 20 61 6e  64 20 72 65 74 75 72 6e  |mands and return|
0009af60  73 20 74 68 65 20 73 6d  61 6c 6c 65 73 74 20 72  |s the smallest r|
0009af70  65 63 74 61 6e 67 6c 65  20 77 68 69 63 68 20 63  |ectangle which c|
0009af80  6f 76 65 72 73 20 61 6c  6c 20 63 68 61 6e 67 65  |overs all change|
0009af90  64 20 70 69 78 65 6c 73  2e 00 00 00 44 41 54 41  |d pixels....DATA|
0009afa0  45 03 00 00 4f 53 5f 43  68 61 6e 67 65 52 65 64  |E...OS_ChangeRed|
0009afb0  69 72 65 63 74 69 6f 6e  20 20 28 26 35 45 29 0a  |irection  (&5E).|
0009afc0  23 50 61 72 65 6e 74 20  4f 53 5f 0a 3d 3e 09 52  |#Parent OS_.=>.R|
0009afd0  30 20 3d 09 6e 65 77 20  66 69 6c 65 20 68 61 6e  |0 =.new file han|
0009afe0  64 6c 65 20 66 6f 72 20  69 6e 70 75 74 0a 09 20  |dle for input.. |
0009aff0  09 30 20 3d 20 6e 6f 74  20 72 65 64 69 72 65 63  |.0 = not redirec|
0009b000  74 65 64 0a 09 20 09 2d  31 20 3d 20 72 65 61 64  |ted.. .-1 = read|
0009b010  0a 09 52 31 20 3d 09 6e  65 77 20 66 69 6c 65 20  |..R1 =.new file |
0009b020  68 61 6e 64 6c 65 20 66  6f 72 20 6f 75 74 70 75  |handle for outpu|
0009b030  74 0a 09 20 09 30 20 3d  20 6e 6f 74 20 72 65 64  |t.. .0 = not red|
0009b040  69 72 65 63 74 65 64 0a  09 20 09 2d 31 20 3d 20  |irected.. .-1 = |
0009b050  72 65 61 64 0a 0a 3c 3d  09 52 30 20 3d 09 6f 6c  |read..<=.R0 =.ol|
0009b060  64 20 66 69 6c 65 20 68  61 6e 64 6c 65 20 66 6f  |d file handle fo|
0009b070  72 20 69 6e 70 75 74 20  28 6f 72 20 30 20 66 6f  |r input (or 0 fo|
0009b080  72 20 73 74 61 6e 64 61  72 64 20 69 6e 70 75 74  |r standard input|
0009b090  29 0a 09 52 31 20 3d 09  6f 6c 64 20 66 69 6c 65  |)..R1 =.old file|
0009b0a0  20 68 61 6e 64 6c 65 20  66 6f 72 20 6f 75 74 70  | handle for outp|
0009b0b0  75 74 20 28 6f 72 20 30  20 66 6f 72 20 73 74 61  |ut (or 0 for sta|
0009b0c0  6e 64 61 72 64 20 6f 75  74 70 75 74 29 0a 0a 54  |ndard output)..T|
0009b0d0  68 69 73 20 72 65 61 64  73 20 6f 72 20 77 72 69  |his reads or wri|
0009b0e0  74 65 73 20 74 68 65 20  66 69 6c 65 20 68 61 6e  |tes the file han|
0009b0f0  64 6c 65 73 20 75 73 65  64 20 62 79 20 3c 4f 53  |dles used by <OS|
0009b100  5f 43 4c 49 3e 20 74 6f  20 72 65 64 69 72 65 63  |_CLI> to redirec|
0009b110  74 20 69 6e 2f 6f 75 74  70 75 74 2e 20 49 74 20  |t in/output. It |
0009b120  69 73 20 6d 61 69 6e 6c  79 20 70 72 6f 76 69 64  |is mainly provid|
0009b130  65 64 20 66 6f 72 20 74  68 65 20 75 73 65 20 6f  |ed for the use o|
0009b140  66 20 74 68 65 20 54 61  73 6b 4d 61 6e 61 67 65  |f the TaskManage|
0009b150  72 2c 20 62 75 74 20 79  6f 75 20 6d 61 79 20 61  |r, but you may a|
0009b160  6c 73 6f 20 66 69 6e 64  20 74 68 65 20 63 61 6c  |lso find the cal|
0009b170  6c 20 75 73 65 66 75 6c  2e 20 43 61 6c 6c 69 6e  |l useful. Callin|
0009b180  67 20 3c 4f 53 5f 45 78  69 74 3e 20 61 75 74 6f  |g <OS_Exit> auto|
0009b190  6d 61 74 69 63 6c 79 20  72 65 6d 6f 76 65 73 20  |maticly removes |
0009b1a0  61 6e 79 20 72 65 64 69  72 65 63 74 69 6f 6e 20  |any redirection |
0009b1b0  28 61 6e 64 20 63 6c 6f  73 65 73 20 74 68 65 20  |(and closes the |
0009b1c0  61 73 73 6f 63 69 61 74  65 64 20 66 69 6c 65 20  |associated file |
0009b1d0  68 61 6e 64 6c 65 73 29  20 62 65 66 6f 72 65 20  |handles) before |
0009b1e0  63 6f 6e 74 72 6f 6c 20  70 61 73 73 65 73 20 74  |control passes t|
0009b1f0  6f 20 74 68 65 20 3c 65  78 69 74 20 68 61 6e 64  |o the <exit hand|
0009b200  6c 65 72 3d 3e 4f 53 5f  68 61 6e 64 6c 65 72 73  |ler=>OS_handlers|
0009b210  5f 65 78 69 74 3e 2e 0a  23 20 4e 3e 20 42 61 68  |_exit>..# N> Bah|
0009b220  2e 0a 23 20 47 65 72 70  68 3e 20 59 65 73 2c 20  |..# Gerph> Yes, |
0009b230  49 20 6e 6f 74 69 63 65  64 20 74 68 61 74 20 77  |I noticed that w|
0009b240  68 69 6c 73 74 20 77 72  69 74 69 6e 67 20 73 71  |hilst writing sq|
0009b250  75 69 67 67 6c 79 20 70  69 70 65 73 2e 0a 23 20  |uiggly pipes..# |
0009b260  20 20 20 20 20 20 20 49  74 20 6d 65 61 6e 73 20  |       It means |
0009b270  74 68 61 74 20 79 6f 75  20 63 61 6e 27 74 20 75  |that you can't u|
0009b280  73 65 66 75 6c 6c 79 20  68 61 76 65 20 74 77 6f  |sefully have two|
0009b290  20 70 72 6f 67 72 61 6d  73 20 63 61 6c 6c 65 64  | programs called|
0009b2a0  20 77 69 74 68 0a 23 20  20 20 20 20 20 20 20 72  | with.#        r|
0009b2b0  65 64 69 72 65 63 74 69  6f 6e 20 61 6e 64 20 6d  |edirection and m|
0009b2c0  61 6b 65 73 20 74 68 65  20 66 65 61 74 75 72 65  |akes the feature|
0009b2d0  20 61 6c 6d 6f 73 74 20  75 73 65 6c 65 73 73 2e  | almost useless.|
0009b2e0  0a 00 00 00 44 41 54 41  f9 01 00 00 4f 53 5f 43  |....DATA....OS_C|
0009b2f0  68 65 63 6b 4d 6f 64 65  56 61 6c 69 64 20 20 28  |heckModeValid  (|
0009b300  26 33 46 29 0a 23 50 61  72 65 6e 74 20 21 52 6f  |&3F).#Parent !Ro|
0009b310  6f 74 0a 3d 3e 09 52 30  20 3d 09 3c 6d 6f 64 65  |ot.=>.R0 =.<mode|
0009b320  20 6e 75 6d 62 65 72 3d  3e 56 44 55 3a 32 32 61  | number=>VDU:22a|
0009b330  3e 20 74 6f 20 63 68 65  63 6b 0a 0a 3c 3d 09 69  |> to check..<=.i|
0009b340  66 20 43 20 66 6c 61 67  20 75 6e 73 65 74 20 6d  |f C flag unset m|
0009b350  6f 64 65 20 69 73 20 76  61 6c 69 64 20 61 6e 64  |ode is valid and|
0009b360  20 52 30 20 70 72 65 73  65 72 76 65 64 0a 09 69  | R0 preserved..i|
0009b370  66 20 43 20 66 6c 61 67  20 73 65 74 20 74 68 65  |f C flag set the|
0009b380  20 6d 6f 64 65 20 69 73  20 69 6e 76 61 6c 69 64  | mode is invalid|
0009b390  0a 09 52 30 20 3d 09 2d  31 20 69 66 20 6d 6f 64  |..R0 =.-1 if mod|
0009b3a0  65 20 69 73 20 6e 6f 6e  2d 65 78 69 73 74 65 6e  |e is non-existen|
0009b3b0  74 0a 09 20 09 2d 32 20  69 66 20 6e 6f 74 20 65  |t.. .-2 if not e|
0009b3c0  6e 6f 75 67 68 20 6d 65  6d 6f 72 79 0a 09 52 31  |nough memory..R1|
0009b3d0  20 3d 09 6d 6f 64 65 20  74 68 61 74 20 77 6f 75  | =.mode that wou|
0009b3e0  6c 64 20 62 65 20 75 73  65 64 0a 09 20 09 2d 32  |ld be used.. .-2|
0009b3f0  20 69 66 20 75 6e 61 62  6c 65 20 74 6f 20 73 65  | if unable to se|
0009b400  6c 65 63 74 20 61 6c 74  65 72 6e 61 74 69 76 65  |lect alternative|
0009b410  20 6d 6f 64 65 0a 0a 54  68 69 73 20 66 69 6e 64  | mode..This find|
0009b420  73 20 6f 75 74 2c 20 77  68 65 74 68 65 72 20 79  |s out, whether y|
0009b430  6f 75 20 6d 61 79 20 63  68 61 6e 67 65 20 74 6f  |ou may change to|
0009b440  20 61 20 67 69 76 65 6e  20 6d 6f 64 65 20 6f 72  | a given mode or|
0009b450  20 69 74 73 20 69 6e 76  61 6c 69 64 2c 20 65 69  | its invalid, ei|
0009b460  74 68 65 72 20 62 65 63  61 75 73 65 20 74 68 65  |ther because the|
0009b470  20 6d 6f 6e 69 74 6f 72  20 74 79 70 65 20 66 6f  | monitor type fo|
0009b480  72 62 69 64 73 20 69 74  2c 20 52 31 20 74 68 65  |rbids it, R1 the|
0009b490  6e 20 69 73 20 74 68 65  20 61 6c 74 65 72 6e 61  |n is the alterna|
0009b4a0  74 69 76 65 20 6d 6f 64  65 2c 20 6f 72 20 74 68  |tive mode, or th|
0009b4b0  65 72 65 27 73 20 6e 6f  74 20 65 6e 6f 75 67 68  |ere's not enough|
0009b4c0  20 6d 65 6d 6f 72 79 20  69 6e 20 74 68 69 73 20  | memory in this |
0009b4d0  63 61 73 65 20 52 31 20  3d 20 2d 32 2e 00 00 00  |case R1 = -2....|
0009b4e0  44 41 54 41 ee 07 00 00  4f 53 5f 43 6c 61 69 6d  |DATA....OS_Claim|
0009b4f0  44 65 76 69 63 65 56 65  63 74 6f 72 20 20 28 26  |DeviceVector  (&|
0009b500  34 42 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |4B).#Parent OS_.|
0009b510  3d 3e 09 52 30 20 3d 09  3c 64 65 76 69 63 65 20  |=>.R0 =.<device |
0009b520  6e 75 6d 62 65 72 3d 3e  4f 53 5f 73 79 73 74 65  |number=>OS_syste|
0009b530  6d 64 65 76 69 63 65 73  3e 0a 09 52 31 20 3d 09  |mdevices>..R1 =.|
0009b540  61 64 64 72 65 73 73 20  6f 66 20 64 65 76 69 63  |address of devic|
0009b550  65 20 64 72 69 76 65 72  20 72 6f 75 74 69 6e 65  |e driver routine|
0009b560  0a 09 52 32 20 3d 09 76  61 6c 75 65 20 74 6f 20  |..R2 =.value to |
0009b570  62 65 20 70 61 73 73 65  64 20 69 6e 20 52 31 32  |be passed in R12|
0009b580  20 77 68 65 6e 20 64 72  69 76 65 72 20 69 73 20  | when driver is |
0009b590  63 61 6c 6c 65 64 0a 09  52 33 20 3d 09 61 64 64  |called..R3 =.add|
0009b5a0  72 65 73 73 20 6f 66 20  69 6e 74 65 72 72 75 70  |ress of interrup|
0009b5b0  74 20 73 74 61 74 75 73  20 69 66 20 52 30 20 3d  |t status if R0 =|
0009b5c0  20 38 20 6f 72 20 31 33  20 6f 6e 20 65 6e 74 72  | 8 or 13 on entr|
0009b5d0  79 0a 09 52 34 20 3d 09  69 6e 74 65 72 72 75 70  |y..R4 =.interrup|
0009b5e0  74 20 6d 61 73 6b 20 74  6f 20 75 73 65 2c 20 69  |t mask to use, i|
0009b5f0  66 20 52 30 20 3d 20 38  20 6f 72 20 31 33 20 6f  |f R0 = 8 or 13 o|
0009b600  6e 20 65 6e 74 72 79 0a  0a 3c 3d 09 52 30 2d 52  |n entry..<=.R0-R|
0009b610  34 20 70 72 65 73 65 72  76 65 64 0a 0a 54 68 69  |4 preserved..Thi|
0009b620  73 20 69 6e 73 74 61 6c  6c 73 20 74 68 65 20 64  |s installs the d|
0009b630  65 76 69 63 65 20 64 72  69 76 65 72 2e 20 49 66  |evice driver. If|
0009b640  20 74 68 65 20 73 61 6d  65 20 64 72 69 76 65 72  | the same driver|
0009b650  20 68 61 73 20 61 6c 72  65 61 64 79 20 62 65 65  | has already bee|
0009b660  6e 20 69 6e 73 74 61 6c  6c 65 64 20 6f 6e 20 74  |n installed on t|
0009b670  68 65 20 76 65 63 74 6f  72 20 74 68 65 6e 20 74  |he vector then t|
0009b680  68 65 20 6f 6c 64 20 63  6f 70 79 20 69 73 20 72  |he old copy is r|
0009b690  65 6d 6f 76 65 64 20 66  72 6f 6d 20 74 68 65 20  |emoved from the |
0009b6a0  76 65 63 74 6f 72 2e 20  54 68 69 73 20 64 6f 65  |vector. This doe|
0009b6b0  73 20 2a 6e 6f 74 2a 20  65 6e 61 62 6c 65 20 69  |s *not* enable i|
0009b6c0  6e 74 65 72 72 75 70 74  73 20 66 72 6f 6d 20 74  |nterrupts from t|
0009b6d0  68 65 20 64 65 76 69 63  65 2e 20 54 68 65 20 70  |he device. The p|
0009b6e0  72 65 76 69 6f 75 73 20  64 72 69 76 65 72 20 69  |revious driver i|
0009b6f0  73 20 61 64 64 65 64 20  74 6f 20 74 68 65 20 6c  |s added to the l|
0009b700  69 73 74 20 6f 66 20 65  61 72 6c 69 65 72 20 63  |ist of earlier c|
0009b710  6c 61 69 6d 61 6e 74 73  2e 20 59 6f 75 72 20 64  |laimants. Your d|
0009b720  72 69 76 65 72 20 69 73  20 63 61 6c 6c 65 64 20  |river is called |
0009b730  69 66 20 74 68 65 20 49  4f 43 20 63 68 69 70 20  |if the IOC chip |
0009b740  72 65 63 65 69 76 65 73  20 61 6e 20 69 6e 74 65  |receives an inte|
0009b750  72 72 75 70 74 20 66 72  6f 6d 20 74 68 65 20 61  |rrupt from the a|
0009b760  70 70 72 6f 70 72 69 61  74 65 20 64 65 76 69 63  |ppropriate devic|
0009b770  65 2c 20 74 68 65 20 63  6f 72 72 65 73 70 6f 6e  |e, the correspon|
0009b780  64 69 6e 67 20 49 4f 43  20 69 6e 74 65 72 72 75  |ding IOC interru|
0009b790  70 74 20 6d 61 73 6b 20  62 69 74 20 69 73 20 73  |pt mask bit is s|
0009b7a0  65 74 2c 20 61 6e 64 20  79 6f 75 72 20 64 72 69  |et, and your dri|
0009b7b0  76 65 72 20 77 61 73 20  74 68 65 20 6c 61 73 74  |ver was the last|
0009b7c0  20 74 6f 20 63 6c 61 69  6d 20 74 68 65 20 76 65  | to claim the ve|
0009b7d0  63 74 6f 72 2e 0a 0a 57  68 65 6e 20 79 6f 75 72  |ctor...When your|
0009b7e0  20 63 6f 64 65 20 69 73  20 62 65 69 6e 67 20 63  | code is being c|
0009b7f0  61 6c 6c 65 64 2c 20 79  6f 75 27 6c 6c 20 66 69  |alled, you'll fi|
0009b800  6e 64 20 74 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |nd the following|
0009b810  20 65 6e 74 72 79 20 63  6f 6e 64 69 74 69 6f 6e  | entry condition|
0009b820  73 3a 0a 23 49 6e 64 65  6e 74 20 32 0a 23 54 61  |s:.#Indent 2.#Ta|
0009b830  62 0a 8f 09 74 68 65 20  41 52 4d 20 69 73 20 69  |b...the ARM is i|
0009b840  6e 20 49 52 51 20 6d 6f  64 65 20 61 6e 64 20 69  |n IRQ mode and i|
0009b850  6e 74 65 72 72 75 70 74  73 20 61 72 65 20 64 69  |nterrupts are di|
0009b860  73 61 62 6c 65 64 0a 8f  09 52 33 20 70 6f 69 6e  |sabled...R3 poin|
0009b870  74 73 20 74 6f 20 74 68  65 20 62 61 73 65 20 6f  |ts to the base o|
0009b880  66 20 74 68 65 20 49 4f  43 20 63 68 69 70 20 6d  |f the IOC chip m|
0009b890  65 6d 6f 72 79 20 73 70  61 63 65 0a 8f 09 52 31  |emory space...R1|
0009b8a0  32 20 68 61 73 20 52 32  27 73 20 76 61 6c 75 65  |2 has R2's value|
0009b8b0  20 77 68 65 6e 20 63 6c  61 69 6d 69 6e 67 20 74  | when claiming t|
0009b8c0  68 65 20 76 65 63 74 6f  72 0a 23 49 6e 64 65 6e  |he vector.#Inden|
0009b8d0  74 0a 0a 59 6f 75 72 20  72 6f 75 74 69 6e 65 20  |t..Your routine |
0009b8e0  73 68 6f 75 6c 64 3a 0a  23 49 6e 64 65 6e 74 20  |should:.#Indent |
0009b8f0  32 0a 8f 09 73 65 72 76  69 63 65 20 74 68 65 20  |2...service the |
0009b900  69 6e 74 65 72 72 75 70  74 0a 8f 09 73 74 6f 70  |interrupt...stop|
0009b910  20 74 68 65 20 64 65 76  69 63 65 20 66 72 6f 6d  | the device from|
0009b920  20 67 65 6e 65 72 61 74  69 6e 67 20 69 6e 74 65  | generating inte|
0009b930  72 72 75 70 74 73 2c 20  77 68 65 6e 20 6e 65 63  |rrupts, when nec|
0009b940  65 73 73 61 72 79 0a 8f  09 72 65 74 75 72 6e 20  |essary...return |
0009b950  74 6f 20 6b 65 72 6e 65  6c 20 75 73 69 6e 67 20  |to kernel using |
0009b960  27 7b 66 43 6f 64 65 7d  4d 4f 56 20 50 43 2c 20  |'{fCode}MOV PC, |
0009b970  52 31 34 7b 66 7d 27 0a  23 49 6e 64 65 6e 74 0a  |R14{f}'.#Indent.|
0009b980  0a 59 6f 75 20 73 68 6f  75 6c 64 20 65 6e 73 75  |.You should ensu|
0009b990  72 65 3a 20 0a 23 49 6e  64 65 6e 74 20 32 0a 8f  |re: .#Indent 2..|
0009b9a0  09 61 20 76 65 72 79 20  68 69 67 68 20 65 78 65  |.a very high exe|
0009b9b0  63 75 74 69 6f 6e 20 73  70 65 65 64 0a 8f 09 69  |cution speed...i|
0009b9c0  66 20 79 6f 75 72 20 72  6f 75 74 69 6e 65 20 74  |f your routine t|
0009b9d0  61 6b 65 73 20 6d 6f 72  65 20 74 68 61 6e 20 31  |akes more than 1|
0009b9e0  30 30 b5 73 2c 20 79 6f  75 20 73 68 6f 75 6c 64  |00.s, you should|
0009b9f0  20 72 65 2d 65 6e 61 62  6c 65 20 69 6e 74 65 72  | re-enable inter|
0009ba00  72 75 70 74 73 2c 20 69  66 20 70 72 65 76 69 6f  |rupts, if previo|
0009ba10  75 73 6c 79 20 64 69 73  61 62 6c 65 64 2c 20 74  |usly disabled, t|
0009ba20  6f 20 65 6e 73 75 72 65  20 6f 74 68 65 72 20 64  |o ensure other d|
0009ba30  65 76 69 63 65 73 27 20  69 6e 74 65 72 72 75 70  |evices' interrup|
0009ba40  74 73 20 63 61 6e 20 62  65 20 73 65 72 76 69 63  |ts can be servic|
0009ba50  65 64 20 2d 20 7b 2f 7d  65 2e 67 2e 7b 2f 7d 20  |ed - {/}e.g.{/} |
0009ba60  64 69 73 63 20 6f 70 73  2e 20 57 69 74 68 20 69  |disc ops. With i|
0009ba70  6e 74 65 72 72 75 70 74  73 20 65 6e 61 62 6c 65  |nterrupts enable|
0009ba80  64 20 79 6f 75 72 20 72  6f 75 74 69 6e 65 20 6d  |d your routine m|
0009ba90  75 73 74 20 63 6f 70 65  20 77 69 74 68 20 62 65  |ust cope with be|
0009baa0  69 6e 67 20 72 65 2d 65  6e 74 65 72 65 64 2e 0a  |ing re-entered..|
0009bab0  8f 09 73 61 76 69 6e 67  20 52 31 34 5f 73 76 63  |..saving R14_svc|
0009bac0  20 74 6f 20 61 20 73 74  61 63 6b 20 62 65 66 6f  | to a stack befo|
0009bad0  72 65 20 63 61 6c 6c 69  6e 67 20 53 57 49 73 20  |re calling SWIs |
0009bae0  61 6e 64 20 72 65 6c 6f  61 64 69 6e 67 20 69 74  |and reloading it|
0009baf0  20 61 66 74 65 72 20 69  74 20 72 65 74 75 72 6e  | after it return|
0009bb00  73 20 74 6f 20 70 72 65  76 65 6e 74 20 64 6f 75  |s to prevent dou|
0009bb10  62 6c 65 20 75 73 65 20  6f 66 20 52 31 34 5f 73  |ble use of R14_s|
0009bb20  76 63 0a 8f 09 73 74 72  69 63 74 6c 79 20 61 76  |vc...strictly av|
0009bb30  6f 69 64 69 6e 67 20 74  68 65 20 75 73 65 20 6f  |oiding the use o|
0009bb40  66 20 6e 6f 6e 20 72 65  2d 65 6e 74 72 61 6e 74  |f non re-entrant|
0009bb50  20 53 57 49 73 2c 20 62  65 63 61 75 73 65 20 74  | SWIs, because t|
0009bb60  68 65 20 73 75 70 65 72  76 69 73 6f 72 20 73 74  |he supervisor st|
0009bb70  61 63 6b 20 77 6f 75 6c  64 20 62 65 63 6f 6d 65  |ack would become|
0009bb80  20 63 6f 72 72 75 70 74  65 64 20 69 66 20 75 73  | corrupted if us|
0009bb90  65 64 0a 8f 09 63 6c 65  61 72 69 6e 67 20 74 68  |ed...clearing th|
0009bba0  65 20 69 6e 74 65 72 72  75 70 74 20 66 6c 61 67  |e interrupt flag|
0009bbb0  73 20 77 68 65 6e 20 66  69 6e 69 73 68 69 6e 67  |s when finishing|
0009bbc0  0a 8f 09 79 6f 75 20 63  6f 70 65 20 77 69 74 68  |...you cope with|
0009bbd0  20 53 57 49 2d 65 72 72  6f 72 20 68 61 6e 64 6c  | SWI-error handl|
0009bbe0  69 6e 67 2e 20 59 6f 75  20 2a 6d 75 73 74 2a 20  |ing. You *must* |
0009bbf0  75 73 65 20 58 53 57 49  73 2e 20 41 73 20 74 68  |use XSWIs. As th|
0009bc00  65 72 65 20 69 73 20 6e  6f 2d 6f 6e 65 20 74 6f  |ere is no-one to|
0009bc10  20 70 61 73 73 20 74 68  65 20 65 72 72 6f 72 20  | pass the error |
0009bc20  6f 6e 20 74 6f 2c 20 79  6f 75 20 6d 75 73 74 20  |on to, you must |
0009bc30  65 69 74 68 65 72 20 68  61 6e 64 6c 65 20 69 74  |either handle it|
0009bc40  20 79 6f 75 72 73 65 6c  66 20 6f 72 20 73 74 6f  | yourself or sto|
0009bc50  72 65 20 61 6e 20 65 72  72 6f 72 20 69 6e 64 69  |re an error indi|
0009bc60  63 61 74 6f 72 2c 20 73  6f 20 74 68 61 74 20 74  |cator, so that t|
0009bc70  68 65 20 6e 65 78 74 20  53 57 49 20 63 61 6c 6c  |he next SWI call|
0009bc80  20 28 6f 72 20 74 68 65  20 63 75 72 72 65 6e 74  | (or the current|
0009bc90  2c 20 69 66 20 61 6c 72  65 61 64 79 20 74 68 72  |, if already thr|
0009bca0  65 61 64 65 64 29 20 74  6f 20 74 68 69 73 20 6d  |eaded) to this m|
0009bcb0  6f 64 75 6c 65 20 77 69  6c 6c 20 67 65 6e 65 72  |odule will gener|
0009bcc0  61 74 65 20 61 6e 20 65  72 72 6f 72 2e 0a 00 00  |ate an error....|
0009bcd0  44 41 54 41 37 03 00 00  53 79 73 74 65 6d 20 44  |DATA7...System D|
0009bce0  65 76 69 63 65 73 0a 23  50 61 72 65 6e 74 20 4f  |evices.#Parent O|
0009bcf0  53 5f 43 6c 61 69 6d 44  65 76 69 63 65 56 65 63  |S_ClaimDeviceVec|
0009bd00  74 6f 72 0a 41 6c 6c 20  6d 61 63 68 69 6e 65 73  |tor.All machines|
0009bd10  20 61 66 74 65 72 20 74  68 65 20 41 33 30 30 30  | after the A3000|
0009bd20  20 68 61 76 65 20 74 68  65 73 65 20 73 79 73 74  | have these syst|
0009bd30  65 6d 20 64 65 76 69 63  65 20 6e 75 6d 62 65 72  |em device number|
0009bd40  73 3a 0a 4e 75 6d 62 65  72 09 44 65 76 69 63 65  |s:.Number.Device|
0009bd50  0a 23 4c 69 6e 65 0a 30  09 50 72 69 6e 74 65 72  |.#Line.0.Printer|
0009bd60  20 69 6e 74 65 72 72 75  70 74 20 66 72 6f 6d 20  | interrupt from |
0009bd70  38 32 43 37 31 30 2f 31  0a 31 09 4c 6f 77 20 62  |82C710/1.1.Low b|
0009bd80  61 74 74 65 72 79 20 77  61 72 6e 69 6e 67 0a 32  |attery warning.2|
0009bd90  09 46 6c 6f 70 70 79 20  64 69 73 63 20 69 6e 64  |.Floppy disc ind|
0009bda0  65 78 65 72 0a 33 09 56  53 79 6e 63 20 50 75 6c  |exer.3.VSync Pul|
0009bdb0  73 65 0a 34 09 50 6f 77  65 72 20 6f 6e 20 72 65  |se.4.Power on re|
0009bdc0  73 65 74 0a 35 09 49 4f  43 20 54 69 6d 65 72 20  |set.5.IOC Timer |
0009bdd0  30 0a 36 09 49 4f 43 20  54 69 6d 65 72 20 31 0a  |0.6.IOC Timer 1.|
0009bde0  37 09 46 49 51 20 64 6f  77 6e 67 72 61 64 65 20  |7.FIQ downgrade |
0009bdf0  2d 20 72 65 73 65 72 76  65 64 20 66 6f 72 20 74  |- reserved for t|
0009be00  68 65 20 63 75 72 72 65  6e 74 20 6f 77 6e 65 72  |he current owner|
0009be10  20 6f 66 20 46 49 51 0a  38 09 45 78 70 61 6e 73  | of FIQ.8.Expans|
0009be20  69 6f 6e 20 63 61 72 64  20 46 49 51 20 64 6f 77  |ion card FIQ dow|
0009be30  6e 67 72 61 64 65 3b 20  74 68 69 73 20 73 68 6f  |ngrade; this sho|
0009be40  75 6c 64 20 6e 6f 72 6d  61 6c 6c 79 20 62 65 20  |uld normally be |
0009be50  6d 61 73 6b 65 64 20 6f  66 66 0a 39 09 53 6f 75  |masked off.9.Sou|
0009be60  6e 64 20 73 79 73 74 65  6d 20 62 75 66 66 65 72  |nd system buffer|
0009be70  20 63 68 61 6e 67 65 0a  31 30 09 53 65 72 69 61  | change.10.Seria|
0009be80  6c 20 70 6f 72 74 20 69  6e 74 65 72 72 75 70 74  |l port interrupt|
0009be90  20 66 72 6f 6d 20 38 32  43 37 31 30 2f 31 20 61  | from 82C710/1 a|
0009bea0  6c 73 6f 20 6d 61 70 70  65 64 20 74 6f 20 46 49  |lso mapped to FI|
0009beb0  51 20 64 65 76 69 63 65  20 34 0a 31 31 09 49 44  |Q device 4.11.ID|
0009bec0  45 20 68 61 72 64 20 64  69 73 63 20 69 6e 74 65  |E hard disc inte|
0009bed0  72 72 75 70 74 0a 31 32  09 46 6c 6f 70 70 79 20  |rrupt.12.Floppy |
0009bee0  64 69 73 63 20 69 6e 74  65 72 72 75 70 74 20 66  |disc interrupt f|
0009bef0  72 6f 6d 20 38 32 43 37  31 30 2f 31 0a 31 33 09  |rom 82C710/1.13.|
0009bf00  45 78 70 61 6e 73 69 6f  6e 20 63 61 72 64 20 69  |Expansion card i|
0009bf10  6e 74 65 72 72 75 70 74  0a 31 34 09 4b 65 79 62  |nterrupt.14.Keyb|
0009bf20  6f 61 72 64 20 73 65 72  69 61 6c 20 74 72 61 6e  |oard serial tran|
0009bf30  73 6d 69 74 20 72 65 67  69 73 74 65 72 20 65 6d  |smit register em|
0009bf40  70 74 79 0a 31 35 09 4b  65 79 62 6f 61 72 64 20  |pty.15.Keyboard |
0009bf50  73 65 72 69 61 6c 20 72  65 63 65 69 76 65 20 72  |serial receive r|
0009bf60  65 67 69 73 74 65 72 20  66 75 6c 6c 0a 0a 46 6f  |egister full..Fo|
0009bf70  72 20 41 33 30 30 30 20  61 6e 64 20 65 61 72 6c  |r A3000 and earl|
0009bf80  69 65 72 20 74 68 65 20  66 75 6e 63 74 69 6f 6e  |ier the function|
0009bf90  61 6c 69 74 79 20 6f 66  20 65 61 63 68 20 6e 75  |ality of each nu|
0009bfa0  6d 62 65 72 20 69 73 20  65 71 75 69 76 61 6c 65  |mber is equivale|
0009bfb0  6e 74 2c 20 62 75 74 20  77 69 74 68 20 53 54 35  |nt, but with ST5|
0009bfc0  30 36 20 69 6e 20 70 6c  61 63 65 20 6f 66 20 49  |06 in place of I|
0009bfd0  44 45 20 61 6e 64 20 73  65 70 61 72 61 74 65 20  |DE and separate |
0009bfe0  68 61 72 64 77 61 72 65  20 69 6e 73 74 65 61 64  |hardware instead|
0009bff0  20 6f 66 20 74 68 65 20  38 32 43 37 31 30 2f 31  | of the 82C710/1|
0009c000  20 63 68 69 70 2e 0a 00  44 41 54 41 7e 02 00 00  | chip...DATA~...|
0009c010  4f 53 5f 43 4c 49 20 20  28 26 30 35 29 0a 23 50  |OS_CLI  (&05).#P|
0009c020  61 72 65 6e 74 20 4f 53  5f 0a 3d 3e 09 52 30 20  |arent OS_.=>.R0 |
0009c030  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 73 74 72  |=.pointer to str|
0009c040  69 6e 67 20 74 65 72 6d  69 6e 61 74 65 64 20 62  |ing terminated b|
0009c050  79 20 4e 75 6c 6c 2c 20  4c 69 6e 65 66 65 65 64  |y Null, Linefeed|
0009c060  20 6f 72 20 52 65 74 75  72 6e 0a 3c 3d 09 52 30  | or Return.<=.R0|
0009c070  20 70 72 65 73 65 72 76  65 64 0a 0a 54 68 69 73  | preserved..This|
0009c080  20 65 78 65 63 75 74 65  73 20 61 20 73 74 72 69  | executes a stri|
0009c090  6e 67 20 70 61 73 73 65  64 20 74 6f 20 69 74 20  |ng passed to it |
0009c0a0  61 73 20 69 66 20 69 74  20 68 61 73 20 62 65 65  |as if it has bee|
0009c0b0  6e 20 74 79 70 65 64 20  69 6e 20 74 68 65 20 43  |n typed in the C|
0009c0c0  4c 49 2e 20 57 68 65 6e  20 69 74 20 69 73 20 63  |LI. When it is c|
0009c0d0  61 6c 6c 65 64 2c 20 69  74 20 70 65 72 66 6f 72  |alled, it perfor|
0009c0e0  6d 73 20 74 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |ms the following|
0009c0f0  20 61 63 74 69 6f 6e 73  3a 0a 23 54 61 62 3b 49  | actions:.#Tab;I|
0009c100  6e 64 65 6e 74 20 32 0a  8f 09 69 74 20 63 68 65  |ndent 2...it che|
0009c110  63 6b 73 20 74 68 65 20  73 74 61 63 6b 20 73 70  |cks the stack sp|
0009c120  61 63 65 2c 20 69 66 20  74 68 65 72 65 27 73 20  |ace, if there's |
0009c130  6e 6f 74 20 65 6e 6f 75  67 68 20 66 72 65 65 20  |not enough free |
0009c140  6d 65 6d 6f 72 79 20 74  6f 20 65 73 74 61 62 6c  |memory to establ|
0009c150  69 73 68 20 74 68 65 20  73 74 61 63 6b 20 74 68  |ish the stack th|
0009c160  65 20 65 72 72 6f 72 20  27 4e 6f 20 72 6f 6f 6d  |e error 'No room|
0009c170  20 66 6f 72 20 73 75 70  65 72 76 69 73 6f 72 20  | for supervisor |
0009c180  73 74 61 63 6b 27 20 69  73 20 72 65 74 75 72 6e  |stack' is return|
0009c190  65 64 2e 0a 8f 09 69 74  20 63 68 65 63 6b 73 20  |ed....it checks |
0009c1a0  74 68 65 20 63 6f 6d 6d  61 6e 64 20 6c 69 6e 65  |the command line|
0009c1b0  20 6c 65 6e 67 74 68 2e  20 41 20 43 4c 49 2d 63  | length. A CLI-c|
0009c1c0  6f 6d 6d 61 6e 64 20 68  61 73 20 74 6f 20 62 65  |ommand has to be|
0009c1d0  20 6c 65 73 73 20 74 68  61 6e 20 32 35 37 20 62  | less than 257 b|
0009c1e0  79 74 65 73 20 6c 6f 6e  67 2c 20 69 6e 63 6c 75  |ytes long, inclu|
0009c1f0  64 69 6e 67 20 74 68 65  20 74 65 72 6d 69 6e 61  |ding the termina|
0009c200  74 6f 72 2e 20 49 66 20  69 74 27 73 20 6c 6f 6e  |tor. If it's lon|
0009c210  67 65 72 2c 20 74 68 65  20 63 61 6c 6c 20 69 73  |ger, the call is|
0009c220  20 69 67 6e 6f 72 65 64  20 77 69 74 68 6f 75 74  | ignored without|
0009c230  20 72 65 74 75 72 6e 69  6e 67 20 61 6e 20 65 72  | returning an er|
0009c240  72 6f 72 2e 0a 8f 09 69  74 20 74 68 65 6e 20 65  |ror....it then e|
0009c250  78 65 63 75 74 65 73 20  74 68 65 20 63 6f 6d 6d  |xecutes the comm|
0009c260  61 6e 64 20 61 73 20 61  6e 79 20 6f 74 68 65 72  |and as any other|
0009c270  20 2a 43 6f 6d 6d 61 6e  64 20 74 79 70 65 64 20  | *Command typed |
0009c280  69 6e 20 43 4c 49 00 00  44 41 54 41 42 02 00 00  |in CLI..DATAB...|
0009c290  4f 53 5f 43 6f 6e 74 72  6f 6c 20 20 28 26 30 46  |OS_Control  (&0F|
0009c2a0  29 0a 23 50 61 72 65 6e  74 20 4f 53 5f 0a 3d 3e  |).#Parent OS_.=>|
0009c2b0  09 52 30 20 3d 09 61 64  64 72 65 73 73 20 6f 66  |.R0 =.address of|
0009c2c0  20 65 72 72 6f 72 20 68  61 6e 64 6c 65 72 2c 20  | error handler, |
0009c2d0  6f 72 20 30 20 74 6f 20  72 65 61 64 0a 09 52 31  |or 0 to read..R1|
0009c2e0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 62 75  | =.pointer to bu|
0009c2f0  66 66 65 72 20 66 6f 72  20 74 68 65 20 65 72 72  |ffer for the err|
0009c300  6f 72 20 68 61 6e 64 6c  65 72 2c 20 6f 72 20 30  |or handler, or 0|
0009c310  20 74 6f 20 72 65 61 64  0a 09 52 32 20 3d 09 61  | to read..R2 =.a|
0009c320  64 64 72 65 73 73 20 6f  66 20 65 73 63 61 70 65  |ddress of escape|
0009c330  20 73 74 61 74 65 20 63  68 61 6e 67 65 20 68 61  | state change ha|
0009c340  6e 64 6c 65 72 2c 20 6f  72 20 30 20 74 6f 20 72  |ndler, or 0 to r|
0009c350  65 61 64 0a 09 52 33 20  3d 09 61 64 64 72 65 73  |ead..R3 =.addres|
0009c360  73 20 6f 66 20 65 76 65  6e 74 20 68 61 6e 64 6c  |s of event handl|
0009c370  65 72 2c 20 6f 72 20 30  20 74 6f 20 72 65 61 64  |er, or 0 to read|
0009c380  20 20 20 20 20 20 20 0a  20 20 20 0a 3c 3d 09 52  |       .   .<=.R|
0009c390  30 20 3d 09 70 72 65 76  69 6f 75 73 20 65 72 72  |0 =.previous err|
0009c3a0  6f 72 20 68 61 6e 64 6c  65 72 20 61 64 64 72 65  |or handler addre|
0009c3b0  73 73 0a 09 52 31 20 3d  09 70 72 65 76 69 6f 75  |ss..R1 =.previou|
0009c3c0  73 20 62 75 66 66 65 72  20 61 64 64 72 65 73 73  |s buffer address|
0009c3d0  0a 09 52 32 20 3d 09 70  72 65 76 69 6f 75 73 20  |..R2 =.previous |
0009c3e0  65 73 63 61 70 65 20 72  6f 75 74 69 6e 65 20 61  |escape routine a|
0009c3f0  64 64 72 65 73 73 0a 09  52 33 20 3d 09 70 72 65  |ddress..R3 =.pre|
0009c400  76 69 6f 75 73 20 65 76  65 6e 74 20 68 61 6e 64  |vious event hand|
0009c410  6c 65 72 20 61 64 64 72  65 73 73 0a 0a 54 68 69  |ler address..Thi|
0009c420  73 20 73 65 74 73 20 73  6f 6d 65 20 6f 66 20 74  |s sets some of t|
0009c430  68 65 20 65 78 63 65 70  74 69 6f 6e 20 68 61 6e  |he exception han|
0009c440  64 6c 65 72 73 2c 20 62  75 74 20 69 73 20 6f 62  |dlers, but is ob|
0009c450  73 6f 6c 65 74 65 20 61  6e 64 20 73 68 6f 75 6c  |solete and shoul|
0009c460  64 6e 27 74 20 62 65 20  75 73 65 64 20 69 6e 20  |dn't be used in |
0009c470  6e 65 77 65 72 20 70 72  6f 67 72 61 6d 73 2c 20  |newer programs, |
0009c480  62 65 63 61 75 73 65 20  3c 4f 53 5f 43 68 61 6e  |because <OS_Chan|
0009c490  67 65 45 6e 76 69 72 6f  6e 6d 65 6e 74 3e 20 64  |geEnvironment> d|
0009c4a0  6f 65 73 20 74 68 65 20  73 61 6d 65 2c 20 69 6e  |oes the same, in|
0009c4b0  20 66 61 63 74 20 4f 53  5f 43 6f 6e 74 72 6f 6c  | fact OS_Control|
0009c4c0  20 75 73 65 73 20 69 74  2e 0a 00 00 44 41 54 41  | uses it....DATA|
0009c4d0  93 03 00 00 4f 53 5f 44  65 6c 69 6e 6b 41 70 70  |....OS_DelinkApp|
0009c4e0  6c 69 63 61 74 69 6f 6e  20 20 28 26 34 44 29 0a  |lication  (&4D).|
0009c4f0  23 50 61 72 65 6e 74 20  4f 53 5f 0a 3d 3e 09 52  |#Parent OS_.=>.R|
0009c500  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 62  |0 =.pointer to b|
0009c510  75 66 66 65 72 0a 09 52  31 20 3d 09 62 75 66 66  |uffer..R1 =.buff|
0009c520  65 72 20 73 69 7a 65 20  69 6e 20 62 79 74 65 73  |er size in bytes|
0009c530  0a 0a 3c 3d 09 52 30 20  70 72 65 73 65 72 76 65  |..<=.R0 preserve|
0009c540  64 0a 09 52 31 20 3d 09  6e 75 6d 62 65 72 20 6f  |d..R1 =.number o|
0009c550  66 20 62 79 74 65 73 20  6c 65 66 74 20 69 6e 20  |f bytes left in |
0009c560  62 75 66 66 65 72 0a 0a  57 68 65 6e 20 61 6e 20  |buffer..When an |
0009c570  61 70 70 6c 69 63 61 74  69 6f 6e 20 72 75 6e 6e  |application runn|
0009c580  69 6e 67 20 61 74 20 26  38 30 30 30 20 69 73 20  |ing at &8000 is |
0009c590  67 6f 69 6e 67 20 74 6f  20 62 65 20 73 77 61 70  |going to be swap|
0009c5a0  70 65 64 20 6f 75 74 2c  20 69 74 20 6d 75 73 74  |ped out, it must|
0009c5b0  20 72 65 6d 6f 76 65 20  61 6c 6c 20 76 65 63 74  | remove all vect|
0009c5c0  6f 72 73 20 74 68 61 74  20 69 74 20 75 73 65 73  |ors that it uses|
0009c5d0  2e 20 4f 74 68 65 72 77  69 73 65 2c 20 69 66 20  |. Otherwise, if |
0009c5e0  6b 65 72 6e 65 6c 20 74  72 69 65 64 20 74 6f 20  |kernel tried to |
0009c5f0  63 61 6c 6c 20 74 68 65  20 76 65 63 74 6f 72 20  |call the vector |
0009c600  69 74 20 77 6f 75 6c 64  20 6a 75 6d 70 20 69 6e  |it would jump in|
0009c610  74 6f 20 77 68 61 74 65  76 65 72 20 68 61 70 70  |to whatever happ|
0009c620  65 6e 65 64 20 74 6f 20  62 65 20 61 74 20 74 68  |ened to be at th|
0009c630  69 73 20 6d 65 6d 6f 72  79 20 61 64 64 72 65 73  |is memory addres|
0009c640  73 20 69 6e 20 77 68 61  74 65 76 65 72 20 61 70  |s in whatever ap|
0009c650  70 6c 69 63 61 74 69 6f  6e 20 77 61 73 20 72 75  |plication was ru|
0009c660  6e 6e 69 6e 67 20 61 74  20 74 68 65 20 74 69 6d  |nning at the tim|
0009c670  65 2c 20 70 72 6f 62 61  62 6c 79 20 77 69 74 68  |e, probably with|
0009c680  20 64 69 73 61 73 74 72  6f 75 73 20 72 65 73 75  | disastrous resu|
0009c690  6c 74 73 2e 0a 0a 54 68  65 20 62 75 66 66 65 72  |lts...The buffer|
0009c6a0  20 69 73 20 75 73 65 64  20 74 6f 20 73 74 6f 72  | is used to stor|
0009c6b0  65 20 64 65 74 61 69 6c  73 20 6f 66 20 74 68 65  |e details of the|
0009c6c0  20 76 65 63 74 6f 72 73  20 75 73 65 64 2c 20 73  | vectors used, s|
0009c6d0  6f 20 74 68 65 79 20 63  61 6e 20 62 65 20 72 65  |o they can be re|
0009c6e0  73 74 6f 72 65 64 20 61  66 74 65 72 77 61 72 64  |stored afterward|
0009c6f0  73 20 77 69 74 68 20 3c  4f 53 5f 52 65 6c 69 6e  |s with <OS_Relin|
0009c700  6b 41 70 70 6c 69 63 61  74 69 6f 6e 3e 2e 20 45  |kApplication>. E|
0009c710  61 63 68 20 76 65 63 74  6f 72 20 72 65 71 75 69  |ach vector requi|
0009c720  72 65 73 20 31 32 20 62  79 74 65 73 20 6f 66 20  |res 12 bytes of |
0009c730  73 74 6f 72 61 67 65 20  61 6e 64 20 74 68 65 20  |storage and the |
0009c740  6c 69 73 74 20 69 73 20  74 65 72 6d 69 6e 61 74  |list is terminat|
0009c750  65 64 20 62 79 20 61 20  73 69 6e 67 6c 65 20 62  |ed by a single b|
0009c760  79 74 65 2e 20 49 66 20  74 68 65 20 73 70 61 63  |yte. If the spac|
0009c770  65 20 6c 65 66 74 20 69  73 20 30 2c 20 79 6f 75  |e left is 0, you|
0009c780  20 61 72 65 20 74 6f 20  61 6c 6c 6f 63 61 74 65  | are to allocate|
0009c790  20 61 6e 6f 74 68 65 72  20 62 75 66 66 65 72 20  | another buffer |
0009c7a0  61 6e 64 20 72 65 70 65  61 74 20 74 68 65 20 63  |and repeat the c|
0009c7b0  61 6c 6c 3b 20 74 68 65  20 66 69 72 73 74 20 62  |all; the first b|
0009c7c0  75 66 66 65 72 20 69 73  20 73 74 69 6c 6c 20 76  |uffer is still v|
0009c7d0  61 6c 69 64 2c 20 6f 6e  6c 79 20 74 68 65 20 76  |alid, only the v|
0009c7e0  65 63 74 6f 72 73 20 77  68 69 63 68 20 64 69 64  |ectors which did|
0009c7f0  6e 27 74 20 66 69 74 20  69 6e 74 6f 20 69 74 20  |n't fit into it |
0009c800  61 72 65 20 70 6c 61 63  65 64 20 69 6e 74 6f 20  |are placed into |
0009c810  74 68 65 20 73 65 63 6f  6e 64 20 62 75 66 66 65  |the second buffe|
0009c820  72 2e 20 57 68 65 6e 20  72 65 6c 69 6e 6b 69 6e  |r. When relinkin|
0009c830  67 20 79 6f 75 20 6d 75  73 74 20 70 61 73 73 20  |g you must pass |
0009c840  61 6c 6c 20 62 75 66 66  65 72 73 20 75 73 65 64  |all buffers used|
0009c850  20 62 79 20 74 68 69 73  20 63 61 6c 6c 2e 0a 00  | by this call...|
0009c860  44 41 54 41 cf 01 00 00  4f 53 5f 47 65 6e 65 72  |DATA....OS_Gener|
0009c870  61 74 65 45 72 72 6f 72  20 20 28 26 32 42 29 0a  |ateError  (&2B).|
0009c880  23 50 61 72 65 6e 74 20  4f 53 5f 0a 3d 3e 09 52  |#Parent OS_.=>.R|
0009c890  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |0 =.pointer to <|
0009c8a0  65 72 72 6f 72 20 62 6c  6f 63 6b 3d 3e 73 77 69  |error block=>swi|
0009c8b0  5f 65 72 72 6f 72 62 6c  6f 63 6b 3e 0a 3c 3d 09  |_errorblock>.<=.|
0009c8c0  6f 6e 6c 79 20 72 65 74  75 72 6e 73 20 28 77 69  |only returns (wi|
0009c8d0  74 68 20 56 20 66 6c 61  67 20 6f 6e 29 20 69 66  |th V flag on) if|
0009c8e0  20 58 20 77 61 73 20 73  65 74 0a 0a 54 68 69 73  | X was set..This|
0009c8f0  20 67 65 6e 65 72 61 74  65 73 20 61 6e 20 65 72  | generates an er|
0009c900  72 6f 72 20 61 6e 64 20  69 6e 76 6f 6b 65 73 20  |ror and invokes |
0009c910  74 68 65 20 65 72 72 6f  72 20 68 61 6e 64 6c 65  |the error handle|
0009c920  72 2e 20 54 68 65 20 58  20 66 6f 72 6d 20 6d 61  |r. The X form ma|
0009c930  79 20 61 70 70 65 61 72  20 74 6f 20 62 65 20 63  |y appear to be c|
0009c940  6f 6d 70 6c 65 74 65 6c  79 20 75 73 65 6c 65 73  |ompletely useles|
0009c950  73 20 61 73 20 69 74 20  69 73 20 65 66 66 65 63  |s as it is effec|
0009c960  74 69 76 65 6c 79 0a 0a  3d 3e 09 6e 6f 20 70 61  |tively..=>.no pa|
0009c970  72 61 6d 65 74 65 72 73  20 70 61 73 73 65 64 20  |rameters passed |
0009c980  69 6e 20 72 65 67 69 73  74 65 72 73 0a 3c 3d 09  |in registers.<=.|
0009c990  61 6c 6c 20 72 65 67 69  73 74 65 72 73 20 70 72  |all registers pr|
0009c9a0  65 73 65 72 76 65 64 0a  09 56 20 66 6c 61 67 20  |eserved..V flag |
0009c9b0  73 65 74 0a 0a 68 6f 77  65 76 65 72 2c 20 69 74  |set..however, it|
0009c9c0  20 68 61 73 20 61 74 20  6c 65 61 73 74 20 32 20  | has at least 2 |
0009c9d0  75 73 65 73 0a 0a 31 09  30 20 74 65 72 6d 69 6e  |uses..1.0 termin|
0009c9e0  61 74 65 64 20 73 74 72  69 6e 67 20 63 6f 6e 76  |ated string conv|
0009c9f0  65 72 73 69 6f 6e 20 69  6e 20 42 41 53 49 43 0a  |ersion in BASIC.|
0009ca00  32 09 64 65 74 65 63 74  69 6e 67 20 77 68 65 74  |2.detecting whet|
0009ca10  68 65 72 20 3c 4f 53 5f  43 61 6c 6c 41 53 57 49  |her <OS_CallASWI|
0009ca20  3e 20 69 73 20 61 76 61  69 6c 61 62 6c 65 0a 00  |> is available..|
0009ca30  44 41 54 41 4b 01 00 00  4f 53 5f 49 6e 73 74 61  |DATAK...OS_Insta|
0009ca40  6c 6c 4b 65 79 48 61 6e  64 6c 65 72 20 20 28 26  |llKeyHandler  (&|
0009ca50  33 45 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |3E).#Parent OS_.|
0009ca60  3d 3e 09 52 30 20 3d 09  30 09 72 65 61 64 20 61  |=>.R0 =.0.read a|
0009ca70  64 64 72 65 73 73 20 6f  66 20 63 75 72 72 65 6e  |ddress of curren|
0009ca80  74 20 6b 65 79 62 6f 61  72 64 20 68 61 6e 64 6c  |t keyboard handl|
0009ca90  65 72 0a 09 20 09 31 09  72 65 61 64 20 6b 65 79  |er.. .1.read key|
0009caa0  62 6f 61 72 64 20 49 44  20 66 72 6f 6d 20 6b 65  |board ID from ke|
0009cab0  79 62 6f 61 72 64 20 28  31 20 66 6f 72 20 55 4b  |yboard (1 for UK|
0009cac0  29 0a 09 20 09 3e 31 09  73 65 74 20 61 64 64 72  |).. .>1.set addr|
0009cad0  65 73 73 20 6f 66 20 6e  65 77 20 6b 65 79 62 6f  |ess of new keybo|
0009cae0  61 72 64 20 68 61 6e 64  6c 65 72 0a 0a 3c 3d 09  |ard handler..<=.|
0009caf0  52 30 20 3d 09 61 64 64  72 65 73 73 20 6f 66 20  |R0 =.address of |
0009cb00  6e 65 77 2f 6f 6c 64 20  6b 65 79 62 6f 61 72 64  |new/old keyboard|
0009cb10  20 68 61 6e 64 6c 65 72  2c 20 6f 72 20 3c 6b 65  | handler, or <ke|
0009cb20  79 62 6f 61 72 64 20 49  44 3d 3e 4f 53 5f 6b 65  |yboard ID=>OS_ke|
0009cb30  79 62 6f 61 72 64 69 64  3e 0a 0a 54 68 69 73 20  |yboardid>..This |
0009cb40  69 6e 73 74 61 6c 6c 73  20 74 68 65 20 6b 65 79  |installs the key|
0009cb50  62 6f 61 72 64 20 68 61  6e 64 6c 65 72 20 74 6f  |board handler to|
0009cb60  20 72 65 70 6c 61 63 65  20 74 68 65 20 64 65 66  | replace the def|
0009cb70  61 75 6c 74 20 63 6f 64  65 2e 0a 00 44 41 54 41  |ault code...DATA|
0009cb80  d6 00 00 00 4f 53 5f 49  6e 74 4f 66 66 20 20 28  |....OS_IntOff  (|
0009cb90  26 31 34 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |&14).#Parent OS_|
0009cba0  0a 54 68 69 73 20 63 61  6c 6c 20 64 69 73 61 62  |.This call disab|
0009cbb0  6c 65 73 20 69 6e 74 65  72 72 75 70 74 73 20 61  |les interrupts a|
0009cbc0  6e 64 20 72 65 74 75 72  6e 73 20 74 6f 20 63 61  |nd returns to ca|
0009cbd0  6c 6c 65 72 20 77 69 74  68 20 70 72 6f 63 65 73  |ller with proces|
0009cbe0  73 6f 72 20 6d 6f 64 65  20 61 6e 64 20 72 65 67  |sor mode and reg|
0009cbf0  69 73 74 65 72 73 20 75  6e 63 68 61 6e 67 65 64  |isters unchanged|
0009cc00  2e 20 49 74 20 64 6f 65  73 20 74 68 69 73 20 62  |. It does this b|
0009cc10  65 20 73 77 69 74 63 68  69 6e 67 20 74 68 65 20  |e switching the |
0009cc20  63 6f 72 72 65 73 70 6f  6e 64 69 6e 67 20 62 69  |corresponding bi|
0009cc30  74 73 20 69 6e 20 74 68  65 20 3c 50 53 52 3d 3e  |ts in the <PSR=>|
0009cc40  41 73 73 65 6d 62 6c 79  3a 50 43 3e 20 6f 66 66  |Assembly:PC> off|
0009cc50  2e 0a 00 00 44 41 54 41  d2 00 00 00 4f 53 5f 49  |....DATA....OS_I|
0009cc60  6e 74 4f 6e 20 20 28 26  31 33 29 0a 23 50 61 72  |ntOn  (&13).#Par|
0009cc70  65 6e 74 20 4f 53 5f 0a  54 68 69 73 20 63 61 6c  |ent OS_.This cal|
0009cc80  6c 20 65 6e 61 62 6c 65  73 20 69 6e 74 65 72 72  |l enables interr|
0009cc90  75 70 74 73 20 61 6e 64  20 72 65 74 75 72 6e 73  |upts and returns|
0009cca0  20 74 6f 20 63 61 6c 6c  65 72 20 77 69 74 68 20  | to caller with |
0009ccb0  70 72 6f 63 65 73 73 6f  72 20 6d 6f 64 65 20 61  |processor mode a|
0009ccc0  6e 64 20 72 65 67 69 73  74 65 72 73 20 75 6e 63  |nd registers unc|
0009ccd0  68 61 6e 67 65 64 2e 20  49 74 20 64 6f 65 73 20  |hanged. It does |
0009cce0  74 68 69 73 20 62 65 20  73 77 69 74 63 68 69 6e  |this be switchin|
0009ccf0  67 20 74 68 65 20 63 6f  72 72 65 73 70 6f 6e 64  |g the correspond|
0009cd00  69 6e 67 20 62 69 74 73  20 69 6e 20 74 68 65 20  |ing bits in the |
0009cd10  3c 50 53 52 3d 3e 41 73  73 65 6d 62 6c 79 3a 50  |<PSR=>Assembly:P|
0009cd20  43 3e 20 6f 6e 2e 00 00  44 41 54 41 86 00 00 00  |C> on...DATA....|
0009cd30  4d 6f 75 73 65 20 42 75  74 74 6f 6e 73 0a 42 69  |Mouse Buttons.Bi|
0009cd40  74 09 4d 65 61 6e 69 6e  67 0a 23 4c 69 6e 65 3b  |t.Meaning.#Line;|
0009cd50  57 72 61 70 20 4f 66 66  0a 30 09 52 69 67 68 74  |Wrap Off.0.Right|
0009cd60  20 62 75 74 74 6f 6e 20  64 6f 77 6e 20 28 41 64  | button down (Ad|
0009cd70  6a 75 73 74 29 0a 31 09  4d 69 64 64 6c 65 20 62  |just).1.Middle b|
0009cd80  75 74 74 6f 6e 20 64 6f  77 6e 20 28 4d 65 6e 75  |utton down (Menu|
0009cd90  29 0a 32 09 4c 65 66 74  20 62 75 74 74 6f 6e 20  |).2.Left button |
0009cda0  64 6f 77 6e 20 28 53 65  6c 65 63 74 29 0a 00 00  |down (Select)...|
0009cdb0  44 41 54 41 87 00 00 00  4f 53 5f 4e 65 77 4c 69  |DATA....OS_NewLi|
0009cdc0  6e 65 20 20 28 26 30 33  29 0a 23 50 61 72 65 6e  |ne  (&03).#Paren|
0009cdd0  74 20 4f 53 5f 0a 54 68  69 73 20 73 65 6e 64 73  |t OS_.This sends|
0009cde0  20 61 20 6c 69 6e 65 20  66 65 65 64 20 66 6f 6c  | a line feed fol|
0009cdf0  6c 6f 77 65 64 20 62 79  20 61 20 63 61 72 72 69  |lowed by a carri|
0009ce00  61 67 65 20 72 65 74 75  72 6e 20 74 6f 20 61 6c  |age return to al|
0009ce10  6c 20 3c 61 63 74 69 76  65 20 6f 75 74 70 75 74  |l <active output|
0009ce20  20 73 74 72 65 61 6d 73  3d 3e 4f 53 5f 42 79 74  | streams=>OS_Byt|
0009ce30  65 30 30 33 3e 2e 0a 00  44 41 54 41 31 01 00 00  |e003>...DATA1...|
0009ce40  4f 53 5f 50 72 69 6e 74  43 68 61 72 20 20 28 26  |OS_PrintChar  (&|
0009ce50  35 44 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |5D).#Parent OS_.|
0009ce60  3d 3e 09 52 30 20 3d 09  63 68 61 72 61 63 74 65  |=>.R0 =.characte|
0009ce70  72 20 74 6f 20 70 72 69  6e 74 0a 3c 3d 09 52 30  |r to print.<=.R0|
0009ce80  20 70 72 65 73 65 72 76  65 64 0a 0a 54 68 69 73  | preserved..This|
0009ce90  20 63 61 6c 6c 20 73 65  6e 64 73 20 61 20 63 68  | call sends a ch|
0009cea0  61 72 61 63 74 65 72 20  74 6f 20 74 68 65 20 70  |aracter to the p|
0009ceb0  72 69 6e 74 65 72 2e 20  3c 4f 53 5f 42 79 74 65  |rinter. <OS_Byte|
0009cec0  20 33 3d 3e 4f 53 5f 42  79 74 65 30 30 33 3e 20  | 3=>OS_Byte003> |
0009ced0  61 6e 64 20 3c 35 3d 3e  4f 53 5f 42 79 74 65 30  |and <5=>OS_Byte0|
0009cee0  30 35 3e 20 63 6f 6e 74  72 6f 6c 20 77 68 65 74  |05> control whet|
0009cef0  68 65 72 20 74 68 65 72  65 20 69 73 20 61 20 70  |her there is a p|
0009cf00  72 69 6e 74 65 72 20 73  65 6c 65 63 74 65 64 20  |rinter selected |
0009cf10  61 6e 64 20 77 68 69 63  68 20 64 65 76 69 63 65  |and which device|
0009cf20  20 69 74 20 69 73 2e 20  4e 6f 74 65 20 74 68 61  | it is. Note tha|
0009cf30  74 20 74 68 65 20 70 72  69 6e 74 65 72 20 69 67  |t the printer ig|
0009cf40  6e 6f 72 65 20 63 68 61  72 61 63 74 65 72 20 69  |nore character i|
0009cf50  73 20 6e 6f 74 20 75 73  65 64 20 62 79 20 74 68  |s not used by th|
0009cf60  69 73 20 63 61 6c 6c 2e  0a 00 00 00 44 41 54 41  |is call.....DATA|
0009cf70  a1 03 00 00 4f 53 5f 52  65 6c 65 61 73 65 44 65  |....OS_ReleaseDe|
0009cf80  76 69 63 65 56 65 63 74  6f 72 20 20 28 26 34 43  |viceVector  (&4C|
0009cf90  29 0a 23 50 61 72 65 6e  74 20 4f 53 5f 0a 3d 3e  |).#Parent OS_.=>|
0009cfa0  09 52 30 20 3d 09 3c 64  65 76 69 63 65 20 6e 75  |.R0 =.<device nu|
0009cfb0  6d 62 65 72 3d 3e 4f 53  5f 73 79 73 74 65 6d 64  |mber=>OS_systemd|
0009cfc0  65 76 69 63 65 73 3e 0a  09 52 31 20 3d 09 61 64  |evices>..R1 =.ad|
0009cfd0  64 72 65 73 73 20 6f 66  20 64 65 76 69 63 65 20  |dress of device |
0009cfe0  64 72 69 76 65 72 20 72  6f 75 74 69 6e 65 0a 09  |driver routine..|
0009cff0  52 32 20 3d 09 76 61 6c  75 65 20 74 6f 20 62 65  |R2 =.value to be|
0009d000  20 70 61 73 73 65 64 20  69 6e 20 52 31 32 20 77  | passed in R12 w|
0009d010  68 65 6e 20 64 72 69 76  65 72 20 69 73 20 63 61  |hen driver is ca|
0009d020  6c 6c 65 64 0a 09 52 33  20 3d 09 61 64 64 72 65  |lled..R3 =.addre|
0009d030  73 73 20 6f 66 20 69 6e  74 65 72 72 75 70 74 20  |ss of interrupt |
0009d040  73 74 61 74 75 73 20 69  66 20 52 30 20 3d 20 38  |status if R0 = 8|
0009d050  20 6f 72 20 31 33 20 6f  6e 20 65 6e 74 72 79 0a  | or 13 on entry.|
0009d060  09 52 34 20 3d 09 69 6e  74 65 72 72 75 70 74 20  |.R4 =.interrupt |
0009d070  6d 61 73 6b 20 74 6f 20  75 73 65 2c 20 69 66 20  |mask to use, if |
0009d080  52 30 20 3d 20 38 20 6f  72 20 31 33 20 6f 6e 20  |R0 = 8 or 13 on |
0009d090  65 6e 74 72 79 0a 0a 3c  3d 09 52 30 2d 52 34 20  |entry..<=.R0-R4 |
0009d0a0  70 72 65 73 65 72 76 65  64 0a 0a 54 68 69 73 20  |preserved..This |
0009d0b0  72 65 6d 6f 76 65 73 20  61 20 64 72 69 76 65 72  |removes a driver|
0009d0c0  20 66 72 6f 6d 20 74 68  65 20 6c 69 73 74 20 6f  | from the list o|
0009d0d0  66 20 63 6c 61 69 6d 61  6e 74 73 20 6f 66 20 61  |f claimants of a|
0009d0e0  20 64 65 76 69 63 65 20  76 65 63 74 6f 72 2e 20  | device vector. |
0009d0f0  54 68 65 20 64 65 76 69  63 65 20 76 65 63 74 6f  |The device vecto|
0009d100  72 20 69 73 20 69 64 65  6e 74 69 66 69 65 64 20  |r is identified |
0009d110  62 79 20 74 68 65 20 63  6f 6e 74 65 6e 74 73 20  |by the contents |
0009d120  6f 66 20 74 68 65 20 72  65 67 69 73 74 65 72 20  |of the register |
0009d130  6f 6e 20 65 6e 74 72 79  3b 20 52 30 2d 52 32 20  |on entry; R0-R2 |
0009d140  28 52 30 2d 52 34 20 69  66 20 52 30 20 3d 20 38  |(R0-R4 if R0 = 8|
0009d150  20 6f 72 20 31 33 20 6f  6e 20 65 6e 74 72 79 29  | or 13 on entry)|
0009d160  20 6d 75 73 74 20 62 65  20 74 68 65 20 73 61 6d  | must be the sam|
0009d170  65 20 61 73 20 77 68 65  6e 20 74 68 65 20 76 65  |e as when the ve|
0009d180  63 74 6f 72 20 77 61 73  20 63 6c 61 69 6d 65 64  |ctor was claimed|
0009d190  2e 0a 0a 54 68 65 20 70  72 65 76 69 6f 75 73 20  |...The previous |
0009d1a0  76 65 63 74 6f 72 20 6f  77 6e 65 72 20 69 73 20  |vector owner is |
0009d1b0  72 65 2d 69 6e 73 74 61  6c 6c 65 64 20 61 74 20  |re-installed at |
0009d1c0  74 68 65 20 68 65 61 64  20 6f 66 20 74 68 65 20  |the head of the |
0009d1d0  63 68 61 69 6e 2e 20 49  66 20 74 68 65 72 65 20  |chain. If there |
0009d1e0  69 73 20 6e 6f 20 70 72  65 76 69 6f 75 73 20 6f  |is no previous o|
0009d1f0  77 6e 65 72 2c 20 74 68  65 6e 20 74 68 65 20 49  |wner, then the I|
0009d200  52 51 73 20 66 72 6f 6d  20 74 68 65 20 63 6f 72  |RQs from the cor|
0009d210  72 65 73 70 6f 6e 64 69  6e 67 20 64 65 76 69 63  |responding devic|
0009d220  65 20 61 72 65 20 64 69  73 61 62 6c 65 64 2e 0a  |e are disabled..|
0009d230  0a 59 6f 75 20 6d 75 73  74 20 6e 6f 74 20 61 74  |.You must not at|
0009d240  74 65 6d 70 74 20 74 6f  20 64 69 73 61 62 6c 65  |tempt to disable|
0009d250  20 61 20 64 65 76 69 63  65 27 73 20 49 52 51 73  | a device's IRQs|
0009d260  20 77 69 74 68 69 6e 20  49 4f 43 20 77 68 65 6e  | within IOC when|
0009d270  20 79 6f 75 20 72 65 6c  65 61 73 65 20 69 74 73  | you release its|
0009d280  20 76 65 63 74 6f 72 2e  20 46 6f 72 20 65 78 70  | vector. For exp|
0009d290  61 6e 73 69 6f 6e 20 63  61 72 64 20 49 52 51 73  |ansion card IRQs|
0009d2a0  2c 20 79 6f 75 20 73 68  6f 75 6c 64 20 70 72 65  |, you should pre|
0009d2b0  76 65 6e 74 20 79 6f 75  72 20 64 65 76 69 63 65  |vent your device|
0009d2c0  20 66 72 6f 6d 20 69 6e  74 65 72 72 75 70 74 69  | from interrupti|
0009d2d0  6e 67 20 61 67 61 69 6e  20 62 79 20 70 72 6f 67  |ng again by prog|
0009d2e0  72 61 6d 6d 69 6e 67 20  74 68 65 20 68 61 72 64  |ramming the hard|
0009d2f0  77 61 72 65 20 6f 6e 20  79 6f 75 72 20 65 78 70  |ware on your exp|
0009d300  61 6e 73 69 6f 6e 20 63  61 72 64 2e 0a 00 00 00  |ansion card.....|
0009d310  44 41 54 41 0b 01 00 00  4f 53 5f 52 65 6c 69 6e  |DATA....OS_Relin|
0009d320  6b 41 70 70 6c 69 63 61  74 69 6f 6e 20 20 28 26  |kApplication  (&|
0009d330  34 45 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |4E).#Parent OS_.|
0009d340  3d 3e 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |=>.R0 =.pointer |
0009d350  74 6f 20 62 75 66 66 65  72 0a 3c 3d 09 52 30 20  |to buffer.<=.R0 |
0009d360  70 72 65 73 65 72 76 65  64 0a 0a 57 68 65 6e 20  |preserved..When |
0009d370  61 6e 20 61 70 70 6c 69  63 61 74 69 6f 6e 20 69  |an application i|
0009d380  73 20 67 6f 69 6e 67 20  74 6f 20 62 65 20 73 77  |s going to be sw|
0009d390  61 70 70 65 64 20 69 6e  2c 20 61 6c 6c 20 76 65  |apped in, all ve|
0009d3a0  63 74 6f 72 73 20 74 68  61 74 20 69 74 20 75 73  |ctors that it us|
0009d3b0  65 73 20 6d 75 73 74 20  62 65 20 72 65 73 74 6f  |es must be resto|
0009d3c0  72 65 64 2e 20 52 30 20  70 6f 69 6e 74 73 20 74  |red. R0 points t|
0009d3d0  6f 20 61 20 62 75 66 66  65 72 2c 20 77 68 69 63  |o a buffer, whic|
0009d3e0  68 20 68 61 73 20 70 72  65 76 69 6f 75 73 6c 79  |h has previously|
0009d3f0  20 62 65 65 6e 20 63 72  65 61 74 65 64 20 75 73  | been created us|
0009d400  69 6e 67 20 3c 4f 53 5f  44 65 6c 69 6e 6b 41 70  |ing <OS_DelinkAp|
0009d410  70 6c 69 63 61 74 69 6f  6e 3e 2e 00 44 41 54 41  |plication>..DATA|
0009d420  37 01 00 00 4f 53 5f 52  65 6d 6f 76 65 43 75 72  |7...OS_RemoveCur|
0009d430  73 6f 72 73 20 20 28 26  33 36 29 0a 23 50 61 72  |sors  (&36).#Par|
0009d440  65 6e 74 20 4f 53 5f 0a  54 68 69 73 20 63 61 6c  |ent OS_.This cal|
0009d450  6c 20 72 65 6d 6f 76 65  73 20 74 68 65 20 63 75  |l removes the cu|
0009d460  72 73 6f 72 73 20 28 6f  75 74 70 75 74 20 61 6e  |rsors (output an|
0009d470  64 20 63 6f 70 79 2c 20  69 66 20 61 63 74 69 76  |d copy, if activ|
0009d480  65 29 20 66 72 6f 6d 20  74 68 65 20 73 63 72 65  |e) from the scre|
0009d490  65 6e 2c 20 73 61 76 69  6e 67 20 74 68 65 20 6f  |en, saving the o|
0009d4a0  6c 64 20 73 74 61 74 65  20 6f 6e 20 61 6e 20 69  |ld state on an i|
0009d4b0  6e 74 65 72 6e 61 6c 20  73 74 61 63 6b 20 66 6f  |nternal stack fo|
0009d4c0  72 20 66 75 72 74 68 65  72 20 72 65 63 6f 76 65  |r further recove|
0009d4d0  72 69 6e 67 2e 20 54 68  69 73 20 63 61 6c 6c 20  |ring. This call |
0009d4e0  6d 75 73 74 20 62 65 20  62 61 6c 61 6e 63 65 64  |must be balanced|
0009d4f0  20 62 79 20 63 61 6c 6c  69 6e 67 20 3c 4f 53 5f  | by calling <OS_|
0009d500  52 65 73 74 6f 72 65 43  75 72 73 6f 72 73 3e 20  |RestoreCursors> |
0009d510  6c 61 74 65 72 20 68 6f  77 65 76 65 72 2c 20 74  |later however, t|
0009d520  68 65 20 3c 65 78 69 74  20 68 61 6e 64 6c 65 72  |he <exit handler|
0009d530  3d 3e 4f 53 5f 68 61 6e  64 6c 65 72 73 5f 65 78  |=>OS_handlers_ex|
0009d540  69 74 3e 20 70 72 6f 76  69 64 65 73 20 74 68 69  |it> provides thi|
0009d550  73 2e 0a 00 44 41 54 41  8c 00 00 00 4f 53 5f 52  |s...DATA....OS_R|
0009d560  65 73 74 6f 72 65 43 75  72 73 6f 72 73 20 20 28  |estoreCursors  (|
0009d570  26 33 37 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |&37).#Parent OS_|
0009d580  0a 54 68 69 73 20 72 65  73 74 6f 72 65 73 20 74  |.This restores t|
0009d590  68 65 20 63 75 72 73 6f  72 20 73 74 61 74 65 20  |he cursor state |
0009d5a0  70 72 65 76 69 6f 75 73  6c 79 20 73 61 76 65 64  |previously saved|
0009d5b0  20 6f 6e 20 74 68 65 20  69 6e 74 65 72 6e 61 6c  | on the internal|
0009d5c0  20 73 74 61 63 6b 20 75  73 69 6e 67 20 3c 4f 53  | stack using <OS|
0009d5d0  5f 52 65 6d 6f 76 65 43  75 72 73 6f 72 73 3e 2e  |_RemoveCursors>.|
0009d5e0  44 41 54 41 ec 02 00 00  4f 53 5f 53 65 74 43 61  |DATA....OS_SetCa|
0009d5f0  6c 6c 42 61 63 6b 20 20  28 26 31 42 29 0a 23 50  |llBack  (&1B).#P|
0009d600  61 72 65 6e 74 20 4f 53  5f 0a 54 68 69 73 20 73  |arent OS_.This s|
0009d610  65 74 73 20 74 68 65 20  63 61 6c 6c 62 61 63 6b  |ets the callback|
0009d620  20 66 6c 61 67 20 61 6e  64 20 73 6f 20 63 61 75  | flag and so cau|
0009d630  73 65 73 20 65 6e 74 72  79 20 74 6f 20 74 68 65  |ses entry to the|
0009d640  20 3c 63 61 6c 6c 62 61  63 6b 20 68 61 6e 64 6c  | <callback handl|
0009d650  65 72 3d 3e 4f 53 5f 68  61 6e 64 6c 65 72 73 5f  |er=>OS_handlers_|
0009d660  63 61 6c 6c 62 61 63 6b  3e 20 77 68 65 6e 20 74  |callback> when t|
0009d670  68 65 20 73 79 73 74 65  6d 20 6e 65 78 74 20 65  |he system next e|
0009d680  78 69 74 73 20 74 6f 20  75 73 65 72 20 6d 6f 64  |xits to user mod|
0009d690  65 20 63 6f 64 65 20 77  69 74 68 20 69 6e 74 65  |e code with inte|
0009d6a0  72 72 75 70 74 73 20 65  6e 61 62 6c 65 64 20 28  |rrupts enabled (|
0009d6b0  61 70 61 72 74 2c 20 6f  66 20 63 6f 75 72 73 65  |apart, of course|
0009d6c0  2c 20 66 72 6f 6d 20 74  68 65 20 65 78 69 74 20  |, from the exit |
0009d6d0  66 72 6f 6d 20 74 68 69  73 20 53 57 49 29 2e 20  |from this SWI). |
0009d6e0  54 68 69 73 20 53 57 49  20 6d 61 79 20 62 65 20  |This SWI may be |
0009d6f0  75 73 65 64 20 69 66 20  74 68 65 20 63 6f 64 65  |used if the code|
0009d700  20 6c 69 6e 6b 65 64 20  69 6e 74 6f 20 74 68 65  | linked into the|
0009d710  20 74 68 65 20 73 79 73  74 65 6d 20 28 76 69 61  | the system (via|
0009d720  20 76 65 63 74 6f 72 20  6f 72 20 61 73 20 61 20  | vector or as a |
0009d730  53 57 49 20 68 61 6e 64  6c 65 72 2c 20 65 74 63  |SWI handler, etc|
0009d740  29 20 69 73 20 72 65 71  75 69 72 65 64 20 74 6f  |) is required to|
0009d750  20 64 6f 20 74 68 69 6e  67 73 20 6f 6e 20 65 78  | do things on ex|
0009d760  69 74 20 66 72 6f 6d 20  74 68 65 20 73 79 73 74  |it from the syst|
0009d770  65 6d 2e 20 54 68 65 20  63 61 6c 6c 62 61 63 6b  |em. The callback|
0009d780  20 68 61 6e 64 6c 65 72  20 69 73 20 73 65 74 20  | handler is set |
0009d790  77 69 74 68 20 3c 4f 53  5f 43 68 61 6e 67 65 45  |with <OS_ChangeE|
0009d7a0  6e 76 69 72 6f 6e 6d 65  6e 74 3e 2c 20 61 6e 64  |nvironment>, and|
0009d7b0  20 69 73 20 64 69 73 74  69 6e 63 74 20 66 72 6f  | is distinct fro|
0009d7c0  6d 20 74 72 61 6e 73 69  65 6e 74 20 63 61 6c 6c  |m transient call|
0009d7d0  62 61 63 6b 73 20 73 65  74 20 77 69 74 68 20 3c  |backs set with <|
0009d7e0  4f 53 5f 41 64 64 43 61  6c 6c 42 61 63 6b 3e 2e  |OS_AddCallBack>.|
0009d7f0  0a 23 20 61 72 65 20 79  6f 75 20 73 75 72 65 20  |.# are you sure |
0009d800  74 68 61 74 20 74 68 65  20 63 61 6c 6c 62 61 63  |that the callbac|
0009d810  6b 20 77 6f 6e 74 20 68  61 70 70 65 6e 20 77 68  |k wont happen wh|
0009d820  65 6e 20 74 68 69 73 20  53 57 49 20 65 78 69 74  |en this SWI exit|
0009d830  73 20 69 66 20 74 68 65  20 73 75 70 65 72 76 69  |s if the supervi|
0009d840  73 6f 72 20 73 74 61 63  6b 20 69 73 20 65 6d 70  |sor stack is emp|
0009d850  74 79 20 61 6e 64 20 74  68 65 20 70 72 6f 63 65  |ty and the proce|
0009d860  73 73 6f 72 20 69 73 20  72 65 74 75 72 6e 69 6e  |ssor is returnin|
0009d870  67 20 74 6f 20 55 53 52  20 6d 6f 64 65 3f 0a 23  |g to USR mode?.#|
0009d880  20 3c 46 58 3e 20 2d 20  63 68 65 63 6b 73 20 50  | <FX> - checks P|
0009d890  52 4d 0a 23 20 48 6d 6d  2e 20 69 74 27 73 20 77  |RM.# Hmm. it's w|
0009d8a0  68 61 74 20 74 68 65 20  50 52 4d 20 73 61 79 73  |hat the PRM says|
0009d8b0  2e 0a 23 20 49 20 64 6f  6e 27 74 20 62 65 6c 69  |..# I don't beli|
0009d8c0  65 76 65 20 74 68 65 20  50 52 4d 0a 44 41 54 41  |eve the PRM.DATA|
0009d8d0  1a 02 00 00 4f 53 5f 53  65 74 45 6e 76 20 20 28  |....OS_SetEnv  (|
0009d8e0  26 31 32 29 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |&12).#Parent OS_|
0009d8f0  0a 3d 3e 09 52 30 20 3d  09 61 64 64 72 65 73 73  |.=>.R0 =.address|
0009d900  20 6f 66 20 74 68 65 20  68 61 6e 64 6c 65 72 20  | of the handler |
0009d910  66 6f 72 20 3c 4f 53 5f  45 78 69 74 3e 2c 20 30  |for <OS_Exit>, 0|
0009d920  20 74 6f 20 72 65 61 64  0a 09 52 31 20 3d 09 61  | to read..R1 =.a|
0009d930  64 64 72 65 73 73 20 6f  66 20 74 68 65 20 6d 65  |ddress of the me|
0009d940  6d 6f 72 79 20 6c 69 6d  69 74 20 66 6f 72 20 3c  |mory limit for <|
0009d950  4f 53 5f 47 65 74 45 6e  76 3e 2c 20 30 20 74 6f  |OS_GetEnv>, 0 to|
0009d960  20 72 65 61 64 0a 09 52  34 20 3d 09 61 64 64 72  | read..R4 =.addr|
0009d970  65 73 73 20 66 6f 72 20  75 6e 64 65 66 69 6e 65  |ess for undefine|
0009d980  64 20 69 6e 73 74 72 75  63 74 69 6f 6e 73 2c 20  |d instructions, |
0009d990  30 20 74 6f 20 72 65 61  64 0a 09 52 35 20 3d 09  |0 to read..R5 =.|
0009d9a0  61 64 64 72 65 73 73 20  66 6f 72 20 70 72 65 66  |address for pref|
0009d9b0  65 74 63 68 20 61 62 6f  72 74 2c 20 30 20 74 6f  |etch abort, 0 to|
0009d9c0  20 72 65 61 64 0a 09 52  36 20 3d 09 61 64 64 72  | read..R6 =.addr|
0009d9d0  65 73 73 20 66 6f 72 20  68 61 6e 64 6c 65 72 20  |ess for handler |
0009d9e0  66 6f 72 20 64 61 74 61  20 61 62 6f 72 74 2c 20  |for data abort, |
0009d9f0  30 20 74 6f 20 72 65 61  64 0a 09 52 37 20 3d 09  |0 to read..R7 =.|
0009da00  61 64 64 72 65 73 73 20  66 6f 72 20 68 61 6e 64  |address for hand|
0009da10  6c 65 72 20 66 6f 72 20  61 64 64 72 65 73 73 20  |ler for address |
0009da20  65 78 63 65 70 74 69 6f  6e 73 2c 20 30 20 74 6f  |exceptions, 0 to|
0009da30  20 72 65 61 64 0a 0a 3c  3d 09 54 68 65 20 75 73  | read..<=.The us|
0009da40  65 64 20 72 65 67 69 73  74 65 72 73 20 63 6f 6e  |ed registers con|
0009da50  74 61 69 6e 20 74 68 65  20 70 72 65 76 69 6f 75  |tain the previou|
0009da60  73 20 68 61 6e 64 6c 65  72 73 2e 0a 0a 54 68 69  |s handlers...Thi|
0009da70  73 20 73 65 74 73 20 73  65 76 65 72 61 6c 20 68  |s sets several h|
0009da80  61 6e 64 6c 65 72 73 2c  20 62 65 74 74 65 72 20  |andlers, better |
0009da90  75 73 65 20 3c 4f 53 5f  43 68 61 6e 67 65 45 6e  |use <OS_ChangeEn|
0009daa0  76 69 72 6f 6e 6d 65 6e  74 3e 2c 20 62 65 63 61  |vironment>, beca|
0009dab0  75 73 65 20 74 68 69 73  20 63 61 6c 6c 20 69 73  |use this call is|
0009dac0  20 6f 62 73 6f 6c 65 74  65 20 61 6e 64 20 75 73  | obsolete and us|
0009dad0  65 73 20 74 68 69 73 20  6e 65 77 65 72 20 76 65  |es this newer ve|
0009dae0  72 73 69 6f 6e 2e 00 00  44 41 54 41 f2 01 00 00  |rsion...DATA....|
0009daf0  4f 53 5f 53 65 74 43 6f  6c 6f 75 72 20 20 28 26  |OS_SetColour  (&|
0009db00  36 31 29 0a 23 50 61 72  65 6e 74 20 4f 53 5f 0a  |61).#Parent OS_.|
0009db10  3d 3e 09 52 30 20 3d 09  3c 66 6c 61 67 20 77 6f  |=>.R0 =.<flag wo|
0009db20  72 64 3d 3e 2e 66 6c 61  67 73 3e 0a 09 52 31 20  |rd=>.flags>..R1 |
0009db30  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 45 43 46  |=.pointer to ECF|
0009db40  20 70 61 74 74 65 72 6e  20 69 66 20 52 30 27 73  | pattern if R0's|
0009db50  20 62 69 74 20 35 20 3d  20 31 0a 09 20 09 63 6f  | bit 5 = 1.. .co|
0009db60  6c 6f 75 72 20 6e 75 6d  62 65 72 20 69 66 20 52  |lour number if R|
0009db70  30 27 73 20 62 69 74 20  35 20 3d 20 30 0a 0a 54  |0's bit 5 = 0..T|
0009db80  68 69 73 20 63 61 6c 6c  20 73 65 74 73 20 74 68  |his call sets th|
0009db90  65 20 66 6f 72 65 20 61  6e 64 20 62 61 63 6b 67  |e fore and backg|
0009dba0  6f 75 6e 64 20 74 65 78  74 20 63 6f 6c 6f 75 72  |ound text colour|
0009dbb0  2e 20 44 65 70 65 6e 64  69 6e 67 20 6f 6e 20 52  |. Depending on R|
0009dbc0  30 27 73 20 62 69 74 73  20 30 2d 33 2c 20 74 68  |0's bits 0-3, th|
0009dbd0  69 73 20 63 6f 6c 6f 75  72 20 6f 6e 20 74 68 65  |is colour on the|
0009dbe0  20 73 63 72 65 65 6e 20  69 73 20 63 68 61 6e 67  | screen is chang|
0009dbf0  65 64 2e 0a 23 53 75 62  70 61 67 65 20 66 6c 61  |ed..#Subpage fla|
0009dc00  67 73 0a 42 69 74 28 73  29 09 4d 65 61 6e 69 6e  |gs.Bit(s).Meanin|
0009dc10  67 0a 30 2d 33 09 3c 47  72 61 70 68 69 63 20 70  |g.0-3.<Graphic p|
0009dc20  6c 6f 74 20 61 63 74 69  6f 6e 3d 3e 6f 73 5f 73  |lot action=>os_s|
0009dc30  65 74 63 6f 6c 6f 75 72  61 63 74 69 6f 6e 73 3e  |etcolouractions>|
0009dc40  0a 34 09 53 65 74 3a 09  61 6c 74 65 72 20 62 61  |.4.Set:.alter ba|
0009dc50  63 6b 67 72 6f 75 6e 64  20 63 6f 6c 6f 75 72 0a  |ckground colour.|
0009dc60  09 43 6c 65 61 72 3a 09  61 6c 74 65 72 20 66 6f  |.Clear:.alter fo|
0009dc70  72 65 67 72 6f 75 6e 64  20 63 6f 6c 6f 75 72 0a  |reground colour.|
0009dc80  35 09 53 65 74 3a 09 52  31 20 69 73 20 70 6f 69  |5.Set:.R1 is poi|
0009dc90  6e 74 65 72 20 74 6f 20  45 43 46 20 70 61 74 74  |nter to ECF patt|
0009dca0  65 72 6e 0a 09 43 6c 72  3a 09 52 31 20 69 73 20  |ern..Clr:.R1 is |
0009dcb0  63 6f 6c 6f 75 72 20 6e  75 6d 62 65 72 0a 36 2d  |colour number.6-|
0009dcc0  33 31 09 72 65 73 65 72  76 65 64 2c 20 6d 75 73  |31.reserved, mus|
0009dcd0  74 20 62 65 20 7a 65 72  6f 0a 00 00 44 41 54 41  |t be zero...DATA|
0009dce0  83 01 00 00 47 72 61 70  68 69 63 20 70 6c 6f 74  |....Graphic plot|
0009dcf0  74 69 6e 67 20 61 63 74  69 6f 6e 73 0a 42 69 74  |ting actions.Bit|
0009dd00  73 20 30 2d 33 09 41 63  74 69 6f 6e 0a 23 4c 69  |s 0-3.Action.#Li|
0009dd10  6e 65 0a 30 09 09 52 65  70 6c 61 63 65 20 63 6f  |ne.0..Replace co|
0009dd20  6c 6f 75 72 20 6f 6e 20  73 63 72 65 65 6e 0a 31  |lour on screen.1|
0009dd30  09 09 4f 52 20 74 68 65  20 63 6f 6c 6f 75 72 20  |..OR the colour |
0009dd40  6f 6e 20 73 63 72 65 65  6e 0a 32 09 09 41 4e 44  |on screen.2..AND|
0009dd50  20 74 68 65 20 63 6f 6c  6f 75 72 20 6f 6e 20 73  | the colour on s|
0009dd60  63 72 65 65 6e 0a 33 09  09 45 4f 52 20 74 68 65  |creen.3..EOR the|
0009dd70  20 63 6f 6c 6f 75 72 20  6f 6e 20 73 63 72 65 65  | colour on scree|
0009dd80  6e 0a 34 09 09 4e 4f 54  20 74 68 65 20 63 6f 6c  |n.4..NOT the col|
0009dd90  6f 75 72 20 6f 6e 20 73  63 72 65 65 6e 0a 35 09  |our on screen.5.|
0009dda0  09 4c 65 61 76 65 20 63  6f 6c 6f 75 72 20 6f 6e  |.Leave colour on|
0009ddb0  20 73 63 72 65 65 6e 0a  36 09 09 42 49 43 20 74  | screen.6..BIC t|
0009ddc0  68 65 20 63 6f 6c 6f 75  72 20 6f 6e 20 73 63 72  |he colour on scr|
0009ddd0  65 65 6e 0a 37 09 09 4f  52 20 4e 4f 54 20 63 6f  |een.7..OR NOT co|
0009dde0  6c 6f 75 72 20 6f 6e 20  73 63 72 65 65 6e 0a 0a  |lour on screen..|
0009ddf0  49 66 20 62 69 74 20 33  20 69 73 20 73 65 74 2c  |If bit 3 is set,|
0009de00  20 69 65 20 74 68 65 20  72 61 6e 67 65 20 66 72  | ie the range fr|
0009de10  6f 6d 20 38 20 74 6f 20  31 35 2c 20 74 68 65 20  |om 8 to 15, the |
0009de20  6c 6f 77 65 72 20 62 69  74 73 20 6d 65 61 6e 20  |lower bits mean |
0009de30  74 68 65 20 73 61 6d 65  2c 20 62 75 74 20 62 61  |the same, but ba|
0009de40  63 6b 67 72 6f 75 6e 64  20 63 6f 6c 6f 75 72 20  |ckground colour |
0009de50  69 73 20 74 72 61 6e 73  70 61 72 65 6e 74 2e 00  |is transparent..|
0009de60  44 41 54 41 af 07 00 00  4f 53 5f 53 75 62 73 74  |DATA....OS_Subst|
0009de70  69 74 75 74 65 41 72 67  73 20 20 28 26 34 33 29  |ituteArgs  (&43)|
0009de80  0a 23 50 61 72 65 6e 74  20 4f 53 5f 0a 3d 3e 09  |.#Parent OS_.=>.|
0009de90  52 30 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R0 =.pointer to |
0009dea0  61 72 67 75 6d 65 6e 74  20 6c 69 73 74 2c 20 61  |argument list, a|
0009deb0  6e 64 20 66 6c 61 67 20  69 6e 20 74 6f 70 20 62  |nd flag in top b|
0009dec0  69 74 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |it..R1 =.pointer|
0009ded0  20 74 6f 20 62 75 66 66  65 72 20 66 6f 72 20 72  | to buffer for r|
0009dee0  65 73 75 6c 74 69 6e 67  20 73 74 72 69 6e 67 0a  |esulting string.|
0009def0  09 52 32 20 3d 09 6c 65  6e 67 74 68 20 6f 66 20  |.R2 =.length of |
0009df00  62 75 66 66 65 72 0a 09  52 33 20 3d 09 70 6f 69  |buffer..R3 =.poi|
0009df10  6e 74 65 72 20 74 6f 20  74 65 6d 70 6c 61 74 65  |nter to template|
0009df20  20 73 74 72 69 6e 67 0a  09 52 34 20 3d 09 6c 65  | string..R4 =.le|
0009df30  6e 67 74 68 20 6f 66 20  74 65 6d 70 6c 61 74 65  |ngth of template|
0009df40  20 73 74 72 69 6e 67 0a  0a 3c 3d 09 52 30 2c 52  | string..<=.R0,R|
0009df50  31 20 70 72 65 73 65 72  76 65 64 0a 09 52 32 20  |1 preserved..R2 |
0009df60  3d 09 6c 65 6e 67 74 68  20 6f 66 20 72 65 73 75  |=.length of resu|
0009df70  6c 74 20 73 74 72 69 6e  67 20 28 69 6e 63 6c 2e  |lt string (incl.|
0009df80  20 74 65 72 6d 69 6e 61  74 6f 72 29 0a 09 52 33  | terminator)..R3|
0009df90  2c 52 34 20 70 72 65 73  65 72 76 65 64 0a 0a 54  |,R4 preserved..T|
0009dfa0  68 69 73 20 63 61 6c 6c  20 70 65 72 66 6f 72 6d  |his call perform|
0009dfb0  73 20 74 68 65 20 68 61  72 64 20 77 6f 72 6b 20  |s the hard work |
0009dfc0  69 6e 76 6f 6c 76 65 64  20 69 6e 20 73 75 62 73  |involved in subs|
0009dfd0  74 69 74 75 74 69 6e 67  20 61 20 6c 69 73 74 20  |tituting a list |
0009dfe0  6f 66 20 61 72 67 75 6d  65 6e 74 73 20 69 6e 74  |of arguments int|
0009dff0  6f 20 61 20 27 74 65 6d  70 6c 61 74 65 27 20 73  |o a 'template' s|
0009e000  74 72 69 6e 67 2e 20 49  74 73 20 6d 61 69 6e 20  |tring. Its main |
0009e010  75 73 65 20 69 73 20 69  6e 20 74 68 65 20 70 72  |use is in the pr|
0009e020  6f 63 65 73 73 69 6e 67  20 6f 66 20 63 6f 6d 6d  |ocessing of comm|
0009e030  61 6e 64 20 41 6c 69 61  73 24 2e 2e 2e 20 76 61  |and Alias$... va|
0009e040  72 69 61 62 6c 65 73 20  62 79 20 74 68 65 20 73  |riables by the s|
0009e050  79 73 74 65 6d 2e 20 49  74 27 73 20 61 6c 73 6f  |ystem. It's also|
0009e060  20 75 73 65 66 75 6c 20  69 6e 20 6f 74 68 65 72  | useful in other|
0009e070  20 73 69 74 75 61 74 69  6f 6e 73 2c 20 69 74 20  | situations, it |
0009e080  68 61 73 20 62 65 65 6e  20 6d 61 64 65 20 61 76  |has been made av|
0009e090  61 69 6c 61 62 6c 65 20  74 6f 20 75 73 65 72 73  |ailable to users|
0009e0a0  2e 20 46 6f 72 20 65 78  61 6d 70 6c 65 2c 20 46  |. For example, F|
0009e0b0  69 6c 65 53 77 69 74 63  68 20 75 73 65 73 20 69  |ileSwitch uses i|
0009e0c0  74 20 69 6e 20 74 68 65  20 70 72 6f 63 65 73 73  |t in the process|
0009e0d0  69 6e 67 20 6f 66 20 41  6c 69 61 73 24 4c 6f 61  |ing of Alias$Loa|
0009e0e0  64 54 79 70 65 5f 54 54  54 20 76 61 72 69 61 62  |dType_TTT variab|
0009e0f0  6c 65 73 2e 0a 0a 54 68  65 20 61 72 67 75 6d 65  |les...The argume|
0009e100  6e 74 20 6c 69 73 74 20  69 73 20 61 20 73 74 72  |nt list is a str|
0009e110  69 6e 67 20 63 6f 6e 73  69 73 74 69 6e 67 20 6f  |ing consisting o|
0009e120  66 20 73 70 61 63 65 20  73 65 70 65 72 61 74 65  |f space seperate|
0009e130  64 20 69 74 65 6d 73 20  77 68 69 63 68 20 77 69  |d items which wi|
0009e140  6c 6c 20 62 65 20 73 75  62 73 74 69 74 75 74 65  |ll be substitute|
0009e150  64 20 69 6e 74 6f 20 74  68 65 20 74 65 6d 70 6c  |d into the templ|
0009e160  61 74 65 20 73 74 72 69  6e 67 2e 20 53 70 61 63  |ate string. Spac|
0009e170  65 73 20 77 69 74 68 69  6e 20 64 6f 75 62 6c 65  |es within double|
0009e180  20 71 75 6f 74 61 74 69  6f 6e 20 6d 61 72 6b 73  | quotation marks|
0009e190  20 61 72 65 20 6e 6f 74  20 63 6f 75 6e 74 65 64  | are not counted|
0009e1a0  20 61 73 20 61 72 67 75  6d 65 6e 74 20 73 65 70  | as argument sep|
0009e1b0  65 72 61 74 6f 72 73 2e  20 54 79 70 69 63 61 6c  |erators. Typical|
0009e1c0  6c 79 2c 20 74 68 65 20  61 72 67 75 6d 65 6e 74  |ly, the argument|
0009e1d0  20 73 74 72 69 6e 67 20  77 69 6c 6c 20 6a 75 73  | string will jus|
0009e1e0  74 20 62 65 20 74 68 65  20 74 61 69 6c 20 6f 66  |t be the tail of|
0009e1f0  20 61 20 2a 43 6f 6d 6d  61 6e 64 2e 20 49 74 27  | a *Command. It'|
0009e200  73 20 63 6f 6e 74 72 6f  6c 20 63 68 61 72 61 63  |s control charac|
0009e210  74 65 72 20 74 65 72 6d  69 6e 61 74 65 64 2e 20  |ter terminated. |
0009e220  54 68 65 20 72 65 73 75  6c 74 20 6f 66 20 73 75  |The result of su|
0009e230  62 73 74 69 74 75 74 69  6e 67 20 74 68 65 20 61  |bstituting the a|
0009e240  72 67 75 6d 65 6e 74 73  20 69 6e 74 6f 20 74 68  |rguments into th|
0009e250  65 20 74 65 6d 70 6c 61  74 65 20 73 74 72 69 6e  |e template strin|
0009e260  67 20 69 73 20 70 6c 61  63 65 64 20 69 6e 20 74  |g is placed in t|
0009e270  68 65 20 62 75 66 66 65  72 2e 20 54 68 65 20 6c  |he buffer. The l|
0009e280  65 6e 67 74 68 20 6f 66  20 74 68 65 20 62 75 66  |ength of the buf|
0009e290  66 65 72 20 69 73 20 67  69 76 65 6e 20 73 6f 20  |fer is given so |
0009e2a0  74 68 61 74 20 74 68 65  20 63 61 6c 6c 20 63 61  |that the call ca|
0009e2b0  6e 20 63 68 65 63 6b 20  66 6f 72 20 62 75 66 66  |n check for buff|
0009e2c0  65 72 20 6f 76 65 72 66  6c 6f 77 2e 20 54 68 65  |er overflow. The|
0009e2d0  20 74 65 6d 70 6c 61 74  65 20 73 74 72 69 6e 67  | template string|
0009e2e0  20 69 73 20 63 6f 70 69  65 64 20 69 6e 74 6f 20  | is copied into |
0009e2f0  74 68 65 20 72 65 73 75  6c 74 20 62 75 66 66 65  |the result buffe|
0009e300  72 20 63 68 61 72 20 66  6f 72 20 63 68 61 72 2e  |r char for char.|
0009e310  20 48 6f 77 65 76 65 72  2c 20 77 68 65 6e 20 61  | However, when a|
0009e320  20 27 25 27 20 61 70 70  65 61 72 73 20 69 6e 20  | '%' appears in |
0009e330  74 68 65 20 74 65 6d 70  6c 61 74 65 20 73 74 72  |the template str|
0009e340  69 6e 67 20 28 65 76 65  6e 20 77 69 74 68 69 6e  |ing (even within|
0009e350  20 71 75 6f 74 61 74 69  6f 6e 20 6d 61 72 6b 73  | quotation marks|
0009e360  29 2c 20 69 74 20 6d 61  72 6b 73 20 77 68 65 72  |), it marks wher|
0009e370  65 20 61 6e 20 61 72 67  75 6d 65 6e 74 20 73 68  |e an argument sh|
0009e380  6f 75 6c 64 20 62 65 20  70 6c 61 63 65 64 20 69  |ould be placed i|
0009e390  6e 74 6f 20 74 68 65 20  6f 75 74 70 75 74 20 62  |nto the output b|
0009e3a0  75 66 66 65 72 2e 20 54  68 65 20 27 25 27 20 69  |uffer. The '%' i|
0009e3b0  73 20 66 6f 6c 6c 6f 77  65 64 20 62 79 20 61 20  |s followed by a |
0009e3c0  73 69 6e 67 6c 65 20 64  69 67 69 74 20 66 72 6f  |single digit fro|
0009e3d0  6d 20 30 20 2d 20 39 2e  20 25 30 20 73 74 61 6e  |m 0 - 9. %0 stan|
0009e3e0  64 73 20 66 6f 72 20 74  68 65 20 66 69 72 73 74  |ds for the first|
0009e3f0  20 61 72 67 75 6d 65 6e  74 20 69 6e 20 74 68 65  | argument in the|
0009e400  20 61 72 67 75 6d 65 6e  74 20 6c 69 73 74 20 61  | argument list a|
0009e410  6e 64 20 73 6f 20 6f 6e  2e 20 25 25 20 6d 65 61  |nd so on. %% mea|
0009e420  6e 73 20 61 20 73 69 6e  67 6c 65 20 25 2e 20 41  |ns a single %. A|
0009e430  6e 79 74 68 69 6e 67 20  65 6c 73 65 20 66 6f 6c  |nything else fol|
0009e440  6c 6f 77 69 6e 67 20 74  68 65 20 27 25 27 20 69  |lowing the '%' i|
0009e450  73 20 6e 6f 74 20 74 72  65 61 74 65 64 20 73 70  |s not treated sp|
0009e460  65 63 69 61 6c 6c 79 2c  20 69 65 20 62 6f 74 68  |ecially, ie both|
0009e470  20 74 68 65 20 25 20 61  6e 64 20 74 68 65 20 63  | the % and the c|
0009e480  68 61 72 61 63 74 65 72  20 61 72 65 20 63 6f 70  |haracter are cop|
0009e490  69 65 64 20 6f 76 65 72  2e 20 54 68 65 20 74 65  |ied over. The te|
0009e4a0  6d 70 6c 61 74 65 20 73  74 72 69 6e 67 20 64 6f  |mplate string do|
0009e4b0  65 73 6e 27 74 20 68 61  76 65 20 61 20 74 65 72  |esn't have a ter|
0009e4c0  6d 69 6e 61 74 6f 72 2c  20 69 6e 73 74 65 61 64  |minator, instead|
0009e4d0  20 69 74 73 20 6c 65 6e  67 74 68 20 69 73 20 67  | its length is g|
0009e4e0  69 76 65 6e 2e 20 41 74  20 74 68 65 20 65 6e 64  |iven. At the end|
0009e4f0  20 6f 66 20 73 75 62 73  74 69 74 75 74 69 6f 6e  | of substitution|
0009e500  2c 20 61 6e 79 20 61 72  67 75 6d 65 6e 74 73 20  |, any arguments |
0009e510  61 66 74 65 72 20 74 68  65 20 68 69 67 68 65 73  |after the highes|
0009e520  74 20 6f 6e 65 20 6d 65  6e 74 69 6f 6e 65 64 20  |t one mentioned |
0009e530  69 6e 20 74 68 65 20 74  65 6d 70 6c 61 74 65 20  |in the template |
0009e540  73 74 72 69 6e 67 20 61  72 65 20 61 70 70 65 6e  |string are appen|
0009e550  64 65 64 20 74 6f 20 74  68 65 20 72 65 73 75 6c  |ded to the resul|
0009e560  74 20 73 74 72 69 6e 67  2e 20 54 6f 20 70 72 65  |t string. To pre|
0009e570  76 65 6e 74 20 74 68 69  73 20 73 65 74 20 74 68  |vent this set th|
0009e580  65 20 74 6f 70 20 62 69  74 20 6f 66 20 52 30 20  |e top bit of R0 |
0009e590  6f 6e 20 65 6e 74 72 79  2e 20 49 66 20 61 20 6e  |on entry. If a n|
0009e5a0  6f 6e 2d 65 78 69 73 74  69 6e 67 20 61 72 67 75  |on-existing argu|
0009e5b0  6d 65 6e 74 20 69 73 20  73 70 65 63 69 66 69 65  |ment is specifie|
0009e5c0  64 20 69 6e 20 74 68 65  20 74 65 6d 70 6c 61 74  |d in the templat|
0009e5d0  65 20 73 74 72 69 6e 67  2c 20 74 68 65 6e 20 61  |e string, then a|
0009e5e0  20 6e 75 6c 6c 20 73 74  72 69 6e 67 20 69 73 20  | null string is |
0009e5f0  73 75 62 73 74 69 74 75  74 65 64 2c 20 6e 6f 20  |substituted, no |
0009e600  65 72 72 6f 72 20 69 73  20 67 69 76 65 6e 2e 00  |error is given..|
0009e610  44 41 54 41 28 01 00 00  4f 53 5f 55 6e 75 73 65  |DATA(...OS_Unuse|
0009e620  64 53 57 49 20 20 28 26  31 39 29 0a 23 50 61 72  |dSWI  (&19).#Par|
0009e630  65 6e 74 20 4f 53 5f 0a  3d 3e 09 52 30 20 3d 09  |ent OS_.=>.R0 =.|
0009e640  61 64 64 72 65 73 73 20  6f 66 20 74 68 65 20 75  |address of the u|
0009e650  6e 75 73 65 64 20 53 57  49 20 68 61 6e 64 6c 65  |nused SWI handle|
0009e660  72 3b 20 6f 72 20 30 20  74 6f 20 72 65 61 64 0a  |r; or 0 to read.|
0009e670  3c 3d 09 52 30 20 3d 09  61 64 64 72 65 73 73 20  |<=.R0 =.address |
0009e680  6f 66 20 74 68 65 20 70  72 65 76 69 6f 75 73 20  |of the previous |
0009e690  55 6e 75 73 65 64 53 57  49 20 68 61 6e 64 6c 65  |UnusedSWI handle|
0009e6a0  72 0a 0a 54 68 69 73 20  73 65 74 73 20 75 70 20  |r..This sets up |
0009e6b0  74 68 65 20 61 64 64 72  65 73 73 20 6f 66 20 74  |the address of t|
0009e6c0  68 65 20 55 6e 75 73 65  64 53 57 49 20 68 61 6e  |he UnusedSWI han|
0009e6d0  64 6c 65 72 2c 20 62 75  74 20 69 74 27 73 20 6f  |dler, but it's o|
0009e6e0  62 73 6f 6c 65 74 65 20  61 6e 64 20 6f 6e 6c 79  |bsolete and only|
0009e6f0  20 6b 65 70 74 20 66 6f  72 20 62 61 63 6b 77 61  | kept for backwa|
0009e700  72 64 73 20 63 6f 6d 70  61 74 69 62 69 6c 69 74  |rds compatibilit|
0009e710  79 20 73 6f 20 75 73 65  20 3c 4f 53 5f 43 68 61  |y so use <OS_Cha|
0009e720  6e 67 65 45 6e 76 69 72  6f 6e 6d 65 6e 74 3e 20  |ngeEnvironment> |
0009e730  69 6e 73 74 65 61 64 2e  44 41 54 41 92 00 00 00  |instead.DATA....|
0009e740  53 63 61 6c 65 20 66 61  63 74 6f 72 73 0a 23 57  |Scale factors.#W|
0009e750  72 61 70 20 6f 66 66 0a  4f 66 66 73 65 74 09 43  |rap off.Offset.C|
0009e760  6f 6e 74 65 6e 74 73 0a  23 4c 69 6e 65 0a 30 09  |ontents.#Line.0.|
0009e770  78 20 6d 75 6c 74 69 70  6c 69 63 61 74 69 6f 6e  |x multiplication|
0009e780  20 66 61 63 74 6f 72 0a  34 09 79 20 6d 75 6c 74  | factor.4.y mult|
0009e790  69 70 6c 69 63 61 74 69  6f 6e 20 66 61 63 74 6f  |iplication facto|
0009e7a0  72 0a 38 09 78 20 64 69  76 69 73 69 6f 6e 20 66  |r.8.x division f|
0009e7b0  61 63 74 6f 72 0a 31 32  09 79 20 64 69 76 69 73  |actor.12.y divis|
0009e7c0  69 6f 6e 20 66 61 63 74  6f 72 00 00 44 41 54 41  |ion factor..DATA|
0009e7d0  53 02 00 00 4f 53 5f 43  6c 61 69 6d 50 72 6f 63  |S...OS_ClaimProc|
0009e7e0  65 73 73 6f 72 56 65 63  74 6f 72 20 20 28 26 36  |essorVector  (&6|
0009e7f0  39 29 20 28 33 2e 35 29  0a 23 50 61 72 65 6e 74  |9) (3.5).#Parent|
0009e800  20 4f 53 5f 0a 7b 2a 7d  4f 6e 20 63 6c 61 69 6d  | OS_.{*}On claim|
0009e810  20 3a 7b 2a 7d 0a 3d 3e  09 52 30 20 3d 09 3c 56  | :{*}.=>.R0 =.<V|
0009e820  65 63 74 6f 72 20 6e 75  6d 62 65 72 3d 3e 2e 76  |ector number=>.v|
0009e830  65 63 74 6f 72 73 3e 20  2b 20 32 35 36 0a 09 52  |ectors> + 256..R|
0009e840  31 20 3d 09 41 64 64 72  65 73 73 20 6f 66 20 72  |1 =.Address of r|
0009e850  65 70 6c 61 63 65 6d 65  6e 74 20 72 6f 75 74 69  |eplacement routi|
0009e860  6e 65 0a 3c 3d 09 52 31  20 3d 09 41 64 64 72 65  |ne.<=.R1 =.Addre|
0009e870  73 73 20 6f 66 20 6f 72  69 67 69 6e 61 6c 20 72  |ss of original r|
0009e880  6f 75 74 69 6e 65 0a 0a  7b 2a 7d 4f 6e 20 72 65  |outine..{*}On re|
0009e890  6c 65 61 73 65 20 3a 7b  2a 7d 0a 3d 3e 09 52 30  |lease :{*}.=>.R0|
0009e8a0  20 3d 09 3c 56 65 63 74  6f 72 20 6e 75 6d 62 65  | =.<Vector numbe|
0009e8b0  72 3d 3e 2e 76 65 63 74  6f 72 73 3e 0a 09 52 31  |r=>.vectors>..R1|
0009e8c0  20 3d 09 41 64 64 72 65  73 73 20 6f 66 20 6f 72  | =.Address of or|
0009e8d0  69 67 69 6e 61 6c 20 72  6f 75 74 69 6e 65 0a 09  |iginal routine..|
0009e8e0  52 32 20 3d 09 41 64 64  72 65 73 73 20 6f 66 20  |R2 =.Address of |
0009e8f0  6f 75 72 20 72 6f 75 74  69 6e 65 20 28 3f 3f 29  |our routine (??)|
0009e900  0a 0a 54 68 69 73 20 63  61 6c 6c 20 69 73 20 75  |..This call is u|
0009e910  73 65 64 20 74 6f 20 61  6c 6c 6f 77 20 6c 6f 77  |sed to allow low|
0009e920  2d 6c 65 76 65 6c 20 63  6f 64 65 20 74 6f 20 63  |-level code to c|
0009e930  6c 61 69 6d 20 74 68 65  20 41 52 4d 27 73 20 68  |laim the ARM's h|
0009e940  61 72 64 77 61 72 65 20  76 65 63 74 6f 72 73 20  |ardware vectors |
0009e950  77 68 69 63 68 20 61 72  65 20 63 61 6c 6c 65 64  |which are called|
0009e960  20 77 68 65 6e 20 69 6e  74 65 72 72 75 70 74 73  | when interrupts|
0009e970  20 61 6e 64 20 61 62 6f  72 74 73 20 6f 63 63 75  | and aborts occu|
0009e980  72 2e 0a 23 0a 23 53 75  62 70 61 67 65 20 76 65  |r..#.#Subpage ve|
0009e990  63 74 6f 72 73 0a 52 4f  33 2e 35 20 70 72 6f 63  |ctors.RO3.5 proc|
0009e9a0  65 73 73 6f 72 20 76 65  63 74 6f 72 73 0a 5c 23  |essor vectors.\#|
0009e9b0  09 56 65 63 74 6f 72 0a  23 6c 69 6e 65 0a 30 09  |.Vector.#line.0.|
0009e9c0  42 72 61 6e 63 68 20 74  68 72 6f 75 67 68 20 7a  |Branch through z|
0009e9d0  65 72 6f 0a 31 09 55 6e  64 65 66 69 6e 65 64 20  |ero.1.Undefined |
0009e9e0  69 6e 73 74 72 75 63 74  69 6f 6e 0a 32 09 53 57  |instruction.2.SW|
0009e9f0  49 20 65 78 65 63 75 74  65 64 0a 33 09 50 72 65  |I executed.3.Pre|
0009ea00  66 65 74 63 68 20 61 62  6f 72 74 0a 34 09 44 61  |fetch abort.4.Da|
0009ea10  74 61 20 61 62 6f 72 74  0a 36 09 49 52 51 0a 00  |ta abort.6.IRQ..|
0009ea20  44 41 54 41 85 00 00 00  4f 53 5f 52 65 73 65 74  |DATA....OS_Reset|
0009ea30  20 20 28 26 36 41 29 20  28 33 2e 35 29 0a 23 50  |  (&6A) (3.5).#P|
0009ea40  61 72 65 6e 74 20 4f 53  5f 0a 54 68 69 73 20 53  |arent OS_.This S|
0009ea50  57 49 20 64 6f 65 73 20  74 68 65 20 65 71 75 69  |WI does the equi|
0009ea60  76 61 6c 65 6e 74 20 6f  66 20 70 72 65 73 73 69  |valent of pressi|
0009ea70  6e 67 20 74 68 65 20 52  65 73 65 74 20 62 75 74  |ng the Reset but|
0009ea80  74 6f 6e 2e 20 55 73 65  20 77 69 74 68 20 7b 2a  |ton. Use with {*|
0009ea90  7d 65 78 74 72 65 6d 65  7b 2a 7d 20 63 61 75 74  |}extreme{*} caut|
0009eaa0  69 6f 6e 2e 0a 00 00 00  44 49 52 24 50 01 00 00  |ion.....DIR$P...|
0009eab0  50 01 00 00 f8 eb 09 00  48 ff ff ff 8d fe ed 1c  |P.......H.......|
0009eac0  8d 02 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
0009ead0  74 00 00 00 88 ee 09 00  46 fd ff ff 10 df 69 f5  |t.......F.....i.|
0009eae0  40 01 00 00 13 00 00 00  00 00 00 00 30 00 00 00  |@...........0...|
0009eaf0  c8 ef 09 00 46 fd ff ff  41 f0 90 e6 4c 0a 00 00  |....F...A...L...|
0009eb00  13 00 00 00 00 00 00 00  53 74 61 74 75 73 00 00  |........Status..|
0009eb10  14 fa 09 00 46 fd ff ff  f1 f3 69 f5 e6 00 00 00  |....F.....i.....|
0009eb20  13 00 00 00 00 00 00 00  31 00 00 00 fc fa 09 00  |........1.......|
0009eb30  46 fd ff ff 32 67 5d e6  ec 01 00 00 13 00 00 00  |F...2g].........|
0009eb40  00 00 00 00 46 6f 72 6d  61 74 00 00 e8 fc 09 00  |....Format......|
0009eb50  46 fd ff ff 2c 02 6a f5  a0 01 00 00 13 00 00 00  |F...,.j.........|
0009eb60  00 00 00 00 32 00 00 00  88 fe 09 00 47 fd ff ff  |....2.......G...|
0009eb70  7d 8d d8 7c 90 01 00 00  13 00 00 00 00 00 00 00  |}..|............|
0009eb80  33 00 00 00 18 00 0a 00  46 fd ff ff f9 7a 0e fb  |3.......F....z..|
0009eb90  f1 01 00 00 13 00 00 00  00 00 00 00 34 00 00 00  |............4...|
0009eba0  0c 02 0a 00 46 fd ff ff  87 26 6a f5 9b 00 00 00  |....F....&j.....|
0009ebb0  13 00 00 00 00 00 00 00  35 00 00 00 a8 02 0a 00  |........5.......|
0009ebc0  46 fd ff ff 72 2f 6a f5  99 00 00 00 13 00 00 00  |F...r/j.........|
0009ebd0  00 00 00 00 36 00 00 00  44 03 0a 00 46 fd ff ff  |....6...D...F...|
0009ebe0  20 cf 5d e6 a1 00 00 00  13 00 00 00 00 00 00 00  | .].............|
0009ebf0  53 70 65 65 64 73 00 00  44 41 54 41 8d 02 00 00  |Speeds..DATA....|
0009ec00  4f 53 5f 53 65 72 69 61  6c 4f 70 20 20 28 26 35  |OS_SerialOp  (&5|
0009ec10  37 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 0a 3d  |7).#Parent OS_.=|
0009ec20  3e 09 52 30 20 3d 09 3c  72 65 61 73 6f 6e 20 63  |>.R0 =.<reason c|
0009ec30  6f 64 65 3d 3e 2e 72 65  61 73 6f 6e 73 3e 0a 09  |ode=>.reasons>..|
0009ec40  6f 74 68 65 72 20 65 6e  74 72 79 20 63 6f 6e 64  |other entry cond|
0009ec50  69 74 69 6f 6e 73 20 64  65 70 65 6e 64 20 6f 6e  |itions depend on|
0009ec60  20 72 65 61 73 6f 6e 20  63 6f 64 65 0a 0a 3c 3d  | reason code..<=|
0009ec70  09 52 30 20 70 72 65 73  65 72 76 65 64 0a 09 6f  |.R0 preserved..o|
0009ec80  74 68 65 72 20 65 78 69  74 20 63 6f 6e 64 69 74  |ther exit condit|
0009ec90  69 6f 6e 73 20 64 65 70  65 6e 64 20 6f 6e 20 72  |ions depend on r|
0009eca0  65 61 73 6f 6e 20 63 6f  64 65 0a 0a 54 68 69 73  |eason code..This|
0009ecb0  20 63 61 6c 6c 20 69 73  20 6c 69 6b 65 20 3c 4f  | call is like <O|
0009ecc0  53 5f 42 79 74 65 3e 20  69 6e 20 74 68 61 74 20  |S_Byte> in that |
0009ecd0  69 74 20 69 73 20 61 20  73 69 6e 67 6c 65 20 63  |it is a single c|
0009ece0  61 6c 6c 20 77 69 74 68  20 6d 61 6e 79 20 6f 70  |all with many op|
0009ecf0  65 72 61 74 69 6f 6e 73  20 77 69 74 68 69 6e 20  |erations within |
0009ed00  69 74 2e 20 54 68 65 20  6f 70 65 72 61 74 69 6f  |it. The operatio|
0009ed10  6e 20 72 65 71 75 69 72  65 64 2c 20 6f 72 20 72  |n required, or r|
0009ed20  65 61 73 6f 6e 20 63 6f  64 65 2c 20 69 73 20 70  |eason code, is p|
0009ed30  61 73 73 65 64 20 69 6e  20 52 30 2e 0a 23 53 75  |assed in R0..#Su|
0009ed40  62 70 61 67 65 20 72 65  61 73 6f 6e 73 0a 4f 53  |bpage reasons.OS|
0009ed50  5f 53 65 72 69 61 6c 4f  70 20 72 65 61 73 6f 6e  |_SerialOp reason|
0009ed60  20 63 6f 64 65 73 0a 23  50 61 72 65 6e 74 20 4f  | codes.#Parent O|
0009ed70  53 5f 0a 52 30 20 3d 09  3c 30 20 52 65 61 64 2f  |S_.R0 =.<0 Read/|
0009ed80  77 72 69 74 65 20 73 65  72 69 61 6c 20 73 74 61  |write serial sta|
0009ed90  74 65 73 3d 3e 4f 53 5f  53 65 72 69 61 6c 4f 70  |tes=>OS_SerialOp|
0009eda0  30 3e 0a 09 3c 31 20 52  65 61 64 2f 77 72 69 74  |0>..<1 Read/writ|
0009edb0  65 20 64 61 74 61 20 66  6f 72 6d 61 74 3d 3e 4f  |e data format=>O|
0009edc0  53 5f 53 65 72 69 61 6c  4f 70 31 3e 0a 09 3c 32  |S_SerialOp1>..<2|
0009edd0  20 53 65 6e 64 20 62 72  65 61 6b 3d 3e 4f 53 5f  | Send break=>OS_|
0009ede0  53 65 72 69 61 6c 4f 70  32 3e 0a 09 3c 33 20 53  |SerialOp2>..<3 S|
0009edf0  65 6e 64 20 62 79 74 65  3d 3e 4f 53 5f 53 65 72  |end byte=>OS_Ser|
0009ee00  69 61 6c 4f 70 33 3e 0a  09 3c 34 20 47 65 74 20  |ialOp3>..<4 Get |
0009ee10  62 79 74 65 3d 3e 4f 53  5f 53 65 72 69 61 6c 4f  |byte=>OS_SerialO|
0009ee20  70 34 3e 0a 09 3c 35 20  52 65 61 64 2f 77 72 69  |p4>..<5 Read/wri|
0009ee30  74 65 20 72 65 63 65 69  76 65 20 62 61 75 64 20  |te receive baud |
0009ee40  72 61 74 65 3d 3e 4f 53  5f 53 65 72 69 61 6c 4f  |rate=>OS_SerialO|
0009ee50  70 35 3e 0a 09 3c 36 20  52 65 61 64 2f 77 72 69  |p5>..<6 Read/wri|
0009ee60  74 65 20 74 72 61 6e 73  6d 69 74 20 62 61 75 64  |te transmit baud|
0009ee70  20 72 61 74 65 3d 3e 4f  53 5f 53 65 72 69 61 6c  | rate=>OS_Serial|
0009ee80  4f 70 36 3e 0a 00 00 00  44 41 54 41 40 01 00 00  |Op6>....DATA@...|
0009ee90  4f 53 5f 53 65 72 69 61  6c 4f 70 20 30 0a 3d 3e  |OS_SerialOp 0.=>|
0009eea0  09 52 30 20 3d 09 30 20  28 72 65 61 73 6f 6e 20  |.R0 =.0 (reason |
0009eeb0  63 6f 64 65 29 0a 09 52  31 20 3d 09 45 4f 52 20  |code)..R1 =.EOR |
0009eec0  6d 61 73 6b 0a 09 52 32  20 3d 09 41 4e 44 20 6d  |mask..R2 =.AND m|
0009eed0  61 73 6b 0a 0a 3c 3d 09  52 30 20 70 72 65 73 65  |ask..<=.R0 prese|
0009eee0  72 76 65 64 0a 09 52 31  20 3d 09 6f 6c 64 20 76  |rved..R1 =.old v|
0009eef0  61 6c 75 65 20 6f 66 20  73 74 61 74 65 0a 09 52  |alue of state..R|
0009ef00  32 20 3d 09 6e 65 77 20  76 61 6c 75 65 20 6f 66  |2 =.new value of|
0009ef10  20 73 74 61 74 65 0a 0a  54 68 65 20 73 74 72 75  | state..The stru|
0009ef20  63 74 75 72 65 20 6f 66  20 74 68 69 73 20 63 61  |cture of this ca|
0009ef30  6c 6c 20 69 73 20 76 65  72 79 20 73 69 6d 69 6c  |ll is very simil|
0009ef40  61 72 20 74 6f 20 74 68  61 74 20 6f 66 20 4f 53  |ar to that of OS|
0009ef50  5f 42 79 74 65 27 73 20  62 65 74 77 65 65 6e 20  |_Byte's between |
0009ef60  26 41 36 20 61 6e 64 20  26 46 46 20 74 68 65 20  |&A6 and &FF the |
0009ef70  6e 65 77 20 73 74 61 74  65 20 69 73 20 64 65 74  |new state is det|
0009ef80  65 72 6d 69 6e 65 64 20  62 79 3a 0a 20 20 3c 4e  |ermined by:.  <N|
0009ef90  65 77 20 53 74 61 74 65  3d 3e 4f 53 5f 53 65 72  |ew State=>OS_Ser|
0009efa0  69 61 6c 4f 70 53 74 61  74 75 73 3e 20 3d 20 28  |ialOpStatus> = (|
0009efb0  4f 6c 64 20 73 74 61 74  65 20 41 4e 44 20 52 32  |Old state AND R2|
0009efc0  29 20 45 4f 52 20 52 31  44 41 54 41 4c 0a 00 00  |) EOR R1DATAL...|
0009efd0  53 65 72 69 61 6c 20 73  74 61 74 75 73 20 77 6f  |Serial status wo|
0009efe0  72 64 0a 42 69 74 09 54  79 70 65 09 56 61 6c 75  |rd.Bit.Type.Valu|
0009eff0  65 09 4d 65 61 6e 69 6e  67 0a 23 4c 69 6e 65 0a  |e.Meaning.#Line.|
0009f000  30 09 52 2f 57 09 30 09  4e 6f 20 73 6f 66 74 77  |0.R/W.0.No softw|
0009f010  61 72 65 20 63 6f 6e 74  72 6f 6c 2e 20 55 73 65  |are control. Use|
0009f020  20 52 54 53 20 68 61 6e  64 73 68 61 6b 69 6e 67  | RTS handshaking|
0009f030  20 69 66 20 62 69 74 20  35 20 69 73 20 63 6c 65  | if bit 5 is cle|
0009f040  61 72 0a 09 20 09 31 09  55 73 65 20 58 4f 4e 2f  |ar.. .1.Use XON/|
0009f050  58 4f 46 46 20 70 72 6f  74 6f 63 6f 6c 2e 20 42  |XOFF protocol. B|
0009f060  69 74 20 35 20 69 73 20  69 67 6e 6f 72 65 64 2e  |it 5 is ignored.|
0009f070  20 54 68 65 20 68 61 72  64 77 61 72 65 20 77 69  | The hardware wi|
0009f080  6c 6c 20 73 74 69 6c 6c  20 64 6f 20 43 54 53 20  |ll still do CTS |
0009f090  68 61 6e 64 73 68 61 6b  69 6e 67 20 28 69 65 20  |handshaking (ie |
0009f0a0  69 66 20 43 54 53 20 67  6f 65 73 20 6c 6f 77 2c  |if CTS goes low,|
0009f0b0  20 74 68 65 6e 20 74 72  61 6e 73 6d 69 73 73 69  | then transmissi|
0009f0c0  6f 6e 20 77 69 6c 6c 20  73 74 6f 70 29 2c 20 62  |on will stop), b|
0009f0d0  75 74 20 52 54 53 20 69  73 20 66 6f 72 63 65 64  |ut RTS is forced|
0009f0e0  20 74 6f 20 67 6f 20 6c  6f 77 2e 0a 09 20 09 0a  | to go low... ..|
0009f0f0  31 09 52 2f 57 09 30 09  55 73 65 20 74 68 65 20  |1.R/W.0.Use the |
0009f100  7e 44 43 44 20 62 69 74  2e 20 49 66 20 74 68 65  |~DCD bit. If the|
0009f110  20 7e 44 43 44 20 62 69  74 20 69 6e 20 74 68 65  | ~DCD bit in the|
0009f120  20 73 74 61 74 75 73 20  72 65 67 69 73 74 65 72  | status register|
0009f130  20 67 6f 65 73 20 68 69  67 68 2c 20 74 68 65 6e  | goes high, then|
0009f140  20 63 61 75 73 65 20 61  20 73 65 72 69 61 6c 20  | cause a serial |
0009f150  65 76 65 6e 74 2c 20 61  6e 64 20 64 6f 20 6e 6f  |event, and do no|
0009f160  74 20 65 6e 74 65 72 20  74 68 65 20 63 68 61 72  |t enter the char|
0009f170  20 69 6e 74 6f 20 74 68  65 20 62 75 66 66 65 72  | into the buffer|
0009f180  2e 0a 09 20 09 31 09 49  67 6e 6f 72 65 20 74 68  |... .1.Ignore th|
0009f190  65 20 7e 44 43 44 20 62  69 74 2e 20 4e 6f 74 65  |e ~DCD bit. Note|
0009f1a0  20 74 68 61 74 20 73 6f  6d 65 20 73 65 72 69 61  | that some seria|
0009f1b0  6c 20 63 68 69 70 73 20  28 47 54 45 20 61 6e 64  |l chips (GTE and|
0009f1c0  20 43 4d 44 29 20 68 61  76 65 20 72 65 63 65 70  | CMD) have recep|
0009f1d0  74 69 6f 6e 20 61 6e 64  20 74 72 61 6e 73 6d 69  |tion and transmi|
0009f1e0  73 73 69 6f 6e 20 70 72  6f 62 6c 65 6d 73 20 77  |ssion problems w|
0009f1f0  68 65 6e 20 74 68 69 73  20 62 69 74 20 69 73 20  |hen this bit is |
0009f200  31 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |1.              |
0009f210  20 20 20 0a 32 09 52 2f  57 09 30 09 55 73 65 20  |   .2.R/W.0.Use |
0009f220  74 68 65 20 7e 44 53 52  20 62 69 74 2e 20 49 66  |the ~DSR bit. If|
0009f230  20 74 68 65 20 7e 44 53  52 20 62 69 74 20 69 6e  | the ~DSR bit in|
0009f240  20 74 68 65 20 73 74 61  74 75 73 20 72 65 67 69  | the status regi|
0009f250  73 74 65 72 20 69 73 20  68 69 67 68 2c 20 74 68  |ster is high, th|
0009f260  65 6e 20 64 6f 20 6e 6f  74 20 74 72 61 6e 73 6d  |en do not transm|
0009f270  69 74 20 63 68 61 72 61  63 74 65 72 73 2e 0a 09  |it characters...|
0009f280  20 09 31 09 49 67 6e 6f  72 65 20 74 68 65 20 73  | .1.Ignore the s|
0009f290  74 61 74 65 20 6f 66 20  74 68 65 20 7e 44 53 52  |tate of the ~DSR|
0009f2a0  20 62 69 74 0a 20 20 20  20 20 20 20 20 20 20 20  | bit.           |
0009f2b0  20 20 20 20 20 20 0a 33  09 52 2f 57 09 30 09 44  |      .3.R/W.0.D|
0009f2c0  54 52 20 6f 6e 20 28 6e  6f 72 6d 61 6c 20 6f 70  |TR on (normal op|
0009f2d0  65 72 61 74 69 6f 6e 29  0a 09 20 09 31 09 44 54  |eration).. .1.DT|
0009f2e0  52 20 6f 66 66 20 28 6f  6e 20 36 35 35 31 20 73  |R off (on 6551 s|
0009f2f0  65 72 69 61 6c 20 63 68  69 70 73 2c 20 63 61 6e  |erial chips, can|
0009f300  6e 6f 74 20 75 73 65 20  73 65 72 69 61 6c 20 70  |not use serial p|
0009f310  6f 72 74 20 69 6e 20 74  68 69 73 20 73 74 61 74  |ort in this stat|
0009f320  65 29 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |e).             |
0009f330  20 20 20 20 0a 34 09 52  2f 57 09 30 09 55 73 65  |    .4.R/W.0.Use|
0009f340  20 74 68 65 20 7e 43 54  53 20 62 69 74 2e 20 49  | the ~CTS bit. I|
0009f350  66 20 74 68 65 20 7e 43  54 53 20 62 69 74 20 69  |f the ~CTS bit i|
0009f360  6e 20 74 68 65 20 73 74  61 74 75 73 20 72 65 67  |n the status reg|
0009f370  69 73 74 65 72 20 69 73  20 68 69 67 68 2c 20 74  |ister is high, t|
0009f380  68 65 6e 20 64 6f 20 6e  6f 74 20 74 72 61 6e 73  |hen do not trans|
0009f390  6d 69 74 20 63 68 61 72  61 63 74 65 72 73 2e 0a  |mit characters..|
0009f3a0  09 20 09 31 09 49 67 6e  6f 72 65 20 74 68 65 20  |. .1.Ignore the |
0009f3b0  7e 43 54 53 20 62 69 74  20 28 6e 6f 74 20 73 75  |~CTS bit (not su|
0009f3c0  70 70 6f 72 74 65 64 20  62 79 20 74 68 65 20 36  |pported by the 6|
0009f3d0  35 35 31 20 73 65 72 69  61 6c 20 63 68 69 70 73  |551 serial chips|
0009f3e0  29 0a 0a 35 09 52 2f 57  09 20 09 54 68 69 73 20  |)..5.R/W. .This |
0009f3f0  62 69 74 20 69 73 20 69  67 6e 6f 72 65 64 2c 20  |bit is ignored, |
0009f400  69 66 20 62 69 74 20 30  20 73 65 74 3a 0a 09 20  |if bit 0 set:.. |
0009f410  09 30 09 55 73 65 20 52  54 53 20 68 61 6e 64 73  |.0.Use RTS hands|
0009f420  68 61 6b 69 6e 67 2e 0a  09 20 09 31 09 44 6f 20  |haking... .1.Do |
0009f430  6e 6f 74 20 75 73 65 20  52 54 53 20 68 61 6e 64  |not use RTS hand|
0009f440  73 68 61 6b 69 6e 67 2e  0a 20 20 20 20 20 20 20  |shaking..       |
0009f450  20 20 20 20 20 20 20 20  20 20 0a 36 09 52 2f 57  |          .6.R/W|
0009f460  09 30 09 49 6e 70 75 74  20 69 73 20 73 75 70 70  |.0.Input is supp|
0009f470  72 65 73 73 65 64 2e 0a  09 20 09 31 09 49 6e 70  |ressed... .1.Inp|
0009f480  75 74 20 69 73 20 6e 6f  74 20 73 75 70 70 72 65  |ut is not suppre|
0009f490  73 73 65 64 2e 0a 20 20  20 20 20 20 20 20 20 20  |ssed..          |
0009f4a0  20 20 20 20 20 20 20 0a  37 09 52 2f 57 09 20 09  |       .7.R/W. .|
0009f4b0  55 73 65 72 73 20 73 68  6f 75 6c 64 20 6f 6e 6c  |Users should onl|
0009f4c0  79 20 6d 6f 64 69 66 79  20 74 68 69 73 20 62 69  |y modify this bi|
0009f4d0  74 20 69 66 20 52 54 53  20 68 61 6e 64 73 68 61  |t if RTS handsha|
0009f4e0  6b 69 6e 67 20 69 73 20  6e 6f 74 20 69 6e 20 75  |king is not in u|
0009f4f0  73 65 3a 0a 09 20 09 30  09 52 54 53 20 63 6f 6e  |se:.. .0.RTS con|
0009f500  74 72 6f 6c 6c 65 64 20  62 79 20 68 61 6e 64 73  |trolled by hands|
0009f510  68 61 6b 69 6e 67 20 73  79 73 74 65 6d 20 28 6c  |haking system (l|
0009f520  6f 77 20 69 66 20 6e 6f  20 52 54 53 20 68 61 6e  |ow if no RTS han|
0009f530  64 73 68 61 6b 69 6e 67  29 0a 09 20 09 31 09 52  |dshaking).. .1.R|
0009f540  54 53 20 68 69 67 68 0a  20 20 20 20 20 20 20 20  |TS high.        |
0009f550  20 20 20 20 20 20 20 20  20 0a 38 2d 31 35 09 52  |         .8-15.R|
0009f560  4f 09 20 09 54 68 65 73  65 20 62 69 74 73 20 61  |O. .These bits a|
0009f570  72 65 20 72 65 73 65 72  76 65 64 20 66 6f 72 20  |re reserved for |
0009f580  66 75 74 75 72 65 20 65  78 70 61 6e 73 69 6f 6e  |future expansion|
0009f590  73 3b 20 64 6f 20 6e 6f  74 20 6d 6f 64 69 66 79  |s; do not modify|
0009f5a0  20 74 68 65 6d 2e 0a 0a  31 36 09 52 4f 09 30 09  | them...16.RO.0.|
0009f5b0  58 4f 46 46 20 6e 6f 74  20 72 65 63 65 69 76 65  |XOFF not receive|
0009f5c0  64 2e 0a 09 20 09 31 09  58 4f 46 46 20 68 61 73  |d... .1.XOFF has|
0009f5d0  20 62 65 65 6e 20 72 65  63 65 69 76 65 64 2e 20  | been received. |
0009f5e0  54 72 61 6e 73 6d 69 73  73 69 6f 6e 20 69 73 20  |Transmission is |
0009f5f0  73 74 6f 70 70 65 64 20  62 79 20 74 68 69 73 20  |stopped by this |
0009f600  6f 63 63 75 72 65 6e 63  65 2e 0a 20 20 20 20 20  |occurence..     |
0009f610  20 20 20 20 20 20 20 20  20 20 20 20 0a 31 37 09  |            .17.|
0009f620  52 4f 09 30 09 54 68 65  20 6f 74 68 65 72 20 65  |RO.0.The other e|
0009f630  6e 64 20 69 73 20 69 6e  74 65 6e 64 65 64 20 74  |nd is intended t|
0009f640  6f 20 62 65 20 69 6e 20  58 4f 4e 20 73 74 61 74  |o be in XON stat|
0009f650  65 2e 0a 09 20 09 31 09  54 68 65 20 6f 74 68 65  |e... .1.The othe|
0009f660  72 20 65 6e 64 20 69 73  20 69 6e 74 65 6e 64 65  |r end is intende|
0009f670  64 20 74 6f 20 62 65 20  69 6e 20 58 4f 46 46 20  |d to be in XOFF |
0009f680  73 74 61 74 65 2e 20 57  68 65 6e 20 74 68 69 73  |state. When this|
0009f690  20 62 69 74 20 69 73 20  73 65 74 2c 20 74 68 65  | bit is set, the|
0009f6a0  6e 20 69 74 20 6d 65 61  6e 73 20 74 68 61 74 20  |n it means that |
0009f6b0  61 6e 20 58 4f 46 46 20  63 68 61 72 61 63 74 65  |an XOFF characte|
0009f6c0  72 20 68 61 73 20 62 65  65 6e 20 73 65 6e 74 20  |r has been sent |
0009f6d0  61 6e 64 20 69 74 20 77  69 6c 6c 20 62 65 20 63  |and it will be c|
0009f6e0  6c 65 61 72 65 64 20 77  68 65 6e 20 61 6e 20 58  |leared when an X|
0009f6f0  4f 4e 20 69 73 20 73 65  6e 74 20 62 79 20 74 68  |ON is sent by th|
0009f700  65 20 62 75 66 66 65 72  69 6e 67 20 73 6f 66 74  |e buffering soft|
0009f710  77 61 72 65 2e 20 4e 6f  74 65 20 74 68 61 74 20  |ware. Note that |
0009f720  74 68 65 20 66 61 63 74  20 74 68 61 74 20 74 68  |the fact that th|
0009f730  69 73 20 62 69 74 20 69  73 20 73 65 74 20 64 6f  |is bit is set do|
0009f740  65 73 6e 27 74 20 69 6d  70 6c 79 20 74 68 61 74  |esn't imply that|
0009f750  20 74 68 65 20 6f 74 68  65 72 20 65 6e 64 20 68  | the other end h|
0009f760  61 73 20 72 65 63 65 69  76 65 64 20 61 6e 20 58  |as received an X|
0009f770  4f 46 46 20 79 65 74 2e  0a 20 20 20 20 20 20 20  |OFF yet..       |
0009f780  20 20 20 20 20 20 20 20  20 20 0a 31 38 09 52 4f  |          .18.RO|
0009f790  09 30 09 54 68 65 20 7e  44 43 44 20 62 69 74 20  |.0.The ~DCD bit |
0009f7a0  69 73 20 6c 6f 77 2c 20  69 65 20 63 61 72 72 69  |is low, ie carri|
0009f7b0  65 72 20 70 72 65 73 65  6e 74 2e 0a 09 20 09 31  |er present... .1|
0009f7c0  09 54 68 65 20 7e 44 43  44 20 62 69 74 20 69 73  |.The ~DCD bit is|
0009f7d0  20 68 69 67 68 2c 20 69  65 20 6e 6f 20 63 61 72  | high, ie no car|
0009f7e0  72 69 65 72 2e 0a 20 20  20 20 20 20 20 20 20 20  |rier..          |
0009f7f0  20 20 20 20 20 20 20 0a  31 39 09 52 4f 09 30 09  |       .19.RO.0.|
0009f800  54 68 65 20 7e 44 53 52  20 62 69 74 20 69 73 20  |The ~DSR bit is |
0009f810  6c 6f 77 2c 20 69 65 20  27 72 65 61 64 79 27 20  |low, ie 'ready' |
0009f820  73 74 61 74 65 2e 0a 09  20 09 31 09 54 68 65 20  |state... .1.The |
0009f830  7e 44 53 52 20 62 69 74  20 69 73 20 68 69 67 68  |~DSR bit is high|
0009f840  2c 20 69 65 20 27 6e 6f  74 20 72 65 61 64 79 27  |, ie 'not ready'|
0009f850  20 73 74 61 74 65 2e 0a  20 20 20 20 20 20 20 20  | state..        |
0009f860  20 20 20 20 20 20 20 20  20 0a 32 30 09 52 4f 09  |         .20.RO.|
0009f870  30 09 54 68 65 20 72 69  6e 67 20 69 6e 64 69 63  |0.The ring indic|
0009f880  61 74 6f 72 20 62 69 74  20 69 73 20 6c 6f 77 2e  |ator bit is low.|
0009f890  0a 09 20 09 31 09 54 68  65 20 72 69 6e 67 20 69  |.. .1.The ring i|
0009f8a0  6e 64 69 63 61 74 6f 72  20 62 69 74 20 69 73 20  |ndicator bit is |
0009f8b0  68 69 67 68 2e 0a 20 20  20 20 20 20 20 20 20 20  |high..          |
0009f8c0  20 20 20 20 20 20 20 0a  32 31 09 52 4f 09 30 09  |       .21.RO.0.|
0009f8d0  44 6f 20 6e 6f 74 20 73  65 6e 64 20 62 72 65 61  |Do not send brea|
0009f8e0  6b 2e 0a 09 20 09 31 09  53 65 6e 64 20 62 72 65  |k... .1.Send bre|
0009f8f0  61 6b 2e 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ak..            |
0009f900  20 20 20 20 20 0a 32 32  09 52 4f 09 30 09 55 73  |     .22.RO.0.Us|
0009f910  65 72 20 68 61 73 20 6e  6f 74 20 6d 61 6e 75 61  |er has not manua|
0009f920  6c 6c 79 20 73 65 6e 74  20 61 6e 20 58 4f 46 46  |lly sent an XOFF|
0009f930  2e 0a 09 20 09 31 09 55  73 65 72 20 68 61 73 20  |... .1.User has |
0009f940  6d 61 6e 75 61 6c 6c 79  20 73 65 6e 74 20 61 6e  |manually sent an|
0009f950  20 58 4f 46 46 2e 0a 20  20 20 20 20 20 20 20 20  | XOFF..         |
0009f960  20 20 20 20 20 20 20 20  0a 32 33 09 52 4f 09 30  |        .23.RO.0|
0009f970  09 53 70 61 63 65 20 69  6e 20 72 65 63 65 69 76  |.Space in receiv|
0009f980  65 20 62 75 66 66 65 72  20 61 62 6f 76 65 20 74  |e buffer above t|
0009f990  72 65 73 68 6f 6c 64 2e  0a 09 20 09 31 09 53 70  |reshold... .1.Sp|
0009f9a0  61 63 65 20 69 6e 20 72  65 63 65 69 76 65 20 62  |ace in receive b|
0009f9b0  75 66 66 65 72 20 62 65  6c 6f 77 20 74 72 65 73  |uffer below tres|
0009f9c0  68 6f 6c 64 2e 0a 0a 32  34 2d 33 31 09 52 4f 09  |hold...24-31.RO.|
0009f9d0  20 09 54 68 65 73 65 20  62 69 74 73 20 61 72 65  | .These bits are|
0009f9e0  20 72 65 73 65 72 76 65  64 20 66 6f 72 20 66 75  | reserved for fu|
0009f9f0  74 75 72 65 20 65 78 70  61 6e 73 69 6f 6e 73 3b  |ture expansions;|
0009fa00  20 64 6f 20 6e 6f 74 20  6d 6f 64 69 66 79 20 74  | do not modify t|
0009fa10  68 65 6d 2e 44 41 54 41  e6 00 00 00 4f 53 5f 53  |hem.DATA....OS_S|
0009fa20  65 72 69 61 6c 4f 70 20  31 0a 3d 3e 09 52 30 20  |erialOp 1.=>.R0 |
0009fa30  3d 09 31 20 28 72 65 61  73 6f 6e 20 63 6f 64 65  |=.1 (reason code|
0009fa40  29 0a 09 52 31 20 3d 09  2d 31 20 74 6f 20 72 65  |)..R1 =.-1 to re|
0009fa50  61 64 2c 20 6f 72 20 6e  65 77 20 3c 66 6f 72 6d  |ad, or new <form|
0009fa60  61 74 3d 3e 4f 53 5f 53  65 72 69 61 6c 4f 70 46  |at=>OS_SerialOpF|
0009fa70  6f 72 6d 61 74 3e 20 76  61 6c 75 65 0a 0a 3c 3d  |ormat> value..<=|
0009fa80  09 52 30 20 70 72 65 73  65 72 76 65 64 0a 09 52  |.R0 preserved..R|
0009fa90  31 20 3d 09 6f 6c 64 20  66 6f 72 6d 61 74 20 76  |1 =.old format v|
0009faa0  61 6c 75 65 0a 0a 54 68  69 73 20 63 61 6c 6c 20  |alue..This call |
0009fab0  73 65 74 73 20 74 68 65  20 65 6e 63 6f 64 69 6e  |sets the encodin|
0009fac0  67 20 6f 66 20 63 68 61  72 61 63 74 65 72 73 20  |g of characters |
0009fad0  77 68 65 6e 20 73 65 6e  74 20 61 6e 64 20 72 65  |when sent and re|
0009fae0  63 65 69 76 65 64 20 6f  6e 20 74 68 65 20 73 65  |ceived on the se|
0009faf0  72 69 61 6c 20 6c 69 6e  65 2e 00 00 44 41 54 41  |rial line...DATA|
0009fb00  ec 01 00 00 53 65 72 69  61 6c 20 64 61 74 61 20  |....Serial data |
0009fb10  74 72 61 6e 73 66 65 72  20 77 6f 72 64 0a 42 69  |transfer word.Bi|
0009fb20  74 09 41 63 63 65 73 73  09 56 61 6c 75 65 09 4d  |t.Access.Value.M|
0009fb30  65 61 6e 69 6e 67 0a 23  6c 69 6e 65 0a 30 2c 31  |eaning.#line.0,1|
0009fb40  09 52 2f 57 09 30 09 38  20 62 69 74 20 77 6f 72  |.R/W.0.8 bit wor|
0009fb50  64 0a 09 20 09 31 09 37  20 62 69 74 20 77 6f 72  |d.. .1.7 bit wor|
0009fb60  64 0a 09 20 09 32 09 36  20 62 69 74 20 77 6f 72  |d.. .2.6 bit wor|
0009fb70  64 0a 09 20 09 33 09 35  20 62 69 74 20 77 6f 72  |d.. .3.5 bit wor|
0009fb80  64 0a 0a 32 09 52 2f 57  09 30 09 31 20 73 74 6f  |d..2.R/W.0.1 sto|
0009fb90  70 20 62 69 74 0a 09 20  09 31 09 32 20 73 74 6f  |p bit.. .1.2 sto|
0009fba0  70 20 62 69 74 73 20 69  6e 20 6d 6f 73 74 20 63  |p bits in most c|
0009fbb0  61 73 65 73 2e 0a 09 20  09 20 09 31 20 73 74 6f  |ases... . .1 sto|
0009fbc0  70 20 62 69 74 20 69 66  20 38 20 62 69 74 20 77  |p bit if 8 bit w|
0009fbd0  6f 72 64 20 77 69 74 68  20 70 61 72 69 74 79 2e  |ord with parity.|
0009fbe0  0a 09 20 09 20 09 31 2e  35 20 73 74 6f 70 20 62  |.. . .1.5 stop b|
0009fbf0  69 74 73 20 69 66 20 35  20 62 69 74 20 77 6f 72  |its if 5 bit wor|
0009fc00  64 20 77 69 74 68 6f 75  74 20 70 61 72 69 74 79  |d without parity|
0009fc10  0a 0a 33 09 52 2f 57 09  30 09 70 61 72 69 74 79  |..3.R/W.0.parity|
0009fc20  20 64 69 73 61 62 6c 65  64 2e 0a 09 20 09 31 09  | disabled... .1.|
0009fc30  70 61 72 69 74 79 20 65  6e 61 62 6c 65 64 2e 0a  |parity enabled..|
0009fc40  0a 34 2c 35 09 52 2f 57  09 30 09 6f 64 64 20 20  |.4,5.R/W.0.odd  |
0009fc50  70 61 72 69 74 79 0a 09  20 09 31 09 65 76 65 6e  |parity.. .1.even|
0009fc60  20 70 61 72 69 74 79 0a  09 20 09 32 09 70 61 72  | parity.. .2.par|
0009fc70  69 74 79 20 61 6c 77 61  79 73 20 31 20 6f 6e 20  |ity always 1 on |
0009fc80  54 58 20 61 6e 64 20 69  67 6e 6f 72 65 64 20 6f  |TX and ignored o|
0009fc90  6e 20 52 58 0a 09 20 09  33 09 70 61 72 69 74 79  |n RX.. .3.parity|
0009fca0  20 61 6c 77 61 79 73 20  30 20 6f 6e 20 54 58 20  | always 0 on TX |
0009fcb0  61 6e 64 20 69 67 6e 6f  72 65 64 20 6f 6e 20 52  |and ignored on R|
0009fcc0  58 0a 0a 36 2d 33 31 09  20 09 20 09 72 65 73 65  |X..6-31. . .rese|
0009fcd0  72 76 65 64 20 6d 75 73  74 20 62 65 20 73 65 74  |rved must be set|
0009fce0  20 74 6f 20 7a 65 72 6f  44 41 54 41 a0 01 00 00  | to zeroDATA....|
0009fcf0  4f 53 5f 53 65 72 69 61  6c 4f 70 20 32 0a 3d 3e  |OS_SerialOp 2.=>|
0009fd00  09 52 30 20 3d 09 32 20  28 72 65 61 73 6f 6e 20  |.R0 =.2 (reason |
0009fd10  63 6f 64 65 29 0a 09 52  31 20 3d 09 6c 65 6e 67  |code)..R1 =.leng|
0009fd20  74 68 20 6f 66 20 62 72  65 61 6b 20 69 6e 20 63  |th of break in c|
0009fd30  65 6e 74 69 73 65 63 6f  6e 64 73 0a 0a 3c 3d 09  |entiseconds..<=.|
0009fd40  52 30 2c 52 31 20 70 72  65 73 65 72 76 65 64 0a  |R0,R1 preserved.|
0009fd50  0a 54 68 69 73 20 63 61  6c 6c 20 73 65 74 73 20  |.This call sets |
0009fd60  74 68 65 20 41 43 49 41  20 74 6f 20 74 72 61 6e  |the ACIA to tran|
0009fd70  73 6d 69 74 20 61 20 62  72 65 61 6b 2c 20 74 68  |smit a break, th|
0009fd80  65 6e 20 77 61 69 74 73  20 52 31 20 63 65 6e 74  |en waits R1 cent|
0009fd90  69 73 65 63 6f 6e 64 73  20 62 65 66 6f 72 65 20  |iseconds before |
0009fda0  72 65 73 65 74 74 69 6e  67 20 69 74 20 74 6f 20  |resetting it to |
0009fdb0  6e 6f 72 6d 61 6c 2e 20  41 6e 79 20 63 68 61 72  |normal. Any char|
0009fdc0  61 63 74 65 72 20 62 65  69 6e 67 20 74 72 61 6e  |acter being tran|
0009fdd0  73 6d 69 74 74 65 64 20  61 74 20 74 68 65 20 74  |smitted at the t|
0009fde0  69 6d 65 20 74 68 65 20  63 61 6c 6c 20 69 73 20  |ime the call is |
0009fdf0  6d 61 64 65 20 6d 61 79  20 62 65 20 67 61 72 62  |made may be garb|
0009fe00  6c 65 64 2e 20 41 66 74  65 72 20 73 65 6e 64 69  |led. After sendi|
0009fe10  6e 67 20 74 68 65 20 62  72 65 61 6b 20 74 68 65  |ng the break the|
0009fe20  20 74 72 61 6e 73 6d 69  74 20 70 72 6f 63 65 73  | transmit proces|
0009fe30  73 20 69 73 20 65 69 74  68 65 72 20 61 77 61 6b  |s is either awak|
0009fe40  65 6e 65 64 20 69 66 20  74 68 65 20 62 75 66 66  |ened if the buff|
0009fe50  65 72 20 69 73 20 6e 6f  74 20 65 6d 70 74 79 2c  |er is not empty,|
0009fe60  20 6f 72 20 6d 61 64 65  20 64 6f 72 6d 61 6e 74  | or made dormant|
0009fe70  20 69 66 20 74 68 65 20  62 75 66 66 65 72 20 69  | if the buffer i|
0009fe80  73 20 65 6d 70 74 79 2e  44 41 54 41 90 01 00 00  |s empty.DATA....|
0009fe90  4f 53 5f 53 65 72 69 61  6c 4f 70 20 33 0a 3d 3e  |OS_SerialOp 3.=>|
0009fea0  09 52 30 20 3d 09 33 20  28 72 65 61 73 6f 6e 20  |.R0 =.3 (reason |
0009feb0  63 6f 64 65 29 0a 09 52  31 20 3d 09 63 68 61 72  |code)..R1 =.char|
0009fec0  61 63 74 65 72 20 74 6f  20 62 65 20 73 65 6e 74  |acter to be sent|
0009fed0  0a 0a 3c 3d 09 52 30 2c  52 31 20 70 72 65 73 65  |..<=.R0,R1 prese|
0009fee0  72 76 65 64 0a 09 43 20  63 6c 65 61 72 20 69 66  |rved..C clear if|
0009fef0  20 63 68 61 72 61 63 74  65 72 20 77 61 73 20 73  | character was s|
0009ff00  65 6e 74 2c 20 6f 72 20  73 65 74 20 69 66 20 63  |ent, or set if c|
0009ff10  68 61 72 61 63 74 65 72  20 77 61 73 20 6e 6f 74  |haracter was not|
0009ff20  20 73 65 6e 74 20 28 69  65 20 74 68 65 20 62 75  | sent (ie the bu|
0009ff30  66 66 65 72 20 77 61 73  20 66 75 6c 6c 29 0a 0a  |ffer was full)..|
0009ff40  54 68 69 73 20 63 61 6c  6c 20 70 75 74 73 20 61  |This call puts a|
0009ff50  20 63 68 61 72 61 63 74  65 72 20 69 6e 20 74 68  | character in th|
0009ff60  65 20 73 65 72 69 61 6c  20 6f 75 74 70 75 74 20  |e serial output |
0009ff70  62 75 66 66 65 72 2c 20  61 6e 64 20 72 65 2d 65  |buffer, and re-e|
0009ff80  6e 61 62 6c 65 73 20 74  68 65 20 74 72 61 6e 73  |nables the trans|
0009ff90  6d 69 74 20 69 6e 74 65  72 72 75 70 74 20 69 66  |mit interrupt if|
0009ffa0  20 69 74 20 68 61 64 20  62 65 65 6e 20 64 69 73  | it had been dis|
0009ffb0  61 62 6c 65 64 20 62 79  20 52 49 53 43 20 4f 53  |abled by RISC OS|
0009ffc0  2e 20 49 66 20 74 68 65  20 73 65 72 69 61 6c 20  |. If the serial |
0009ffd0  6f 75 74 70 75 74 20 62  75 66 66 65 72 20 69 73  |output buffer is|
0009ffe0  20 66 75 6c 6c 2c 20 74  68 65 20 63 61 6c 6c 20  | full, the call |
0009fff0  72 65 74 75 72 6e 73 20  69 6d 6d 65 64 69 61 74  |returns immediat|
000a0000  65 6c 79 20 77 69 74 68  20 74 68 65 20 43 20 66  |ely with the C f|
000a0010  6c 61 67 20 73 65 74 2e  44 41 54 41 f1 01 00 00  |lag set.DATA....|
000a0020  4f 53 5f 53 65 72 69 61  6c 4f 70 20 34 0a 3d 3e  |OS_SerialOp 4.=>|
000a0030  09 52 30 20 3d 09 34 20  28 72 65 61 73 6f 6e 20  |.R0 =.4 (reason |
000a0040  63 6f 64 65 29 0a 0a 3c  3d 09 52 30 20 70 72 65  |code)..<=.R0 pre|
000a0050  73 65 76 65 64 0a 09 52  31 20 3d 09 63 68 61 72  |seved..R1 =.char|
000a0060  61 63 74 65 72 20 72 65  63 65 69 76 65 64 20 28  |acter received (|
000a0070  69 66 20 43 20 66 6c 61  67 20 63 6c 65 61 72 65  |if C flag cleare|
000a0080  64 29 2c 20 6f 72 20 70  72 65 73 65 72 76 65 64  |d), or preserved|
000a0090  20 28 69 66 20 43 20 66  6c 61 67 20 73 65 74 20  | (if C flag set |
000a00a0  2d 20 69 65 20 6e 6f 20  63 68 61 72 61 63 74 65  |- ie no characte|
000a00b0  72 20 61 76 61 69 6c 61  62 6c 65 20 69 6e 20 62  |r available in b|
000a00c0  75 66 66 65 72 20 74 6f  20 72 65 61 64 29 0a 0a  |uffer to read)..|
000a00d0  54 68 69 73 20 63 61 6c  6c 20 72 65 6d 6f 76 65  |This call remove|
000a00e0  73 20 61 20 63 68 61 72  61 63 74 65 72 20 66 72  |s a character fr|
000a00f0  6f 6d 20 74 68 65 20 73  65 72 69 61 6c 20 69 6e  |om the serial in|
000a0100  70 75 74 20 62 75 66 66  65 72 20 69 66 20 6f 6e  |put buffer if on|
000a0110  65 20 69 73 20 70 72 65  73 65 6e 74 2e 20 49 66  |e is present. If|
000a0120  20 72 65 6d 6f 76 69 6e  67 20 61 20 63 68 61 72  | removing a char|
000a0130  61 63 74 65 72 20 6c 65  61 76 65 73 20 74 68 65  |acter leaves the|
000a0140  20 69 6e 70 75 74 20 62  75 66 66 65 72 20 77 69  | input buffer wi|
000a0150  74 68 20 6d 6f 72 65 20  66 72 65 65 20 73 70 61  |th more free spa|
000a0160  63 65 20 74 68 61 6e 20  61 72 65 20 73 70 65 63  |ce than are spec|
000a0170  69 66 69 65 64 20 62 79  20 4f 53 5f 42 79 74 65  |ified by OS_Byte|
000a0180  20 32 30 33 2c 20 74 68  65 6e 20 74 68 65 20 74  | 203, then the t|
000a0190  72 61 6e 73 6d 69 74 74  69 6e 67 20 64 65 76 69  |ransmitting devi|
000a01a0  63 65 20 69 73 20 72 65  2d 65 6e 61 62 6c 65 64  |ce is re-enabled|
000a01b0  20 69 6e 20 74 68 65 20  77 61 79 20 73 70 65 63  | in the way spec|
000a01c0  69 66 69 65 64 20 62 79  20 74 68 65 20 73 65 72  |ified by the ser|
000a01d0  69 61 6c 20 70 6f 72 74  20 73 74 61 74 65 20 28  |ial port state (|
000a01e0  61 73 20 73 65 74 20 62  79 20 3c 4f 53 5f 53 65  |as set by <OS_Se|
000a01f0  72 69 61 6c 4f 70 20 30  3d 3e 4f 53 5f 53 65 72  |rialOp 0=>OS_Ser|
000a0200  69 61 6c 4f 70 30 3e 29  2e 00 00 00 44 41 54 41  |ialOp0>)....DATA|
000a0210  9b 00 00 00 4f 53 5f 53  65 72 69 61 6c 4f 70 20  |....OS_SerialOp |
000a0220  35 0a 3d 3e 09 52 30 20  3d 09 35 20 28 72 65 61  |5.=>.R0 =.5 (rea|
000a0230  73 6f 6e 20 63 6f 64 65  29 0a 09 52 31 20 3d 09  |son code)..R1 =.|
000a0240  2d 31 20 74 6f 20 72 65  61 64 2c 20 6f 72 20 30  |-1 to read, or 0|
000a0250  2d 31 35 20 74 6f 20 73  65 74 20 74 6f 20 61 20  |-15 to set to a |
000a0260  3c 76 61 6c 75 65 3d 3e  4f 53 5f 53 65 72 69 61  |<value=>OS_Seria|
000a0270  6c 4f 70 53 70 65 65 64  73 3e 0a 0a 3c 3d 09 52  |lOpSpeeds>..<=.R|
000a0280  30 20 70 72 65 73 65 72  76 65 64 0a 09 52 31 20  |0 preserved..R1 |
000a0290  3d 09 6f 6c 64 20 72 65  63 65 69 76 65 20 62 61  |=.old receive ba|
000a02a0  75 64 20 72 61 74 65 00  44 41 54 41 99 00 00 00  |ud rate.DATA....|
000a02b0  4f 53 5f 53 65 72 69 61  6c 4f 70 20 36 0a 3d 3e  |OS_SerialOp 6.=>|
000a02c0  09 52 30 20 3d 09 36 20  28 72 65 61 73 6f 6e 20  |.R0 =.6 (reason |
000a02d0  63 6f 64 65 29 0a 09 52  31 20 3d 09 2d 31 20 74  |code)..R1 =.-1 t|
000a02e0  6f 20 72 65 61 64 2c 20  6f 72 20 30 2d 31 35 20  |o read, or 0-15 |
000a02f0  74 6f 20 73 65 74 20 61  20 3c 76 61 6c 75 65 3d  |to set a <value=|
000a0300  3e 4f 53 5f 53 65 72 69  61 6c 4f 70 53 70 65 65  |>OS_SerialOpSpee|
000a0310  64 73 3e 0a 0a 3c 3d 09  52 30 20 70 72 65 73 65  |ds>..<=.R0 prese|
000a0320  72 76 65 64 0a 09 52 31  20 3d 09 6f 6c 64 20 74  |rved..R1 =.old t|
000a0330  72 61 6e 73 6d 69 74 20  62 61 75 64 20 72 61 74  |ransmit baud rat|
000a0340  65 00 00 00 44 41 54 41  a1 00 00 00 42 61 75 64  |e...DATA....Baud|
000a0350  20 72 61 74 65 20 63 6f  64 65 73 0a 52 31 09 42  | rate codes.R1.B|
000a0360  61 75 64 20 72 61 74 65  0a 23 4c 69 6e 65 0a 30  |aud rate.#Line.0|
000a0370  09 39 36 30 30 20 0a 31  09 37 35 20 0a 32 09 31  |.9600 .1.75 .2.1|
000a0380  35 30 20 0a 33 09 33 30  30 20 0a 34 09 31 32 30  |50 .3.300 .4.120|
000a0390  30 20 0a 35 09 32 34 30  30 20 0a 36 09 34 38 30  |0 .5.2400 .6.480|
000a03a0  30 20 0a 37 09 39 36 30  30 0a 38 09 31 39 32 30  |0 .7.9600.8.1920|
000a03b0  30 0a 39 09 35 30 0a 31  30 09 31 31 30 0a 31 31  |0.9.50.10.110.11|
000a03c0  09 31 33 34 2e 35 0a 31  32 09 36 30 30 0a 31 33  |.134.5.12.600.13|
000a03d0  09 31 38 30 30 0a 31 34  09 33 36 30 30 0a 31 35  |.1800.14.3600.15|
000a03e0  09 37 32 30 30 00 00 00  44 49 52 24 4c 00 00 00  |.7200...DIR$L...|
000a03f0  4c 00 00 00 34 04 0a 00  47 fd ff ff 70 b1 e2 24  |L...4...G...p..$|
000a0400  45 01 00 00 13 00 00 00  00 00 00 00 76 65 63 74  |E...........vect|
000a0410  6f 72 73 00 7c 05 0a 00  48 fd ff ff 24 01 69 1a  |ors.|...H...$.i.|
000a0420  f7 02 00 00 13 00 00 00  00 00 00 00 73 77 69 76  |............swiv|
000a0430  00 00 00 00 44 41 54 41  45 01 00 00 48 61 72 64  |....DATAE...Hard|
000a0440  77 61 72 65 20 76 65 63  74 6f 72 73 0a 41 64 64  |ware vectors.Add|
000a0450  72 65 73 73 09 43 6f 6e  74 65 6e 74 73 0a 23 4c  |ress.Contents.#L|
000a0460  69 6e 65 0a 26 30 30 09  52 65 73 65 74 20 28 70  |ine.&00.Reset (p|
000a0470  72 6f 64 75 63 65 73 20  27 42 72 61 6e 63 68 20  |roduces 'Branch |
000a0480  74 68 72 6f 75 67 68 20  7a 65 72 6f 27 29 0a 26  |through zero').&|
000a0490  30 34 09 55 6e 64 65 66  69 6e 65 64 20 69 6e 73  |04.Undefined ins|
000a04a0  74 72 75 63 74 69 6f 6e  0a 26 30 38 09 3c 53 57  |truction.&08.<SW|
000a04b0  49 3d 3e 6f 73 5f 68 61  72 64 77 61 72 65 5f 73  |I=>os_hardware_s|
000a04c0  77 69 76 3e 0a 26 30 43  09 50 72 65 66 65 74 63  |wiv>.&0C.Prefetc|
000a04d0  68 20 61 62 6f 72 74 0a  26 31 30 09 44 61 74 61  |h abort.&10.Data|
000a04e0  20 61 62 6f 72 74 0a 26  31 34 09 41 64 64 72 65  | abort.&14.Addre|
000a04f0  73 73 20 65 78 63 65 70  74 69 6f 6e 0a 26 31 38  |ss exception.&18|
000a0500  09 49 6e 74 65 72 72 75  70 74 20 28 49 52 51 29  |.Interrupt (IRQ)|
000a0510  0a 26 31 43 09 46 61 73  74 20 69 6e 74 65 72 72  |.&1C.Fast interr|
000a0520  75 70 74 20 28 46 49 51  29 2a 0a 0a 2a 20 7b 2f  |upt (FIQ)*..* {/|
000a0530  7d 4e 6f 74 65 3a 7b 2f  7d 20 54 68 69 73 20 63  |}Note:{/} This c|
000a0540  6f 6e 73 69 73 74 73 20  6f 66 20 74 68 65 20 61  |onsists of the a|
000a0550  63 74 75 61 6c 20 63 6f  64 65 20 61 6e 64 20 6e  |ctual code and n|
000a0560  6f 74 20 61 20 62 72 61  6e 63 68 20 69 6e 73 74  |ot a branch inst|
000a0570  72 75 63 74 69 6f 6e 2e  0a 00 00 00 44 41 54 41  |ruction.....DATA|
000a0580  f7 02 00 00 48 61 72 64  77 61 72 65 20 53 57 49  |....Hardware SWI|
000a0590  20 76 65 63 74 6f 72 0a  57 68 65 6e 20 61 20 53  | vector.When a S|
000a05a0  57 49 20 69 6e 73 74 72  75 63 74 69 6f 6e 20 69  |WI instruction i|
000a05b0  73 20 64 65 63 6f 64 65  64 20 74 68 65 20 70 72  |s decoded the pr|
000a05c0  6f 63 65 73 73 6f 72 20  77 69 6c 6c 20 6a 75 6d  |ocessor will jum|
000a05d0  70 20 74 6f 20 74 68 69  73 20 76 65 63 74 6f 72  |p to this vector|
000a05e0  20 74 6f 20 66 69 6e 64  20 74 68 65 20 63 6f 64  | to find the cod|
000a05f0  65 20 74 6f 20 70 72 6f  63 65 73 73 20 69 74 2e  |e to process it.|
000a0600  20 54 68 65 20 70 72 6f  63 65 73 73 6f 72 20 6d  | The processor m|
000a0610  6f 64 65 20 69 73 20 73  77 69 74 63 68 65 64 20  |ode is switched |
000a0620  74 6f 20 53 56 43 2c 20  61 6e 64 20 74 68 65 20  |to SVC, and the |
000a0630  61 64 64 72 65 73 73 20  6f 66 20 74 68 65 20 69  |address of the i|
000a0640  6e 73 74 72 75 63 74 69  6f 6e 20 63 61 75 73 69  |nstruction causi|
000a0650  6e 67 20 74 68 65 20 65  78 63 65 70 74 69 6f 6e  |ng the exception|
000a0660  20 69 73 20 69 6e 20 52  31 34 5f 73 76 63 2e 0a  | is in R14_svc..|
000a0670  0a 57 68 65 6e 20 74 68  65 20 53 57 49 20 69 73  |.When the SWI is|
000a0680  20 70 72 6f 63 65 73 73  65 64 20 69 74 20 69 73  | processed it is|
000a0690  20 65 6e 74 69 72 65 6c  79 20 70 6f 73 73 69 62  | entirely possib|
000a06a0  6c 65 20 74 6f 20 64 72  6f 70 20 62 61 63 6b 20  |le to drop back |
000a06b0  69 6e 74 6f 20 75 73 65  72 20 6d 6f 64 65 20 61  |into user mode a|
000a06c0  6e 64 20 65 78 65 63 75  74 65 20 63 6f 64 65 20  |nd execute code |
000a06d0  61 73 20 69 66 20 79 6f  75 20 61 72 65 20 72 75  |as if you are ru|
000a06e0  6e 6e 69 6e 67 20 74 68  65 20 75 73 65 72 73 20  |nning the users |
000a06f0  70 72 6f 67 72 61 6d 2e  20 52 65 74 75 72 6e 69  |program. Returni|
000a0700  6e 67 20 66 72 6f 6d 20  73 75 63 68 20 63 61 6c  |ng from such cal|
000a0710  6c 73 20 73 68 6f 75 6c  64 20 62 65 20 74 72 61  |ls should be tra|
000a0720  6e 73 70 61 72 65 6e 74  20 74 6f 20 74 68 65 20  |nsparent to the |
000a0730  73 79 73 74 65 6d 20 61  6e 64 20 79 6f 75 20 73  |system and you s|
000a0740  68 6f 75 6c 64 20 4e 4f  54 20 6d 6f 64 69 66 79  |hould NOT modify|
000a0750  20 72 65 67 69 73 74 65  72 73 20 77 69 74 68 6f  | registers witho|
000a0760  75 74 20 67 6f 6f 64 20  72 65 61 73 6f 6e 2e 0a  |ut good reason..|
000a0770  0a 54 68 65 20 64 65 66  61 75 6c 74 20 68 61 6e  |.The default han|
000a0780  64 6c 65 72 20 77 69 6c  6c 20 63 68 65 63 6b 20  |dler will check |
000a0790  69 66 20 74 68 65 20 63  61 6c 6c 20 62 65 6c 6f  |if the call belo|
000a07a0  6e 67 73 20 74 6f 20 74  68 65 20 6b 65 72 6e 65  |ngs to the kerne|
000a07b0  6c 20 61 6e 64 20 69 66  20 73 6f 20 77 69 6c 6c  |l and if so will|
000a07c0  20 62 72 61 6e 63 68 20  74 68 72 6f 75 67 68 20  | branch through |
000a07d0  61 20 74 61 62 6c 65 20  61 74 20 26 31 46 30 33  |a table at &1F03|
000a07e0  33 46 43 2e 20 54 68 69  73 20 74 61 62 6c 65 20  |3FC. This table |
000a07f0  69 73 20 6e 6f 74 20 67  75 61 72 61 6e 74 65 65  |is not guarantee|
000a0800  64 20 74 6f 20 72 65 6d  61 69 6e 20 69 6e 20 74  |d to remain in t|
000a0810  68 69 73 20 6c 6f 63 61  74 69 6f 6e 2c 20 62 75  |his location, bu|
000a0820  74 20 64 75 65 20 74 6f  20 74 68 65 20 6e 75 6d  |t due to the num|
000a0830  62 65 72 20 6f 66 20 61  70 70 6c 69 63 61 74 69  |ber of applicati|
000a0840  6f 6e 73 20 61 74 74 61  63 68 69 6e 67 20 74 68  |ons attaching th|
000a0850  65 6d 73 65 6c 76 65 73  2c 20 69 74 20 69 73 20  |emselves, it is |
000a0860  75 6e 6c 69 6b 65 6c 79  20 74 6f 20 63 68 61 6e  |unlikely to chan|
000a0870  67 65 2e 00 44 49 52 24  80 00 00 00 80 00 00 00  |ge..DIR$........|
000a0880  f4 08 0a 00 48 ff ff ff  e6 54 84 07 ae 01 00 00  |....H....T......|
000a0890  13 00 00 00 00 00 00 00  21 72 6f 6f 74 00 00 00  |........!root...|
000a08a0  a4 0a 0a 00 47 fd ff ff  03 9c 46 bc d2 00 00 00  |....G.....F.....|
000a08b0  13 00 00 00 00 00 00 00  30 00 00 00 78 0b 0a 00  |........0...x...|
000a08c0  47 fd ff ff f3 a2 46 bc  c0 00 00 00 13 00 00 00  |G.....F.........|
000a08d0  00 00 00 00 31 00 00 00  38 0c 0a 00 47 fd ff ff  |....1...8...G...|
000a08e0  37 76 5e 16 69 01 00 00  13 00 00 00 00 00 00 00  |7v^.i...........|
000a08f0  32 00 00 00 44 41 54 41  ae 01 00 00 4f 53 5f 53  |2...DATA....OS_S|
000a0900  63 72 65 65 6e 4d 6f 64  65 20 28 26 36 35 29 20  |creenMode (&65) |
000a0910  28 33 2e 35 29 0a 23 50  61 72 65 6e 74 20 4f 53  |(3.5).#Parent OS|
000a0920  5f 0a 3d 3e 09 52 30 20  3d 09 3c 72 65 61 73 6f  |_.=>.R0 =.<reaso|
000a0930  6e 20 63 6f 64 65 3d 3e  2e 72 65 61 73 6f 6e 73  |n code=>.reasons|
000a0940  3e 0a 09 6f 74 68 65 72  20 72 65 67 69 73 74 65  |>..other registe|
000a0950  72 73 20 64 65 70 65 6e  64 61 6e 74 20 6f 6e 20  |rs dependant on |
000a0960  63 61 6c 6c 0a 09 0a 54  68 69 73 20 63 61 6c 6c  |call...This call|
000a0970  20 69 73 20 75 73 65 64  20 74 6f 20 63 68 61 6e  | is used to chan|
000a0980  67 65 20 6f 72 20 72 65  61 64 20 74 68 65 20 73  |ge or read the s|
000a0990  63 72 65 65 6e 20 6d 6f  64 65 2e 20 53 65 65 20  |creen mode. See |
000a09a0  61 6c 73 6f 20 3c 57 69  6d 70 5f 53 65 74 4d 6f  |also <Wimp_SetMo|
000a09b0  64 65 3d 3e 57 69 6d 70  3a 57 69 6d 70 5f 53 65  |de=>Wimp:Wimp_Se|
000a09c0  74 4d 6f 64 65 3e 2e 0a  23 0a 23 53 75 62 70 61  |tMode>..#.#Subpa|
000a09d0  67 65 20 72 65 61 73 6f  6e 73 0a 53 63 72 65 65  |ge reasons.Scree|
000a09e0  6e 4d 6f 64 65 20 72 65  61 73 6f 6e 73 0a 52 65  |nMode reasons.Re|
000a09f0  61 73 6f 6e 09 4d 65 61  6e 69 6e 67 0a 23 4c 69  |ason.Meaning.#Li|
000a0a00  6e 65 3b 57 72 61 70 20  6f 66 66 0a 30 09 3c 53  |ne;Wrap off.0.<S|
000a0a10  65 6c 65 63 74 20 73 63  72 65 65 6e 20 6d 6f 64  |elect screen mod|
000a0a20  65 3d 3e 4f 53 5f 73 63  72 65 65 6e 6d 6f 64 65  |e=>OS_screenmode|
000a0a30  30 3e 0a 31 09 3c 52 65  74 75 72 6e 20 63 75 72  |0>.1.<Return cur|
000a0a40  72 65 6e 74 20 73 63 72  65 65 6e 20 6d 6f 64 65  |rent screen mode|
000a0a50  3d 3e 4f 53 5f 73 63 72  65 65 6e 6d 6f 64 65 31  |=>OS_screenmode1|
000a0a60  3e 0a 32 09 3c 45 6e 75  6d 65 72 61 74 65 20 73  |>.2.<Enumerate s|
000a0a70  63 72 65 65 6e 20 6d 6f  64 65 73 3d 3e 4f 53 5f  |creen modes=>OS_|
000a0a80  73 63 72 65 65 6e 6d 6f  64 65 32 3e 0a 33 09 28  |screenmode2>.3.(|
000a0a90  66 6f 72 20 69 6e 74 65  72 6e 61 6c 20 75 73 65  |for internal use|
000a0aa0  29 0a 00 00 44 41 54 41  d2 00 00 00 4f 53 5f 53  |)...DATA....OS_S|
000a0ab0  63 72 65 65 6e 4d 6f 64  65 20 30 20 28 26 36 35  |creenMode 0 (&65|
000a0ac0  29 20 28 33 2e 35 29 0a  3d 3e 09 52 30 20 3d 09  |) (3.5).=>.R0 =.|
000a0ad0  30 0a 09 52 31 20 3d 09  4f 6c 64 20 73 74 79 6c  |0..R1 =.Old styl|
000a0ae0  65 20 6d 6f 64 65 20 6e  75 6d 62 65 72 20 6f 72  |e mode number or|
000a0af0  20 61 20 3c 6d 6f 64 65  20 73 70 65 63 69 66 69  | a <mode specifi|
000a0b00  65 72 20 62 6c 6f 63 6b  3d 3e 57 69 6d 70 3a 57  |er block=>Wimp:W|
000a0b10  69 6d 70 5f 4d 6f 64 65  53 65 6c 65 63 74 3e 0a  |imp_ModeSelect>.|
000a0b20  09 0a 54 68 69 73 20 53  57 49 20 77 69 6c 6c 20  |..This SWI will |
000a0b30  73 65 6c 65 63 74 20 61  20 67 69 76 65 6e 20 73  |select a given s|
000a0b40  63 72 65 65 6e 20 6d 6f  64 65 2c 20 72 65 74 75  |creen mode, retu|
000a0b50  72 6e 69 6e 67 20 61 6e  20 65 72 72 6f 72 20 69  |rning an error i|
000a0b60  66 20 74 68 65 20 6d 6f  64 65 20 69 73 20 69 6e  |f the mode is in|
000a0b70  76 61 6c 69 64 2e 00 00  44 41 54 41 c0 00 00 00  |valid...DATA....|
000a0b80  4f 53 5f 53 63 72 65 65  6e 4d 6f 64 65 20 31 20  |OS_ScreenMode 1 |
000a0b90  28 26 36 35 29 20 28 33  2e 35 29 0a 3d 3e 09 52  |(&65) (3.5).=>.R|
000a0ba0  30 20 3d 09 31 0a 3c 3d  09 52 31 20 3d 09 4d 6f  |0 =.1.<=.R1 =.Mo|
000a0bb0  64 65 20 6e 75 6d 62 65  72 20 6f 72 20 70 6f 69  |de number or poi|
000a0bc0  6e 74 65 72 20 74 6f 20  61 20 3c 6d 6f 64 65 20  |nter to a <mode |
000a0bd0  73 70 65 63 69 66 69 65  72 20 62 6c 6f 63 6b 3d  |specifier block=|
000a0be0  3e 57 69 6d 70 3a 57 69  6d 70 5f 4d 6f 64 65 53  |>Wimp:Wimp_ModeS|
000a0bf0  65 6c 65 63 74 3e 0a 09  0a 54 68 69 73 20 53 57  |elect>...This SW|
000a0c00  49 20 77 69 6c 6c 20 72  65 74 75 72 6e 20 69 6e  |I will return in|
000a0c10  66 6f 72 6d 61 74 69 6f  6e 20 61 62 6f 75 74 20  |formation about |
000a0c20  74 68 65 20 63 75 72 72  65 6e 74 20 73 63 72 65  |the current scre|
000a0c30  65 6e 20 6d 6f 64 65 2e  44 41 54 41 69 01 00 00  |en mode.DATAi...|
000a0c40  4f 53 5f 53 63 72 65 65  6e 4d 6f 64 65 20 32 20  |OS_ScreenMode 2 |
000a0c50  28 26 36 35 29 20 28 33  2e 35 29 0a 3d 3e 09 52  |(&65) (3.5).=>.R|
000a0c60  30 20 3d 09 32 0a 09 52  32 20 3d 09 76 61 6c 75  |0 =.2..R2 =.valu|
000a0c70  65 20 6f 66 20 52 32 20  74 6f 20 70 61 73 73 20  |e of R2 to pass |
000a0c80  74 6f 20 53 65 72 76 69  63 65 5f 45 6e 75 6d 65  |to Service_Enume|
000a0c90  72 61 74 65 53 63 72 65  65 6e 4d 6f 64 65 73 0a  |rateScreenModes.|
000a0ca0  09 52 36 20 3d 09 76 61  6c 75 65 20 6f 66 20 52  |.R6 =.value of R|
000a0cb0  36 0a 09 52 37 20 3d 09  76 61 6c 75 65 20 6f 66  |6..R7 =.value of|
000a0cc0  20 52 37 0a 0a 0a 3c 3d  09 52 31 20 3d 09 76 61  | R7...<=.R1 =.va|
000a0cd0  6c 75 65 20 6f 66 20 52  31 20 72 65 74 75 72 6e  |lue of R1 return|
000a0ce0  65 64 20 62 79 20 53 65  72 76 69 63 65 5f 45 6e  |ed by Service_En|
000a0cf0  75 6d 65 72 61 74 65 53  63 72 65 65 6e 4d 6f 64  |umerateScreenMod|
000a0d00  65 73 0a 09 52 32 20 3d  09 76 61 6c 75 65 20 6f  |es..R2 =.value o|
000a0d10  66 20 52 32 20 72 65 74  75 72 6e 65 64 0a 09 52  |f R2 returned..R|
000a0d20  36 20 3d 09 76 61 6c 75  65 20 6f 66 20 52 36 20  |6 =.value of R6 |
000a0d30  72 65 74 75 72 6e 65 64  0a 09 52 37 20 3d 09 76  |returned..R7 =.v|
000a0d40  61 6c 75 65 20 6f 66 20  52 37 20 72 65 74 75 72  |alue of R7 retur|
000a0d50  6e 65 64 0a 0a 54 68 69  73 20 53 57 49 20 70 72  |ned..This SWI pr|
000a0d60  6f 76 69 64 65 73 20 61  20 66 72 6f 6e 74 20 65  |ovides a front e|
000a0d70  6e 64 20 74 6f 20 3c 53  65 72 76 69 63 65 5f 45  |nd to <Service_E|
000a0d80  6e 75 6d 65 72 61 74 65  53 63 72 65 65 6e 4d 6f  |numerateScreenMo|
000a0d90  64 65 73 3d 3e 73 65 72  76 69 63 65 5f 38 44 3e  |des=>service_8D>|
000a0da0  2e 00 00 00 44 41 54 41  c8 00 00 00 4f 53 5f 53  |....DATA....OS_S|
000a0db0  65 72 76 69 63 65 43 61  6c 6c 20 20 28 26 33 30  |erviceCall  (&30|
000a0dc0  29 0a 23 50 61 72 65 6e  74 20 4f 53 5f 0a 3d 3e  |).#Parent OS_.=>|
000a0dd0  09 52 31 20 3d 09 3c 73  65 72 76 69 63 65 20 6e  |.R1 =.<service n|
000a0de0  75 6d 62 65 72 3d 3e 73  65 72 76 69 63 65 5f 69  |umber=>service_i|
000a0df0  6e 64 65 78 3e 0a 09 6f  74 68 65 72 73 20 64 65  |ndex>..others de|
000a0e00  70 65 6e 64 61 6e 74 20  6f 6e 20 73 65 72 76 69  |pendant on servi|
000a0e10  63 65 20 63 61 6c 6c 20  6e 75 6d 62 65 72 0a 3c  |ce call number.<|
000a0e20  3d 09 52 31 20 3d 09 30  20 69 66 20 73 65 72 76  |=.R1 =.0 if serv|
000a0e30  69 63 65 20 77 61 73 20  63 6c 61 69 6d 65 64 0a  |ice was claimed.|
000a0e40  0a 54 68 69 73 20 53 57  49 20 69 73 20 75 73 65  |.This SWI is use|
000a0e50  64 20 74 6f 20 63 61 6c  6c 20 61 20 6d 6f 64 75  |d to call a modu|
000a0e60  6c 65 20 73 65 72 76 69  63 65 2e 0a 44 49 52 24  |le service..DIR$|
000a0e70  48 00 00 00 48 00 00 00  b4 0e 0a 00 48 ff ff ff  |H...H.......H...|
000a0e80  a8 7b cf 23 a6 00 00 00  13 00 00 00 00 00 00 00  |.{.#............|
000a0e90  21 52 6f 6f 74 00 00 00  5c 0f 0a 00 47 fd ff ff  |!Root...\...G...|
000a0ea0  ce 6e cb 65 c7 01 00 00  13 00 00 00 00 00 00 00  |.n.e............|
000a0eb0  31 00 00 00 44 41 54 41  a6 00 00 00 4f 53 5f 4d  |1...DATA....OS_M|
000a0ec0  4d 55 43 6f 6e 74 72 6f  6c 20 20 28 26 36 42 29  |MUControl  (&6B)|
000a0ed0  0a 23 50 61 72 65 6e 74  20 4f 53 5f 0a 3d 3e 09  |.#Parent OS_.=>.|
000a0ee0  52 30 20 3d 09 72 65 61  73 6f 6e 20 63 6f 64 65  |R0 =.reason code|
000a0ef0  20 61 6e 64 20 66 6c 61  67 73 0a 09 09 30 09 3f  | and flags...0.?|
000a0f00  0a 09 09 31 09 3c 43 61  63 68 65 20 66 6c 75 73  |...1.<Cache flus|
000a0f10  68 20 72 65 71 75 65 73  74 3d 3e 4f 53 5f 4d 4d  |h request=>OS_MM|
000a0f20  55 43 6f 6e 74 72 6f 6c  31 3e 0a 0a 54 68 69 73  |UControl1>..This|
000a0f30  20 53 57 49 20 63 6f 6e  74 72 6f 6c 73 20 74 68  | SWI controls th|
000a0f40  65 20 4d 65 6d 6f 72 79  20 4d 61 6e 61 67 65 6d  |e Memory Managem|
000a0f50  65 6e 74 20 55 6e 69 74  2e 0a 00 00 44 41 54 41  |ent Unit....DATA|
000a0f60  c7 01 00 00 4f 53 5f 4d  4d 55 43 6f 6e 74 72 6f  |....OS_MMUContro|
000a0f70  6c 20 31 0a 23 50 61 72  65 6e 74 20 4f 53 5f 4d  |l 1.#Parent OS_M|
000a0f80  4d 55 43 6f 6e 74 72 6f  6c 0a 3d 3e 09 52 30 20  |MUControl.=>.R0 |
000a0f90  3d 09 31 20 28 63 61 63  68 65 20 66 6c 75 73 68  |=.1 (cache flush|
000a0fa0  20 72 65 71 75 65 73 74  29 20 2b 20 3c 66 6c 61  | request) + <fla|
000a0fb0  67 73 3d 3e 2e 66 6c 61  67 73 3e 0a 09 52 31 20  |gs=>.flags>..R1 |
000a0fc0  3d 09 6c 6f 67 69 63 61  6c 20 61 64 64 72 65 73  |=.logical addres|
000a0fd0  73 20 28 69 66 20 62 69  74 20 32 39 20 73 65 74  |s (if bit 29 set|
000a0fe0  29 0a 0a 54 68 69 73 20  63 61 6c 6c 20 69 73 20  |)..This call is |
000a0ff0  75 73 65 64 20 74 6f 20  69 6d 70 6c 65 6d 65 6e  |used to implemen|
000a1000  74 20 63 61 63 68 65 20  61 6e 64 20 54 4c 42 20  |t cache and TLB |
000a1010  66 6c 75 73 68 69 6e 67  2e 0a 0a 4e 6f 74 65 3a  |flushing...Note:|
000a1020  20 4f 6e 6c 79 20 75 73  65 20 74 68 69 73 20 77  | Only use this w|
000a1030  68 65 72 65 20 69 74 20  69 73 20 75 6e 61 76 6f  |here it is unavo|
000a1040  69 64 61 62 6c 65 2e 0a  23 0a 23 53 75 62 70 61  |idable..#.#Subpa|
000a1050  67 65 20 66 6c 61 67 73  0a 4d 4d 55 20 43 6f 6e  |ge flags.MMU Con|
000a1060  74 72 6f 6c 20 31 20 66  6c 61 67 73 0a 42 69 74  |trol 1 flags.Bit|
000a1070  09 4d 65 61 6e 69 6e 67  20 69 66 20 73 65 74 0a  |.Meaning if set.|
000a1080  23 4c 69 6e 65 0a 38 2d  32 38 09 72 65 73 65 72  |#Line.8-28.reser|
000a1090  76 65 64 20 28 6d 75 73  74 20 62 65 20 30 29 0a  |ved (must be 0).|
000a10a0  32 39 09 66 6c 75 73 68  20 6f 6e 65 20 65 6e 74  |29.flush one ent|
000a10b0  72 79 20 28 6f 74 68 65  72 77 69 73 65 20 63 6f  |ry (otherwise co|
000a10c0  6d 70 6c 65 74 65 20 66  6c 75 73 68 29 0a 33 30  |mplete flush).30|
000a10d0  09 66 6c 75 73 68 20 70  72 6f 63 65 73 73 6f 72  |.flush processor|
000a10e0  20 54 4c 42 73 0a 33 31  09 66 6c 75 73 68 20 70  | TLBs.31.flush p|
000a10f0  72 6f 63 65 73 73 6f 72  20 63 61 63 68 65 73 0a  |rocessor caches.|
000a1100  0a 4e 6f 74 65 3a 20 62  69 74 20 32 39 20 69 73  |.Note: bit 29 is|
000a1110  20 63 75 72 72 65 6e 74  6c 79 20 69 67 6e 6f 72  | currently ignor|
000a1120  65 64 2e 00 44 49 52 24  48 00 00 00 48 00 00 00  |ed..DIR$H...H...|
000a1130  6c 11 0a 00 48 ff ff ff  52 1c 98 1a de 00 00 00  |l...H...R.......|
000a1140  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000a1150  4c 12 0a 00 48 fd ff ff  e6 2c 98 1a d7 02 00 00  |L...H....,......|
000a1160  33 00 00 00 00 00 00 00  30 00 00 00 44 41 54 41  |3.......0...DATA|
000a1170  de 00 00 00 4f 53 5f 50  6c 61 74 66 6f 72 6d 46  |....OS_PlatformF|
000a1180  65 61 74 75 72 65 73 20  28 26 36 44 29 0a 23 50  |eatures (&6D).#P|
000a1190  61 72 65 6e 74 20 4f 53  5f 0a 3d 3e 09 52 30 20  |arent OS_.=>.R0 |
000a11a0  3d 09 72 65 61 73 6f 6e  20 63 6f 64 65 2c 20 61  |=.reason code, a|
000a11b0  6e 64 20 72 65 61 73 6f  6e 20 64 65 70 65 6e 64  |nd reason depend|
000a11c0  61 6e 74 20 66 6c 61 67  73 0a 09 20 09 30 09 3c  |ant flags.. .0.<|
000a11d0  52 65 61 64 20 63 6f 64  65 20 66 65 61 74 75 72  |Read code featur|
000a11e0  65 73 3d 3e 4f 53 5f 50  6c 61 74 66 6f 72 6d 46  |es=>OS_PlatformF|
000a11f0  65 61 74 75 72 65 73 30  3e 0a 0a 54 68 69 73 20  |eatures0>..This |
000a1200  53 57 49 20 69 73 20 75  73 65 64 20 74 6f 20 66  |SWI is used to f|
000a1210  69 6e 64 20 6f 75 74 20  77 68 61 74 20 66 65 61  |ind out what fea|
000a1220  74 75 72 65 73 20 74 68  65 20 65 78 65 63 75 74  |tures the execut|
000a1230  69 6e 67 20 70 6c 61 74  66 6f 72 6d 20 68 61 73  |ing platform has|
000a1240  2c 20 69 66 20 61 6e 79  2e 0a 00 00 44 41 54 41  |, if any....DATA|
000a1250  d7 02 00 00 4f 53 5f 50  6c 61 74 66 6f 72 6d 46  |....OS_PlatformF|
000a1260  65 61 74 75 72 65 73 20  30 20 28 26 36 44 29 0a  |eatures 0 (&6D).|
000a1270  23 50 61 72 65 6e 74 20  4f 53 5f 0a 3d 3e 09 52  |#Parent OS_.=>.R|
000a1280  30 20 3d 09 30 20 28 52  65 61 64 20 63 6f 64 65  |0 =.0 (Read code|
000a1290  20 66 65 61 74 75 72 65  73 29 20 2b 20 66 6c 61  | features) + fla|
000a12a0  67 73 20 28 72 65 73 65  72 76 65 64 29 0a 3c 3d  |gs (reserved).<=|
000a12b0  09 52 30 20 3d 09 3c 66  6c 61 67 73 3d 3e 2e 66  |.R0 =.<flags=>.f|
000a12c0  6c 61 67 73 3e 0a 09 52  31 20 3d 09 70 6f 69 6e  |lags>..R1 =.poin|
000a12d0  74 65 72 20 74 6f 20 49  52 51 20 72 6f 75 74 69  |ter to IRQ routi|
000a12e0  6e 65 20 28 69 66 20 62  31 20 73 65 74 29 0a 0a  |ne (if b1 set)..|
000a12f0  54 68 69 73 20 72 65 61  73 6f 6e 20 69 73 20 75  |This reason is u|
000a1300  73 65 64 20 74 6f 20 64  65 74 65 72 6d 69 6e 65  |sed to determine|
000a1310  20 77 68 61 74 20 69 73  20 72 65 71 75 69 72 65  | what is require|
000a1320  64 20 74 6f 20 72 75 6e  20 63 6f 64 65 20 6f 6e  |d to run code on|
000a1330  20 74 68 65 20 63 75 72  72 65 6e 74 20 70 6c 61  | the current pla|
000a1340  74 66 6f 72 6d 2e 0a 0a  53 74 72 6f 6e 67 41 52  |tform...StrongAR|
000a1350  4d 20 77 69 6c 6c 20 72  65 74 75 72 6e 20 62 69  |M will return bi|
000a1360  74 73 20 30 2d 34 20 73  65 74 2e 0a 41 52 4d 20  |ts 0-4 set..ARM |
000a1370  36 20 61 6e 64 20 37 20  77 69 74 68 20 72 65 74  |6 and 7 with ret|
000a1380  75 72 6e 20 62 69 74 73  20 30 2d 34 20 63 6c 65  |urn bits 0-4 cle|
000a1390  61 72 2e 0a 45 61 72 6c  69 65 72 20 6d 61 63 68  |ar..Earlier mach|
000a13a0  69 6e 65 73 20 77 69 6c  6c 20 72 61 69 73 65 20  |ines will raise |
000a13b0  61 6e 20 65 72 72 6f 72  2e 0a 23 0a 23 53 75 62  |an error..#.#Sub|
000a13c0  70 61 67 65 20 66 6c 61  67 73 0a 50 6c 61 74 66  |page flags.Platf|
000a13d0  6f 72 6d 46 65 61 74 75  72 65 73 20 30 20 66 6c  |ormFeatures 0 fl|
000a13e0  61 67 73 0a 42 69 74 09  4d 65 61 6e 69 6e 67 20  |ags.Bit.Meaning |
000a13f0  69 66 20 73 65 74 0a 23  4c 69 6e 65 0a 30 09 59  |if set.#Line.0.Y|
000a1400  6f 75 20 6d 75 73 74 20  74 65 6c 6c 20 74 68 65  |ou must tell the|
000a1410  20 4f 53 20 77 68 65 6e  20 61 20 63 6f 64 65 20  | OS when a code |
000a1420  61 72 65 61 20 63 68 61  6e 67 65 73 20 28 3c 4f  |area changes (<O|
000a1430  53 5f 53 79 6e 63 68 72  6f 6e 69 73 65 43 6f 64  |S_SynchroniseCod|
000a1440  65 41 72 65 61 73 3e 29  0a 31 09 45 6e 61 62 6c  |eAreas>).1.Enabl|
000a1450  69 6e 67 20 74 68 65 6e  20 64 69 73 61 62 6c 69  |ing then disabli|
000a1460  6e 67 20 69 6e 74 65 72  72 75 70 74 73 20 64 6f  |ng interrupts do|
000a1470  65 73 20 6e 6f 74 20 61  6c 6c 6f 77 20 74 68 65  |es not allow the|
000a1480  6d 20 61 20 63 68 61 6e  63 65 20 74 6f 20 6f 63  |m a chance to oc|
000a1490  63 75 72 0a 32 09 48 61  72 64 77 61 72 65 20 76  |cur.2.Hardware v|
000a14a0  65 63 74 6f 72 73 20 61  72 65 20 6f 6e 6c 79 20  |ectors are only |
000a14b0  72 65 61 64 61 62 6c 65  20 69 6e 20 33 32 20 62  |readable in 32 b|
000a14c0  69 74 20 6d 6f 64 65 0a  33 09 57 68 65 6e 20 73  |it mode.3.When s|
000a14d0  74 6f 72 69 6e 67 20 50  43 2c 20 50 43 2b 38 20  |toring PC, PC+8 |
000a14e0  69 73 20 73 74 6f 72 65  64 20 28 6e 6f 74 20 50  |is stored (not P|
000a14f0  43 2b 31 32 29 0a 34 09  44 61 74 61 20 61 62 6f  |C+12).4.Data abo|
000a1500  72 74 73 20 6f 63 63 75  72 20 77 69 74 68 20 27  |rts occur with '|
000a1510  66 75 6c 6c 20 65 61 72  6c 79 27 20 74 69 6d 69  |full early' timi|
000a1520  6e 67 0a 00 44 41 54 41  ec 01 00 00 4f 53 5f 53  |ng..DATA....OS_S|
000a1530  79 6e 63 68 72 6f 6e 69  73 65 43 6f 64 65 41 72  |ynchroniseCodeAr|
000a1540  65 61 73 20 28 26 36 45  29 0a 23 50 61 72 65 6e  |eas (&6E).#Paren|
000a1550  74 20 4f 53 5f 0a 3d 3e  09 52 30 20 3d 09 3c 66  |t OS_.=>.R0 =.<f|
000a1560  6c 61 67 73 3d 3e 2e 66  6c 61 67 73 3e 0a 09 69  |lags=>.flags>..i|
000a1570  66 20 62 30 20 73 65 74  20 3a 0a 09 20 52 31 20  |f b0 set :.. R1 |
000a1580  3d 09 6c 6f 77 20 61 64  64 72 65 73 73 20 28 77  |=.low address (w|
000a1590  6f 72 64 20 61 6c 69 67  6e 65 64 29 0a 09 20 52  |ord aligned).. R|
000a15a0  32 20 3d 09 68 69 67 68  20 61 64 64 72 65 73 73  |2 =.high address|
000a15b0  20 28 77 6f 72 64 20 61  6c 69 67 6e 65 64 2c 20  | (word aligned, |
000a15c0  69 6e 63 6c 75 73 69 76  65 29 0a 0a 54 68 69 73  |inclusive)..This|
000a15d0  20 53 57 49 20 69 73 20  75 73 65 64 20 74 6f 20  | SWI is used to |
000a15e0  65 6e 73 75 72 65 20 74  68 61 74 20 74 68 65 20  |ensure that the |
000a15f0  63 6f 64 65 20 63 61 63  68 65 20 69 73 20 75 70  |code cache is up|
000a1600  20 74 6f 20 64 61 74 65  20 77 69 74 68 20 6d 65  | to date with me|
000a1610  6d 6f 72 79 20 2d 20 74  68 69 73 20 6d 61 79 20  |mory - this may |
000a1620  6e 6f 74 20 62 65 20 74  68 65 20 63 61 73 65 20  |not be the case |
000a1630  77 69 74 68 20 73 65 6c  66 2d 6d 6f 64 69 66 79  |with self-modify|
000a1640  69 6e 67 20 63 6f 64 65  2e 0a 0a 4e 6f 74 65 3a  |ing code...Note:|
000a1650  20 4f 6e 6c 79 20 75 73  65 20 74 68 69 73 20 77  | Only use this w|
000a1660  68 65 72 65 20 61 62 73  6f 6c 75 74 65 6c 79 20  |here absolutely |
000a1670  6e 65 63 65 73 73 61 72  79 2e 0a 23 0a 23 53 75  |necessary..#.#Su|
000a1680  62 70 61 67 65 20 66 6c  61 67 73 0a 53 79 6e 63  |bpage flags.Sync|
000a1690  68 72 6f 6e 69 73 65 43  6f 64 65 41 72 65 61 73  |hroniseCodeAreas|
000a16a0  20 66 6c 61 67 73 0a 42  69 74 09 4d 65 61 6e 69  | flags.Bit.Meani|
000a16b0  6e 67 20 69 66 20 73 65  74 0a 23 6c 69 6e 65 0a  |ng if set.#line.|
000a16c0  30 09 53 79 6e 63 68 72  6f 6e 69 73 65 20 6f 6e  |0.Synchronise on|
000a16d0  6c 79 20 61 64 64 72 65  73 73 65 73 20 69 6e 20  |ly addresses in |
000a16e0  72 61 6e 67 65 20 28 6f  74 68 65 72 77 69 73 65  |range (otherwise|
000a16f0  20 65 6e 74 69 72 65 20  6d 65 6d 6f 72 79 29 0a  | entire memory).|
000a1700  6f 74 68 65 72 73 09 72  65 73 65 72 76 65 64 0a  |others.reserved.|
000a1710  44 41 54 41 b8 00 00 00  44 65 70 72 65 63 69 61  |DATA....Deprecia|
000a1720  74 65 64 20 63 61 6c 6c  73 0a 54 68 65 20 66 6f  |ted calls.The fo|
000a1730  6c 6c 6f 77 69 6e 67 20  63 61 6c 6c 73 20 61 72  |llowing calls ar|
000a1740  65 20 64 65 70 72 65 63  69 61 74 65 64 20 69 6e  |e depreciated in|
000a1750  20 52 49 53 43 20 4f 53  20 33 2e 31 20 61 6e 64  | RISC OS 3.1 and|
000a1760  20 68 69 67 68 65 72 20  3a 0a 0a 23 50 72 65 66  | higher :..#Pref|
000a1770  69 78 20 4f 53 5f 0a 23  54 61 62 6c 65 20 43 6f  |ix OS_.#Table Co|
000a1780  6c 75 6d 6e 73 20 35 0a  3c 42 72 65 61 6b 43 74  |lumns 5.<BreakCt|
000a1790  72 6c 3e 0a 3c 43 61 6c  6c 42 61 63 6b 3e 0a 3c  |rl>.<CallBack>.<|
000a17a0  43 6f 6e 74 72 6f 6c 3e  0a 3c 53 65 74 45 6e 76  |Control>.<SetEnv|
000a17b0  3e 0a 3c 55 6e 75 73 65  64 53 57 49 3e 0a 23 45  |>.<UnusedSWI>.#E|
000a17c0  6e 64 54 61 62 6c 65 0a  44 49 52 24 2c 00 00 00  |ndTable.DIR$,...|
000a17d0  2c 00 00 00 f4 17 0a 00  48 fd ff ff a2 c5 12 0e  |,.......H.......|
000a17e0  c4 01 00 00 03 00 00 00  00 00 00 00 41 72 67 73  |............Args|
000a17f0  33 00 00 00 44 41 54 41  c4 01 00 00 46 53 45 6e  |3...DATA....FSEn|
000a1800  74 72 79 5f 41 72 67 73  20 33 0a 23 50 61 72 65  |try_Args 3.#Pare|
000a1810  6e 74 20 46 53 45 6e 74  72 79 5f 41 72 67 73 0a  |nt FSEntry_Args.|
000a1820  3d 3e 09 52 30 20 3d 09  33 20 28 57 72 69 74 65  |=>.R0 =.3 (Write|
000a1830  20 66 69 6c 65 20 65 78  74 65 6e 74 29 0a 09 52  | file extent)..R|
000a1840  31 20 3d 09 69 6e 74 65  72 6e 61 6c 20 66 69 6c  |1 =.internal fil|
000a1850  65 20 68 61 6e 64 6c 65  20 72 65 74 75 72 6e 65  |e handle returne|
000a1860  64 20 62 79 20 3c 46 53  45 6e 74 72 79 5f 4f 70  |d by <FSEntry_Op|
000a1870  65 6e 3e 0a 09 52 32 20  3d 09 6e 65 77 20 66 69  |en>..R2 =.new fi|
000a1880  6c 65 20 65 78 74 65 6e  74 0a 0a 54 68 69 73 20  |le extent..This |
000a1890  63 61 6c 6c 20 69 73 20  6d 61 64 65 20 77 68 65  |call is made whe|
000a18a0  6e 20 46 69 6c 65 53 77  69 74 63 68 20 6e 65 65  |n FileSwitch nee|
000a18b0  64 73 20 74 6f 20 65 78  74 65 6e 64 20 61 20 66  |ds to extend a f|
000a18c0  69 6c 65 20 62 65 79 6f  6e 64 20 69 74 73 20 63  |ile beyond its c|
000a18d0  75 72 72 65 6e 74 20 6c  65 6e 67 74 68 2e 20 46  |urrent length. F|
000a18e0  6f 72 20 62 75 66 66 65  72 65 64 20 66 69 6c 65  |or buffered file|
000a18f0  73 20 74 68 69 73 20 69  73 20 6f 6e 6c 79 20 63  |s this is only c|
000a1900  61 6c 6c 65 64 20 77 68  65 6e 20 74 68 65 20 66  |alled when the f|
000a1910  69 6c 65 20 69 73 20 63  6c 6f 73 65 64 2e 20 4f  |ile is closed. O|
000a1920  6e 20 75 6e 62 75 66 66  65 72 65 64 20 66 69 6c  |n unbuffered fil|
000a1930  65 73 20 74 68 69 73 20  69 73 20 63 61 6c 6c 65  |es this is calle|
000a1940  64 20 77 68 65 6e 65 76  65 72 20 74 68 65 20 75  |d whenever the u|
000a1950  73 65 72 20 72 65 71 75  65 73 74 73 20 69 74 2e  |ser requests it.|
000a1960  0a 0a 4f 6e 20 73 79 73  74 65 6d 73 20 77 69 74  |..On systems wit|
000a1970  68 20 6e 6f 20 63 6f 6e  63 65 70 74 20 6f 66 20  |h no concept of |
000a1980  65 78 74 65 6e 74 73 20  28 65 67 20 73 74 72 65  |extents (eg stre|
000a1990  61 6d 73 29 20 74 68 69  73 20 73 68 6f 75 6c 64  |ams) this should|
000a19a0  20 2a 6e 6f 74 2a 20 72  65 74 75 72 6e 20 61 6e  | *not* return an|
000a19b0  20 65 72 72 6f 72 2e 0a  44 41 54 41 8c 00 00 00  | error..DATA....|
000a19c0  4b 65 79 62 6f 61 72 64  20 49 44 73 0a 23 50 61  |Keyboard IDs.#Pa|
000a19d0  72 65 6e 74 20 4f 53 5f  49 6e 73 74 61 6c 6c 4b  |rent OS_InstallK|
000a19e0  65 79 48 61 6e 64 6c 65  72 0a 49 44 09 4b 65 79  |eyHandler.ID.Key|
000a19f0  62 6f 61 72 64 20 54 79  70 65 0a 23 4c 69 6e 65  |board Type.#Line|
000a1a00  0a 31 09 73 74 61 6e 64  61 72 64 20 41 72 63 68  |.1.standard Arch|
000a1a10  69 6d 65 64 65 73 20 6b  65 79 62 6f 61 72 64 0a  |imedes keyboard.|
000a1a20  32 09 41 34 20 69 6e 74  65 72 6e 61 6c 20 6b 65  |2.A4 internal ke|
000a1a30  79 62 6f 61 72 64 2c 20  50 43 20 6b 65 79 62 6f  |yboard, PC keybo|
000a1a40  61 72 64 0a 44 41 54 41  80 00 00 00 4d 6f 6e 69  |ard.DATA....Moni|
000a1a50  74 6f 72 20 74 79 70 65  73 0a 23 50 61 72 65 6e  |tor types.#Paren|
000a1a60  74 20 53 65 72 76 69 63  65 5f 34 36 0a 56 61 6c  |t Service_46.Val|
000a1a70  75 65 09 4d 65 61 6e 69  6e 67 0a 23 4c 69 6e 65  |ue.Meaning.#Line|
000a1a80  0a 30 09 53 74 61 6e 64  61 72 64 0a 31 09 4d 75  |.0.Standard.1.Mu|
000a1a90  6c 74 69 2d 66 72 65 71  75 65 6e 63 79 0a 32 09  |lti-frequency.2.|
000a1aa0  48 69 2d 72 65 73 20 6d  6f 6e 6f 0a 33 09 56 47  |Hi-res mono.3.VG|
000a1ab0  41 0a 34 09 53 75 70 65  72 20 56 47 41 0a 35 09  |A.4.Super VGA.5.|
000a1ac0  4c 43 44 0a 44 41 54 41  b9 01 00 00 4f 53 5f 43  |LCD.DATA....OS_C|
000a1ad0  61 6c 6c 41 53 57 49 20  20 28 26 36 46 29 0a 23  |allASWI  (&6F).#|
000a1ae0  50 61 72 65 6e 74 20 4f  53 5f 0a 3d 3e 09 52 30  |Parent OS_.=>.R0|
000a1af0  2d 52 39 20 3d 09 70 61  72 61 6d 65 74 65 72 73  |-R9 =.parameters|
000a1b00  20 66 6f 72 20 53 57 49  0a 09 52 31 30 20 3d 09  | for SWI..R10 =.|
000a1b10  53 57 49 20 74 6f 20 63  61 6c 6c 0a 3c 3d 09 52  |SWI to call.<=.R|
000a1b20  30 2d 52 39 20 61 73 20  64 65 66 69 6e 65 64 20  |0-R9 as defined |
000a1b30  62 79 20 53 57 49 20 63  61 6c 6c 65 64 0a 09 52  |by SWI called..R|
000a1b40  31 30 20 70 72 65 73 65  72 76 65 64 0a 0a 54 68  |10 preserved..Th|
000a1b50  69 73 20 63 61 6c 6c 73  20 74 68 65 20 53 57 49  |is calls the SWI|
000a1b60  20 67 69 76 65 6e 20 69  6e 20 52 31 30 2e 20 54  | given in R10. T|
000a1b70  6f 20 63 61 6c 6c 20 61  6e 20 58 20 53 57 49 20  |o call an X SWI |
000a1b80  73 65 74 20 74 68 65 20  58 20 62 69 74 20 69 6e  |set the X bit in|
000a1b90  20 52 31 30 20 2d 20 74  68 65 72 65 20 69 73 20  | R10 - there is |
000a1ba0  6e 6f 20 64 69 66 66 65  72 65 6e 63 65 20 62 65  |no difference be|
000a1bb0  74 77 65 65 6e 20 4f 53  5f 43 61 6c 6c 41 53 57  |tween OS_CallASW|
000a1bc0  49 20 61 6e 64 20 58 4f  53 5f 43 61 6c 6c 41 53  |I and XOS_CallAS|
000a1bd0  57 49 2e 0a 0a 41 73 20  4f 53 5f 43 61 6c 6c 41  |WI...As OS_CallA|
000a1be0  53 57 49 20 22 63 6f 72  72 75 70 74 73 22 20 74  |SWI "corrupts" t|
000a1bf0  68 65 20 70 72 6f 63 65  73 73 6f 72 20 66 6c 61  |he processor fla|
000a1c00  67 73 20 79 6f 75 20 63  61 6e 6e 6f 74 20 75 73  |gs you cannot us|
000a1c10  65 66 75 6c 6c 79 20 63  61 6c 6c 20 3c 4f 53 5f  |efully call <OS_|
000a1c20  42 72 65 61 6b 50 74 3e  20 6f 72 20 3c 4f 53 5f  |BreakPt> or <OS_|
000a1c30  43 61 6c 6c 41 56 65 63  74 6f 72 3e 2e 0a 0a 49  |CallAVector>...I|
000a1c40  6e 20 61 6e 20 41 50 43  53 2d 52 20 70 72 6f 67  |n an APCS-R prog|
000a1c50  72 61 6d 20 3c 4f 53 5f  43 61 6c 6c 41 53 57 49  |ram <OS_CallASWI|
000a1c60  52 31 32 3e 20 73 68 6f  75 6c 64 20 62 65 20 75  |R12> should be u|
000a1c70  73 65 64 20 69 6e 73 74  65 61 64 2e 0a 00 00 00  |sed instead.....|
000a1c80  44 41 54 41 86 01 00 00  4f 53 5f 43 61 6c 6c 41  |DATA....OS_CallA|
000a1c90  53 57 49 52 31 32 20 20  28 26 37 31 29 0a 23 50  |SWIR12  (&71).#P|
000a1ca0  61 72 65 6e 74 20 4f 53  5f 0a 3d 3e 09 52 30 2d  |arent OS_.=>.R0-|
000a1cb0  52 39 20 3d 09 70 61 72  61 6d 65 74 65 72 73 20  |R9 =.parameters |
000a1cc0  66 6f 72 20 53 57 49 0a  09 52 31 32 20 3d 09 53  |for SWI..R12 =.S|
000a1cd0  57 49 20 74 6f 20 63 61  6c 6c 0a 3c 3d 09 52 30  |WI to call.<=.R0|
000a1ce0  2d 52 39 20 61 73 20 64  65 66 69 6e 65 64 20 62  |-R9 as defined b|
000a1cf0  79 20 53 57 49 20 63 61  6c 6c 65 64 0a 09 52 31  |y SWI called..R1|
000a1d00  32 20 70 72 65 73 65 72  76 65 64 0a 0a 54 68 69  |2 preserved..Thi|
000a1d10  73 20 63 61 6c 6c 73 20  74 68 65 20 53 57 49 20  |s calls the SWI |
000a1d20  67 69 76 65 6e 20 69 6e  20 52 31 32 2e 20 54 6f  |given in R12. To|
000a1d30  20 63 61 6c 6c 20 61 6e  20 58 20 53 57 49 20 73  | call an X SWI s|
000a1d40  65 74 20 74 68 65 20 58  20 62 69 74 20 69 6e 20  |et the X bit in |
000a1d50  52 31 32 20 2d 20 74 68  65 72 65 20 69 73 20 6e  |R12 - there is n|
000a1d60  6f 20 64 69 66 66 65 72  65 6e 63 65 20 62 65 74  |o difference bet|
000a1d70  77 65 65 6e 20 4f 53 5f  43 61 6c 6c 41 53 57 49  |ween OS_CallASWI|
000a1d80  52 31 32 20 61 6e 64 20  58 4f 53 5f 43 61 6c 6c  |R12 and XOS_Call|
000a1d90  41 53 57 49 52 31 32 2e  0a 0a 41 73 20 4f 53 5f  |ASWIR12...As OS_|
000a1da0  43 61 6c 6c 41 53 57 49  52 31 32 20 22 63 6f 72  |CallASWIR12 "cor|
000a1db0  72 75 70 74 73 22 20 74  68 65 20 70 72 6f 63 65  |rupts" the proce|
000a1dc0  73 73 6f 72 20 66 6c 61  67 73 20 79 6f 75 20 63  |ssor flags you c|
000a1dd0  61 6e 6e 6f 74 20 75 73  65 66 75 6c 6c 79 20 63  |annot usefully c|
000a1de0  61 6c 6c 20 3c 4f 53 5f  42 72 65 61 6b 50 74 3e  |all <OS_BreakPt>|
000a1df0  20 6f 72 20 3c 4f 53 5f  43 61 6c 6c 41 56 65 63  | or <OS_CallAVec|
000a1e00  74 6f 72 3e 2e 0a 00 00  44 41 54 41 07 02 00 00  |tor>....DATA....|
000a1e10  4f 53 5f 53 70 72 69 74  65 4f 70 20 20 28 26 32  |OS_SpriteOp  (&2|
000a1e20  45 29 0a 23 50 61 72 65  6e 74 20 4f 53 5f 0a 3d  |E).#Parent OS_.=|
000a1e30  3e 09 52 30 20 3d 09 3c  72 65 61 73 6f 6e 20 63  |>.R0 =.<reason c|
000a1e40  6f 64 65 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |ode=>os_spriteop|
000a1e50  5f 52 65 61 73 6f 6e 3e  0a 0a 54 68 69 73 20 53  |_Reason>..This S|
000a1e60  57 49 20 63 6f 6e 74 72  6f 6c 73 20 74 68 65 20  |WI controls the |
000a1e70  73 70 72 69 74 65 20 73  79 73 74 65 6d 2e 20 52  |sprite system. R|
000a1e80  31 20 61 6e 64 20 52 32  20 69 73 20 6f 66 74 65  |1 and R2 is ofte|
000a1e90  6e 20 75 73 65 64 20 74  6f 20 73 65 6c 65 63 74  |n used to select|
000a1ea0  20 61 20 73 70 72 69 74  65 2e 20 57 68 65 6e 20  | a sprite. When |
000a1eb0  74 68 65 79 20 61 72 65  2c 20 74 68 65 20 66 6f  |they are, the fo|
000a1ec0  6c 6c 6f 77 69 6e 67 20  61 70 70 6c 69 65 73 20  |llowing applies |
000a1ed0  3a 0a 0a 7b 66 2a 7d 52  30 20 62 69 74 73 7b 66  |:..{f*}R0 bits{f|
000a1ee0  3b 54 61 62 7d 0a 38 20  26 20 39 09 09 52 31 09  |;Tab}.8 & 9..R1.|
000a1ef0  09 09 09 52 32 0a 23 4c  69 6e 65 0a 30 30 20 28  |...R2.#Line.00 (|
000a1f00  2b 20 20 30 29 09 20 09  09 09 09 73 70 72 69 74  |+  0). ....sprit|
000a1f10  65 20 6e 61 6d 65 0a 30  31 20 28 2b 32 35 36 29  |e name.01 (+256)|
000a1f20  09 3c 73 70 72 69 74 65  20 61 72 65 61 3d 3e 6f  |.<sprite area=>o|
000a1f30  73 5f 73 70 72 69 74 65  6f 70 5f 41 72 65 61 3e  |s_spriteop_Area>|
000a1f40  09 73 70 72 69 74 65 20  6e 61 6d 65 0a 31 30 20  |.sprite name.10 |
000a1f50  28 2b 35 31 32 29 09 3c  73 70 72 69 74 65 20 61  |(+512).<sprite a|
000a1f60  72 65 61 3d 3e 6f 73 5f  73 70 72 69 74 65 6f 70  |rea=>os_spriteop|
000a1f70  5f 41 72 65 61 3e 09 3c  73 70 72 69 74 65 20 70  |_Area>.<sprite p|
000a1f80  74 72 3d 3e 6f 73 5f 73  70 72 69 74 65 6f 70 5f  |tr=>os_spriteop_|
000a1f90  70 74 72 3e 0a 0a 49 6e  20 74 68 65 20 66 69 72  |ptr>..In the fir|
000a1fa0  73 74 20 63 61 73 65 2c  20 74 68 65 20 73 79 73  |st case, the sys|
000a1fb0  74 65 6d 20 73 70 72 69  74 65 20 61 72 65 61 20  |tem sprite area |
000a1fc0  69 73 20 75 73 65 64 2e  20 44 6f 20 6e 6f 74 20  |is used. Do not |
000a1fd0  75 73 65 20 74 68 69 73  2e 0a 0a 54 68 69 73 20  |use this...This |
000a1fe0  53 57 49 20 69 73 20 69  6e 64 69 72 65 63 74 65  |SWI is indirecte|
000a1ff0  64 20 76 69 61 20 3c 53  70 72 69 74 65 56 3d 3e  |d via <SpriteV=>|
000a2000  76 65 63 74 6f 72 5f 69  6e 64 65 78 3e 2e 0a 00  |vector_index>...|
000a2010  44 49 52 24 e0 01 00 00  e0 01 00 00 f0 21 0a 00  |DIR$.........!..|
000a2020  48 fd ff ff e5 e4 e0 1b  cf 02 00 00 13 00 00 00  |H...............|
000a2030  00 00 00 00 21 52 6f 6f  74 00 00 00 c0 24 0a 00  |....!Root....$..|
000a2040  48 fd ff ff ea b4 e0 1b  5f 00 00 00 13 00 00 00  |H......._.......|
000a2050  00 00 00 00 5f 62 72 65  61 6b 70 6f 69 6e 74 00  |...._breakpoint.|
000a2060  20 25 0a 00 48 fd ff ff  0f a7 e0 1b be 00 00 00  | %..H...........|
000a2070  13 00 00 00 00 00 00 00  5f 61 70 70 73 70 61 63  |........_appspac|
000a2080  65 00 00 00 e0 25 0a 00  48 fd ff ff 7c c7 e0 1b  |e....%..H...|...|
000a2090  e3 01 00 00 13 00 00 00  00 00 00 00 5f 63 61 6c  |............_cal|
000a20a0  6c 62 61 63 6b 00 00 00  c4 27 0a 00 48 fd ff ff  |lback....'..H...|
000a20b0  b9 9b df 1b 26 01 00 00  13 00 00 00 00 00 00 00  |....&...........|
000a20c0  5f 63 61 6f 00 00 00 00  ec 28 0a 00 48 fd ff ff  |_cao.....(..H...|
000a20d0  74 53 f9 1b 4f 01 00 00  13 00 00 00 00 00 00 00  |tS..O...........|
000a20e0  5f 65 72 72 6f 72 00 00  3c 2a 0a 00 48 fd ff ff  |_error..<*..H...|
000a20f0  aa b8 2c 1e fd 01 00 00  13 00 00 00 00 00 00 00  |..,.............|
000a2100  5f 65 73 63 61 70 65 00  3c 2c 0a 00 48 fd ff ff  |_escape.<,..H...|
000a2110  12 ba e0 1b 13 01 00 00  13 00 00 00 00 00 00 00  |................|
000a2120  5f 65 76 65 6e 74 00 00  50 2d 0a 00 48 fd ff ff  |_event..P-..H...|
000a2130  db bc e0 1b 75 00 00 00  13 00 00 00 00 00 00 00  |....u...........|
000a2140  5f 65 78 69 74 00 00 00  c8 2d 0a 00 48 fd ff ff  |_exit....-..H...|
000a2150  d8 ae e0 1b de 00 00 00  13 00 00 00 00 00 00 00  |................|
000a2160  5f 68 61 72 64 77 61 72  65 00 00 00 a8 2e 0a 00  |_hardware.......|
000a2170  48 fd ff ff 8f a1 e0 1b  6a 00 00 00 13 00 00 00  |H.......j.......|
000a2180  00 00 00 00 5f 6c 69 6d  69 74 00 00 14 2f 0a 00  |...._limit.../..|
000a2190  48 fd ff ff bf aa e0 1b  bf 00 00 00 13 00 00 00  |H...............|
000a21a0  00 00 00 00 5f 72 65 67  69 73 74 65 72 73 00 00  |...._registers..|
000a21b0  d4 2f 0a 00 48 fd ff ff  46 bf e0 1b af 00 00 00  |./..H...F.......|
000a21c0  13 00 00 00 00 00 00 00  5f 75 6b 73 77 69 00 00  |........_ukswi..|
000a21d0  84 30 0a 00 48 fd ff ff  3c c2 e0 1b 6d 00 00 00  |.0..H...<...m...|
000a21e0  13 00 00 00 00 00 00 00  5f 75 70 63 61 6c 6c 00  |........_upcall.|
000a21f0  44 41 54 41 cf 02 00 00  53 79 73 74 65 6d 20 63  |DATA....System c|
000a2200  6f 6e 74 72 6f 6c 20 68  61 6e 64 6c 65 72 73 0a  |ontrol handlers.|
000a2210  23 50 61 72 65 6e 74 20  4f 53 5f 43 68 61 6e 67  |#Parent OS_Chang|
000a2220  65 45 6e 76 69 72 6f 6e  6d 65 6e 74 0a 4e 75 6d  |eEnvironment.Num|
000a2230  62 65 72 09 4d 65 61 6e  69 6e 67 0a 23 4c 69 6e  |ber.Meaning.#Lin|
000a2240  65 0a 30 09 3c 4d 65 6d  6f 72 79 20 6c 69 6d 69  |e.0.<Memory limi|
000a2250  74 3d 3e 4f 53 5f 68 61  6e 64 6c 65 72 73 5f 6c  |t=>OS_handlers_l|
000a2260  69 6d 69 74 3e 0a 31 09  3c 55 6e 64 65 66 69 6e  |imit>.1.<Undefin|
000a2270  65 64 20 69 6e 73 74 72  75 63 74 69 6f 6e 3d 3e  |ed instruction=>|
000a2280  4f 53 5f 68 61 6e 64 6c  65 72 73 5f 68 61 72 64  |OS_handlers_hard|
000a2290  77 61 72 65 3e 0a 32 09  3c 50 72 65 66 65 74 63  |ware>.2.<Prefetc|
000a22a0  68 20 61 62 6f 72 74 3d  3e 4f 53 5f 68 61 6e 64  |h abort=>OS_hand|
000a22b0  6c 65 72 73 5f 68 61 72  64 77 61 72 65 3e 0a 33  |lers_hardware>.3|
000a22c0  09 3c 44 61 74 61 20 61  62 6f 72 74 3d 3e 4f 53  |.<Data abort=>OS|
000a22d0  5f 68 61 6e 64 6c 65 72  73 5f 68 61 72 64 77 61  |_handlers_hardwa|
000a22e0  72 65 3e 0a 34 09 3c 41  64 64 72 65 73 73 20 65  |re>.4.<Address e|
000a22f0  78 63 65 70 74 69 6f 6e  3d 3e 4f 53 5f 68 61 6e  |xception=>OS_han|
000a2300  64 6c 65 72 73 5f 68 61  72 64 77 61 72 65 3e 0a  |dlers_hardware>.|
000a2310  35 09 4f 74 68 65 72 20  65 78 63 65 70 74 69 6f  |5.Other exceptio|
000a2320  6e 73 20 28 72 65 73 65  72 76 65 64 29 0a 36 09  |ns (reserved).6.|
000a2330  3c 45 72 72 6f 72 3d 3e  4f 53 5f 68 61 6e 64 6c  |<Error=>OS_handl|
000a2340  65 72 73 5f 65 72 72 6f  72 3e 0a 37 09 3c 43 61  |ers_error>.7.<Ca|
000a2350  6c 6c 20 62 61 63 6b 3d  3e 4f 53 5f 68 61 6e 64  |ll back=>OS_hand|
000a2360  6c 65 72 73 5f 63 61 6c  6c 62 61 63 6b 3e 0a 38  |lers_callback>.8|
000a2370  09 3c 42 72 65 61 6b 20  70 6f 69 6e 74 3d 3e 4f  |.<Break point=>O|
000a2380  53 5f 68 61 6e 64 6c 65  72 73 5f 62 72 65 61 6b  |S_handlers_break|
000a2390  70 6f 69 6e 74 3e 0a 39  09 3c 45 73 63 61 70 65  |point>.9.<Escape|
000a23a0  3d 3e 4f 53 5f 68 61 6e  64 6c 65 72 73 5f 65 73  |=>OS_handlers_es|
000a23b0  63 61 70 65 3e 0a 31 30  09 3c 45 76 65 6e 74 3d  |cape>.10.<Event=|
000a23c0  3e 4f 53 5f 68 61 6e 64  6c 65 72 73 5f 65 76 65  |>OS_handlers_eve|
000a23d0  6e 74 3e 0a 31 31 09 3c  45 78 69 74 3d 3e 4f 53  |nt>.11.<Exit=>OS|
000a23e0  5f 68 61 6e 64 6c 65 72  73 5f 65 78 69 74 3e 0a  |_handlers_exit>.|
000a23f0  31 32 09 3c 55 6e 75 73  65 64 20 53 57 49 3d 3e  |12.<Unused SWI=>|
000a2400  4f 53 5f 68 61 6e 64 6c  65 72 73 5f 75 6b 73 77  |OS_handlers_uksw|
000a2410  69 3e 0a 31 33 09 3c 45  78 63 65 70 74 69 6f 6e  |i>.13.<Exception|
000a2420  20 72 65 67 69 73 74 65  72 73 3d 3e 4f 53 5f 68  | registers=>OS_h|
000a2430  61 6e 64 6c 65 72 73 5f  72 65 67 69 73 74 65 72  |andlers_register|
000a2440  73 3e 0a 31 34 09 3c 41  70 70 6c 69 63 61 74 69  |s>.14.<Applicati|
000a2450  6f 6e 20 73 70 61 63 65  3d 3e 4f 53 5f 68 61 6e  |on space=>OS_han|
000a2460  64 6c 65 72 73 5f 61 70  70 73 70 61 63 65 3e 0a  |dlers_appspace>.|
000a2470  31 35 09 3c 43 75 72 72  65 6e 74 6c 79 20 61 63  |15.<Currently ac|
000a2480  74 69 76 65 20 6f 62 6a  65 63 74 3d 3e 4f 53 5f  |tive object=>OS_|
000a2490  68 61 6e 64 6c 65 72 73  5f 63 61 6f 3e 0a 31 36  |handlers_cao>.16|
000a24a0  09 3c 55 70 20 43 61 6c  6c 3d 3e 4f 53 5f 68 61  |.<Up Call=>OS_ha|
000a24b0  6e 64 6c 65 72 73 5f 75  70 63 61 6c 6c 3e 0a 00  |ndlers_upcall>..|
000a24c0  44 41 54 41 5f 00 00 00  42 72 65 61 6b 50 6f 69  |DATA_...BreakPoi|
000a24d0  6e 74 20 68 61 6e 64 6c  65 72 0a 23 50 61 72 65  |nt handler.#Pare|
000a24e0  6e 74 20 4f 53 5f 68 61  6e 64 6c 65 72 73 0a 54  |nt OS_handlers.T|
000a24f0  68 69 73 20 69 73 20 63  61 6c 6c 65 64 20 77 68  |his is called wh|
000a2500  65 6e 65 76 65 72 20 3c  4f 53 5f 42 72 65 61 6b  |enever <OS_Break|
000a2510  50 74 3e 20 69 73 20 63  61 6c 6c 65 64 2e 0a 00  |Pt> is called...|
000a2520  44 41 54 41 be 00 00 00  41 70 70 6c 69 63 61 74  |DATA....Applicat|
000a2530  69 6f 6e 20 73 70 61 63  65 0a 23 50 61 72 65 6e  |ion space.#Paren|
000a2540  74 20 4f 53 5f 68 61 6e  64 6c 65 72 73 0a 54 68  |t OS_handlers.Th|
000a2550  69 73 20 69 73 20 74 68  65 20 61 6d 6f 75 6e 74  |is is the amount|
000a2560  20 6f 66 20 72 65 61 64  2f 77 72 69 74 65 20 6d  | of read/write m|
000a2570  65 6d 6f 72 79 20 69 6e  20 61 70 70 6c 69 63 61  |emory in applica|
000a2580  74 69 6f 6e 20 73 70 61  63 65 2e 20 43 6f 6e 73  |tion space. Cons|
000a2590  65 71 75 65 6e 74 6c 79  20 69 74 20 73 68 6f 75  |equently it shou|
000a25a0  6c 64 20 61 6c 77 61 79  73 20 62 65 20 74 68 65  |ld always be the|
000a25b0  20 63 61 73 65 20 74 68  61 74 20 41 70 70 6c 69  | case that Appli|
000a25c0  63 61 74 69 6f 6e 20 73  70 61 63 65 20 3e 3d 20  |cation space >= |
000a25d0  4d 65 6d 6f 72 79 20 4c  69 6d 69 74 2e 0a 00 00  |Memory Limit....|
000a25e0  44 41 54 41 e3 01 00 00  43 61 6c 6c 62 61 63 6b  |DATA....Callback|
000a25f0  20 68 61 6e 64 6c 65 72  0a 23 50 61 72 65 6e 74  | handler.#Parent|
000a2600  20 4f 53 5f 68 61 6e 64  6c 65 72 73 0a 54 68 69  | OS_handlers.Thi|
000a2610  73 20 69 73 20 63 61 6c  6c 65 64 20 77 68 65 6e  |s is called when|
000a2620  65 76 65 72 20 74 68 65  20 43 61 6c 6c 42 61 63  |ever the CallBac|
000a2630  6b 20 66 6c 61 67 20 69  73 20 73 65 74 2c 20 61  |k flag is set, a|
000a2640  6e 64 20 74 68 65 20 73  79 73 74 65 6d 20 65 78  |nd the system ex|
000a2650  69 74 73 20 74 6f 20 55  73 65 72 20 6d 6f 64 65  |its to User mode|
000a2660  20 77 69 74 68 20 69 6e  74 65 72 75 70 74 73 20  | with interupts |
000a2670  65 6e 61 62 6c 65 64 20  28 6e 6f 74 20 77 68 65  |enabled (not whe|
000a2680  6e 20 74 68 65 20 73 79  73 74 65 6d 20 69 73 20  |n the system is |
000a2690  69 64 6c 69 6e 67 29 2e  20 54 68 65 20 43 61 6c  |idling). The Cal|
000a26a0  6c 42 61 63 6b 20 66 6c  61 67 20 69 73 20 73 65  |lBack flag is se|
000a26b0  74 20 65 69 74 68 65 72  20 65 78 70 6c 69 63 74  |t either explict|
000a26c0  6c 79 20 62 79 20 3c 4f  53 5f 53 65 74 43 61 6c  |ly by <OS_SetCal|
000a26d0  6c 42 61 63 6b 3e 2c 20  6f 72 20 69 6d 70 6c 69  |lBack>, or impli|
000a26e0  63 69 74 79 20 62 79 20  72 65 74 75 72 6e 69 6e  |city by returnin|
000a26f0  67 20 77 69 74 68 20 52  31 32 3d 31 20 66 72 6f  |g with R12=1 fro|
000a2700  6d 20 74 68 65 20 3c 65  73 63 61 70 65 3d 3e 2e  |m the <escape=>.|
000a2710  65 73 63 61 70 65 3e 20  6f 72 20 3c 65 76 65 6e  |escape> or <even|
000a2720  74 3d 3e 2e 65 76 65 6e  74 3e 20 68 61 6e 64 6c  |t=>.event> handl|
000a2730  65 72 73 2e 20 54 68 65  20 63 61 6c 6c 62 61 63  |ers. The callbac|
000a2740  6b 20 68 61 6e 64 6c 65  72 20 69 73 20 65 6e 74  |k handler is ent|
000a2750  65 72 65 64 20 69 6e 20  49 52 51 20 6f 72 20 53  |ered in IRQ or S|
000a2760  56 43 20 77 69 74 68 20  69 6e 74 65 72 75 70 74  |VC with interupt|
000a2770  73 20 64 69 73 61 62 6c  65 64 2c 20 61 6e 64 20  |s disabled, and |
000a2780  2a 6d 75 73 74 20 6e 6f  74 2a 20 61 6c 6c 6f 77  |*must not* allow|
000a2790  20 61 20 73 65 63 6f 6e  64 20 43 61 6c 6c 42 61  | a second CallBa|
000a27a0  63 6b 20 62 65 66 6f 72  65 20 74 68 65 20 66 69  |ck before the fi|
000a27b0  72 73 74 20 68 61 73 20  63 6f 6d 70 6c 65 74 65  |rst has complete|
000a27c0  64 2e 0a 00 44 41 54 41  26 01 00 00 43 75 72 72  |d...DATA&...Curr|
000a27d0  65 6e 74 6c 79 20 61 63  74 69 76 65 20 6f 62 6a  |ently active obj|
000a27e0  65 63 74 20 70 6f 69 6e  74 65 72 0a 23 50 61 72  |ect pointer.#Par|
000a27f0  65 6e 74 20 4f 53 5f 68  61 6e 64 6c 65 72 73 0a  |ent OS_handlers.|
000a2800  23 20 53 65 72 76 69 63  65 20 31 31 20 6c 69 6e  |# Service 11 lin|
000a2810  6b 73 20 68 65 72 65 0a  23 20 4f 53 5f 46 53 43  |ks here.# OS_FSC|
000a2820  6f 6e 74 72 6f 6c 20 32  20 6c 69 6e 6b 73 20 68  |ontrol 2 links h|
000a2830  65 72 65 0a 54 68 69 73  20 69 73 20 61 20 70 6f  |ere.This is a po|
000a2840  69 6e 74 65 72 20 74 6f  20 74 68 65 20 61 64 64  |inter to the add|
000a2850  72 65 73 73 20 6f 66 20  74 68 65 20 6c 61 73 74  |ress of the last|
000a2860  0a 8f 09 61 70 70 6c 69  63 61 74 69 6f 6e 20 73  |...application s|
000a2870  74 61 72 74 65 64 0a 8f  09 65 72 72 6f 72 20 68  |tarted...error h|
000a2880  61 6e 64 6c 65 72 20 63  61 6c 6c 65 64 0a 8f 09  |andler called...|
000a2890  65 78 69 74 20 68 61 6e  64 6c 65 72 20 63 61 6c  |exit handler cal|
000a28a0  6c 65 64 0a 77 68 69 63  68 20 61 6c 6c 6f 77 73  |led.which allows|
000a28b0  20 3c 4f 53 5f 4d 6f 64  75 6c 65 3e 20 74 6f 20  | <OS_Module> to |
000a28c0  64 65 74 65 72 6d 69 6e  65 20 77 68 65 74 68 65  |determine whethe|
000a28d0  72 20 61 20 6d 6f 64 75  6c 65 20 63 61 6e 20 62  |r a module can b|
000a28e0  65 20 6b 69 6c 6c 65 64  2e 0a 00 00 44 41 54 41  |e killed....DATA|
000a28f0  4f 01 00 00 45 72 72 6f  72 20 68 61 6e 64 6c 65  |O...Error handle|
000a2900  72 0a 23 50 61 72 65 6e  74 20 4f 53 5f 68 61 6e  |r.#Parent OS_han|
000a2910  64 6c 65 72 73 0a 54 68  69 73 20 69 73 20 63 61  |dlers.This is ca|
000a2920  6c 6c 65 64 20 61 66 74  65 72 20 61 6e 20 65 72  |lled after an er|
000a2930  72 6f 72 20 69 73 20 67  65 6e 65 72 61 74 65 64  |ror is generated|
000a2940  20 28 62 79 20 61 20 6e  6f 6e 2d 58 20 53 57 49  | (by a non-X SWI|
000a2950  2c 20 66 61 74 61 6c 20  68 61 72 64 77 61 72 65  |, fatal hardware|
000a2960  20 65 72 72 6f 72 2c 20  7b 2f 7d 65 74 63 2e 7b  | error, {/}etc.{|
000a2970  2f 7d 29 2c 20 65 6e 74  65 72 65 64 20 69 6e 20  |/}), entered in |
000a2980  75 73 65 72 20 6d 6f 64  65 20 77 69 74 68 20 74  |user mode with t|
000a2990  68 65 20 77 6f 72 6b 73  70 61 63 65 20 69 6e 20  |he workspace in |
000a29a0  7b 2a 7d 52 30 7b 2a 7d  20 28 6e 6f 74 20 52 31  |{*}R0{*} (not R1|
000a29b0  32 29 2e 20 54 68 65 20  62 75 66 66 65 72 20 63  |2). The buffer c|
000a29c0  6f 6e 74 61 69 6e 73 3a  0a 0a 4f 66 66 73 65 74  |ontains:..Offset|
000a29d0  09 43 6f 6e 74 65 6e 74  73 0a 23 4c 69 6e 65 0a  |.Contents.#Line.|
000a29e0  30 09 50 43 20 77 68 65  6e 20 65 72 72 6f 72 20  |0.PC when error |
000a29f0  6f 63 63 75 72 72 65 64  0a 34 09 3c 65 72 72 6f  |occurred.4.<erro|
000a2a00  72 20 6e 75 6d 62 65 72  3d 3e 73 77 69 5f 65 72  |r number=>swi_er|
000a2a10  72 6f 72 62 6c 6f 63 6b  3e 0a 38 09 65 72 72 6f  |rorblock>.8.erro|
000a2a20  72 20 73 74 72 69 6e 67  20 28 75 70 20 74 6f 20  |r string (up to |
000a2a30  32 35 32 20 62 79 74 65  73 29 0a 00 44 41 54 41  |252 bytes)..DATA|
000a2a40  fd 01 00 00 45 73 63 61  70 65 20 68 61 6e 64 6c  |....Escape handl|
000a2a50  65 72 0a 23 50 61 72 65  6e 74 20 4f 53 5f 68 61  |er.#Parent OS_ha|
000a2a60  6e 64 6c 65 72 73 0a 54  68 69 73 20 69 73 20 63  |ndlers.This is c|
000a2a70  61 6c 6c 65 64 20 77 68  65 6e 65 76 65 72 20 61  |alled whenever a|
000a2a80  6e 20 65 73 63 61 70 65  20 63 6f 6e 64 69 74 69  |n escape conditi|
000a2a90  6f 6e 20 69 73 20 64 65  74 65 63 74 65 64 20 61  |on is detected a|
000a2aa0  6e 64 20 74 68 65 20 3c  65 73 63 61 70 65 20 65  |nd the <escape e|
000a2ab0  76 65 6e 74 3d 3e 65 76  65 6e 74 5f 36 3e 20 69  |vent=>event_6> i|
000a2ac0  73 20 64 69 73 61 62 6c  65 64 20 28 65 78 65 63  |s disabled (exec|
000a2ad0  65 70 74 20 66 6f 72 20  63 61 6c 6c 73 20 74 6f  |ept for calls to|
000a2ae0  20 3c 4f 53 5f 42 79 74  65 20 31 32 35 3d 3e 4f  | <OS_Byte 125=>O|
000a2af0  53 5f 42 79 74 65 31 32  35 3e 20 77 68 69 63 68  |S_Byte125> which|
000a2b00  20 61 6c 77 61 79 73 20  63 61 6c 6c 20 74 68 65  | always call the|
000a2b10  20 68 61 6e 64 6c 65 72  29 2e 20 3c 4f 53 5f 42  | handler). <OS_B|
000a2b20  79 74 65 20 31 32 34 3d  3e 4f 53 5f 42 79 74 65  |yte 124=>OS_Byte|
000a2b30  31 32 34 3e 20 61 6e 64  20 3c 31 32 36 3d 3e 4f  |124> and <126=>O|
000a2b40  53 5f 42 79 74 65 31 32  36 3e 20 73 75 67 67 65  |S_Byte126> sugge|
000a2b50  73 74 20 74 68 61 74 20  69 74 20 69 73 20 61 6c  |st that it is al|
000a2b60  73 6f 20 63 61 6c 6c 65  64 20 77 69 74 68 20 52  |so called with R|
000a2b70  31 31 20 62 69 74 20 36  20 63 6c 65 61 72 20 74  |11 bit 6 clear t|
000a2b80  6f 20 63 6c 65 61 72 2f  61 63 6b 6e 6f 77 6c 65  |o clear/acknowle|
000a2b90  64 67 65 20 61 6e 20 65  73 63 61 70 65 20 63 6f  |dge an escape co|
000a2ba0  6e 64 69 74 69 6f 6e 2e  0a 0a 3d 3e 09 52 31 31  |ndition...=>.R11|
000a2bb0  20 3d 09 62 69 74 20 36  20 73 65 74 20 28 69 6d  | =.bit 6 set (im|
000a2bc0  70 6c 69 65 73 20 65 73  63 61 70 65 20 63 6f 6e  |plies escape con|
000a2bd0  64 69 74 69 6f 6e 29 0a  09 52 31 32 20 3d 09 22  |dition)..R12 =."|
000a2be0  77 6f 72 6b 73 70 61 63  65 22 20 2d 20 64 6f 6e  |workspace" - don|
000a2bf0  27 74 20 75 73 65 20 74  68 65 20 76 61 6c 75 65  |'t use the value|
000a2c00  20 31 0a 09 52 31 33 20  3d 09 46 44 20 73 74 61  | 1..R13 =.FD sta|
000a2c10  63 6b 0a 3c 3d 09 52 31  32 20 3d 09 31 20 73 65  |ck.<=.R12 =.1 se|
000a2c20  74 73 20 3c 63 61 6c 6c  62 61 63 6b 3d 3e 2e 63  |ts <callback=>.c|
000a2c30  61 6c 6c 62 61 63 6b 3e  0a 00 00 00 44 41 54 41  |allback>....DATA|
000a2c40  13 01 00 00 45 76 65 6e  74 20 68 61 6e 64 6c 65  |....Event handle|
000a2c50  72 0a 23 50 61 72 65 6e  74 20 4f 53 5f 68 61 6e  |r.#Parent OS_han|
000a2c60  64 6c 65 72 73 0a 54 68  69 73 20 69 73 20 63 61  |dlers.This is ca|
000a2c70  6c 6c 65 64 20 62 79 20  74 68 65 20 64 65 66 61  |lled by the defa|
000a2c80  75 6c 74 20 6f 77 6e 65  72 20 6f 66 20 3c 45 76  |ult owner of <Ev|
000a2c90  65 6e 74 56 3d 3e 56 65  63 74 6f 72 5f 65 76 65  |entV=>Vector_eve|
000a2ca0  6e 74 76 3e 2e 0a 0a 3d  3e 09 52 30 20 3d 09 3c  |ntv>...=>.R0 =.<|
000a2cb0  45 76 65 6e 74 20 6e 75  6d 62 65 72 3d 3e 65 76  |Event number=>ev|
000a2cc0  65 6e 74 5f 69 6e 64 65  78 3e 0a 09 4f 74 68 65  |ent_index>..Othe|
000a2cd0  72 20 72 65 67 69 73 74  65 72 73 20 64 65 70 65  |r registers depe|
000a2ce0  6e 64 61 6e 74 20 6f 6e  20 63 61 6c 6c 0a 09 52  |ndant on call..R|
000a2cf0  31 32 20 3d 09 22 77 6f  72 6b 73 70 61 63 65 22  |12 =."workspace"|
000a2d00  20 2d 20 64 6f 6e 27 74  20 75 73 65 20 74 68 65  | - don't use the|
000a2d10  20 76 61 6c 75 65 20 31  0a 09 52 31 33 20 3d 09  | value 1..R13 =.|
000a2d20  46 44 20 73 74 61 63 6b  0a 3c 3d 09 52 31 32 20  |FD stack.<=.R12 |
000a2d30  3d 09 31 20 73 65 74 73  20 3c 63 61 6c 6c 62 61  |=.1 sets <callba|
000a2d40  63 6b 3d 3e 2e 63 61 6c  6c 62 61 63 6b 3e 0a 00  |ck=>.callback>..|
000a2d50  44 41 54 41 75 00 00 00  45 78 69 74 20 68 61 6e  |DATAu...Exit han|
000a2d60  64 6c 65 72 0a 23 50 61  72 65 6e 74 20 4f 53 5f  |dler.#Parent OS_|
000a2d70  68 61 6e 64 6c 65 72 73  0a 54 68 69 73 20 69 73  |handlers.This is|
000a2d80  20 63 61 6c 6c 65 64 20  69 6e 20 55 53 52 20 6d  | called in USR m|
000a2d90  6f 64 65 20 77 68 65 6e  65 76 65 72 20 3c 4f 53  |ode whenever <OS|
000a2da0  5f 45 78 69 74 3e 20 6f  72 20 3c 4f 53 5f 45 78  |_Exit> or <OS_Ex|
000a2db0  69 74 41 6e 64 44 69 65  3e 20 69 73 20 63 61 6c  |itAndDie> is cal|
000a2dc0  6c 65 64 2e 0a 00 00 00  44 41 54 41 de 00 00 00  |led.....DATA....|
000a2dd0  48 61 72 64 77 61 72 65  20 76 65 63 74 6f 72 20  |Hardware vector |
000a2de0  68 61 6e 64 6c 65 72 73  0a 23 50 61 72 65 6e 74  |handlers.#Parent|
000a2df0  20 4f 53 5f 68 61 6e 64  6c 65 72 73 0a 54 68 65  | OS_handlers.The|
000a2e00  20 55 6e 64 65 66 69 6e  65 64 20 69 6e 73 74 72  | Undefined instr|
000a2e10  75 63 74 69 6f 6e 2c 20  50 72 65 66 65 74 63 68  |uction, Prefetch|
000a2e20  20 61 62 6f 72 74 2c 20  44 61 74 61 20 61 62 6f  | abort, Data abo|
000a2e30  72 74 20 61 6e 64 20 41  64 64 72 65 73 73 20 65  |rt and Address e|
000a2e40  78 63 65 70 74 69 6f 6e  20 68 61 6e 64 6c 65 72  |xception handler|
000a2e50  73 20 61 72 65 20 63 61  6c 6c 65 64 20 77 68 65  |s are called whe|
000a2e60  6e 65 76 65 72 20 74 68  65 20 41 52 4d 20 70 72  |never the ARM pr|
000a2e70  6f 63 65 73 73 6f 72 20  67 65 6e 65 72 61 74 65  |ocessor generate|
000a2e80  73 20 74 68 65 20 72 65  73 70 65 63 74 69 76 65  |s the respective|
000a2e90  20 68 61 72 64 77 61 72  65 20 65 78 63 65 70 74  | hardware except|
000a2ea0  69 6f 6e 73 2e 0a 00 00  44 41 54 41 6a 00 00 00  |ions....DATAj...|
000a2eb0  4d 65 6d 6f 72 79 20 6c  69 6d 69 74 0a 23 50 61  |Memory limit.#Pa|
000a2ec0  72 65 6e 74 20 4f 53 5f  68 61 6e 64 6c 65 72 73  |rent OS_handlers|
000a2ed0  0a 54 68 69 73 20 69 73  20 74 68 65 20 6d 61 78  |.This is the max|
000a2ee0  69 6d 75 6d 20 70 65 72  6d 69 74 74 65 64 20 52  |imum permitted R|
000a2ef0  41 4d 20 6c 69 6d 69 74  2c 20 61 73 20 75 73 65  |AM limit, as use|
000a2f00  64 20 62 79 20 3c 4f 53  5f 47 65 74 45 6e 76 3e  |d by <OS_GetEnv>|
000a2f10  2e 0a 00 00 44 41 54 41  bf 00 00 00 45 78 63 65  |....DATA....Exce|
000a2f20  70 74 69 6f 6e 20 72 65  67 69 73 74 65 72 73 0a  |ption registers.|
000a2f30  23 50 61 72 65 6e 74 20  4f 53 5f 68 61 6e 64 6c  |#Parent OS_handl|
000a2f40  65 72 73 0a 54 68 69 73  20 69 73 20 74 68 65 20  |ers.This is the |
000a2f50  61 64 64 72 65 73 73 20  6f 66 20 74 68 65 20 61  |address of the a|
000a2f60  72 65 61 20 69 6e 20 6d  65 6d 6f 72 79 20 77 68  |rea in memory wh|
000a2f70  65 72 65 20 74 68 65 20  72 65 67 69 73 74 65 72  |ere the register|
000a2f80  73 20 61 72 65 20 64 75  6d 70 65 64 2c 20 77 68  |s are dumped, wh|
000a2f90  65 6e 20 6f 6e 65 20 6f  66 20 74 68 65 20 65 78  |en one of the ex|
000a2fa0  63 65 70 74 69 6f 6e 73  20 6f 63 63 75 72 73 2c  |ceptions occurs,|
000a2fb0  20 69 66 20 74 68 65 20  64 65 66 61 75 6c 74 20  | if the default |
000a2fc0  68 61 6e 64 6c 65 72 73  20 61 72 65 20 75 73 65  |handlers are use|
000a2fd0  64 2e 0a 00 44 41 54 41  af 00 00 00 55 6e 75 73  |d...DATA....Unus|
000a2fe0  65 64 20 53 57 49 20 68  61 6e 64 6c 65 72 0a 23  |ed SWI handler.#|
000a2ff0  50 61 72 65 6e 74 20 4f  53 5f 68 61 6e 64 6c 65  |Parent OS_handle|
000a3000  72 73 0a 54 68 69 73 20  69 73 20 63 61 6c 6c 65  |rs.This is calle|
000a3010  64 20 62 79 20 74 68 65  20 64 65 66 61 75 6c 74  |d by the default|
000a3020  20 6f 77 6e 65 72 20 6f  66 20 3c 55 4b 53 57 49  | owner of <UKSWI|
000a3030  56 3d 3e 56 65 63 74 6f  72 5f 75 6b 73 77 69 76  |V=>Vector_ukswiv|
000a3040  3e 2e 0a 0a 3d 3e 09 52  31 31 20 3d 09 53 57 49  |>...=>.R11 =.SWI|
000a3050  20 6e 75 6d 62 65 72 20  28 62 69 74 20 31 37 20  | number (bit 17 |
000a3060  63 6c 65 61 72 29 0a 3c  3d 09 52 31 30 2d 52 31  |clear).<=.R10-R1|
000a3070  32 20 6d 61 79 20 62 65  20 63 6f 72 72 75 70 74  |2 may be corrupt|
000a3080  65 64 0a 00 44 41 54 41  6d 00 00 00 55 70 63 61  |ed..DATAm...Upca|
000a3090  6c 6c 20 68 61 6e 64 6c  65 72 0a 23 50 61 72 65  |ll handler.#Pare|
000a30a0  6e 74 20 4f 53 5f 68 61  6e 64 6c 65 72 73 0a 54  |nt OS_handlers.T|
000a30b0  68 69 73 20 69 73 20 63  61 6c 6c 65 64 20 62 79  |his is called by|
000a30c0  20 74 68 65 20 64 65 66  61 75 6c 74 20 6f 77 6e  | the default own|
000a30d0  65 72 20 6f 66 20 3c 55  70 43 61 6c 6c 56 3d 3e  |er of <UpCallV=>|
000a30e0  56 65 63 74 6f 72 5f 75  70 63 61 6c 6c 76 3e 2e  |Vector_upcallv>.|
000a30f0  0a 00 00 00 44 41 54 41  c6 09 00 00 4f 53 5f 50  |....DATA....OS_P|
000a3100  72 65 74 74 79 50 72 69  6e 74 20 20 28 26 34 34  |rettyPrint  (&44|
000a3110  29 0a 23 50 61 72 65 6e  74 20 4f 53 5f 0a 57 72  |).#Parent OS_.Wr|
000a3120  69 74 65 20 61 6e 20 69  6e 64 69 72 65 63 74 65  |ite an indirecte|
000a3130  64 20 73 74 72 69 6e 67  20 77 69 74 68 20 73 6f  |d string with so|
000a3140  6d 65 20 66 6f 72 6d 61  74 74 69 6e 67 20 74 6f  |me formatting to|
000a3150  20 61 6c 6c 20 6f 66 20  74 68 65 20 3c 61 63 74  | all of the <act|
000a3160  69 76 65 20 6f 75 74 70  75 74 20 73 74 72 65 61  |ive output strea|
000a3170  6d 73 3d 3e 4f 53 5f 42  79 74 65 30 30 33 3e 2e  |ms=>OS_Byte003>.|
000a3180  0a 0a 3d 3e 09 52 30 20  3d 09 70 6f 69 6e 74 65  |..=>.R0 =.pointe|
000a3190  72 20 74 6f 20 6e 75 6c  6c 20 74 65 72 6d 69 6e  |r to null termin|
000a31a0  61 74 65 64 20 73 74 72  69 6e 67 20 74 6f 20 77  |ated string to w|
000a31b0  72 69 74 65 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |rite..R1 =.point|
000a31c0  65 72 20 74 6f 20 64 69  63 74 69 6f 6e 61 72 79  |er to dictionary|
000a31d0  20 28 30 20 3d 20 3c 52  49 53 43 20 4f 53 20 64  | (0 = <RISC OS d|
000a31e0  69 63 74 69 6f 6e 61 72  79 3d 3e 2e 52 4f 44 3e  |ictionary=>.ROD>|
000a31f0  29 0a 09 52 32 20 3d 09  70 6f 69 6e 74 65 72 20  |)..R2 =.pointer |
000a3200  74 6f 20 6e 75 6c 6c 20  74 65 72 6d 69 6e 61 74  |to null terminat|
000a3210  65 64 20 73 70 65 63 69  61 6c 20 73 74 72 69 6e  |ed special strin|
000a3220  67 0a 3c 3d 09 52 30 2d  52 32 20 70 72 65 73 65  |g.<=.R0-R2 prese|
000a3230  72 76 65 64 0a 0a 54 68  69 73 20 63 61 6c 6c 20  |rved..This call |
000a3240  61 63 74 73 20 6c 69 6b  65 20 3c 4f 53 5f 57 72  |acts like <OS_Wr|
000a3250  69 74 65 30 3e 20 77 69  74 68 20 73 65 76 65 72  |ite0> with sever|
000a3260  61 6c 20 64 69 66 66 65  72 65 6e 63 65 73 3a 0a  |al differences:.|
000a3270  23 49 6e 64 65 6e 74 20  32 0a 8f 20 73 65 76 65  |#Indent 2.. seve|
000a3280  72 61 6c 20 63 68 61 72  61 63 74 65 72 73 20 68  |ral characters h|
000a3290  61 76 65 20 73 70 65 63  69 61 6c 20 6d 65 61 6e  |ave special mean|
000a32a0  69 6e 67 73 20 74 6f 20  4f 53 5f 50 72 65 74 74  |ings to OS_Prett|
000a32b0  79 50 72 69 6e 74 0a 8f  20 49 74 20 77 69 6c 6c  |yPrint.. It will|
000a32c0  20 62 72 65 61 6b 20 61  20 6c 69 6e 65 20 61 74  | break a line at|
000a32d0  20 61 20 73 70 61 63 65  20 69 66 20 74 68 65 20  | a space if the |
000a32e0  6e 65 78 74 20 77 6f 72  64 20 77 69 6c 6c 20 6e  |next word will n|
000a32f0  6f 74 20 66 69 74 20 6f  6e 20 74 68 65 20 6c 69  |ot fit on the li|
000a3300  6e 65 2c 20 69 74 20 77  69 6c 6c 20 6e 6f 74 20  |ne, it will not |
000a3310  64 6f 20 74 68 69 73 20  61 74 20 68 61 72 64 20  |do this at hard |
000a3320  73 70 61 63 65 0a 8f 20  43 6f 6d 70 61 63 74 65  |space.. Compacte|
000a3330  64 20 74 65 78 74 20 69  73 20 68 61 6e 64 6c 65  |d text is handle|
000a3340  64 0a 8f 20 43 52 20 63  61 75 73 65 73 20 61 20  |d.. CR causes a |
000a3350  6e 65 77 6c 69 6e 65 20  74 6f 20 62 65 20 67 65  |newline to be ge|
000a3360  6e 65 72 61 74 65 64 0a  8f 20 54 41 42 20 63 61  |nerated.. TAB ca|
000a3370  75 73 65 73 20 61 20 74  61 62 75 6c 61 74 69 6f  |uses a tabulatio|
000a3380  6e 20 74 6f 20 74 68 65  20 6e 65 78 74 20 6d 75  |n to the next mu|
000a3390  6c 74 69 70 6c 65 20 6f  66 20 65 69 67 68 74 20  |ltiple of eight |
000a33a0  63 68 61 72 73 0a 8f 20  41 53 43 49 49 20 33 31  |chars.. ASCII 31|
000a33b0  20 69 73 20 61 20 68 61  72 64 20 73 70 61 63 65  | is a hard space|
000a33c0  0a 8f 20 45 53 43 20 28  41 53 43 49 49 20 32 37  |.. ESC (ASCII 27|
000a33d0  29 20 69 6e 64 69 63 61  74 65 73 20 74 68 61 74  |) indicates that|
000a33e0  20 61 20 64 69 63 74 69  6f 6e 61 72 79 20 65 6e  | a dictionary en|
000a33f0  74 72 79 20 73 68 6f 75  6c 64 20 62 65 20 73 75  |try should be su|
000a3400  62 73 74 69 74 75 74 65  64 0a 23 49 6e 64 65 6e  |bstituted.#Inden|
000a3410  74 0a 0a 43 6f 6d 70 61  63 74 65 64 20 74 65 78  |t..Compacted tex|
000a3420  74 20 75 73 65 73 20 61  6e 20 65 73 63 61 70 65  |t uses an escape|
000a3430  20 63 68 61 72 61 63 74  65 72 20 69 6e 20 74 68  | character in th|
000a3440  65 20 70 72 69 6e 74 20  73 74 72 69 6e 67 20 74  |e print string t|
000a3450  6f 20 69 6e 64 69 63 61  74 65 20 61 20 64 69 63  |o indicate a dic|
000a3460  74 69 6f 6e 61 72 79 20  65 6e 74 72 79 2e 20 49  |tionary entry. I|
000a3470  74 20 69 73 20 66 6f 6c  6c 6f 77 65 64 20 69 6d  |t is followed im|
000a3480  6d 65 64 69 61 74 65 6c  79 20 62 79 20 61 20 62  |mediately by a b|
000a3490  79 74 65 20 77 68 69 63  68 20 69 73 20 74 68 65  |yte which is the|
000a34a0  20 64 69 63 74 69 6f 6e  61 72 79 20 65 6e 74 72  | dictionary entr|
000a34b0  79 20 6e 75 6d 62 65 72  2e 20 49 66 20 74 68 69  |y number. If thi|
000a34c0  73 20 62 79 74 65 20 69  73 20 69 6e 20 74 68 65  |s byte is in the|
000a34d0  20 72 61 6e 67 65 20 31  2d 32 35 35 2c 20 74 68  | range 1-255, th|
000a34e0  65 6e 20 74 68 65 20 61  70 70 72 6f 70 72 69 61  |en the appropria|
000a34f0  74 65 20 73 74 72 69 6e  67 20 69 6e 20 74 68 65  |te string in the|
000a3500  20 64 69 63 74 69 6f 6e  61 72 79 20 69 73 20 73  | dictionary is s|
000a3510  75 62 73 69 74 75 74 65  64 2e 20 49 66 20 69 74  |ubsituted. If it|
000a3520  73 20 30 2c 20 74 68 65  6e 20 74 68 65 20 73 70  |s 0, then the sp|
000a3530  65 63 69 61 6c 20 73 74  72 69 6e 67 20 70 6f 69  |ecial string poi|
000a3540  6e 74 65 64 20 74 6f 20  62 79 20 52 32 20 69 73  |nted to by R2 is|
000a3550  20 73 75 62 73 69 74 75  74 65 64 2e 20 28 54 68  | subsituted. (Th|
000a3560  69 73 20 69 73 20 75 73  65 64 20 69 6e 20 70 61  |is is used in pa|
000a3570  72 74 69 63 75 6c 61 72  20 62 79 20 74 68 65 20  |rticular by the |
000a3580  2a 48 65 6c 70 20 63 6f  6d 6d 61 6e 64 2e 29 0a  |*Help command.).|
000a3590  0a 54 68 65 20 66 6f 72  6d 61 74 20 6f 66 20 61  |.The format of a|
000a35a0  6e 20 64 69 63 74 69 6f  6e 61 72 79 20 69 73 20  |n dictionary is |
000a35b0  61 20 6c 69 6e 65 61 72  20 6c 69 73 74 20 6f 66  |a linear list of|
000a35c0  20 65 6e 74 72 69 65 73  2c 20 77 68 69 63 68 20  | entries, which |
000a35d0  63 61 6e 20 72 65 63 75  72 73 69 76 65 6c 79 20  |can recursively |
000a35e0  72 65 66 65 72 20 74 6f  20 6f 74 68 65 72 20 64  |refer to other d|
000a35f0  69 63 74 69 6f 6e 61 72  79 20 65 6e 74 72 69 65  |ictionary entrie|
000a3600  73 3b 20 65 61 63 68 20  65 6e 74 72 79 20 69 73  |s; each entry is|
000a3610  20 61 20 6c 65 6e 67 74  68 20 62 79 74 65 20 66  | a length byte f|
000a3620  6f 6c 6c 6f 77 65 64 20  62 79 20 61 20 30 20 74  |ollowed by a 0 t|
000a3630  65 72 6d 69 6e 61 74 65  64 20 73 74 72 69 6e 67  |erminated string|
000a3640  2e 20 54 68 69 73 20 6d  65 61 6e 73 2c 20 74 68  |. This means, th|
000a3650  61 74 20 61 20 64 69 63  74 69 6f 6e 61 72 79 20  |at a dictionary |
000a3660  64 6f 65 73 6e 27 74 20  68 61 76 65 20 74 6f 20  |doesn't have to |
000a3670  68 61 76 65 20 32 35 35  20 65 6e 74 72 69 65 73  |have 255 entries|
000a3680  20 2d 20 69 74 20 63 61  6e 20 62 65 20 65 6e 64  | - it can be end|
000a3690  65 64 20 61 74 20 61 20  70 6f 69 6e 74 20 77 69  |ed at a point wi|
000a36a0  74 68 20 61 20 7a 65 72  6f 20 6c 65 6e 67 74 68  |th a zero length|
000a36b0  20 65 6e 74 72 79 2e 0a  23 53 75 62 70 61 67 65  | entry..#Subpage|
000a36c0  20 52 4f 44 0a 52 49 53  43 20 4f 53 20 64 65 66  | ROD.RISC OS def|
000a36d0  61 75 6c 74 20 64 69 63  74 69 6f 6e 61 72 79 0a  |ault dictionary.|
000a36e0  23 50 61 72 65 6e 74 20  4f 53 5f 50 72 65 74 74  |#Parent OS_Prett|
000a36f0  79 50 72 69 6e 74 0a 54  6f 6b 65 6e 09 53 74 72  |yPrint.Token.Str|
000a3700  69 6e 67 0a 23 4c 69 6e  65 0a 30 09 52 32 0a 31  |ing.#Line.0.R2.1|
000a3710  09 22 53 79 6e 74 61 78  3a 20 2a 22 20 2b 20 52  |."Syntax: *" + R|
000a3720  32 0a 32 09 22 20 74 68  65 20 22 0a 33 09 22 64  |2.2." the ".3."d|
000a3730  69 72 65 63 74 6f 72 22  0a 34 09 22 66 69 6c 69  |irector".4."fili|
000a3740  6e 67 20 73 79 73 74 65  6d 22 0a 35 09 22 63 75  |ng system".5."cu|
000a3750  72 72 65 6e 74 22 0a 36  09 22 20 74 6f 20 61 20  |rrent".6." to a |
000a3760  76 61 72 69 61 62 6c 65  2e 20 4f 74 68 65 72 20  |variable. Other |
000a3770  74 79 70 65 73 20 6f 66  20 76 61 6c 75 65 73 20  |types of values |
000a3780  63 61 6e 20 62 65 20 61  73 73 69 67 6e 65 64 20  |can be assigned |
000a3790  77 69 74 68 20 2a 22 0a  37 09 22 66 69 6c 65 22  |with *".7."file"|
000a37a0  0a 38 09 22 64 65 66 61  75 6c 74 22 0a 39 09 22  |.8."default".9."|
000a37b0  74 69 6f 6e 22 0a 31 30  09 22 2a 43 6f 6e 66 69  |tion".10."*Confi|
000a37c0  67 75 72 65 22 0a 31 31  09 22 6e 61 6d 65 22 0a  |gure".11."name".|
000a37d0  31 32 09 22 20 73 65 72  76 65 72 22 0a 31 33 09  |12." server".13.|
000a37e0  22 6e 75 6d 62 65 72 22  0a 31 34 09 22 53 79 6e  |"number".14."Syn|
000a37f0  74 61 78 20 2a 22 20 2b  20 52 32 20 2b 20 22 20  |tax *" + R2 + " |
000a3800  5c 3c 22 0a 31 35 09 22  20 6f 6e 65 20 6f 72 20  |\<".15." one or |
000a3810  6d 6f 72 65 20 66 69 6c  65 73 20 74 68 61 74 20  |more files that |
000a3820  6d 61 74 63 68 20 74 68  65 20 67 69 76 65 6e 20  |match the given |
000a3830  77 69 6c 64 63 61 72 64  22 0a 31 36 09 22 20 61  |wildcard".16." a|
000a3840  6e 64 20 22 0a 31 37 09  22 72 65 6c 6f 63 61 74  |nd ".17."relocat|
000a3850  61 62 6c 65 20 6d 6f 64  75 6c 65 22 0a 31 38 09  |able module".18.|
000a3860  43 52 20 2b 20 22 43 28  6f 6e 66 69 72 6d 29 22  |CR + "C(onfirm)"|
000a3870  20 2b 20 54 41 42 20 2b  20 22 70 72 6f 6d 70 74  | + TAB + "prompt|
000a3880  20 66 6f 72 20 63 6f 6e  66 6f 72 6d 61 74 69 6f  | for conformatio|
000a3890  6e 20 6f 66 20 65 61 63  68 22 0a 31 39 09 22 73  |n of each".19."s|
000a38a0  65 74 73 20 74 68 65 22  0a 32 30 09 22 53 79 6e  |ets the".20."Syn|
000a38b0  74 61 78 3a 20 2a 22 20  2b 20 52 32 20 2b 20 22  |tax: *" + R2 + "|
000a38c0  20 5b 5c 3c 64 69 73 63  20 73 70 65 63 2e 3e 5d  | [\<disc spec.>]|
000a38d0  0a 32 31 09 22 29 22 20  2b 20 43 52 20 2b 20 22  |.21.")" + CR + "|
000a38e0  56 28 65 72 62 6f 73 65  29 22 20 2b 20 54 41 42  |V(erbose)" + TAB|
000a38f0  20 2b 20 22 70 72 69 6e  74 20 69 6e 66 6f 72 6d  | + "print inform|
000a3900  61 74 69 6f 6e 20 6f 6e  20 65 61 63 68 20 66 69  |ation on each fi|
000a3910  6c 65 20 22 0a 32 33 09  22 73 70 72 69 74 65 4c  |le ".23."spriteL|
000a3920  61 6e 64 73 63 61 70 65  20 5b 5c 3c 58 53 63 61  |andscape [\<XSca|
000a3930  6c 65 3e 20 5b 5c 3c 59  53 63 61 6c 65 3e 20 5b  |le> [\<YScale> [|
000a3940  5c 3c 4d 61 72 67 69 6e  3e 20 5b 5c 3c 54 72 65  |\<Margin> [\<Tre|
000a3950  73 68 6f 6c 64 3e 5d 5d  5d 5d 22 0a 32 34 09 22  |shold>]]]]".24."|
000a3960  20 69 73 20 75 73 65 64  20 74 6f 20 70 72 69 6e  | is used to prin|
000a3970  74 20 61 20 68 61 72 64  20 63 6f 70 79 20 6f 66  |t a hard copy of|
000a3980  20 74 68 65 20 73 63 72  65 65 6e 20 6f 6e 20 45  | the screen on E|
000a3990  50 53 4f 4e 2d 22 0a 32  35 09 22 2e 22 20 2b 20  |PSON-".25."." + |
000a39a0  43 52 20 2b 20 22 4f 70  74 69 6f 6e 73 3a 20 28  |CR + "Options: (|
000a39b0  75 73 65 20 7e 20 74 6f  20 66 6f 72 63 65 20 6f  |use ~ to force o|
000a39c0  66 66 2c 20 65 67 2e 20  7e 22 0a 32 36 09 22 70  |ff, eg. ~".26."p|
000a39d0  72 69 6e 74 65 22 0a 32  37 09 22 53 79 6e 74 61  |rinte".27."Synta|
000a39e0  78 3a 20 2a 22 20 2b 20  52 32 20 2b 20 22 20 5c  |x: *" + R2 + " \|
000a39f0  3c 66 69 6c 65 6e 61 6d  65 3e 22 0a 32 38 09 22  |<filename>".28."|
000a3a00  73 65 6c 65 63 74 22 0a  32 39 09 22 78 70 72 65  |select".29."xpre|
000a3a10  73 73 69 6f 6e 22 0a 33  30 09 22 53 79 6e 74 61  |ssion".30."Synta|
000a3a20  78 3a 20 2a 22 20 2b 20  52 32 20 2b 20 22 20 5b  |x: *" + R2 + " [|
000a3a30  22 0a 33 31 09 22 73 70  72 69 74 65 22 0a 33 32  |".31."sprite".32|
000a3a40  09 22 20 64 69 73 70 6c  61 79 73 22 0a 33 33 09  |." displays".33.|
000a3a50  22 66 72 65 65 20 73 70  61 63 65 22 0a 33 34 09  |"free space".34.|
000a3a60  22 20 28 6f 66 66 29 22  0a 33 35 09 22 6c 69 62  |" (off)".35."lib|
000a3a70  72 61 72 79 22 0a 33 36  09 22 70 61 72 61 6d 65  |rary".36."parame|
000a3a80  74 65 72 22 0a 33 37 09  22 6f 62 6a 65 63 74 22  |ter".37."object"|
000a3a90  0a 33 38 09 22 20 61 6c  6c 20 22 0a 33 39 09 22  |.38." all ".39."|
000a3aa0  64 69 73 63 22 0a 34 30  09 22 20 74 6f 20 22 0a  |disc".40." to ".|
000a3ab0  34 31 09 22 20 69 73 20  22 0a 00 00 44 49 52 24  |41." is "...DIR$|
000a3ac0  c4 00 00 00 c4 00 00 00  80 3b 0a 00 47 fd ff ff  |.........;..G...|
000a3ad0  98 cb 75 13 47 00 00 00  13 00 00 00 00 00 00 00  |..u.G...........|
000a3ae0  21 52 6f 6f 74 00 00 00  c8 3b 0a 00 46 ff ff ff  |!Root....;..F...|
000a3af0  02 d4 63 a1 11 01 00 00  13 00 00 00 00 00 00 00  |..c.............|
000a3b00  4f 70 00 00 dc 3c 0a 00  47 fd ff ff fd 00 be cd  |Op...<..G.......|
000a3b10  d3 00 00 00 13 00 00 00  00 00 00 00 4f 70 31 00  |............Op1.|
000a3b20  b0 3d 0a 00 47 fd ff ff  3c 05 be cd b8 01 00 00  |.=..G...<.......|
000a3b30  13 00 00 00 00 00 00 00  4f 70 30 00 68 3f 0a 00  |........Op0.h?..|
000a3b40  47 fd ff ff 68 09 be cd  9e 01 00 00 13 00 00 00  |G...h...........|
000a3b50  00 00 00 00 4f 70 32 00  08 41 0a 00 47 ff ff ff  |....Op2..A..G...|
000a3b60  b5 0f 76 13 b5 01 00 00  13 00 00 00 00 00 00 00  |..v.............|
000a3b70  48 61 72 64 77 61 72 65  41 64 64 72 65 73 73 00  |HardwareAddress.|
000a3b80  44 41 54 41 47 00 00 00  50 61 72 61 6c 6c 65 6c  |DATAG...Parallel|
000a3b90  0a 23 50 61 72 65 6e 74  20 21 52 6f 6f 74 0a 23  |.#Parent !Root.#|
000a3ba0  50 72 65 66 69 78 20 50  61 72 61 6c 6c 65 6c 5f  |Prefix Parallel_|
000a3bb0  0a 3c 48 61 72 64 77 61  72 65 41 64 64 72 65 73  |.<HardwareAddres|
000a3bc0  73 3e 0a 3c 4f 70 3e 00  44 41 54 41 11 01 00 00  |s>.<Op>.DATA....|
000a3bd0  50 61 72 61 6c 6c 65 6c  5f 4f 70 0a 23 50 61 72  |Parallel_Op.#Par|
000a3be0  65 6e 74 20 50 61 72 61  6c 6c 65 6c 5f 0a 3d 3e  |ent Parallel_.=>|
000a3bf0  09 52 30 20 3d 20 72 65  61 73 6f 6e 20 63 6f 64  |.R0 = reason cod|
000a3c00  65 0a 0a 50 65 72 66 6f  72 6d 73 20 64 69 72 65  |e..Performs dire|
000a3c10  63 74 20 6f 70 65 72 61  74 69 6f 6e 73 20 74 6f  |ct operations to|
000a3c20  20 74 68 65 20 70 61 72  61 6c 6c 65 6c 20 68 61  | the parallel ha|
000a3c30  72 64 77 61 72 65 2e 0a  0a 23 54 61 62 0a 52 65  |rdware...#Tab.Re|
000a3c40  61 73 6f 6e 09 4d 65 61  6e 69 6e 67 0a 23 4c 69  |ason.Meaning.#Li|
000a3c50  6e 65 0a 30 09 3c 52 65  61 64 20 64 61 74 61 20  |ne.0.<Read data |
000a3c60  61 6e 64 20 73 74 61 74  75 73 20 72 65 67 69 73  |and status regis|
000a3c70  74 65 72 73 3d 3e 50 61  72 61 6c 6c 65 6c 5f 4f  |ters=>Parallel_O|
000a3c80  70 30 3e 0a 31 09 3c 57  72 69 74 65 20 64 61 74  |p0>.1.<Write dat|
000a3c90  61 20 72 65 67 69 73 74  65 72 73 3d 3e 50 61 72  |a registers=>Par|
000a3ca0  61 6c 6c 65 6c 5f 4f 70  31 3e 0a 32 09 3c 52 65  |allel_Op1>.2.<Re|
000a3cb0  61 64 2f 77 72 69 74 65  20 63 6f 6e 74 72 6f 6c  |ad/write control|
000a3cc0  20 72 65 67 69 73 74 65  72 3d 3e 50 61 72 61 6c  | register=>Paral|
000a3cd0  6c 65 6c 5f 4f 70 32 3e  0a 00 00 00 44 41 54 41  |lel_Op2>....DATA|
000a3ce0  d3 00 00 00 50 61 72 61  6c 6c 65 6c 5f 4f 70 20  |....Parallel_Op |
000a3cf0  31 0a 23 50 61 72 65 6e  74 20 50 61 72 61 6c 6c  |1.#Parent Parall|
000a3d00  65 6c 5f 0a 3d 3e 09 52  30 20 3d 09 31 0a 09 52  |el_.=>.R0 =.1..R|
000a3d10  31 20 3d 09 64 61 74 61  20 74 6f 20 77 72 69 74  |1 =.data to writ|
000a3d20  65 0a 09 0a 54 68 69 73  20 53 57 49 20 77 72 69  |e...This SWI wri|
000a3d30  74 65 73 20 74 6f 20 74  68 65 20 64 61 74 61 20  |tes to the data |
000a3d40  72 65 67 69 73 74 65 72  20 66 6f 72 20 6f 75 74  |register for out|
000a3d50  70 75 74 20 6f 6e 20 74  68 65 20 70 72 69 6e 74  |put on the print|
000a3d60  65 72 20 70 6f 72 74 2e  20 41 20 63 6f 70 79 20  |er port. A copy |
000a3d70  6f 66 20 74 68 69 73 20  64 61 74 61 20 77 69 6c  |of this data wil|
000a3d80  6c 20 62 65 20 72 65 74  75 72 6e 65 64 20 6f 6e  |l be returned on|
000a3d90  20 74 68 65 20 6e 65 78  74 20 3c 72 65 61 64 3d  | the next <read=|
000a3da0  3e 50 61 72 61 6c 6c 65  6c 5f 4f 70 30 3e 2e 00  |>Parallel_Op0>..|
000a3db0  44 41 54 41 b8 01 00 00  50 61 72 61 6c 6c 65 6c  |DATA....Parallel|
000a3dc0  5f 4f 70 20 30 0a 23 50  61 72 65 6e 74 20 50 61  |_Op 0.#Parent Pa|
000a3dd0  72 61 6c 6c 65 6c 0a 3d  3e 09 52 30 20 3d 09 30  |rallel.=>.R0 =.0|
000a3de0  0a 3c 3d 09 52 31 20 3d  09 64 61 74 61 20 72 65  |.<=.R1 =.data re|
000a3df0  67 69 73 74 65 72 20 63  6f 6e 74 65 6e 74 73 0a  |gister contents.|
000a3e00  09 52 32 20 3d 09 3c 73  74 61 74 75 73 20 72 65  |.R2 =.<status re|
000a3e10  67 69 73 74 65 72 20 63  6f 6e 74 65 6e 74 73 3d  |gister contents=|
000a3e20  3e 2e 62 69 74 73 3e 0a  09 0a 54 68 69 73 20 53  |>.bits>...This S|
000a3e30  57 49 20 72 65 61 64 73  20 74 68 65 20 64 61 74  |WI reads the dat|
000a3e40  61 20 61 6e 64 20 73 74  61 74 75 73 20 72 65 67  |a and status reg|
000a3e50  69 73 74 65 72 73 20 74  61 6b 65 6e 20 66 72 6f  |isters taken fro|
000a3e60  6d 20 74 68 65 20 70 72  69 6e 74 65 72 20 70 6f  |m the printer po|
000a3e70  72 74 2e 20 54 68 65 20  64 61 74 61 20 72 65 67  |rt. The data reg|
000a3e80  69 73 74 65 72 20 69 73  20 65 69 74 65 72 20 74  |ister is eiter t|
000a3e90  68 65 20 63 75 72 72 65  6e 74 20 76 61 6c 75 65  |he current value|
000a3ea0  20 6f 6e 20 74 68 65 20  70 6f 72 74 2c 20 6f 72  | on the port, or|
000a3eb0  20 74 68 65 20 6c 61 73  74 20 76 61 6c 75 65 20  | the last value |
000a3ec0  77 72 69 74 74 65 6e 20  69 66 20 6f 75 74 70 75  |written if outpu|
000a3ed0  74 20 69 73 20 65 6e 61  62 6c 65 64 2e 0a 23 53  |t is enabled..#S|
000a3ee0  75 62 70 61 67 65 20 62  69 74 73 0a 53 74 61 74  |ubpage bits.Stat|
000a3ef0  75 73 20 72 65 67 69 73  74 65 72 20 62 69 74 73  |us register bits|
000a3f00  0a 42 69 74 09 4d 65 61  6e 69 6e 67 0a 23 4c 69  |.Bit.Meaning.#Li|
000a3f10  6e 65 0a 30 09 72 65 73  65 72 76 65 64 0a 31 09  |ne.0.reserved.1.|
000a3f20  72 65 73 65 72 76 65 64  0a 32 09 72 65 73 65 72  |reserved.2.reser|
000a3f30  76 65 64 0a 33 09 45 72  72 6f 72 0a 34 09 53 65  |ved.3.Error.4.Se|
000a3f40  6c 65 63 74 0a 35 09 50  61 70 65 72 20 65 72 72  |lect.5.Paper err|
000a3f50  6f 72 0a 36 09 41 63 6b  6e 6f 77 6c 65 64 67 65  |or.6.Acknowledge|
000a3f60  0a 37 09 42 75 73 79 0a  44 41 54 41 9e 01 00 00  |.7.Busy.DATA....|
000a3f70  50 61 72 61 6c 6c 65 6c  5f 4f 70 20 32 0a 23 50  |Parallel_Op 2.#P|
000a3f80  61 72 65 6e 74 20 50 61  72 61 6c 6c 65 6c 0a 3d  |arent Parallel.=|
000a3f90  3e 09 52 30 20 3d 09 32  0a 09 52 31 20 3d 09 45  |>.R0 =.2..R1 =.E|
000a3fa0  4f 52 20 6d 61 73 6b 0a  09 52 32 20 3d 09 41 4e  |OR mask..R2 =.AN|
000a3fb0  44 20 6d 61 73 6b 0a 0a  3c 3d 09 52 31 20 3d 09  |D mask..<=.R1 =.|
000a3fc0  6f 6c 64 20 63 6f 6e 74  65 6e 74 73 20 6f 66 20  |old contents of |
000a3fd0  72 65 67 69 73 74 65 72  0a 09 52 32 20 3d 09 6e  |register..R2 =.n|
000a3fe0  65 77 20 63 6f 6e 74 65  6e 74 73 20 6f 66 20 72  |ew contents of r|
000a3ff0  65 67 69 73 74 65 72 0a  09 0a 54 68 69 73 20 53  |egister...This S|
000a4000  57 49 20 77 72 69 74 65  73 20 6f 72 20 72 65 61  |WI writes or rea|
000a4010  64 73 20 74 68 65 20 74  68 65 20 3c 63 6f 6e 74  |ds the the <cont|
000a4020  72 6f 6c 20 72 65 67 69  73 74 65 72 3d 3e 2e 62  |rol register=>.b|
000a4030  69 74 73 3e 20 73 65 6e  74 20 74 6f 20 74 68 65  |its> sent to the|
000a4040  20 70 72 69 6e 74 65 72  20 70 6f 72 74 2e 0a 0a  | printer port...|
000a4050  54 6f 20 72 65 61 64 2c  20 75 73 65 20 52 31 3d  |To read, use R1=|
000a4060  30 2c 20 52 32 3d 26 46  46 46 46 46 46 46 46 2e  |0, R2=&FFFFFFFF.|
000a4070  0a 23 53 75 62 70 61 67  65 20 62 69 74 73 0a 43  |.#Subpage bits.C|
000a4080  6f 6e 74 72 6f 6c 20 72  65 67 69 73 74 65 72 20  |ontrol register |
000a4090  62 69 74 73 0a 42 69 74  09 4d 65 61 6e 69 6e 67  |bits.Bit.Meaning|
000a40a0  0a 23 4c 69 6e 65 0a 30  09 53 74 72 6f 62 65 0a  |.#Line.0.Strobe.|
000a40b0  31 09 41 75 74 6f 20 46  65 65 64 0a 32 09 49 6e  |1.Auto Feed.2.In|
000a40c0  69 74 20 28 52 65 73 65  74 29 0a 33 09 53 65 6c  |it (Reset).3.Sel|
000a40d0  65 63 74 20 69 6e 0a 34  09 49 52 51 20 65 6e 61  |ect in.4.IRQ ena|
000a40e0  62 6c 65 0a 35 09 44 69  72 65 63 74 69 6f 6e 0a  |ble.5.Direction.|
000a40f0  36 09 72 65 73 65 72 76  65 64 0a 37 09 72 65 73  |6.reserved.7.res|
000a4100  65 72 76 65 64 0a 00 00  44 41 54 41 b5 01 00 00  |erved...DATA....|
000a4110  50 61 72 61 6c 6c 65 6c  5f 48 61 72 64 77 61 72  |Parallel_Hardwar|
000a4120  65 41 64 64 72 65 73 73  20 20 28 26 34 32 45 43  |eAddress  (&42EC|
000a4130  30 29 0a 23 50 61 72 65  6e 74 20 50 61 72 61 6c  |0).#Parent Paral|
000a4140  6c 65 6c 5f 0a 3c 3d 09  52 30 20 3d 09 41 64 64  |lel_.<=.R0 =.Add|
000a4150  72 65 73 73 20 6f 66 20  70 61 72 61 6c 6c 65 6c  |ress of parallel|
000a4160  20 63 6f 6e 74 72 6f 6c  6c 65 72 20 69 6e 20 6d  | controller in m|
000a4170  65 6d 6f 72 79 20 6d 61  70 2c 20 6f 72 20 30 20  |emory map, or 0 |
000a4180  69 66 20 6e 6f 20 68 61  72 64 77 61 72 65 20 70  |if no hardware p|
000a4190  72 65 73 65 6e 74 20 28  26 33 30 31 30 39 45 30  |resent (&30109E0|
000a41a0  20 69 6e 20 6d 6f 73 74  20 6d 61 63 68 69 6e 65  | in most machine|
000a41b0  73 29 0a 09 52 31 20 3d  09 41 64 64 72 65 73 73  |s)..R1 =.Address|
000a41c0  20 6f 66 20 72 6f 75 74  69 6e 65 20 74 6f 20 62  | of routine to b|
000a41d0  65 20 63 61 6c 6c 65 64  20 69 6e 20 53 56 43 20  |e called in SVC |
000a41e0  6d 6f 64 65 20 74 6f 20  64 6f 3a 20 50 61 72 61  |mode to do: Para|
000a41f0  6c 6c 65 6c 20 63 6f 6e  74 72 6f 6c 20 72 65 67  |llel control reg|
000a4200  69 73 74 65 72 20 3d 20  28 4f 6c 64 20 76 61 6c  |ister = (Old val|
000a4210  75 65 20 41 4e 44 20 52  31 29 20 45 4f 52 20 52  |ue AND R1) EOR R|
000a4220  30 20 6f 72 20 70 72 65  73 65 72 76 65 64 20 69  |0 or preserved i|
000a4230  66 20 52 30 20 77 61 73  20 72 65 74 75 72 6e 65  |f R0 was returne|
000a4240  64 20 61 73 20 30 2e 0a  0a 54 68 69 73 20 53 57  |d as 0...This SW|
000a4250  49 20 72 65 61 64 73 20  74 68 65 20 61 64 64 72  |I reads the addr|
000a4260  65 73 73 20 77 68 69 63  68 20 69 73 20 75 73 65  |ess which is use|
000a4270  64 20 74 6f 20 63 6f 6e  74 72 6f 6c 20 74 68 65  |d to control the|
000a4280  20 70 61 72 61 6c 6c 65  6c 20 70 6f 72 74 20 69  | parallel port i|
000a4290  6e 20 6d 65 6d 6f 72 79  2e 20 54 68 69 73 20 6d  |n memory. This m|
000a42a0  75 73 74 20 62 65 20 61  63 63 65 73 73 65 64 20  |ust be accessed |
000a42b0  69 6e 20 53 56 43 20 6d  6f 64 65 2e 0a 00 00 00  |in SVC mode.....|
000a42c0  44 49 52 24 d8 05 00 00  d8 05 00 00 98 48 0a 00  |DIR$.........H..|
000a42d0  48 fd ff ff e7 c8 63 26  2f 02 00 00 13 00 00 00  |H.....c&/.......|
000a42e0  00 00 00 00 21 52 6f 6f  74 00 00 00 c8 4a 0a 00  |....!Root....J..|
000a42f0  48 fd ff ff 60 fd f1 19  3a 01 00 00 13 00 00 00  |H...`...:.......|
000a4300  00 00 00 00 70 72 69 6e  74 65 72 6e 75 6d 62 65  |....printernumbe|
000a4310  72 73 00 00 04 4c 0a 00  48 ff ff ff 86 44 f2 1a  |rs...L..H....D..|
000a4320  7a 01 00 00 13 00 00 00  00 00 00 00 50 61 67 65  |z...........Page|
000a4330  53 69 7a 65 00 00 00 00  80 4d 0a 00 48 ff ff ff  |Size.....M..H...|
000a4340  20 80 fd 1a 3d 02 00 00  13 00 00 00 00 00 00 00  | ...=...........|
000a4350  41 62 6f 72 74 4a 6f 62  00 00 00 00 c0 4f 0a 00  |AbortJob.....O..|
000a4360  48 ff ff ff 3f a0 00 1b  c1 00 00 00 13 00 00 00  |H...?...........|
000a4370  00 00 00 00 43 61 6e 63  65 6c 4a 6f 62 00 00 00  |....CancelJob...|
000a4380  84 50 0a 00 48 ff ff ff  7a 34 01 1b ef 00 00 00  |.P..H...z4......|
000a4390  13 00 00 00 00 00 00 00  43 61 6e 63 65 6c 4a 6f  |........CancelJo|
000a43a0  62 57 69 74 68 45 72 72  6f 72 00 00 74 51 0a 00  |bWithError..tQ..|
000a43b0  48 ff ff ff cf ff f1 1a  0b 02 00 00 13 00 00 00  |H...............|
000a43c0  00 00 00 00 43 68 65 63  6b 46 65 61 74 75 72 65  |....CheckFeature|
000a43d0  73 00 00 00 80 53 0a 00  48 ff ff ff 65 ef f2 1a  |s....S..H...e...|
000a43e0  ae 00 00 00 13 00 00 00  00 00 00 00 43 75 72 72  |............Curr|
000a43f0  65 6e 74 4a 6f 62 00 00  30 54 0a 00 48 ff ff ff  |entJob..0T..H...|
000a4400  ac d7 b0 26 c4 03 00 00  13 00 00 00 00 00 00 00  |...&............|
000a4410  64 65 63 6c 61 72 65 64  72 69 76 65 72 00 00 00  |declaredriver...|
000a4420  f4 57 0a 00 48 ff ff ff  f2 8f 63 26 43 04 00 00  |.W..H.....c&C...|
000a4430  13 00 00 00 00 00 00 00  44 65 63 6c 61 72 65 46  |........DeclareF|
000a4440  6f 6e 74 00 38 5c 0a 00  48 ff ff ff 9d 50 00 1b  |ont.8\..H....P..|
000a4450  1e 04 00 00 13 00 00 00  00 00 00 00 44 72 61 77  |............Draw|
000a4460  50 61 67 65 00 00 00 00  58 60 0a 00 48 ff ff ff  |Page....X`..H...|
000a4470  de 5c fd 1a c1 01 00 00  13 00 00 00 00 00 00 00  |.\..............|
000a4480  45 6e 64 4a 6f 62 00 00  1c 62 0a 00 48 ff ff ff  |EndJob...b..H...|
000a4490  73 ea b0 26 07 02 00 00  13 00 00 00 00 00 00 00  |s..&............|
000a44a0  65 6e 75 6d 65 72 61 74  65 64 72 69 76 65 72 73  |enumeratedrivers|
000a44b0  00 00 00 00 24 64 0a 00  48 ff ff ff 3e f5 00 1b  |....$d..H...>...|
000a44c0  db 00 00 00 13 00 00 00  00 00 00 00 45 6e 75 6d  |............Enum|
000a44d0  65 72 61 74 65 4a 6f 62  73 00 00 00 00 65 0a 00  |erateJobs....e..|
000a44e0  48 fd ff ff b5 e0 63 26  fa 05 00 00 13 00 00 00  |H.....c&........|
000a44f0  00 00 00 00 66 65 61 74  75 72 65 73 00 00 00 00  |....features....|
000a4500  fc 6a 0a 00 48 ff ff ff  50 0d f3 1a 88 00 00 00  |.j..H...P.......|
000a4510  13 00 00 00 00 00 00 00  46 6f 6e 74 53 57 49 00  |........FontSWI.|
000a4520  84 6b 0a 00 48 ff ff ff  e7 e9 63 26 de 01 00 00  |.k..H.....c&....|
000a4530  13 00 00 00 00 00 00 00  47 65 74 52 65 63 74 61  |........GetRecta|
000a4540  6e 67 6c 65 00 00 00 00  64 6d 0a 00 48 ff ff ff  |ngle....dm..H...|
000a4550  f6 ee 63 26 8c 04 00 00  13 00 00 00 00 00 00 00  |..c&............|
000a4560  47 69 76 65 52 65 63 74  61 6e 67 6c 65 00 00 00  |GiveRectangle...|
000a4570  f0 71 0a 00 48 ff ff ff  c7 29 f2 1a e8 02 00 00  |.q..H....)......|
000a4580  13 00 00 00 00 00 00 00  49 6e 66 6f 00 00 00 00  |........Info....|
000a4590  d8 74 0a 00 48 ff ff ff  23 0c 02 1b 31 02 00 00  |.t..H...#...1...|
000a45a0  13 00 00 00 00 00 00 00  49 6e 73 65 72 74 49 6c  |........InsertIl|
000a45b0  6c 75 73 74 72 61 74 69  6f 6e 00 00 0c 77 0a 00  |lustration...w..|
000a45c0  48 ff ff ff ff fe 96 1b  93 02 00 00 13 00 00 00  |H...............|
000a45d0  00 00 00 00 4d 69 73 63  4f 70 00 00 a0 79 0a 00  |....MiscOp...y..|
000a45e0  48 fd ff ff 03 ba 16 1b  e6 02 00 00 13 00 00 00  |H...............|
000a45f0  00 00 00 00 4d 69 73 63  4f 70 30 00 88 7c 0a 00  |....MiscOp0..|..|
000a4600  48 fd ff ff 6c ac 16 1b  ae 00 00 00 13 00 00 00  |H...l...........|
000a4610  00 00 00 00 4d 69 73 63  4f 70 30 66 6c 61 67 73  |....MiscOp0flags|
000a4620  00 00 00 00 38 7d 0a 00  48 fd ff ff 8e 15 64 26  |....8}..H.....d&|
000a4630  17 03 00 00 13 00 00 00  00 00 00 00 4d 69 73 63  |............Misc|
000a4640  4f 70 31 00 50 80 0a 00  48 fd ff ff 22 3a 64 26  |Op1.P...H...":d&|
000a4650  b8 04 00 00 13 00 00 00  00 00 00 00 4d 69 73 63  |............Misc|
000a4660  4f 70 32 00 08 85 0a 00  48 fd ff ff af 1c 97 1b  |Op2.....H.......|
000a4670  37 04 00 00 13 00 00 00  00 00 00 00 4d 69 73 63  |7...........Misc|
000a4680  4f 70 38 30 30 30 30 30  30 30 00 00 40 89 0a 00  |Op80000000..@...|
000a4690  48 fd ff ff 24 1a 97 1b  66 01 00 00 13 00 00 00  |H...$...f.......|
000a46a0  00 00 00 00 4d 69 73 63  4f 70 38 30 30 30 30 30  |....MiscOp800000|
000a46b0  30 31 00 00 a8 8a 0a 00  48 ff ff ff 91 58 97 1b  |01......H....X..|
000a46c0  71 01 00 00 13 00 00 00  00 00 00 00 4d 69 73 63  |q...........Misc|
000a46d0  4f 70 46 6f 72 44 72 69  76 65 72 00 1c 8c 0a 00  |OpForDriver.....|
000a46e0  48 fd ff ff 51 54 64 26  b8 00 00 00 13 00 00 00  |H...QTd&........|
000a46f0  00 00 00 00 72 65 63 74  61 6e 67 6c 65 00 00 00  |....rectangle...|
000a4700  d4 8c 0a 00 48 ff ff ff  7b b5 14 1b ad 01 00 00  |....H...{.......|
000a4710  13 00 00 00 00 00 00 00  52 65 6d 6f 76 65 44 72  |........RemoveDr|
000a4720  69 76 65 72 00 00 00 00  84 8e 0a 00 48 ff ff ff  |iver........H...|
000a4730  a2 a7 fd 1a e0 00 00 00  13 00 00 00 00 00 00 00  |................|
000a4740  52 65 73 65 74 00 00 00  64 8f 0a 00 48 ff ff ff  |Reset...d...H...|
000a4750  f3 6b 64 26 37 01 00 00  13 00 00 00 00 00 00 00  |.kd&7...........|
000a4760  53 63 72 65 65 6e 44 75  6d 70 00 00 9c 90 0a 00  |ScreenDump......|
000a4770  48 ff ff ff b8 a4 14 1b  d9 01 00 00 13 00 00 00  |H...............|
000a4780  00 00 00 00 53 65 6c 65  63 74 44 72 69 76 65 72  |....SelectDriver|
000a4790  00 00 00 00 78 92 0a 00  48 ff ff ff f6 8a 01 1b  |....x...H.......|
000a47a0  17 02 00 00 13 00 00 00  00 00 00 00 53 65 6c 65  |............Sele|
000a47b0  63 74 49 6c 6c 75 73 74  72 61 74 69 6f 6e 00 00  |ctIllustration..|
000a47c0  90 94 0a 00 48 ff ff ff  cc 81 64 26 36 03 00 00  |....H.....d&6...|
000a47d0  13 00 00 00 00 00 00 00  53 65 74 44 72 69 76 65  |........SetDrive|
000a47e0  72 00 00 00 c8 97 0a 00  48 fd ff ff a1 18 a0 1b  |r.......H.......|
000a47f0  47 03 00 00 13 00 00 00  00 00 00 00 53 65 74 44  |G...........SetD|
000a4800  72 69 76 65 72 62 6c 6f  63 6b 00 00 10 9b 0a 00  |riverblock......|
000a4810  48 ff ff ff 13 9f f1 1a  4f 02 00 00 13 00 00 00  |H.......O.......|
000a4820  00 00 00 00 53 65 74 49  6e 66 6f 00 60 9d 0a 00  |....SetInfo.`...|
000a4830  48 ff ff ff 20 32 f3 1a  b5 01 00 00 13 00 00 00  |H... 2..........|
000a4840  00 00 00 00 53 65 74 50  61 67 65 53 69 7a 65 00  |....SetPageSize.|
000a4850  18 9f 0a 00 48 ff ff ff  4d 1b 01 1b c3 00 00 00  |....H...M.......|
000a4860  13 00 00 00 00 00 00 00  53 65 74 50 72 69 6e 74  |........SetPrint|
000a4870  65 72 00 00 dc 9f 0a 00  48 ff ff ff 0e dc f2 1a  |er......H.......|
000a4880  f1 01 00 00 13 00 00 00  00 00 00 00 53 65 6c 65  |............Sele|
000a4890  63 74 4a 6f 62 00 00 00  44 41 54 41 2f 02 00 00  |ctJob...DATA/...|
000a48a0  50 44 72 69 76 65 72 0a  23 50 61 72 65 6e 74 20  |PDriver.#Parent |
000a48b0  21 52 6f 6f 74 0a 23 50  72 65 66 69 78 20 50 44  |!Root.#Prefix PD|
000a48c0  72 69 76 65 72 5f 0a 23  54 61 62 6c 65 20 43 6f  |river_.#Table Co|
000a48d0  6c 75 6d 6e 73 20 32 0a  20 3c 41 62 6f 72 74 4a  |lumns 2. <AbortJ|
000a48e0  6f 62 3e 0a 20 3c 43 61  6e 63 65 6c 4a 6f 62 3e  |ob>. <CancelJob>|
000a48f0  0a 20 3c 43 61 6e 63 65  6c 4a 6f 62 57 69 74 68  |. <CancelJobWith|
000a4900  45 72 72 6f 72 3e 0a 20  3c 43 68 65 63 6b 46 65  |Error>. <CheckFe|
000a4910  61 74 75 72 65 73 3e 0a  20 3c 43 75 72 72 65 6e  |atures>. <Curren|
000a4920  74 4a 6f 62 3e 0a 2b 3c  44 65 63 6c 61 72 65 44  |tJob>.+<DeclareD|
000a4930  72 69 76 65 72 3e 0a 2b  3c 44 65 63 6c 61 72 65  |river>.+<Declare|
000a4940  46 6f 6e 74 3e 0a 20 3c  44 72 61 77 50 61 67 65  |Font>. <DrawPage|
000a4950  3e 0a 20 3c 45 6e 64 4a  6f 62 3e 0a 2b 3c 45 6e  |>. <EndJob>.+<En|
000a4960  75 6d 65 72 61 74 65 44  72 69 76 65 72 73 3e 0a  |umerateDrivers>.|
000a4970  20 3c 45 6e 75 6d 65 72  61 74 65 4a 6f 62 73 3e  | <EnumerateJobs>|
000a4980  0a 20 3c 46 6f 6e 74 53  57 49 3e 0a 20 3c 47 65  |. <FontSWI>. <Ge|
000a4990  74 52 65 63 74 61 6e 67  6c 65 3e 0a 20 3c 47 69  |tRectangle>. <Gi|
000a49a0  76 65 52 65 63 74 61 6e  67 6c 65 3e 0a 20 3c 49  |veRectangle>. <I|
000a49b0  6e 66 6f 3e 0a 20 3c 49  6e 73 65 72 74 49 6c 6c  |nfo>. <InsertIll|
000a49c0  75 73 74 72 61 74 69 6f  6e 3e 0a 2b 4a 50 45 47  |ustration>.+JPEG|
000a49d0  53 57 49 0a 2b 3c 4d 69  73 63 4f 70 3e 0a 2b 3c  |SWI.+<MiscOp>.+<|
000a49e0  4d 69 73 63 4f 70 46 6f  72 44 72 69 76 65 72 3e  |MiscOpForDriver>|
000a49f0  0a 20 3c 50 61 67 65 53  69 7a 65 3e 0a 2b 3c 52  |. <PageSize>.+<R|
000a4a00  65 6d 6f 76 65 44 72 69  76 65 72 3e 0a 20 3c 52  |emoveDriver>. <R|
000a4a10  65 73 65 74 3e 0a 20 3c  53 63 72 65 65 6e 44 75  |eset>. <ScreenDu|
000a4a20  6d 70 3e 0a 2b 3c 53 65  6c 65 63 74 44 72 69 76  |mp>.+<SelectDriv|
000a4a30  65 72 3e 0a 20 3c 53 65  6c 65 63 74 49 6c 6c 75  |er>. <SelectIllu|
000a4a40  73 74 72 61 74 69 6f 6e  3e 0a 20 3c 53 65 6c 65  |stration>. <Sele|
000a4a50  63 74 4a 6f 62 3e 0a 2b  3c 53 65 74 44 72 69 76  |ctJob>.+<SetDriv|
000a4a60  65 72 3e 0a 20 3c 53 65  74 49 6e 66 6f 3e 0a 20  |er>. <SetInfo>. |
000a4a70  3c 53 65 74 50 61 67 65  53 69 7a 65 3e 0a 20 3c  |<SetPageSize>. <|
000a4a80  53 65 74 50 72 69 6e 74  65 72 3e 0a 23 45 6e 64  |SetPrinter>.#End|
000a4a90  54 61 62 6c 65 0a 0a 3c  50 72 69 6e 74 65 72 20  |Table..<Printer |
000a4aa0  64 72 69 76 65 72 20 6e  75 6d 62 65 72 73 3d 3e  |driver numbers=>|
000a4ab0  50 44 72 69 76 65 72 5f  70 72 69 6e 74 65 72 6e  |PDriver_printern|
000a4ac0  75 6d 62 65 72 73 3e 00  44 41 54 41 3a 01 00 00  |umbers>.DATA:...|
000a4ad0  50 72 69 6e 74 65 72 20  64 72 69 76 65 72 20 6e  |Printer driver n|
000a4ae0  75 6d 62 65 72 73 0a 23  50 61 72 65 6e 74 20 50  |umbers.#Parent P|
000a4af0  44 72 69 76 65 72 5f 0a  4e 75 6d 62 65 72 09 50  |Driver_.Number.P|
000a4b00  72 69 6e 74 65 72 0a 23  4c 69 6e 65 0a 30 09 50  |rinter.#Line.0.P|
000a4b10  6f 73 74 53 63 72 69 70  74 0a 31 09 45 70 73 6f  |ostScript.1.Epso|
000a4b20  6e 20 46 58 38 30 20 28  6f 72 20 63 6f 6d 70 61  |n FX80 (or compa|
000a4b30  74 69 62 6c 65 29 0a 32  09 48 50 20 4c 61 73 65  |tible).2.HP Lase|
000a4b40  72 4a 65 74 20 20 28 6f  72 20 63 6f 6d 70 61 74  |rJet  (or compat|
000a4b50  69 62 6c 65 29 0a 33 09  49 6e 74 65 67 72 65 78  |ible).3.Integrex|
000a4b60  20 43 6f 6c 6f 75 72 4a  65 74 0a 34 09 46 41 58  | ColourJet.4.FAX|
000a4b70  20 6d 6f 64 65 6d 0a 35  09 44 69 72 65 63 74 20  | modem.5.Direct |
000a4b80  64 72 69 76 65 72 20 6c  61 73 65 72 0a 36 09 43  |driver laser.6.C|
000a4b90  61 73 70 65 6c 20 67 72  61 70 68 69 63 73 20 6c  |aspel graphics l|
000a4ba0  61 6e 67 75 61 67 65 0a  23 20 57 68 61 74 3f 0a  |anguage.# What?.|
000a4bb0  37 09 50 44 75 6d 70 65  72 20 69 6e 74 65 72 66  |7.PDumper interf|
000a4bc0  61 63 65 0a 39 39 09 41  63 65 20 43 6f 6d 70 75  |ace.99.Ace Compu|
000a4bd0  74 69 6e 67 20 45 70 73  6f 6e 20 4a 58 2f 53 74  |ting Epson JX/St|
000a4be0  61 72 20 4c 43 31 30 20  64 72 69 76 65 72 20 6f  |ar LC10 driver o|
000a4bf0  72 20 50 61 69 6e 74 4a  65 74 20 64 72 69 76 65  |r PaintJet drive|
000a4c00  72 0a 00 00 44 41 54 41  7a 01 00 00 50 44 72 69  |r...DATAz...PDri|
000a4c10  76 65 72 5f 50 61 67 65  53 69 7a 65 20 20 28 26  |ver_PageSize  (&|
000a4c20  38 30 31 34 33 29 0a 23  50 61 72 65 6e 74 20 50  |80143).#Parent P|
000a4c30  44 72 69 76 65 72 5f 0a  3c 3d 09 52 31 20 3d 09  |Driver_.<=.R1 =.|
000a4c40  77 69 64 74 68 20 6f 66  20 70 61 70 65 72 0a 09  |width of paper..|
000a4c50  52 32 20 3d 09 68 65 69  67 68 74 20 6f 66 20 70  |R2 =.height of p|
000a4c60  61 70 65 72 0a 09 52 33  20 3d 09 6c 65 66 74 20  |aper..R3 =.left |
000a4c70  65 64 67 65 20 6f 66 20  70 72 69 6e 74 61 62 6c  |edge of printabl|
000a4c80  65 20 61 72 65 61 0a 09  52 34 20 3d 09 62 6f 74  |e area..R4 =.bot|
000a4c90  74 6f 6d 20 65 64 67 65  20 6f 66 20 70 72 69 6e  |tom edge of prin|
000a4ca0  74 61 62 6c 65 20 61 72  65 61 0a 09 52 35 20 3d  |table area..R5 =|
000a4cb0  09 72 69 67 68 74 20 65  64 67 65 20 6f 66 20 70  |.right edge of p|
000a4cc0  72 69 6e 74 61 62 6c 65  20 61 72 65 61 0a 09 52  |rintable area..R|
000a4cd0  36 20 3d 09 74 6f 70 20  65 64 67 65 20 6f 66 20  |6 =.top edge of |
000a4ce0  70 72 69 6e 74 61 62 6c  65 20 61 72 65 61 0a 0a  |printable area..|
000a4cf0  54 68 69 73 20 53 57 49  20 72 65 74 75 72 6e 73  |This SWI returns|
000a4d00  20 74 68 65 20 70 61 70  65 72 20 73 69 7a 65 2c  | the paper size,|
000a4d10  20 61 6e 64 20 74 68 65  20 70 72 69 6e 74 61 62  | and the printab|
000a4d20  6c 65 20 61 72 65 61 20  6f 6e 20 74 68 65 20 70  |le area on the p|
000a4d30  61 70 65 72 20 28 6d 65  61 73 75 72 65 64 20 66  |aper (measured f|
000a4d40  72 6f 6d 20 62 6f 74 74  6f 6d 20 6c 65 66 74 20  |rom bottom left |
000a4d50  6f 66 20 74 68 65 20 70  61 70 65 72 29 2e 20 41  |of the paper). A|
000a4d60  6c 6c 20 76 61 6c 75 65  73 20 61 72 65 20 69 6e  |ll values are in|
000a4d70  20 6d 69 6c 6c 69 70 6f  69 6e 74 73 2e 0a 00 00  | millipoints....|
000a4d80  44 41 54 41 3d 02 00 00  50 44 72 69 76 65 72 5f  |DATA=...PDriver_|
000a4d90  41 62 6f 72 74 4a 6f 62  20 20 28 26 38 30 31 34  |AbortJob  (&8014|
000a4da0  39 29 0a 23 50 61 72 65  6e 74 20 50 44 72 69 76  |9).#Parent PDriv|
000a4db0  65 72 5f 0a 3d 3e 09 52  30 20 3d 09 66 69 6c 65  |er_.=>.R0 =.file|
000a4dc0  20 68 61 6e 64 6c 65 20  6f 66 20 6a 6f 62 0a 0a  | handle of job..|
000a4dd0  54 68 69 73 20 53 57 49  20 65 6e 64 73 20 61 20  |This SWI ends a |
000a4de0  70 72 69 6e 74 20 6a 6f  62 20 61 62 6e 6f 72 6d  |print job abnorm|
000a4df0  61 6c 6c 79 2c 20 61 6e  64 20 77 69 6c 6c 20 72  |ally, and will r|
000a4e00  65 73 75 6c 74 20 69 6e  20 2a 6e 6f 2a 20 66 75  |esult in *no* fu|
000a4e10  72 74 68 65 72 20 6f 75  74 70 75 74 20 28 7b 2f  |rther output ({/|
000a4e20  7d 65 2e 67 2e 7b 2f 7d  20 6e 6f 20 50 6f 73 74  |}e.g.{/} no Post|
000a4e30  53 63 72 69 70 74 20 74  72 61 69 6c 65 72 20 63  |Script trailer c|
000a4e40  6f 6d 6d 65 6e 74 73 29  2e 20 49 74 20 73 68 6f  |omments). It sho|
000a4e50  75 6c 64 20 62 65 20 63  61 6c 6c 65 64 20 69 6d  |uld be called im|
000a4e60  6d 65 64 69 61 74 65 6c  79 20 79 6f 75 20 72 65  |mediately you re|
000a4e70  63 69 65 76 65 20 61 6e  20 65 72 72 6f 72 20 77  |cieve an error w|
000a4e80  68 69 6c 65 20 70 72 69  6e 74 69 6e 67 2c 20 62  |hile printing, b|
000a4e90  65 66 6f 72 65 20 79 6f  75 20 61 74 74 65 6d 70  |efore you attemp|
000a4ea0  74 20 74 6f 20 64 69 73  70 6c 61 79 20 74 68 65  |t to display the|
000a4eb0  20 65 72 72 6f 72 20 6d  65 73 73 61 67 65 2e 0a  | error message..|
000a4ec0  0a 49 66 20 74 68 65 20  6a 6f 62 20 69 6e 20 52  |.If the job in R|
000a4ed0  30 20 69 73 20 74 68 65  20 63 75 72 72 65 6e 74  |0 is the current|
000a4ee0  6c 79 20 61 63 74 69 76  65 20 6a 6f 62 20 74 68  |ly active job th|
000a4ef0  65 6e 20 74 68 65 72 65  20 77 69 6c 6c 20 62 65  |en there will be|
000a4f00  20 6e 6f 20 63 75 72 72  65 6e 74 20 70 72 69 6e  | no current prin|
000a4f10  74 20 6a 6f 62 20 61 66  74 65 72 20 74 68 69 73  |t job after this|
000a4f20  20 63 61 6c 6c 20 2d 20  68 65 6e 63 65 20 70 6c  | call - hence pl|
000a4f30  6f 74 74 69 6e 67 20 63  61 6c 6c 73 20 77 69 6c  |otting calls wil|
000a4f40  6c 20 6e 6f 20 6c 6f 6e  67 65 72 20 62 65 20 69  |l no longer be i|
000a4f50  6e 74 65 72 63 65 70 74  65 64 2e 20 4f 74 68 65  |ntercepted. Othe|
000a4f60  72 77 69 73 65 20 74 68  65 72 65 20 69 73 20 6e  |rwise there is n|
000a4f70  6f 20 65 66 66 65 63 74  20 6f 6e 20 74 68 65 20  |o effect on the |
000a4f80  63 75 72 72 65 6e 74 20  6a 6f 62 20 28 69 66 20  |current job (if |
000a4f90  61 6e 79 29 20 61 6e 64  20 74 68 65 20 73 74 61  |any) and the sta|
000a4fa0  74 65 20 6f 66 20 70 6c  6f 74 74 69 6e 67 20 69  |te of plotting i|
000a4fb0  6e 74 65 72 63 65 70 74  69 6f 6e 2e 0a 00 00 00  |nterception.....|
000a4fc0  44 41 54 41 c1 00 00 00  50 44 72 69 76 65 72 5f  |DATA....PDriver_|
000a4fd0  43 61 6e 63 65 6c 4a 6f  62 20 20 28 26 38 30 31  |CancelJob  (&801|
000a4fe0  34 45 29 0a 23 50 61 72  65 6e 74 20 50 44 72 69  |4E).#Parent PDri|
000a4ff0  76 65 72 5f 0a 3d 3e 09  52 30 20 3d 09 66 69 6c  |ver_.=>.R0 =.fil|
000a5000  65 20 68 61 6e 64 6c 65  20 6f 66 20 6a 6f 62 0a  |e handle of job.|
000a5010  0a 54 68 69 73 20 53 57  49 20 77 69 6c 6c 20 6d  |.This SWI will m|
000a5020  61 6b 65 20 61 6e 79 20  66 75 72 74 68 65 72 20  |ake any further |
000a5030  61 74 74 65 6d 70 74 20  74 6f 20 6f 75 74 70 75  |attempt to outpu|
000a5040  74 20 74 6f 20 74 68 65  20 73 70 65 63 69 66 69  |t to the specifi|
000a5050  65 64 20 70 72 69 6e 74  20 6a 6f 62 20 72 65 74  |ed print job ret|
000a5060  75 72 6e 20 74 68 65 20  65 72 72 6f 72 20 22 50  |urn the error "P|
000a5070  72 69 6e 74 20 63 61 6e  63 65 6c 6c 65 64 22 2e  |rint cancelled".|
000a5080  0a 00 00 00 44 41 54 41  ef 00 00 00 50 44 72 69  |....DATA....PDri|
000a5090  76 65 72 5f 43 61 6e 63  65 6c 4a 6f 62 57 69 74  |ver_CancelJobWit|
000a50a0  68 45 72 72 6f 72 20 20  28 26 38 30 31 35 32 29  |hError  (&80152)|
000a50b0  0a 23 50 61 72 65 6e 74  20 50 44 72 69 76 65 72  |.#Parent PDriver|
000a50c0  5f 0a 3d 3e 09 52 30 20  3d 09 66 69 6c 65 20 68  |_.=>.R0 =.file h|
000a50d0  61 6e 64 6c 65 20 6f 66  20 6a 6f 62 0a 09 52 31  |andle of job..R1|
000a50e0  20 3d 09 70 6f 69 6e 65  72 20 74 6f 20 3c 65 72  | =.poiner to <er|
000a50f0  72 6f 72 20 62 6c 6f 63  6b 3d 3e 73 77 69 5f 65  |ror block=>swi_e|
000a5100  72 72 6f 72 62 6c 6f 63  6b 3e 0a 0a 54 68 69 73  |rrorblock>..This|
000a5110  20 53 57 49 20 77 69 6c  6c 20 6d 61 6b 65 20 61  | SWI will make a|
000a5120  6e 79 20 66 75 72 74 68  65 72 20 61 74 74 65 6d  |ny further attem|
000a5130  70 74 20 74 6f 20 6f 75  74 70 75 74 20 74 6f 20  |pt to output to |
000a5140  74 68 65 20 73 70 65 63  69 66 69 65 64 20 70 72  |the specified pr|
000a5150  69 6e 74 20 6a 6f 62 20  72 65 74 75 72 6e 20 74  |int job return t|
000a5160  68 65 20 73 70 65 63 69  66 65 64 20 65 72 72 6f  |he specifed erro|
000a5170  72 2e 0a 00 44 41 54 41  0b 02 00 00 50 44 72 69  |r...DATA....PDri|
000a5180  76 65 72 5f 43 68 65 63  6b 46 65 61 74 75 72 65  |ver_CheckFeature|
000a5190  73 20 20 28 26 38 30 31  34 32 29 0a 23 50 61 72  |s  (&80142).#Par|
000a51a0  65 6e 74 20 50 44 72 69  76 65 72 5f 0a 3d 3e 09  |ent PDriver_.=>.|
000a51b0  52 30 20 3d 09 6d 61 73  6b 20 66 6f 72 20 3c 66  |R0 =.mask for <f|
000a51c0  65 61 74 75 72 65 73 20  77 6f 72 64 3d 3e 50 44  |eatures word=>PD|
000a51d0  72 69 76 65 72 5f 66 65  61 74 75 72 65 73 3e 0a  |river_features>.|
000a51e0  09 52 31 20 3d 09 76 61  6c 75 65 20 66 6f 72 20  |.R1 =.value for |
000a51f0  3c 66 65 61 74 75 72 65  73 20 77 6f 72 64 3d 3e  |<features word=>|
000a5200  50 44 72 69 76 65 72 5f  66 65 61 74 75 72 65 73  |PDriver_features|
000a5210  3e 0a 3c 3d 09 52 30 2c  20 52 31 20 70 72 65 73  |>.<=.R0, R1 pres|
000a5220  65 72 76 65 64 0a 0a 54  68 69 73 20 53 57 49 20  |erved..This SWI |
000a5230  63 68 65 63 6b 73 20 74  68 65 20 63 61 70 61 62  |checks the capab|
000a5240  69 6c 69 74 69 65 73 20  6f 66 20 74 68 65 20 70  |ilities of the p|
000a5250  72 69 6e 74 65 72 2e 20  49 66 20 28 52 30 20 41  |rinter. If (R0 A|
000a5260  4e 44 20 66 65 61 74 75  72 65 73 20 77 6f 72 64  |ND features word|
000a5270  29 20 3d 20 28 52 30 20  41 4e 44 20 52 31 29 20  |) = (R0 AND R1) |
000a5280  74 68 65 6e 20 74 68 65  20 53 57 49 20 72 65 74  |then the SWI ret|
000a5290  75 72 6e 73 20 69 6d 6d  65 64 69 61 74 65 6c 79  |urns immediately|
000a52a0  2e 20 4f 74 68 65 72 77  69 73 65 20 61 6e 20 65  |. Otherwise an e|
000a52b0  72 72 6f 72 20 69 73 20  67 65 6e 65 72 61 74 65  |rror is generate|
000a52c0  64 20 2a 69 66 2a 20 74  68 65 20 70 72 69 6e 74  |d *if* the print|
000a52d0  65 72 20 64 6f 65 73 20  6e 6f 74 20 73 75 70 70  |er does not supp|
000a52e0  6f 72 74 20 74 68 65 20  72 65 71 75 65 73 74 65  |ort the requeste|
000a52f0  64 20 66 65 61 74 75 72  65 73 20 28 73 6f 20 2a  |d features (so *|
000a5300  6e 6f 2a 20 65 72 72 6f  72 20 69 73 20 67 65 6e  |no* error is gen|
000a5310  65 72 61 74 65 64 20 69  66 20 79 6f 75 20 72 65  |erated if you re|
000a5320  71 75 65 73 74 20 6f 6e  6c 79 20 61 78 69 73 20  |quest only axis |
000a5330  70 72 65 73 65 72 76 69  6e 67 20 72 6f 74 61 74  |preserving rotat|
000a5340  69 6f 6e 73 2c 20 61 6e  64 20 74 68 65 20 64 72  |ions, and the dr|
000a5350  69 76 65 72 20 63 61 6e  20 61 63 74 75 61 6c 6c  |iver can actuall|
000a5360  79 20 70 65 72 66 6f 72  6d 20 61 72 62 69 74 61  |y perform arbita|
000a5370  72 79 20 72 6f 74 61 74  69 6f 6e 73 29 2e 0a 00  |ry rotations)...|
000a5380  44 41 54 41 ae 00 00 00  50 44 72 69 76 65 72 5f  |DATA....PDriver_|
000a5390  43 75 72 72 65 6e 74 4a  6f 62 20 20 28 26 38 30  |CurrentJob  (&80|
000a53a0  31 34 36 29 0a 23 50 61  72 65 6e 74 20 50 44 72  |146).#Parent PDr|
000a53b0  69 76 65 72 5f 0a 3c 3d  09 52 30 20 3d 09 66 69  |iver_.<=.R0 =.fi|
000a53c0  6c 65 20 68 61 6e 64 6c  65 20 6f 66 20 63 75 72  |le handle of cur|
000a53d0  72 65 6e 74 20 6a 6f 62  20 28 6f 72 20 30 20 69  |rent job (or 0 i|
000a53e0  66 20 6e 6f 20 63 75 72  72 65 6e 74 20 6a 6f 62  |f no current job|
000a53f0  29 0a 0a 54 68 69 73 20  53 57 49 20 72 65 74 75  |)..This SWI retu|
000a5400  72 6e 73 20 74 68 65 20  66 69 6c 65 20 68 61 6e  |rns the file han|
000a5410  64 6c 65 20 6f 66 20 74  68 65 20 63 75 72 72 65  |dle of the curre|
000a5420  6e 74 20 70 72 69 6e 74  20 6a 6f 62 2e 0a 00 00  |nt print job....|
000a5430  44 41 54 41 c4 03 00 00  50 44 72 69 76 65 72 5f  |DATA....PDriver_|
000a5440  44 65 63 6c 61 72 65 44  72 69 76 65 72 20 20 28  |DeclareDriver  (|
000a5450  26 38 30 31 35 36 29 0a  23 50 61 72 65 6e 74 20  |&80156).#Parent |
000a5460  50 44 72 69 76 65 72 5f  0a 3d 3e 09 52 30 20 3d  |PDriver_.=>.R0 =|
000a5470  09 70 6f 69 6e 74 65 72  20 74 6f 20 64 72 69 76  |.pointer to driv|
000a5480  65 72 27 73 20 3c 72 65  61 73 6f 6e 20 63 6f 64  |er's <reason cod|
000a5490  65 20 68 61 6e 64 6c 65  72 3d 3e 2e 68 61 6e 64  |e handler=>.hand|
000a54a0  6c 65 72 3e 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |ler>..R1 =.point|
000a54b0  65 72 20 74 6f 20 64 72  69 76 65 72 27 73 20 70  |er to driver's p|
000a54c0  72 69 76 61 74 65 20 77  6f 72 64 0a 09 52 32 20  |rivate word..R2 |
000a54d0  3d 09 3c 70 72 69 6e 74  65 72 20 64 72 69 76 65  |=.<printer drive|
000a54e0  72 20 6e 75 6d 62 65 72  3d 3e 50 44 72 69 76 65  |r number=>PDrive|
000a54f0  72 5f 70 72 69 6e 74 65  72 6e 75 6d 62 65 72 73  |r_printernumbers|
000a5500  3e 0a 0a 54 68 69 73 20  53 57 49 20 72 65 67 69  |>..This SWI regi|
000a5510  73 74 65 72 73 20 61 20  70 72 69 6e 74 65 72 20  |sters a printer |
000a5520  64 72 69 76 65 72 20 77  69 74 68 20 74 68 65 20  |driver with the |
000a5530  50 44 72 69 76 65 72 20  73 68 61 72 65 72 20 6d  |PDriver sharer m|
000a5540  6f 64 75 6c 65 2c 20 61  6e 64 20 73 68 6f 75 6c  |odule, and shoul|
000a5550  64 20 62 65 20 6d 61 64  65 20 62 79 20 74 68 65  |d be made by the|
000a5560  20 64 72 69 76 65 72 20  77 68 65 6e 20 69 74 20  | driver when it |
000a5570  73 74 61 72 74 73 2c 20  6f 72 20 77 68 65 6e 20  |starts, or when |
000a5580  69 74 20 72 65 63 65 69  76 65 73 20 3c 53 65 72  |it receives <Ser|
000a5590  76 69 63 65 5f 50 44 72  69 76 65 72 53 74 61 72  |vice_PDriverStar|
000a55a0  74 69 6e 67 3d 3e 53 65  72 76 69 63 65 5f 36 35  |ting=>Service_65|
000a55b0  3e 2e 20 44 72 69 76 65  72 73 20 63 61 6e 20 62  |>. Drivers can b|
000a55c0  65 20 73 65 6c 65 63 74  65 64 20 77 69 74 68 20  |e selected with |
000a55d0  3c 50 44 72 69 76 65 72  5f 53 65 6c 65 63 74 44  |<PDriver_SelectD|
000a55e0  72 69 76 65 72 3e 2e 0a  23 20 4e 3e 20 4f 64 64  |river>..# N> Odd|
000a55f0  2c 20 74 68 61 74 2e 0a  23 53 75 62 70 61 67 65  |, that..#Subpage|
000a5600  20 68 61 6e 64 6c 65 72  0a 50 44 72 69 76 65 72  | handler.PDriver|
000a5610  20 73 68 61 72 65 72 0a  54 68 65 20 73 68 61 72  | sharer.The shar|
000a5620  65 72 20 69 74 73 65 6c  66 20 68 61 6e 64 6c 65  |er itself handle|
000a5630  73 3a 0a 0a 8f 09 3c 50  44 72 69 76 65 72 5f 44  |s:....<PDriver_D|
000a5640  65 63 6c 61 72 65 44 72  69 76 65 72 3e 0a 8f 09  |eclareDriver>...|
000a5650  3c 50 44 72 69 76 65 72  5f 52 65 6d 6f 76 65 44  |<PDriver_RemoveD|
000a5660  72 69 76 65 72 3e 0a 8f  09 3c 50 44 72 69 76 65  |river>...<PDrive|
000a5670  72 5f 53 65 6c 65 63 74  44 72 69 76 65 72 3e 0a  |r_SelectDriver>.|
000a5680  8f 09 3c 50 44 72 69 76  65 72 5f 45 6e 75 6d 65  |..<PDriver_Enume|
000a5690  72 61 74 65 44 72 69 76  65 72 73 3e 0a 0a 46 6f  |rateDrivers>..Fo|
000a56a0  72 20 61 6c 6c 20 6f 74  68 65 72 20 53 57 49 73  |r all other SWIs|
000a56b0  20 69 74 20 73 65 74 73  20 72 65 67 69 73 74 65  | it sets registe|
000a56c0  72 20 61 73 20 66 6f 6c  6c 6f 77 73 20 61 6e 64  |r as follows and|
000a56d0  20 74 68 65 6e 20 62 72  61 6e 63 68 65 73 20 74  | then branches t|
000a56e0  6f 20 74 68 65 20 64 72  69 76 65 72 27 73 20 72  |o the driver's r|
000a56f0  65 61 73 6f 6e 20 63 6f  64 65 20 68 61 6e 64 6c  |eason code handl|
000a5700  65 72 3a 0a 0a 52 31 31  09 72 65 61 73 6f 6e 20  |er:..R11.reason |
000a5710  63 6f 64 65 20 28 53 57  49 20 6e 75 6d 62 65 72  |code (SWI number|
000a5720  20 2d 20 26 38 30 31 34  30 29 0a 52 31 32 09 70  | - &80140).R12.p|
000a5730  6f 69 6e 74 65 72 20 74  6f 20 70 72 69 76 61 74  |ointer to privat|
000a5740  65 20 77 6f 72 64 20 28  70 61 73 73 65 64 20 74  |e word (passed t|
000a5750  6f 20 50 44 72 69 76 65  72 5f 44 65 63 6c 61 72  |o PDriver_Declar|
000a5760  65 44 72 69 76 65 72 20  69 6e 20 52 31 29 0a 52  |eDriver in R1).R|
000a5770  31 34 09 72 65 74 75 72  6e 20 61 64 64 72 65 73  |14.return addres|
000a5780  73 0a 0a 54 68 65 20 68  61 6e 64 6c 65 72 20 63  |s..The handler c|
000a5790  6f 64 65 20 73 68 6f 75  6c 64 20 69 6d 70 6c 65  |ode should imple|
000a57a0  6d 65 6e 74 20 53 57 49  73 20 61 73 20 64 6f 63  |ment SWIs as doc|
000a57b0  75 6d 65 6e 74 65 64 2c  20 72 65 74 75 72 6e 69  |umented, returni|
000a57c0  6e 67 20 65 72 72 6f 72  73 20 62 79 20 74 68 65  |ng errors by the|
000a57d0  20 63 6f 6e 76 65 6e 74  69 6f 6e 61 6c 20 6d 65  | conventional me|
000a57e0  61 6e 73 20 28 69 6e 20  52 30 2c 20 56 20 73 65  |ans (in R0, V se|
000a57f0  74 29 2e 0a 44 41 54 41  43 04 00 00 50 44 72 69  |t)..DATAC...PDri|
000a5800  76 65 72 5f 44 65 63 6c  61 72 65 46 6f 6e 74 20  |ver_DeclareFont |
000a5810  20 28 26 38 30 31 35 35  29 0a 23 50 61 72 65 6e  | (&80155).#Paren|
000a5820  74 20 50 44 72 69 76 65  72 5f 0a 3d 3e 09 52 30  |t PDriver_.=>.R0|
000a5830  20 3d 09 66 6f 6e 74 20  68 61 6e 64 6c 65 20 28  | =.font handle (|
000a5840  6f 72 20 30 29 0a 09 52  31 20 3d 09 30 20 28 6f  |or 0)..R1 =.0 (o|
000a5850  72 20 66 6f 6e 74 20 6e  61 6d 65 29 0a 09 52 32  |r font name)..R2|
000a5860  20 3d 09 3c 66 6c 61 67  73 3d 3e 2e 66 6c 61 67  | =.<flags=>.flag|
000a5870  73 3e 0a 0a 54 68 69 73  20 53 57 49 20 64 65 63  |s>..This SWI dec|
000a5880  6c 61 72 65 73 20 74 68  65 20 66 6f 6e 74 73 20  |lares the fonts |
000a5890  75 73 65 64 20 69 6e 20  61 20 64 6f 63 75 6d 65  |used in a docume|
000a58a0  6e 74 2c 20 61 6e 64 20  73 68 6f 75 6c 64 20 62  |nt, and should b|
000a58b0  65 20 63 61 6c 6c 65 64  20 66 6f 72 20 65 61 63  |e called for eac|
000a58c0  68 20 3c 64 69 73 74 69  6e 63 74 3d 3e 2e 64 69  |h <distinct=>.di|
000a58d0  73 74 69 6e 63 74 3e 20  66 6f 6e 74 2c 20 65 69  |stinct> font, ei|
000a58e0  74 68 65 72 20 62 79 20  68 61 6e 64 6c 65 20 6f  |ther by handle o|
000a58f0  72 20 62 79 20 6e 61 6d  65 2c 20 61 66 74 65 72  |r by name, after|
000a5900  20 79 6f 75 20 68 61 76  65 20 63 61 6c 6c 65 64  | you have called|
000a5910  20 3c 50 44 72 69 76 65  72 5f 53 65 6c 65 63 74  | <PDriver_Select|
000a5920  4a 6f 62 3e 20 6f 72 20  3c 50 44 72 69 76 65 72  |Job> or <PDriver|
000a5930  5f 53 65 6c 65 63 74 49  6c 6c 75 73 74 72 61 74  |_SelectIllustrat|
000a5940  69 6f 6e 3e 2c 20 62 75  74 20 62 65 66 6f 72 65  |ion>, but before|
000a5950  20 3c 50 44 72 69 76 65  72 5f 44 72 61 77 50 61  | <PDriver_DrawPa|
000a5960  67 65 3e 2e 0a 23 20 43  6f 75 6c 64 20 74 68 61  |ge>..# Could tha|
000a5970  74 20 73 65 6e 74 61 6e  63 65 20 42 45 20 61 6e  |t sentance BE an|
000a5980  79 20 6c 6f 6e 67 65 72  0a 4e 6f 74 20 75 73 69  |y longer.Not usi|
000a5990  6e 67 20 74 68 69 73 20  53 57 49 20 6d 61 79 20  |ng this SWI may |
000a59a0  63 61 75 73 65 20 74 68  65 20 70 72 69 6e 74 65  |cause the printe|
000a59b0  72 20 64 72 69 76 65 72  20 74 6f 20 64 65 66 61  |r driver to defa|
000a59c0  75 6c 74 20 74 6f 20 64  6f 77 6e 6c 6f 61 64 69  |ult to downloadi|
000a59d0  6e 67 20 61 20 6c 6f 74  20 6f 66 20 75 6e 6e 65  |ng a lot of unne|
000a59e0  63 65 73 73 61 72 79 20  66 6f 6e 74 20 69 6e 66  |cessary font inf|
000a59f0  6f 72 6d 61 74 69 6f 6e  2c 20 6f 72 20 66 69 6e  |ormation, or fin|
000a5a00  64 69 6e 67 20 74 68 61  74 20 74 68 65 20 66 6f  |ding that the fo|
000a5a10  6e 74 20 79 6f 75 20 6c  61 74 65 72 20 73 65 6c  |nt you later sel|
000a5a20  65 63 74 20 69 73 20 6e  6f 74 20 61 76 61 69 6c  |ect is not avail|
000a5a30  61 62 6c 65 20 6f 6e 20  74 68 65 20 70 72 69 6e  |able on the prin|
000a5a40  74 65 72 2e 0a 0a 43 68  65 63 6b 20 74 68 65 20  |ter...Check the |
000a5a50  3c 66 65 61 74 75 72 65  73 20 77 6f 72 64 3d 3e  |<features word=>|
000a5a60  50 44 72 69 76 65 72 5f  66 65 61 74 75 72 65 73  |PDriver_features|
000a5a70  3e 20 74 6f 20 76 65 72  69 66 79 20 74 68 61 74  |> to verify that|
000a5a80  20 74 68 65 20 64 72 69  76 65 72 20 64 6f 65 73  | the driver does|
000a5a90  20 73 75 70 70 6f 72 74  20 74 68 69 73 20 53 57  | support this SW|
000a5aa0  49 2e 20 0a 23 53 75 62  70 61 67 65 20 66 6c 61  |I. .#Subpage fla|
000a5ab0  67 73 0a 50 44 72 69 76  65 72 5f 44 65 63 6c 61  |gs.PDriver_Decla|
000a5ac0  72 65 46 6f 6e 74 20 66  6c 61 67 73 0a 42 69 74  |reFont flags.Bit|
000a5ad0  09 4d 65 61 6e 69 6e 67  20 69 66 20 73 65 74 0a  |.Meaning if set.|
000a5ae0  23 4c 69 6e 65 0a 30 09  64 6f 6e 27 74 20 64 6f  |#Line.0.don't do|
000a5af0  77 6e 6c 6f 61 64 20 66  6f 6e 74 73 20 61 62 73  |wnload fonts abs|
000a5b00  65 6e 74 20 66 72 6f 6d  20 64 65 76 69 63 65 20  |ent from device |
000a5b10  28 77 69 6c 6c 20 73 75  62 73 74 69 74 75 74 65  |(will substitute|
000a5b20  20 69 6e 73 74 65 61 64  29 0a 31 09 64 6f 77 6e  | instead).1.down|
000a5b30  6c 6f 61 64 20 6b 65 72  6e 69 6e 67 20 69 6e 66  |load kerning inf|
000a5b40  6f 20 77 69 74 68 20 66  6f 6e 74 0a 23 53 75 62  |o with font.#Sub|
000a5b50  70 61 67 65 20 64 69 73  74 69 6e 63 74 0a 44 69  |page distinct.Di|
000a5b60  73 74 69 6e 63 74 20 66  6f 6e 74 73 0a 46 6f 6e  |stinct fonts.Fon|
000a5b70  74 73 20 61 72 65 20 22  64 69 73 74 69 6e 63 74  |ts are "distinct|
000a5b80  22 20 69 66 20 74 68 65  79 20 64 69 66 66 65 72  |" if they differ|
000a5b90  20 69 6e 20 6e 61 6d 65  2c 20 65 6e 63 6f 64 69  | in name, encodi|
000a5ba0  6e 67 20 6f 72 20 6d 61  74 72 69 78 20 2d 20 69  |ng or matrix - i|
000a5bb0  6e 20 6f 74 68 65 72 77  6f 72 64 73 20 69 66 20  |n otherwords if |
000a5bc0  74 68 65 69 72 20 3c 46  6f 6e 74 20 69 64 65 6e  |their <Font iden|
000a5bd0  74 69 66 69 65 72 73 3d  3e 46 6f 6e 74 5f 69 64  |tifiers=>Font_id|
000a5be0  65 6e 74 69 66 69 65 72  3e 20 64 69 66 66 65 72  |entifier> differ|
000a5bf0  20 69 6e 20 61 6e 79 20  77 61 79 2e 20 53 69 7a  | in any way. Siz|
000a5c00  65 20 61 6e 64 20 63 6f  6c 6f 75 72 20 64 69 66  |e and colour dif|
000a5c10  66 65 72 65 6e 63 65 73  20 64 6f 20 2a 6e 6f 74  |ferences do *not|
000a5c20  2a 20 6d 61 6b 65 20 66  6f 6e 74 73 20 64 69 73  |* make fonts dis|
000a5c30  74 69 6e 63 74 2e 0a 00  44 41 54 41 1e 04 00 00  |tinct...DATA....|
000a5c40  50 44 72 69 76 65 72 5f  44 72 61 77 50 61 67 65  |PDriver_DrawPage|
000a5c50  20 20 28 26 38 30 31 34  43 29 0a 23 50 61 72 65  |  (&8014C).#Pare|
000a5c60  6e 74 20 50 44 72 69 76  65 72 5f 0a 3d 3e 09 52  |nt PDriver_.=>.R|
000a5c70  30 09 6e 75 6d 62 65 72  20 6f 66 20 63 6f 70 69  |0.number of copi|
000a5c80  65 73 20 74 6f 20 70 72  69 6e 74 0a 09 52 31 09  |es to print..R1.|
000a5c90  70 6f 69 6e 74 65 72 20  74 6f 20 34 20 77 6f 72  |pointer to 4 wor|
000a5ca0  64 20 62 6c 6f 63 6b 20  74 6f 20 72 65 63 65 69  |d block to recei|
000a5cb0  76 65 20 3c 72 65 63 74  61 6e 67 6c 65 20 74 6f  |ve <rectangle to|
000a5cc0  20 70 72 69 6e 74 3d 3e  50 44 72 69 76 65 72 5f  | print=>PDriver_|
000a5cd0  72 65 63 74 61 6e 67 6c  65 3e 0a 09 52 32 09 70  |rectangle>..R2.p|
000a5ce0  61 67 65 20 6e 75 6d 62  65 72 20 77 69 74 68 69  |age number withi|
000a5cf0  6e 20 74 68 65 20 64 6f  63 75 6d 65 6e 74 20 28  |n the document (|
000a5d00  66 6f 72 20 75 73 65 72  20 69 6e 66 6f 72 6d 61  |for user informa|
000a5d10  74 69 6f 6e 29 20 6f 72  20 30 0a 09 52 33 09 70  |tion) or 0..R3.p|
000a5d20  6f 69 6e 74 65 72 20 74  6f 20 3c 70 61 67 65 20  |ointer to <page |
000a5d30  6e 75 6d 62 65 72 20 73  74 72 69 6e 67 3d 3e 2e  |number string=>.|
000a5d40  6e 75 6d 62 65 72 3e 20  28 6f 72 20 30 20 66 6f  |number> (or 0 fo|
000a5d50  72 20 6e 6f 6e 65 29 0a  0a 3c 3d 09 52 30 09 30  |r none)..<=.R0.0|
000a5d60  20 69 66 20 66 69 6e 69  73 68 65 64 0a 09 52 31  | if finished..R1|
000a5d70  09 70 72 65 73 65 72 76  65 64 0a 09 52 32 09 49  |.preserved..R2.I|
000a5d80  44 20 77 6f 72 64 20 66  6f 72 20 74 68 69 73 20  |D word for this |
000a5d90  72 65 63 74 61 6e 67 6c  65 0a 09 52 33 09 70 72  |rectangle..R3.pr|
000a5da0  65 73 65 72 76 65 64 20  0a 0a 54 68 69 73 20 53  |eserved ..This S|
000a5db0  57 49 20 69 73 20 63 61  6c 6c 65 64 20 61 66 74  |WI is called aft|
000a5dc0  65 72 20 61 6c 6c 20 72  65 63 74 61 6e 67 6c 65  |er all rectangle|
000a5dd0  73 20 68 61 76 65 20 62  65 65 6e 20 73 70 65 63  |s have been spec|
000a5de0  69 66 69 65 64 20 77 69  74 68 20 3c 50 44 72 69  |ified with <PDri|
000a5df0  76 65 72 5f 47 69 76 65  52 65 63 74 61 6e 67 6c  |ver_GiveRectangl|
000a5e00  65 3e 2c 20 61 6e 64 20  72 65 74 75 72 6e 73 20  |e>, and returns |
000a5e10  74 68 65 20 66 69 72 73  74 20 72 65 63 74 61 6e  |the first rectan|
000a5e20  67 65 20 74 6f 20 70 72  69 6e 74 2e 20 53 75 62  |ge to print. Sub|
000a5e30  73 65 71 75 65 6e 74 20  72 65 63 74 61 6e 67 6c  |sequent rectangl|
000a5e40  65 73 20 61 72 65 20 72  65 74 72 69 65 76 65 64  |es are retrieved|
000a5e50  20 77 69 74 68 20 3c 50  44 72 69 76 65 72 5f 47  | with <PDriver_G|
000a5e60  65 74 52 65 63 74 61 6e  67 6c 65 3e 2e 0a 0a 49  |etRectangle>...I|
000a5e70  66 20 52 30 20 69 73 20  30 20 6f 6e 20 72 65 74  |f R0 is 0 on ret|
000a5e80  75 72 6e 20 74 68 65 6e  20 52 32 20 61 6e 64 20  |urn then R2 and |
000a5e90  74 68 65 20 62 75 66 66  65 72 20 70 6f 69 6e 74  |the buffer point|
000a5ea0  65 64 20 74 6f 20 62 79  20 52 31 20 61 72 65 20  |ed to by R1 are |
000a5eb0  75 6e 64 65 66 69 6e 65  64 2e 20 4f 74 68 65 72  |undefined. Other|
000a5ec0  77 69 73 65 20 52 30 20  67 69 76 65 73 20 74 68  |wise R0 gives th|
000a5ed0  65 20 6e 75 6d 62 65 72  20 6f 66 20 63 6f 70 69  |e number of copi|
000a5ee0  65 73 20 73 74 69 6c 6c  20 74 6f 20 70 72 69 6e  |es still to prin|
000a5ef0  74 20 2d 20 74 68 69 73  20 69 73 20 69 6e 74 65  |t - this is inte|
000a5f00  6e 64 65 64 20 66 6f 72  20 64 69 73 70 6c 61 79  |nded for display|
000a5f10  20 74 6f 20 75 73 65 72  73 20 6f 6e 6c 79 2c 20  | to users only, |
000a5f20  61 73 20 69 74 20 6d 61  79 20 6e 6f 74 20 64 65  |as it may not de|
000a5f30  63 72 65 61 73 65 20 73  6d 6f 6f 74 68 6c 79 2e  |crease smoothly.|
000a5f40  0a 23 73 75 62 70 61 67  65 20 6e 75 6d 62 65 72  |.#subpage number|
000a5f50  0a 50 72 69 6e 74 65 72  20 70 61 67 65 20 6e 75  |.Printer page nu|
000a5f60  6d 62 65 72 20 73 74 72  69 6e 67 73 0a 54 68 65  |mber strings.The|
000a5f70  20 70 61 67 65 20 6e 75  6d 62 65 72 20 73 74 72  | page number str|
000a5f80  69 6e 67 20 73 68 6f 75  6c 64 20 6f 6e 6c 79 20  |ing should only |
000a5f90  63 6f 6e 74 61 69 6e 20  63 68 61 72 61 63 74 65  |contain characte|
000a5fa0  72 73 20 69 6e 20 74 68  65 20 72 61 6e 67 65 20  |rs in the range |
000a5fb0  7b 2a 7d 33 33 7b 2a 7d  2d 31 32 36 20 28 7b 2f  |{*}33{*}-126 ({/|
000a5fc0  7d 69 2e 65 2e 7b 2f 7d  20 6e 6f 20 73 70 61 63  |}i.e.{/} no spac|
000a5fd0  65 73 29 2c 20 61 6e 64  20 69 73 20 75 73 65 64  |es), and is used|
000a5fe0  20 62 79 20 73 6f 6d 65  20 70 72 69 6e 74 65 72  | by some printer|
000a5ff0  20 64 72 69 76 65 72 73  20 66 6f 72 20 63 6f 6d  | drivers for com|
000a6000  6d 65 6e 74 69 6e 67 20  74 68 65 20 6f 75 74 70  |menting the outp|
000a6010  75 74 2e 20 49 74 20 69  73 20 61 63 63 65 70 74  |ut. It is accept|
000a6020  61 62 6c 65 20 74 6f 20  68 61 76 65 20 6e 6f 20  |able to have no |
000a6030  70 61 67 65 20 6e 75 6d  62 65 72 20 73 74 72 69  |page number stri|
000a6040  6e 67 20 2d 20 75 73 65  20 61 20 30 20 70 6f 69  |ng - use a 0 poi|
000a6050  6e 74 65 72 2e 0a 00 00  44 41 54 41 c1 01 00 00  |nter....DATA....|
000a6060  50 44 72 69 76 65 72 5f  45 6e 64 4a 6f 62 20 20  |PDriver_EndJob  |
000a6070  28 26 38 30 31 34 38 29  0a 23 50 61 72 65 6e 74  |(&80148).#Parent|
000a6080  20 50 44 72 69 76 65 72  5f 0a 3d 3e 09 52 30 20  | PDriver_.=>.R0 |
000a6090  3d 09 66 69 6c 65 20 68  61 6e 64 6c 65 20 6f 66  |=.file handle of|
000a60a0  20 6a 6f 62 0a 0a 54 68  69 73 20 53 57 49 20 65  | job..This SWI e|
000a60b0  6e 64 73 20 61 20 70 72  69 6e 74 20 6a 6f 62 20  |nds a print job |
000a60c0  6e 6f 72 6d 61 6c 6c 79  2c 20 77 68 69 63 68 20  |normally, which |
000a60d0  6d 61 79 20 73 74 69 6c  6c 20 72 65 73 75 6c 74  |may still result|
000a60e0  20 69 6e 20 66 75 72 74  68 65 72 20 6f 75 74 70  | in further outp|
000a60f0  75 74 20 28 7b 2f 7d 65  2e 67 2e 7b 2f 7d 20 50  |ut ({/}e.g.{/} P|
000a6100  6f 73 74 53 63 72 69 70  74 20 74 72 61 69 6c 65  |ostScript traile|
000a6110  72 20 63 6f 6d 6d 65 6e  74 73 29 2e 20 49 66 20  |r comments). If |
000a6120  74 68 65 20 6a 6f 62 20  69 6e 20 52 30 20 69 73  |the job in R0 is|
000a6130  20 74 68 65 20 63 75 72  72 65 6e 74 6c 79 20 61  | the currently a|
000a6140  63 74 69 76 65 20 6a 6f  62 20 74 68 65 6e 20 74  |ctive job then t|
000a6150  68 65 72 65 20 77 69 6c  6c 20 62 65 20 6e 6f 20  |here will be no |
000a6160  63 75 72 72 65 6e 74 20  70 72 69 6e 74 20 6a 6f  |current print jo|
000a6170  62 20 61 66 74 65 72 20  74 68 69 73 20 63 61 6c  |b after this cal|
000a6180  6c 20 2d 20 68 65 6e 63  65 20 70 6c 6f 74 74 69  |l - hence plotti|
000a6190  6e 67 20 63 61 6c 6c 73  20 77 69 6c 6c 20 6e 6f  |ng calls will no|
000a61a0  20 6c 6f 6e 67 65 72 20  62 65 20 69 6e 74 65 72  | longer be inter|
000a61b0  63 65 70 74 65 64 2e 20  4f 74 68 65 72 77 69 73  |cepted. Otherwis|
000a61c0  65 20 74 68 65 72 65 20  69 73 20 6e 6f 20 65 66  |e there is no ef|
000a61d0  66 65 63 74 20 6f 6e 20  74 68 65 20 63 75 72 72  |fect on the curr|
000a61e0  65 6e 74 20 6a 6f 62 20  28 69 66 20 61 6e 79 29  |ent job (if any)|
000a61f0  20 61 6e 64 20 74 68 65  20 73 74 61 74 65 20 6f  | and the state o|
000a6200  66 20 70 6c 6f 74 74 69  6e 67 20 69 6e 74 65 72  |f plotting inter|
000a6210  63 65 70 74 69 6f 6e 2e  0a 00 00 00 44 41 54 41  |ception.....DATA|
000a6220  07 02 00 00 50 44 72 69  76 65 72 5f 45 6e 75 6d  |....PDriver_Enum|
000a6230  65 72 61 74 65 44 72 69  76 65 72 73 20 20 28 26  |erateDrivers  (&|
000a6240  38 30 31 35 39 29 0a 23  50 61 72 65 6e 74 20 50  |80159).#Parent P|
000a6250  44 72 69 76 65 72 5f 0a  3d 3e 09 52 30 20 3d 09  |Driver_.=>.R0 =.|
000a6260  70 72 65 76 69 6f 75 73  20 20 68 61 6e 64 6c 65  |previous  handle|
000a6270  2c 20 30 20 74 6f 20 73  74 61 72 74 0a 0a 3c 3d  |, 0 to start..<=|
000a6280  09 52 30 20 3d 09 6e 65  78 74 20 68 61 6e 64 6c  |.R0 =.next handl|
000a6290  65 2c 20 30 20 6d 61 72  6b 73 20 65 6e 64 0a 09  |e, 0 marks end..|
000a62a0  52 31 20 3d 09 3c 70 72  69 6e 74 65 72 20 64 72  |R1 =.<printer dr|
000a62b0  69 76 65 72 20 6e 75 6d  62 65 72 3d 3e 50 44 72  |iver number=>PDr|
000a62c0  69 76 65 72 5f 70 72 69  6e 74 65 72 6e 75 6d 62  |iver_printernumb|
000a62d0  65 72 73 3e 0a 0a 54 68  69 73 20 53 57 49 20 77  |ers>..This SWI w|
000a62e0  69 6c 6c 20 72 65 74 75  72 6e 20 74 68 65 20 6e  |ill return the n|
000a62f0  75 6d 62 65 72 73 20 6f  66 20 61 6c 6c 20 70 72  |umbers of all pr|
000a6300  69 6e 74 65 72 20 64 72  69 76 65 72 73 20 70 72  |inter drivers pr|
000a6310  65 73 65 6e 74 2e 20 45  78 70 65 72 69 6d 65 6e  |esent. Experimen|
000a6320  74 61 74 69 6f 6e 20 72  65 76 65 61 6c 73 20 74  |tation reveals t|
000a6330  68 61 74 20 74 68 65 20  6c 61 73 74 20 76 61 6c  |hat the last val|
000a6340  69 64 20 52 31 20 6f 63  63 75 72 73 20 77 69 74  |id R1 occurs wit|
000a6350  68 20 52 30 20 5c 3c 3e  20 30 3b 20 77 68 65 6e  |h R0 \<> 0; when|
000a6360  20 52 30 20 3d 20 30 20  6f 6e 20 65 78 69 74 20  | R0 = 0 on exit |
000a6370  52 31 20 69 73 20 67 61  72 62 61 67 65 2e 0a 23  |R1 is garbage..#|
000a6380  20 4e 3e 20 50 52 4d 73  2c 20 74 68 65 79 27 72  | N> PRMs, they'r|
000a6390  65 20 2f 73 6f 2f 20 68  65 6c 70 66 75 6c 0a 23  |e /so/ helpful.#|
000a63a0  20 20 20 20 2f 73 6f 2f  20 74 6f 20 62 65 20 70  |    /so/ to be p|
000a63b0  72 6f 6e 6f 75 6e 63 65  64 20 61 73 20 69 6e 20  |ronounced as in |
000a63c0  47 2e 42 2e 48 2e 20 22  48 65 27 73 20 2f 73 6f  |G.B.H. "He's /so|
000a63d0  2f 20 65 61 73 79 22 0a  23 20 47 65 72 70 68 3e  |/ easy".# Gerph>|
000a63e0  20 48 6d 6d 2e 2e 2e 20  4d 61 79 62 65 20 49 20  | Hmm... Maybe I |
000a63f0  73 68 6f 75 6c 64 20 77  61 74 63 68 20 74 68 61  |should watch tha|
000a6400  74 20 61 67 61 69 6e 20  6a 75 73 74 20 74 6f 20  |t again just to |
000a6410  66 69 6e 64 20 74 68 65  20 72 65 66 65 72 65 6e  |find the referen|
000a6420  63 65 0a 00 44 41 54 41  db 00 00 00 50 44 72 69  |ce..DATA....PDri|
000a6430  76 65 72 5f 45 6e 75 6d  65 72 61 74 65 4a 6f 62  |ver_EnumerateJob|
000a6440  73 20 20 28 26 38 30 31  35 30 29 0a 23 50 61 72  |s  (&80150).#Par|
000a6450  65 6e 74 20 50 44 72 69  76 65 72 5f 0a 3d 3e 09  |ent PDriver_.=>.|
000a6460  52 30 20 3d 09 70 72 65  76 69 6f 75 73 20 66 69  |R0 =.previous fi|
000a6470  6c 65 20 68 61 6e 64 6c  65 2c 20 30 20 74 6f 20  |le handle, 0 to |
000a6480  73 74 61 72 74 0a 0a 3c  3d 09 52 30 20 3d 09 6e  |start..<=.R0 =.n|
000a6490  65 78 74 20 66 69 6c 65  20 68 61 6e 64 6c 65 2c  |ext file handle,|
000a64a0  20 30 20 6d 61 72 6b 73  20 65 6e 64 0a 0a 54 68  | 0 marks end..Th|
000a64b0  69 73 20 53 57 49 20 77  69 6c 6c 20 72 65 74 75  |is SWI will retu|
000a64c0  72 6e 20 74 68 65 20 66  69 6c 65 20 68 61 6e 64  |rn the file hand|
000a64d0  6c 65 73 20 6f 66 20 61  6c 6c 20 70 72 69 6e 74  |les of all print|
000a64e0  20 6a 6f 62 73 2c 20 69  6e 20 6e 6f 20 70 61 72  | jobs, in no par|
000a64f0  74 69 63 75 6c 61 72 20  6f 72 64 65 72 2e 0a 00  |ticular order...|
000a6500  44 41 54 41 fa 05 00 00  50 72 69 6e 74 65 72 20  |DATA....Printer |
000a6510  64 72 69 76 65 72 20 66  65 61 74 75 72 65 73 20  |driver features |
000a6520  77 6f 72 64 0a 23 50 61  72 65 6e 74 20 50 44 72  |word.#Parent PDr|
000a6530  69 76 65 72 5f 49 6e 66  6f 0a 42 69 74 73 09 4d  |iver_Info.Bits.M|
000a6540  65 61 69 6e 69 6e 67 20  77 68 65 6e 20 63 6c 65  |eaining when cle|
000a6550  61 72 09 09 09 09 09 4d  65 61 6e 69 6e 67 20 77  |ar.....Meaning w|
000a6560  68 65 6e 20 73 65 74 0a  23 4c 69 6e 65 0a 30 2d  |hen set.#Line.0-|
000a6570  32 09 3c 63 6f 6c 6f 75  72 73 20 61 76 61 69 6c  |2.<colours avail|
000a6580  61 62 6c 65 3d 3e 2e 63  6f 6c 6f 75 72 73 3e 09  |able=>.colours>.|
000a6590  09 09 09 0a 38 09 63 61  6e 20 68 61 6e 64 6c 65  |....8.can handle|
000a65a0  20 66 69 6c 6c 65 64 20  73 68 61 70 65 73 09 09  | filled shapes..|
000a65b0  09 09 63 61 6e 20 6f 6e  6c 79 20 6f 75 74 6c 69  |..can only outli|
000a65c0  6e 65 20 66 69 6c 6c 65  64 20 73 68 61 70 65 73  |ne filled shapes|
000a65d0  20 28 7b 2f 7d 65 2e 67  2e 7b 2f 7d 20 58 59 20  | ({/}e.g.{/} XY |
000a65e0  70 6c 6f 74 74 65 72 29  0a 39 09 63 61 6e 20 68  |plotter).9.can h|
000a65f0  61 6e 64 6c 65 20 74 68  69 63 6b 20 6c 69 6e 65  |andle thick line|
000a6600  73 09 09 09 09 09 63 61  6e 20 6f 6e 6c 79 20 70  |s.....can only p|
000a6610  6c 6f 74 20 74 68 69 6e  20 6c 69 6e 65 73 20 28  |lot thin lines (|
000a6620  62 75 74 20 6d 69 67 68  74 20 68 61 76 65 20 74  |but might have t|
000a6630  68 69 63 6b 65 72 20 70  65 6e 73 29 0a 31 30 09  |hicker pens).10.|
000a6640  6f 76 65 72 77 72 69 74  65 73 20 63 6f 6c 6f 75  |overwrites colou|
000a6650  72 73 20 70 72 6f 70 65  72 6c 79 09 09 09 09 63  |rs properly....c|
000a6660  61 6e 20 6f 6e 6c 79 20  6f 76 65 72 77 72 69 74  |an only overwrit|
000a6670  65 20 63 6f 6c 6f 75 72  73 20 6f 6e 74 6f 20 62  |e colours onto b|
000a6680  61 63 6b 67 72 6f 75 6e  64 20 28 7b 2f 7d 65 2e  |ackground ({/}e.|
000a6690  67 2e 7b 2f 7d 20 61 20  70 6c 6f 74 74 65 72 20  |g.{/} a plotter |
000a66a0  77 69 74 68 20 77 65 74  20 69 6e 6b 21 29 0a 31  |with wet ink!).1|
000a66b0  31 09 63 61 6e 27 74 20  70 6c 6f 74 20 74 72 61  |1.can't plot tra|
000a66c0  6e 73 66 72 6f 6d 65 64  20 73 70 72 69 74 65 73  |nsfromed sprites|
000a66d0  09 09 09 09 63 61 6e 20  70 6c 6f 74 20 74 72 61  |....can plot tra|
000a66e0  6e 73 66 6f 72 6d 65 64  20 73 70 72 69 74 65 73  |nsformed sprites|
000a66f0  0a 31 32 09 64 6f 65 73  20 6e 6f 74 20 73 75 70  |.12.does not sup|
000a6700  70 6f 72 74 20 6e 65 77  20 46 6f 6e 74 4d 61 6e  |port new FontMan|
000a6710  61 67 65 72 20 66 65 61  74 75 72 65 73 09 09 64  |ager features..d|
000a6720  6f 65 73 20 73 75 70 70  6f 72 74 20 74 68 65 73  |oes support thes|
000a6730  65 20 66 65 61 74 75 72  65 73 20 28 7b 2f 7d 65  |e features ({/}e|
000a6740  2e 67 2e 7b 2f 7d 20 74  72 61 6e 73 66 6f 72 6d  |.g.{/} transform|
000a6750  73 20 61 6e 64 20 65 6e  63 6f 64 69 6e 67 73 29  |s and encodings)|
000a6760  0a 32 34 09 73 75 70 70  6f 72 74 73 20 73 63 72  |.24.supports scr|
000a6770  65 65 6e 20 64 75 6d 70  73 09 09 09 09 09 64 6f  |een dumps.....do|
000a6780  65 73 20 6e 6f 74 20 73  75 70 70 6f 72 74 20 73  |es not support s|
000a6790  63 72 65 65 6e 20 64 75  6d 70 73 0a 32 35 09 63  |creen dumps.25.c|
000a67a0  61 6e 20 6f 6e 6c 79 20  73 63 61 6c 65 2c 20 74  |an only scale, t|
000a67b0  72 61 6e 73 6c 61 74 65  20 61 6e 64 20 72 6f 74  |ranslate and rot|
000a67c0  61 74 65 20 62 79 20 39  30 b0 20 6f 72 20 31 38  |ate by 90. or 18|
000a67d0  30 b0 09 73 75 70 70 6f  72 74 73 20 61 72 62 69  |0..supports arbi|
000a67e0  74 61 72 79 20 74 72 61  6e 73 66 6f 72 6d 61 74  |tary transformat|
000a67f0  69 6f 6e 73 0a 32 36 09  64 6f 65 73 20 6e 6f 74  |ions.26.does not|
000a6800  20 73 75 70 70 6f 72 74  20 3c 50 44 72 69 76 65  | support <PDrive|
000a6810  72 5f 49 6e 73 65 72 74  49 6c 6c 75 73 74 72 61  |r_InsertIllustra|
000a6820  74 69 6f 6e 3e 09 09 64  6f 65 73 20 73 75 70 6f  |tion>..does supo|
000a6830  72 74 20 3c 50 44 72 69  76 65 72 5f 49 6e 73 65  |rt <PDriver_Inse|
000a6840  72 74 49 6c 6c 75 73 74  72 61 74 69 6f 6e 3e 0a  |rtIllustration>.|
000a6850  32 37 09 64 6f 65 73 20  6e 6f 74 20 73 75 70 70  |27.does not supp|
000a6860  6f 72 74 20 3c 50 44 72  69 76 65 72 5f 4d 69 73  |ort <PDriver_Mis|
000a6870  63 4f 70 3e 09 09 09 64  6f 65 73 20 73 75 70 6f  |cOp>...does supo|
000a6880  72 74 20 3c 50 44 72 69  76 65 72 5f 4d 69 73 63  |rt <PDriver_Misc|
000a6890  4f 70 3e 0a 32 38 09 64  6f 65 73 20 6e 6f 74 20  |Op>.28.does not |
000a68a0  73 75 70 70 6f 72 74 20  3c 50 44 72 69 76 65 72  |support <PDriver|
000a68b0  5f 53 65 74 44 72 69 76  65 72 3e 09 09 09 64 6f  |_SetDriver>...do|
000a68c0  65 73 20 73 75 70 6f 72  74 20 3c 50 44 72 69 76  |es suport <PDriv|
000a68d0  65 72 5f 53 65 74 44 72  69 76 65 72 3e 0a 32 39  |er_SetDriver>.29|
000a68e0  09 64 6f 65 73 20 6e 6f  74 20 73 75 70 70 6f 72  |.does not suppor|
000a68f0  74 20 3c 50 44 72 69 76  65 72 5f 44 65 63 6c 61  |t <PDriver_Decla|
000a6900  72 65 46 6f 6e 74 3e 09  09 09 64 6f 65 73 20 73  |reFont>...does s|
000a6910  75 70 6f 72 74 20 3c 50  44 72 69 76 65 72 5f 44  |uport <PDriver_D|
000a6920  65 63 6c 61 72 65 46 6f  6e 74 3e 0a 23 53 75 62  |eclareFont>.#Sub|
000a6930  70 61 67 65 20 63 6f 6c  6f 75 72 73 0a 50 72 69  |page colours.Pri|
000a6940  6e 74 65 72 20 64 72 69  76 65 72 20 63 6f 6c 6f  |nter driver colo|
000a6950  75 72 20 62 69 74 73 0a  23 54 41 42 20 61 6c 69  |ur bits.#TAB ali|
000a6960  67 6e 20 63 65 6e 74 72  65 2c 20 61 6c 69 67 6e  |gn centre, align|
000a6970  20 63 65 6e 74 72 65 2c  20 61 6c 69 67 6e 20 63  | centre, align c|
000a6980  65 6e 74 72 65 2c 20 61  6c 69 67 6e 20 6c 65 66  |entre, align lef|
000a6990  74 0a 42 69 74 20 30 09  42 69 74 20 31 09 42 69  |t.Bit 0.Bit 1.Bi|
000a69a0  74 20 32 09 43 6f 6c 6f  75 72 73 20 61 76 61 69  |t 2.Colours avai|
000a69b0  6c 61 62 6c 65 0a 23 4c  69 6e 65 0a 30 09 78 09  |lable.#Line.0.x.|
000a69c0  30 09 41 72 62 69 74 61  72 79 20 67 72 65 79 73  |0.Arbitary greys|
000a69d0  0a 30 09 78 09 31 09 4c  69 6d 69 74 65 64 20 67  |.0.x.1.Limited g|
000a69e0  72 65 79 73 20 28 6d 61  79 62 65 20 6f 6e 6c 79  |reys (maybe only|
000a69f0  20 62 6c 61 63 6b 20 61  6e 64 20 77 68 69 74 65  | black and white|
000a6a00  29 0a 31 09 30 09 30 09  41 72 62 69 74 61 72 79  |).1.0.0.Arbitary|
000a6a10  20 63 6f 6c 6f 75 72 73  0a 31 09 30 09 31 09 4c  | colours.1.0.1.L|
000a6a20  69 6d 69 74 65 64 20 64  69 73 63 72 65 74 65 20  |imited discrete |
000a6a30  63 6f 6c 6f 75 72 73 2c  20 69 6e 63 6c 75 64 69  |colours, includi|
000a6a40  6e 67 20 61 6c 6c 20 38  20 70 72 69 6d 61 72 69  |ng all 8 primari|
000a6a50  65 73 0a 31 09 31 09 30  09 4c 69 6d 69 74 65 64  |es.1.1.0.Limited|
000a6a60  20 61 72 62 69 74 61 72  79 20 63 6f 6c 6f 75 72  | arbitary colour|
000a6a70  73 2c 20 62 75 74 20 2a  6e 6f 74 2a 20 61 6c 6c  |s, but *not* all|
000a6a80  20 38 20 70 72 69 6d 61  72 69 65 73 20 28 7b 2f  | 8 primaries ({/|
000a6a90  7d 65 2e 67 2e 7b 2f 7d  20 61 20 70 72 69 6e 74  |}e.g.{/} a print|
000a6aa0  65 72 20 77 69 74 68 20  6f 6e 6c 79 20 72 65 64  |er with only red|
000a6ab0  20 61 6e 64 20 62 6c 61  63 6b 20 69 6e 6b 29 0a  | and black ink).|
000a6ac0  31 09 31 09 31 09 4c 69  6d 69 74 65 64 20 64 69  |1.1.1.Limited di|
000a6ad0  73 63 72 65 74 65 20 63  6f 6c 6f 75 72 73 20 28  |screte colours (|
000a6ae0  7b 2f 7d 65 2e 67 2e 7b  2f 7d 20 61 20 70 65 6e  |{/}e.g.{/} a pen|
000a6af0  20 70 6c 6f 74 74 65 72  29 0a 00 00 44 41 54 41  | plotter)...DATA|
000a6b00  88 00 00 00 50 44 72 69  76 65 72 5f 46 6f 6e 74  |....PDriver_Font|
000a6b10  53 57 49 20 20 28 26 38  30 31 34 37 29 0a 23 50  |SWI  (&80147).#P|
000a6b20  61 72 65 6e 74 20 50 44  72 69 76 65 72 5f 0a 0a  |arent PDriver_..|
000a6b30  54 68 69 73 20 53 57 49  20 69 73 20 66 6f 72 20  |This SWI is for |
000a6b40  69 6e 74 65 72 6e 61 6c  20 63 6f 6d 6d 75 6e 69  |internal communi|
000a6b50  63 61 74 69 6f 6e 20 62  65 74 77 65 65 6e 20 70  |cation between p|
000a6b60  72 69 6e 74 65 72 20 64  72 69 76 65 72 20 61 6e  |rinter driver an|
000a6b70  64 20 66 6f 6e 74 20 73  79 73 74 65 6d 20 6f 6e  |d font system on|
000a6b80  6c 79 2e 0a 44 41 54 41  de 01 00 00 50 44 72 69  |ly..DATA....PDri|
000a6b90  76 65 72 5f 47 65 74 52  65 63 74 61 6e 67 6c 65  |ver_GetRectangle|
000a6ba0  20 20 28 26 38 30 31 34  44 29 0a 23 50 61 72 65  |  (&8014D).#Pare|
000a6bb0  6e 74 20 50 44 72 69 76  65 72 5f 0a 3d 3e 09 52  |nt PDriver_.=>.R|
000a6bc0  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 34  |1 =.pointer to 4|
000a6bd0  20 77 6f 72 64 20 62 6c  6f 63 6b 20 74 6f 20 72  | word block to r|
000a6be0  65 63 65 69 76 65 20 3c  72 65 63 74 61 6e 67 6c  |eceive <rectangl|
000a6bf0  65 20 74 6f 20 70 72 69  6e 74 3d 3e 50 44 72 69  |e to print=>PDri|
000a6c00  76 65 72 5f 72 65 63 74  61 6e 67 6c 65 3e 0a 0a  |ver_rectangle>..|
000a6c10  3c 3d 09 52 30 20 3d 09  30 20 69 66 20 66 69 6e  |<=.R0 =.0 if fin|
000a6c20  69 73 68 65 64 0a 09 52  31 20 3d 09 70 72 65 73  |ished..R1 =.pres|
000a6c30  65 72 76 65 64 0a 09 52  32 20 3d 09 49 44 20 77  |erved..R2 =.ID w|
000a6c40  6f 72 64 20 66 6f 72 20  74 68 69 73 20 72 65 63  |ord for this rec|
000a6c50  74 61 6e 67 6c 65 0a 0a  54 68 69 73 20 53 57 49  |tangle..This SWI|
000a6c60  20 69 73 20 63 61 6c 6c  65 64 20 74 6f 20 67 65  | is called to ge|
000a6c70  74 20 66 75 72 74 68 65  72 20 72 65 63 74 61 6e  |t further rectan|
000a6c80  67 6c 65 73 20 74 6f 20  70 72 69 6e 74 2e 0a 0a  |gles to print...|
000a6c90  49 66 20 52 30 20 69 73  20 30 20 6f 6e 20 72 65  |If R0 is 0 on re|
000a6ca0  74 75 72 6e 20 74 68 65  6e 20 52 32 20 61 6e 64  |turn then R2 and|
000a6cb0  20 74 68 65 20 62 75 66  66 65 72 20 70 6f 69 6e  | the buffer poin|
000a6cc0  74 65 64 20 74 6f 20 62  79 20 52 31 20 61 72 65  |ted to by R1 are|
000a6cd0  20 75 6e 64 65 66 69 6e  65 64 2e 20 4f 74 68 65  | undefined. Othe|
000a6ce0  72 77 69 73 65 20 52 30  20 67 69 76 65 73 20 74  |rwise R0 gives t|
000a6cf0  68 65 20 6e 75 6d 62 65  72 20 6f 66 20 63 6f 70  |he number of cop|
000a6d00  69 65 73 20 73 74 69 6c  6c 20 74 6f 20 70 72 69  |ies still to pri|
000a6d10  6e 74 20 2d 20 74 68 69  73 20 69 73 20 69 6e 74  |nt - this is int|
000a6d20  65 6e 64 65 64 20 66 6f  72 20 64 69 73 70 6c 61  |ended for displa|
000a6d30  79 20 74 6f 20 75 73 65  72 73 20 6f 6e 6c 79 2c  |y to users only,|
000a6d40  20 61 73 20 69 74 20 6d  61 79 20 6e 6f 74 20 64  | as it may not d|
000a6d50  65 63 72 65 61 73 65 20  73 6d 6f 6f 74 68 6c 79  |ecrease smoothly|
000a6d60  2e 0a 00 00 44 41 54 41  8c 04 00 00 50 44 72 69  |....DATA....PDri|
000a6d70  76 65 72 5f 47 69 76 65  52 65 63 74 61 6e 67 6c  |ver_GiveRectangl|
000a6d80  65 20 20 28 26 38 30 31  34 42 29 0a 23 50 61 72  |e  (&8014B).#Par|
000a6d90  65 6e 74 20 50 44 72 69  76 65 72 5f 0a 3d 3e 09  |ent PDriver_.=>.|
000a6da0  52 30 20 3d 09 49 44 20  77 6f 72 64 20 28 63 68  |R0 =.ID word (ch|
000a6db0  6f 73 65 6e 20 62 79 20  61 70 70 6c 69 63 61 74  |osen by applicat|
000a6dc0  69 6f 6e 29 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |ion)..R1 =.point|
000a6dd0  65 72 20 74 6f 20 3c 72  65 63 74 61 6e 67 6c 65  |er to <rectangle|
000a6de0  20 74 6f 20 70 72 69 6e  74 3d 3e 50 44 72 69 76  | to print=>PDriv|
000a6df0  65 72 5f 72 65 63 74 61  6e 67 6c 65 3e 0a 09 52  |er_rectangle>..R|
000a6e00  32 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |2 =.pointer to <|
000a6e10  74 72 61 6e 73 66 6f 72  6d 61 74 69 6f 6e 20 74  |transformation t|
000a6e20  61 62 6c 65 3d 3e 2e 74  61 62 6c 65 3e 0a 09 52  |able=>.table>..R|
000a6e30  33 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |3 =.pointer to <|
000a6e40  70 6c 6f 74 20 70 6f 73  69 74 69 6f 6e 3d 3e 2e  |plot position=>.|
000a6e50  70 6f 73 69 74 69 6f 6e  3e 0a 09 52 34 20 3d 09  |position>..R4 =.|
000a6e60  62 61 63 6b 67 72 6f 75  6e 64 20 63 6f 6c 6f 75  |background colou|
000a6e70  72 20 28 26 42 42 47 47  52 52 30 30 29 0a 0a 54  |r (&BBGGRR00)..T|
000a6e80  68 69 73 20 53 57 49 20  69 73 20 75 73 65 64 20  |his SWI is used |
000a6e90  74 6f 20 73 70 65 63 69  66 79 20 61 20 72 65 63  |to specify a rec|
000a6ea0  74 61 6e 67 6c 65 20 74  6f 20 62 65 20 70 72 69  |tangle to be pri|
000a6eb0  6e 74 65 64 2e 20 54 68  65 20 76 61 6c 75 65 20  |nted. The value |
000a6ec0  69 6e 20 52 30 20 69 73  20 70 61 73 73 65 64 20  |in R0 is passed |
000a6ed0  62 61 63 6b 20 77 68 65  6e 65 76 65 72 20 74 68  |back whenever th|
000a6ee0  65 20 61 70 70 6c 69 63  61 74 69 6f 6e 20 69 73  |e application is|
000a6ef0  20 72 65 71 75 65 73 74  65 64 20 74 6f 20 70 6c  | requested to pl|
000a6f00  6f 74 20 61 6e 79 20 70  61 72 74 20 6f 66 20 74  |ot any part of t|
000a6f10  68 69 73 20 72 65 63 74  61 6e 67 6c 65 2e 20 49  |his rectangle. I|
000a6f20  66 20 69 74 20 69 73 20  63 61 6c 6c 65 64 20 77  |f it is called w|
000a6f30  69 74 68 20 6f 76 65 72  6c 61 70 70 69 6e 67 20  |ith overlapping |
000a6f40  72 65 63 74 61 6e 67 6c  65 73 20 74 68 65 6e 20  |rectangles then |
000a6f50  3c 50 44 72 69 76 65 72  5f 47 65 74 52 65 63 74  |<PDriver_GetRect|
000a6f60  61 6e 67 6c 65 3e 20 77  69 6c 6c 20 72 65 74 75  |angle> will retu|
000a6f70  72 6e 20 74 68 65 73 65  20 72 65 63 74 61 6e 67  |rn these rectang|
000a6f80  6c 65 73 20 69 6e 20 74  68 65 20 73 61 6d 65 20  |les in the same |
000a6f90  6f 72 64 65 72 2e 20 54  68 65 20 76 61 6c 75 65  |order. The value|
000a6fa0  73 20 69 6e 20 52 32 20  61 6e 64 20 52 33 20 67  |s in R2 and R3 g|
000a6fb0  69 76 65 20 74 68 65 20  74 72 61 6e 73 66 6f 72  |ive the transfor|
000a6fc0  6d 61 74 69 6f 6e 20 66  72 6f 6d 20 74 68 65 20  |mation from the |
000a6fd0  61 70 70 6c 69 63 61 74  69 6f 6e 27 73 20 63 6f  |application's co|
000a6fe0  6f 72 64 69 6e 61 74 65  73 20 74 6f 20 74 68 65  |ordinates to the|
000a6ff0  20 63 6f 6f 72 64 69 6e  61 74 65 73 20 6f 66 20  | coordinates of |
000a7000  74 68 65 20 70 72 69 6e  74 65 64 20 70 61 67 65  |the printed page|
000a7010  2e 20 28 49 74 20 61 70  70 65 61 72 73 20 74 68  |. (It appears th|
000a7020  61 74 20 50 44 72 69 76  65 72 20 69 6d 70 6c 69  |at PDriver impli|
000a7030  63 69 74 6c 79 20 63 6f  6e 76 65 72 74 73 20 66  |citly converts f|
000a7040  72 6f 6d 20 4f 53 20 75  6e 69 74 73 20 74 6f 20  |rom OS units to |
000a7050  6d 69 6c 6c 69 70 6f 69  6e 74 73 20 61 73 20 6e  |millipoints as n|
000a7060  65 65 64 65 64 2e 29 0a  23 73 75 62 70 61 67 65  |eeded.).#subpage|
000a7070  20 74 61 62 6c 65 0a 50  72 69 6e 74 65 72 20 74  | table.Printer t|
000a7080  72 61 6e 73 66 6f 72 6d  61 74 69 6f 6e 20 74 61  |ransformation ta|
000a7090  62 6c 65 73 0a 54 68 69  73 20 34 20 77 6f 72 64  |bles.This 4 word|
000a70a0  20 62 6c 6f 63 6b 20 69  73 20 6a 75 73 74 20 74  | block is just t|
000a70b0  68 65 20 66 69 72 73 74  20 34 20 77 6f 72 64 73  |he first 4 words|
000a70c0  20 6f 66 20 61 20 73 74  61 6e 64 61 72 64 20 27  | of a standard '|
000a70d0  44 72 61 77 27 20 3c 74  72 61 6e 73 66 6f 72 6d  |Draw' <transform|
000a70e0  61 74 69 6f 6e 20 6d 61  74 72 69 78 3d 3e 44 72  |ation matrix=>Dr|
000a70f0  61 77 5f 74 72 61 6e 73  66 6f 72 6d 3e 2e 0a 23  |aw_transform>..#|
000a7100  73 75 62 70 61 67 65 20  70 6f 73 69 74 69 6f 6e  |subpage position|
000a7110  0a 50 72 69 6e 74 65 72  20 70 6c 6f 74 20 70 6f  |.Printer plot po|
000a7120  73 69 74 69 6f 6e 0a 54  68 69 73 20 62 6c 6f 63  |sition.This bloc|
000a7130  6b 20 67 69 76 65 73 20  74 68 65 20 70 6f 73 69  |k gives the posi|
000a7140  74 69 6f 6e 20 6f 6e 20  74 68 65 20 70 61 67 65  |tion on the page|
000a7150  20 6f 66 20 74 68 65 20  62 6f 74 74 6f 6d 20 6c  | of the bottom l|
000a7160  65 66 74 20 63 6f 72 6e  65 72 20 6f 66 20 74 68  |eft corner of th|
000a7170  65 20 73 70 65 63 69 66  69 65 64 20 72 65 63 74  |e specified rect|
000a7180  61 6e 67 65 2e 0a 0a 4f  66 66 73 65 74 09 43 6f  |ange...Offset.Co|
000a7190  6e 74 65 6e 74 73 0a 23  4c 69 6e 65 0a 30 09 78  |ntents.#Line.0.x|
000a71a0  20 63 6f 6f 72 64 20 6f  66 20 62 6f 74 74 6f 6d  | coord of bottom|
000a71b0  20 6c 65 66 74 0a 34 09  79 20 63 6f 6f 72 64 20  | left.4.y coord |
000a71c0  6f 66 20 62 6f 74 74 6f  6d 20 6c 65 66 74 0a 0a  |of bottom left..|
000a71d0  42 6f 74 68 20 76 61 6c  75 65 73 20 61 72 65 20  |Both values are |
000a71e0  69 6e 20 6d 69 6c 6c 69  70 6f 69 6e 74 73 2e 0a  |in millipoints..|
000a71f0  44 41 54 41 e8 02 00 00  50 44 72 69 76 65 72 5f  |DATA....PDriver_|
000a7200  49 6e 66 6f 20 20 28 26  38 30 31 34 30 29 0a 23  |Info  (&80140).#|
000a7210  50 61 72 65 6e 74 20 50  44 72 69 76 65 72 5f 0a  |Parent PDriver_.|
000a7220  3c 3d 09 52 30 20 3d 09  62 69 74 73 20 30 2d 31  |<=.R0 =.bits 0-1|
000a7230  35 09 64 72 69 76 65 72  27 73 20 76 65 72 73 69  |5.driver's versi|
000a7240  6f 6e 20 6e 75 6d 62 65  72 20 2a 20 31 30 30 0a  |on number * 100.|
000a7250  09 20 09 62 69 74 73 20  31 36 2d 33 31 09 3c 70  |. .bits 16-31.<p|
000a7260  72 69 6e 74 65 72 20 6e  75 6d 62 65 72 3d 3e 50  |rinter number=>P|
000a7270  44 72 69 76 65 72 5f 70  72 69 6e 74 65 72 6e 75  |Driver_printernu|
000a7280  6d 62 65 72 73 3e 0a 09  52 31 20 3d 09 78 20 72  |mbers>..R1 =.x r|
000a7290  65 73 6f 6c 75 74 69 6f  6e 20 6f 66 20 64 72 69  |esolution of dri|
000a72a0  76 65 6e 20 70 72 69 6e  74 65 72 20 28 44 50 49  |ven printer (DPI|
000a72b0  29 0a 09 52 32 20 3d 09  79 20 72 65 73 6f 6c 75  |)..R2 =.y resolu|
000a72c0  74 69 6f 6e 20 6f 66 20  64 72 69 76 65 6e 20 70  |tion of driven p|
000a72d0  72 69 6e 74 65 72 20 28  44 50 49 29 0a 09 52 33  |rinter (DPI)..R3|
000a72e0  20 3d 09 3c 66 65 61 74  75 72 65 73 20 77 6f 72  | =.<features wor|
000a72f0  64 3d 3e 50 44 72 69 76  65 72 5f 66 65 61 74 75  |d=>PDriver_featu|
000a7300  72 65 73 3e 0a 09 52 34  20 3d 09 70 6f 69 6e 74  |res>..R4 =.point|
000a7310  65 72 20 74 6f 20 70 72  69 6e 74 65 72 20 6e 61  |er to printer na|
000a7320  6d 65 20 28 6d 61 78 20  32 30 20 63 68 61 72 73  |me (max 20 chars|
000a7330  2c 20 6e 75 6c 6c 20 74  65 72 6d 69 6e 61 74 65  |, null terminate|
000a7340  64 29 0a 09 52 35 20 3d  09 78 20 68 61 6c 66 74  |d)..R5 =.x halft|
000a7350  6f 6e 65 20 72 65 73 6f  6c 75 74 69 6f 6e 20 69  |one resolution i|
000a7360  6e 20 72 65 70 65 61 74  73 2f 69 6e 63 68 0a 09  |n repeats/inch..|
000a7370  52 36 20 3d 09 79 20 68  61 6c 66 74 6f 6e 65 20  |R6 =.y halftone |
000a7380  72 65 73 6f 6c 75 74 69  6f 6e 20 69 6e 20 72 65  |resolution in re|
000a7390  70 65 61 74 73 2f 69 6e  63 68 0a 09 52 37 20 3d  |peats/inch..R7 =|
000a73a0  09 70 72 69 6e 74 65 72  20 64 72 69 76 65 72 20  |.printer driver |
000a73b0  73 70 65 63 69 66 69 63  20 6e 75 6d 62 65 72 20  |specific number |
000a73c0  28 61 73 20 73 65 74 20  62 79 20 3c 50 44 72 69  |(as set by <PDri|
000a73d0  76 65 72 5f 53 65 74 49  6e 66 6f 3e 2c 20 64 65  |ver_SetInfo>, de|
000a73e0  66 75 6c 74 20 69 73 20  30 29 0a 0a 54 68 69 73  |fult is 0)..This|
000a73f0  20 53 57 49 20 64 65 73  63 72 69 62 65 73 20 74  | SWI describes t|
000a7400  68 65 20 63 61 70 61 62  69 6c 69 74 69 65 73 20  |he capabilities |
000a7410  6f 66 20 74 68 65 20 70  72 69 6e 74 65 72 2e 20  |of the printer. |
000a7420  49 66 20 61 20 6a 6f 62  20 69 73 20 73 65 6c 65  |If a job is sele|
000a7430  63 74 65 64 20 74 68 65  79 20 61 65 20 74 68 65  |cted they ae the|
000a7440  20 76 61 6c 75 65 73 20  69 6e 20 66 6f 72 63 65  | values in force|
000a7450  20 66 72 6f 6d 20 77 68  65 6e 20 69 74 20 77 61  | from when it wa|
000a7460  73 20 66 69 72 73 74 20  73 65 6c 65 63 74 65 64  |s first selected|
000a7470  2c 20 65 6c 73 65 20 74  68 65 79 20 61 72 65 20  |, else they are |
000a7480  74 68 65 20 76 61 6c 75  65 73 20 74 68 61 74 20  |the values that |
000a7490  77 6f 75 6c 64 20 62 65  20 75 73 65 64 20 6f 6e  |would be used on|
000a74a0  20 61 20 6e 65 77 20 6a  6f 62 2e 20 49 66 20 68  | a new job. If h|
000a74b0  61 6c 66 74 6f 6e 69 6e  67 20 69 73 20 6e 6f 74  |alftoning is not|
000a74c0  20 75 73 65 64 20 74 68  65 6e 20 52 35 3d 52 32  | used then R5=R2|
000a74d0  2c 52 36 3d 52 33 2e 0a  44 41 54 41 31 02 00 00  |,R6=R3..DATA1...|
000a74e0  50 44 72 69 76 65 72 5f  49 6e 73 65 72 74 49 6c  |PDriver_InsertIl|
000a74f0  6c 75 73 74 72 61 74 69  6f 6e 20 20 28 26 38 30  |lustration  (&80|
000a7500  31 35 34 29 0a 23 50 61  72 65 6e 74 20 50 44 72  |154).#Parent PDr|
000a7510  69 76 65 72 5f 0a 3d 3e  09 52 30 20 3d 09 66 69  |iver_.=>.R0 =.fi|
000a7520  6c 65 20 68 61 6e 64 6c  65 20 6f 66 20 69 6c 6c  |le handle of ill|
000a7530  75 73 74 72 61 74 69 6f  6e 0a 09 52 31 20 3d 09  |ustration..R1 =.|
000a7540  70 6f 69 6e 74 65 72 20  74 6f 20 3c 63 6c 69 70  |pointer to <clip|
000a7550  70 69 6e 67 20 70 61 74  68 3d 3e 44 72 61 77 5f  |ping path=>Draw_|
000a7560  70 61 74 68 62 6c 6f 63  6b 3e 2c 20 6f 72 20 30  |pathblock>, or 0|
000a7570  20 66 6f 72 20 6e 6f 20  63 6c 69 70 70 69 6e 67  | for no clipping|
000a7580  0a 09 52 32 20 3d 09 62  6f 74 74 6f 6d 20 6c 65  |..R2 =.bottom le|
000a7590  66 74 20 78 20 63 6f 6f  72 64 0a 09 52 33 20 3d  |ft x coord..R3 =|
000a75a0  09 62 6f 74 74 6f 6d 20  6c 65 66 74 20 79 20 63  |.bottom left y c|
000a75b0  6f 6f 72 64 0a 09 52 34  20 3d 09 62 6f 74 74 6f  |oord..R4 =.botto|
000a75c0  6d 20 72 69 67 68 74 20  78 20 63 6f 6f 72 64 0a  |m right x coord.|
000a75d0  09 52 35 20 3d 09 62 6f  74 74 6f 6d 20 72 69 67  |.R5 =.bottom rig|
000a75e0  68 74 20 79 20 63 6f 6f  72 64 0a 09 52 36 20 3d  |ht y coord..R6 =|
000a75f0  09 74 6f 70 20 6c 65 66  74 20 78 20 63 6f 6f 72  |.top left x coor|
000a7600  64 0a 09 52 37 20 3d 09  74 6f 70 20 6c 65 66 74  |d..R7 =.top left|
000a7610  20 79 20 63 6f 6f 72 64  0a 0a 54 68 69 73 20 53  | y coord..This S|
000a7620  57 49 20 69 6e 73 65 72  74 73 20 74 68 65 20 69  |WI inserts the i|
000a7630  6c 6c 75 73 74 72 61 74  69 6f 6e 20 66 72 6f 6d  |llustration from|
000a7640  20 74 68 65 20 66 69 6c  65 20 68 61 6e 64 6c 65  | the file handle|
000a7650  20 69 6e 74 6f 20 74 68  65 20 63 75 72 72 65 6e  | into the curren|
000a7660  74 20 70 72 69 6e 74 20  6a 6f 62 2e 20 43 68 65  |t print job. Che|
000a7670  63 6b 20 74 68 65 20 3c  66 65 61 74 75 72 65 73  |ck the <features|
000a7680  20 77 6f 72 64 3d 3e 50  44 72 69 76 65 72 5f 66  | word=>PDriver_f|
000a7690  65 61 74 75 72 65 73 3e  20 74 6f 20 76 65 72 69  |eatures> to veri|
000a76a0  66 79 20 74 68 61 74 20  74 68 65 20 64 72 69 76  |fy that the driv|
000a76b0  65 72 20 64 6f 65 73 20  73 75 70 70 6f 72 74 20  |er does support |
000a76c0  69 74 2e 20 41 6c 6c 20  63 6f 2d 6f 72 64 69 6e  |it. All co-ordin|
000a76d0  61 74 65 73 20 61 72 65  20 69 6e 20 31 2f 32 35  |ates are in 1/25|
000a76e0  36 20 6f 66 20 61 6e 20  4f 53 20 75 6e 69 74 20  |6 of an OS unit |
000a76f0  28 7b 2f 7d 69 2e 65 2e  7b 2f 7d 20 44 72 61 77  |({/}i.e.{/} Draw|
000a7700  20 75 6e 69 74 73 29 2e  0a 00 00 00 44 41 54 41  | units).....DATA|
000a7710  93 02 00 00 50 44 72 69  76 65 72 5f 4d 69 73 63  |....PDriver_Misc|
000a7720  4f 70 20 20 28 26 38 30  31 35 41 29 0a 23 50 61  |Op  (&8015A).#Pa|
000a7730  72 65 6e 74 20 50 44 72  69 76 65 72 5f 0a 3d 3e  |rent PDriver_.=>|
000a7740  09 52 30 20 3d 09 3c 52  65 61 73 6f 6e 20 63 6f  |.R0 =.<Reason co|
000a7750  64 65 3d 3e 2e 6f 70 73  3e 0a 09 6f 74 68 65 72  |de=>.ops>..other|
000a7760  20 72 65 67 69 73 74 65  72 73 20 64 65 70 65 6e  | registers depen|
000a7770  64 20 6f 6e 20 72 65 61  73 6f 6e 20 63 6f 64 65  |d on reason code|
000a7780  0a 0a 3c 3d 09 64 65 70  65 6e 64 73 20 6f 6e 20  |..<=.depends on |
000a7790  72 65 61 73 6f 6e 20 63  6f 64 65 0a 0a 54 68 69  |reason code..Thi|
000a77a0  73 20 53 57 49 20 70 65  72 66 6f 72 6d 73 20 6d  |s SWI performs m|
000a77b0  69 73 63 65 6c 6c 61 6e  65 6f 75 73 20 6f 70 65  |iscellaneous ope|
000a77c0  72 61 74 69 6f 6e 73 2c  20 64 65 70 65 6e 64 61  |rations, dependa|
000a77d0  6e 74 20 6f 6e 20 74 68  65 20 72 65 61 73 6f 6e  |nt on the reason|
000a77e0  20 63 6f 64 65 20 69 6e  20 52 30 2e 0a 23 73 75  | code in R0..#su|
000a77f0  62 70 61 67 65 20 6f 70  73 0a 50 44 72 69 76 65  |bpage ops.PDrive|
000a7800  72 5f 4d 69 73 63 4f 70  20 72 65 61 73 6f 6e 73  |r_MiscOp reasons|
000a7810  0a 52 30 09 09 09 41 63  74 69 6f 6e 0a 23 4c 69  |.R0...Action.#Li|
000a7820  6e 65 0a 3c 30 3d 3e 50  44 72 69 76 65 72 5f 4d  |ne.<0=>PDriver_M|
000a7830  69 73 63 4f 70 30 3e 09  09 09 41 64 64 20 61 20  |iscOp0>...Add a |
000a7840  66 6f 6e 74 20 6e 61 6d  65 20 74 6f 20 74 68 65  |font name to the|
000a7850  20 6c 69 73 74 20 6f 66  20 6b 6e 6f 77 6e 20 66  | list of known f|
000a7860  6f 6e 74 73 0a 3c 31 3d  3e 50 44 72 69 76 65 72  |onts.<1=>PDriver|
000a7870  5f 4d 69 73 63 4f 70 31  3e 09 09 09 52 65 6d 6f  |_MiscOp1>...Remo|
000a7880  76 65 20 66 6f 6e 74 28  73 29 20 66 72 6f 6d 20  |ve font(s) from |
000a7890  74 68 65 20 6c 69 73 74  20 6f 66 20 6b 6e 6f 77  |the list of know|
000a78a0  6e 20 66 6f 6e 74 73 0a  3c 32 3d 3e 50 44 72 69  |n fonts.<2=>PDri|
000a78b0  76 65 72 5f 4d 69 73 63  4f 70 32 3e 09 09 09 45  |ver_MiscOp2>...E|
000a78c0  6e 75 6d 65 72 61 74 65  20 74 68 65 20 6c 69 73  |numerate the lis|
000a78d0  74 20 6f 66 20 6b 6e 6f  77 6e 20 66 6f 6e 74 73  |t of known fonts|
000a78e0  0a 3c 26 38 30 30 30 30  30 30 30 3d 3e 50 44 72  |.<&80000000=>PDr|
000a78f0  69 76 65 72 5f 4d 69 73  63 4f 70 38 30 30 30 30  |iver_MiscOp80000|
000a7900  30 30 30 3e 09 52 65 67  69 73 74 65 72 20 61 20  |000>.Register a |
000a7910  64 75 6d 70 65 72 20 77  69 74 68 20 50 44 72 69  |dumper with PDri|
000a7920  76 65 72 44 50 0a 3c 26  38 30 30 30 30 30 30 31  |verDP.<&80000001|
000a7930  3d 3e 50 44 72 69 76 65  72 5f 4d 69 73 63 4f 70  |=>PDriver_MiscOp|
000a7940  38 30 30 30 30 30 30 31  3e 09 44 65 72 65 67 69  |80000001>.Deregi|
000a7950  73 74 65 72 20 61 20 64  75 6d 70 65 72 20 77 69  |ster a dumper wi|
000a7960  74 68 20 50 44 72 69 76  65 72 44 50 0a 26 38 30  |th PDriverDP.&80|
000a7970  30 30 30 31 30 30 20 2d  20 26 38 30 30 30 30 46  |000100 - &80000F|
000a7980  46 46 09 09 09 64 69 72  65 63 74 20 63 6f 6e 74  |FF...direct cont|
000a7990  72 6f 6c 20 65 78 74 65  6e 73 69 6f 6e 2e 0a 00  |rol extension...|
000a79a0  44 41 54 41 e6 02 00 00  50 44 72 69 76 65 72 5f  |DATA....PDriver_|
000a79b0  4d 69 73 63 4f 70 20 30  0a 23 50 61 72 65 6e 74  |MiscOp 0.#Parent|
000a79c0  20 50 44 72 69 76 65 72  5f 4d 69 73 63 4f 70 0a  | PDriver_MiscOp.|
000a79d0  3d 3e 09 52 30 20 3d 09  30 20 28 72 65 61 73 6f  |=>.R0 =.0 (reaso|
000a79e0  6e 20 63 6f 64 65 29 0a  09 52 31 20 3d 09 70 6f  |n code)..R1 =.po|
000a79f0  69 6e 74 65 72 20 74 6f  20 63 6f 6e 74 72 6f 6c  |inter to control|
000a7a00  20 74 65 72 6d 69 6e 61  74 65 64 20 52 49 53 43  | terminated RISC|
000a7a10  20 4f 53 20 3c 66 6f 6e  74 20 6e 61 6d 65 3d 3e  | OS <font name=>|
000a7a20  46 6f 6e 74 5f 69 64 65  6e 74 69 66 69 65 72 3e  |Font_identifier>|
000a7a30  0a 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R2 =.pointer t|
000a7a40  6f 20 70 72 69 6e 74 65  72 27 73 20 6e 61 74 69  |o printer's nati|
000a7a50  76 65 20 66 6f 6e 74 20  6e 61 6d 65 20 28 63 6f  |ve font name (co|
000a7a60  6e 74 72 6f 6c 20 74 65  72 6d 69 6e 61 74 65 64  |ntrol terminated|
000a7a70  29 20 6f 72 20 30 0a 09  52 33 20 3d 09 3c 70 72  |) or 0..R3 =.<pr|
000a7a80  69 6e 74 65 72 20 63 6f  64 65 20 66 6c 61 67 73  |inter code flags|
000a7a90  3d 3e 50 44 72 69 76 65  72 5f 4d 69 73 63 4f 70  |=>PDriver_MiscOp|
000a7aa0  30 66 6c 61 67 73 3e 0a  09 52 34 20 3d 09 6f 76  |0flags>..R4 =.ov|
000a7ab0  65 72 77 72 69 74 65 20  65 78 69 73 74 69 6e 67  |erwrite existing|
000a7ac0  20 65 6e 74 72 69 65 73  20 69 66 20 62 69 74 20  | entries if bit |
000a7ad0  30 20 73 65 74 2c 20 65  6c 73 65 20 65 72 72 6f  |0 set, else erro|
000a7ae0  72 0a 3c 3d 09 64 65 70  65 6e 64 73 20 6f 6e 20  |r.<=.depends on |
000a7af0  72 65 61 73 6f 6e 20 63  6f 64 65 0a 0a 54 68 69  |reason code..Thi|
000a7b00  73 20 53 57 49 20 69 73  20 75 73 65 64 20 62 79  |s SWI is used by|
000a7b10  20 74 68 65 20 50 72 69  6e 74 65 72 73 20 61 70  | the Printers ap|
000a7b20  70 6c 69 63 61 74 69 6f  6e 20 74 6f 20 61 64 64  |plication to add|
000a7b30  20 61 20 66 6f 6e 74 20  6e 61 6d 65 20 74 6f 20  | a font name to |
000a7b40  74 68 65 20 6c 69 73 74  20 6b 6e 6f 77 6e 20 66  |the list known f|
000a7b50  6f 72 20 74 68 65 20 63  75 72 72 65 6e 74 20 70  |or the current p|
000a7b60  72 69 6e 74 65 72 2e 20  49 66 20 74 68 65 72 65  |rinter. If there|
000a7b70  20 69 73 20 6e 6f 20 63  75 72 72 65 6e 74 20 6a  | is no current j|
000a7b80  6f 62 20 69 74 20 69 73  20 61 64 64 65 64 20 74  |ob it is added t|
000a7b90  6f 20 61 20 67 6c 6f 62  61 6c 20 6c 69 73 74 2c  |o a global list,|
000a7ba0  20 65 6c 73 65 20 69 74  20 69 73 20 61 64 64 65  | else it is adde|
000a7bb0  64 20 74 6f 20 61 20 6c  6f 63 61 6c 20 6c 69 73  |d to a local lis|
000a7bc0  74 20 66 6f 72 20 74 68  65 20 63 75 72 72 65 6e  |t for the curren|
000a7bd0  74 20 6a 6f 62 2e 20 45  61 63 68 20 6a 6f 62 27  |t job. Each job'|
000a7be0  73 20 6c 69 73 74 20 69  73 20 69 6e 69 74 69 61  |s list is initia|
000a7bf0  6c 69 73 65 64 20 61 73  20 61 20 63 6f 70 79 20  |lised as a copy |
000a7c00  6f 66 20 74 68 65 20 67  6c 6f 62 61 6c 20 6c 69  |of the global li|
000a7c10  73 74 20 77 68 65 6e 20  69 74 20 69 73 20 73 74  |st when it is st|
000a7c20  61 72 74 65 64 2e 0a 0a  4e 61 74 69 76 65 20 66  |arted...Native f|
000a7c30  6f 6e 74 20 6e 61 6d 65  73 20 61 72 65 20 63 61  |ont names are ca|
000a7c40  73 65 20 73 65 6e 73 69  74 69 76 65 2c 20 61 6e  |se sensitive, an|
000a7c50  64 20 6d 61 79 20 62 65  20 6e 75 6c 6c 20 28 66  |d may be null (f|
000a7c60  6f 72 20 65 78 61 6d 70  6c 65 2c 20 61 20 64 69  |or example, a di|
000a7c70  72 65 63 74 20 64 72 69  76 65 72 20 70 72 69 6e  |rect driver prin|
000a7c80  74 65 72 29 2e 0a 00 00  44 41 54 41 ae 00 00 00  |ter)....DATA....|
000a7c90  50 72 69 6e 74 65 72 20  64 65 70 65 6e 64 61 6e  |Printer dependan|
000a7ca0  74 20 66 6f 6e 74 20 66  6c 61 67 73 0a 23 50 61  |t font flags.#Pa|
000a7cb0  72 65 6e 74 20 50 44 72  69 76 65 72 5f 4d 69 73  |rent PDriver_Mis|
000a7cc0  63 4f 70 30 0a 42 69 74  09 4d 65 61 6e 69 6e 67  |cOp0.Bit.Meaning|
000a7cd0  20 77 68 65 6e 20 73 65  74 0a 23 4c 69 6e 65 0a  | when set.#Line.|
000a7ce0  30 09 66 6f 6e 74 20 69  73 20 72 65 73 69 64 65  |0.font is reside|
000a7cf0  6e 74 0a 31 09 66 6f 6e  74 20 69 73 20 74 6f 20  |nt.1.font is to |
000a7d00  62 65 20 64 6f 77 6e 6c  6f 61 64 65 64 20 61 74  |be downloaded at|
000a7d10  20 6a 6f 62 20 73 74 61  72 74 0a 32 09 66 6f 6e  | job start.2.fon|
000a7d20  74 20 68 61 73 20 62 65  65 6e 20 64 6f 77 6e 6c  |t has been downl|
000a7d30  6f 61 64 65 64 0a 00 00  44 41 54 41 17 03 00 00  |oaded...DATA....|
000a7d40  50 44 72 69 76 65 72 5f  4d 69 73 63 4f 70 20 31  |PDriver_MiscOp 1|
000a7d50  0a 23 50 61 72 65 6e 74  20 50 44 72 69 76 65 72  |.#Parent PDriver|
000a7d60  5f 4d 69 73 63 4f 70 0a  3d 3e 09 52 30 20 3d 09  |_MiscOp.=>.R0 =.|
000a7d70  31 20 28 72 65 61 73 6f  6e 20 63 6f 64 65 29 0a  |1 (reason code).|
000a7d80  09 52 31 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R1 =.pointer to|
000a7d90  20 63 6f 6e 74 72 6f 6c  20 74 65 72 6d 69 6e 61  | control termina|
000a7da0  74 65 64 20 52 49 53 43  20 4f 53 20 3c 66 6f 6e  |ted RISC OS <fon|
000a7db0  74 20 6e 61 6d 65 3d 3e  46 6f 6e 74 5f 69 64 65  |t name=>Font_ide|
000a7dc0  6e 74 69 66 69 65 72 3e  2c 20 6f 72 20 30 20 74  |ntifier>, or 0 t|
000a7dd0  6f 20 64 65 6c 65 74 65  20 61 6c 6c 20 66 6f 6e  |o delete all fon|
000a7de0  74 73 0a 0a 54 68 69 73  20 53 57 49 20 69 73 20  |ts..This SWI is |
000a7df0  75 73 65 64 20 62 79 20  74 68 65 20 50 72 69 6e  |used by the Prin|
000a7e00  74 65 72 73 20 61 70 70  6c 69 63 61 74 69 6f 6e  |ters application|
000a7e10  20 74 6f 20 72 65 6d 6f  76 65 20 61 20 66 6f 6e  | to remove a fon|
000a7e20  74 20 6e 61 6d 65 20 6f  72 20 61 6c 6c 20 66 6f  |t name or all fo|
000a7e30  6e 74 73 20 20 66 72 6f  6d 20 74 68 65 20 6c 69  |nts  from the li|
000a7e40  73 74 20 6b 6e 6f 77 6e  20 66 6f 72 20 74 68 65  |st known for the|
000a7e50  20 63 75 72 72 65 6e 74  20 70 72 69 6e 74 65 72  | current printer|
000a7e60  2e 20 49 66 20 74 68 65  72 65 20 69 73 20 6e 6f  |. If there is no|
000a7e70  20 63 75 72 72 65 6e 74  20 6a 6f 62 20 69 74 20  | current job it |
000a7e80  69 73 20 61 64 64 65 64  20 74 6f 20 61 20 67 6c  |is added to a gl|
000a7e90  6f 62 61 6c 20 6c 69 73  74 2c 20 65 6c 73 65 20  |obal list, else |
000a7ea0  69 74 20 69 73 20 61 64  64 65 64 20 74 6f 20 61  |it is added to a|
000a7eb0  20 6c 6f 63 61 6c 20 6c  69 73 74 20 66 6f 72 20  | local list for |
000a7ec0  74 68 65 20 63 75 72 72  65 6e 74 20 6a 6f 62 2e  |the current job.|
000a7ed0  20 45 61 63 68 20 6a 6f  62 27 73 20 6c 69 73 74  | Each job's list|
000a7ee0  20 69 73 20 69 6e 69 74  69 61 6c 69 73 65 64 20  | is initialised |
000a7ef0  61 73 20 61 20 63 6f 70  79 20 6f 66 20 74 68 65  |as a copy of the|
000a7f00  20 67 6c 6f 62 61 6c 20  6c 69 73 74 20 77 68 65  | global list whe|
000a7f10  6e 20 69 74 20 69 73 20  73 74 61 72 74 65 64 2e  |n it is started.|
000a7f20  0a 0a 4e 6f 20 65 72 72  6f 72 20 69 73 20 67 65  |..No error is ge|
000a7f30  6e 65 72 61 74 65 64 20  69 66 20 61 6e 20 61 74  |nerated if an at|
000a7f40  74 65 6d 70 74 20 69 73  20 6d 61 64 65 20 74 6f  |tempt is made to|
000a7f50  20 72 65 6d 6f 76 65 20  61 6c 6c 20 66 6f 6e 74  | remove all font|
000a7f60  73 20 77 68 65 6e 20 74  68 65 72 65 20 61 72 65  |s when there are|
000a7f70  20 6e 6f 6e 65 2c 20 62  75 74 20 61 74 74 65 6d  | none, but attem|
000a7f80  70 74 69 6e 67 20 74 6f  20 72 65 6d 6f 76 65 20  |pting to remove |
000a7f90  61 20 73 70 65 63 69 66  69 63 20 66 6f 6e 74 20  |a specific font |
000a7fa0  74 68 61 74 20 64 6f 65  73 20 6e 6f 74 20 65 78  |that does not ex|
000a7fb0  69 73 74 20 2a 69 73 2a  20 61 6e 20 65 72 72 6f  |ist *is* an erro|
000a7fc0  72 2e 20 4e 6f 74 20 74  68 61 74 20 74 68 69 73  |r. Not that this|
000a7fd0  20 6d 61 74 74 65 72 73  2c 20 61 73 20 74 68 65  | matters, as the|
000a7fe0  20 63 75 72 72 65 6e 74  20 69 6d 70 6c 65 6d 65  | current impleme|
000a7ff0  6e 74 61 74 69 6f 6e 20  69 67 6e 6f 72 65 73 20  |ntation ignores |
000a8000  52 31 20 61 6e 64 20 61  6c 77 61 79 73 20 72 65  |R1 and always re|
000a8010  6d 6f 76 65 73 20 61 6c  6c 20 66 6f 6e 74 73 21  |moves all fonts!|
000a8020  0a 23 20 47 65 72 70 68  3e 20 4e 6f 74 20 61 6e  |.# Gerph> Not an|
000a8030  20 41 50 49 20 74 68 61  74 20 69 73 6e 27 74 20  | API that isn't |
000a8040  75 73 65 64 2c 20 73 75  72 65 6c 79 20 3f 0a 00  |used, surely ?..|
000a8050  44 41 54 41 b8 04 00 00  50 44 72 69 76 65 72 5f  |DATA....PDriver_|
000a8060  4d 69 73 63 4f 70 20 32  0a 23 50 61 72 65 6e 74  |MiscOp 2.#Parent|
000a8070  20 50 44 72 69 76 65 72  5f 4d 69 73 63 4f 70 0a  | PDriver_MiscOp.|
000a8080  54 6f 20 66 69 6e 64 20  73 69 7a 65 20 6f 66 20  |To find size of |
000a8090  62 75 66 66 65 72 0a 3d  3e 09 52 30 20 3d 09 32  |buffer.=>.R0 =.2|
000a80a0  20 28 72 65 61 73 6f 6e  20 63 6f 64 65 29 0a 09  | (reason code)..|
000a80b0  52 31 20 3d 09 30 20 74  6f 20 72 65 74 75 72 6e  |R1 =.0 to return|
000a80c0  20 72 65 71 75 69 72 65  64 20 73 69 7a 65 20 6f  | required size o|
000a80d0  66 20 62 75 66 66 65 72  0a 09 52 32 20 3d 09 30  |f buffer..R2 =.0|
000a80e0  0a 09 52 33 20 3d 09 68  65 61 64 65 72 20 73 69  |..R3 =.header si|
000a80f0  7a 65 20 74 6f 20 61 64  64 20 74 6f 20 62 75 66  |ze to add to buf|
000a8100  66 65 72 20 73 69 7a 65  0a 09 52 34 20 3d 09 30  |fer size..R4 =.0|
000a8110  20 28 66 6c 61 67 73 2c  20 61 6c 6c 20 72 65 73  | (flags, all res|
000a8120  65 72 76 65 64 29 0a 0a  3c 3d 09 52 31 2c 52 33  |erved)..<=.R1,R3|
000a8130  2c 52 34 20 70 72 65 73  65 72 76 65 64 0a 09 52  |,R4 preserved..R|
000a8140  32 20 3d 09 73 69 7a 65  20 6f 66 20 62 75 66 66  |2 =.size of buff|
000a8150  65 72 20 2b 20 73 69 7a  65 20 69 6e 20 52 33 0a  |er + size in R3.|
000a8160  0a 54 6f 20 65 6e 75 6d  65 72 61 74 65 0a 3d 3e  |.To enumerate.=>|
000a8170  09 52 30 20 3d 09 32 20  28 72 65 61 73 6f 6e 20  |.R0 =.2 (reason |
000a8180  63 6f 64 65 29 0a 09 52  31 20 3d 09 70 6f 69 6e  |code)..R1 =.poin|
000a8190  74 65 72 20 74 6f 20 3c  62 75 66 66 65 72 3d 3e  |ter to <buffer=>|
000a81a0  2e 62 75 66 66 65 72 3e  0a 09 52 32 20 3d 09 73  |.buffer>..R2 =.s|
000a81b0  69 7a 65 20 6f 66 20 62  75 66 66 65 72 0a 09 52  |ize of buffer..R|
000a81c0  33 20 3d 09 70 72 65 76  69 6f 75 73 20 68 61 6e  |3 =.previous han|
000a81d0  64 6c 65 2c 20 30 20 74  6f 20 73 74 61 72 74 0a  |dle, 0 to start.|
000a81e0  09 52 34 20 3d 09 30 20  28 66 6c 61 67 73 2c 20  |.R4 =.0 (flags, |
000a81f0  61 6c 6c 20 72 65 73 65  72 76 65 64 29 0a 0a 3c  |all reserved)..<|
000a8200  3d 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |=.R1 =.pointer t|
000a8210  6f 20 66 69 72 73 74 20  66 72 65 65 20 62 79 74  |o first free byt|
000a8220  65 20 69 6e 20 62 75 66  66 65 72 0a 09 52 32 20  |e in buffer..R2 |
000a8230  3d 09 66 72 65 65 20 62  79 74 65 73 20 69 6e 20  |=.free bytes in |
000a8240  62 75 66 66 65 72 0a 09  52 33 20 3d 09 75 70 64  |buffer..R3 =.upd|
000a8250  61 74 65 64 20 68 61 6e  64 6c 65 20 28 30 20 6d  |ated handle (0 m|
000a8260  65 61 6e 73 20 65 6e 64  29 0a 09 52 34 20 70 72  |eans end)..R4 pr|
000a8270  65 73 65 72 76 65 64 0a  0a 54 68 69 73 20 53 57  |eserved..This SW|
000a8280  49 20 69 73 20 75 73 65  64 20 62 79 20 74 68 65  |I is used by the|
000a8290  20 50 72 69 6e 74 65 72  73 20 61 70 70 6c 69 63  | Printers applic|
000a82a0  61 74 69 6f 6e 20 74 6f  20 6c 69 73 74 20 74 68  |ation to list th|
000a82b0  65 20 66 6f 6e 74 73 20  6b 6e 6f 77 6e 20 62 79  |e fonts known by|
000a82c0  20 74 68 65 20 63 75 72  72 65 6e 74 20 70 72 69  | the current pri|
000a82d0  6e 74 65 72 2e 20 49 66  20 74 68 65 72 65 20 69  |nter. If there i|
000a82e0  73 20 6e 6f 20 63 75 72  72 65 6e 74 20 6a 6f 62  |s no current job|
000a82f0  20 69 74 20 69 73 20 61  64 64 65 64 20 74 6f 20  | it is added to |
000a8300  61 20 67 6c 6f 62 61 6c  20 6c 69 73 74 2c 20 65  |a global list, e|
000a8310  6c 73 65 20 69 74 20 69  73 20 61 64 64 65 64 20  |lse it is added |
000a8320  74 6f 20 61 20 6c 6f 63  61 6c 20 6c 69 73 74 20  |to a local list |
000a8330  66 6f 72 20 74 68 65 20  63 75 72 72 65 6e 74 20  |for the current |
000a8340  6a 6f 62 2e 20 45 61 63  68 20 6a 6f 62 27 73 20  |job. Each job's |
000a8350  6c 69 73 74 20 69 73 20  69 6e 69 74 69 61 6c 69  |list is initiali|
000a8360  73 65 64 20 61 73 20 61  20 63 6f 70 79 20 6f 66  |sed as a copy of|
000a8370  20 74 68 65 20 67 6c 6f  62 61 6c 20 6c 69 73 74  | the global list|
000a8380  20 77 68 65 6e 20 69 74  20 69 73 20 73 74 61 72  | when it is star|
000a8390  74 65 64 2e 0a 23 53 75  62 70 61 67 65 20 62 75  |ted..#Subpage bu|
000a83a0  66 66 65 72 0a 50 44 72  69 76 65 72 5f 4d 69 73  |ffer.PDriver_Mis|
000a83b0  63 4f 70 20 6c 69 73 74  20 66 6f 6e 74 73 20 62  |cOp list fonts b|
000a83c0  6c 6f 63 6b 0a 4f 66 66  73 65 74 09 43 6f 6e 74  |lock.Offset.Cont|
000a83d0  65 6e 74 73 0a 23 4c 69  6e 65 0a 30 09 70 6f 69  |ents.#Line.0.poi|
000a83e0  6e 74 65 72 20 74 6f 20  63 6f 6e 74 72 6f 6c 20  |nter to control |
000a83f0  74 65 72 6d 69 6e 61 74  65 64 20 52 49 53 43 20  |terminated RISC |
000a8400  4f 53 20 3c 66 6f 6e 74  20 6e 61 6d 65 3d 3e 46  |OS <font name=>F|
000a8410  6f 6e 74 5f 69 64 65 6e  74 69 66 69 65 72 3e 0a  |ont_identifier>.|
000a8420  34 09 70 6f 69 6e 74 65  72 20 74 6f 20 70 72 69  |4.pointer to pri|
000a8430  6e 74 65 72 27 73 20 6e  61 74 69 76 65 20 66 6f  |nter's native fo|
000a8440  6e 74 20 6e 61 6d 65 20  28 63 6f 6e 74 72 6f 6c  |nt name (control|
000a8450  20 74 65 72 6d 69 6e 61  74 65 64 29 0a 38 09 3c  | terminated).8.<|
000a8460  70 72 69 6e 74 65 72 20  63 6f 64 65 20 66 6c 61  |printer code fla|
000a8470  67 73 3d 3e 50 44 72 69  76 65 72 5f 4d 69 73 63  |gs=>PDriver_Misc|
000a8480  4f 70 30 66 6c 61 67 73  3e 0a 0a 54 68 65 20 70  |Op0flags>..The p|
000a8490  6f 69 6e 74 65 64 2d 74  6f 20 73 74 72 69 6e 67  |ointed-to string|
000a84a0  73 20 77 69 6c 6c 20 62  65 63 6f 6d 65 20 69 6e  |s will become in|
000a84b0  76 61 6c 69 64 20 69 66  20 74 68 65 20 72 65 6c  |valid if the rel|
000a84c0  65 76 65 6e 74 20 66 6f  6e 74 20 69 73 20 64 65  |event font is de|
000a84d0  6c 65 74 65 64 20 62 79  20 61 20 63 61 6c 6c 20  |leted by a call |
000a84e0  74 6f 20 3c 50 44 72 69  76 65 72 5f 4d 69 73 63  |to <PDriver_Misc|
000a84f0  4f 70 20 31 3d 3e 50 44  72 69 76 65 72 5f 4d 69  |Op 1=>PDriver_Mi|
000a8500  73 63 4f 70 31 3e 2e 0a  44 41 54 41 37 04 00 00  |scOp1>..DATA7...|
000a8510  50 44 72 69 76 65 72 5f  4d 69 73 63 4f 70 20 26  |PDriver_MiscOp &|
000a8520  38 30 30 30 30 30 30 30  0a 23 50 61 72 65 6e 74  |80000000.#Parent|
000a8530  20 50 44 72 69 76 65 72  5f 4d 69 73 63 4f 70 46  | PDriver_MiscOpF|
000a8540  6f 72 44 72 69 76 65 72  0a 3d 3e 09 52 30 20 3d  |orDriver.=>.R0 =|
000a8550  09 26 38 30 30 30 30 30  30 30 20 28 72 65 61 73  |.&80000000 (reas|
000a8560  6f 6e 20 63 6f 64 65 29  0a 09 52 31 20 3d 09 3c  |on code)..R1 =.<|
000a8570  6e 75 6d 62 65 72 20 6f  66 20 64 72 69 76 65 72  |number of driver|
000a8580  3d 3e 50 44 75 6d 70 65  72 5f 6e 75 6d 62 65 72  |=>PDumper_number|
000a8590  73 3e 0a 09 52 32 20 3d  09 72 65 71 75 69 72 65  |s>..R2 =.require|
000a85a0  64 20 76 65 72 73 69 6f  6e 20 6f 66 20 50 44 72  |d version of PDr|
000a85b0  69 76 65 72 44 50 20 28  2a 20 31 30 30 29 0a 09  |iverDP (* 100)..|
000a85c0  52 33 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R3 =.pointer to |
000a85d0  64 75 6d 70 65 72 27 73  20 70 72 69 76 61 74 65  |dumper's private|
000a85e0  20 77 6f 72 64 20 28 70  61 73 73 65 64 20 69 6e  | word (passed in|
000a85f0  20 61 73 20 52 31 32 29  0a 09 52 34 20 3d 09 70  | as R12)..R4 =.p|
000a8600  6f 69 6e 74 65 72 20 74  6f 20 3c 64 75 6d 70 65  |ointer to <dumpe|
000a8610  72 20 72 65 61 73 6f 6e  20 63 6f 64 65 20 68 61  |r reason code ha|
000a8620  6e 64 6c 65 72 3d 3e 50  44 75 6d 70 65 72 5f 63  |ndler=>PDumper_c|
000a8630  6f 64 65 3e 0a 09 52 35  20 3d 09 3c 62 69 74 20  |ode>..R5 =.<bit |
000a8640  6d 61 73 6b 3d 3e 2e 63  6f 64 65 73 3e 20 6f 66  |mask=>.codes> of|
000a8650  20 73 75 70 70 6f 72 74  65 64 20 63 61 6c 6c 73  | supported calls|
000a8660  0a 09 52 36 20 3d 09 3c  62 69 74 20 6d 61 73 6b  |..R6 =.<bit mask|
000a8670  3d 3e 2e 73 74 72 69 70  73 3e 20 6f 66 20 73 75  |=>.strips> of su|
000a8680  70 70 6f 72 74 65 64 20  73 74 72 69 70 20 74 79  |pported strip ty|
000a8690  70 65 73 0a 0a 41 20 70  72 69 6e 74 65 72 20 64  |pes..A printer d|
000a86a0  75 6d 70 65 72 20 73 68  6f 75 6c 64 20 63 61 6c  |umper should cal|
000a86b0  6c 20 74 68 65 20 3c 50  44 72 69 76 65 72 5f 4d  |l the <PDriver_M|
000a86c0  69 73 63 4f 70 46 6f 72  44 72 69 76 65 72 3e 20  |iscOpForDriver> |
000a86d0  66 6f 72 6d 20 6f 66 20  74 68 69 73 20 53 57 49  |form of this SWI|
000a86e0  20 74 6f 20 72 65 67 69  73 74 65 72 20 69 74 73  | to register its|
000a86f0  65 6c 66 20 77 69 74 68  20 50 44 72 69 76 65 72  |elf with PDriver|
000a8700  44 50 20 77 68 65 6e 20  69 74 20 73 74 61 72 74  |DP when it start|
000a8710  73 2c 20 6f 72 20 77 68  65 6e 20 69 74 20 72 65  |s, or when it re|
000a8720  63 65 69 76 65 73 20 3c  53 65 72 76 69 63 65 5f  |ceives <Service_|
000a8730  50 44 75 6d 70 65 72 53  74 61 72 74 69 6e 67 3d  |PDumperStarting=|
000a8740  3e 53 65 72 76 69 63 65  5f 36 36 3e 2e 0a 0a 44  |>Service_66>...D|
000a8750  75 6d 70 65 72 73 20 6d  75 73 74 20 73 75 70 70  |umpers must supp|
000a8760  6f 72 74 20 73 74 72 69  70 20 74 79 70 65 73 20  |ort strip types |
000a8770  30 2d 32 20 61 6e 64 20  72 65 61 73 6f 6e 20 63  |0-2 and reason c|
000a8780  6f 64 65 73 20 30 2d 37  20 28 7b 2f 7d 69 2e 65  |odes 0-7 ({/}i.e|
000a8790  2e 7b 2f 7d 20 61 6c 6c  20 74 68 61 74 20 61 72  |.{/} all that ar|
000a87a0  65 20 63 75 72 72 65 6e  74 6c 79 20 64 65 66 69  |e currently defi|
000a87b0  6e 65 64 29 2e 0a 23 53  75 62 70 61 67 65 20 73  |ned)..#Subpage s|
000a87c0  74 72 69 70 73 0a 42 69  74 6d 61 73 6b 20 66 6f  |trips.Bitmask fo|
000a87d0  72 20 73 74 72 69 70 20  74 79 70 65 73 0a 42 69  |r strip types.Bi|
000a87e0  74 09 57 68 65 6e 20 73  65 74 20 73 75 70 70 6f  |t.When set suppo|
000a87f0  72 74 73 0a 23 4c 69 6e  65 0a 30 09 6d 6f 6e 6f  |rts.#Line.0.mono|
000a8800  63 68 72 6f 6d 65 0a 31  09 67 72 65 79 20 73 63  |chrome.1.grey sc|
000a8810  61 6c 65 0a 32 09 32 35  36 20 63 6f 6c 6f 75 72  |ale.2.256 colour|
000a8820  0a 23 53 75 62 70 61 67  65 20 63 6f 64 65 73 0a  |.#Subpage codes.|
000a8830  42 69 74 6d 61 73 6b 20  66 6f 72 20 72 65 61 73  |Bitmask for reas|
000a8840  6f 6e 20 63 6f 64 65 73  0a 42 69 74 09 57 68 65  |on codes.Bit.Whe|
000a8850  6e 20 73 65 74 20 73 75  70 70 6f 72 74 73 0a 23  |n set supports.#|
000a8860  4c 69 6e 65 0a 30 09 3c  50 44 75 6d 70 65 72 52  |Line.0.<PDumperR|
000a8870  65 61 73 6f 6e 5f 53 65  74 44 72 69 76 65 72 3e  |eason_SetDriver>|
000a8880  0a 31 09 3c 50 44 75 6d  70 65 72 52 65 61 73 6f  |.1.<PDumperReaso|
000a8890  6e 5f 4f 75 74 70 75 74  44 75 6d 70 3e 0a 32 09  |n_OutputDump>.2.|
000a88a0  3c 50 44 75 6d 70 65 72  52 65 61 73 6f 6e 5f 43  |<PDumperReason_C|
000a88b0  6f 6c 6f 75 72 53 65 74  3e 0a 33 09 3c 50 44 75  |olourSet>.3.<PDu|
000a88c0  6d 70 65 72 52 65 61 73  6f 6e 5f 53 74 61 72 74  |mperReason_Start|
000a88d0  50 61 67 65 3e 0a 34 09  3c 50 44 75 6d 70 65 72  |Page>.4.<PDumper|
000a88e0  52 65 61 73 6f 6e 5f 45  6e 64 50 61 67 65 3e 0a  |Reason_EndPage>.|
000a88f0  35 09 3c 50 44 75 6d 70  65 72 52 65 61 73 6f 6e  |5.<PDumperReason|
000a8900  5f 53 74 61 72 74 4a 6f  62 3e 0a 36 09 3c 50 44  |_StartJob>.6.<PD|
000a8910  75 6d 70 65 72 52 65 61  73 6f 6e 5f 41 62 6f 72  |umperReason_Abor|
000a8920  74 4a 6f 62 3e 0a 37 09  3c 50 44 75 6d 70 65 72  |tJob>.7.<PDumper|
000a8930  52 65 61 73 6f 6e 5f 4d  69 73 63 4f 70 3e 0a 00  |Reason_MiscOp>..|
000a8940  44 41 54 41 66 01 00 00  50 44 72 69 76 65 72 5f  |DATAf...PDriver_|
000a8950  4d 69 73 63 4f 70 20 26  38 30 30 30 30 30 30 30  |MiscOp &80000000|
000a8960  0a 23 50 61 72 65 6e 74  20 50 44 72 69 76 65 72  |.#Parent PDriver|
000a8970  5f 4d 69 73 63 4f 70 46  6f 72 44 72 69 76 65 72  |_MiscOpForDriver|
000a8980  0a 3d 3e 09 52 30 20 3d  09 26 38 30 30 30 30 30  |.=>.R0 =.&800000|
000a8990  30 31 20 28 72 65 61 73  6f 6e 20 63 6f 64 65 29  |01 (reason code)|
000a89a0  0a 09 52 31 20 3d 09 3c  6e 75 6d 62 65 72 20 6f  |..R1 =.<number o|
000a89b0  66 20 64 72 69 76 65 72  3d 3e 50 44 75 6d 70 65  |f driver=>PDumpe|
000a89c0  72 5f 6e 75 6d 62 65 72  73 3e 0a 0a 41 20 70 72  |r_numbers>..A pr|
000a89d0  69 6e 74 65 72 20 64 75  6d 70 65 72 20 73 68 6f  |inter dumper sho|
000a89e0  75 6c 64 20 63 61 6c 6c  20 74 68 65 20 3c 50 44  |uld call the <PD|
000a89f0  72 69 76 65 72 5f 4d 69  73 63 4f 70 46 6f 72 44  |river_MiscOpForD|
000a8a00  72 69 76 65 72 3e 20 66  6f 72 6d 20 6f 66 20 74  |river> form of t|
000a8a10  68 69 73 20 53 57 49 20  77 68 65 6e 20 69 74 20  |his SWI when it |
000a8a20  64 69 65 73 2e 20 49 66  20 74 68 65 20 64 75 6d  |dies. If the dum|
000a8a30  70 65 72 20 69 73 20 69  6e 20 75 73 65 20 74 68  |per is in use th|
000a8a40  65 6e 20 74 68 69 73 20  63 61 6c 6c 20 77 69 6c  |en this call wil|
000a8a50  6c 20 72 65 74 75 72 6e  20 61 6e 64 20 65 72 72  |l return and err|
000a8a60  6f 72 2c 20 61 6e 64 20  74 68 65 20 64 75 6d 70  |or, and the dump|
000a8a70  65 72 20 69 6e 20 74 75  72 6e 20 73 68 6f 75 6c  |er in turn shoul|
000a8a80  64 20 72 65 70 6f 72 74  20 74 68 65 20 65 72 72  |d report the err|
000a8a90  6f 72 20 61 6e 64 20 72  65 66 75 73 65 20 74 6f  |or and refuse to|
000a8aa0  20 64 69 65 2e 0a 00 00  44 41 54 41 71 01 00 00  | die....DATAq...|
000a8ab0  50 44 72 69 76 65 72 5f  4d 69 73 63 4f 70 46 6f  |PDriver_MiscOpFo|
000a8ac0  72 44 72 69 76 65 72 20  20 28 26 38 30 31 35 42  |rDriver  (&8015B|
000a8ad0  29 0a 23 50 61 72 65 6e  74 20 50 44 72 69 76 65  |).#Parent PDrive|
000a8ae0  72 5f 0a 3d 3e 09 52 30  20 3d 09 3c 52 65 61 73  |r_.=>.R0 =.<Reas|
000a8af0  6f 6e 20 63 6f 64 65 3d  3e 50 44 72 69 76 65 72  |on code=>PDriver|
000a8b00  5f 4d 69 73 63 4f 70 2e  6f 70 73 3e 0a 09 52 38  |_MiscOp.ops>..R8|
000a8b10  20 3d 09 3c 70 72 69 6e  74 65 72 20 64 72 69 76  | =.<printer driv|
000a8b20  65 72 20 6e 75 6d 62 65  72 3d 3e 50 44 72 69 76  |er number=>PDriv|
000a8b30  65 72 5f 70 72 69 6e 74  65 72 6e 75 6d 62 65 72  |er_printernumber|
000a8b40  73 3e 0a 09 6f 74 68 65  72 20 72 65 67 69 73 74  |s>..other regist|
000a8b50  65 72 73 20 64 65 70 65  6e 64 20 6f 6e 20 72 65  |ers depend on re|
000a8b60  61 73 6f 6e 20 63 6f 64  65 0a 0a 3c 3d 09 64 65  |ason code..<=.de|
000a8b70  70 65 6e 64 73 20 6f 6e  20 72 65 61 73 6f 6e 20  |pends on reason |
000a8b80  63 6f 64 65 0a 0a 54 68  69 73 20 53 57 49 20 69  |code..This SWI i|
000a8b90  73 20 69 64 65 6e 74 69  63 61 6c 20 74 6f 20 3c  |s identical to <|
000a8ba0  50 44 72 69 76 65 72 5f  4d 69 73 63 4f 70 3e 2c  |PDriver_MiscOp>,|
000a8bb0  20 65 78 63 65 70 74 20  74 68 61 74 20 69 74 20  | except that it |
000a8bc0  70 61 73 73 65 73 20 74  68 65 20 6f 70 65 72 61  |passes the opera|
000a8bd0  74 69 6f 6e 20 74 6f 20  74 68 65 20 64 72 69 76  |tion to the driv|
000a8be0  65 72 20 73 70 65 63 69  66 65 64 20 69 6e 20 52  |er specifed in R|
000a8bf0  38 2c 20 77 68 69 63 68  20 6e 65 65 64 20 6e 6f  |8, which need no|
000a8c00  74 20 62 65 20 74 68 65  20 63 75 72 72 65 6e 74  |t be the current|
000a8c10  20 64 72 69 76 65 72 2e  0a 00 00 00 44 41 54 41  | driver.....DATA|
000a8c20  b8 00 00 00 50 72 69 6e  74 65 72 20 64 72 69 76  |....Printer driv|
000a8c30  65 72 20 72 65 63 74 61  6e 67 6c 65 20 62 6c 6f  |er rectangle blo|
000a8c40  63 6b 0a 23 50 61 72 65  6e 74 20 50 44 72 69 76  |ck.#Parent PDriv|
000a8c50  65 72 5f 0a 4f 66 66 73  65 74 09 43 6f 6e 74 65  |er_.Offset.Conte|
000a8c60  6e 74 73 0a 23 4c 69 6e  65 0a 30 09 78 20 6d 69  |nts.#Line.0.x mi|
000a8c70  6e 2c 20 69 6e 63 6c 75  73 69 76 65 0a 34 09 79  |n, inclusive.4.y|
000a8c80  20 6d 69 6e 2c 20 69 6e  63 6c 75 73 69 76 65 0a  | min, inclusive.|
000a8c90  38 09 78 20 6d 61 78 2c  20 65 78 63 6c 75 73 69  |8.x max, exclusi|
000a8ca0  76 65 0a 31 32 09 79 20  6d 61 78 2c 20 65 78 63  |ve.12.y max, exc|
000a8cb0  6c 75 73 69 76 65 0a 0a  41 6c 6c 20 76 61 6c 75  |lusive..All valu|
000a8cc0  65 73 20 61 72 65 20 69  6e 20 4f 53 20 75 6e 69  |es are in OS uni|
000a8cd0  74 73 2e 0a 44 41 54 41  ad 01 00 00 50 44 72 69  |ts..DATA....PDri|
000a8ce0  76 65 72 5f 52 65 6d 6f  76 65 44 72 69 76 65 72  |ver_RemoveDriver|
000a8cf0  20 20 28 26 38 30 31 35  37 29 0a 23 50 61 72 65  |  (&80157).#Pare|
000a8d00  6e 74 20 50 44 72 69 76  65 72 5f 0a 3d 3e 09 52  |nt PDriver_.=>.R|
000a8d10  30 20 3d 09 3c 70 72 69  6e 74 65 72 20 64 72 69  |0 =.<printer dri|
000a8d20  76 65 72 20 6e 75 6d 62  65 72 3d 3e 50 44 72 69  |ver number=>PDri|
000a8d30  76 65 72 5f 70 72 69 6e  74 65 72 6e 75 6d 62 65  |ver_printernumbe|
000a8d40  72 73 3e 0a 0a 54 68 69  73 20 53 57 49 20 64 65  |rs>..This SWI de|
000a8d50  72 65 67 69 73 74 65 72  73 20 61 20 70 72 69 6e  |registers a prin|
000a8d60  74 65 72 20 64 72 69 76  65 72 20 66 72 6f 6d 20  |ter driver from |
000a8d70  74 68 65 20 50 44 72 69  76 65 72 20 73 68 61 72  |the PDriver shar|
000a8d80  65 72 20 6d 6f 64 75 6c  65 2c 20 63 61 6e 63 65  |er module, cance|
000a8d90  6c 6c 69 6e 67 20 61 6c  6c 20 6a 6f 62 73 20 61  |lling all jobs a|
000a8da0  73 73 6f 63 69 61 74 65  64 20 77 69 74 68 20 69  |ssociated with i|
000a8db0  74 2e 20 54 68 69 73 20  63 61 6e 20 63 6f 6e 66  |t. This can conf|
000a8dc0  75 73 65 20 28 61 6e 64  20 63 72 61 73 68 29 20  |use (and crash) |
000a8dd0  73 6f 6d 65 20 61 70 70  6c 69 63 61 74 69 6f 6e  |some application|
000a8de0  73 20 2d 20 69 74 20 69  73 20 77 69 73 65 20 66  |s - it is wise f|
000a8df0  6f 72 20 74 68 65 20 64  72 69 76 65 72 20 74 6f  |or the driver to|
000a8e00  20 63 68 65 63 6b 20 74  68 61 74 20 69 74 20 68  | check that it h|
000a8e10  61 73 20 6e 6f 20 70 65  6e 64 69 6e 67 20 6a 6f  |as no pending jo|
000a8e20  62 73 20 62 65 66 6f 72  65 20 63 61 6c 6c 69 6e  |bs before callin|
000a8e30  67 20 74 68 69 73 20 53  57 49 2e 0a 23 20 51 75  |g this SWI..# Qu|
000a8e40  69 74 65 20 68 6f 77 20  74 68 65 20 2a 64 72 69  |ite how the *dri|
000a8e50  76 65 72 2a 20 73 68 6f  75 6c 64 20 64 6f 20 74  |ver* should do t|
000a8e60  68 69 73 20 69 73 20 6e  6f 74 20 6d 65 6e 74 69  |his is not menti|
000a8e70  6f 6e 65 64 20 62 79 20  74 68 65 20 50 52 4d 21  |oned by the PRM!|
000a8e80  0a 00 00 00 44 41 54 41  e0 00 00 00 50 44 72 69  |....DATA....PDri|
000a8e90  76 65 72 5f 52 65 73 65  74 20 20 28 26 38 30 31  |ver_Reset  (&801|
000a8ea0  34 41 29 0a 23 50 61 72  65 6e 74 20 50 44 72 69  |4A).#Parent PDri|
000a8eb0  76 65 72 5f 0a 0a 54 68  69 73 20 53 57 49 20 65  |ver_..This SWI e|
000a8ec0  6e 64 73 20 61 6c 6c 20  70 72 69 6e 74 20 6a 6f  |nds all print jo|
000a8ed0  62 73 20 61 62 6e 6f 72  6d 61 6c 6c 79 2e 20 49  |bs abnormally. I|
000a8ee0  74 20 73 68 6f 75 6c 64  20 6f 6e 6c 79 20 62 65  |t should only be|
000a8ef0  20 63 61 6c 6c 65 64 20  61 73 20 61 6e 20 65 6d  | called as an em|
000a8f00  65 72 67 65 6e 63 79 20  6d 65 61 73 75 72 65 20  |ergency measure |
000a8f10  64 75 72 69 6e 67 20 61  70 70 6c 69 63 61 74 69  |during applicati|
000a8f20  6f 6e 20 64 65 76 65 6c  6f 70 6d 65 6e 74 2e 20  |on development. |
000a8f30  49 74 20 69 73 20 69 73  73 75 65 64 20 69 66 20  |It is issued if |
000a8f40  74 68 65 20 70 72 69 6e  74 65 72 20 64 72 69 76  |the printer driv|
000a8f50  65 72 20 6d 64 75 6c 65  20 69 73 20 6b 69 6c 6c  |er mdule is kill|
000a8f60  65 64 2e 0a 44 41 54 41  37 01 00 00 50 44 72 69  |ed..DATA7...PDri|
000a8f70  76 65 72 5f 53 63 72 65  65 6e 44 75 6d 70 20 20  |ver_ScreenDump  |
000a8f80  28 26 38 30 31 34 46 29  0a 23 50 61 72 65 6e 74  |(&8014F).#Parent|
000a8f90  20 50 44 72 69 76 65 72  5f 0a 3d 3e 09 52 30 20  | PDriver_.=>.R0 |
000a8fa0  3d 09 66 69 6c 65 20 68  61 6e 64 6c 65 20 74 6f  |=.file handle to|
000a8fb0  20 72 65 63 69 65 76 65  20 64 75 6d 70 0a 0a 54  | recieve dump..T|
000a8fc0  68 69 73 20 53 57 49 20  6d 61 6b 65 73 20 74 68  |his SWI makes th|
000a8fd0  65 20 70 72 69 6e 74 65  72 20 67 65 6e 65 72 61  |e printer genera|
000a8fe0  74 65 20 61 20 73 63 72  65 65 6e 20 64 75 6d 70  |te a screen dump|
000a8ff0  20 74 6f 20 74 68 65 20  73 70 65 63 69 66 69 65  | to the specifie|
000a9000  64 20 66 69 6c 65 20 68  61 6e 64 6c 65 2e 20 43  |d file handle. C|
000a9010  68 65 63 6b 20 74 68 65  20 3c 66 65 61 74 75 72  |heck the <featur|
000a9020  65 73 20 77 6f 72 64 3d  3e 50 44 72 69 76 65 72  |es word=>PDriver|
000a9030  5f 66 65 61 74 75 72 65  73 3e 20 66 69 72 73 74  |_features> first|
000a9040  20 2d 20 6e 6f 20 63 75  72 72 65 6e 74 20 41 63  | - no current Ac|
000a9050  6f 72 6e 20 70 72 69 6e  74 65 72 20 64 72 69 76  |orn printer driv|
000a9060  65 72 20 73 75 70 70 6f  72 74 73 20 69 74 21 0a  |er supports it!.|
000a9070  23 20 47 65 72 70 68 3e  20 41 6e 6f 74 68 65 72  |# Gerph> Another|
000a9080  20 75 73 65 66 75 6c 20  66 65 61 74 75 72 65 20  | useful feature |
000a9090  74 68 65 72 65 20 74 68  65 6e 0a 00 44 41 54 41  |there then..DATA|
000a90a0  d9 01 00 00 50 44 72 69  76 65 72 5f 53 65 6c 65  |....PDriver_Sele|
000a90b0  63 74 44 72 69 76 65 72  20 20 28 26 38 30 31 35  |ctDriver  (&8015|
000a90c0  38 29 0a 23 50 61 72 65  6e 74 20 50 44 72 69 76  |8).#Parent PDriv|
000a90d0  65 72 5f 0a 3d 3e 09 52  30 20 3d 09 3c 70 72 69  |er_.=>.R0 =.<pri|
000a90e0  6e 74 65 72 20 64 72 69  76 65 72 20 6e 75 6d 62  |nter driver numb|
000a90f0  65 72 3d 3e 50 44 72 69  76 65 72 5f 70 72 69 6e  |er=>PDriver_prin|
000a9100  74 65 72 6e 75 6d 62 65  72 73 3e 0a 09 20 09 6f  |ternumbers>.. .o|
000a9110  72 20 2d 31 20 74 6f 20  73 65 74 20 6e 6f 20 63  |r -1 to set no c|
000a9120  75 72 72 65 6e 74 20 64  72 69 76 65 72 0a 09 20  |urrent driver.. |
000a9130  09 6f 72 20 2d 32 20 74  6f 20 72 65 61 64 0a 3c  |.or -2 to read.<|
000a9140  3d 09 52 30 20 3d 09 70  72 65 76 69 6f 75 73 20  |=.R0 =.previous |
000a9150  3c 70 72 69 6e 74 65 72  20 64 72 69 76 65 72 20  |<printer driver |
000a9160  6e 75 6d 62 65 72 3d 3e  50 44 72 69 76 65 72 5f  |number=>PDriver_|
000a9170  70 72 69 6e 74 65 72 6e  75 6d 62 65 72 73 3e 0a  |printernumbers>.|
000a9180  09 20 09 6f 72 20 2d 31  20 69 66 20 74 68 65 72  |. .or -1 if ther|
000a9190  65 20 77 61 73 20 6e 6f  20 63 75 72 72 65 6e 74  |e was no current|
000a91a0  20 64 72 69 76 65 72 0a  0a 54 68 69 73 20 53 57  | driver..This SW|
000a91b0  49 20 73 70 65 63 69 66  65 73 20 74 68 65 20 63  |I specifes the c|
000a91c0  75 72 72 65 6e 74 20 70  72 69 6e 74 65 72 20 64  |urrent printer d|
000a91d0  72 69 76 65 72 2c 20 61  6e 64 20 73 68 6f 75 6c  |river, and shoul|
000a91e0  64 20 6f 6e 6c 79 20 62  65 20 75 73 65 64 20 62  |d only be used b|
000a91f0  79 20 74 68 65 20 50 72  69 6e 74 65 72 20 61 70  |y the Printer ap|
000a9200  70 6c 69 63 61 74 69 6f  6e 2e 20 49 66 20 72 65  |plication. If re|
000a9210  61 6c 6c 79 20 66 65 65  6c 20 74 68 65 20 75 72  |ally feel the ur|
000a9220  67 65 20 74 6f 20 75 73  65 20 74 68 69 73 20 63  |ge to use this c|
000a9230  61 6c 6c 2c 20 72 65 61  64 20 74 68 65 20 63 75  |all, read the cu|
000a9240  72 72 65 6e 74 20 73 65  74 74 69 6e 67 20 61 6e  |rrent setting an|
000a9250  64 20 74 72 79 20 74 6f  20 72 65 73 74 6f 72 65  |d try to restore|
000a9260  20 69 74 20 77 68 65 6e  20 79 6f 75 20 66 69 6e  | it when you fin|
000a9270  69 73 68 2e 0a 00 00 00  44 41 54 41 17 02 00 00  |ish.....DATA....|
000a9280  50 44 72 69 76 65 72 5f  53 65 6c 65 63 74 49 6c  |PDriver_SelectIl|
000a9290  6c 75 73 74 72 61 74 69  6f 6e 20 20 28 26 38 30  |lustration  (&80|
000a92a0  31 35 33 29 0a 23 50 61  72 65 6e 74 20 50 44 72  |153).#Parent PDr|
000a92b0  69 76 65 72 5f 0a 3d 3e  09 52 30 20 3d 09 66 69  |iver_.=>.R0 =.fi|
000a92c0  6c 65 20 68 61 6e 64 6c  65 2c 20 6f 72 20 30 20  |le handle, or 0 |
000a92d0  74 6f 20 64 65 73 65 6c  65 63 74 20 61 6c 6c 20  |to deselect all |
000a92e0  6a 6f 62 73 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |jobs..R1 =.point|
000a92f0  65 72 20 74 6f 20 74 69  74 6c 65 20 73 74 72 69  |er to title stri|
000a9300  6e 67 20 66 6f 72 20 6a  6f 62 2c 20 6f 72 20 30  |ng for job, or 0|
000a9310  20 69 66 20 6e 6f 6e 65  0a 0a 3c 3d 09 52 30 20  | if none..<=.R0 |
000a9320  3d 09 66 69 6c 65 20 68  61 6e 64 6c 65 20 6f 66  |=.file handle of|
000a9330  20 70 72 65 76 69 6f 75  73 6c 79 20 61 63 74 69  | previously acti|
000a9340  76 65 20 6a 6f 62 0a 09  52 31 20 70 72 65 73 65  |ve job..R1 prese|
000a9350  72 76 65 64 0a 0a 54 68  69 73 20 53 57 49 20 69  |rved..This SWI i|
000a9360  73 20 69 64 65 6e 74 69  63 61 6c 20 74 6f 20 3c  |s identical to <|
000a9370  50 44 72 69 76 65 72 5f  53 65 6c 65 63 74 4a 6f  |PDriver_SelectJo|
000a9380  62 3e 2c 20 65 78 63 65  70 74 20 77 68 65 6e 20  |b>, except when |
000a9390  69 74 20 73 74 61 72 74  73 20 61 20 6e 65 77 20  |it starts a new |
000a93a0  70 72 69 6e 74 20 6a 6f  62 2e 20 49 74 20 69 73  |print job. It is|
000a93b0  20 69 6e 74 65 6e 64 65  64 20 74 6f 20 61 6c 6c  | intended to all|
000a93c0  6f 77 20 70 72 69 6e 74  69 6e 67 20 6f 66 20 61  |ow printing of a|
000a93d0  20 73 69 6e 67 6c 65 20  70 61 67 65 20 73 6f 20  | single page so |
000a93e0  74 68 61 74 20 69 74 20  63 61 6e 20 62 65 20 75  |that it can be u|
000a93f0  73 65 64 20 61 73 20 61  6e 20 69 6c 6c 75 73 74  |sed as an illust|
000a9400  72 61 74 69 6f 6e 20 69  6e 20 61 6e 6f 74 68 65  |ration in anothe|
000a9410  72 20 64 6f 63 75 6d 65  6e 74 2e 20 54 68 65 20  |r document. The |
000a9420  50 6f 73 74 53 63 72 69  70 74 20 64 72 69 76 65  |PostScript drive|
000a9430  72 20 77 69 6c 6c 20 67  65 6e 65 72 61 74 65 20  |r will generate |
000a9440  45 50 53 20 77 69 74 68  20 74 68 69 73 20 53 57  |EPS with this SW|
000a9450  49 2e 20 54 68 69 73 20  53 57 49 20 77 69 6c 6c  |I. This SWI will|
000a9460  20 65 72 72 6f 72 20 69  66 20 74 68 65 20 6a 6f  | error if the jo|
000a9470  62 20 63 6f 6e 74 61 69  6e 73 20 6d 6f 72 65 20  |b contains more |
000a9480  74 68 61 6e 20 6f 6e 65  20 70 61 67 65 2e 0a 00  |than one page...|
000a9490  44 41 54 41 36 03 00 00  50 44 72 69 76 65 72 5f  |DATA6...PDriver_|
000a94a0  53 65 74 44 72 69 76 65  72 20 20 28 26 38 30 31  |SetDriver  (&801|
000a94b0  35 43 29 0a 23 50 61 72  65 6e 74 20 50 44 72 69  |5C).#Parent PDri|
000a94c0  76 65 72 5f 0a 3d 3e 09  52 31 20 3d 09 3c 70 72  |ver_.=>.R1 =.<pr|
000a94d0  69 6e 74 65 72 20 64 75  6d 70 65 72 20 6e 75 6d  |inter dumper num|
000a94e0  62 65 72 3d 3e 50 44 75  6d 70 65 72 5f 6e 75 6d  |ber=>PDumper_num|
000a94f0  62 65 72 73 3e 0a 09 52  32 20 3d 09 70 6f 69 6e  |bers>..R2 =.poin|
000a9500  74 65 72 20 74 6f 20 63  6f 6d 6d 61 6e 64 20 74  |ter to command t|
000a9510  6f 20 65 6e 73 75 72 65  20 64 75 6d 70 65 72 20  |o ensure dumper |
000a9520  70 72 65 73 65 6e 74 0a  09 52 33 20 3d 09 70 6f  |present..R3 =.po|
000a9530  69 6e 74 65 72 20 74 6f  20 32 35 36 20 62 79 74  |inter to 256 byt|
000a9540  65 73 20 6f 66 20 64 75  6d 70 65 72 20 63 6f 6e  |es of dumper con|
000a9550  66 69 67 75 72 61 74 69  6f 6e 20 64 61 74 61 0a  |figuration data.|
000a9560  09 52 34 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R4 =.pointer to|
000a9570  20 32 35 36 20 62 79 74  65 73 20 6f 66 20 3c 50  | 256 bytes of <P|
000a9580  44 72 69 76 65 72 44 50  20 61 6e 64 20 64 75 6d  |DriverDP and dum|
000a9590  70 65 72 20 63 6f 6e 66  69 67 75 72 61 74 69 6f  |per configuratio|
000a95a0  6e 20 64 61 74 61 3d 3e  50 44 72 69 76 65 72 5f  |n data=>PDriver_|
000a95b0  53 65 74 44 72 69 76 65  72 62 6c 6f 63 6b 3e 0a  |SetDriverblock>.|
000a95c0  09 52 35 20 3d 09 3c 63  6f 6e 66 69 67 75 72 61  |.R5 =.<configura|
000a95d0  74 69 6f 6e 20 77 6f 72  64 3d 3e 50 44 75 6d 70  |tion word=>PDump|
000a95e0  65 72 5f 63 6f 6e 66 69  67 77 6f 72 64 3e 20 66  |er_configword> f|
000a95f0  6f 72 20 64 75 6d 70 65  72 0a 0a 54 68 69 73 20  |or dumper..This |
000a9600  53 57 49 20 73 65 74 73  20 74 68 65 20 63 75 72  |SWI sets the cur|
000a9610  72 65 6e 74 20 70 72 69  6e 74 65 72 20 64 75 6d  |rent printer dum|
000a9620  70 65 72 20 62 79 20 63  61 6c 6c 69 6e 67 20 3c  |per by calling <|
000a9630  50 44 75 6d 70 65 72 52  65 61 73 6f 6e 5f 53 65  |PDumperReason_Se|
000a9640  74 44 72 69 76 65 72 3e  2e 20 54 68 65 20 2a 43  |tDriver>. The *C|
000a9650  6f 6d 6d 61 6e 64 20 69  6e 20 52 32 20 69 73 20  |ommand in R2 is |
000a9660  69 73 73 75 65 64 20 69  66 20 74 68 65 20 72 65  |issued if the re|
000a9670  71 75 65 73 74 65 64 20  64 75 6d 70 65 72 20 69  |quested dumper i|
000a9680  73 20 6e 6f 74 20 63 75  72 72 65 6e 74 6c 79 20  |s not currently |
000a9690  6c 6f 61 64 65 64 2e 20  54 68 65 20 62 6c 6f 63  |loaded. The bloc|
000a96a0  6b 73 20 69 6e 20 52 33  20 61 6e 64 20 52 34 20  |ks in R3 and R4 |
000a96b0  61 72 65 20 62 6f 74 68  20 63 6f 70 69 65 64 20  |are both copied |
000a96c0  62 79 20 50 44 72 69 76  65 72 44 50 20 2d 20 68  |by PDriverDP - h|
000a96d0  65 6e 63 65 20 74 68 65  20 6f 72 69 67 69 6e 61  |ence the origina|
000a96e0  6c 73 20 6d 61 79 20 62  65 20 64 69 73 63 61 72  |ls may be discar|
000a96f0  64 65 64 2e 20 54 68 65  20 52 33 20 62 6c 6f 63  |ded. The R3 bloc|
000a9700  6b 20 63 6f 6e 74 61 69  6e 73 20 74 68 65 20 6e  |k contains the n|
000a9710  61 6d 65 20 6f 66 20 74  68 65 20 70 61 6c 65 74  |ame of the palet|
000a9720  74 65 20 66 69 6c 65 20  74 6f 20 75 73 65 20 2d  |te file to use -|
000a9730  20 74 68 69 73 20 67 65  74 73 20 70 61 73 73 65  | this gets passe|
000a9740  64 20 74 6f 20 74 68 65  20 64 75 6d 70 65 72 20  |d to the dumper |
000a9750  6d 6f 64 75 6c 65 20 6e  6f 77 2c 20 62 75 74 20  |module now, but |
000a9760  69 73 20 6e 6f 74 20 72  65 61 6c 6c 79 20 6e 65  |is not really ne|
000a9770  65 64 65 64 20 75 6e 74  69 6c 20 3c 50 44 75 6d  |eded until <PDum|
000a9780  70 65 72 5f 53 74 61 72  74 4a 6f 62 3e 2c 20 77  |per_StartJob>, w|
000a9790  68 69 63 68 20 69 73 20  75 73 75 61 6c 6c 79 20  |hich is usually |
000a97a0  63 61 6c 6c 65 64 20 66  72 6f 6d 20 3c 50 44 75  |called from <PDu|
000a97b0  6d 70 65 72 52 65 61 73  6f 6e 5f 53 74 61 72 74  |mperReason_Start|
000a97c0  4a 6f 62 3e 2e 0a 00 00  44 41 54 41 47 03 00 00  |Job>....DATAG...|
000a97d0  50 44 72 69 76 65 72 5f  53 65 74 44 72 69 76 65  |PDriver_SetDrive|
000a97e0  72 20 52 34 20 62 6c 6f  63 6b 0a 23 50 61 72 65  |r R4 block.#Pare|
000a97f0  6e 74 20 50 44 72 69 76  65 72 5f 53 65 74 44 72  |nt PDriver_SetDr|
000a9800  69 76 65 72 0a 50 44 72  69 76 65 72 44 50 20 63  |iver.PDriverDP c|
000a9810  6f 70 69 65 73 20 74 68  65 20 32 35 36 20 62 79  |opies the 256 by|
000a9820  74 65 20 3c 63 6f 6e 66  69 67 20 62 6c 6f 63 6b  |te <config block|
000a9830  3d 3e 50 44 75 6d 70 65  72 5f 63 6f 6e 66 69 67  |=>PDumper_config|
000a9840  62 6c 6f 63 6b 3e 20 69  6e 74 6f 20 61 20 32 37  |block> into a 27|
000a9850  32 20 62 79 74 65 20 62  75 66 66 65 72 2c 20 61  |2 byte buffer, a|
000a9860  6e 64 20 6f 76 65 72 77  72 69 74 65 73 20 63 65  |nd overwrites ce|
000a9870  72 74 61 69 6e 20 6c 6f  63 61 74 69 6f 6e 73 20  |rtain locations |
000a9880  61 73 20 66 6f 6c 6c 6f  77 73 3a 0a 0a 4f 66 66  |as follows:..Off|
000a9890  73 65 74 09 53 69 7a 65  09 4d 65 61 6e 69 6e 67  |set.Size.Meaning|
000a98a0  0a 23 4c 69 6e 65 0a 30  09 62 79 74 65 09 68 65  |.#Line.0.byte.he|
000a98b0  69 67 68 74 20 69 6e 20  64 6f 74 73 20 6f 66 20  |ight in dots of |
000a98c0  61 20 73 74 72 69 70 09  28 50 72 69 6e 74 45 64  |a strip.(PrintEd|
000a98d0  69 74 27 73 20 44 75 6d  70 44 65 70 74 68 29 0a  |it's DumpDepth).|
000a98e0  31 09 62 79 74 65 09 76  65 72 74 69 63 61 6c 20  |1.byte.vertical |
000a98f0  69 6e 74 65 72 6c 61 63  65 20 70 61 73 73 65 73  |interlace passes|
000a9900  09 28 50 72 69 6e 74 45  64 69 74 27 73 20 78 20  |.(PrintEdit's x |
000a9910  69 6e 74 65 72 6c 61 63  65 29 0a 32 09 62 79 74  |interlace).2.byt|
000a9920  65 09 68 6f 72 69 7a 6f  6e 74 61 6c 20 69 6e 74  |e.horizontal int|
000a9930  65 72 6c 61 63 65 20 70  61 73 73 65 73 09 28 50  |erlace passes.(P|
000a9940  72 69 6e 74 45 64 69 74  27 73 20 79 20 69 6e 74  |rintEdit's y int|
000a9950  65 72 6c 61 63 65 29 0a  33 09 62 79 74 65 09 70  |erlace).3.byte.p|
000a9960  61 73 73 65 73 20 6f 76  65 72 20 6c 69 6e 65 20  |asses over line |
000a9970  2d 20 31 0a 34 09 62 79  74 65 09 3c 73 74 72 69  |- 1.4.byte.<stri|
000a9980  70 20 74 79 70 65 3d 3e  50 44 75 6d 70 65 72 5f  |p type=>PDumper_|
000a9990  73 74 72 69 70 74 79 70  65 73 3e 0a 35 09 62 79  |striptypes>.5.by|
000a99a0  74 65 09 6f 75 74 70 75  74 20 64 65 70 74 68 3a  |te.output depth:|
000a99b0  09 09 31 20 3d 3e 20 6d  6f 6e 63 68 72 6f 6d 65  |..1 => monchrome|
000a99c0  0a 09 20 09 20 09 09 09  38 20 3d 3e 20 67 72 65  |.. . ...8 => gre|
000a99d0  79 73 63 61 6c 65 20 6f  72 20 63 6f 6c 6f 75 72  |yscale or colour|
000a99e0  0a 36 09 62 79 74 65 09  70 61 73 73 65 73 20 70  |.6.byte.passes p|
000a99f0  65 72 20 73 74 72 69 70  09 30 20 3d 3e 20 31 20  |er strip.0 => 1 |
000a9a00  70 61 73 73 0a 37 09 62  79 74 65 09 6e 75 6d 62  |pass.7.byte.numb|
000a9a10  65 72 20 6f 66 20 63 75  72 72 65 6e 74 20 70 61  |er of current pa|
000a9a20  73 73 0a 38 09 77 6f 72  64 09 50 44 72 69 76 65  |ss.8.word.PDrive|
000a9a30  72 44 50 27 73 20 63 6f  70 79 20 6f 66 20 64 75  |rDP's copy of du|
000a9a40  6d 70 65 72 27 73 20 70  72 69 76 61 74 65 20 77  |mper's private w|
000a9a50  6f 72 64 0a 0a 32 35 36  09 77 6f 72 64 09 64 75  |ord..256.word.du|
000a9a60  6d 70 65 72 20 3c 63 6f  6e 66 69 67 75 72 61 74  |mper <configurat|
000a9a70  69 6f 6e 20 77 6f 72 64  3d 3e 50 44 75 6d 70 65  |ion word=>PDumpe|
000a9a80  72 5f 63 6f 6e 66 69 67  77 6f 72 64 3e 20 28 70  |r_configword> (p|
000a9a90  61 73 73 65 64 20 69 6e  20 52 35 29 0a 32 36 30  |assed in R5).260|
000a9aa0  09 77 6f 72 64 09 70 6f  69 6e 74 65 72 20 74 6f  |.word.pointer to|
000a9ab0  20 61 63 74 69 76 65 20  64 75 6d 70 65 72 0a 32  | active dumper.2|
000a9ac0  36 34 09 77 6f 72 64 09  3c 70 72 69 6e 74 65 72  |64.word.<printer|
000a9ad0  20 64 75 6d 70 65 72 20  6e 75 6d 62 65 72 3d 3e  | dumper number=>|
000a9ae0  50 44 75 6d 70 65 72 5f  6e 75 6d 62 65 72 73 3e  |PDumper_numbers>|
000a9af0  0a 32 36 38 09 77 6f 72  64 09 6c 65 66 74 20 6d  |.268.word.left m|
000a9b00  61 72 67 69 6e 20 28 70  69 78 65 6c 73 29 0a 00  |argin (pixels)..|
000a9b10  44 41 54 41 4f 02 00 00  50 44 72 69 76 65 72 5f  |DATAO...PDriver_|
000a9b20  53 65 74 49 6e 66 6f 20  20 28 26 38 30 31 34 31  |SetInfo  (&80141|
000a9b30  29 0a 23 50 61 72 65 6e  74 20 50 44 72 69 76 65  |).#Parent PDrive|
000a9b40  72 5f 0a 3c 3d 09 52 31  20 3d 09 78 20 72 65 73  |r_.<=.R1 =.x res|
000a9b50  6f 6c 75 74 69 6f 6e 20  6f 66 20 64 72 69 76 65  |olution of drive|
000a9b60  6e 20 70 72 69 6e 74 65  72 20 28 44 50 49 29 0a  |n printer (DPI).|
000a9b70  09 52 32 20 3d 09 79 20  72 65 73 6f 6c 75 74 69  |.R2 =.y resoluti|
000a9b80  6f 6e 20 6f 66 20 64 72  69 76 65 6e 20 70 72 69  |on of driven pri|
000a9b90  6e 74 65 72 20 28 44 50  49 29 0a 09 52 33 20 3d  |nter (DPI)..R3 =|
000a9ba0  09 66 65 61 74 75 72 65  73 20 77 6f 72 64 3a 09  |.features word:.|
000a9bb0  62 69 74 20 30 20 73 65  74 20 66 6f 72 20 63 6f  |bit 0 set for co|
000a9bc0  6c 6f 75 72 2c 20 65 6c  73 65 20 62 6c 61 63 6b  |lour, else black|
000a9bd0  20 61 6e 64 20 77 68 69  74 65 0a 09 20 09 20 09  | and white.. . .|
000a9be0  09 62 69 74 73 20 31 2d  33 31 20 30 20 28 72 65  |.bits 1-31 0 (re|
000a9bf0  73 65 72 76 65 64 29 0a  09 52 34 20 3d 09 70 6f  |served)..R4 =.po|
000a9c00  69 6e 74 65 72 20 74 6f  20 6e 65 77 20 70 72 69  |inter to new pri|
000a9c10  6e 74 65 72 20 6e 61 6d  65 20 28 6d 61 78 20 32  |nter name (max 2|
000a9c20  30 20 63 68 61 72 73 2c  20 6e 75 6c 6c 20 74 65  |0 chars, null te|
000a9c30  72 6d 69 6e 61 74 65 64  29 0a 09 52 35 20 3d 09  |rminated)..R5 =.|
000a9c40  78 20 68 61 6c 66 74 6f  6e 65 20 72 65 73 6f 6c  |x halftone resol|
000a9c50  75 74 69 6f 6e 20 69 6e  20 72 65 70 65 61 74 73  |ution in repeats|
000a9c60  2f 69 6e 63 68 0a 09 52  36 20 3d 09 79 20 68 61  |/inch..R6 =.y ha|
000a9c70  6c 66 74 6f 6e 65 20 72  65 73 6f 6c 75 74 69 6f  |lftone resolutio|
000a9c80  6e 20 69 6e 20 72 65 70  65 61 74 73 2f 69 6e 63  |n in repeats/inc|
000a9c90  68 0a 09 52 37 20 3d 09  70 72 69 6e 74 65 72 20  |h..R7 =.printer |
000a9ca0  64 72 69 76 65 72 20 73  70 65 63 69 66 69 63 20  |driver specific |
000a9cb0  6e 75 6d 62 65 72 0a 0a  54 68 69 73 20 53 57 49  |number..This SWI|
000a9cc0  20 69 73 20 75 73 65 64  20 62 79 20 74 68 65 20  | is used by the |
000a9cd0  50 72 69 6e 74 65 72 20  61 70 70 6c 69 63 61 74  |Printer applicat|
000a9ce0  69 6f 6e 20 74 6f 20 63  6f 6e 66 69 67 75 72 65  |ion to configure|
000a9cf0  20 61 20 70 72 69 6e 74  65 72 20 64 72 69 76 65  | a printer drive|
000a9d00  72 2e 20 54 68 65 20 6e  65 77 20 76 61 6c 75 65  |r. The new value|
000a9d10  73 20 61 72 65 20 6f 6e  6c 79 20 75 73 65 64 20  |s are only used |
000a9d20  6f 6e 20 6e 65 77 20 6a  6f 62 73 2e 20 49 66 20  |on new jobs. If |
000a9d30  68 61 6c 66 74 6f 6e 69  6e 67 20 69 73 20 6e 6f  |halftoning is no|
000a9d40  74 20 74 6f 20 62 65 20  75 73 65 64 20 74 68 65  |t to be used the|
000a9d50  6e 20 52 35 3d 52 32 2c  52 36 3d 52 33 2e 0a 00  |n R5=R2,R6=R3...|
000a9d60  44 41 54 41 b5 01 00 00  50 44 72 69 76 65 72 5f  |DATA....PDriver_|
000a9d70  53 65 74 50 61 67 65 53  69 7a 65 20 20 28 26 38  |SetPageSize  (&8|
000a9d80  30 31 34 34 29 0a 23 50  61 72 65 6e 74 20 50 44  |0144).#Parent PD|
000a9d90  72 69 76 65 72 5f 0a 3d  3e 09 52 31 20 3d 09 77  |river_.=>.R1 =.w|
000a9da0  69 64 74 68 20 6f 66 20  70 61 70 65 72 0a 09 52  |idth of paper..R|
000a9db0  32 20 3d 09 68 65 69 67  68 74 20 6f 66 20 70 61  |2 =.height of pa|
000a9dc0  70 65 72 0a 09 52 33 20  3d 09 6c 65 66 74 20 65  |per..R3 =.left e|
000a9dd0  64 67 65 20 6f 66 20 70  72 69 6e 74 61 62 6c 65  |dge of printable|
000a9de0  20 61 72 65 61 0a 09 52  34 20 3d 09 62 6f 74 74  | area..R4 =.bott|
000a9df0  6f 6d 20 65 64 67 65 20  6f 66 20 70 72 69 6e 74  |om edge of print|
000a9e00  61 62 6c 65 20 61 72 65  61 0a 09 52 35 20 3d 09  |able area..R5 =.|
000a9e10  72 69 67 68 74 20 65 64  67 65 20 6f 66 20 70 72  |right edge of pr|
000a9e20  69 6e 74 61 62 6c 65 20  61 72 65 61 0a 09 52 36  |intable area..R6|
000a9e30  20 3d 09 74 6f 70 20 65  64 67 65 20 6f 66 20 70  | =.top edge of p|
000a9e40  72 69 6e 74 61 62 6c 65  20 61 72 65 61 0a 0a 54  |rintable area..T|
000a9e50  68 69 73 20 53 57 49 20  73 65 74 73 20 74 68 65  |his SWI sets the|
000a9e60  20 70 61 70 65 72 20 73  69 7a 65 2c 20 61 6e 64  | paper size, and|
000a9e70  20 74 68 65 20 70 72 69  6e 74 61 62 6c 65 20 61  | the printable a|
000a9e80  72 65 61 20 6f 6e 20 74  68 65 20 70 61 70 65 72  |rea on the paper|
000a9e90  20 28 6d 65 61 73 75 72  65 64 20 66 72 6f 6d 20  | (measured from |
000a9ea0  62 6f 74 74 6f 6d 20 6c  65 66 74 20 6f 66 20 74  |bottom left of t|
000a9eb0  68 65 20 70 61 70 65 72  29 2e 20 41 6c 6c 20 76  |he paper). All v|
000a9ec0  61 6c 75 65 73 20 61 72  65 20 69 6e 20 6d 69 6c  |alues are in mil|
000a9ed0  6c 69 70 6f 69 6e 74 73  2e 0a 0a 54 68 65 20 53  |lipoints...The S|
000a9ee0  57 49 20 73 68 6f 75 6c  64 20 6f 6e 6c 79 20 62  |WI should only b|
000a9ef0  65 20 63 61 6c 6c 65 64  20 62 79 20 74 68 65 20  |e called by the |
000a9f00  50 72 69 6e 74 65 72 20  61 70 70 6c 69 63 61 74  |Printer applicat|
000a9f10  69 6f 6e 2e 0a 00 00 00  44 41 54 41 c3 00 00 00  |ion.....DATA....|
000a9f20  50 44 72 69 76 65 72 5f  53 65 74 50 72 69 6e 74  |PDriver_SetPrint|
000a9f30  65 72 20 20 28 26 38 30  31 35 31 29 0a 23 50 61  |er  (&80151).#Pa|
000a9f40  72 65 6e 74 20 50 44 72  69 76 65 72 5f 0a 0a 54  |rent PDriver_..T|
000a9f50  68 69 73 20 53 57 49 20  69 73 20 66 6f 72 20 69  |his SWI is for i|
000a9f60  6e 74 65 72 6e 61 6c 20  63 6f 6d 6d 75 6e 69 63  |nternal communic|
000a9f70  61 74 69 6f 6e 20 74 68  65 20 52 49 53 43 20 4f  |ation the RISC O|
000a9f80  53 20 32 20 70 72 69 6e  74 65 72 20 61 70 70 6c  |S 2 printer appl|
000a9f90  69 63 61 74 69 6f 6e 20  61 6e 64 20 70 72 69 6e  |ication and prin|
000a9fa0  74 65 72 20 64 72 69 76  65 72 73 2e 20 49 74 20  |ter drivers. It |
000a9fb0  69 73 20 6e 6f 77 20 73  75 70 65 72 63 65 65 64  |is now superceed|
000a9fc0  65 64 20 62 79 20 3c 50  44 72 69 76 65 72 5f 53  |ed by <PDriver_S|
000a9fd0  65 74 44 72 69 76 65 72  3e 2e 0a 00 44 41 54 41  |etDriver>...DATA|
000a9fe0  f1 01 00 00 50 44 72 69  76 65 72 5f 53 65 6c 65  |....PDriver_Sele|
000a9ff0  63 74 4a 6f 62 20 20 28  26 38 30 31 34 35 29 0a  |ctJob  (&80145).|
000aa000  23 50 61 72 65 6e 74 20  50 44 72 69 76 65 72 5f  |#Parent PDriver_|
000aa010  0a 3d 3e 09 52 30 20 3d  09 66 69 6c 65 20 68 61  |.=>.R0 =.file ha|
000aa020  6e 64 6c 65 2c 20 6f 72  20 30 20 74 6f 20 63 61  |ndle, or 0 to ca|
000aa030  6e 63 65 6c 20 63 75 72  72 65 6e 74 20 6a 6f 62  |ncel current job|
000aa040  0a 09 52 31 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R1 =.pointer t|
000aa050  6f 20 74 69 74 6c 65 20  73 74 72 69 6e 67 20 66  |o title string f|
000aa060  6f 72 20 6a 6f 62 2c 20  6f 72 20 30 20 69 66 20  |or job, or 0 if |
000aa070  6e 6f 6e 65 0a 0a 3c 3d  09 52 30 20 3d 09 66 69  |none..<=.R0 =.fi|
000aa080  6c 65 20 68 61 6e 64 6c  65 20 6f 66 20 70 72 65  |le handle of pre|
000aa090  76 69 6f 75 73 6c 79 20  61 63 74 69 76 65 20 6a  |viously active j|
000aa0a0  6f 62 0a 0a 54 68 69 73  20 53 57 49 20 73 74 61  |ob..This SWI sta|
000aa0b0  72 74 73 20 61 20 6e 65  77 20 70 72 69 6e 74 20  |rts a new print |
000aa0c0  6a 6f 62 2c 20 72 65 73  75 6d 65 73 20 61 20 73  |job, resumes a s|
000aa0d0  75 73 70 65 6e 64 65 64  20 6f 6e 65 2c 20 6f 72  |uspended one, or|
000aa0e0  20 73 75 73 70 65 6e 64  73 20 74 68 65 20 63 75  | suspends the cu|
000aa0f0  72 72 65 6e 74 20 6f 6e  65 2e 20 54 68 65 20 74  |rrent one. The t|
000aa100  69 74 6c 65 20 6d 75 73  74 20 6f 6e 6c 79 20 63  |itle must only c|
000aa110  6f 6e 74 61 69 6e 20 63  68 61 72 61 63 74 65 72  |ontain character|
000aa120  73 20 69 6e 20 74 68 65  20 72 61 6e 67 65 20 33  |s in the range 3|
000aa130  32 2d 31 32 36 2c 20 61  6e 64 20 69 73 20 74 65  |2-126, and is te|
000aa140  72 6d 69 6e 61 74 65 64  20 62 79 20 74 68 65 20  |rminated by the |
000aa150  66 69 72 73 74 20 6f 75  74 20 6f 66 20 72 61 6e  |first out of ran|
000aa160  67 65 20 63 68 61 72 61  63 74 65 72 2e 0a 0a 49  |ge character...I|
000aa170  66 20 61 6e 20 65 72 72  6f 72 20 6f 63 63 75 72  |f an error occur|
000aa180  73 20 74 68 65 20 70 72  65 76 69 6f 75 73 6c 79  |s the previously|
000aa190  20 73 65 6c 65 63 74 65  64 20 6a 6f 62 20 77 69  | selected job wi|
000aa1a0  6c 6c 20 61 75 74 6f 6d  61 74 69 63 61 6c 6c 79  |ll automatically|
000aa1b0  20 62 65 20 72 65 73 74  6f 72 65 64 20 61 73 20  | be restored as |
000aa1c0  63 75 72 72 65 6e 74 20  6a 6f 62 2e 0a 00 00 00  |current job.....|
000aa1d0  44 49 52 24 08 03 00 00  08 03 00 00 d8 a4 0a 00  |DIR$............|
000aa1e0  48 fd ff ff 9d f5 82 18  06 01 00 00 13 00 00 00  |H...............|
000aa1f0  00 00 00 00 21 52 6f 6f  74 00 00 00 e0 a5 0a 00  |....!Root.......|
000aa200  48 ff ff ff 17 f0 ca 18  cc 00 00 00 13 00 00 00  |H...............|
000aa210  00 00 00 00 43 61 6c 6c  4c 6f 61 64 65 72 00 00  |....CallLoader..|
000aa220  ac a6 0a 00 48 fd ff ff  0b 3e 62 26 5f 02 00 00  |....H....>b&_...|
000aa230  13 00 00 00 00 00 00 00  63 68 75 6e 6b 64 69 72  |........chunkdir|
000aa240  00 00 00 00 0c a9 0a 00  48 fd ff ff d5 4a 62 26  |........H....Jb&|
000aa250  63 01 00 00 13 00 00 00  00 00 00 00 63 6f 6d 62  |c...........comb|
000aa260  69 6e 65 64 68 61 72 64  77 61 72 65 61 64 64 72  |inedhardwareaddr|
000aa270  65 73 73 00 70 aa 0a 00  48 fd ff ff c5 e7 c4 18  |ess.p...H.......|
000aa280  8a 01 00 00 13 00 00 00  00 00 00 00 45 43 49 64  |............ECId|
000aa290  00 00 00 00 fc ab 0a 00  48 fd ff ff 4a 3d ca 18  |........H...J=..|
000aa2a0  bc 02 00 00 13 00 00 00  00 00 00 00 65 45 43 49  |............eECI|
000aa2b0  64 00 00 00 b8 ae 0a 00  48 ff ff ff 8a 1e c3 18  |d.......H.......|
000aa2c0  4a 03 00 00 13 00 00 00  00 00 00 00 45 6e 75 6d  |J...........Enum|
000aa2d0  65 72 61 74 65 43 68 75  6e 6b 73 00 04 b2 0a 00  |erateChunks.....|
000aa2e0  48 ff ff ff f4 21 c3 18  f8 03 00 00 13 00 00 00  |H....!..........|
000aa2f0  00 00 00 00 45 6e 75 6d  65 72 61 74 65 43 68 75  |....EnumerateChu|
000aa300  6e 6b 73 57 69 74 68 49  6e 66 6f 00 fc b5 0a 00  |nksWithInfo.....|
000aa310  48 ff ff ff 9b 92 c0 18  a1 01 00 00 13 00 00 00  |H...............|
000aa320  00 00 00 00 48 61 72 64  77 61 72 65 41 64 64 72  |....HardwareAddr|
000aa330  65 73 73 00 a0 b7 0a 00  48 ff ff ff 69 95 c0 18  |ess.....H...i...|
000aa340  a2 01 00 00 13 00 00 00  00 00 00 00 48 61 72 64  |............Hard|
000aa350  77 61 72 65 41 64 64 72  65 73 73 65 73 00 00 00  |wareAddresses...|
000aa360  44 b9 0a 00 48 fd ff ff  b4 c5 c9 18 52 04 00 00  |D...H.......R...|
000aa370  13 00 00 00 00 00 00 00  69 73 70 00 98 bd 0a 00  |........isp.....|
000aa380  48 fd ff ff 99 7b 62 26  60 02 00 00 13 00 00 00  |H....{b&`.......|
000aa390  00 00 00 00 6c 6f 61 64  65 72 00 00 f8 bf 0a 00  |....loader......|
000aa3a0  48 fd ff ff 43 9a c2 18  45 03 00 00 13 00 00 00  |H...C...E.......|
000aa3b0  00 00 00 00 6f 73 69 64  00 00 00 00 40 c3 0a 00  |....osid....@...|
000aa3c0  48 ff ff ff c8 06 c4 18  87 01 00 00 13 00 00 00  |H...............|
000aa3d0  00 00 00 00 52 61 77 52  65 61 64 00 c8 c4 0a 00  |....RawRead.....|
000aa3e0  48 ff ff ff af 12 c1 18  ff 01 00 00 13 00 00 00  |H...............|
000aa3f0  00 00 00 00 52 61 77 57  72 69 74 65 00 00 00 00  |....RawWrite....|
000aa400  c8 c6 0a 00 48 ff ff ff  46 0e cb 18 69 01 00 00  |....H...F...i...|
000aa410  13 00 00 00 00 00 00 00  52 65 61 64 42 79 74 65  |........ReadByte|
000aa420  73 00 00 00 34 c8 0a 00  48 ff ff ff 8b f8 c2 18  |s...4...H.......|
000aa430  19 01 00 00 13 00 00 00  00 00 00 00 52 65 61 64  |............Read|
000aa440  43 68 75 6e 6b 00 00 00  50 c9 0a 00 48 ff ff ff  |Chunk...P...H...|
000aa450  b9 2a c8 18 77 01 00 00  13 00 00 00 00 00 00 00  |.*..w...........|
000aa460  52 65 61 64 48 65 61 64  65 72 00 00 c8 ca 0a 00  |ReadHeader......|
000aa470  48 ff ff ff e3 dd c7 18  20 01 00 00 13 00 00 00  |H....... .......|
000aa480  00 00 00 00 52 65 61 64  49 44 00 00 e8 cb 0a 00  |....ReadID......|
000aa490  48 ff ff ff b5 6d 83 18  f4 00 00 00 13 00 00 00  |H....m..........|
000aa4a0  00 00 00 00 52 65 74 75  72 6e 4e 75 6d 62 65 72  |....ReturnNumber|
000aa4b0  00 00 00 00 dc cc 0a 00  48 ff ff ff dd 14 cb 18  |........H.......|
000aa4c0  68 01 00 00 13 00 00 00  00 00 00 00 57 72 69 74  |h...........Writ|
000aa4d0  65 42 79 74 65 73 00 00  44 41 54 41 06 01 00 00  |eBytes..DATA....|
000aa4e0  50 6f 64 75 6c 65 0a 23  50 61 72 65 6e 74 20 21  |Podule.#Parent !|
000aa4f0  52 6f 6f 74 0a 23 50 72  65 66 69 78 20 50 6f 64  |Root.#Prefix Pod|
000aa500  75 6c 65 5f 0a 23 54 61  62 6c 65 20 43 6f 6c 75  |ule_.#Table Colu|
000aa510  6d 6e 73 20 32 0a 3c 43  61 6c 6c 4c 6f 61 64 65  |mns 2.<CallLoade|
000aa520  72 3e 0a 3c 45 6e 75 6d  65 72 61 74 65 43 68 75  |r>.<EnumerateChu|
000aa530  6e 6b 73 3e 0a 3c 45 6e  75 6d 65 72 61 74 65 43  |nks>.<EnumerateC|
000aa540  68 75 6e 6b 73 57 69 74  68 49 6e 66 6f 3e 0a 3c  |hunksWithInfo>.<|
000aa550  48 61 72 64 77 61 72 65  41 64 64 72 65 73 73 3e  |HardwareAddress>|
000aa560  0a 3c 48 61 72 64 77 61  72 65 41 64 64 72 65 73  |.<HardwareAddres|
000aa570  73 65 73 3e 0a 3c 52 61  77 52 65 61 64 3e 0a 3c  |ses>.<RawRead>.<|
000aa580  52 61 77 57 72 69 74 65  3e 0a 3c 52 65 61 64 42  |RawWrite>.<ReadB|
000aa590  79 74 65 73 3e 0a 3c 52  65 61 64 43 68 75 6e 6b  |ytes>.<ReadChunk|
000aa5a0  3e 0a 3c 52 65 61 64 48  65 61 64 65 72 3e 0a 3c  |>.<ReadHeader>.<|
000aa5b0  52 65 61 64 49 44 3e 0a  3c 52 65 74 75 72 6e 4e  |ReadID>.<ReturnN|
000aa5c0  75 6d 62 65 72 3e 0a 3c  57 72 69 74 65 42 79 74  |umber>.<WriteByt|
000aa5d0  65 73 3e 0a 23 45 6e 64  54 61 62 6c 65 0a 00 00  |es>.#EndTable...|
000aa5e0  44 41 54 41 cc 00 00 00  50 6f 64 75 6c 65 5f 43  |DATA....Podule_C|
000aa5f0  61 6c 6c 4c 6f 61 64 65  72 20 20 28 26 34 30 32  |allLoader  (&402|
000aa600  38 36 29 0a 23 50 61 72  65 6e 74 20 50 6f 64 75  |86).#Parent Podu|
000aa610  6c 65 5f 0a 3d 3e 09 52  30 20 3d 09 75 73 65 72  |le_.=>.R0 =.user|
000aa620  20 64 61 74 61 0a 09 52  31 20 3d 09 75 73 65 72  | data..R1 =.user|
000aa630  20 64 61 74 61 0a 09 52  32 20 3d 09 75 73 65 72  | data..R2 =.user|
000aa640  20 64 61 74 61 0a 09 52  33 20 3d 09 65 78 70 61  | data..R3 =.expa|
000aa650  6e 73 69 6f 6e 20 63 61  72 64 20 6e 75 6d 62 65  |nsion card numbe|
000aa660  72 0a 0a 54 68 69 73 20  53 57 49 20 63 61 6c 6c  |r..This SWI call|
000aa670  73 20 61 6e 20 65 78 70  61 6e 73 69 6f 6e 20 63  |s an expansion c|
000aa680  61 72 64 27 73 20 3c 6c  6f 61 64 65 72 20 61 74  |ard's <loader at|
000aa690  20 6f 66 66 73 65 74 20  31 32 3d 3e 50 6f 64 75  | offset 12=>Podu|
000aa6a0  6c 65 5f 6c 6f 61 64 65  72 3e 2e 0a 44 41 54 41  |le_loader>..DATA|
000aa6b0  5f 02 00 00 45 78 70 61  6e 73 69 6f 6e 20 43 61  |_...Expansion Ca|
000aa6c0  72 64 20 63 68 75 6e 6b  20 64 69 72 65 63 74 6f  |rd chunk directo|
000aa6d0  72 79 0a 23 50 61 72 65  6e 74 20 50 6f 64 75 6c  |ry.#Parent Podul|
000aa6e0  65 5f 0a 54 68 65 20 63  68 75 6e 6b 20 64 69 72  |e_.The chunk dir|
000aa6f0  65 63 74 6f 72 79 20 63  6f 6e 73 69 73 74 73 20  |ectory consists |
000aa700  6f 66 20 61 20 73 65 72  69 65 73 20 6f 66 20 38  |of a series of 8|
000aa710  20 62 79 74 65 20 65 6e  74 72 69 65 73 2c 20 74  | byte entries, t|
000aa720  65 72 6d 69 6e 61 74 65  64 20 62 79 20 66 6f 75  |erminated by fou|
000aa730  72 20 7a 65 72 6f 20 62  79 74 65 73 2e 0a 0a 46  |r zero bytes...F|
000aa740  6f 72 6d 61 74 20 6f 66  20 61 20 63 68 75 6e 6b  |ormat of a chunk|
000aa750  20 64 69 72 65 63 74 6f  72 79 20 65 6e 74 72 79  | directory entry|
000aa760  3a 0a 0a 53 69 7a 65 09  4d 65 61 6e 69 6e 67 0a  |:..Size.Meaning.|
000aa770  23 4c 69 6e 65 0a 31 09  3c 4f 70 65 72 61 74 69  |#Line.1.<Operati|
000aa780  6e 67 20 73 79 73 74 65  6d 20 69 64 65 6e 74 69  |ng system identi|
000aa790  74 79 20 62 79 74 65 3d  3e 50 6f 64 75 6c 65 5f  |ty byte=>Podule_|
000aa7a0  6f 73 69 64 3e 0a 33 09  73 69 7a 65 20 6f 66 20  |osid>.3.size of |
000aa7b0  63 68 75 6e 6b 20 28 62  79 74 65 73 29 0a 34 09  |chunk (bytes).4.|
000aa7c0  73 74 61 72 74 20 28 6f  66 66 73 65 74 20 66 72  |start (offset fr|
000aa7d0  6f 6d 20 62 61 73 65 20  6f 66 20 63 61 72 64 27  |om base of card'|
000aa7e0  73 20 69 64 65 6e 74 69  74 79 20 73 70 61 63 65  |s identity space|
000aa7f0  29 0a 0a 49 66 20 61 20  63 68 75 6e 6b 20 64 69  |)..If a chunk di|
000aa800  72 65 63 74 6f 72 79 20  69 73 20 70 72 65 73 65  |rectory is prese|
000aa810  6e 74 2c 20 74 68 65 6e  20 69 74 20 2a 6d 75 73  |nt, then it *mus|
000aa820  74 2a 20 62 65 20 70 72  65 63 65 64 65 64 20 62  |t* be preceded b|
000aa830  79 20 31 36 20 62 79 74  65 73 20 6f 66 20 3c 69  |y 16 bytes of <i|
000aa840  6e 74 65 72 72 75 70 74  20 73 74 61 74 75 73 20  |nterrupt status |
000aa850  70 6f 69 6e 74 65 72 73  3d 3e 50 6f 64 75 6c 65  |pointers=>Podule|
000aa860  5f 69 73 70 3e 2c 20 65  76 65 6e 20 69 66 20 74  |_isp>, even if t|
000aa870  68 65 73 65 20 61 72 65  20 6e 6f 74 20 75 73 65  |hese are not use|
000aa880  64 2e 20 54 68 65 20 63  68 75 6e 6b 20 64 69 72  |d. The chunk dir|
000aa890  65 63 74 6f 72 79 20 69  73 20 74 68 65 20 73 74  |ectory is the st|
000aa8a0  61 72 74 20 6f 66 20 74  68 65 20 61 72 65 61 20  |art of the area |
000aa8b0  6f 66 20 65 78 70 61 6e  73 69 6f 6e 20 63 61 72  |of expansion car|
000aa8c0  64 20 73 70 61 63 65 20  77 68 65 72 65 20 74 68  |d space where th|
000aa8d0  65 20 62 69 74 20 77 69  64 74 68 20 69 73 20 73  |e bit width is s|
000aa8e0  65 74 20 66 72 6f 6d 20  74 68 65 20 3c 65 78 74  |et from the <ext|
000aa8f0  65 6e 64 65 64 20 45 43  49 64 3d 3e 50 6f 64 75  |ended ECId=>Podu|
000aa900  6c 65 5f 65 45 43 49 64  3e 2e 0a 00 44 41 54 41  |le_eECId>...DATA|
000aa910  63 01 00 00 45 78 70 61  6e 73 69 6f 6e 20 43 61  |c...Expansion Ca|
000aa920  72 64 20 43 6f 6d 62 69  6e 65 64 20 48 61 72 64  |rd Combined Hard|
000aa930  77 61 72 65 20 41 64 64  72 65 73 73 0a 23 50 61  |ware Address.#Pa|
000aa940  72 65 6e 74 20 50 6f 64  75 6c 65 5f 0a 42 69 74  |rent Podule_.Bit|
000aa950  73 09 4d 65 61 6e 69 6e  67 0a 23 4c 69 6e 65 0a  |s.Meaning.#Line.|
000aa960  30 2d 31 31 09 62 61 73  65 20 61 64 64 72 65 73  |0-11.base addres|
000aa970  73 20 6f 66 20 43 4d 4f  53 20 52 41 4d 20 28 34  |s of CMOS RAM (4|
000aa980  20 62 79 74 65 73 29 0a  31 32 2d 32 35 09 62 69  | bytes).12-25.bi|
000aa990  74 73 20 31 32 2d 32 35  20 6f 66 20 62 61 73 65  |ts 12-25 of base|
000aa9a0  20 61 64 64 72 65 73 73  20 6f 66 20 65 78 70 61  | address of expa|
000aa9b0  6e 73 69 6f 6e 20 63 61  72 64 20 28 6f 72 20 65  |nsion card (or e|
000aa9c0  78 74 65 6e 73 69 6f 6e  20 52 4f 4d 29 0a 0a 45  |xtension ROM)..E|
000aa9d0  78 74 65 6e 73 69 6f 6e  20 52 4f 4d 73 20 64 6f  |xtension ROMs do|
000aa9e0  20 6e 6f 74 20 68 61 76  65 20 43 4d 4f 53 20 52  | not have CMOS R|
000aa9f0  41 4d 20 61 6c 6c 6f 63  61 74 65 64 2e 20 46 6f  |AM allocated. Fo|
000aaa00  72 20 61 6e 20 65 78 70  61 6e 73 69 6f 6e 20 63  |r an expansion c|
000aaa10  61 72 64 20 74 68 65 20  6d 61 73 6b 65 64 20 76  |ard the masked v|
000aaa20  61 6c 75 65 20 63 61 6e  20 62 65 20 70 61 73 73  |alue can be pass|
000aaa30  65 64 20 74 6f 20 3c 4f  53 5f 42 79 74 65 20 31  |ed to <OS_Byte 1|
000aaa40  36 31 3d 3e 4f 53 5f 42  79 74 65 31 36 31 3e 20  |61=>OS_Byte161> |
000aaa50  61 6e 64 20 3c 4f 53 5f  42 79 74 65 20 31 36 32  |and <OS_Byte 162|
000aaa60  3d 3e 4f 53 5f 42 79 74  65 31 36 32 3e 2e 0a 00  |=>OS_Byte162>...|
000aaa70  44 41 54 41 8a 01 00 00  45 78 70 61 6e 73 69 6f  |DATA....Expansio|
000aaa80  6e 20 43 61 72 64 20 69  64 65 6e 74 69 74 79 20  |n Card identity |
000aaa90  62 79 74 65 0a 23 50 61  72 65 6e 74 20 50 6f 64  |byte.#Parent Pod|
000aaaa0  75 6c 65 5f 0a 41 20 73  69 6d 70 6c 65 20 45 43  |ule_.A simple EC|
000aaab0  49 64 20 69 73 20 6f 6e  65 20 62 79 74 65 20 6c  |Id is one byte l|
000aaac0  6f 6e 67 3a 0a 0a 42 69  74 09 4d 65 61 6e 69 6e  |ong:..Bit.Meanin|
000aaad0  67 20 28 77 68 65 6e 20  7b 2a 7d 63 6c 65 61 72  |g (when {*}clear|
000aaae0  7b 2a 7d 29 0a 23 4c 69  6e 65 0a 37 09 41 63 6f  |{*}).#Line.7.Aco|
000aaaf0  72 6e 20 63 6f 6e 66 6f  72 6d 61 6e 74 20 65 78  |rn conformant ex|
000aab00  70 61 6e 73 69 6f 6e 20  63 61 72 64 0a 36 2d 33  |pansion card.6-3|
000aab10  09 49 44 20 6e 75 6d 62  65 72 20 2d 20 7a 65 72  |.ID number - zer|
000aab20  6f 20 6d 65 61 6e 73 20  3c 65 78 74 65 6e 64 65  |o means <extende|
000aab30  64 20 45 43 49 64 3d 3e  50 6f 64 75 6c 65 5f 65  |d ECId=>Podule_e|
000aab40  45 43 49 64 3e 0a 32 09  6e 6f 74 20 72 65 71 75  |ECId>.2.not requ|
000aab50  65 73 74 69 6e 67 20 46  49 51 20 28 6f 72 20 46  |esting FIQ (or F|
000aab60  49 51 20 72 65 6c 6f 63  61 74 65 64 29 0a 31 09  |IQ relocated).1.|
000aab70  45 78 70 61 6e 73 69 6f  6e 20 63 61 72 64 20 70  |Expansion card p|
000aab80  72 65 73 65 6e 74 20 28  6d 75 73 74 20 61 6c 6c  |resent (must all|
000aab90  77 61 79 73 20 62 65 20  7a 65 72 6f 2c 20 74 6f  |ways be zero, to|
000aaba0  20 61 6c 6c 6f 77 20 68  61 72 64 77 61 72 65 20  | allow hardware |
000aabb0  74 6f 20 64 65 74 65 63  74 20 74 68 65 20 70 72  |to detect the pr|
000aabc0  65 73 65 6e 63 65 20 6f  66 20 61 20 63 61 72 64  |esence of a card|
000aabd0  29 0a 30 09 6e 6f 74 20  72 65 71 75 65 73 74 69  |).0.not requesti|
000aabe0  6e 67 20 49 52 51 20 28  6f 72 20 49 52 51 20 72  |ng IRQ (or IRQ r|
000aabf0  65 6c 6f 63 61 74 65 64  29 0a 00 00 44 41 54 41  |elocated)...DATA|
000aac00  bc 02 00 00 45 78 74 65  6e 64 65 64 20 45 78 70  |....Extended Exp|
000aac10  61 6e 73 69 6f 6e 20 43  61 72 64 20 69 64 65 6e  |ansion Card iden|
000aac20  74 69 74 79 20 62 79 74  65 0a 23 50 61 72 65 6e  |tity byte.#Paren|
000aac30  74 20 50 6f 64 75 6c 65  5f 0a 41 20 65 78 74 65  |t Podule_.A exte|
000aac40  6e 64 65 64 20 45 43 49  64 20 69 73 20 65 69 67  |nded ECId is eig|
000aac50  68 74 20 62 79 74 65 73  20 6c 6f 6e 67 3a 0a 0a  |ht bytes long:..|
000aac60  42 79 74 65 09 42 69 74  09 56 61 6c 75 65 09 4d  |Byte.Bit.Value.M|
000aac70  65 61 6e 69 6e 67 0a 23  4c 69 6e 65 0a 37 09 37  |eaning.#Line.7.7|
000aac80  2d 30 09 20 09 3c 63 6f  75 6e 74 72 79 3d 3e 54  |-0. .<country=>T|
000aac90  65 72 72 69 74 6f 72 79  5f 6e 75 6d 62 65 72 73  |erritory_numbers|
000aaca0  3e 20 28 6f 72 20 30 20  66 6f 72 20 55 4b 29 0a  |> (or 0 for UK).|
000aacb0  36 2c 35 09 31 35 2d 30  09 20 09 6d 61 6e 75 66  |6,5.15-0. .manuf|
000aacc0  61 63 74 75 72 65 72 0a  34 2c 33 09 31 35 2d 30  |acturer.4,3.15-0|
000aacd0  09 20 09 70 72 6f 64 75  63 74 20 74 79 70 65 0a  |. .product type.|
000aace0  32 09 37 2d 30 09 30 09  72 65 73 65 72 76 65 64  |2.7-0.0.reserved|
000aacf0  0a 31 09 37 2d 34 09 30  09 72 65 73 65 72 76 65  |.1.7-4.0.reserve|
000aad00  64 0a 31 09 33 2d 32 09  30 09 38 20 62 69 74 20  |d.1.3-2.0.8 bit |
000aad10  77 69 64 74 68 0a 09 20  09 31 09 31 36 20 62 69  |width.. .1.16 bi|
000aad20  74 20 77 69 64 74 68 0a  09 20 09 32 09 33 32 20  |t width.. .2.32 |
000aad30  62 69 74 20 77 69 64 74  68 0a 09 31 09 31 09 3c  |bit width..1.1.<|
000aad40  49 6e 74 65 72 75 70 74  20 53 74 61 74 75 73 20  |Interupt Status |
000aad50  50 6f 69 6e 74 65 72 73  3d 3e 50 6f 64 75 6c 65  |Pointers=>Podule|
000aad60  5f 69 73 70 3e 20 66 6f  6c 6c 6f 77 20 45 43 49  |_isp> follow ECI|
000aad70  64 20 28 65 6c 73 65 20  6e 6f 74 20 70 72 65 73  |d (else not pres|
000aad80  65 6e 74 29 0a 09 30 09  31 09 3c 43 68 75 6e 6b  |ent)..0.1.<Chunk|
000aad90  20 44 69 72 65 63 74 6f  72 79 3d 3e 50 6f 64 75  | Directory=>Podu|
000aada0  6c 65 5f 63 68 75 6e 6b  64 69 72 3e 20 66 6f 6c  |le_chunkdir> fol|
000aadb0  6c 6f 77 73 20 49 6e 74  65 72 75 70 74 20 53 74  |lows Interupt St|
000aadc0  61 74 75 73 20 50 6f 69  6e 74 65 72 73 20 28 65  |atus Pointers (e|
000aadd0  6c 73 65 20 6e 6f 74 20  70 72 65 73 65 6e 74 29  |lse not present)|
000aade0  0a 30 09 37 09 30 09 41  63 6f 72 6e 20 63 6f 6e  |.0.7.0.Acorn con|
000aadf0  66 6f 72 6d 61 6e 74 20  65 78 70 61 6e 73 69 6f  |formant expansio|
000aae00  6e 20 63 61 72 64 0a 20  09 36 2d 33 09 30 09 65  |n card. .6-3.0.e|
000aae10  78 74 65 6e 64 65 64 20  45 43 49 64 0a 09 32 09  |xtended ECId..2.|
000aae20  30 09 6e 6f 74 20 72 65  71 75 65 73 74 69 6e 67  |0.not requesting|
000aae30  20 46 49 51 20 28 6f 72  20 46 49 51 20 72 65 6c  | FIQ (or FIQ rel|
000aae40  6f 63 61 74 65 64 29 0a  09 20 09 31 09 72 65 71  |ocated).. .1.req|
000aae50  75 65 73 74 69 6e 67 20  46 49 51 0a 09 31 09 30  |uesting FIQ..1.0|
000aae60  09 45 78 70 61 6e 73 69  6f 6e 20 63 61 72 64 20  |.Expansion card |
000aae70  70 72 65 73 65 6e 74 0a  09 30 09 30 09 6e 6f 74  |present..0.0.not|
000aae80  20 72 65 71 75 65 73 74  69 6e 67 20 49 52 51 20  | requesting IRQ |
000aae90  28 6f 72 20 49 52 51 20  72 65 6c 6f 63 61 74 65  |(or IRQ relocate|
000aaea0  64 29 0a 20 09 20 09 31  09 72 65 71 75 65 73 74  |d). . .1.request|
000aaeb0  69 6e 67 20 49 52 51 0a  44 41 54 41 4a 03 00 00  |ing IRQ.DATAJ...|
000aaec0  50 6f 64 75 6c 65 5f 45  6e 75 6d 65 72 61 74 65  |Podule_Enumerate|
000aaed0  43 68 75 6e 6b 73 20 20  28 26 34 30 32 38 32 29  |Chunks  (&40282)|
000aaee0  0a 23 50 61 72 65 6e 74  20 50 6f 64 75 6c 65 5f  |.#Parent Podule_|
000aaef0  0a 3d 3e 09 52 30 20 3d  09 63 68 75 6e 6b 20 6e  |.=>.R0 =.chunk n|
000aaf00  75 6d 62 65 72 0a 09 52  33 20 3d 09 3c 52 4f 4d  |umber..R3 =.<ROM|
000aaf10  20 73 65 63 74 69 6f 6e  3d 3e 4f 53 5f 4d 6f 64  | section=>OS_Mod|
000aaf20  75 6c 65 52 4f 4d 53 65  63 74 69 6f 6e 73 3e 0a  |uleROMSections>.|
000aaf30  3c 3d 09 52 30 20 3d 09  30 20 28 6e 6f 20 6d 6f  |<=.R0 =.0 (no mo|
000aaf40  72 65 20 63 68 75 6e 6b  73 29 0a 6f 72 0a 3c 3d  |re chunks).or.<=|
000aaf50  09 52 30 20 3d 09 6e 65  78 74 20 63 68 75 6e 6b  |.R0 =.next chunk|
000aaf60  20 6e 75 6d 62 65 72 20  28 6e 6f 6e 2d 7a 65 72  | number (non-zer|
000aaf70  6f 20 65 76 65 6e 20 66  6f 72 20 6c 61 73 74 20  |o even for last |
000aaf80  63 68 75 6e 6b 29 0a 09  52 31 20 3d 09 73 69 7a  |chunk)..R1 =.siz|
000aaf90  65 20 28 62 79 74 65 73  29 0a 09 52 32 20 3d 09  |e (bytes)..R2 =.|
000aafa0  3c 6f 70 65 72 61 74 69  6e 67 20 73 79 73 74 65  |<operating syste|
000aafb0  6d 20 69 64 65 6e 74 69  74 79 20 62 79 74 65 3d  |m identity byte=|
000aafc0  3e 50 6f 64 75 6c 65 5f  6f 73 69 64 3e 0a 09 52  |>Podule_osid>..R|
000aafd0  34 20 3d 09 69 66 20 61  20 6d 6f 64 75 6c 65 09  |4 =.if a module.|
000aafe0  70 6f 69 6e 74 65 72 20  74 6f 20 63 6f 70 79 20  |pointer to copy |
000aaff0  6f 66 20 6d 6f 64 75 6c  65 27 73 20 6e 61 6d 65  |of module's name|
000ab000  0a 09 20 09 65 6c 73 65  09 09 70 72 65 73 65 72  |.. .else..preser|
000ab010  76 65 64 0a 0a 54 68 69  73 20 53 57 49 20 72 65  |ved..This SWI re|
000ab020  61 64 73 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |ads information |
000ab030  61 62 6f 75 74 20 61 20  63 68 75 6e 6b 20 66 72  |about a chunk fr|
000ab040  6f 6d 20 74 68 65 20 63  68 75 6e 6b 20 64 69 72  |om the chunk dir|
000ab050  65 63 74 6f 72 79 2e 20  49 66 20 74 68 65 20 63  |ectory. If the c|
000ab060  68 75 6e 6b 20 69 73 20  61 20 6c 6f 61 64 65 72  |hunk is a loader|
000ab070  2c 20 52 49 53 43 20 4f  53 20 61 6c 73 6f 20 6c  |, RISC OS also l|
000ab080  6f 61 64 73 20 69 74 2e  20 54 68 65 20 63 6f 70  |oads it. The cop|
000ab090  79 20 6f 66 20 61 20 6d  6f 64 75 6c 65 27 73 20  |y of a module's |
000ab0a0  6e 61 6d 65 20 73 74 72  69 6e 67 20 69 73 20 68  |name string is h|
000ab0b0  65 6c 64 20 69 6e 20 74  68 65 20 45 78 70 61 6e  |eld in the Expan|
000ab0c0  73 69 6f 6e 20 43 61 72  64 20 4d 61 6e 61 67 65  |sion Card Manage|
000ab0d0  72 27 73 20 77 6f 72 6b  73 70 61 63 65 2c 20 61  |r's workspace, a|
000ab0e0  6e 64 20 77 69 6c 6c 20  62 65 63 6f 6d 65 20 69  |nd will become i|
000ab0f0  6e 76 61 6c 69 64 20 61  66 74 65 72 20 74 68 65  |nvalid after the|
000ab100  20 6e 65 78 74 20 63 61  6c 6c 20 74 6f 20 74 68  | next call to th|
000ab110  65 20 45 78 70 61 6e 73  69 6f 6e 20 43 61 72 64  |e Expansion Card|
000ab120  20 4d 61 6e 61 67 65 72  2e 0a 0a 4e 6f 74 65 20  | Manager...Note |
000ab130  74 68 61 74 20 74 68 65  20 6c 61 73 74 20 76 61  |that the last va|
000ab140  6c 69 64 20 63 68 75 6e  6b 20 65 6e 74 72 79 20  |lid chunk entry |
000ab150  77 69 6c 6c 20 2a 73 74  69 6c 6c 2a 20 72 65 74  |will *still* ret|
000ab160  75 72 6e 20 61 20 6e 6f  6e 2d 7a 65 72 6f 20 6e  |urn a non-zero n|
000ab170  75 6d 62 65 72 20 66 6f  72 20 74 68 65 20 6e 65  |umber for the ne|
000ab180  78 74 20 63 68 75 6e 6b  20 2d 20 77 68 65 6e 20  |xt chunk - when |
000ab190  74 68 69 73 20 53 57 49  20 69 73 20 63 61 6c 6c  |this SWI is call|
000ab1a0  65 64 20 61 67 61 69 6e  20 77 69 74 68 20 52 30  |ed again with R0|
000ab1b0  20 3e 3d 20 74 68 69 73  20 6e 75 6d 62 65 72 20  | >= this number |
000ab1c0  69 74 20 77 69 6c 6c 20  72 65 74 75 72 6e 20 52  |it will return R|
000ab1d0  30 20 3d 20 30 2c 20 73  69 67 6e 69 66 79 69 6e  |0 = 0, signifyin|
000ab1e0  67 20 74 68 65 20 65 6e  64 20 6f 66 20 74 68 65  |g the end of the|
000ab1f0  20 63 68 75 6e 6b 20 64  69 72 65 63 74 6f 72 79  | chunk directory|
000ab200  2e 0a 00 00 44 41 54 41  f8 03 00 00 50 6f 64 75  |....DATA....Podu|
000ab210  6c 65 5f 45 6e 75 6d 65  72 61 74 65 43 68 75 6e  |le_EnumerateChun|
000ab220  6b 73 57 69 74 68 49 6e  66 6f 20 20 28 26 34 30  |ksWithInfo  (&40|
000ab230  32 38 41 29 0a 23 50 61  72 65 6e 74 20 50 6f 64  |28A).#Parent Pod|
000ab240  75 6c 65 5f 0a 3d 3e 09  52 30 20 3d 09 63 68 75  |ule_.=>.R0 =.chu|
000ab250  6e 6b 20 6e 75 6d 62 65  72 0a 09 52 33 20 3d 09  |nk number..R3 =.|
000ab260  3c 52 4f 4d 20 73 65 63  74 69 6f 6e 3d 3e 4f 53  |<ROM section=>OS|
000ab270  5f 4d 6f 64 75 6c 65 52  4f 4d 53 65 63 74 69 6f  |_ModuleROMSectio|
000ab280  6e 73 3e 0a 3c 3d 09 52  30 20 3d 09 30 20 28 6e  |ns>.<=.R0 =.0 (n|
000ab290  6f 20 6d 6f 72 65 20 63  68 75 6e 6b 73 29 0a 6f  |o more chunks).o|
000ab2a0  72 0a 3c 3d 09 52 30 20  3d 09 6e 65 78 74 20 63  |r.<=.R0 =.next c|
000ab2b0  68 75 6e 6b 20 6e 75 6d  62 65 72 20 28 6e 6f 6e  |hunk number (non|
000ab2c0  2d 7a 65 72 6f 20 65 76  65 6e 20 66 6f 72 20 6c  |-zero even for l|
000ab2d0  61 73 74 20 63 68 75 6e  6b 29 0a 09 52 31 20 3d  |ast chunk)..R1 =|
000ab2e0  09 73 69 7a 65 20 28 62  79 74 65 73 29 0a 09 52  |.size (bytes)..R|
000ab2f0  32 20 3d 09 3c 6f 70 65  72 61 74 69 6e 67 20 73  |2 =.<operating s|
000ab300  79 73 74 65 6d 20 69 64  65 6e 74 69 74 79 20 62  |ystem identity b|
000ab310  79 74 65 3d 3e 50 6f 64  75 6c 65 5f 6f 73 69 64  |yte=>Podule_osid|
000ab320  3e 0a 09 52 34 20 3d 09  69 66 20 61 20 6d 6f 64  |>..R4 =.if a mod|
000ab330  75 6c 65 09 70 6f 69 6e  74 65 72 20 74 6f 20 63  |ule.pointer to c|
000ab340  6f 70 79 20 6f 66 20 6d  6f 64 75 6c 65 27 73 20  |opy of module's |
000ab350  6e 61 6d 65 0a 09 20 09  65 6c 73 65 09 09 70 72  |name.. .else..pr|
000ab360  65 73 65 72 76 65 64 0a  09 52 35 20 3d 09 69 66  |eserved..R5 =.if|
000ab370  20 61 20 6d 6f 64 75 6c  65 09 70 6f 69 6e 74 65  | a module.pointe|
000ab380  72 20 74 6f 20 63 6f 70  79 20 6f 66 20 6d 6f 64  |r to copy of mod|
000ab390  75 6c 65 27 73 20 3c 68  65 6c 70 20 73 74 72 69  |ule's <help stri|
000ab3a0  6e 67 3d 3e 4f 53 5f 4d  6f 64 75 6c 65 5f 48 65  |ng=>OS_Module_He|
000ab3b0  6c 70 3e 0a 09 20 09 65  6c 73 65 09 09 70 72 65  |lp>.. .else..pre|
000ab3c0  73 65 72 76 65 64 0a 09  52 36 20 3d 09 69 66 20  |served..R6 =.if |
000ab3d0  61 20 6d 6f 64 75 6c 65  09 61 64 64 72 65 73 73  |a module.address|
000ab3e0  20 6f 66 20 6d 6f 64 75  6c 65 20 69 66 20 64 69  | of module if di|
000ab3f0  72 65 63 74 6c 79 20 65  78 65 63 75 74 61 62 6c  |rectly executabl|
000ab400  65 2c 20 65 6c 73 65 20  30 0a 09 20 09 65 6c 73  |e, else 0.. .els|
000ab410  65 09 09 70 72 65 73 65  72 76 65 64 0a 0a 54 68  |e..preserved..Th|
000ab420  69 73 20 53 57 49 20 72  65 61 64 73 20 69 6e 66  |is SWI reads inf|
000ab430  6f 72 6d 61 74 69 6f 6e  20 61 62 6f 75 74 20 61  |ormation about a|
000ab440  20 63 68 75 6e 6b 20 66  72 6f 6d 20 74 68 65 20  | chunk from the |
000ab450  63 68 75 6e 6b 20 64 69  72 65 63 74 6f 72 79 2e  |chunk directory.|
000ab460  20 49 66 20 74 68 65 20  63 68 75 6e 6b 20 69 73  | If the chunk is|
000ab470  20 61 20 6c 6f 61 64 65  72 2c 20 52 49 53 43 20  | a loader, RISC |
000ab480  4f 53 20 61 6c 73 6f 20  6c 6f 61 64 73 20 69 74  |OS also loads it|
000ab490  2e 20 43 6f 70 69 65 73  20 6f 66 20 61 20 6d 6f  |. Copies of a mo|
000ab4a0  64 75 6c 65 27 73 20 6e  61 6d 65 20 61 6e 64 20  |dule's name and |
000ab4b0  68 65 6c 70 20 73 74 72  69 6e 67 73 20 61 72 65  |help strings are|
000ab4c0  20 68 65 6c 64 20 69 6e  20 74 68 65 20 45 78 70  | held in the Exp|
000ab4d0  61 6e 73 69 6f 6e 20 43  61 72 64 20 4d 61 6e 61  |ansion Card Mana|
000ab4e0  67 65 72 27 73 20 77 6f  72 6b 73 70 61 63 65 2c  |ger's workspace,|
000ab4f0  20 61 6e 64 20 77 69 6c  6c 20 62 65 63 6f 6d 65  | and will become|
000ab500  20 69 6e 76 61 6c 69 64  20 61 66 74 65 72 20 74  | invalid after t|
000ab510  68 65 20 6e 65 78 74 20  63 61 6c 6c 20 74 6f 20  |he next call to |
000ab520  69 74 2e 0a 0a 4e 6f 74  65 20 74 68 61 74 20 74  |it...Note that t|
000ab530  68 65 20 6c 61 73 74 20  76 61 6c 69 64 20 63 68  |he last valid ch|
000ab540  75 6e 6b 20 65 6e 74 72  79 20 77 69 6c 6c 20 2a  |unk entry will *|
000ab550  73 74 69 6c 6c 2a 20 72  65 74 75 72 6e 20 61 20  |still* return a |
000ab560  6e 6f 6e 2d 7a 65 72 6f  20 6e 75 6d 62 65 72 20  |non-zero number |
000ab570  66 6f 72 20 74 68 65 20  6e 65 78 74 20 63 68 75  |for the next chu|
000ab580  6e 6b 20 2d 20 77 68 65  6e 20 74 68 69 73 20 53  |nk - when this S|
000ab590  57 49 20 69 73 20 63 61  6c 6c 65 64 20 61 67 61  |WI is called aga|
000ab5a0  69 6e 20 77 69 74 68 20  52 30 20 3e 3d 20 74 68  |in with R0 >= th|
000ab5b0  69 73 20 6e 75 6d 62 65  72 20 69 74 20 77 69 6c  |is number it wil|
000ab5c0  6c 20 72 65 74 75 72 6e  20 52 30 20 3d 20 30 2c  |l return R0 = 0,|
000ab5d0  20 73 69 67 6e 69 66 79  69 6e 67 20 74 68 65 20  | signifying the |
000ab5e0  65 6e 64 20 6f 66 20 74  68 65 20 63 68 75 6e 6b  |end of the chunk|
000ab5f0  20 64 69 72 65 63 74 6f  72 79 2e 0a 44 41 54 41  | directory..DATA|
000ab600  a1 01 00 00 50 6f 64 75  6c 65 5f 48 61 72 64 77  |....Podule_Hardw|
000ab610  61 72 65 41 64 64 72 65  73 73 20 20 28 26 34 30  |areAddress  (&40|
000ab620  32 38 39 29 0a 23 50 61  72 65 6e 74 20 50 6f 64  |289).#Parent Pod|
000ab630  75 6c 65 5f 0a 3d 3e 09  52 33 20 3d 09 3c 52 4f  |ule_.=>.R3 =.<RO|
000ab640  4d 20 73 65 63 74 69 6f  6e 3d 3e 4f 53 5f 4d 6f  |M section=>OS_Mo|
000ab650  64 75 6c 65 52 4f 4d 53  65 63 74 69 6f 6e 73 3e  |duleROMSections>|
000ab660  0a 3c 3d 09 52 33 20 3d  09 3c 63 6f 6d 62 69 6e  |.<=.R3 =.<combin|
000ab670  65 64 20 68 61 72 64 77  61 72 65 20 61 64 64 72  |ed hardware addr|
000ab680  65 73 73 3d 3e 50 6f 64  75 6c 65 5f 63 6f 6d 62  |ess=>Podule_comb|
000ab690  69 6e 65 64 68 61 72 64  77 61 72 65 61 64 64 72  |inedhardwareaddr|
000ab6a0  65 73 73 3e 0a 0a 54 68  69 73 20 53 57 49 20 72  |ess>..This SWI r|
000ab6b0  65 61 64 73 20 74 68 65  20 65 78 70 61 6e 73 69  |eads the expansi|
000ab6c0  6f 6e 20 63 61 72 64 73  20 6f 72 20 65 78 74 65  |on cards or exte|
000ab6d0  6e 73 69 6f 6e 20 52 4f  4d 27 73 20 3c 63 6f 6d  |nsion ROM's <com|
000ab6e0  62 69 6e 65 64 20 68 61  72 64 77 61 72 65 20 61  |bined hardware a|
000ab6f0  64 64 72 65 73 73 3d 3e  50 6f 64 75 6c 65 5f 63  |ddress=>Podule_c|
000ab700  6f 6d 62 69 6e 65 64 68  61 72 64 77 61 72 65 61  |ombinedhardwarea|
000ab710  64 64 72 65 73 73 3e 2e  20 4e 6f 74 20 74 68 61  |ddress>. Not tha|
000ab720  74 20 74 68 69 73 20 69  6e 66 6f 72 6d 61 74 69  |t this informati|
000ab730  6f 6e 20 69 73 20 76 65  72 79 20 75 73 65 66 75  |on is very usefu|
000ab740  6c 20 66 6f 72 20 61 6e  20 65 78 74 65 6e 73 69  |l for an extensi|
000ab750  6f 6e 20 52 4f 4d 2e 20  55 73 65 20 3c 50 6f 64  |on ROM. Use <Pod|
000ab760  75 6c 65 5f 48 61 72 64  77 61 72 65 41 64 64 72  |ule_HardwareAddr|
000ab770  65 73 73 65 73 3e 20 69  66 20 79 6f 75 20 61 6c  |esses> if you al|
000ab780  73 6f 20 72 65 71 75 69  72 65 20 74 68 65 20 62  |so require the b|
000ab790  61 73 65 20 61 64 64 72  65 73 73 2e 0a 00 00 00  |ase address.....|
000ab7a0  44 41 54 41 a2 01 00 00  50 6f 64 75 6c 65 5f 48  |DATA....Podule_H|
000ab7b0  61 72 64 77 61 72 65 41  64 64 72 65 73 73 65 73  |ardwareAddresses|
000ab7c0  20 20 28 26 34 30 32 38  42 29 0a 23 50 61 72 65  |  (&4028B).#Pare|
000ab7d0  6e 74 20 50 6f 64 75 6c  65 5f 0a 3d 3e 09 52 33  |nt Podule_.=>.R3|
000ab7e0  20 3d 09 3c 52 4f 4d 20  73 65 63 74 69 6f 6e 3d  | =.<ROM section=|
000ab7f0  3e 4f 53 5f 4d 6f 64 75  6c 65 52 4f 4d 53 65 63  |>OS_ModuleROMSec|
000ab800  74 69 6f 6e 73 3e 0a 3c  3d 09 52 30 20 3d 09 62  |tions>.<=.R0 =.b|
000ab810  61 73 65 20 61 64 64 72  65 73 73 20 6f 66 20 65  |ase address of e|
000ab820  78 70 61 6e 73 69 6f 6e  20 63 61 72 64 2f 65 78  |xpansion card/ex|
000ab830  74 65 6e 73 69 6f 6e 20  52 4f 4d 0a 09 52 31 20  |tension ROM..R1 |
000ab840  3d 09 3c 63 6f 6d 62 69  6e 65 64 20 68 61 72 64  |=.<combined hard|
000ab850  77 61 72 65 20 61 64 64  72 65 73 73 3d 3e 50 6f  |ware address=>Po|
000ab860  64 75 6c 65 5f 63 6f 6d  62 69 6e 65 64 68 61 72  |dule_combinedhar|
000ab870  64 77 61 72 65 61 64 64  72 65 73 73 3e 0a 0a 54  |dwareaddress>..T|
000ab880  68 69 73 20 53 57 49 20  72 65 61 64 73 20 74 68  |his SWI reads th|
000ab890  65 20 65 78 70 61 6e 73  69 6f 6e 20 63 61 72 64  |e expansion card|
000ab8a0  73 20 6f 72 20 65 78 74  65 6e 73 69 6f 6e 20 52  |s or extension R|
000ab8b0  4f 4d 27 73 20 62 61 73  65 20 61 64 64 72 65 73  |OM's base addres|
000ab8c0  73 20 61 6e 64 20 3c 63  6f 6d 62 69 6e 65 64 20  |s and <combined |
000ab8d0  68 61 72 64 77 61 72 65  20 61 64 64 72 65 73 73  |hardware address|
000ab8e0  3d 3e 50 6f 64 75 6c 65  5f 63 6f 6d 62 69 6e 65  |=>Podule_combine|
000ab8f0  64 68 61 72 64 77 61 72  65 61 64 64 72 65 73 73  |dhardwareaddress|
000ab900  3e 2e 20 4e 6f 74 20 74  68 61 74 20 74 68 69 73  |>. Not that this|
000ab910  20 69 6e 66 6f 72 6d 61  74 69 6f 6e 20 69 73 20  | information is |
000ab920  76 65 72 79 20 75 73 65  66 75 6c 20 66 6f 72 20  |very useful for |
000ab930  61 6e 20 65 78 74 65 6e  73 69 6f 6e 20 52 4f 4d  |an extension ROM|
000ab940  2e 0a 00 00 44 41 54 41  52 04 00 00 45 78 70 61  |....DATAR...Expa|
000ab950  6e 73 69 6f 6e 20 43 61  72 64 20 69 6e 74 65 72  |nsion Card inter|
000ab960  72 75 70 74 20 73 74 61  74 75 73 20 70 6f 69 6e  |rupt status poin|
000ab970  74 65 72 73 0a 23 50 61  72 65 6e 74 20 50 6f 64  |ters.#Parent Pod|
000ab980  75 6c 65 5f 0a 4f 66 66  73 65 74 09 53 69 7a 65  |ule_.Offset.Size|
000ab990  09 4d 65 61 6e 69 6e 67  0a 33 32 09 31 20 62 79  |.Meaning.32.1 by|
000ab9a0  74 65 09 46 49 51 20 73  74 61 74 75 73 20 62 69  |te.FIQ status bi|
000ab9b0  74 20 6d 61 73 6b 0a 33  36 09 33 20 62 79 74 65  |t mask.36.3 byte|
000ab9c0  73 09 46 49 51 20 73 74  61 74 75 73 20 62 69 74  |s.FIQ status bit|
000ab9d0  20 6f 66 66 73 65 74 0a  34 38 09 31 20 62 79 74  | offset.48.1 byt|
000ab9e0  65 09 49 52 51 20 73 74  61 74 75 73 20 62 69 74  |e.IRQ status bit|
000ab9f0  20 6d 61 73 6b 0a 35 32  09 33 20 62 79 74 65 73  | mask.52.3 bytes|
000aba00  09 49 52 51 20 73 74 61  74 75 73 20 62 69 74 20  |.IRQ status bit |
000aba10  6f 66 66 73 65 74 0a 0a  54 68 65 20 6f 66 66 73  |offset..The offs|
000aba20  65 74 73 20 61 72 65 20  69 6e 20 74 68 65 20 63  |ets are in the c|
000aba30  61 72 64 73 20 69 64 65  6e 74 69 74 79 20 73 70  |ards identity sp|
000aba40  61 63 65 2c 20 77 68 69  63 68 20 69 73 20 6f 6e  |ace, which is on|
000aba50  6c 79 20 38 20 62 69 74  73 20 77 69 64 65 20 66  |ly 8 bits wide f|
000aba60  6f 72 20 74 68 65 20 66  69 72 73 74 20 31 36 20  |or the first 16 |
000aba70  62 79 74 65 73 20 28 7b  2f 7d 69 2e 65 2e 7b 2f  |bytes ({/}i.e.{/|
000aba80  7d 20 6f 6e 6c 79 20 6c  6f 77 20 62 79 74 65 20  |} only low byte |
000aba90  69 73 20 75 73 65 64 20  66 6f 72 20 74 68 65 20  |is used for the |
000abaa0  66 69 72 73 74 20 31 36  20 77 6f 72 64 73 29 2e  |first 16 words).|
000abab0  0a 0a 53 74 61 74 75 73  20 6f 66 66 73 65 74 73  |..Status offsets|
000abac0  20 61 72 65 20 73 69 67  6e 65 64 20 32 34 20 62  | are signed 24 b|
000abad0  69 74 20 6e 75 6d 62 65  72 73 2c 20 6f 66 66 73  |it numbers, offs|
000abae0  65 74 20 66 72 6f 6d 20  26 33 32 34 30 30 30 30  |et from &3240000|
000abaf0  20 28 62 61 73 65 20 6f  66 20 70 6f 64 75 6c 65  | (base of podule|
000abb00  73 20 69 6e 20 74 68 65  20 3c 6d 65 6d 6f 72 79  |s in the <memory|
000abb10  20 6d 61 70 3d 3e 4d 61  63 68 69 6e 65 3a 21 52  | map=>Machine:!R|
000abb20  6f 6f 74 3e 29 20 2d 20  68 65 6e 63 65 20 61 63  |oot>) - hence ac|
000abb30  63 65 73 73 20 63 79 63  6c 65 20 73 70 65 65 64  |cess cycle speed|
000abb40  20 69 73 20 65 6e 63 6f  64 65 64 20 69 6e 20 3c  | is encoded in <|
000abb50  62 69 74 73 20 31 39 2d  32 30 3d 3e 4d 61 63 68  |bits 19-20=>Mach|
000abb60  69 6e 65 3a 49 4f 43 3e  2e 20 42 69 74 73 20 31  |ine:IOC>. Bits 1|
000abb70  34 2d 31 35 20 28 73 6c  6f 74 20 6e 75 6d 62 65  |4-15 (slot numbe|
000abb80  72 29 20 73 68 6f 75 6c  64 20 62 65 20 7a 65 72  |r) should be zer|
000abb90  6f 2e 20 41 20 6e 65 67  61 74 69 76 65 20 6f 66  |o. A negative of|
000abba0  66 73 65 74 20 6d 65 61  6e 73 20 74 68 61 74 20  |fset means that |
000abbb0  74 68 65 20 73 74 61 74  75 73 20 72 65 67 69 73  |the status regis|
000abbc0  74 65 72 20 69 73 20 69  6e 20 6d 6f 64 75 6c 65  |ter is in module|
000abbd0  20 73 70 61 63 65 2e 0a  0a 54 68 65 20 62 69 74  | space...The bit|
000abbe0  20 6d 61 73 6b 20 73 68  6f 75 6c 64 20 68 61 76  | mask should hav|
000abbf0  65 20 6f 6e 6c 79 20 61  20 73 69 6e 67 6c 65 20  |e only a single |
000abc00  62 69 74 20 73 65 74 2e  0a 0a 49 66 20 79 6f 75  |bit set...If you|
000abc10  20 68 61 76 65 20 74 6f  20 68 61 76 65 20 69 6e  | have to have in|
000abc20  74 65 72 72 75 70 74 20  73 74 61 74 75 73 20 70  |terrupt status p|
000abc30  6f 69 6e 74 65 72 73 20  62 65 63 61 75 73 65 20  |ointers because |
000abc40  6f 66 20 61 20 3c 63 68  75 6e 6b 20 64 69 72 65  |of a <chunk dire|
000abc50  63 74 6f 72 79 3d 3e 50  6f 64 75 6c 65 5f 63 68  |ctory=>Podule_ch|
000abc60  75 6e 6b 64 69 72 3e 20  62 75 74 20 64 6f 20 6e  |unkdir> but do n|
000abc70  6f 74 20 77 69 73 68 20  74 6f 20 72 65 6c 6f 63  |ot wish to reloc|
000abc80  61 74 65 20 74 68 65 20  73 74 61 74 75 73 20 62  |ate the status b|
000abc90  69 74 73 20 66 72 6f 6d  20 74 68 65 20 64 65 66  |its from the def|
000abca0  61 75 6c 74 20 6c 6f 63  61 74 69 6f 6e 20 28 6c  |ault location (l|
000abcb0  6f 77 20 62 79 74 65 20  6f 66 20 74 68 65 20 3c  |ow byte of the <|
000abcc0  45 43 49 64 3d 3e 50 6f  64 75 6c 65 5f 65 45 43  |ECId=>Podule_eEC|
000abcd0  49 64 3e 29 20 79 6f 75  20 77 6f 75 6c 64 20 73  |Id>) you would s|
000abce0  65 74 20 62 6f 74 68 20  6f 66 66 73 65 74 20 66  |et both offset f|
000abcf0  69 65 6c 64 73 20 74 6f  20 70 6f 69 6e 74 20 74  |ields to point t|
000abd00  6f 20 74 68 65 20 6c 6f  77 20 62 79 74 65 2c 20  |o the low byte, |
000abd10  77 69 74 68 20 6d 61 73  6b 73 20 6f 66 20 34 20  |with masks of 4 |
000abd20  61 6e 64 20 31 20 66 6f  72 20 46 49 51 20 61 6e  |and 1 for FIQ an|
000abd30  64 20 49 52 51 20 72 65  73 70 65 63 74 69 76 65  |d IRQ respective|
000abd40  6c 79 2e 0a 23 20 49 20  74 68 69 6e 6b 20 74 68  |ly..# I think th|
000abd50  61 74 20 74 68 69 73 20  77 6f 75 6c 64 20 6d 65  |at this would me|
000abd60  61 6e 20 62 6f 74 68 20  6f 66 66 73 65 74 73 20  |an both offsets |
000abd70  77 6f 75 6c 64 20 62 65  20 30 2c 20 62 75 74 20  |would be 0, but |
000abd80  50 52 4d 20 64 6f 65 73  6e 27 74 20 73 61 79 20  |PRM doesn't say |
000abd90  74 68 69 73 2e 0a 00 00  44 41 54 41 60 02 00 00  |this....DATA`...|
000abda0  45 78 70 61 6e 73 69 6f  6e 20 43 61 72 64 20 6c  |Expansion Card l|
000abdb0  6f 61 64 65 72 0a 23 50  61 72 65 6e 74 20 50 6f  |oader.#Parent Po|
000abdc0  64 75 6c 65 5f 0a 54 68  65 20 6c 6f 61 64 65 72  |dule_.The loader|
000abdd0  20 70 72 6f 76 69 64 65  73 20 61 20 73 69 6d 70  | provides a simp|
000abde0  6c 65 20 69 6e 74 65 72  66 61 63 65 20 74 68 61  |le interface tha|
000abdf0  74 20 6c 65 74 73 20 74  68 65 20 45 78 70 61 6e  |t lets the Expan|
000abe00  73 69 6f 6e 20 43 61 72  64 20 6d 61 6e 61 67 65  |sion Card manage|
000abe10  72 20 61 63 63 65 73 73  20 74 68 65 20 63 61 72  |r access the car|
000abe20  64 27 73 20 63 6f 64 65  20 73 70 61 63 65 2e 20  |d's code space. |
000abe30  54 68 65 20 72 65 67 69  73 65 72 20 75 73 61 67  |The regiser usag|
000abe40  65 20 69 73 20 63 6f 6d  6d 6f 6e 20 74 6f 20 74  |e is common to t|
000abe50  68 65 20 34 20 65 6e 74  72 79 20 70 6f 69 6e 74  |he 4 entry point|
000abe60  73 2e 0a 0a 3d 3e 09 52  30 09 75 73 65 72 20 64  |s...=>.R0.user d|
000abe70  61 74 61 2c 20 6f 72 20  62 79 74 65 20 74 6f 20  |ata, or byte to |
000abe80  72 65 61 64 2f 77 72 69  74 65 0a 09 52 31 09 75  |read/write..R1.u|
000abe90  73 65 72 20 64 61 74 61  2c 20 6f 72 20 61 64 64  |ser data, or add|
000abea0  72 65 73 73 0a 09 52 32  09 75 73 65 72 20 64 61  |ress..R2.user da|
000abeb0  74 61 0a 09 52 31 31 09  3c 63 6f 6d 62 69 6e 65  |ta..R11.<combine|
000abec0  64 20 68 61 72 64 77 61  72 65 20 61 64 64 72 65  |d hardware addre|
000abed0  73 73 3d 3e 50 6f 64 75  6c 65 5f 63 6f 6d 62 69  |ss=>Podule_combi|
000abee0  6e 65 64 68 61 72 64 77  61 72 65 61 64 64 72 65  |nedhardwareaddre|
000abef0  73 73 3e 0a 09 52 31 33  09 46 44 20 73 74 61 63  |ss>..R13.FD stac|
000abf00  6b 0a 3c 3d 09 52 32 2c  52 33 2c 52 31 30 20 6d  |k.<=.R2,R3,R10 m|
000abf10  61 79 20 62 65 20 63 6f  72 72 75 70 74 65 64 0a  |ay be corrupted.|
000abf20  0a 45 6e 74 72 79 20 70  6f 69 6e 74 73 3a 0a 0a  |.Entry points:..|
000abf30  4f 66 66 73 65 74 09 43  6f 64 65 20 0a 23 4c 69  |Offset.Code .#Li|
000abf40  6e 65 0a 30 09 52 65 61  64 20 61 20 62 79 74 65  |ne.0.Read a byte|
000abf50  0a 34 09 57 72 69 74 65  20 61 20 62 79 74 65 0a  |.4.Write a byte.|
000abf60  38 09 52 65 73 65 74 20  63 61 72 64 0a 31 32 09  |8.Reset card.12.|
000abf70  3c 50 6f 64 75 6c 65 5f  43 61 6c 6c 4c 6f 61 64  |<Podule_CallLoad|
000abf80  65 72 3e 0a 0a 52 65 74  75 72 6e 20 77 69 74 68  |er>..Return with|
000abf90  20 42 49 43 53 20 70 63  2c 20 6c 72 2c 20 23 56  | BICS pc, lr, #V|
000abfa0  5f 62 69 74 2c 20 6f 72  20 56 20 73 65 74 20 61  |_bit, or V set a|
000abfb0  6e 64 20 61 6e 20 65 72  72 6f 72 20 69 6e 20 52  |nd an error in R|
000abfc0  30 2e 20 41 6e 20 65 72  72 6f 72 20 70 6f 69 6e  |0. An error poin|
000abfd0  74 65 72 20 6f 66 20 30  20 77 69 6c 6c 20 67 65  |ter of 0 will ge|
000abfe0  6e 65 72 61 74 65 20 61  20 64 65 66 61 75 6c 74  |nerate a default|
000abff0  20 65 72 72 6f 72 2e 0a  44 41 54 41 45 03 00 00  | error..DATAE...|
000ac000  45 78 70 61 6e 73 69 6f  6e 20 43 61 72 64 20 6f  |Expansion Card o|
000ac010  70 65 72 61 74 69 6e 67  20 73 79 73 74 65 6d 20  |perating system |
000ac020  69 64 65 6e 74 69 74 79  20 62 79 74 65 0a 23 50  |identity byte.#P|
000ac030  61 72 65 6e 74 20 50 6f  64 75 6c 65 5f 0a 54 68  |arent Podule_.Th|
000ac040  65 20 6f 70 65 72 61 74  69 6e 67 20 73 79 73 74  |e operating syst|
000ac050  65 6d 20 69 64 65 6e 74  69 74 79 20 62 79 74 65  |em identity byte|
000ac060  20 69 73 20 74 68 65 20  66 69 72 73 74 20 62 79  | is the first by|
000ac070  74 65 20 69 6e 20 74 68  65 20 43 68 75 6e 6b 20  |te in the Chunk |
000ac080  44 69 72 65 63 74 6f 72  79 20 65 6e 74 72 79 2e  |Directory entry.|
000ac090  20 49 74 20 69 73 20 66  6f 72 6d 65 64 20 6f 66  | It is formed of|
000ac0a0  20 74 77 6f 20 6e 79 62  62 6c 65 73 3a 0a 48 69  | two nybbles:.Hi|
000ac0b0  67 68 20 4e 69 62 62 6c  65 09 4c 6f 77 20 4e 69  |gh Nibble.Low Ni|
000ac0c0  62 62 6c 65 09 4d 65 61  6e 69 6e 67 0a 28 62 69  |bble.Meaning.(bi|
000ac0d0  74 73 20 37 2d 34 29 09  28 62 69 74 73 20 33 2d  |ts 7-4).(bits 3-|
000ac0e0  30 29 0a 23 4c 69 6e 65  0a 20 38 09 09 20 09 09  |0).#Line. 8.. ..|
000ac0f0  41 63 6f 72 6e 20 4f 53  20 30 3a 20 41 72 74 68  |Acorn OS 0: Arth|
000ac100  75 72 2f 52 49 53 43 20  4f 53 0a 20 09 09 30 09  |ur/RISC OS. ..0.|
000ac110  09 4c 6f 61 64 65 72 0a  20 09 09 31 09 09 3c 52  |.Loader. ..1..<R|
000ac120  65 6c 6f 63 61 74 61 62  6c 65 20 4d 6f 64 75 6c  |elocatable Modul|
000ac130  65 3d 3e 4f 53 5f 4d 6f  64 75 6c 65 3e 0a 20 09  |e=>OS_Module>. .|
000ac140  09 32 09 09 42 42 43 20  52 4f 4d 0a 20 09 09 33  |.2..BBC ROM. ..3|
000ac150  09 09 3c 53 70 72 69 74  65 3d 3e 4f 53 5f 53 70  |..<Sprite=>OS_Sp|
000ac160  72 69 74 65 4f 50 3e 0a  20 31 30 09 09 20 09 09  |riteOP>. 10.. ..|
000ac170  41 63 6f 72 6e 20 4f 53  20 32 3a 20 55 6e 69 78  |Acorn OS 2: Unix|
000ac180  0a 20 09 09 30 09 09 4c  6f 61 64 65 72 0a 20 31  |. ..0..Loader. 1|
000ac190  34 09 09 20 09 09 6d 61  6e 75 66 61 63 74 75 72  |4.. ..manufactur|
000ac1a0  65 72 20 64 65 66 69 6e  65 64 0a 20 09 09 30 2d  |er defined. ..0-|
000ac1b0  31 35 09 09 6d 61 6e 75  66 61 63 74 75 72 65 72  |15..manufacturer|
000ac1c0  20 73 70 65 63 69 66 69  63 0a 20 31 35 09 09 20  | specific. 15.. |
000ac1d0  09 09 44 65 76 69 63 65  20 64 61 74 61 0a 20 09  |..Device data. .|
000ac1e0  09 30 09 09 6c 69 6e 6b  20 28 70 6f 69 6e 74 73  |.0..link (points|
000ac1f0  20 74 6f 20 61 6e 6f 74  68 65 72 20 64 69 72 65  | to another dire|
000ac200  63 74 6f 72 79 29 0a 20  09 09 31 09 09 73 65 72  |ctory). ..1..ser|
000ac210  69 61 6c 20 6e 75 6d 62  65 72 09 09 28 73 74 72  |ial number..(str|
000ac220  69 6e 67 29 0a 20 09 09  32 09 09 64 61 74 65 20  |ing). ..2..date |
000ac230  6f 66 20 6d 61 6e 75 66  61 63 74 75 72 65 09 28  |of manufacture.(|
000ac240  73 74 72 69 6e 67 29 0a  20 09 09 33 09 09 6d 6f  |string). ..3..mo|
000ac250  64 69 66 69 63 61 74 69  6f 6e 20 73 74 61 74 75  |dification statu|
000ac260  73 09 28 73 74 72 69 6e  67 29 0a 20 09 09 34 09  |s.(string). ..4.|
000ac270  09 70 6c 61 63 65 20 6f  66 20 6d 61 6e 75 66 61  |.place of manufa|
000ac280  63 74 75 72 65 09 28 73  74 72 69 6e 67 29 0a 20  |cture.(string). |
000ac290  09 09 35 09 09 64 65 73  63 72 69 70 74 69 6f 6e  |..5..description|
000ac2a0  09 09 28 73 74 72 69 6e  67 29 0a 20 09 09 36 09  |..(string). ..6.|
000ac2b0  09 70 61 72 74 20 6e 75  6d 62 65 72 09 09 28 73  |.part number..(s|
000ac2c0  74 72 69 6e 67 29 0a 20  09 09 31 35 09 09 65 6d  |tring). ..15..em|
000ac2d0  70 74 79 20 63 68 75 6e  6b 0a 0a 49 74 20 69 73  |pty chunk..It is|
000ac2e0  20 69 6e 74 65 6e 64 65  64 20 74 68 61 74 20 74  | intended that t|
000ac2f0  68 65 20 73 74 72 69 6e  67 20 76 61 6c 75 65 73  |he string values|
000ac300  20 61 72 65 20 66 6f 72  20 68 75 6d 61 6e 20 69  | are for human i|
000ac310  6e 73 70 65 63 74 69 6f  6e 20 28 72 61 74 68 65  |nspection (rathe|
000ac320  72 20 74 68 61 6e 20 66  6f 72 20 70 72 6f 67 72  |r than for progr|
000ac330  61 6d 73 20 74 6f 20 72  65 61 64 29 0a 00 00 00  |ams to read)....|
000ac340  44 41 54 41 87 01 00 00  50 6f 64 75 6c 65 5f 52  |DATA....Podule_R|
000ac350  61 77 52 65 61 64 20 20  28 26 34 30 32 38 37 29  |awRead  (&40287)|
000ac360  0a 23 50 61 72 65 6e 74  20 50 6f 64 75 6c 65 5f  |.#Parent Podule_|
000ac370  0a 3d 3e 09 52 30 20 3d  09 6f 66 66 73 65 74 20  |.=>.R0 =.offset |
000ac380  28 30 20 2d 20 26 46 46  46 29 20 66 72 6f 6d 20  |(0 - &FFF) from |
000ac390  70 6f 64 75 6c 65 27 73  20 61 64 64 72 65 73 73  |podule's address|
000ac3a0  20 73 70 61 63 65 20 62  61 73 65 2e 0a 09 52 31  | space base...R1|
000ac3b0  20 3d 09 6e 75 6d 62 65  72 20 6f 66 20 62 79 74  | =.number of byt|
000ac3c0  65 73 0a 09 52 32 20 3d  09 70 6f 69 6e 74 65 72  |es..R2 =.pointer|
000ac3d0  20 74 6f 20 62 75 66 66  65 72 0a 09 52 33 20 3d  | to buffer..R3 =|
000ac3e0  09 3c 52 4f 4d 20 73 65  63 74 69 6f 6e 3d 3e 4f  |.<ROM section=>O|
000ac3f0  53 5f 4d 6f 64 75 6c 65  52 4f 4d 53 65 63 74 69  |S_ModuleROMSecti|
000ac400  6f 6e 73 3e 0a 0a 54 68  69 73 20 53 57 49 20 72  |ons>..This SWI r|
000ac410  65 61 64 73 20 62 79 74  65 73 20 64 69 72 65 63  |eads bytes direc|
000ac420  74 6c 79 20 66 72 6f 6d  20 61 6e 20 65 78 70 61  |tly from an expa|
000ac430  6e 73 69 6f 6e 20 63 61  72 64 20 6f 72 20 65 78  |nsion card or ex|
000ac440  74 65 6e 73 69 6f 6e 20  52 4f 4d 27 73 20 61 64  |tension ROM's ad|
000ac450  64 72 65 73 73 20 73 70  61 63 65 2c 20 74 79 70  |dress space, typ|
000ac460  69 63 61 6c 6c 79 20 74  6f 20 72 65 61 64 20 68  |ically to read h|
000ac470  61 72 64 77 61 72 65 20  72 65 67 69 73 74 65 72  |ardware register|
000ac480  73 2e 20 55 73 65 20 3c  50 6f 64 75 6c 65 5f 52  |s. Use <Podule_R|
000ac490  65 61 64 42 79 74 65 73  3e 20 74 6f 20 72 65 61  |eadBytes> to rea|
000ac4a0  64 20 66 72 6f 6d 20 61  6e 20 65 78 70 61 6e 73  |d from an expans|
000ac4b0  69 6f 6e 20 63 61 72 64  27 73 20 63 6f 64 65 20  |ion card's code |
000ac4c0  73 70 61 63 65 2e 0a 00  44 41 54 41 ff 01 00 00  |space...DATA....|
000ac4d0  50 6f 64 75 6c 65 5f 52  61 77 57 72 69 74 65 20  |Podule_RawWrite |
000ac4e0  20 28 26 34 30 32 38 38  29 0a 23 50 61 72 65 6e  | (&40288).#Paren|
000ac4f0  74 20 50 6f 64 75 6c 65  5f 0a 3d 3e 09 52 30 20  |t Podule_.=>.R0 |
000ac500  3d 09 6f 66 66 73 65 74  20 28 30 20 2d 20 26 46  |=.offset (0 - &F|
000ac510  46 46 29 20 66 72 6f 6d  20 70 6f 64 75 6c 65 27  |FF) from podule'|
000ac520  73 20 61 64 64 72 65 73  73 20 73 70 61 63 65 20  |s address space |
000ac530  62 61 73 65 2e 0a 09 52  31 20 3d 09 6e 75 6d 62  |base...R1 =.numb|
000ac540  65 72 20 6f 66 20 62 79  74 65 73 0a 09 52 32 20  |er of bytes..R2 |
000ac550  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 62 75 66  |=.pointer to buf|
000ac560  66 65 72 0a 09 52 33 20  3d 09 65 78 70 61 6e 73  |fer..R3 =.expans|
000ac570  69 6f 6e 20 63 61 72 64  20 6e 75 6d 62 65 72 0a  |ion card number.|
000ac580  0a 54 68 69 73 20 53 57  49 20 77 72 69 74 65 73  |.This SWI writes|
000ac590  20 62 79 74 65 73 20 64  69 72 65 63 74 6c 79 20  | bytes directly |
000ac5a0  74 6f 20 61 6e 20 65 78  70 61 6e 73 69 6f 6e 20  |to an expansion |
000ac5b0  63 61 72 64 27 73 20 61  64 64 72 65 73 73 20 73  |card's address s|
000ac5c0  70 61 63 65 2c 20 74 79  70 69 63 61 6c 6c 79 20  |pace, typically |
000ac5d0  74 6f 20 77 72 69 74 65  20 68 61 72 64 77 61 72  |to write hardwar|
000ac5e0  65 20 72 65 67 69 73 74  65 72 73 2e 20 55 73 65  |e registers. Use|
000ac5f0  20 3c 50 6f 64 75 6c 65  5f 57 72 69 74 65 42 79  | <Podule_WriteBy|
000ac600  74 65 73 3e 20 74 6f 20  77 72 69 74 65 20 74 6f  |tes> to write to|
000ac610  20 61 6e 20 65 78 70 61  6e 73 69 6f 6e 20 63 61  | an expansion ca|
000ac620  72 64 27 73 20 63 6f 64  65 20 73 70 61 63 65 2e  |rd's code space.|
000ac630  0a 0a 44 6f 20 2a 6e 6f  74 2a 20 74 72 79 20 74  |..Do *not* try t|
000ac640  6f 20 77 72 69 74 65 20  74 6f 20 61 6e 20 3c 65  |o write to an <e|
000ac650  78 74 65 6e 73 69 6f 6e  20 52 4f 4d 3d 3e 4f 53  |xtension ROM=>OS|
000ac660  5f 4d 6f 64 75 6c 65 52  4f 4d 53 65 63 74 69 6f  |_ModuleROMSectio|
000ac670  6e 73 3e 20 2d 20 74 68  69 73 20 77 69 6c 6c 20  |ns> - this will |
000ac680  70 72 6f 62 61 62 6c 79  20 72 65 73 75 6c 74 20  |probably result |
000ac690  69 6e 20 74 68 65 20 6d  65 6d 6f 72 79 20 6f 72  |in the memory or|
000ac6a0  20 76 69 64 65 6f 20 63  6f 6e 74 72 6f 6c 6c 65  | video controlle|
000ac6b0  72 73 20 62 65 69 6e 67  20 72 65 70 72 6f 67 72  |rs being reprogr|
000ac6c0  61 6d 6d 65 64 2e 0a 00  44 41 54 41 69 01 00 00  |ammed...DATAi...|
000ac6d0  50 6f 64 75 6c 65 5f 52  65 61 64 42 79 74 65 73  |Podule_ReadBytes|
000ac6e0  20 20 28 26 34 30 32 38  34 29 0a 23 50 61 72 65  |  (&40284).#Pare|
000ac6f0  6e 74 20 50 6f 64 75 6c  65 5f 0a 3d 3e 09 52 30  |nt Podule_.=>.R0|
000ac700  20 3d 09 6f 66 66 73 65  74 20 66 72 6f 6d 20 73  | =.offset from s|
000ac710  74 61 72 74 20 6f 66 20  63 6f 64 65 20 73 70 61  |tart of code spa|
000ac720  63 65 0a 09 52 31 20 3d  09 6e 75 6d 62 65 72 20  |ce..R1 =.number |
000ac730  6f 66 20 62 79 74 65 73  0a 09 52 32 20 3d 09 70  |of bytes..R2 =.p|
000ac740  6f 69 6e 74 65 72 20 74  6f 20 62 75 66 66 65 72  |ointer to buffer|
000ac750  0a 09 52 33 20 3d 09 65  78 70 61 6e 73 69 6f 6e  |..R3 =.expansion|
000ac760  20 63 61 72 64 20 6e 75  6d 62 65 72 0a 0a 54 68  | card number..Th|
000ac770  69 73 20 53 57 49 20 72  65 61 64 73 20 62 79 74  |is SWI reads byt|
000ac780  65 73 20 66 72 6f 6d 20  61 6e 20 65 78 70 61 6e  |es from an expan|
000ac790  73 69 6f 6e 20 63 61 72  64 27 73 20 63 6f 64 65  |sion card's code|
000ac7a0  20 73 70 61 63 65 2c 20  62 79 20 72 65 70 65 61  | space, by repea|
000ac7b0  74 65 64 20 63 61 6c 6c  73 20 74 6f 20 69 74 73  |ted calls to its|
000ac7c0  20 3c 6c 6f 61 64 65 72  3d 3e 50 6f 64 75 6c 65  | <loader=>Podule|
000ac7d0  5f 6c 6f 61 64 65 72 3e  2e 20 41 74 74 65 6d 70  |_loader>. Attemp|
000ac7e0  74 69 6e 67 20 74 6f 20  72 65 61 64 20 66 72 6f  |ting to read fro|
000ac7f0  6d 20 61 6e 20 3c 65 78  74 65 6e 73 69 6f 6e 20  |m an <extension |
000ac800  52 4f 4d 3d 3e 4f 53 5f  4d 6f 64 75 6c 65 52 4f  |ROM=>OS_ModuleRO|
000ac810  4d 53 65 63 74 69 6f 6e  73 3e 20 77 69 6c 6c 20  |MSections> will |
000ac820  72 65 74 75 72 6e 20 61  6e 20 65 72 72 6f 72 2e  |return an error.|
000ac830  0a 00 00 00 44 41 54 41  19 01 00 00 50 6f 64 75  |....DATA....Podu|
000ac840  6c 65 5f 52 65 61 64 43  68 75 6e 6b 20 20 28 26  |le_ReadChunk  (&|
000ac850  34 30 32 38 33 29 0a 23  50 61 72 65 6e 74 20 50  |40283).#Parent P|
000ac860  6f 64 75 6c 65 5f 0a 3d  3e 09 52 30 20 3d 09 63  |odule_.=>.R0 =.c|
000ac870  68 75 6e 6b 20 6e 75 6d  62 65 72 0a 09 52 32 20  |hunk number..R2 |
000ac880  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 62 75 66  |=.pointer to buf|
000ac890  66 65 72 20 28 61 73 73  75 6d 65 64 20 6c 61 72  |fer (assumed lar|
000ac8a0  67 65 20 65 6e 6f 75 67  68 29 0a 09 52 33 20 3d  |ge enough)..R3 =|
000ac8b0  09 3c 52 4f 4d 20 73 65  63 74 69 6f 6e 3d 3e 4f  |.<ROM section=>O|
000ac8c0  53 5f 4d 6f 64 75 6c 65  52 4f 4d 53 65 63 74 69  |S_ModuleROMSecti|
000ac8d0  6f 6e 73 3e 0a 0a 54 68  69 73 20 53 57 49 20 72  |ons>..This SWI r|
000ac8e0  65 61 64 73 20 74 68 65  20 73 70 65 63 69 66 69  |eads the specifi|
000ac8f0  65 64 20 63 68 75 6e 6b  20 66 72 6f 6d 20 61 6e  |ed chunk from an|
000ac900  20 65 78 70 61 6e 73 69  6f 6e 20 63 61 72 64 2e  | expansion card.|
000ac910  20 55 73 65 20 3c 50 6f  64 75 6c 65 5f 45 6e 75  | Use <Podule_Enu|
000ac920  6d 65 72 61 74 65 43 68  75 6e 6b 73 3e 20 74 6f  |merateChunks> to|
000ac930  20 66 69 6e 64 20 74 68  65 20 73 69 7a 65 20 6f  | find the size o|
000ac940  66 20 74 68 65 20 63 68  75 6e 6b 2e 0a 00 00 00  |f the chunk.....|
000ac950  44 41 54 41 77 01 00 00  50 6f 64 75 6c 65 5f 52  |DATAw...Podule_R|
000ac960  65 61 64 48 65 61 64 65  72 20 20 28 26 34 30 32  |eadHeader  (&402|
000ac970  38 31 29 0a 23 50 61 72  65 6e 74 20 50 6f 64 75  |81).#Parent Podu|
000ac980  6c 65 5f 0a 3d 3e 09 52  32 20 3d 09 70 6f 69 6e  |le_.=>.R2 =.poin|
000ac990  74 65 72 20 74 6f 20 62  75 66 66 65 72 20 28 38  |ter to buffer (8|
000ac9a0  20 6f 72 20 31 36 20 62  79 74 65 73 29 0a 09 52  | or 16 bytes)..R|
000ac9b0  33 20 3d 09 3c 52 4f 4d  20 73 65 63 74 69 6f 6e  |3 =.<ROM section|
000ac9c0  3d 3e 4f 53 5f 4d 6f 64  75 6c 65 52 4f 4d 53 65  |=>OS_ModuleROMSe|
000ac9d0  63 74 69 6f 6e 73 3e 0a  0a 54 68 69 73 20 53 57  |ctions>..This SW|
000ac9e0  49 20 72 65 61 64 73 20  74 68 65 20 3c 65 78 74  |I reads the <ext|
000ac9f0  65 6e 64 65 64 20 45 78  70 61 6e 73 69 6f 6e 20  |ended Expansion |
000aca00  43 61 72 64 20 49 64 65  6e 74 69 74 79 3d 3e 50  |Card Identity=>P|
000aca10  6f 64 75 6c 65 5f 65 45  43 49 64 3e 20 28 38 20  |odule_eECId> (8 |
000aca20  62 79 74 65 73 29 20 69  6e 74 6f 20 74 68 65 20  |bytes) into the |
000aca30  62 75 66 66 65 72 2e 20  49 66 20 74 68 65 20 63  |buffer. If the c|
000aca40  61 72 64 20 61 6c 73 6f  20 68 61 73 20 3c 69 6e  |ard also has <in|
000aca50  74 65 72 75 70 74 20 73  74 61 74 75 73 20 70 6f  |terupt status po|
000aca60  69 6e 74 65 72 73 3d 3e  50 6f 64 75 6c 65 5f 69  |inters=>Podule_i|
000aca70  73 70 3e 20 28 66 75 72  74 68 65 72 20 38 20 62  |sp> (further 8 b|
000aca80  79 74 65 73 29 20 74 68  65 6e 20 74 68 65 73 65  |ytes) then these|
000aca90  20 61 72 65 20 61 6c 73  6f 20 72 65 61 64 20 2d  | are also read -|
000acaa0  20 68 65 6e 63 65 20 69  66 20 75 6e 73 75 72 65  | hence if unsure|
000acab0  20 75 73 65 20 61 20 31  36 20 62 79 74 65 20 62  | use a 16 byte b|
000acac0  75 66 66 65 72 2e 0a 00  44 41 54 41 20 01 00 00  |uffer...DATA ...|
000acad0  50 6f 64 75 6c 65 5f 52  65 61 64 49 44 20 20 28  |Podule_ReadID  (|
000acae0  26 34 30 32 38 30 29 0a  23 50 61 72 65 6e 74 20  |&40280).#Parent |
000acaf0  50 6f 64 75 6c 65 5f 0a  3d 3e 09 52 33 20 3d 09  |Podule_.=>.R3 =.|
000acb00  3c 52 4f 4d 20 73 65 63  74 69 6f 6e 3d 3e 4f 53  |<ROM section=>OS|
000acb10  5f 4d 6f 64 75 6c 65 52  4f 4d 53 65 63 74 69 6f  |_ModuleROMSectio|
000acb20  6e 73 3e 0a 3c 3d 09 52  30 20 3d 09 3c 65 78 70  |ns>.<=.R0 =.<exp|
000acb30  61 6e 73 69 6f 6e 20 63  61 72 64 20 69 64 65 6e  |ansion card iden|
000acb40  74 69 74 79 20 62 79 74  65 20 28 45 43 49 64 29  |tity byte (ECId)|
000acb50  3d 3e 50 6f 64 75 6c 65  5f 45 43 49 64 3e 0a 0a  |=>Podule_ECId>..|
000acb60  54 68 69 73 20 53 57 49  20 72 65 61 64 73 20 74  |This SWI reads t|
000acb70  68 65 20 3c 45 78 70 61  6e 73 69 6f 6e 20 43 61  |he <Expansion Ca|
000acb80  72 64 20 69 64 65 6e 74  69 74 79 20 62 79 74 65  |rd identity byte|
000acb90  3d 3e 50 6f 64 75 6c 65  5f 45 43 49 64 3e 2c 20  |=>Podule_ECId>, |
000acba0  6f 72 20 74 68 65 20 6c  6f 77 20 62 79 74 65 20  |or the low byte |
000acbb0  6f 66 20 61 6e 20 3c 65  78 74 65 6e 64 65 64 20  |of an <extended |
000acbc0  45 78 70 61 6e 73 69 6f  6e 20 43 61 72 64 20 49  |Expansion Card I|
000acbd0  64 65 6e 74 69 74 79 3d  3e 50 6f 64 75 6c 65 5f  |dentity=>Podule_|
000acbe0  65 45 43 49 64 3e 2e 0a  44 41 54 41 f4 00 00 00  |eECId>..DATA....|
000acbf0  50 6f 64 75 6c 65 5f 52  65 74 75 72 6e 4e 75 6d  |Podule_ReturnNum|
000acc00  62 65 72 20 20 28 26 34  30 32 38 43 29 0a 23 50  |ber  (&4028C).#P|
000acc10  61 72 65 6e 74 20 50 6f  64 75 6c 65 5f 0a 3c 3d  |arent Podule_.<=|
000acc20  09 52 30 20 3d 09 6e 75  6d 62 65 72 20 6f 66 20  |.R0 =.number of |
000acc30  65 78 70 61 6e 73 69 6f  6e 20 63 61 72 64 73 0a  |expansion cards.|
000acc40  09 52 31 20 3d 09 6e 75  6d 62 65 72 20 6f 66 20  |.R1 =.number of |
000acc50  65 78 74 65 6e 73 69 6f  6e 20 52 4f 4d 73 0a 0a  |extension ROMs..|
000acc60  54 68 69 73 20 53 57 49  20 72 65 61 64 73 20 74  |This SWI reads t|
000acc70  68 65 20 6e 75 6d 62 65  72 20 6f 66 20 65 78 70  |he number of exp|
000acc80  61 6e 73 69 6f 6e 20 63  61 72 64 73 20 61 6e 64  |ansion cards and|
000acc90  20 65 78 74 65 6e 73 69  6f 6e 20 52 4f 4d 73 2e  | extension ROMs.|
000acca0  20 42 65 20 70 72 65 70  61 72 65 64 20 66 6f 72  | Be prepared for|
000accb0  20 61 6e 79 20 76 61 6c  75 65 73 20 28 7b 2f 7d  | any values ({/}|
000accc0  65 2e 67 2e 7b 2f 7d 20  30 20 65 78 70 61 6e 73  |e.g.{/} 0 expans|
000accd0  69 6f 6e 20 63 61 72 64  73 29 2e 0a 44 41 54 41  |ion cards)..DATA|
000acce0  68 01 00 00 50 6f 64 75  6c 65 5f 57 72 69 74 65  |h...Podule_Write|
000accf0  42 79 74 65 73 20 20 28  26 34 30 32 38 35 29 0a  |Bytes  (&40285).|
000acd00  23 50 61 72 65 6e 74 20  50 6f 64 75 6c 65 5f 0a  |#Parent Podule_.|
000acd10  3d 3e 09 52 30 20 3d 09  6f 66 66 73 65 74 20 66  |=>.R0 =.offset f|
000acd20  72 6f 6d 20 73 74 61 72  74 20 6f 66 20 63 6f 64  |rom start of cod|
000acd30  65 20 73 70 61 63 65 0a  09 52 31 20 3d 09 6e 75  |e space..R1 =.nu|
000acd40  6d 62 65 72 20 6f 66 20  62 79 74 65 73 0a 09 52  |mber of bytes..R|
000acd50  32 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 62  |2 =.pointer to b|
000acd60  75 66 66 65 72 0a 09 52  33 20 3d 09 65 78 70 61  |uffer..R3 =.expa|
000acd70  6e 73 69 6f 6e 20 63 61  72 64 20 6e 75 6d 62 65  |nsion card numbe|
000acd80  72 0a 0a 54 68 69 73 20  53 57 49 20 77 72 69 74  |r..This SWI writ|
000acd90  65 73 20 62 79 74 65 73  20 74 6f 20 61 6e 20 65  |es bytes to an e|
000acda0  78 70 61 6e 73 69 6f 6e  20 63 61 72 64 27 73 20  |xpansion card's |
000acdb0  63 6f 64 65 20 73 70 61  63 65 2c 20 62 79 20 72  |code space, by r|
000acdc0  65 70 65 61 74 65 64 20  63 61 6c 6c 73 20 74 6f  |epeated calls to|
000acdd0  20 69 74 73 20 3c 6c 6f  61 64 65 72 3d 3e 50 6f  | its <loader=>Po|
000acde0  64 75 6c 65 5f 6c 6f 61  64 65 72 3e 2e 20 41 74  |dule_loader>. At|
000acdf0  74 65 6d 70 74 69 6e 67  20 74 6f 20 77 72 69 74  |tempting to writ|
000ace00  65 20 74 6f 20 61 6e 20  3c 65 78 74 65 6e 73 69  |e to an <extensi|
000ace10  6f 6e 20 52 4f 4d 3d 3e  4f 53 5f 4d 6f 64 75 6c  |on ROM=>OS_Modul|
000ace20  65 52 4f 4d 53 65 63 74  69 6f 6e 73 3e 20 77 69  |eROMSections> wi|
000ace30  6c 6c 20 72 65 74 75 72  6e 20 61 6e 20 65 72 72  |ll return an err|
000ace40  6f 72 2e 0a 44 41 54 41  5f 03 00 00 4f 53 20 53  |or..DATA_...OS S|
000ace50  57 49 73 0a 23 50 61 72  65 6e 74 20 53 74 72 6f  |WIs.#Parent Stro|
000ace60  6e 67 48 65 6c 70 3a 21  4d 65 6e 75 0a 23 50 6f  |ngHelp:!Menu.#Po|
000ace70  73 74 66 69 78 20 5f 0a  23 54 61 62 6c 65 20 43  |stfix _.#Table C|
000ace80  6f 6c 75 6d 6e 73 20 33  0a 3c 41 44 46 53 3e 0a  |olumns 3.<ADFS>.|
000ace90  3c 41 54 41 50 49 3e 0a  3c 42 61 73 69 63 54 72  |<ATAPI>.<BasicTr|
000acea0  61 6e 73 3e 0a 3c 42 75  66 66 65 72 3e 0a 3c 43  |ans>.<Buffer>.<C|
000aceb0  61 63 68 65 3e 0a 3c 43  44 3e 0a 3c 43 44 46 53  |ache>.<CD>.<CDFS|
000acec0  3e 0a 3c 43 6f 6c 6f 75  72 54 72 61 6e 73 3e 0a  |>.<ColourTrans>.|
000aced0  3c 43 6f 6c 6f 75 72 50  69 63 6b 65 72 3d 3e 57  |<ColourPicker=>W|
000acee0  69 6d 70 3a 43 6f 6c 6f  75 72 50 69 63 6b 65 72  |imp:ColourPicker|
000acef0  5f 3e 0a 3c 44 65 62 75  67 67 65 72 3e 0a 3c 44  |_>.<Debugger>.<D|
000acf00  65 76 69 63 65 46 53 3e  0a 3c 44 4d 41 3e 0a 3c  |eviceFS>.<DMA>.<|
000acf10  44 4f 53 46 53 3e 0a 3c  44 72 61 67 41 53 70 72  |DOSFS>.<DragASpr|
000acf20  69 74 65 3d 3e 57 69 6d  70 3a 44 72 61 67 41 53  |ite=>Wimp:DragAS|
000acf30  70 72 69 74 65 5f 3e 0a  3c 44 72 61 77 3e 0a 3c  |prite_>.<Draw>.<|
000acf40  44 72 61 77 46 69 6c 65  3e 0a 3c 45 63 6f 6e 65  |DrawFile>.<Econe|
000acf50  74 3e 0a 3c 46 69 6c 65  43 6f 72 65 3e 0a 3c 46  |t>.<FileCore>.<F|
000acf60  69 6c 65 72 41 63 74 69  6f 6e 3d 3e 57 69 6d 70  |ilerAction=>Wimp|
000acf70  3a 46 69 6c 65 72 41 63  74 69 6f 6e 5f 3e 0a 3c  |:FilerAction_>.<|
000acf80  46 69 6c 74 65 72 3d 3e  57 69 6d 70 3a 46 69 6c  |Filter=>Wimp:Fil|
000acf90  74 65 72 5f 3e 0a 3c 46  6f 6e 74 3e 0a 3c 46 50  |ter_>.<Font>.<FP|
000acfa0  45 6d 75 6c 61 74 6f 72  3e 0a 3c 46 72 65 65 3d  |Emulator>.<Free=|
000acfb0  3e 57 69 6d 70 3a 46 72  65 65 5f 3e 0a 3c 46 53  |>Wimp:Free_>.<FS|
000acfc0  4c 6f 63 6b 3e 0a 3c 48  6f 75 72 67 6c 61 73 73  |Lock>.<Hourglass|
000acfd0  3e 0a 3c 49 49 43 3e 0a  3c 4a 6f 79 73 74 69 63  |>.<IIC>.<Joystic|
000acfe0  6b 3e 0a 3c 4a 50 45 47  3e 0a 3c 4d 61 6b 65 50  |k>.<JPEG>.<MakeP|
000acff0  53 46 6f 6e 74 3e 0a 3c  4d 65 73 73 61 67 65 54  |SFont>.<MessageT|
000ad000  72 61 6e 73 3e 0a 3c 4e  65 74 46 53 3e 0a 3c 4e  |rans>.<NetFS>.<N|
000ad010  65 74 50 72 69 6e 74 3e  0a 3c 4f 53 3e 0a 3c 50  |etPrint>.<OS>.<P|
000ad020  61 72 61 6c 6c 65 6c 3e  0a 3c 50 44 72 69 76 65  |arallel>.<PDrive|
000ad030  72 3e 0a 3c 50 44 75 6d  70 65 72 3e 0a 3c 50 6f  |r>.<PDumper>.<Po|
000ad040  64 75 6c 65 3e 0a 3c 50  6f 72 74 61 62 6c 65 3e  |dule>.<Portable>|
000ad050  0a 3c 52 61 6d 46 53 3e  0a 3c 52 65 73 6f 75 72  |.<RamFS>.<Resour|
000ad060  63 65 46 53 3e 0a 3c 52  65 6d 6f 74 65 50 72 69  |ceFS>.<RemotePri|
000ad070  6e 74 65 72 53 75 70 70  6f 72 74 3e 0a 3c 53 43  |nterSupport>.<SC|
000ad080  53 49 3e 0a 3c 53 63 72  65 65 6e 42 6c 61 6e 6b  |SI>.<ScreenBlank|
000ad090  65 72 3e 0a 3c 53 63 72  65 65 6e 4d 6f 64 65 73  |er>.<ScreenModes|
000ad0a0  3e 0a 3c 53 68 61 72 65  64 43 4c 69 62 72 61 72  |>.<SharedCLibrar|
000ad0b0  79 3e 0a 3c 53 68 65 6c  6c 3e 0a 3c 53 6f 75 6e  |y>.<Shell>.<Soun|
000ad0c0  64 3e 0a 3c 53 71 75 61  73 68 3e 0a 3c 53 75 70  |d>.<Squash>.<Sup|
000ad0d0  65 72 3e 0a 3c 54 61 73  6b 4d 61 6e 61 67 65 72  |er>.<TaskManager|
000ad0e0  3d 3e 57 69 6d 70 3a 54  61 73 6b 4d 61 6e 61 67  |=>Wimp:TaskManag|
000ad0f0  65 72 5f 3e 0a 3c 54 61  73 6b 57 69 6e 64 6f 77  |er_>.<TaskWindow|
000ad100  3d 3e 57 69 6d 70 3a 54  61 73 6b 57 69 6e 64 6f  |=>Wimp:TaskWindo|
000ad110  77 5f 3e 0a 3c 54 65 72  72 69 74 6f 72 79 3e 0a  |w_>.<Territory>.|
000ad120  3c 57 69 6d 70 3d 3e 57  69 6d 70 3a 57 69 6d 70  |<Wimp=>Wimp:Wimp|
000ad130  5f 3e 0a 20 20 20 20 3c  45 72 72 6f 72 20 62 6c  |_>.    <Error bl|
000ad140  6f 63 6b 3d 3e 73 77 69  5f 65 72 72 6f 72 62 6c  |ock=>swi_errorbl|
000ad150  6f 63 6b 3e 0a 23 45 6e  64 54 61 62 6c 65 0a 23  |ock>.#EndTable.#|
000ad160  4c 69 6e 65 0a 3c 43 6f  6e 74 72 69 62 75 74 69  |Line.<Contributi|
000ad170  6f 6e 73 3d 3e 43 6f 6e  74 72 69 62 75 74 69 6f  |ons=>Contributio|
000ad180  6e 73 3e 20 20 20 09 7b  2f 7d 3c 56 65 72 73 69  |ns>   .{/}<Versi|
000ad190  6f 6e 20 33 2e 30 34 3d  3e 61 62 6f 75 74 3e 7b  |on 3.04=>about>{|
000ad1a0  2f 7d 0a 00 44 49 52 24  4c 00 00 00 4c 00 00 00  |/}..DIR$L...L...|
000ad1b0  f0 d1 0a 00 46 fd ff ff  a5 09 81 3b 75 00 00 00  |....F......;u...|
000ad1c0  13 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000ad1d0  68 d2 0a 00 47 ff ff ff  64 d8 fb d6 f0 01 00 00  |h...G...d.......|
000ad1e0  13 00 00 00 00 00 00 00  52 65 61 64 00 00 00 00  |........Read....|
000ad1f0  44 41 54 41 75 00 00 00  4a 6f 79 73 74 69 63 6b  |DATAu...Joystick|
000ad200  0a 23 50 61 72 65 6e 74  20 21 52 6f 6f 74 0a 23  |.#Parent !Root.#|
000ad210  50 72 65 66 69 78 20 4a  6f 79 73 74 69 63 6b 5f  |Prefix Joystick_|
000ad220  0a 3c 52 65 61 64 3e 0a  0a 54 68 69 73 20 69 73  |.<Read>..This is|
000ad230  20 6f 6e 6c 79 20 61 76  61 69 6c 61 62 6c 65 20  | only available |
000ad240  6f 6e 20 6d 61 63 68 69  6e 65 73 20 77 69 74 68  |on machines with|
000ad250  20 74 68 65 20 70 72 6f  70 65 72 20 68 61 72 64  | the proper hard|
000ad260  77 61 72 65 2e 00 00 00  44 41 54 41 f0 01 00 00  |ware....DATA....|
000ad270  4a 6f 79 73 74 69 63 6b  5f 52 65 61 64 20 20 28  |Joystick_Read  (|
000ad280  26 34 33 46 34 30 29 0a  23 50 61 72 65 6e 74 20  |&43F40).#Parent |
000ad290  4a 6f 79 73 74 69 63 6b  5f 0a 3d 3e 09 52 30 20  |Joystick_.=>.R0 |
000ad2a0  3d 09 6a 6f 79 73 74 69  63 6b 20 6e 75 6d 62 65  |=.joystick numbe|
000ad2b0  72 0a 3c 3d 09 52 30 20  3d 09 6a 6f 79 73 74 69  |r.<=.R0 =.joysti|
000ad2c0  63 6b 20 73 74 61 74 65  0a 0a 54 68 69 73 20 53  |ck state..This S|
000ad2d0  57 49 20 72 65 61 64 73  20 74 68 65 20 63 75 72  |WI reads the cur|
000ad2e0  72 65 6e 74 20 73 74 61  74 65 20 6f 66 20 74 68  |rent state of th|
000ad2f0  65 20 6a 6f 79 73 74 69  63 6b 2e 20 54 68 65 20  |e joystick. The |
000ad300  72 65 74 75 72 6e 65 64  20 73 74 61 74 65 20 69  |returned state i|
000ad310  73 20 69 6e 20 74 68 65  20 66 6f 72 6d 20 26 53  |s in the form &S|
000ad320  53 48 48 56 56 2e 0a 0a  7b 2a 7d 41 6e 61 6c 6f  |SHHVV...{*}Analo|
000ad330  67 75 65 20 6a 6f 79 73  74 69 63 6b 73 7b 2a 7d  |gue joysticks{*}|
000ad340  0a 23 54 61 62 0a 42 79  74 65 09 56 61 6c 75 65  |.#Tab.Byte.Value|
000ad350  0a 23 4c 69 6e 65 0a 30  09 53 69 67 6e 65 64 20  |.#Line.0.Signed |
000ad360  59 20 76 61 6c 75 65 20  69 6e 20 74 68 65 20 72  |Y value in the r|
000ad370  61 6e 67 65 20 2d 31 32  37 20 74 6f 20 31 32 37  |ange -127 to 127|
000ad380  0a 31 09 53 69 67 6e 65  64 20 58 20 76 61 6c 75  |.1.Signed X valu|
000ad390  65 20 69 6e 20 74 68 65  20 72 61 6e 67 65 20 2d  |e in the range -|
000ad3a0  31 32 37 20 74 6f 20 31  32 37 0a 32 09 53 77 69  |127 to 127.2.Swi|
000ad3b0  74 63 68 65 73 20 28 65  67 20 66 69 72 65 20 62  |tches (eg fire b|
000ad3c0  75 74 74 6f 6e 73 29 2c  20 75 6e 69 6d 70 6c 65  |uttons), unimple|
000ad3d0  6d 65 6e 74 65 64 20 73  77 69 74 63 68 65 73 20  |mented switches |
000ad3e0  72 65 74 75 72 6e 20 30  0a 33 09 72 65 73 65 72  |return 0.3.reser|
000ad3f0  76 65 64 0a 0a 7b 2a 7d  44 69 67 69 74 61 6c 20  |ved..{*}Digital |
000ad400  6a 6f 79 73 74 69 63 6b  73 7b 2a 7d 0a 23 54 61  |joysticks{*}.#Ta|
000ad410  62 0a 56 61 6c 75 65 09  4d 65 61 6e 69 6e 67 0a  |b.Value.Meaning.|
000ad420  23 4c 69 6e 65 0a 26 34  30 09 75 70 0a 26 43 30  |#Line.&40.up.&C0|
000ad430  09 64 6f 77 6e 0a 26 34  30 30 30 09 72 69 67 68  |.down.&4000.righ|
000ad440  74 0a 26 43 30 30 30 09  6c 65 66 74 0a 26 31 30  |t.&C000.left.&10|
000ad450  30 30 30 09 66 69 72 65  44 49 52 24 d4 01 00 00  |000.fireDIR$....|
000ad460  d4 01 00 00 2c d6 0a 00  46 fd ff ff a7 4d 56 f5  |....,...F....MV.|
000ad470  f4 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
000ad480  74 00 00 00 20 d7 0a 00  47 ff ff ff 87 4c b0 cd  |t... ...G....L..|
000ad490  6c 02 00 00 13 00 00 00  00 00 00 00 49 6e 66 6f  |l...........Info|
000ad4a0  00 00 00 00 8c d9 0a 00  47 ff ff ff 54 52 b0 cd  |........G...TR..|
000ad4b0  c9 02 00 00 13 00 00 00  00 00 00 00 46 69 6c 65  |............File|
000ad4c0  49 6e 66 6f 00 00 00 00  58 dc 0a 00 47 ff ff ff  |Info....X...G...|
000ad4d0  48 6e d7 07 05 04 00 00  13 00 00 00 00 00 00 00  |Hn..............|
000ad4e0  50 6c 6f 74 53 63 61 6c  65 64 00 00 60 e0 0a 00  |PlotScaled..`...|
000ad4f0  47 ff ff ff b3 a2 86 1b  cb 01 00 00 13 00 00 00  |G...............|
000ad500  00 00 00 00 50 6c 6f 74  46 69 6c 65 53 63 61 6c  |....PlotFileScal|
000ad510  65 64 00 00 2c e2 0a 00  48 ff ff ff 96 f0 b0 26  |ed..,...H......&|
000ad520  16 02 00 00 13 00 00 00  00 00 00 00 70 6c 6f 74  |............plot|
000ad530  74 72 61 6e 73 66 6f 72  6d 65 64 00 44 e4 0a 00  |transformed.D...|
000ad540  48 ff ff ff bb d2 d5 10  33 02 00 00 13 00 00 00  |H.......3.......|
000ad550  00 00 00 00 50 6c 6f 74  46 69 6c 65 54 72 61 6e  |....PlotFileTran|
000ad560  73 66 6f 72 6d 65 64 00  78 e6 0a 00 46 ff ff ff  |sformed.x...F...|
000ad570  86 06 0f fb 0f 02 00 00  13 00 00 00 00 00 00 00  |................|
000ad580  70 64 72 69 76 65 72 69  6e 74 65 72 63 65 70 74  |pdriverintercept|
000ad590  00 00 00 00 88 e8 0a 00  46 fd ff ff f6 ed 1f a5  |........F.......|
000ad5a0  69 00 00 00 13 00 00 00  00 00 00 00 69 6e 66 6f  |i...........info|
000ad5b0  5f 6f 70 66 6c 61 67 73  00 00 00 00 f4 e8 0a 00  |_opflags........|
000ad5c0  46 fd ff ff 75 c0 1f a5  ce 00 00 00 13 00 00 00  |F...u...........|
000ad5d0  00 00 00 00 70 6c 6f 74  66 6c 61 67 73 00 00 00  |....plotflags...|
000ad5e0  c4 e9 0a 00 47 fd ff ff  34 11 be cd 13 01 00 00  |....G...4.......|
000ad5f0  13 00 00 00 00 00 00 00  74 72 61 6e 73 66 6c 61  |........transfla|
000ad600  67 73 00 00 d8 ea 0a 00  46 fd ff ff 8d 26 20 a5  |gs......F....& .|
000ad610  c8 00 00 00 13 00 00 00  00 00 00 00 69 6e 66 6f  |............info|
000ad620  5f 69 6e 66 6f 66 6c 61  67 73 00 00 44 41 54 41  |_infoflags..DATA|
000ad630  f4 00 00 00 4a 50 45 47  0a 23 50 61 72 65 6e 74  |....JPEG.#Parent|
000ad640  20 21 52 6f 6f 74 0a 23  50 72 65 66 69 78 20 4a  | !Root.#Prefix J|
000ad650  50 45 47 5f 0a 23 54 61  62 6c 65 20 43 6f 6c 75  |PEG_.#Table Colu|
000ad660  6d 6e 73 20 32 0a 3c 49  6e 66 6f 3e 0a 3c 46 69  |mns 2.<Info>.<Fi|
000ad670  6c 65 49 6e 66 6f 3e 0a  3c 50 6c 6f 74 53 63 61  |leInfo>.<PlotSca|
000ad680  6c 65 64 3e 0a 3c 50 6c  6f 74 46 69 6c 65 53 63  |led>.<PlotFileSc|
000ad690  61 6c 65 64 3e 0a 3c 50  6c 6f 74 54 72 61 6e 73  |aled>.<PlotTrans|
000ad6a0  66 6f 72 6d 65 64 3e 0a  3c 50 6c 6f 74 46 69 6c  |formed>.<PlotFil|
000ad6b0  65 54 72 61 6e 73 66 6f  72 6d 65 64 3e 0a 3c 50  |eTransformed>.<P|
000ad6c0  44 72 69 76 65 72 49 6e  74 65 72 63 65 70 74 3e  |DriverIntercept>|
000ad6d0  0a 23 45 6e 64 54 61 62  6c 65 0a 0a 54 68 65 73  |.#EndTable..Thes|
000ad6e0  65 20 63 61 6c 6c 73 20  61 72 65 20 6f 6e 6c 79  |e calls are only|
000ad6f0  20 61 76 61 69 6c 61 62  6c 65 20 77 68 65 6e 20  | available when |
000ad700  53 70 72 69 74 65 45 78  74 65 6e 64 20 30 2e 39  |SpriteExtend 0.9|
000ad710  39 20 69 73 20 69 6e 73  74 61 6c 6c 65 64 2e 0a  |9 is installed..|
000ad720  44 41 54 41 6c 02 00 00  4a 50 45 47 5f 49 6e 66  |DATAl...JPEG_Inf|
000ad730  6f 20 20 28 26 34 39 39  38 30 29 0a 23 50 61 72  |o  (&49980).#Par|
000ad740  65 6e 74 20 4a 50 45 47  5f 0a 3d 3e 09 52 30 20  |ent JPEG_.=>.R0 |
000ad750  3d 09 3c 6f 70 65 72 61  74 69 6f 6e 20 66 6c 61  |=.<operation fla|
000ad760  67 73 3d 3e 4a 50 45 47  5f 69 6e 66 6f 5f 6f 70  |gs=>JPEG_info_op|
000ad770  66 6c 61 67 73 3e 0a 09  52 31 20 3d 09 70 6f 69  |flags>..R1 =.poi|
000ad780  6e 74 65 72 20 74 6f 20  4a 50 45 47 0a 09 52 32  |nter to JPEG..R2|
000ad790  20 3d 09 6c 65 6e 67 74  68 20 6f 66 20 69 6d 61  | =.length of ima|
000ad7a0  67 65 0a 09 0a 3c 3d 09  52 30 20 3d 09 3c 69 6e  |ge...<=.R0 =.<in|
000ad7b0  66 6f 20 66 6c 61 67 73  3d 3e 4a 50 45 47 5f 69  |fo flags=>JPEG_i|
000ad7c0  6e 66 6f 5f 69 6e 66 6f  66 6c 61 67 73 3e 0a 09  |nfo_infoflags>..|
000ad7d0  52 32 20 3d 09 77 69 64  74 68 20 28 69 6e 20 70  |R2 =.width (in p|
000ad7e0  69 78 65 6c 73 29 0a 09  52 33 20 3d 09 68 65 69  |ixels)..R3 =.hei|
000ad7f0  67 68 74 20 28 69 6e 20  70 69 78 65 6c 73 29 0a  |ght (in pixels).|
000ad800  09 52 34 20 3d 09 78 20  70 69 78 65 6c 20 64 65  |.R4 =.x pixel de|
000ad810  6e 73 69 74 79 0a 09 52  35 20 3d 09 79 20 70 69  |nsity..R5 =.y pi|
000ad820  78 65 6c 20 64 65 6e 73  69 74 79 0a 09 52 36 20  |xel density..R6 |
000ad830  3d 09 77 6f 72 6b 73 70  61 63 65 20 74 68 61 74  |=.workspace that|
000ad840  20 77 6f 75 6c 64 20 62  65 20 72 65 71 75 69 72  | would be requir|
000ad850  65 64 20 74 6f 20 70 6c  6f 74 20 28 30 3d 6e 6f  |ed to plot (0=no|
000ad860  6e 65 29 0a 0a 54 68 69  73 20 53 57 49 20 72 65  |ne)..This SWI re|
000ad870  74 75 72 6e 73 20 69 6e  66 6f 72 6d 61 74 69 6f  |turns informatio|
000ad880  6e 20 61 62 6f 75 74 20  61 20 4a 50 45 47 20 68  |n about a JPEG h|
000ad890  65 6c 64 20 69 6e 20 61  20 62 75 66 66 65 72 20  |eld in a buffer |
000ad8a0  69 6e 20 6d 65 6d 6f 72  79 2e 20 49 74 20 63 68  |in memory. It ch|
000ad8b0  65 63 6b 73 20 74 68 65  20 68 65 61 64 65 72 20  |ecks the header |
000ad8c0  65 6e 6f 75 67 68 20 74  6f 20 72 65 74 75 72 6e  |enough to return|
000ad8d0  20 74 68 65 20 77 69 64  74 68 20 61 6e 64 20 68  | the width and h|
000ad8e0  65 69 67 68 74 2c 20 61  6e 64 20 64 6f 65 73 20  |eight, and does |
000ad8f0  61 20 70 61 72 74 69 61  6c 20 76 61 6c 69 64 61  |a partial valida|
000ad900  74 69 6f 6e 20 6f 66 20  74 68 65 20 64 61 74 61  |tion of the data|
000ad910  2e 20 20 49 74 20 72 65  74 75 72 6e 73 20 61 6e  |.  It returns an|
000ad920  20 65 72 72 6f 72 20 69  66 20 74 68 65 20 69 6d  | error if the im|
000ad930  61 67 65 20 61 70 70 65  61 72 73 20 74 6f 20 62  |age appears to b|
000ad940  65 20 69 6e 76 61 6c 69  64 3b 20 69 66 20 6e 6f  |e invalid; if no|
000ad950  20 65 72 72 6f 72 20 69  73 20 72 65 74 75 72 6e  | error is return|
000ad960  65 64 20 79 6f 75 20 6d  61 79 20 61 73 73 75 6d  |ed you may assum|
000ad970  65 20 74 68 65 20 64 61  74 61 20 69 73 20 61 20  |e the data is a |
000ad980  4a 50 45 47 20 69 6d 61  67 65 2e 0a 44 41 54 41  |JPEG image..DATA|
000ad990  c9 02 00 00 4a 50 45 47  5f 46 69 6c 65 49 6e 66  |....JPEG_FileInf|
000ad9a0  6f 20 20 28 26 34 39 39  38 31 29 0a 23 50 61 72  |o  (&49981).#Par|
000ad9b0  65 6e 74 20 4a 50 45 47  5f 0a 3d 3e 09 52 30 20  |ent JPEG_.=>.R0 |
000ad9c0  3d 09 3c 6f 70 65 72 61  74 69 6f 6e 20 66 6c 61  |=.<operation fla|
000ad9d0  67 73 3d 3e 4a 50 45 47  5f 69 6e 66 6f 5f 6f 70  |gs=>JPEG_info_op|
000ad9e0  66 6c 61 67 73 3e 0a 09  52 31 20 3d 09 70 6f 69  |flags>..R1 =.poi|
000ad9f0  6e 74 65 72 20 74 6f 20  4a 50 45 47 20 66 69 6c  |nter to JPEG fil|
000ada00  65 20 6e 61 6d 65 0a 09  0a 3c 3d 09 52 30 20 3d  |e name...<=.R0 =|
000ada10  09 3c 69 6e 66 6f 20 66  6c 61 67 73 3d 3e 4a 50  |.<info flags=>JP|
000ada20  45 47 5f 69 6e 66 6f 5f  69 6e 66 6f 66 6c 61 67  |EG_info_infoflag|
000ada30  73 3e 0a 09 52 32 20 3d  09 77 69 64 74 68 20 28  |s>..R2 =.width (|
000ada40  69 6e 20 70 69 78 65 6c  73 29 0a 09 52 33 20 3d  |in pixels)..R3 =|
000ada50  09 68 65 69 67 68 74 20  28 69 6e 20 70 69 78 65  |.height (in pixe|
000ada60  6c 73 29 0a 09 52 34 20  3d 09 78 20 70 69 78 65  |ls)..R4 =.x pixe|
000ada70  6c 20 64 65 6e 73 69 74  79 0a 09 52 35 20 3d 09  |l density..R5 =.|
000ada80  79 20 70 69 78 65 6c 20  64 65 6e 73 69 74 79 0a  |y pixel density.|
000ada90  09 52 36 20 3d 09 77 6f  72 6b 73 70 61 63 65 20  |.R6 =.workspace |
000adaa0  74 68 61 74 20 77 6f 75  6c 64 20 62 65 20 72 65  |that would be re|
000adab0  71 75 69 72 65 64 20 74  6f 20 70 6c 6f 74 20 28  |quired to plot (|
000adac0  30 3d 6e 6f 6e 65 29 0a  0a 54 68 69 73 20 53 57  |0=none)..This SW|
000adad0  49 20 72 65 74 75 72 6e  73 20 69 6e 66 6f 72 6d  |I returns inform|
000adae0  61 74 69 6f 6e 20 61 62  6f 75 74 20 61 20 4a 50  |ation about a JP|
000adaf0  45 47 20 68 65 6c 64 20  69 6e 20 61 20 66 69 6c  |EG held in a fil|
000adb00  65 2e 20 49 74 20 63 68  65 63 6b 73 20 74 68 65  |e. It checks the|
000adb10  20 68 65 61 64 65 72 20  65 6e 6f 75 67 68 20 74  | header enough t|
000adb20  6f 20 72 65 74 75 72 6e  20 74 68 65 20 77 69 64  |o return the wid|
000adb30  74 68 20 61 6e 64 20 68  65 69 67 68 74 2c 20 61  |th and height, a|
000adb40  6e 64 20 64 6f 65 73 20  61 20 70 61 72 74 69 61  |nd does a partia|
000adb50  6c 20 76 61 6c 69 64 61  74 69 6f 6e 20 6f 66 20  |l validation of |
000adb60  74 68 65 20 64 61 74 61  2e 20 20 49 74 20 72 65  |the data.  It re|
000adb70  74 75 72 6e 73 20 61 6e  20 65 72 72 6f 72 20 69  |turns an error i|
000adb80  66 20 74 68 65 20 69 6d  61 67 65 20 61 70 70 65  |f the image appe|
000adb90  61 72 73 20 74 6f 20 62  65 20 69 6e 76 61 6c 69  |ars to be invali|
000adba0  64 3b 20 69 66 20 6e 6f  20 65 72 72 6f 72 20 69  |d; if no error i|
000adbb0  73 20 72 65 74 75 72 6e  65 64 20 79 6f 75 20 6d  |s returned you m|
000adbc0  61 79 20 61 73 73 75 6d  65 20 74 68 65 20 64 61  |ay assume the da|
000adbd0  74 61 20 69 73 20 61 20  4a 50 45 47 20 69 6d 61  |ta is a JPEG ima|
000adbe0  67 65 2e 0a 0a 49 74 20  69 73 20 70 72 65 66 65  |ge...It is prefe|
000adbf0  72 61 62 6c 65 20 74 6f  20 6c 6f 61 64 20 74 68  |rable to load th|
000adc00  65 20 66 69 6c 65 20 69  6e 74 6f 20 6d 65 6d 6f  |e file into memo|
000adc10  72 79 20 61 6e 64 20 63  61 6c 6c 20 3c 4a 50 45  |ry and call <JPE|
000adc20  47 5f 49 6e 66 6f 3e 2c  20 69 66 20 79 6f 75 20  |G_Info>, if you |
000adc30  69 6e 74 65 6e 64 20 74  6f 20 64 69 73 70 6c 61  |intend to displa|
000adc40  79 20 74 68 65 20 69 6d  61 67 65 20 61 73 20 77  |y the image as w|
000adc50  65 6c 6c 2e 0a 00 00 00  44 41 54 41 05 04 00 00  |ell.....DATA....|
000adc60  4a 50 45 47 5f 50 6c 6f  74 53 63 61 6c 65 64 20  |JPEG_PlotScaled |
000adc70  20 28 26 34 39 39 38 32  29 0a 23 50 61 72 65 6e  | (&49982).#Paren|
000adc80  74 20 4a 50 45 47 5f 0a  3d 3e 09 52 30 20 3d 09  |t JPEG_.=>.R0 =.|
000adc90  70 6f 69 6e 74 65 72 20  74 6f 20 4a 50 45 47 0a  |pointer to JPEG.|
000adca0  09 52 31 20 3d 09 78 20  63 6f 6f 72 64 69 6e 61  |.R1 =.x coordina|
000adcb0  74 65 20 61 74 20 77 68  69 63 68 20 74 6f 20 70  |te at which to p|
000adcc0  6c 6f 74 0a 09 52 32 20  3d 09 79 20 63 6f 6f 72  |lot..R2 =.y coor|
000adcd0  64 69 6e 61 74 65 20 61  74 20 77 68 69 63 68 20  |dinate at which |
000adce0  74 6f 20 70 6c 6f 74 0a  09 52 33 20 3d 09 3c 73  |to plot..R3 =.<s|
000adcf0  63 61 6c 65 20 66 61 63  74 6f 72 73 3d 3e 6f 73  |cale factors=>os|
000add00  5f 73 63 61 6c 65 66 61  63 74 6f 72 73 3e 2c 20  |_scalefactors>, |
000add10  6f 72 20 30 20 66 6f 72  20 31 3a 31 20 73 63 61  |or 0 for 1:1 sca|
000add20  6c 69 6e 67 0a 09 52 34  20 3d 09 6c 65 6e 67 74  |ling..R4 =.lengt|
000add30  68 20 6f 66 20 69 6d 61  67 65 0a 09 52 35 20 3d  |h of image..R5 =|
000add40  09 3c 70 6c 6f 74 74 69  6e 67 20 66 6c 61 67 73  |.<plotting flags|
000add50  3d 3e 4a 50 45 47 5f 70  6c 6f 74 66 6c 61 67 73  |=>JPEG_plotflags|
000add60  3e 0a 0a 54 68 69 73 20  53 57 49 20 64 65 63 6f  |>..This SWI deco|
000add70  6d 70 72 65 73 73 65 73  2c 20 73 63 61 6c 65 73  |mpresses, scales|
000add80  20 61 6e 64 20 70 6c 6f  74 73 20 6f 6e 20 74 68  | and plots on th|
000add90  65 20 73 63 72 65 65 6e  20 61 20 4a 50 45 47 20  |e screen a JPEG |
000adda0  69 6d 61 67 65 20 68 65  6c 64 20 69 6e 20 61 20  |image held in a |
000addb0  62 75 66 66 65 72 2e 0a  0a 54 68 69 73 20 69 73  |buffer...This is|
000addc0  20 73 69 6d 69 6c 61 72  20 74 6f 20 3c 4f 53 5f  | similar to <OS_|
000addd0  53 70 72 69 74 65 4f 70  20 35 32 3d 3e 4f 53 5f  |SpriteOp 52=>OS_|
000adde0  53 70 72 69 74 65 4f 70  5f 35 32 3e 20 66 6f 72  |SpriteOp_52> for|
000addf0  20 73 70 72 69 74 65 73  20 69 6e 20 74 68 61 74  | sprites in that|
000ade00  20 74 68 65 20 73 63 61  6c 65 20 66 61 63 74 6f  | the scale facto|
000ade10  72 73 20 61 6e 64 20 74  68 65 20 63 6f 6f 72 64  |rs and the coord|
000ade20  69 6e 61 74 65 73 20 68  61 76 65 20 65 78 61 63  |inates have exac|
000ade30  74 6c 79 20 74 68 65 20  73 61 6d 65 20 6d 65 61  |tly the same mea|
000ade40  6e 69 6e 67 2e 20 48 6f  77 65 76 65 72 2c 20 74  |ning. However, t|
000ade50  68 69 73 20 63 61 6c 6c  20 6f 6e 6c 79 20 73 75  |his call only su|
000ade60  70 70 6f 72 74 73 20 61  20 64 69 72 65 63 74 20  |pports a direct |
000ade70  70 6c 6f 74 2e 0a 0a 49  6e 20 70 6c 6f 74 74 69  |plot...In plotti|
000ade80  6e 67 20 74 68 65 20 4a  50 45 47 2c 20 74 68 65  |ng the JPEG, the|
000ade90  20 53 70 72 69 74 65 45  78 74 65 6e 64 20 6d 6f  | SpriteExtend mo|
000adea0  64 75 6c 65 20 6d 61 79  20 63 6c 61 69 6d 20 65  |dule may claim e|
000adeb0  78 74 72 61 20 77 6f 72  6b 73 70 61 63 65 20 69  |xtra workspace i|
000adec0  6e 20 61 20 64 79 6e 61  6d 69 63 20 61 72 65 61  |n a dynamic area|
000aded0  20 74 6f 20 73 74 6f 72  65 20 74 61 62 6c 65 73  | to store tables|
000adee0  20 65 74 63 2e 20 20 49  74 20 6b 65 65 70 73 20  | etc.  It keeps |
000adef0  74 68 65 73 65 20 63 61  63 68 65 64 20 75 6e 74  |these cached unt|
000adf00  69 6c 20 65 69 74 68 65  72 20 69 74 20 69 73 20  |il either it is |
000adf10  61 73 6b 65 64 20 74 6f  20 70 6c 6f 74 20 61 20  |asked to plot a |
000adf20  64 69 66 66 65 72 65 6e  74 20 4a 50 45 47 2c 20  |different JPEG, |
000adf30  6f 72 20 74 68 65 20 75  73 65 72 20 64 65 63 72  |or the user decr|
000adf40  65 61 73 65 73 20 74 68  65 20 64 79 6e 61 6d 69  |eases the dynami|
000adf50  63 20 61 72 65 61 27 73  20 73 69 7a 65 2e 20 54  |c area's size. T|
000adf60  68 69 73 20 73 70 65 65  64 73 20 75 70 20 73 75  |his speeds up su|
000adf70  63 63 65 73 73 69 76 65  20 72 65 70 6c 6f 74 73  |ccessive replots|
000adf80  20 6f 66 20 74 68 65 20  73 61 6d 65 20 4a 50 45  | of the same JPE|
000adf90  47 2e 20 59 6f 75 20 63  61 6e 20 66 69 6e 64 20  |G. You can find |
000adfa0  6f 75 74 20 68 6f 77 20  6d 75 63 68 20 65 78 74  |out how much ext|
000adfb0  72 61 20 77 6f 72 6b 73  70 61 63 65 20 53 70 72  |ra workspace Spr|
000adfc0  69 74 65 45 78 74 65 6e  64 20 77 69 6c 6c 20 72  |iteExtend will r|
000adfd0  65 71 75 69 72 65 20 2d  20 69 66 20 61 6e 79 20  |equire - if any |
000adfe0  2d 20 62 79 20 66 69 72  73 74 20 63 61 6c 6c 69  |- by first calli|
000adff0  6e 67 20 3c 4a 50 45 47  5f 49 6e 66 6f 3e 20 6f  |ng <JPEG_Info> o|
000ae000  72 20 3c 4a 50 45 47 5f  46 69 6c 65 49 6e 66 6f  |r <JPEG_FileInfo|
000ae010  3e 2c 20 61 6e 64 20 68  65 6e 63 65 20 65 6e 73  |>, and hence ens|
000ae020  75 72 65 20 74 68 65 72  65 20 69 73 20 73 75 66  |ure there is suf|
000ae030  66 69 63 69 65 6e 74 20  66 72 65 65 20 6d 65 6d  |ficient free mem|
000ae040  6f 72 79 20 62 65 66 6f  72 65 20 6d 61 6b 69 6e  |ory before makin|
000ae050  67 20 74 68 69 73 20 63  61 6c 6c 2e 0a 00 00 00  |g this call.....|
000ae060  44 41 54 41 cb 01 00 00  4a 50 45 47 5f 50 6c 6f  |DATA....JPEG_Plo|
000ae070  74 46 69 6c 65 53 63 61  6c 65 64 20 20 28 26 34  |tFileScaled  (&4|
000ae080  39 39 38 33 29 0a 23 50  61 72 65 6e 74 20 4a 50  |9983).#Parent JP|
000ae090  45 47 5f 0a 3d 3e 09 52  30 20 3d 09 70 6f 69 6e  |EG_.=>.R0 =.poin|
000ae0a0  74 65 72 20 74 6f 20 66  69 6c 65 6e 61 6d 65 20  |ter to filename |
000ae0b0  6f 66 20 4a 50 45 47 20  66 69 6c 65 0a 09 52 31  |of JPEG file..R1|
000ae0c0  20 3d 09 78 20 63 6f 6f  72 64 69 6e 61 74 65 20  | =.x coordinate |
000ae0d0  61 74 20 77 68 69 63 68  20 74 6f 20 70 6c 6f 74  |at which to plot|
000ae0e0  0a 09 52 32 20 3d 09 79  20 63 6f 6f 72 64 69 6e  |..R2 =.y coordin|
000ae0f0  61 74 65 20 61 74 20 77  68 69 63 68 20 74 6f 20  |ate at which to |
000ae100  70 6c 6f 74 0a 09 52 33  20 3d 09 3c 73 63 61 6c  |plot..R3 =.<scal|
000ae110  65 20 66 61 63 74 6f 72  73 3d 3e 6f 73 5f 73 63  |e factors=>os_sc|
000ae120  61 6c 65 66 61 63 74 6f  72 73 3e 2c 20 6f 72 20  |alefactors>, or |
000ae130  30 20 66 6f 72 20 31 3a  31 20 73 63 61 6c 69 6e  |0 for 1:1 scalin|
000ae140  67 0a 09 52 34 20 3d 09  3c 70 6c 6f 74 74 69 6e  |g..R4 =.<plottin|
000ae150  67 20 66 6c 61 67 73 3d  3e 4a 50 45 47 5f 70 6c  |g flags=>JPEG_pl|
000ae160  6f 74 66 6c 61 67 73 3e  0a 0a 54 68 69 73 20 53  |otflags>..This S|
000ae170  57 49 20 64 65 63 6f 6d  70 72 65 73 73 65 73 2c  |WI decompresses,|
000ae180  20 73 63 61 6c 65 73 20  61 6e 64 20 70 6c 6f 74  | scales and plot|
000ae190  73 20 6f 6e 20 74 68 65  20 73 63 72 65 65 6e 20  |s on the screen |
000ae1a0  61 20 4a 50 45 47 20 69  6d 61 67 65 20 68 65 6c  |a JPEG image hel|
000ae1b0  64 20 69 6e 20 61 20 66  69 6c 65 2e 20 54 68 69  |d in a file. Thi|
000ae1c0  73 20 69 73 20 69 64 65  6e 74 69 63 61 6c 20 74  |s is identical t|
000ae1d0  6f 20 74 68 65 20 3c 4a  50 45 47 5f 50 6c 6f 74  |o the <JPEG_Plot|
000ae1e0  53 63 61 6c 65 64 3e 20  63 61 6c 6c 2c 20 65 78  |Scaled> call, ex|
000ae1f0  63 65 70 74 20 74 68 61  74 20 6d 65 6d 6f 72 79  |cept that memory|
000ae200  20 69 73 20 63 6c 61 69  6d 65 64 20 69 6e 20 61  | is claimed in a|
000ae210  20 44 79 6e 61 6d 69 63  20 41 72 65 61 20 66 6f  | Dynamic Area fo|
000ae220  72 20 74 68 65 20 66 69  6c 65 2e 00 44 41 54 41  |r the file..DATA|
000ae230  16 02 00 00 4a 50 45 47  5f 50 6c 6f 74 54 72 61  |....JPEG_PlotTra|
000ae240  6e 73 66 6f 72 6d 65 64  20 20 28 26 34 39 39 38  |nsformed  (&4998|
000ae250  34 29 0a 23 50 61 72 65  6e 74 20 4a 50 45 47 5f  |4).#Parent JPEG_|
000ae260  0a 3d 3e 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |.=>.R0 =.pointer|
000ae270  20 74 6f 20 4a 50 45 47  0a 09 52 31 20 3d 09 3c  | to JPEG..R1 =.<|
000ae280  74 72 61 6e 73 66 6f 72  6d 61 74 69 6f 6e 20 66  |transformation f|
000ae290  6c 61 67 73 3d 3e 4a 50  45 47 5f 74 72 61 6e 73  |lags=>JPEG_trans|
000ae2a0  66 6c 61 67 73 3e 0a 09  52 32 20 3d 09 70 6f 69  |flags>..R2 =.poi|
000ae2b0  6e 74 65 72 20 74 6f 20  64 65 73 74 69 6e 61 74  |nter to destinat|
000ae2c0  69 6f 6e 20 63 6f 6f 72  64 69 6e 61 74 65 20 62  |ion coordinate b|
000ae2d0  6c 6f 63 6b 2c 20 6f 72  20 3c 74 72 61 6e 73 66  |lock, or <transf|
000ae2e0  6f 72 6d 61 74 69 6f 6e  20 6d 61 74 72 69 78 3d  |ormation matrix=|
000ae2f0  3e 64 72 61 77 5f 74 72  61 6e 73 66 6f 72 6d 3e  |>draw_transform>|
000ae300  0a 09 52 33 20 3d 09 6c  65 6e 67 74 68 20 6f 66  |..R3 =.length of|
000ae310  20 69 6d 61 67 65 0a 0a  54 68 69 73 20 53 57 49  | image..This SWI|
000ae320  20 64 65 63 6f 6d 70 72  65 73 73 65 73 2c 20 74  | decompresses, t|
000ae330  72 61 6e 73 66 6f 72 6d  73 2c 20 61 6e 64 20 70  |ransforms, and p|
000ae340  6c 6f 74 73 20 6f 6e 20  74 68 65 20 73 63 72 65  |lots on the scre|
000ae350  65 6e 20 61 20 4a 50 45  47 20 69 6d 61 67 65 20  |en a JPEG image |
000ae360  68 65 6c 64 20 69 6e 20  6d 65 6d 6f 72 79 2e 0a  |held in memory..|
000ae370  0a 54 68 69 73 20 63 61  6c 6c 20 69 73 20 73 69  |.This call is si|
000ae380  6d 69 6c 61 72 20 74 6f  20 3c 4f 53 5f 53 70 72  |milar to <OS_Spr|
000ae390  69 74 65 4f 70 20 35 36  3d 3e 4f 53 5f 53 70 72  |iteOp 56=>OS_Spr|
000ae3a0  69 74 65 4f 70 5f 35 36  3e 2c 20 69 6e 20 74 68  |iteOp_56>, in th|
000ae3b0  61 74 20 74 68 65 20 64  65 73 74 69 6e 61 74 69  |at the destinati|
000ae3c0  6f 6e 20 63 6f 6f 72 64  69 6e 61 74 65 20 62 6c  |on coordinate bl|
000ae3d0  6f 63 6b 20 61 6e 64 20  74 68 65 20 74 72 61 6e  |ock and the tran|
000ae3e0  73 66 6f 72 6d 61 74 69  6f 6e 20 6d 61 74 72 69  |sformation matri|
000ae3f0  78 20 68 61 76 65 20 65  78 61 63 74 6c 79 20 74  |x have exactly t|
000ae400  68 65 20 73 61 6d 65 20  6d 65 61 6e 69 6e 67 2e  |he same meaning.|
000ae410  20 20 48 6f 77 65 76 65  72 2c 20 74 68 69 73 20  |  However, this |
000ae420  63 61 6c 6c 20 6f 6e 6c  79 20 73 75 70 70 6f 72  |call only suppor|
000ae430  74 73 20 61 20 64 69 72  65 63 74 20 70 6c 6f 74  |ts a direct plot|
000ae440  2e 0a 00 00 44 41 54 41  33 02 00 00 4a 50 45 47  |....DATA3...JPEG|
000ae450  5f 50 6c 6f 74 46 69 6c  65 54 72 61 6e 73 66 6f  |_PlotFileTransfo|
000ae460  72 6d 65 64 20 20 28 26  34 39 39 38 35 29 0a 23  |rmed  (&49985).#|
000ae470  50 61 72 65 6e 74 20 4a  50 45 47 5f 0a 3d 3e 09  |Parent JPEG_.=>.|
000ae480  52 30 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R0 =.pointer to |
000ae490  66 69 6c 65 6e 61 6d 65  20 6f 66 20 4a 50 45 47  |filename of JPEG|
000ae4a0  20 66 69 6c 65 0a 09 52  31 20 3d 09 3c 74 72 61  | file..R1 =.<tra|
000ae4b0  6e 73 66 6f 72 6d 61 74  69 6f 6e 20 66 6c 61 67  |nsformation flag|
000ae4c0  73 3d 3e 4a 50 45 47 5f  74 72 61 6e 73 66 6c 61  |s=>JPEG_transfla|
000ae4d0  67 73 3e 0a 09 52 32 20  3d 09 70 6f 69 6e 74 65  |gs>..R2 =.pointe|
000ae4e0  72 20 74 6f 20 64 65 73  74 69 6e 61 74 69 6f 6e  |r to destination|
000ae4f0  20 63 6f 6f 72 64 69 6e  61 74 65 20 62 6c 6f 63  | coordinate bloc|
000ae500  6b 2c 20 6f 72 20 3c 74  72 61 6e 73 66 6f 72 6d  |k, or <transform|
000ae510  61 74 69 6f 6e 20 6d 61  74 72 69 78 3d 3e 64 72  |ation matrix=>dr|
000ae520  61 77 5f 74 72 61 6e 73  66 6f 72 6d 3e 0a 09 52  |aw_transform>..R|
000ae530  33 20 3d 09 6c 65 6e 67  74 68 20 6f 66 20 69 6d  |3 =.length of im|
000ae540  61 67 65 0a 0a 54 68 69  73 20 53 57 49 20 64 65  |age..This SWI de|
000ae550  63 6f 6d 70 72 65 73 73  65 73 2c 20 74 72 61 6e  |compresses, tran|
000ae560  73 66 6f 72 6d 73 2c 20  61 6e 64 20 70 6c 6f 74  |sforms, and plot|
000ae570  73 20 6f 6e 20 74 68 65  20 73 63 72 65 65 6e 20  |s on the screen |
000ae580  61 20 4a 50 45 47 20 69  6d 61 67 65 20 68 65 6c  |a JPEG image hel|
000ae590  64 20 69 6e 20 61 20 66  69 6c 65 2e 20 54 68 69  |d in a file. Thi|
000ae5a0  73 20 63 61 6c 6c 20 69  73 20 74 68 65 20 73 61  |s call is the sa|
000ae5b0  6d 65 20 61 73 20 3c 4a  50 45 47 5f 50 6c 6f 74  |me as <JPEG_Plot|
000ae5c0  54 72 61 6e 73 66 6f 72  6d 65 64 3e 2c 20 65 78  |Transformed>, ex|
000ae5d0  63 65 70 74 20 74 68 61  74 20 6d 65 6d 6f 72 79  |cept that memory|
000ae5e0  20 69 73 20 63 6c 61 69  6d 65 64 20 69 6e 20 61  | is claimed in a|
000ae5f0  20 44 79 6e 61 6d 69 63  20 41 72 65 61 20 74 6f  | Dynamic Area to|
000ae600  20 68 6f 6c 64 20 74 68  65 20 4a 50 45 47 20 62  | hold the JPEG b|
000ae610  65 66 6f 72 65 20 70 6c  6f 74 74 69 6e 67 2e 0a  |efore plotting..|
000ae620  0a 59 6f 75 20 61 72 65  20 73 74 72 6f 6e 67 6c  |.You are strongl|
000ae630  79 20 72 65 63 6f 6d 6d  65 6e 64 65 64 20 74 6f  |y recommended to|
000ae640  20 75 73 65 20 3c 4a 50  45 47 5f 50 6c 6f 74 54  | use <JPEG_PlotT|
000ae650  72 61 6e 73 66 6f 72 6d  65 64 3e 20 69 6e 20 70  |ransformed> in p|
000ae660  72 65 66 65 72 65 6e 63  65 20 74 6f 20 74 68 69  |reference to thi|
000ae670  73 20 63 61 6c 6c 2e 00  44 41 54 41 0f 02 00 00  |s call..DATA....|
000ae680  4a 50 45 47 5f 50 44 72  69 76 65 72 49 6e 74 65  |JPEG_PDriverInte|
000ae690  72 63 65 70 74 20 20 28  26 34 39 39 38 36 29 0a  |rcept  (&49986).|
000ae6a0  23 50 61 72 65 6e 74 20  4a 50 45 47 5f 0a 3d 3e  |#Parent JPEG_.=>|
000ae6b0  09 52 30 20 3d 09 3c 66  6c 61 67 73 3d 3e 2e 66  |.R0 =.<flags=>.f|
000ae6c0  6c 61 67 73 3e 0a 3c 3d  09 52 30 20 3d 09 70 72  |lags>.<=.R0 =.pr|
000ae6d0  65 76 69 6f 75 73 20 69  6e 74 65 72 63 65 70 74  |evious intercept|
000ae6e0  20 73 74 61 74 65 0a 0a  54 68 69 73 20 53 57 49  | state..This SWI|
000ae6f0  20 69 73 20 75 73 65 64  20 62 79 20 74 68 65 20  | is used by the |
000ae700  70 72 69 6e 74 65 72 20  64 72 69 76 65 72 73 20  |printer drivers |
000ae710  74 6f 20 72 65 71 75 65  73 74 20 74 68 61 74 20  |to request that |
000ae720  53 70 72 69 74 65 45 78  74 65 6e 64 20 70 61 73  |SpriteExtend pas|
000ae730  73 65 73 20 6f 6e 20 61  6c 6c 20 63 61 6c 6c 73  |ses on all calls|
000ae740  20 74 6f 20 4a 50 45 47  20 70 6c 6f 74 74 69 6e  | to JPEG plottin|
000ae750  67 20 53 57 49 73 20 62  79 20 69 74 73 65 6c 66  |g SWIs by itself|
000ae760  20 63 61 6c 6c 69 6e 67  20 50 44 72 69 76 65 72  | calling PDriver|
000ae770  5f 4a 50 45 47 53 57 49  2e 20 20 57 68 65 6e 20  |_JPEGSWI.  When |
000ae780  53 70 72 69 74 65 45 78  74 65 6e 64 20 70 61 73  |SpriteExtend pas|
000ae790  73 65 73 20 6f 6e 20 74  68 65 73 65 20 63 61 6c  |ses on these cal|
000ae7a0  6c 73 2c 20 69 74 20 69  67 6e 6f 72 65 73 20 74  |ls, it ignores t|
000ae7b0  68 65 6d 20 69 74 73 65  6c 66 2e 0a 0a 59 6f 75  |hem itself...You|
000ae7c0  20 6d 75 73 74 20 6e 6f  74 20 6d 61 6b 65 20 74  | must not make t|
000ae7d0  68 69 73 20 63 61 6c 6c  20 66 72 6f 6d 20 79 6f  |his call from yo|
000ae7e0  75 72 20 6f 77 6e 20 61  70 70 6c 69 63 61 74 69  |ur own applicati|
000ae7f0  6f 6e 73 2e 0a 23 73 75  62 70 61 67 65 20 66 6c  |ons..#subpage fl|
000ae800  61 67 73 0a 4a 50 45 47  5f 50 44 72 69 76 65 72  |ags.JPEG_PDriver|
000ae810  49 6e 74 65 72 63 65 70  74 20 66 6c 61 67 73 0a  |Intercept flags.|
000ae820  62 69 74 09 6d 65 61 6e  69 6e 67 20 69 66 20 73  |bit.meaning if s|
000ae830  65 74 0a 23 4c 69 6e 65  0a 30 09 70 61 73 73 20  |et.#Line.0.pass |
000ae840  6f 6e 20 70 6c 6f 74 74  69 6e 67 20 63 61 6c 6c  |on plotting call|
000ae850  73 0a 31 09 75 73 65 20  74 72 61 6e 73 6c 61 74  |s.1.use translat|
000ae860  69 6f 6e 20 74 61 62 6c  65 73 0a 6f 74 68 65 72  |ion tables.other|
000ae870  73 20 20 72 65 73 65 72  76 65 64 20 28 6d 75 73  |s  reserved (mus|
000ae880  74 20 62 65 20 30 29 00  44 41 54 41 69 00 00 00  |t be 0).DATAi...|
000ae890  4a 50 45 47 20 69 6e 66  6f 20 6f 70 65 72 61 74  |JPEG info operat|
000ae8a0  69 6f 6e 20 66 6c 61 67  73 0a 62 69 74 09 6d 65  |ion flags.bit.me|
000ae8b0  61 6e 69 6e 67 20 69 66  20 73 65 74 0a 23 4c 69  |aning if set.#Li|
000ae8c0  6e 65 0a 30 09 72 65 74  75 72 6e 20 64 69 6d 65  |ne.0.return dime|
000ae8d0  6e 73 69 6f 6e 73 0a 6f  74 68 65 72 09 72 65 73  |nsions.other.res|
000ae8e0  65 72 76 65 64 20 28 6d  75 73 74 20 62 65 20 30  |erved (must be 0|
000ae8f0  29 00 00 00 44 41 54 41  ce 00 00 00 4a 50 45 47  |)...DATA....JPEG|
000ae900  20 70 6c 6f 74 74 69 6e  67 20 66 6c 61 67 73 0a  | plotting flags.|
000ae910  62 69 74 09 6d 65 61 6e  69 6e 67 20 69 66 20 73  |bit.meaning if s|
000ae920  65 74 0a 23 4c 69 6e 65  0a 30 09 64 69 74 68 65  |et.#Line.0.dithe|
000ae930  72 20 6f 75 74 70 75 74  20 77 68 65 6e 20 70 6c  |r output when pl|
000ae940  6f 74 74 69 6e 67 20 32  34 20 62 69 74 20 4a 50  |otting 24 bit JP|
000ae950  45 47 20 61 74 20 31 36  62 70 70 20 6f 72 20 62  |EG at 16bpp or b|
000ae960  65 6c 6f 77 0a 31 09 64  69 74 68 65 72 69 6e 67  |elow.1.dithering|
000ae970  20 28 69 66 20 61 6e 79  29 20 69 73 20 66 75 6c  | (if any) is ful|
000ae980  6c 20 65 72 72 6f 72 20  64 69 66 66 75 73 65 64  |l error diffused|
000ae990  20 77 68 65 6e 20 70 6c  6f 74 74 69 6e 67 20 61  | when plotting a|
000ae9a0  74 20 38 62 70 70 0a 6f  74 68 65 72 09 72 65 73  |t 8bpp.other.res|
000ae9b0  65 72 76 65 64 20 28 6d  75 73 74 20 62 65 20 30  |erved (must be 0|
000ae9c0  29 0a 00 00 44 41 54 41  13 01 00 00 4a 50 45 47  |)...DATA....JPEG|
000ae9d0  20 74 72 61 6e 73 66 6f  72 6d 61 74 69 6f 6e 20  | transformation |
000ae9e0  66 6c 61 67 73 0a 62 69  74 09 6d 65 61 6e 69 6e  |flags.bit.meanin|
000ae9f0  67 20 69 66 20 73 65 74  0a 23 4c 69 6e 65 0a 30  |g if set.#Line.0|
000aea00  09 52 32 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R2 =.pointer to|
000aea10  20 64 65 73 74 69 6e 61  74 69 6f 6e 20 63 6f 6f  | destination coo|
000aea20  72 64 69 6e 61 74 65 20  62 6c 6f 63 6b 2c 20 65  |rdinate block, e|
000aea30  6c 73 65 20 74 6f 20 6d  61 74 72 69 78 0a 31 09  |lse to matrix.1.|
000aea40  64 69 74 68 65 72 20 6f  75 74 70 75 74 20 77 68  |dither output wh|
000aea50  65 6e 20 70 6c 6f 74 74  69 6e 67 20 32 34 20 62  |en plotting 24 b|
000aea60  69 74 20 4a 50 45 47 20  61 74 20 31 36 62 70 70  |it JPEG at 16bpp|
000aea70  20 6f 72 20 62 65 6c 6f  77 0a 32 09 64 69 74 68  | or below.2.dith|
000aea80  65 72 69 6e 67 20 28 69  66 20 61 6e 79 29 20 69  |ering (if any) i|
000aea90  73 20 66 75 6c 6c 20 65  72 72 6f 72 20 64 69 66  |s full error dif|
000aeaa0  66 75 73 65 64 20 77 68  65 6e 20 70 6c 6f 74 74  |fused when plott|
000aeab0  69 6e 67 20 61 74 20 38  62 70 70 0a 6f 74 68 65  |ing at 8bpp.othe|
000aeac0  72 09 72 65 73 65 72 76  65 64 20 28 6d 75 73 74  |r.reserved (must|
000aead0  20 62 65 20 30 29 0a 00  44 41 54 41 c8 00 00 00  | be 0)..DATA....|
000aeae0  4a 50 45 47 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  |JPEG information|
000aeaf0  20 66 6c 61 67 73 0a 62  69 74 09 6d 65 61 6e 69  | flags.bit.meani|
000aeb00  6e 67 20 69 66 20 73 65  74 0a 23 4c 69 6e 65 0a  |ng if set.#Line.|
000aeb10  30 09 67 72 65 79 73 63  61 6c 65 20 69 6d 61 67  |0.greyscale imag|
000aeb20  65 20 28 6f 74 68 65 72  77 69 73 65 20 63 6f 6c  |e (otherwise col|
000aeb30  6f 75 72 29 0a 31 09 74  72 61 6e 73 66 6f 72 6d  |our).1.transform|
000aeb40  65 64 20 70 6c 6f 74 73  20 6e 6f 74 20 73 75 70  |ed plots not sup|
000aeb50  70 6f 72 74 65 64 0a 32  09 70 69 78 65 6c 20 64  |ported.2.pixel d|
000aeb60  65 6e 73 69 74 79 20 69  73 20 72 61 74 69 6f 20  |ensity is ratio |
000aeb70  28 6f 74 68 65 72 77 69  73 65 20 69 73 20 69 6e  |(otherwise is in|
000aeb80  20 44 50 49 29 0a 6f 74  68 65 72 09 72 65 73 65  | DPI).other.rese|
000aeb90  72 76 65 64 20 28 6d 75  73 74 20 62 65 20 30 29  |rved (must be 0)|
000aeba0  44 49 52 24 a0 00 00 00  a0 00 00 00 40 ec 0a 00  |DIR$........@...|
000aebb0  48 fd ff ff a0 2f c8 10  56 00 00 00 13 00 00 00  |H..../..V.......|
000aebc0  00 00 00 00 21 52 6f 6f  74 00 00 00 98 ec 0a 00  |....!Root.......|
000aebd0  48 ff ff ff a6 53 cb 10  65 02 00 00 13 00 00 00  |H....S..e.......|
000aebe0  00 00 00 00 44 65 72 65  67 69 73 74 65 72 46 69  |....DeregisterFi|
000aebf0  6c 65 73 00 00 ef 0a 00  48 fd ff ff 1c 7c 87 1a  |les.....H....|..|
000aec00  3b 02 00 00 13 00 00 00  00 00 00 00 66 69 6c 65  |;...........file|
000aec10  62 6c 6f 63 6b 00 00 00  3c f1 0a 00 48 ff ff ff  |block...<...H...|
000aec20  d1 91 ca 10 7a 01 00 00  13 00 00 00 00 00 00 00  |....z...........|
000aec30  52 65 67 69 73 74 65 72  46 69 6c 65 73 00 00 00  |RegisterFiles...|
000aec40  44 41 54 41 56 00 00 00  52 65 73 6f 75 72 63 65  |DATAV...Resource|
000aec50  46 53 0a 23 50 61 72 65  6e 74 20 21 52 6f 6f 74  |FS.#Parent !Root|
000aec60  0a 23 50 72 65 66 69 78  20 52 65 73 6f 75 72 63  |.#Prefix Resourc|
000aec70  65 46 53 5f 0a 3c 44 65  72 65 67 69 73 74 65 72  |eFS_.<Deregister|
000aec80  46 69 6c 65 73 3e 0a 3c  52 65 67 69 73 74 65 72  |Files>.<Register|
000aec90  46 69 6c 65 73 3e 00 00  44 41 54 41 65 02 00 00  |Files>..DATAe...|
000aeca0  52 65 73 6f 75 72 63 65  46 53 5f 44 65 72 65 67  |ResourceFS_Dereg|
000aecb0  69 73 74 65 72 46 69 6c  65 73 20 20 28 26 34 31  |isterFiles  (&41|
000aecc0  42 34 31 29 0a 23 50 61  72 65 6e 74 20 52 65 73  |B41).#Parent Res|
000aecd0  6f 75 72 63 65 46 53 5f  0a 3d 3e 09 52 30 20 3d  |ourceFS_.=>.R0 =|
000aece0  09 70 6f 69 6e 74 65 72  20 74 6f 20 3c 72 65 73  |.pointer to <res|
000aecf0  6f 75 72 63 65 20 66 69  6c 65 20 62 6c 6f 63 6b  |ource file block|
000aed00  3d 3e 52 65 73 6f 75 72  63 65 46 53 5f 66 69 6c  |=>ResourceFS_fil|
000aed10  65 62 6c 6f 63 6b 3e 0a  3c 3d 09 52 30 20 63 6f  |eblock>.<=.R0 co|
000aed20  72 72 75 70 74 65 64 0a  0a 54 68 69 73 20 53 57  |rrupted..This SW|
000aed30  49 20 73 68 6f 75 6c 64  20 62 65 20 63 61 6c 6c  |I should be call|
000aed40  65 64 20 62 79 20 61 20  6d 6f 64 75 6c 65 20 74  |ed by a module t|
000aed50  6f 20 72 65 6d 6f 76 65  20 66 69 6c 65 73 20 66  |o remove files f|
000aed60  72 6f 6d 20 74 68 65 20  52 65 73 6f 75 72 63 65  |rom the Resource|
000aed70  46 53 20 73 74 72 75 63  74 75 72 65 20 62 65 66  |FS structure bef|
000aed80  6f 72 65 20 74 68 65 20  6d 65 6d 6f 72 79 20 63  |ore the memory c|
000aed90  6f 6e 74 61 69 6e 69 6e  67 20 74 68 65 20 66 69  |ontaining the fi|
000aeda0  6c 65 73 20 69 73 20 64  65 61 6c 6c 6f 63 61 74  |les is deallocat|
000aedb0  65 64 20 28 7b 2f 7d 65  2e 67 2e 7b 2f 7d 20 69  |ed ({/}e.g.{/} i|
000aedc0  74 20 73 68 6f 75 6c 64  20 62 65 20 63 61 6c 6c  |t should be call|
000aedd0  65 64 20 62 65 66 6f 72  65 20 61 20 6d 6f 64 75  |ed before a modu|
000aede0  6c 65 20 69 73 20 6b 69  6c 6c 65 64 29 2e 20 52  |le is killed). R|
000aedf0  65 73 6f 75 72 63 65 46  53 20 64 65 6c 69 6e 6b  |esourceFS delink|
000aee00  73 20 74 68 65 20 66 69  6c 65 73 20 61 6e 64 20  |s the files and |
000aee10  74 68 65 6e 20 69 73 73  75 65 73 20 3c 53 65 72  |then issues <Ser|
000aee20  76 69 63 65 5f 52 65 73  6f 75 72 63 65 46 53 53  |vice_ResourceFSS|
000aee30  74 61 72 74 69 6e 67 3d  3e 73 65 72 76 69 63 65  |tarting=>service|
000aee40  5f 35 39 3e 20 74 6f 20  61 6e 6e 6f 75 6e 63 65  |_59> to announce|
000aee50  20 74 6f 20 70 72 6f 67  72 61 6d 73 20 74 68 61  | to programs tha|
000aee60  74 20 74 68 65 20 52 65  73 6f 75 72 63 65 46 53  |t the ResourceFS|
000aee70  20 73 74 72 75 63 74 75  72 65 20 68 61 73 20 63  | structure has c|
000aee80  68 61 6e 67 65 64 2e 20  59 6f 75 20 64 6f 20 2a  |hanged. You do *|
000aee90  6e 6f 74 2a 20 6e 65 65  64 20 74 6f 20 64 65 72  |not* need to der|
000aeea0  65 67 69 73 74 65 72 20  66 69 6c 65 73 20 65 78  |egister files ex|
000aeeb0  70 6c 69 63 74 6c 79 20  77 69 74 68 20 74 68 69  |plictly with thi|
000aeec0  73 20 53 57 49 20 75 70  6f 6e 20 72 65 63 65 69  |s SWI upon recei|
000aeed0  70 74 20 6f 66 20 3c 53  65 72 76 69 63 65 5f 52  |pt of <Service_R|
000aeee0  65 73 6f 75 72 63 65 46  53 44 79 69 6e 67 3d 3e  |esourceFSDying=>|
000aeef0  73 65 72 76 69 63 65 5f  35 41 3e 2e 0a 00 00 00  |service_5A>.....|
000aef00  44 41 54 41 3b 02 00 00  52 65 73 6f 75 72 63 65  |DATA;...Resource|
000aef10  46 53 20 66 69 6c 65 20  62 6c 6f 63 6b 0a 23 50  |FS file block.#P|
000aef20  61 72 65 6e 74 20 52 65  73 6f 75 72 63 65 46 53  |arent ResourceFS|
000aef30  5f 0a 53 69 7a 65 09 43  6f 6e 74 65 6e 74 73 0a  |_.Size.Contents.|
000aef40  23 6c 69 6e 65 0a 34 09  4f 66 66 73 65 74 20 74  |#line.4.Offset t|
000aef50  6f 20 6e 65 78 74 20 66  69 6c 65 2c 20 6f 72 20  |o next file, or |
000aef60  30 20 66 6f 72 20 65 6e  64 20 6c 69 73 74 0a 34  |0 for end list.4|
000aef70  09 3c 6c 6f 61 64 20 61  64 64 72 65 73 73 3d 3e  |.<load address=>|
000aef80  66 73 79 73 5f 6c 6f 61  64 65 78 65 63 3e 0a 34  |fsys_loadexec>.4|
000aef90  09 3c 65 78 65 63 20 61  64 64 72 65 73 73 3d 3e  |.<exec address=>|
000aefa0  66 73 79 73 5f 6c 6f 61  64 65 78 65 63 3e 0a 34  |fsys_loadexec>.4|
000aefb0  09 73 69 7a 65 0a 34 09  3c 61 74 74 72 69 62 75  |.size.4.<attribu|
000aefc0  74 65 73 3d 3e 66 73 79  73 5f 6f 62 6a 61 74 74  |tes=>fsys_objatt|
000aefd0  72 3e 0a 78 09 6e 75 6c  6c 20 74 65 72 6d 69 6e  |r>.x.null termin|
000aefe0  61 74 65 64 20 70 61 74  68 6e 61 6d 65 20 66 72  |ated pathname fr|
000aeff0  6f 6d 20 27 24 2e 27 20  28 64 6f 20 6e 6f 74 20  |om '$.' (do not |
000af000  69 6e 63 6c 75 64 65 20  74 68 65 20 27 24 2e 27  |include the '$.'|
000af010  29 0a 31 2d 33 09 30 73  20 74 6f 20 77 6f 72 64  |).1-3.0s to word|
000af020  20 61 6c 69 67 6e 0a 34  09 73 69 7a 65 20 6f 66  | align.4.size of|
000af030  20 66 69 6c 65 20 2b 20  34 0a 79 09 66 69 6c 65  | file + 4.y.file|
000af040  20 64 61 74 61 0a 31 2d  33 09 30 73 20 74 6f 20  | data.1-3.0s to |
000af050  77 6f 72 64 20 61 6c 69  67 6e 0a 0a 46 69 6c 65  |word align..File|
000af060  20 62 6c 6f 63 6b 73 20  6d 75 73 74 20 62 65 20  | blocks must be |
000af070  63 6f 6e 74 69 67 75 6f  75 73 2e 20 49 66 20 6e  |contiguous. If n|
000af080  65 63 65 73 73 61 72 79  20 6d 61 6b 65 20 6d 6f  |ecessary make mo|
000af090  72 65 20 74 68 61 6e 20  6f 6e 65 20 73 65 74 20  |re than one set |
000af0a0  6f 66 20 63 6f 6e 74 69  67 75 6f 75 73 20 66 69  |of contiguous fi|
000af0b0  6c 65 20 62 6c 6f 63 6b  73 2c 20 61 6e 64 20 3c  |le blocks, and <|
000af0c0  52 65 73 6f 75 72 63 65  46 53 5f 52 65 67 69 73  |ResourceFS_Regis|
000af0d0  74 65 72 46 69 6c 65 73  3e 20 65 61 63 68 20 73  |terFiles> each s|
000af0e0  65 74 20 69 6e 20 74 75  72 6e 2e 20 44 69 72 65  |et in turn. Dire|
000af0f0  63 74 6f 72 69 65 73 20  61 72 65 20 6e 6f 74 20  |ctories are not |
000af100  73 70 65 63 69 66 69 65  64 20 2d 20 64 69 72 65  |specified - dire|
000af110  63 74 6f 72 79 20 73 74  72 75 63 74 75 72 65 20  |ctory structure |
000af120  69 73 20 64 65 64 75 63  65 64 20 66 72 6f 6d 20  |is deduced from |
000af130  66 69 6c 65 6e 61 6d 65  73 2e 0a 00 44 41 54 41  |filenames...DATA|
000af140  7a 01 00 00 52 65 73 6f  75 72 63 65 46 53 5f 52  |z...ResourceFS_R|
000af150  65 67 69 73 74 65 72 46  69 6c 65 73 20 20 28 26  |egisterFiles  (&|
000af160  34 31 42 34 30 29 0a 23  50 61 72 65 6e 74 20 52  |41B40).#Parent R|
000af170  65 73 6f 75 72 63 65 46  53 5f 0a 3d 3e 09 52 30  |esourceFS_.=>.R0|
000af180  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 3c 72  | =.pointer to <r|
000af190  65 73 6f 75 72 63 65 20  66 69 6c 65 20 62 6c 6f  |esource file blo|
000af1a0  63 6b 3d 3e 52 65 73 6f  75 72 63 65 46 53 5f 66  |ck=>ResourceFS_f|
000af1b0  69 6c 65 62 6c 6f 63 6b  3e 0a 3c 3d 09 52 30 20  |ileblock>.<=.R0 |
000af1c0  63 6f 72 72 75 70 74 65  64 0a 0a 54 68 69 73 20  |corrupted..This |
000af1d0  53 57 49 20 61 6c 6c 6f  77 73 20 61 20 6d 6f 64  |SWI allows a mod|
000af1e0  75 6c 65 20 74 6f 20 61  64 64 20 66 69 6c 65 73  |ule to add files|
000af1f0  20 74 6f 20 74 68 65 20  52 65 73 6f 75 72 63 65  | to the Resource|
000af200  46 53 20 73 74 72 75 63  74 75 72 65 2e 20 52 65  |FS structure. Re|
000af210  73 6f 75 72 63 65 46 53  20 6c 69 6e 6b 73 20 74  |sourceFS links t|
000af220  68 65 20 66 69 6c 65 73  20 69 6e 74 6f 20 52 65  |he files into Re|
000af230  73 6f 75 72 63 65 73 3a  2c 20 61 6e 64 20 74 68  |sources:, and th|
000af240  65 6e 20 69 73 73 75 65  73 20 3c 53 65 72 76 69  |en issues <Servi|
000af250  63 65 5f 52 65 73 6f 75  72 63 65 46 53 53 74 61  |ce_ResourceFSSta|
000af260  72 74 69 6e 67 3d 3e 73  65 72 76 69 63 65 5f 35  |rting=>service_5|
000af270  39 3e 20 74 6f 20 61 6e  6e 6f 75 6e 63 65 20 74  |9> to announce t|
000af280  6f 20 70 72 6f 67 72 61  6d 73 20 74 68 61 74 20  |o programs that |
000af290  74 68 65 20 52 65 73 6f  75 72 63 65 46 53 20 73  |the ResourceFS s|
000af2a0  74 72 75 63 74 75 72 65  20 68 61 73 20 63 68 61  |tructure has cha|
000af2b0  6e 67 65 64 2e 0a 00 00  44 49 52 24 2c 00 00 00  |nged....DIR$,...|
000af2c0  2c 00 00 00 e4 f2 0a 00  46 fd ff ff b3 8b 1d 00  |,.......F.......|
000af2d0  79 00 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |y...........!Roo|
000af2e0  74 00 00 00 44 41 54 41  79 00 00 00 53 43 53 49  |t...DATAy...SCSI|
000af2f0  0a 23 50 61 72 65 6e 74  20 21 52 6f 6f 74 0a 43  |.#Parent !Root.C|
000af300  6f 6d 6d 61 6e 64 0a 44  65 73 63 72 69 62 65 44  |ommand.DescribeD|
000af310  69 73 63 0a 44 69 73 63  4f 70 0a 44 72 69 76 65  |isc.DiscOp.Drive|
000af320  73 0a 45 45 50 72 6f 6d  0a 46 72 65 65 53 70 61  |s.EEProm.FreeSpa|
000af330  63 65 0a 48 61 72 64 77  61 72 65 0a 52 65 73 65  |ce.Hardware.Rese|
000af340  74 0a 53 74 61 74 75 73  0a 54 65 73 74 4d 6f 75  |t.Status.TestMou|
000af350  6e 74 65 64 0a 55 73 65  72 43 6f 64 65 00 00 00  |nted.UserCode...|
000af360  44 49 52 24 84 00 00 00  84 00 00 00 e4 f3 0a 00  |DIR$............|
000af370  47 fd ff ff ca ec f7 81  22 01 00 00 13 00 00 00  |G.......".......|
000af380  00 00 00 00 21 72 6f 6f  74 00 00 00 08 f5 0a 00  |....!root.......|
000af390  47 ff ff ff 86 80 ca 53  01 03 00 00 13 00 00 00  |G......S........|
000af3a0  00 00 00 00 43 6f 6e 76  65 72 74 44 72 69 76 65  |....ConvertDrive|
000af3b0  54 6f 44 65 76 69 63 65  00 00 00 00 0c f8 0a 00  |ToDevice........|
000af3c0  47 fd ff ff dd 10 18 fc  88 00 00 00 33 00 00 00  |G...........3...|
000af3d0  00 00 00 00 63 6f 6e 74  72 6f 6c 62 6c 6f 63 6b  |....controlblock|
000af3e0  00 00 00 00 44 41 54 41  22 01 00 00 43 44 46 53  |....DATA"...CDFS|
000af3f0  5f 0a 23 50 61 72 65 6e  74 20 21 52 6f 6f 74 0a  |_.#Parent !Root.|
000af400  23 50 72 65 66 69 78 20  43 44 46 53 5f 0a 23 73  |#Prefix CDFS_.#s|
000af410  70 72 69 74 65 46 69 6c  65 20 63 64 64 69 73 63  |priteFile cddisc|
000af420  0a 23 53 50 52 49 54 45  20 30 2c 66 20 43 44 44  |.#SPRITE 0,f CDD|
000af430  49 53 43 0a 23 69 6e 64  65 6e 74 20 37 0a 3c 43  |ISC.#indent 7.<C|
000af440  6f 6e 76 65 72 74 44 72  69 76 65 54 6f 44 65 76  |onvertDriveToDev|
000af450  69 63 65 3e 20 0a 53 65  74 42 75 66 66 65 72 53  |ice> .SetBufferS|
000af460  69 7a 65 20 20 20 20 20  20 20 20 0a 47 65 74 42  |ize        .GetB|
000af470  75 66 66 65 72 53 69 7a  65 20 20 20 20 20 20 20  |ufferSize       |
000af480  20 0a 53 65 74 4e 75 6d  62 65 72 4f 66 44 72 69  | .SetNumberOfDri|
000af490  76 65 73 20 20 20 20 0a  47 65 74 4e 75 6d 62 65  |ves    .GetNumbe|
000af4a0  72 4f 66 44 72 69 76 65  73 20 20 20 20 0a 47 69  |rOfDrives    .Gi|
000af4b0  76 65 46 69 6c 65 54 79  70 65 20 20 20 20 20 20  |veFileType      |
000af4c0  20 20 20 0a 44 65 73 63  72 69 62 65 44 69 73 63  |   .DescribeDisc|
000af4d0  20 20 20 20 20 20 20 20  20 0a 57 68 65 72 65 49  |         .WhereI|
000af4e0  73 46 69 6c 65 20 20 20  20 20 20 20 20 20 20 0a  |sFile          .|
000af4f0  54 72 75 6e 63 61 74 69  6f 6e 20 20 20 20 20 20  |Truncation      |
000af500  20 20 20 20 20 0a 00 00  44 41 54 41 01 03 00 00  |     ...DATA....|
000af510  43 44 46 53 5f 43 6f 6e  76 65 72 74 44 72 69 76  |CDFS_ConvertDriv|
000af520  65 54 6f 44 65 76 69 63  65 20 28 26 34 31 45 38  |eToDevice (&41E8|
000af530  30 29 0a 23 50 61 72 65  6e 74 20 43 44 46 53 5f  |0).#Parent CDFS_|
000af540  0a 3d 3e 09 52 30 20 3d  09 6c 6f 67 69 63 61 6c  |.=>.R0 =.logical|
000af550  20 64 72 69 76 65 20 6e  75 6d 62 65 72 0a 3c 3d  | drive number.<=|
000af560  09 52 30 20 70 72 65 73  65 72 76 65 64 0a 09 52  |.R0 preserved..R|
000af570  31 20 3d 09 70 68 79 73  69 63 61 6c 20 64 72 69  |1 =.physical dri|
000af580  76 65 20 6e 75 6d 62 65  72 0a 0a 54 68 65 20 63  |ve number..The c|
000af590  61 6c 6c 20 63 6f 6e 76  65 72 74 73 20 61 20 6c  |all converts a l|
000af5a0  6f 67 69 63 61 6c 20 64  72 69 76 65 20 6e 75 6d  |ogical drive num|
000af5b0  62 65 72 20 74 6f 20 61  20 70 68 79 73 69 63 61  |ber to a physica|
000af5c0  6c 20 64 72 69 76 65 20  6e 75 6d 62 65 72 2e 20  |l drive number. |
000af5d0  59 6f 75 20 63 61 6e 20  74 68 65 6e 20 75 73 65  |You can then use|
000af5e0  20 74 68 65 20 70 68 79  73 69 63 61 6c 20 64 72  | the physical dr|
000af5f0  69 76 65 20 6e 75 6d 62  65 72 20 74 6f 20 70 72  |ive number to pr|
000af600  6f 64 75 63 65 20 61 20  43 44 46 53 20 63 6f 6e  |oduce a CDFS con|
000af610  74 72 6f 6c 20 62 6c 6f  63 6b 2c 20 77 68 69 63  |trol block, whic|
000af620  68 20 79 6f 75 20 68 61  76 65 20 74 6f 20 70 61  |h you have to pa|
000af630  73 73 20 77 68 65 6e 20  63 61 6c 6c 69 6e 67 20  |ss when calling |
000af640  43 44 46 53 44 72 69 76  65 72 20 53 57 49 73 2e  |CDFSDriver SWIs.|
000af650  20 54 68 65 20 63 61 6c  6c 20 72 65 74 75 72 6e  | The call return|
000af660  73 20 61 6e 20 65 72 72  6f 72 20 69 66 20 74 68  |s an error if th|
000af670  65 20 6c 6f 67 69 63 61  6c 20 64 72 69 76 65 20  |e logical drive |
000af680  69 73 20 6e 6f 74 20 6b  6e 6f 77 6e 2e 0a 0a 54  |is not known...T|
000af690  6f 20 63 6f 6e 73 74 72  75 63 74 20 74 68 65 20  |o construct the |
000af6a0  63 6f 6e 74 72 6f 6c 20  62 6c 6f 63 6b 2c 20 61  |control block, a|
000af6b0  6c 6c 6f 63 61 74 65 20  61 20 35 2d 77 6f 72 64  |llocate a 5-word|
000af6c0  20 73 70 61 63 65 20 66  6f 72 20 69 74 2e 20 54  | space for it. T|
000af6d0  68 65 6e 20 64 65 63 6f  64 65 20 74 68 65 20 64  |hen decode the d|
000af6e0  72 69 76 65 5f 6e 75 6d  62 65 72 20 67 69 76 65  |rive_number give|
000af6f0  6e 20 69 6e 20 74 68 65  20 61 62 6f 76 65 20 63  |n in the above c|
000af700  61 6c 6c 20 61 73 20 66  6f 6c 6c 6f 77 73 20 3a  |all as follows :|
000af710  0a 0a 23 66 43 6f 64 65  3b 49 6e 64 65 6e 74 20  |..#fCode;Indent |
000af720  32 0a 62 6c 6f 63 6b 21  30 20 3d 20 28 64 72 69  |2.block!0 = (dri|
000af730  76 65 5f 6e 75 6d 62 65  72 20 41 4e 44 20 26 30  |ve_number AND &0|
000af740  30 30 30 30 30 30 37 29  0a 62 6c 6f 63 6b 21 34  |0000007).block!4|
000af750  20 3d 20 28 28 64 72 69  76 65 5f 6e 75 6d 62 65  | = ((drive_numbe|
000af760  72 20 3e 3e 20 33 29 20  20 41 4e 44 20 26 30 30  |r >> 3)  AND &00|
000af770  30 30 30 30 30 33 29 20  0a 62 6c 6f 63 6b 21 38  |000003) .block!8|
000af780  20 3d 20 28 28 64 72 69  76 65 5f 6e 75 6d 62 65  | = ((drive_numbe|
000af790  72 20 3e 3e 20 35 29 20  20 41 4e 44 20 26 30 30  |r >> 5)  AND &00|
000af7a0  30 30 30 30 30 37 29 0a  62 6c 6f 63 6b 21 31 32  |000007).block!12|
000af7b0  20 3d 20 28 28 64 72 69  76 65 5f 6e 75 6d 62 65  | = ((drive_numbe|
000af7c0  72 20 3e 3e 20 38 29 20  20 41 4e 44 20 26 30 30  |r >> 8)  AND &00|
000af7d0  30 30 30 30 46 46 29 0a  62 6c 6f 63 6b 21 31 36  |0000FF).block!16|
000af7e0  20 3d 20 28 28 64 72 69  76 65 5f 6e 75 6d 62 65  | = ((drive_numbe|
000af7f0  72 20 3e 3e 20 31 36 29  20 41 4e 44 20 26 30 30  |r >> 16) AND &00|
000af800  30 30 46 46 46 46 29 20  0a 00 00 00 44 41 54 41  |00FFFF) ....DATA|
000af810  88 00 00 00 43 44 46 53  20 43 6f 6e 74 72 6f 6c  |....CDFS Control|
000af820  20 62 6c 6f 63 6b 0a 23  50 61 72 65 6e 74 20 43  | block.#Parent C|
000af830  44 46 53 5f 0a 30 09 64  65 76 69 63 65 20 28 30  |DFS_.0.device (0|
000af840  2d 37 29 0a 34 09 63 61  72 64 20 28 30 2d 33 29  |-7).4.card (0-3)|
000af850  0a 38 09 4c 55 4e 20 28  30 2d 37 29 0a 31 32 09  |.8.LUN (0-7).12.|
000af860  64 72 69 76 65 72 20 68  61 6e 64 6c 65 20 28 73  |driver handle (s|
000af870  65 65 20 3c 43 44 5f 49  64 65 6e 74 69 66 79 3e  |ee <CD_Identify>|
000af880  29 0a 31 36 09 63 75 72  72 65 6e 74 6c 79 20 7a  |).16.currently z|
000af890  65 72 6f 0a 44 49 52 24  e4 04 00 00 e4 04 00 00  |ero.DIR$........|
000af8a0  78 fd 0a 00 48 fd ff ff  a2 97 87 1a 2f 02 00 00  |x...H......./...|
000af8b0  13 00 00 00 00 00 00 00  21 72 6f 6f 74 00 00 00  |........!root...|
000af8c0  a8 ff 0a 00 47 ff ff ff  09 9e 18 fc a6 00 00 00  |....G...........|
000af8d0  13 00 00 00 00 00 00 00  4f 70 65 6e 44 72 61 77  |........OpenDraw|
000af8e0  65 72 00 00 50 00 0b 00  47 ff ff ff 5d a3 18 fc  |er..P...G...]...|
000af8f0  fa 00 00 00 13 00 00 00  00 00 00 00 45 6e 71 75  |............Enqu|
000af900  69 72 65 41 64 64 72 65  73 73 00 00 4c 01 0b 00  |ireAddress..L...|
000af910  47 ff ff ff 6c 9d 18 fc  15 01 00 00 13 00 00 00  |G...l...........|
000af920  00 00 00 00 50 6c 61 79  41 75 64 69 6f 00 00 00  |....PlayAudio...|
000af930  64 02 0b 00 47 ff ff ff  ce 9c 18 fc 47 01 00 00  |d...G.......G...|
000af940  13 00 00 00 00 00 00 00  50 6c 61 79 54 72 61 63  |........PlayTrac|
000af950  6b 00 00 00 ac 03 0b 00  47 ff ff ff b5 85 18 fc  |k.......G.......|
000af960  ac 00 00 00 13 00 00 00  00 00 00 00 41 75 64 69  |............Audi|
000af970  6f 50 61 75 73 65 00 00  58 04 0b 00 47 ff ff ff  |oPause..X...G...|
000af980  19 a2 18 fc 91 02 00 00  13 00 00 00 00 00 00 00  |................|
000af990  45 6e 71 75 69 72 65 54  72 61 63 6b 00 00 00 00  |EnquireTrack....|
000af9a0  ec 06 0b 00 47 ff ff ff  33 98 18 fc a9 00 00 00  |....G...3.......|
000af9b0  13 00 00 00 00 00 00 00  53 74 6f 70 44 69 73 63  |........StopDisc|
000af9c0  00 00 00 00 98 07 0b 00  47 ff ff ff f9 a5 18 fc  |........G.......|
000af9d0  7a 02 00 00 13 00 00 00  00 00 00 00 44 69 73 63  |z...........Disc|
000af9e0  55 73 65 64 00 00 00 00  14 0a 0b 00 47 ff ff ff  |Used........G...|
000af9f0  ac 8a 18 fc a0 01 00 00  13 00 00 00 00 00 00 00  |................|
000afa00  41 75 64 69 6f 53 74 61  74 75 73 00 b4 0b 0b 00  |AudioStatus.....|
000afa10  47 ff ff ff 39 d5 16 fc  9d 01 00 00 13 00 00 00  |G...9...........|
000afa20  00 00 00 00 42 79 74 65  43 6f 70 79 00 00 00 00  |....ByteCopy....|
000afa30  54 0d 0b 00 47 ff ff ff  2c a1 18 fc cf 00 00 00  |T...G...,.......|
000afa40  13 00 00 00 00 00 00 00  49 64 65 6e 74 69 66 79  |........Identify|
000afa50  00 00 00 00 24 0e 0b 00  48 ff ff ff a2 1a c3 0f  |....$...H.......|
000afa60  7f 01 00 00 13 00 00 00  00 00 00 00 43 6f 6e 76  |............Conv|
000afa70  65 72 74 54 6f 4d 53 46  00 00 00 00 a4 0f 0b 00  |ertToMSF........|
000afa80  47 ff ff ff 60 a5 18 fc  07 01 00 00 13 00 00 00  |G...`...........|
000afa90  00 00 00 00 44 72 69 76  65 52 65 61 64 79 00 00  |....DriveReady..|
000afaa0  ac 10 0b 00 47 ff ff ff  c1 a4 18 fc 05 01 00 00  |....G...........|
000afab0  13 00 00 00 00 00 00 00  44 72 69 76 65 53 74 61  |........DriveSta|
000afac0  74 75 73 00 b4 11 0b 00  47 ff ff ff 54 d3 aa 52  |tus.....G...T..R|
000afad0  da 00 00 00 13 00 00 00  00 00 00 00 56 65 72 73  |............Vers|
000afae0  69 6f 6e 00 90 12 0b 00  47 ff ff ff 47 a4 18 fc  |ion.....G...G...|
000afaf0  c8 00 00 00 13 00 00 00  00 00 00 00 45 6a 65 63  |............Ejec|
000afb00  74 42 75 74 74 6f 6e 00  58 13 0b 00 47 ff ff ff  |tButton.X...G...|
000afb10  44 a7 18 fc f1 00 00 00  13 00 00 00 00 00 00 00  |D...............|
000afb20  44 69 73 63 43 68 61 6e  67 65 64 00 4c 14 0b 00  |DiscChanged.L...|
000afb30  47 ff ff ff c5 a6 18 fc  9a 00 00 00 13 00 00 00  |G...............|
000afb40  00 00 00 00 44 69 73 63  48 61 73 43 68 61 6e 67  |....DiscHasChang|
000afb50  65 64 00 00 e8 14 0b 00  47 ff ff ff 2b ac 18 fc  |ed......G...+...|
000afb60  a1 00 00 00 13 00 00 00  00 00 00 00 43 6c 6f 73  |............Clos|
000afb70  65 44 72 61 77 65 72 00  8c 15 0b 00 47 ff ff ff  |eDrawer.....G...|
000afb80  f9 95 18 fc bc 01 00 00  13 00 00 00 00 00 00 00  |................|
000afb90  53 75 70 70 6f 72 74 65  64 00 00 00 48 17 0b 00  |Supported...H...|
000afba0  47 ff ff ff c2 9a 18 fc  48 01 00 00 13 00 00 00  |G.......H.......|
000afbb0  00 00 00 00 52 65 61 64  41 75 64 69 6f 00 00 00  |....ReadAudio...|
000afbc0  90 18 0b 00 47 ff ff ff  80 cd 17 fc 35 02 00 00  |....G.......5...|
000afbd0  13 00 00 00 00 00 00 00  52 65 67 69 73 74 65 72  |........Register|
000afbe0  00 00 00 00 c8 1a 0b 00  47 ff ff ff 9d 57 18 fc  |........G....W..|
000afbf0  66 01 00 00 13 00 00 00  00 00 00 00 55 6e 72 65  |f...........Unre|
000afc00  67 69 73 74 65 72 00 00  30 1c 0b 00 47 fd ff ff  |gister..0...G...|
000afc10  f4 5b 94 e9 9e 02 00 00  13 00 00 00 00 00 00 00  |.[..............|
000afc20  69 6e 66 6f 62 6c 6f 63  6b 00 00 00 d0 1e 0b 00  |infoblock.......|
000afc30  47 ff ff ff c0 9e 18 fc  73 01 00 00 13 00 00 00  |G.......s.......|
000afc40  00 00 00 00 49 6e 71 75  69 72 79 00 44 20 0b 00  |....Inquiry.D ..|
000afc50  47 ff ff ff ac a1 18 fc  c5 00 00 00 13 00 00 00  |G...............|
000afc60  00 00 00 00 47 65 74 50  61 72 61 6d 65 74 65 72  |....GetParameter|
000afc70  73 00 00 00 0c 21 0b 00  47 fd ff ff 86 12 16 fc  |s....!..G.......|
000afc80  eb 00 00 00 13 00 00 00  00 00 00 00 64 61 74 61  |............data|
000afc90  70 61 72 61 6d 73 00 00  f8 21 0b 00 47 ff ff ff  |params...!..G...|
000afca0  ff 96 18 fc c2 00 00 00  13 00 00 00 00 00 00 00  |................|
000afcb0  53 65 74 50 61 72 61 6d  65 74 65 72 73 00 00 00  |SetParameters...|
000afcc0  bc 22 0b 00 48 ff ff ff  6e bd c2 0f 4e 01 00 00  |."..H...n...N...|
000afcd0  33 00 00 00 00 00 00 00  45 6e 71 75 69 72 65 44  |3.......EnquireD|
000afce0  61 74 61 4d 6f 64 65 00  0c 24 0b 00 47 ff ff ff  |ataMode..$..G...|
000afcf0  ee a8 18 fc 83 00 00 00  33 00 00 00 00 00 00 00  |........3.......|
000afd00  43 6f 6e 74 72 6f 6c 00  90 24 0b 00 47 ff ff ff  |Control..$..G...|
000afd10  f2 a2 18 fc 3c 01 00 00  33 00 00 00 00 00 00 00  |....<...3.......|
000afd20  52 65 61 64 44 61 74 61  00 00 00 00 cc 25 0b 00  |ReadData.....%..|
000afd30  48 ff ff ff 8f d4 c2 0f  b7 00 00 00 13 00 00 00  |H...............|
000afd40  00 00 00 00 43 68 65 63  6b 44 72 69 76 65 00 00  |....CheckDrive..|
000afd50  84 26 0b 00 48 ff ff ff  32 ff c2 0f da 00 00 00  |.&..H...2.......|
000afd60  13 00 00 00 00 00 00 00  49 73 44 72 61 77 65 72  |........IsDrawer|
000afd70  4c 6f 63 6b 65 64 00 00  44 41 54 41 2f 02 00 00  |Locked..DATA/...|
000afd80  43 44 5f 0a 23 50 61 72  65 6e 74 20 21 52 6f 6f  |CD_.#Parent !Roo|
000afd90  74 0a 23 50 72 65 66 69  78 20 43 44 5f 0a 23 74  |t.#Prefix CD_.#t|
000afda0  61 62 6c 65 20 43 6f 6c  75 6d 6e 73 20 33 0a 41  |able Columns 3.A|
000afdb0  75 64 69 6f 43 6f 6e 74  72 6f 6c 0a 41 75 64 69  |udioControl.Audi|
000afdc0  6f 4c 65 76 65 6c 0a 3c  41 75 64 69 6f 50 61 75  |oLevel.<AudioPau|
000afdd0  73 65 3e 0a 3c 41 75 64  69 6f 53 74 61 74 75 73  |se>.<AudioStatus|
000afde0  3e 0a 3c 42 79 74 65 43  6f 70 79 3e 0a 3c 43 68  |>.<ByteCopy>.<Ch|
000afdf0  65 63 6b 44 72 69 76 65  3e 0a 3c 43 6c 6f 73 65  |eckDrive>.<Close|
000afe00  44 72 61 77 65 72 3e 0a  3c 43 6f 6e 74 72 6f 6c  |Drawer>.<Control|
000afe10  3e 0a 43 6f 6e 76 65 72  74 54 6f 4c 42 41 0a 3c  |>.ConvertToLBA.<|
000afe20  43 6f 6e 76 65 72 74 54  6f 4d 53 46 3e 0a 3c 44  |ConvertToMSF>.<D|
000afe30  69 73 63 43 68 61 6e 67  65 64 3e 0a 3c 44 69 73  |iscChanged>.<Dis|
000afe40  63 48 61 73 43 68 61 6e  67 65 64 3e 0a 3c 44 69  |cHasChanged>.<Di|
000afe50  73 63 55 73 65 64 3e 0a  3c 44 72 69 76 65 52 65  |scUsed>.<DriveRe|
000afe60  61 64 79 3e 0a 3c 44 72  69 76 65 53 74 61 74 75  |ady>.<DriveStatu|
000afe70  73 3e 0a 3c 45 6a 65 63  74 42 75 74 74 6f 6e 3e  |s>.<EjectButton>|
000afe80  0a 3c 45 6e 71 75 69 72  65 41 64 64 72 65 73 73  |.<EnquireAddress|
000afe90  3e 0a 3c 45 6e 71 75 69  72 65 44 61 74 61 4d 6f  |>.<EnquireDataMo|
000afea0  64 65 3e 0a 3c 45 6e 71  75 69 72 65 54 72 61 63  |de>.<EnquireTrac|
000afeb0  6b 3e 0a 3c 47 65 74 50  61 72 61 6d 65 74 65 72  |k>.<GetParameter|
000afec0  73 3e 0a 3c 49 64 65 6e  74 69 66 79 3e 0a 3c 49  |s>.<Identify>.<I|
000afed0  6e 71 75 69 72 79 3e 0a  3c 49 73 44 72 61 77 65  |nquiry>.<IsDrawe|
000afee0  72 4c 6f 63 6b 65 64 3e  0a 4c 61 73 74 45 72 72  |rLocked>.LastErr|
000afef0  6f 72 0a 3c 4f 70 65 6e  44 72 61 77 65 72 3e 0a  |or.<OpenDrawer>.|
000aff00  3c 50 6c 61 79 41 75 64  69 6f 3e 0a 3c 50 6c 61  |<PlayAudio>.<Pla|
000aff10  79 54 72 61 63 6b 3e 0a  50 72 65 66 65 74 63 68  |yTrack>.Prefetch|
000aff20  0a 3c 52 65 61 64 41 75  64 69 6f 3e 0a 3c 52 65  |.<ReadAudio>.<Re|
000aff30  61 64 44 61 74 61 3e 0a  52 65 61 64 53 75 62 43  |adData>.ReadSubC|
000aff40  68 61 6e 6e 65 6c 0a 3c  52 65 67 69 73 74 65 72  |hannel.<Register|
000aff50  3e 0a 52 65 73 65 74 0a  53 65 65 6b 54 6f 0a 3c  |>.Reset.SeekTo.<|
000aff60  53 65 74 50 61 72 61 6d  65 74 65 72 73 3e 0a 3c  |SetParameters>.<|
000aff70  53 74 6f 70 44 69 73 63  3e 0a 3c 53 75 70 70 6f  |StopDisc>.<Suppo|
000aff80  72 74 65 64 3e 0a 3c 55  6e 72 65 67 69 73 74 65  |rted>.<Unregiste|
000aff90  72 3e 0a 3c 56 65 72 73  69 6f 6e 3e 0a 23 45 6e  |r>.<Version>.#En|
000affa0  64 54 61 62 6c 65 0a 00  44 41 54 41 a6 00 00 00  |dTable..DATA....|
000affb0  43 44 5f 4f 70 65 6e 44  72 61 77 65 72 20 28 26  |CD_OpenDrawer (&|
000affc0  34 31 32 34 37 29 0a 23  50 61 72 65 6e 74 20 43  |41247).#Parent C|
000affd0  44 5f 0a 3d 3e 09 52 37  20 3d 09 70 6f 69 6e 74  |D_.=>.R7 =.point|
000affe0  65 72 20 74 6f 20 3c 43  44 46 53 20 63 6f 6e 74  |er to <CDFS cont|
000afff0  72 6f 6c 20 62 6c 6f 63  6b 3d 3e 43 44 46 53 5f  |rol block=>CDFS_|
000b0000  63 6f 6e 74 72 6f 6c 62  6c 6f 63 6b 3e 0a 0a 54  |controlblock>..T|
000b0010  68 69 73 20 53 57 49 20  73 74 6f 70 73 20 74 68  |his SWI stops th|
000b0020  65 20 43 44 20 73 70 69  6e 6e 69 6e 67 2c 20 6f  |e CD spinning, o|
000b0030  70 65 6e 73 20 64 72 61  77 65 72 20 61 6e 64 20  |pens drawer and |
000b0040  65 6a 65 63 74 73 20 63  61 64 64 79 2e 0a 00 00  |ejects caddy....|
000b0050  44 41 54 41 fa 00 00 00  43 44 5f 45 6e 71 75 69  |DATA....CD_Enqui|
000b0060  72 65 41 64 64 72 65 73  73 20 28 26 34 31 32 34  |reAddress (&4124|
000b0070  39 29 0a 23 50 61 72 65  6e 74 20 43 44 5f 0a 3d  |9).#Parent CD_.=|
000b0080  3e 09 52 30 20 3d 09 61  64 64 72 65 73 73 69 6e  |>.R0 =.addressin|
000b0090  67 20 6d 6f 64 65 2c 20  66 6f 72 20 72 65 74 75  |g mode, for retu|
000b00a0  72 6e 65 64 20 68 65 61  64 20 6c 6f 63 61 74 69  |rned head locati|
000b00b0  6f 6e 0a 09 52 37 20 3d  09 70 6f 69 6e 74 65 72  |on..R7 =.pointer|
000b00c0  20 74 6f 20 3c 43 44 46  53 20 63 6f 6e 74 72 6f  | to <CDFS contro|
000b00d0  6c 20 62 6c 6f 63 6b 3d  3e 43 44 46 53 5f 63 6f  |l block=>CDFS_co|
000b00e0  6e 74 72 6f 6c 62 6c 6f  63 6b 3e 0a 3c 3d 09 52  |ntrolblock>.<=.R|
000b00f0  30 20 3d 09 68 65 61 64  20 61 64 64 72 65 73 73  |0 =.head address|
000b0100  0a 09 52 37 20 70 72 65  73 65 72 76 65 64 0a 0a  |..R7 preserved..|
000b0110  47 69 76 65 73 20 63 75  72 72 65 6e 74 20 61 64  |Gives current ad|
000b0120  64 72 65 73 73 20 6f 66  20 68 65 61 64 2e 20 43  |dress of head. C|
000b0130  61 6e 20 62 65 20 75 73  65 64 20 77 68 69 6c 65  |an be used while|
000b0140  20 70 6c 61 79 69 6e 67  2e 0a 00 00 44 41 54 41  | playing....DATA|
000b0150  15 01 00 00 43 44 5f 50  6c 61 79 41 75 64 69 6f  |....CD_PlayAudio|
000b0160  20 28 26 34 31 32 34 42  29 0a 23 50 61 72 65 6e  | (&4124B).#Paren|
000b0170  74 20 43 44 5f 0a 3d 3e  09 52 30 20 3d 09 61 64  |t CD_.=>.R0 =.ad|
000b0180  64 72 65 73 73 20 6d 6f  64 65 20 6f 66 20 70 61  |dress mode of pa|
000b0190  72 61 6d 65 74 65 72 73  0a 09 52 31 20 3d 09 73  |rameters..R1 =.s|
000b01a0  74 61 72 74 20 61 64 64  72 65 73 73 20 6f 66 20  |tart address of |
000b01b0  73 65 63 74 69 6f 6e 0a  09 52 32 20 3d 09 65 6e  |section..R2 =.en|
000b01c0  64 20 61 64 64 72 65 73  73 20 6f 66 20 73 65 63  |d address of sec|
000b01d0  74 69 6f 6e 0a 09 52 37  20 3d 09 70 6f 69 6e 74  |tion..R7 =.point|
000b01e0  65 72 20 74 6f 20 3c 43  44 46 53 20 63 6f 6e 74  |er to <CDFS cont|
000b01f0  72 6f 6c 20 62 6c 6f 63  6b 3d 3e 43 44 46 53 5f  |rol block=>CDFS_|
000b0200  63 6f 6e 74 72 6f 6c 62  6c 6f 63 6b 3e 0a 0a 3c  |controlblock>..<|
000b0210  3d 09 52 30 2d 52 32 2c  52 37 20 70 72 65 73 65  |=.R0-R2,R7 prese|
000b0220  72 76 65 64 0a 0a 41 74  74 65 6d 70 74 20 74 6f  |rved..Attempt to|
000b0230  20 70 6c 61 79 20 43 44  20 73 65 63 74 69 6f 6e  | play CD section|
000b0240  20 6f 66 20 61 75 64 69  6f 2c 20 73 70 65 63 69  | of audio, speci|
000b0250  66 69 65 64 20 62 79 20  61 64 64 72 65 73 73 2e  |fied by address.|
000b0260  0a 00 00 00 44 41 54 41  47 01 00 00 43 44 5f 50  |....DATAG...CD_P|
000b0270  6c 61 79 54 72 61 63 6b  20 28 26 34 31 32 34 43  |layTrack (&4124C|
000b0280  29 0a 23 50 61 72 65 6e  74 20 43 44 5f 0a 3d 3e  |).#Parent CD_.=>|
000b0290  09 52 30 20 3d 09 74 72  61 63 6b 20 6e 75 6d 62  |.R0 =.track numb|
000b02a0  65 72 20 61 74 20 77 68  69 63 68 20 74 6f 20 73  |er at which to s|
000b02b0  74 61 72 74 20 70 6c 61  79 0a 09 52 31 20 3d 09  |tart play..R1 =.|
000b02c0  32 35 35 20 74 6f 20 70  6c 61 79 20 74 6f 20 65  |255 to play to e|
000b02d0  6e 64 20 6f 66 20 43 44  2c 20 6f 72 20 32 35 34  |nd of CD, or 254|
000b02e0  20 74 6f 20 70 6c 61 79  20 74 6f 20 65 6e 64 20  | to play to end |
000b02f0  6f 66 20 74 72 61 63 6b  0a 09 52 37 20 3d 09 70  |of track..R7 =.p|
000b0300  6f 69 6e 74 65 72 20 74  6f 20 3c 43 44 46 53 20  |ointer to <CDFS |
000b0310  63 6f 6e 74 72 6f 6c 20  62 6c 6f 63 6b 3d 3e 43  |control block=>C|
000b0320  44 46 53 5f 63 6f 6e 74  72 6f 6c 62 6c 6f 63 6b  |DFS_controlblock|
000b0330  3e 0a 0a 3c 3d 09 52 30  2c 52 31 2c 52 37 20 70  |>..<=.R0,R1,R7 p|
000b0340  72 65 73 65 72 76 65 64  0a 0a 41 74 74 65 6d 70  |reserved..Attemp|
000b0350  74 73 20 74 6f 20 70 6c  61 79 20 61 20 43 44 20  |ts to play a CD |
000b0360  73 65 63 74 69 6f 6e 20  6f 66 20 61 75 64 69 6f  |section of audio|
000b0370  2c 20 73 70 65 63 69 66  69 65 64 20 62 79 20 74  |, specified by t|
000b0380  72 61 63 6b 2e 20 52 65  74 75 72 6e 73 20 65 72  |rack. Returns er|
000b0390  72 6f 72 20 69 66 20 74  72 61 63 6b 20 69 73 20  |ror if track is |
000b03a0  6e 6f 6e 2d 61 75 64 69  6f 2e 0a 00 44 41 54 41  |non-audio...DATA|
000b03b0  ac 00 00 00 43 44 5f 41  75 64 69 6f 50 61 75 73  |....CD_AudioPaus|
000b03c0  65 20 28 26 34 31 32 34  44 29 0a 23 50 61 72 65  |e (&4124D).#Pare|
000b03d0  6e 74 20 43 44 5f 0a 3d  3e 09 52 30 20 3d 09 30  |nt CD_.=>.R0 =.0|
000b03e0  20 74 6f 20 74 75 72 6e  20 6f 66 66 2c 20 31 20  | to turn off, 1 |
000b03f0  74 6f 20 74 75 72 6e 20  6f 6e 0a 09 52 37 20 3d  |to turn on..R7 =|
000b0400  09 70 6f 69 6e 74 65 72  20 74 6f 20 3c 43 44 46  |.pointer to <CDF|
000b0410  53 20 63 6f 6e 74 72 6f  6c 20 62 6c 6f 63 6b 3d  |S control block=|
000b0420  3e 43 44 46 53 5f 63 6f  6e 74 72 6f 6c 62 6c 6f  |>CDFS_controlblo|
000b0430  63 6b 3e 0a 0a 43 6f 6e  74 72 6f 6c 73 20 70 61  |ck>..Controls pa|
000b0440  75 73 69 6e 67 20 6f 66  20 61 75 64 69 6f 20 70  |using of audio p|
000b0450  6c 61 79 69 6e 67 2e 0a  44 41 54 41 91 02 00 00  |laying..DATA....|
000b0460  43 44 5f 45 6e 71 75 69  72 65 54 72 61 63 6b 20  |CD_EnquireTrack |
000b0470  28 26 34 31 32 34 45 29  0a 23 50 61 72 65 6e 74  |(&4124E).#Parent|
000b0480  20 43 44 5f 0a 3d 3e 09  52 30 20 3d 09 30 20 74  | CD_.=>.R0 =.0 t|
000b0490  6f 20 72 65 74 75 72 6e  20 74 72 61 63 6b 20 72  |o return track r|
000b04a0  61 6e 67 65 2c 20 6f 72  20 61 20 76 61 6c 69 64  |ange, or a valid|
000b04b0  20 74 72 61 63 6b 20 6e  75 6d 62 65 72 0a 09 52  | track number..R|
000b04c0  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |1 =.pointer to <|
000b04d0  35 2d 62 79 74 65 20 62  75 66 66 65 72 3d 3e 2e  |5-byte buffer=>.|
000b04e0  62 75 66 66 65 72 3e 0a  09 52 37 20 3d 09 70 6f  |buffer>..R7 =.po|
000b04f0  69 6e 74 65 72 20 74 6f  20 3c 43 44 46 53 20 63  |inter to <CDFS c|
000b0500  6f 6e 74 72 6f 6c 20 62  6c 6f 63 6b 3d 3e 43 44  |ontrol block=>CD|
000b0510  46 53 5f 63 6f 6e 74 72  6f 6c 62 6c 6f 63 6b 3e  |FS_controlblock>|
000b0520  0a 0a 3c 3d 09 52 30 2c  52 31 2c 52 37 20 70 72  |..<=.R0,R1,R7 pr|
000b0530  65 73 65 72 76 65 64 0a  0a 52 65 74 75 72 6e 73  |eserved..Returns|
000b0540  20 74 72 61 63 6b 20 72  61 6e 67 65 2c 20 6f 72  | track range, or|
000b0550  20 69 6e 66 6f 20 6f 6e  20 61 20 73 70 65 63 69  | info on a speci|
000b0560  66 69 65 64 20 74 72 61  63 6b 2e 0a 23 53 75 62  |fied track..#Sub|
000b0570  70 61 67 65 20 62 75 66  66 65 72 0a 43 44 46 53  |page buffer.CDFS|
000b0580  20 54 72 61 63 6b 20 62  6c 6f 63 6b 0a 54 72 61  | Track block.Tra|
000b0590  63 6b 20 72 61 6e 67 65  20 28 52 30 20 3d 20 30  |ck range (R0 = 0|
000b05a0  29 3a 0a 23 49 6e 64 65  6e 74 20 32 0a 4f 66 66  |):.#Indent 2.Off|
000b05b0  73 65 74 09 43 6f 6e 74  65 6e 74 73 0a 23 4c 69  |set.Contents.#Li|
000b05c0  6e 65 0a 30 09 6e 75 6d  62 65 72 20 6f 66 20 66  |ne.0.number of f|
000b05d0  69 72 73 74 20 74 72 61  63 6b 20 6f 6e 20 43 44  |irst track on CD|
000b05e0  0a 31 09 6e 75 6d 62 65  72 20 6f 66 20 6c 61 73  |.1.number of las|
000b05f0  74 20 74 72 61 63 6b 20  6f 6e 20 43 44 0a 32 2d  |t track on CD.2-|
000b0600  34 09 63 6f 72 72 75 70  74 0a 23 69 6e 64 65 6e  |4.corrupt.#inden|
000b0610  74 0a 0a 53 70 65 63 66  69 63 20 74 72 61 63 6b  |t..Specfic track|
000b0620  20 28 52 30 20 3d 20 74  72 61 63 6b 29 3a 0a 23  | (R0 = track):.#|
000b0630  49 6e 64 65 6e 74 20 32  0a 4f 66 66 73 65 74 09  |Indent 2.Offset.|
000b0640  43 6f 6e 74 65 6e 74 73  0a 23 4c 69 6e 65 0a 30  |Contents.#Line.0|
000b0650  09 6c 6f 67 69 63 61 6c  20 62 6c 6f 63 6b 20 61  |.logical block a|
000b0660  64 64 72 65 73 73 20 6f  66 20 74 72 61 63 6b 20  |ddress of track |
000b0670  73 74 61 72 74 20 28 69  65 20 6d 6f 64 65 20 30  |start (ie mode 0|
000b0680  20 61 64 64 72 29 0a 34  09 62 69 74 73 20 61 73  | addr).4.bits as|
000b0690  20 66 6f 6c 6c 6f 77 73  20 3a 0a 09 20 62 30 09  | follows :.. b0.|
000b06a0  3d 30 20 61 75 64 69 6f  09 3d 31 20 64 61 74 61  |=0 audio.=1 data|
000b06b0  0a 09 20 62 31 09 3d 30  20 34 2d 63 68 61 6e 6e  |.. b1.=0 4-chann|
000b06c0  65 6c 09 3d 31 20 32 2d  63 68 61 6e 6e 65 6c 0a  |el.=1 2-channel.|
000b06d0  09 20 62 32 2d 37 09 72  65 73 65 72 76 65 64 20  |. b2-7.reserved |
000b06e0  0a 23 69 6e 64 65 6e 74  0a 00 00 00 44 41 54 41  |.#indent....DATA|
000b06f0  a9 00 00 00 43 44 5f 53  74 6f 70 44 69 73 63 20  |....CD_StopDisc |
000b0700  28 26 34 31 32 35 32 29  0a 23 50 61 72 65 6e 74  |(&41252).#Parent|
000b0710  20 43 44 5f 0a 3d 3e 09  52 37 20 3d 09 70 6f 69  | CD_.=>.R7 =.poi|
000b0720  6e 74 65 72 20 74 6f 20  3c 43 44 46 53 20 63 6f  |nter to <CDFS co|
000b0730  6e 74 72 6f 6c 20 62 6c  6f 63 6b 3d 3e 43 44 46  |ntrol block=>CDF|
000b0740  53 5f 63 6f 6e 74 72 6f  6c 62 6c 6f 63 6b 3e 0a  |S_controlblock>.|
000b0750  0a 54 68 69 73 20 53 57  49 20 73 74 6f 70 73 20  |.This SWI stops |
000b0760  61 20 43 44 20 70 6c 61  79 69 6e 67 2c 20 61 6e  |a CD playing, an|
000b0770  64 20 77 61 69 74 73 20  75 6e 74 69 6c 20 74 68  |d waits until th|
000b0780  65 20 43 44 20 73 74 6f  70 73 20 73 70 69 6e 6e  |e CD stops spinn|
000b0790  69 6e 67 2e 0a 00 00 00  44 41 54 41 7a 02 00 00  |ing.....DATAz...|
000b07a0  43 44 5f 44 69 73 63 55  73 65 64 20 28 26 34 31  |CD_DiscUsed (&41|
000b07b0  32 35 33 29 0a 23 50 61  72 65 6e 74 20 43 44 5f  |253).#Parent CD_|
000b07c0  0a 3d 3e 09 52 30 20 3d  09 61 64 64 72 65 73 73  |.=>.R0 =.address|
000b07d0  69 6e 67 20 6d 6f 64 65  20 66 6f 72 20 72 65 74  |ing mode for ret|
000b07e0  75 72 6e 65 64 20 73 69  7a 65 20 69 6e 0a 09 52  |urned size in..R|
000b07f0  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |1 =.pointer to <|
000b0800  38 2d 62 79 74 65 20 62  6c 6f 63 6b 3d 3e 2e 62  |8-byte block=>.b|
000b0810  6c 6f 63 6b 3e 0a 09 52  37 20 3d 09 70 6f 69 6e  |lock>..R7 =.poin|
000b0820  74 65 72 20 74 6f 20 3c  43 44 46 53 20 63 6f 6e  |ter to <CDFS con|
000b0830  74 72 6f 6c 20 62 6c 6f  63 6b 3d 3e 43 44 46 53  |trol block=>CDFS|
000b0840  5f 63 6f 6e 74 72 6f 6c  62 6c 6f 63 6b 3e 0a 0a  |_controlblock>..|
000b0850  3c 3d 09 52 30 20 70 72  65 73 65 72 76 65 64 0a  |<=.R0 preserved.|
000b0860  09 52 31 20 63 6f 72 72  75 70 74 65 64 0a 09 52  |.R1 corrupted..R|
000b0870  37 20 70 72 65 73 65 72  76 65 64 0a 0a 52 65 74  |7 preserved..Ret|
000b0880  75 72 6e 73 20 73 69 7a  65 20 6f 66 20 43 44 20  |urns size of CD |
000b0890  63 75 72 72 65 6e 74 6c  79 20 69 6e 20 64 72 69  |currently in dri|
000b08a0  76 65 20 69 6e 20 62 6c  6f 63 6b 20 70 6f 69 6e  |ve in block poin|
000b08b0  74 65 64 20 74 6f 20 62  79 20 52 31 2e 0a 23 53  |ted to by R1..#S|
000b08c0  75 62 70 61 67 65 20 62  6c 6f 63 6b 0a 43 44 5f  |ubpage block.CD_|
000b08d0  44 69 73 63 55 73 65 64  20 62 6c 6f 63 6b 0a 46  |DiscUsed block.F|
000b08e0  6f 72 20 6d 6f 64 65 20  30 3a 0a 23 49 6e 64 65  |or mode 0:.#Inde|
000b08f0  6e 74 20 32 0a 4f 66 66  73 65 74 09 43 6f 6e 74  |nt 2.Offset.Cont|
000b0900  65 6e 74 73 0a 23 6c 69  6e 65 0a 30 09 53 69 7a  |ents.#line.0.Siz|
000b0910  65 20 6f 66 20 43 44 0a  34 09 53 69 7a 65 20 6f  |e of CD.4.Size o|
000b0920  66 20 62 6c 6f 63 6b 73  20 6f 6e 20 43 44 0a 23  |f blocks on CD.#|
000b0930  69 6e 64 65 6e 74 0a 0a  46 6f 72 20 6d 6f 64 65  |indent..For mode|
000b0940  20 31 3a 0a 23 69 6e 64  65 6e 74 20 32 0a 4f 66  | 1:.#indent 2.Of|
000b0950  66 73 65 74 09 43 6f 6e  74 65 6e 74 73 0a 23 4c  |fset.Contents.#L|
000b0960  69 6e 65 0a 30 09 4e 75  6d 62 65 72 20 6f 66 20  |ine.0.Number of |
000b0970  66 72 61 6d 65 73 0a 31  09 4e 75 6d 62 65 72 20  |frames.1.Number |
000b0980  6f 66 20 73 65 63 6f 6e  64 73 0a 32 09 4e 75 6d  |of seconds.2.Num|
000b0990  62 65 72 20 6f 66 20 6d  69 6e 75 74 65 73 0a 33  |ber of minutes.3|
000b09a0  09 30 0a 34 09 73 65 63  74 6f 72 20 73 69 7a 65  |.0.4.sector size|
000b09b0  20 28 61 6c 77 61 79 73  20 32 30 34 38 2c 20 65  | (always 2048, e|
000b09c0  76 65 6e 20 66 6f 72 20  61 75 64 69 6f 20 64 69  |ven for audio di|
000b09d0  73 63 73 29 0a 0a 7b 2a  7d 4e 6f 74 65 7b 2a 7d  |scs)..{*}Note{*}|
000b09e0  3a 20 28 6d 69 6e 2a 36  30 2b 73 65 63 29 2a 37  |: (min*60+sec)*7|
000b09f0  35 2b 66 72 61 6d 65 73  20 3d 20 72 65 61 64 61  |5+frames = reada|
000b0a00  62 6c 65 20 2b 20 31 35  31 0a 23 69 6e 64 65 6e  |ble + 151.#inden|
000b0a10  74 0a 00 00 44 41 54 41  a0 01 00 00 43 44 5f 41  |t...DATA....CD_A|
000b0a20  75 64 69 6f 53 74 61 74  75 73 20 28 26 34 31 32  |udioStatus (&412|
000b0a30  35 34 29 0a 23 50 61 72  65 6e 74 20 43 44 5f 0a  |54).#Parent CD_.|
000b0a40  3d 3e 09 52 37 20 3d 09  70 6f 69 6e 74 65 72 20  |=>.R7 =.pointer |
000b0a50  74 6f 20 3c 43 44 46 53  20 63 6f 6e 74 72 6f 6c  |to <CDFS control|
000b0a60  20 62 6c 6f 63 6b 3d 3e  43 44 46 53 5f 63 6f 6e  | block=>CDFS_con|
000b0a70  74 72 6f 6c 62 6c 6f 63  6b 3e 0a 3c 3d 09 52 30  |trolblock>.<=.R0|
000b0a80  20 3d 09 3c 61 75 64 69  6f 20 73 74 61 74 75 73  | =.<audio status|
000b0a90  3d 3e 2e 73 74 61 74 75  73 3e 0a 09 52 37 20 70  |=>.status>..R7 p|
000b0aa0  72 65 73 65 72 76 65 64  0a 0a 52 65 74 75 72 6e  |reserved..Return|
000b0ab0  73 20 63 75 72 72 65 6e  74 20 61 75 64 69 6f 20  |s current audio |
000b0ac0  73 74 61 74 75 73 20 6f  66 20 64 72 69 76 65 2e  |status of drive.|
000b0ad0  0a 23 53 75 62 70 61 67  65 20 73 74 61 74 75 73  |.#Subpage status|
000b0ae0  0a 41 75 64 69 6f 20 73  74 61 74 75 73 0a 52 30  |.Audio status.R0|
000b0af0  09 4d 65 61 6e 69 6e 67  0a 23 4c 69 6e 65 0a 30  |.Meaning.#Line.0|
000b0b00  09 43 75 72 72 65 6e 74  6c 79 20 70 6c 61 79 69  |.Currently playi|
000b0b10  6e 67 20 61 75 64 69 6f  0a 31 09 43 75 72 72 65  |ng audio.1.Curre|
000b0b20  6e 74 6c 79 20 70 61 75  73 65 64 0a 32 09 52 65  |ntly paused.2.Re|
000b0b30  73 65 72 76 65 64 20 28  61 74 20 70 72 65 73 65  |served (at prese|
000b0b40  6e 74 29 0a 33 09 41 75  64 69 6f 20 70 6c 61 79  |nt).3.Audio play|
000b0b50  20 73 75 63 63 65 73 73  66 75 6c 6c 79 20 63 6f  | successfully co|
000b0b60  6d 70 6c 65 74 65 64 0a  34 09 45 72 72 6f 72 20  |mpleted.4.Error |
000b0b70  6f 63 63 75 72 72 65 64  20 64 75 72 69 6e 67 20  |occurred during |
000b0b80  6c 61 73 74 20 61 75 64  69 6f 20 70 6c 61 79 0a  |last audio play.|
000b0b90  35 09 41 75 64 69 6f 20  70 6c 61 79 20 68 61 73  |5.Audio play has|
000b0ba0  20 6e 6f 74 20 62 65 65  6e 20 72 65 71 75 65 73  | not been reques|
000b0bb0  74 65 64 0a 44 41 54 41  9d 01 00 00 43 44 5f 42  |ted.DATA....CD_B|
000b0bc0  79 74 65 43 6f 70 79 20  28 26 34 31 32 36 32 29  |yteCopy (&41262)|
000b0bd0  0a 23 50 61 72 65 6e 74  20 43 44 5f 0a 3d 3e 09  |.#Parent CD_.=>.|
000b0be0  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
000b0bf0  73 6f 75 72 63 65 0a 09  52 32 20 3d 09 70 6f 69  |source..R2 =.poi|
000b0c00  6e 74 65 72 20 74 6f 20  64 65 73 74 69 6e 61 74  |nter to destinat|
000b0c10  69 6f 6e 0a 09 52 33 20  3d 09 6e 75 6d 62 65 72  |ion..R3 =.number|
000b0c20  20 6f 66 20 62 79 74 65  73 20 74 6f 20 63 6f 70  | of bytes to cop|
000b0c30  79 0a 3c 3d 09 41 6c 6c  20 72 65 67 69 73 74 65  |y.<=.All registe|
000b0c40  72 73 20 70 72 65 73 65  72 76 65 64 0a 0a 46 61  |rs preserved..Fa|
000b0c50  73 74 20 6d 65 6d 6f 72  79 20 63 6f 70 79 20 72  |st memory copy r|
000b0c60  6f 75 74 69 6e 65 2c 20  70 72 6f 76 69 64 69 6e  |outine, providin|
000b0c70  67 20 65 66 66 69 63 69  65 6e 74 20 77 61 79 20  |g efficient way |
000b0c80  6f 66 20 63 6f 70 79 69  6e 67 20 61 6e 79 20 6e  |of copying any n|
000b0c90  75 6d 62 65 72 20 6f 66  20 62 79 74 65 73 2c 20  |umber of bytes, |
000b0ca0  77 6f 72 64 2d 61 6c 69  67 6e 65 64 20 6f 72 20  |word-aligned or |
000b0cb0  6e 6f 74 2e 0a 0a 7b 2a  7d 4e 6f 74 65 7b 2a 7d  |not...{*}Note{*}|
000b0cc0  3a 20 49 74 20 69 73 20  72 65 63 6f 6d 6d 65 6e  |: It is recommen|
000b0cd0  64 65 64 20 74 68 61 74  20 79 6f 75 20 64 6f 20  |ded that you do |
000b0ce0  6e 6f 74 20 75 73 65 20  74 68 69 73 20 61 73 20  |not use this as |
000b0cf0  74 68 65 20 6f 76 65 72  68 65 61 64 20 66 6f 72  |the overhead for|
000b0d00  20 63 61 6c 6c 69 6e 67  20 74 68 65 20 53 57 49  | calling the SWI|
000b0d10  20 69 73 20 70 72 6f 62  61 62 6c 79 20 67 72 65  | is probably gre|
000b0d20  61 74 65 72 20 74 68 61  6e 20 61 6e 79 20 67 61  |ater than any ga|
000b0d30  69 6e 20 79 6f 75 20 63  6f 75 6c 64 20 65 76 65  |in you could eve|
000b0d40  72 20 70 6f 73 73 69 62  6c 79 20 67 61 69 6e 2e  |r possibly gain.|
000b0d50  0a 00 00 00 44 41 54 41  cf 00 00 00 43 44 5f 49  |....DATA....CD_I|
000b0d60  64 65 6e 74 69 66 79 20  28 26 34 31 32 36 33 29  |dentify (&41263)|
000b0d70  0a 23 50 61 72 65 6e 74  20 43 44 5f 0a 3d 3e 09  |.#Parent CD_.=>.|
000b0d80  52 37 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R7 =.pointer to |
000b0d90  3c 43 44 46 53 20 63 6f  6e 74 72 6f 6c 20 62 6c  |<CDFS control bl|
000b0da0  6f 63 6b 3d 3e 43 44 46  53 5f 63 6f 6e 74 72 6f  |ock=>CDFS_contro|
000b0db0  6c 62 6c 6f 63 6b 3e 0a  3c 3d 09 52 30 2c 52 31  |lblock>.<=.R0,R1|
000b0dc0  20 70 72 65 73 65 72 76  65 64 0a 09 52 32 20 3d  | preserved..R2 =|
000b0dd0  09 64 72 69 76 65 20 74  79 70 65 2c 20 6f 72 20  |.drive type, or |
000b0de0  2d 31 20 69 66 20 6e 6f  74 20 72 65 63 6f 67 6e  |-1 if not recogn|
000b0df0  69 73 65 64 0a 0a 49 64  65 6e 74 69 66 69 65 73  |ised..Identifies|
000b0e00  20 74 68 65 20 64 72 69  76 65 20 74 79 70 65 20  | the drive type |
000b0e10  6f 66 20 61 20 43 44 2d  52 4f 4d 20 64 72 69 76  |of a CD-ROM driv|
000b0e20  65 2e 0a 00 44 41 54 41  7f 01 00 00 43 44 5f 43  |e...DATA....CD_C|
000b0e30  6f 6e 76 65 72 74 54 6f  4d 53 46 20 28 26 34 31  |onvertToMSF (&41|
000b0e40  32 36 35 29 0a 23 50 61  72 65 6e 74 20 43 44 5f  |265).#Parent CD_|
000b0e50  0a 3d 3e 09 52 30 20 3d  09 30 0a 09 52 31 20 3d  |.=>.R0 =.0..R1 =|
000b0e60  09 70 6f 69 6e 74 65 72  20 74 6f 20 75 73 65 72  |.pointer to user|
000b0e70  27 73 20 64 61 74 61 20  62 6c 6f 63 6b 0a 09 52  |'s data block..R|
000b0e80  37 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |7 =.pointer to <|
000b0e90  43 44 46 53 20 63 6f 6e  74 72 6f 6c 20 62 6c 6f  |CDFS control blo|
000b0ea0  63 6b 3d 3e 43 44 46 53  5f 63 6f 6e 74 72 6f 6c  |ck=>CDFS_control|
000b0eb0  62 6c 6f 63 6b 3e 0a 0a  3c 3d 09 52 31 20 3d 09  |block>..<=.R1 =.|
000b0ec0  72 65 74 75 72 6e 65 64  20 33 32 2d 62 69 74 20  |returned 32-bit |
000b0ed0  76 61 6c 75 65 20 6f 66  20 4d 53 46 20 61 64 64  |value of MSF add|
000b0ee0  72 65 73 73 0a 0a 54 68  69 73 20 53 57 49 20 63  |ress..This SWI c|
000b0ef0  6f 6e 76 65 72 74 73 20  61 20 62 6c 6f 63 6b 20  |onverts a block |
000b0f00  61 64 64 72 65 73 73 20  74 6f 20 4d 53 46 2c 20  |address to MSF, |
000b0f10  69 6e 20 74 68 65 20 66  6f 72 6d 20 26 30 30 4d  |in the form &00M|
000b0f20  4d 53 53 46 46 2e 0a 20  0a 4e 6f 74 65 3a 20 42  |MSSFF.. .Note: B|
000b0f30  65 66 6f 72 65 20 75 73  65 20 77 69 74 68 20 50  |efore use with P|
000b0f40  6c 61 79 41 75 64 69 6f  20 73 68 6f 75 6c 64 20  |layAudio should |
000b0f50  68 61 76 65 20 61 20 76  61 6c 75 65 20 61 64 64  |have a value add|
000b0f60  65 64 20 74 6f 20 69 74  20 74 6f 20 61 6c 6c 6f  |ed to it to allo|
000b0f70  77 20 66 6f 72 20 6c 65  61 64 2d 69 6e 20 74 69  |w for lead-in ti|
000b0f80  6d 65 20 6f 66 20 61 75  64 69 6f 20 43 44 73 2e  |me of audio CDs.|
000b0f90  20 28 65 2e 67 2e 20 35  31 32 3d 32 20 73 65 63  | (e.g. 512=2 sec|
000b0fa0  29 2e 0a 00 44 41 54 41  07 01 00 00 43 44 5f 44  |)...DATA....CD_D|
000b0fb0  72 69 76 65 52 65 61 64  79 20 28 26 34 31 32 34  |riveReady (&4124|
000b0fc0  34 29 0a 23 50 61 72 65  6e 74 20 43 44 5f 0a 3d  |4).#Parent CD_.=|
000b0fd0  3e 09 52 37 20 3d 09 70  6f 69 6e 74 65 72 20 74  |>.R7 =.pointer t|
000b0fe0  6f 20 3c 43 44 46 53 20  63 6f 6e 74 72 6f 6c 20  |o <CDFS control |
000b0ff0  62 6c 6f 63 6b 3d 3e 43  44 46 53 5f 63 6f 6e 74  |block=>CDFS_cont|
000b1000  72 6f 6c 62 6c 6f 63 6b  3e 0a 3c 3d 09 52 30 20  |rolblock>.<=.R0 |
000b1010  3d 09 64 72 69 76 65 20  73 74 61 74 65 20 28 30  |=.drive state (0|
000b1020  20 69 66 20 72 65 61 64  79 2c 20 6f 74 68 65 72  | if ready, other|
000b1030  77 69 73 65 20 6e 6f 74  20 72 65 61 64 79 29 0a  |wise not ready).|
000b1040  0a 54 68 69 73 20 53 57  49 20 72 65 74 75 72 6e  |.This SWI return|
000b1050  73 20 74 68 65 20 63 75  72 72 65 6e 74 20 73 74  |s the current st|
000b1060  61 74 65 20 6f 66 20 64  72 69 76 65 2c 20 73 61  |ate of drive, sa|
000b1070  79 69 6e 67 20 77 68 65  74 68 65 72 20 74 68 65  |ying whether the|
000b1080  20 64 72 69 76 65 20 69  73 20 72 65 61 64 79 20  | drive is ready |
000b1090  74 6f 20 61 63 63 65 70  74 20 63 6f 6d 6d 61 6e  |to accept comman|
000b10a0  64 73 20 6f 72 20 6e 6f  74 2e 0a 00 44 41 54 41  |ds or not...DATA|
000b10b0  05 01 00 00 43 44 5f 44  72 69 76 65 53 74 61 74  |....CD_DriveStat|
000b10c0  75 73 20 28 26 34 31 32  34 33 29 0a 23 50 61 72  |us (&41243).#Par|
000b10d0  65 6e 74 20 43 44 5f 0a  3d 3e 09 52 37 20 3d 09  |ent CD_.=>.R7 =.|
000b10e0  70 6f 69 6e 74 65 72 20  74 6f 20 3c 43 44 46 53  |pointer to <CDFS|
000b10f0  20 63 6f 6e 74 72 6f 6c  20 62 6c 6f 63 6b 3d 3e  | control block=>|
000b1100  43 44 46 53 5f 63 6f 6e  74 72 6f 6c 62 6c 6f 63  |CDFS_controlbloc|
000b1110  6b 3e 0a 3c 3d 09 52 30  20 3d 09 3c 73 74 61 74  |k>.<=.R0 =.<stat|
000b1120  75 73 3d 3e 2e 73 74 61  74 75 73 3e 0a 0a 52 65  |us=>.status>..Re|
000b1130  74 75 72 6e 73 20 64 72  69 76 65 20 73 74 61 74  |turns drive stat|
000b1140  75 73 0a 23 53 75 62 70  61 67 65 20 73 74 61 74  |us.#Subpage stat|
000b1150  75 73 0a 44 72 69 76 65  20 73 74 61 74 75 73 27  |us.Drive status'|
000b1160  0a 52 30 09 4d 65 61 6e  69 6e 67 0a 23 6c 69 6e  |.R0.Meaning.#lin|
000b1170  65 0a 31 09 27 4f 4b 27  0a 32 09 27 42 75 73 79  |e.1.'OK'.2.'Busy|
000b1180  27 0a 34 09 27 4e 6f 74  20 52 65 61 64 79 27 20  |'.4.'Not Ready' |
000b1190  65 2e 67 2e 20 44 72 69  76 65 20 65 6d 70 74 79  |e.g. Drive empty|
000b11a0  0a 38 09 27 55 6e 61 76  61 69 6c 61 62 6c 65 27  |.8.'Unavailable'|
000b11b0  0a 00 00 00 44 41 54 41  da 00 00 00 43 44 5f 56  |....DATA....CD_V|
000b11c0  65 72 73 69 6f 6e 20 20  28 26 34 31 32 34 30 29  |ersion  (&41240)|
000b11d0  0a 23 50 61 72 65 6e 74  20 43 44 5f 0a 3c 3d 09  |.#Parent CD_.<=.|
000b11e0  52 30 09 70 6f 69 6e 74  65 72 20 74 6f 20 3c 76  |R0.pointer to <v|
000b11f0  65 72 73 69 6f 6e 20 62  6c 6f 63 6b 3d 3e 2e 62  |ersion block=>.b|
000b1200  6c 6f 63 6b 3e 0a 0a 52  65 61 64 20 74 68 65 20  |lock>..Read the |
000b1210  76 65 72 73 69 6f 6e 20  6f 66 20 74 68 65 20 43  |version of the C|
000b1220  44 20 6d 6f 64 75 6c 65  20 69 6e 73 74 61 6c 6c  |D module install|
000b1230  65 64 0a 23 53 75 62 70  61 67 65 20 62 6c 6f 63  |ed.#Subpage bloc|
000b1240  6b 0a 43 44 5f 56 65 72  73 69 6f 6e 20 62 6c 6f  |k.CD_Version blo|
000b1250  63 6b 0a 4f 66 66 73 65  74 09 43 6f 6e 74 65 6e  |ck.Offset.Conten|
000b1260  74 73 0a 23 4c 69 6e 65  0a 30 09 56 65 72 73 69  |ts.#Line.0.Versi|
000b1270  6f 6e 20 6e 75 6d 62 65  72 0a 34 2e 2e 2e 09 56  |on number.4....V|
000b1280  65 72 73 69 6f 6e 20 73  74 72 69 6e 67 0a 00 00  |ersion string...|
000b1290  44 41 54 41 c8 00 00 00  43 44 5f 45 6a 65 63 74  |DATA....CD_Eject|
000b12a0  42 75 74 74 6f 6e 20 20  28 26 34 31 32 34 38 29  |Button  (&41248)|
000b12b0  0a 23 50 61 72 65 6e 74  20 43 44 5f 0a 3d 3e 09  |.#Parent CD_.=>.|
000b12c0  52 30 20 3d 09 66 6c 61  67 20 28 30 20 74 6f 20  |R0 =.flag (0 to |
000b12d0  65 6e 61 62 6c 65 20 65  6a 65 63 74 2c 20 31 20  |enable eject, 1 |
000b12e0  74 6f 20 64 69 73 61 62  6c 65 29 0a 09 52 37 20  |to disable)..R7 |
000b12f0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 3c 43 44  |=.pointer to <CD|
000b1300  46 53 20 63 6f 6e 74 72  6f 6c 20 62 6c 6f 63 6b  |FS control block|
000b1310  3d 3e 43 44 46 53 5f 63  6f 6e 74 72 6f 6c 62 6c  |=>CDFS_controlbl|
000b1320  6f 63 6b 3e 0a 0a 54 68  69 73 20 53 57 49 20 69  |ock>..This SWI i|
000b1330  73 20 75 73 65 64 20 74  6f 20 6c 6f 63 6b 20 6f  |s used to lock o|
000b1340  72 20 75 6e 6c 6f 63 6b  20 74 68 65 20 43 44 20  |r unlock the CD |
000b1350  64 72 61 77 65 72 2e 0a  44 41 54 41 f1 00 00 00  |drawer..DATA....|
000b1360  43 44 5f 44 69 73 63 43  68 61 6e 67 65 64 20 20  |CD_DiscChanged  |
000b1370  28 26 34 31 32 35 31 29  0a 23 50 61 72 65 6e 74  |(&41251).#Parent|
000b1380  20 43 44 5f 0a 3d 3e 09  52 37 20 3d 09 70 6f 69  | CD_.=>.R7 =.poi|
000b1390  6e 74 65 72 20 74 6f 20  3c 43 44 46 53 20 63 6f  |nter to <CDFS co|
000b13a0  6e 74 72 6f 6c 20 62 6c  6f 63 6b 3d 3e 43 44 46  |ntrol block=>CDF|
000b13b0  53 5f 63 6f 6e 74 72 6f  6c 62 6c 6f 63 6b 3e 0a  |S_controlblock>.|
000b13c0  3c 3d 09 52 30 20 3d 09  63 68 61 6e 67 65 64 20  |<=.R0 =.changed |
000b13d0  66 6c 61 67 20 28 30 20  69 66 20 75 6e 63 68 61  |flag (0 if uncha|
000b13e0  6e 67 65 64 2c 20 31 20  69 66 20 63 68 61 6e 67  |nged, 1 if chang|
000b13f0  65 64 29 0a 0a 54 68 69  73 20 53 57 49 20 63 68  |ed)..This SWI ch|
000b1400  65 63 6b 73 20 69 66 20  74 68 65 20 43 44 20 64  |ecks if the CD d|
000b1410  72 69 76 65 20 68 61 73  20 63 68 61 6e 67 65 64  |rive has changed|
000b1420  20 6f 72 20 6e 6f 74 20  73 69 6e 63 65 20 74 68  | or not since th|
000b1430  65 20 6c 61 73 74 20 63  61 6c 6c 20 74 6f 20 74  |e last call to t|
000b1440  68 69 73 20 53 57 49 2e  0a 00 00 00 44 41 54 41  |his SWI.....DATA|
000b1450  9a 00 00 00 43 44 5f 44  69 73 63 48 61 73 43 68  |....CD_DiscHasCh|
000b1460  61 6e 67 65 64 20 20 28  26 34 31 32 35 36 29 0a  |anged  (&41256).|
000b1470  23 50 61 72 65 6e 74 20  43 44 5f 0a 3d 3e 09 52  |#Parent CD_.=>.R|
000b1480  37 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 3c  |7 =.pointer to <|
000b1490  43 44 46 53 20 63 6f 6e  74 72 6f 6c 20 62 6c 6f  |CDFS control blo|
000b14a0  63 6b 3d 3e 43 44 46 53  5f 63 6f 6e 74 72 6f 6c  |ck=>CDFS_control|
000b14b0  62 6c 6f 63 6b 3e 0a 0a  54 68 69 73 20 53 57 49  |block>..This SWI|
000b14c0  20 6d 61 72 6b 73 20 74  68 65 20 43 44 20 64 69  | marks the CD di|
000b14d0  73 63 20 61 73 20 68 61  76 69 6e 67 20 63 68 61  |sc as having cha|
000b14e0  6e 67 65 64 2e 0a 00 00  44 41 54 41 a1 00 00 00  |nged....DATA....|
000b14f0  43 44 5f 43 6c 6f 73 65  44 72 61 77 65 72 20 28  |CD_CloseDrawer (|
000b1500  26 34 31 32 35 42 29 0a  23 50 61 72 65 6e 74 20  |&4125B).#Parent |
000b1510  43 44 5f 0a 3d 3e 09 52  37 20 3d 09 70 6f 69 6e  |CD_.=>.R7 =.poin|
000b1520  74 65 72 20 74 6f 20 3c  43 44 46 53 20 63 6f 6e  |ter to <CDFS con|
000b1530  74 72 6f 6c 20 62 6c 6f  63 6b 3d 3e 43 44 46 53  |trol block=>CDFS|
000b1540  5f 63 6f 6e 74 72 6f 6c  62 6c 6f 63 6b 3e 0a 0a  |_controlblock>..|
000b1550  54 68 69 73 20 53 57 49  20 63 6c 6f 73 65 73 20  |This SWI closes |
000b1560  74 68 65 20 43 44 20 64  72 61 77 65 72 20 69 66  |the CD drawer if|
000b1570  20 73 75 70 70 6f 72 74  65 64 20 62 79 20 74 68  | supported by th|
000b1580  65 20 64 72 69 76 65 2e  0a 00 00 00 44 41 54 41  |e drive.....DATA|
000b1590  bc 01 00 00 43 44 5f 53  75 70 70 6f 72 74 65 64  |....CD_Supported|
000b15a0  20 20 28 26 34 31 32 35  36 29 0a 23 50 61 72 65  |  (&41256).#Pare|
000b15b0  6e 74 20 43 44 5f 0a 3d  3e 09 52 37 20 3d 09 70  |nt CD_.=>.R7 =.p|
000b15c0  6f 69 6e 74 65 72 20 74  6f 20 3c 43 44 46 53 20  |ointer to <CDFS |
000b15d0  63 6f 6e 74 72 6f 6c 20  62 6c 6f 63 6b 3d 3e 43  |control block=>C|
000b15e0  44 46 53 5f 63 6f 6e 74  72 6f 6c 62 6c 6f 63 6b  |DFS_controlblock|
000b15f0  3e 0a 3c 3d 09 52 30 20  3d 09 3c 66 6c 61 67 73  |>.<=.R0 =.<flags|
000b1600  3d 3e 2e 66 6c 61 67 73  3e 0a 0a 54 68 69 73 20  |=>.flags>..This |
000b1610  53 57 49 20 63 68 65 63  6b 73 20 77 68 61 74 20  |SWI checks what |
000b1620  74 68 65 20 43 44 20 64  72 69 76 65 20 73 75 70  |the CD drive sup|
000b1630  70 6f 72 74 73 2e 0a 23  53 75 62 70 61 67 65 20  |ports..#Subpage |
000b1640  66 6c 61 67 73 0a 43 44  5f 53 75 70 70 6f 72 74  |flags.CD_Support|
000b1650  65 64 20 66 6c 61 67 73  0a 56 61 6c 75 65 09 4d  |ed flags.Value.M|
000b1660  65 61 6e 69 6e 67 0a 23  6c 69 6e 65 0a 26 37 09  |eaning.#line.&7.|
000b1670  28 73 75 70 70 6f 72 74  73 20 41 75 64 69 6f 20  |(supports Audio |
000b1680  43 6f 6e 74 72 6f 6c 20  3f 29 0a 26 38 09 53 75  |Control ?).&8.Su|
000b1690  70 70 6f 72 74 73 20 43  44 5f 50 72 65 66 65 74  |pports CD_Prefet|
000b16a0  63 68 0a 26 31 30 09 53  75 70 70 6f 72 74 73 20  |ch.&10.Supports |
000b16b0  3c 43 44 5f 43 6c 6f 73  65 44 72 61 77 65 72 3e  |<CD_CloseDrawer>|
000b16c0  0a 26 32 30 09 53 75 70  70 6f 72 74 73 20 43 44  |.&20.Supports CD|
000b16d0  5f 41 75 64 69 6f 4c 65  76 65 6c 0a 26 34 30 09  |_AudioLevel.&40.|
000b16e0  43 44 20 52 4f 4d 20 73  70 65 65 64 20 2d 20 69  |CD ROM speed - i|
000b16f0  6e 20 6d 75 6c 74 69 70  6c 65 73 20 75 70 20 74  |n multiples up t|
000b1700  6f 20 32 35 35 20 78 20  73 70 65 65 64 0a 26 34  |o 255 x speed.&4|
000b1710  30 30 30 09 53 75 70 70  6f 72 74 73 20 43 44 5f  |000.Supports CD_|
000b1720  52 65 61 64 41 75 64 69  6f 0a 26 38 30 30 30 09  |ReadAudio.&8000.|
000b1730  28 73 75 70 70 6f 72 74  73 20 41 75 64 69 6f 20  |(supports Audio |
000b1740  70 61 72 61 6d 73 29 0a  44 41 54 41 48 01 00 00  |params).DATAH...|
000b1750  43 44 5f 52 65 61 64 41  75 64 69 6f 20 20 28 26  |CD_ReadAudio  (&|
000b1760  34 31 32 36 36 29 0a 23  50 61 72 65 6e 74 20 43  |41266).#Parent C|
000b1770  44 5f 0a 3d 3e 09 52 30  20 3d 09 61 64 64 72 65  |D_.=>.R0 =.addre|
000b1780  73 73 69 6e 67 20 6d 6f  64 65 0a 09 52 31 20 3d  |ssing mode..R1 =|
000b1790  09 73 74 61 72 74 20 61  64 64 72 65 73 73 20 6f  |.start address o|
000b17a0  66 20 73 65 63 74 69 6f  6e 20 74 6f 20 67 72 61  |f section to gra|
000b17b0  62 0a 09 52 32 20 3d 09  6c 65 6e 67 74 68 20 6f  |b..R2 =.length o|
000b17c0  66 20 73 65 63 74 69 6f  6e 20 74 6f 20 67 72 61  |f section to gra|
000b17d0  62 0a 09 52 33 20 3d 09  70 6f 69 6e 74 65 72 20  |b..R3 =.pointer |
000b17e0  74 6f 20 64 65 73 74 69  6e 61 74 69 6f 6e 20 62  |to destination b|
000b17f0  75 66 66 65 72 20 28 6d  75 6c 74 69 70 6c 65 20  |uffer (multiple |
000b1800  6f 66 20 32 35 36 29 0a  09 52 37 20 3d 09 70 6f  |of 256)..R7 =.po|
000b1810  69 6e 74 65 72 20 74 6f  20 3c 43 44 46 53 20 63  |inter to <CDFS c|
000b1820  6f 6e 74 72 6f 6c 20 62  6c 6f 63 6b 3d 3e 43 44  |ontrol block=>CD|
000b1830  46 53 5f 63 6f 6e 74 72  6f 6c 62 6c 6f 63 6b 3e  |FS_controlblock>|
000b1840  0a 0a 54 68 69 73 20 53  57 49 20 72 65 61 64 73  |..This SWI reads|
000b1850  20 61 75 64 69 6f 20 64  61 74 61 20 66 72 6f 6d  | audio data from|
000b1860  20 64 69 73 63 2c 20 69  66 20 74 68 65 20 73 65  | disc, if the se|
000b1870  63 74 6f 72 20 69 73 20  6c 69 65 73 20 69 6e 20  |ctor is lies in |
000b1880  61 6e 20 61 75 64 69 6f  20 74 72 61 63 6b 2e 0a  |an audio track..|
000b1890  44 41 54 41 35 02 00 00  43 44 5f 52 65 67 69 73  |DATA5...CD_Regis|
000b18a0  74 65 72 20 28 26 34 31  32 36 30 29 0a 23 50 61  |ter (&41260).#Pa|
000b18b0  72 65 6e 74 20 43 44 5f  0a 3d 3e 09 52 30 20 3d  |rent CD_.=>.R0 =|
000b18c0  09 70 6f 69 6e 74 65 72  20 74 6f 20 61 20 3c 62  |.pointer to a <b|
000b18d0  6c 6f 63 6b 3d 3e 43 44  5f 69 6e 66 6f 62 6c 6f  |lock=>CD_infoblo|
000b18e0  63 6b 3e 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |ck>..R1 =.pointe|
000b18f0  72 20 74 6f 20 61 20 31  2d 77 6f 72 64 20 73 70  |r to a 1-word sp|
000b1900  65 63 69 61 6c 20 74 61  67 20 28 26 45 45 35 30  |ecial tag (&EE50|
000b1910  45 45 35 30 29 2c 20 66  6f 6c 6c 6f 77 65 64 20  |EE50), followed |
000b1920  62 79 20 68 61 6e 64 6c  65 72 20 63 6f 64 65 0a  |by handler code.|
000b1930  09 52 32 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R2 =.pointer to|
000b1940  20 77 6f 72 6b 73 70 61  63 65 20 66 6f 72 20 74  | workspace for t|
000b1950  68 65 20 73 6f 66 74 2d  6c 6f 61 64 61 62 6c 65  |he soft-loadable|
000b1960  20 6d 6f 64 75 6c 65 20  28 70 61 73 73 65 64 20  | module (passed |
000b1970  69 6e 20 52 31 32 20 74  6f 20 74 68 65 20 68 61  |in R12 to the ha|
000b1980  6e 64 6c 65 72 29 0a 0a  3c 3d 09 62 6c 6f 63 6b  |ndler)..<=.block|
000b1990  20 61 74 20 52 30 20 75  70 64 61 74 65 64 0a 0a  | at R0 updated..|
000b19a0  54 68 69 73 20 63 61 6c  6c 20 72 65 67 69 73 74  |This call regist|
000b19b0  65 72 73 20 74 68 65 20  73 6f 66 74 2d 6c 6f 61  |ers the soft-loa|
000b19c0  64 61 62 6c 65 20 64 72  69 76 65 72 20 77 69 74  |dable driver wit|
000b19d0  68 20 74 68 65 20 43 44  46 53 44 72 69 76 65 72  |h the CDFSDriver|
000b19e0  20 6d 6f 64 75 6c 65 2e  20 54 68 65 20 62 6c 6f  | module. The blo|
000b19f0  63 6b 20 70 6f 69 6e 74  65 64 20 74 6f 20 62 79  |ck pointed to by|
000b1a00  20 52 30 20 6f 6e 20 65  6e 74 72 79 20 6d 75 73  | R0 on entry mus|
000b1a10  74 20 62 65 20 69 6e 20  52 41 4d 2c 20 77 68 65  |t be in RAM, whe|
000b1a20  72 65 61 73 20 61 6e 79  74 68 69 6e 67 20 65 6c  |reas anything el|
000b1a30  73 65 2c 20 69 2e 65 2e  20 74 68 65 20 63 6f 64  |se, i.e. the cod|
000b1a40  65 20 66 6f 72 20 65 61  63 68 20 43 44 20 5f 53  |e for each CD _S|
000b1a50  57 49 2c 20 63 61 6e 20  62 65 20 69 6e 20 52 4f  |WI, can be in RO|
000b1a60  4d 2e 20 54 68 65 20 62  6c 6f 63 6b 20 6d 75 73  |M. The block mus|
000b1a70  74 20 73 74 61 79 20 70  75 74 20 69 6e 20 74 68  |t stay put in th|
000b1a80  65 20 6d 65 6d 6f 72 79  20 73 6f 20 74 68 61 74  |e memory so that|
000b1a90  20 43 44 46 53 44 72 69  76 65 72 20 63 61 6e 20  | CDFSDriver can |
000b1aa0  63 68 65 63 6b 20 69 74  20 77 68 65 6e 20 64 65  |check it when de|
000b1ab0  74 65 63 74 69 6e 67 20  64 72 69 76 65 20 74 79  |tecting drive ty|
000b1ac0  70 65 73 2e 0a 00 00 00  44 41 54 41 66 01 00 00  |pes.....DATAf...|
000b1ad0  43 44 5f 55 6e 72 65 67  69 73 74 65 72 20 28 26  |CD_Unregister (&|
000b1ae0  34 31 32 36 31 29 0a 23  50 61 72 65 6e 74 20 43  |41261).#Parent C|
000b1af0  44 5f 0a 3d 3e 09 52 30  20 3d 09 70 6f 69 6e 74  |D_.=>.R0 =.point|
000b1b00  65 72 20 74 6f 20 61 20  3c 62 6c 6f 63 6b 3d 3e  |er to a <block=>|
000b1b10  43 44 5f 69 6e 66 6f 62  6c 6f 63 6b 3e 0a 09 52  |CD_infoblock>..R|
000b1b20  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 61  |1 =.pointer to a|
000b1b30  20 73 70 65 63 69 61 6c  20 74 61 67 20 28 26 45  | special tag (&E|
000b1b40  45 35 30 45 45 35 30 20  3d 20 31 20 77 6f 72 64  |E50EE50 = 1 word|
000b1b50  29 20 66 6f 6c 6c 6f 77  65 64 20 62 79 20 74 68  |) followed by th|
000b1b60  65 20 68 61 6e 64 6c 65  72 20 63 6f 64 65 2e 0a  |e handler code..|
000b1b70  0a 52 65 6d 6f 76 65 73  20 74 68 65 20 73 6f 66  |.Removes the sof|
000b1b80  74 2d 6c 6f 61 64 61 62  6c 65 20 64 72 69 76 65  |t-loadable drive|
000b1b90  72 20 66 72 6f 6d 20 74  68 65 20 43 44 46 53 44  |r from the CDFSD|
000b1ba0  72 69 76 65 72 20 6d 6f  64 75 6c 65 2e 20 20 54  |river module.  T|
000b1bb0  68 65 20 62 6c 6f 63 6b  20 70 6f 69 6e 74 65 64  |he block pointed|
000b1bc0  20 74 6f 20 62 79 20 52  30 20 6f 6e 20 65 6e 74  | to by R0 on ent|
000b1bd0  72 79 20 6d 75 73 74 20  62 65 20 69 6e 20 52 41  |ry must be in RA|
000b1be0  4d 2c 20 77 68 65 72 65  61 73 20 61 6e 79 74 68  |M, whereas anyth|
000b1bf0  69 6e 67 20 65 6c 73 65  2c 20 69 2e 65 2e 20 74  |ing else, i.e. t|
000b1c00  68 65 20 63 6f 64 65 20  66 6f 72 20 65 61 63 68  |he code for each|
000b1c10  20 43 44 20 5f 20 53 57  49 2c 20 63 61 6e 20 62  | CD _ SWI, can b|
000b1c20  65 20 69 6e 20 74 68 65  20 52 4f 4d 2e 0a 00 00  |e in the ROM....|
000b1c30  44 41 54 41 9e 02 00 00  43 44 46 53 20 64 72 69  |DATA....CDFS dri|
000b1c40  76 65 72 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |ver information |
000b1c50  62 6c 6f 63 6b 0a 4f 66  66 73 65 74 09 43 6f 6e  |block.Offset.Con|
000b1c60  74 65 6e 74 73 0a 23 4c  69 6e 65 0a 30 09 49 6e  |tents.#Line.0.In|
000b1c70  66 6f 72 6d 61 74 69 6f  6e 20 77 6f 72 64 20 66  |formation word f|
000b1c80  6f 72 20 43 44 46 53 44  72 69 76 65 72 20 6d 6f  |or CDFSDriver mo|
000b1c90  64 75 6c 65 20 3a 0a 20  09 42 69 74 73 09 4d 65  |dule :. .Bits.Me|
000b1ca0  61 6e 69 6e 67 0a 20 09  30 2d 35 09 54 68 65 20  |aning. .0-5.The |
000b1cb0  6e 75 6d 62 65 72 20 6f  66 20 43 44 20 63 6f 6d  |number of CD com|
000b1cc0  6d 61 6e 64 73 20 72 65  63 6f 67 6e 69 73 65 64  |mands recognised|
000b1cd0  2c 20 63 75 72 72 65 6e  74 6c 79 20 33 31 2c 20  |, currently 31, |
000b1ce0  6d 61 78 69 6d 75 6d 20  36 33 0a 20 09 36 09 49  |maximum 63. .6.I|
000b1cf0  66 20 73 65 74 20 74 68  65 6e 20 75 73 65 20 74  |f set then use t|
000b1d00  68 65 20 53 43 53 49 20  31 20 72 65 61 64 20 64  |he SCSI 1 read d|
000b1d10  61 74 61 20 63 6f 6d 6d  61 6e 64 0a 20 09 37 09  |ata command. .7.|
000b1d20  49 66 20 73 65 74 20 74  68 65 6e 20 75 73 65 20  |If set then use |
000b1d30  74 68 65 20 53 43 53 49  20 31 20 73 65 65 6b 20  |the SCSI 1 seek |
000b1d40  63 6f 6d 6d 61 6e 64 0a  20 09 39 2d 33 31 09 52  |command. .9-31.R|
000b1d50  65 73 65 72 76 65 64 20  28 6d 75 73 74 20 62 65  |eserved (must be|
000b1d60  20 7a 65 72 6f 29 0a 34  09 4e 75 6d 62 65 72 20  | zero).4.Number |
000b1d70  6f 66 20 74 69 6d 65 73  20 72 65 67 69 73 74 65  |of times registe|
000b1d80  72 65 64 20 28 73 68 6f  75 6c 64 20 62 65 20 73  |red (should be s|
000b1d90  65 74 20 74 6f 20 7a 65  72 6f 20 61 6e 64 20 77  |et to zero and w|
000b1da0  69 6c 6c 20 62 65 20 75  70 64 61 74 65 64 20 62  |ill be updated b|
000b1db0  79 20 43 44 46 53 44 72  69 76 65 72 29 0a 38 09  |y CDFSDriver).8.|
000b1dc0  4e 75 6d 62 65 72 20 6f  66 20 64 72 69 76 65 20  |Number of drive |
000b1dd0  74 79 70 65 73 20 72 65  63 6f 67 6e 69 73 65 64  |types recognised|
000b1de0  20 62 79 20 74 68 69 73  20 64 72 69 76 65 72 0a  | by this driver.|
000b1df0  31 32 09 55 6e 75 73 65  64 20 28 6d 75 73 74 20  |12.Unused (must |
000b1e00  62 65 20 7a 65 72 6f 29  0a 31 36 09 55 6e 75 73  |be zero).16.Unus|
000b1e10  65 64 20 28 6d 75 73 74  20 62 65 20 7a 65 72 6f  |ed (must be zero|
000b1e20  29 0a 0a 6f 6e 20 6f 75  74 70 75 74 3a 0a 31 32  |)..on output:.12|
000b1e30  09 41 20 70 6f 69 6e 74  65 72 20 74 6f 20 61 20  |.A pointer to a |
000b1e40  72 6f 75 74 69 6e 65 20  74 6f 20 63 6f 6e 76 65  |routine to conve|
000b1e50  72 74 20 6c 6f 67 69 63  61 6c 20 62 6c 6f 63 6b  |rt logical block|
000b1e60  73 20 74 6f 20 6d 69 6e  75 74 65 73 2c 20 73 65  |s to minutes, se|
000b1e70  63 6f 6e 64 73 2c 20 66  72 61 6d 65 73 0a 31 36  |conds, frames.16|
000b1e80  09 41 20 70 6f 69 6e 74  65 72 20 74 6f 20 61 20  |.A pointer to a |
000b1e90  72 6f 75 74 69 6e 65 20  74 6f 20 63 6f 6e 76 65  |routine to conve|
000b1ea0  72 74 20 6d 69 6e 75 74  65 73 2c 20 73 65 63 6f  |rt minutes, seco|
000b1eb0  6e 64 73 2c 20 66 72 61  6d 65 73 20 74 6f 20 6c  |nds, frames to l|
000b1ec0  6f 67 69 63 61 6c 20 62  6c 6f 63 6b 73 0a 00 00  |ogical blocks...|
000b1ed0  44 41 54 41 73 01 00 00  43 44 5f 49 6e 71 75 69  |DATAs...CD_Inqui|
000b1ee0  72 79 0a 23 50 61 72 65  6e 74 20 43 44 5f 0a 3d  |ry.#Parent CD_.=|
000b1ef0  3e 09 52 30 20 3d 09 70  6f 69 6e 74 65 72 20 74  |>.R0 =.pointer t|
000b1f00  6f 20 3c 33 36 20 62 79  74 65 20 62 75 66 66 65  |o <36 byte buffe|
000b1f10  72 3d 3e 2e 62 75 66 66  65 72 3e 0a 09 52 37 20  |r=>.buffer>..R7 |
000b1f20  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 3c 43 44  |=.pointer to <CD|
000b1f30  46 53 20 63 6f 6e 74 72  6f 6c 20 62 6c 6f 63 6b  |FS control block|
000b1f40  3d 3e 43 44 46 53 5f 63  6f 6e 74 72 6f 6c 62 6c  |=>CDFS_controlbl|
000b1f50  6f 63 6b 3e 0a 0a 54 68  69 73 20 53 57 49 20 72  |ock>..This SWI r|
000b1f60  65 74 75 72 6e 73 20 74  68 65 20 43 44 20 52 6f  |eturns the CD Ro|
000b1f70  6d 20 64 65 76 69 63 65  20 69 6e 66 6f 72 6d 61  |m device informa|
000b1f80  74 69 6f 6e 2e 0a 23 73  75 62 70 61 67 65 20 62  |tion..#subpage b|
000b1f90  75 66 66 65 72 0a 43 44  5f 49 6e 71 75 69 72 79  |uffer.CD_Inquiry|
000b1fa0  20 62 75 66 66 65 72 0a  23 50 61 72 65 6e 74 20  | buffer.#Parent |
000b1fb0  43 44 5f 49 6e 71 75 69  72 79 0a 4f 66 66 73 65  |CD_Inquiry.Offse|
000b1fc0  74 09 43 6f 6e 74 65 6e  74 73 0a 23 4c 69 6e 65  |t.Contents.#Line|
000b1fd0  0a 2b 30 09 3f 0a 2b 34  09 3f 0a 2b 38 09 64 65  |.+0.?.+4.?.+8.de|
000b1fe0  76 69 63 65 20 6e 61 6d  65 2c 20 73 70 61 63 65  |vice name, space|
000b1ff0  20 70 61 64 64 65 64 20  74 6f 20 32 34 20 63 68  | padded to 24 ch|
000b2000  61 72 61 63 74 65 72 73  0a 2b 33 32 09 64 65 76  |aracters.+32.dev|
000b2010  69 63 65 20 66 69 72 65  77 61 72 65 20 76 65 72  |ice fireware ver|
000b2020  73 69 6f 6e 2c 20 73 70  61 63 65 20 70 61 64 64  |sion, space padd|
000b2030  65 64 20 74 6f 20 34 20  63 68 61 72 61 63 74 65  |ed to 4 characte|
000b2040  72 73 0a 00 44 41 54 41  c5 00 00 00 43 44 5f 47  |rs..DATA....CD_G|
000b2050  65 74 50 61 72 61 6d 65  74 65 72 73 0a 23 50 61  |etParameters.#Pa|
000b2060  72 65 6e 74 20 43 44 5f  0a 3d 3e 09 52 30 20 3d  |rent CD_.=>.R0 =|
000b2070  09 70 6f 69 6e 74 65 72  20 74 6f 20 3c 31 36 20  |.pointer to <16 |
000b2080  62 79 74 65 20 62 75 66  66 65 72 3d 3e 63 64 5f  |byte buffer=>cd_|
000b2090  64 61 74 61 70 61 72 61  6d 73 3e 0a 09 52 37 20  |dataparams>..R7 |
000b20a0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 3c 43 44  |=.pointer to <CD|
000b20b0  46 53 20 63 6f 6e 74 72  6f 6c 20 62 6c 6f 63 6b  |FS control block|
000b20c0  3d 3e 43 44 46 53 5f 63  6f 6e 74 72 6f 6c 62 6c  |=>CDFS_controlbl|
000b20d0  6f 63 6b 3e 0a 0a 54 68  69 73 20 53 57 49 20 72  |ock>..This SWI r|
000b20e0  65 74 75 72 6e 73 20 74  68 65 20 63 75 72 72 65  |eturns the curre|
000b20f0  6e 74 20 64 61 74 61 20  72 65 61 64 20 70 61 72  |nt data read par|
000b2100  61 6d 65 74 65 72 73 2e  0a 00 00 00 44 41 54 41  |ameters.....DATA|
000b2110  eb 00 00 00 43 44 20 64  61 74 61 20 70 61 72 61  |....CD data para|
000b2120  6d 65 74 65 72 73 20 62  6c 6f 63 6b 0a 23 50 61  |meters block.#Pa|
000b2130  72 65 6e 74 20 43 44 5f  47 65 74 50 61 72 61 6d  |rent CD_GetParam|
000b2140  65 74 65 72 73 0a 4f 66  66 73 65 74 09 43 6f 6e  |eters.Offset.Con|
000b2150  74 65 6e 74 73 0a 23 6c  69 6e 65 0a 30 09 4c 6f  |tents.#line.0.Lo|
000b2160  67 20 73 70 69 6e 2d 64  6f 77 6e 20 64 65 6c 61  |g spin-down dela|
000b2170  79 20 30 2d 31 35 20 28  30 20 65 71 75 69 76 69  |y 0-15 (0 equivi|
000b2180  6c 65 6e 74 20 74 6f 20  31 36 2c 20 31 20 3d 20  |lent to 16, 1 = |
000b2190  73 68 6f 72 74 65 73 74  29 0a 34 09 3f 0a 38 09  |shortest).4.?.8.|
000b21a0  52 65 61 64 20 6d 6f 64  65 20 28 30 2c 20 31 20  |Read mode (0, 1 |
000b21b0  61 6e 64 20 33 20 66 6f  72 20 64 61 74 61 2c 20  |and 3 for data, |
000b21c0  32 20 66 6f 72 20 61 75  64 69 6f 29 0a 31 32 09  |2 for audio).12.|
000b21d0  53 70 65 65 64 20 69 6e  20 6d 75 6c 74 69 70 6c  |Speed in multipl|
000b21e0  65 73 20 6f 66 20 27 73  74 61 6e 64 61 72 64 27  |es of 'standard'|
000b21f0  20 73 70 65 65 64 0a 00  44 41 54 41 c2 00 00 00  | speed..DATA....|
000b2200  43 44 5f 53 65 74 50 61  72 61 6d 65 74 65 72 73  |CD_SetParameters|
000b2210  0a 23 50 61 72 65 6e 74  20 43 44 5f 0a 3d 3e 09  |.#Parent CD_.=>.|
000b2220  52 30 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R0 =.pointer to |
000b2230  3c 31 36 20 62 79 74 65  20 62 75 66 66 65 72 3d  |<16 byte buffer=|
000b2240  3e 63 64 5f 64 61 74 61  70 61 72 61 6d 73 3e 0a  |>cd_dataparams>.|
000b2250  09 52 37 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R7 =.pointer to|
000b2260  20 3c 43 44 46 53 20 63  6f 6e 74 72 6f 6c 20 62  | <CDFS control b|
000b2270  6c 6f 63 6b 3d 3e 43 44  46 53 5f 63 6f 6e 74 72  |lock=>CDFS_contr|
000b2280  6f 6c 62 6c 6f 63 6b 3e  0a 0a 54 68 69 73 20 53  |olblock>..This S|
000b2290  57 49 20 73 65 74 73 20  74 68 65 20 63 75 72 72  |WI sets the curr|
000b22a0  65 6e 74 20 64 61 74 61  20 72 65 61 64 20 70 61  |ent data read pa|
000b22b0  72 61 6d 65 74 65 72 73  2e 0a 00 00 44 41 54 41  |rameters....DATA|
000b22c0  4e 01 00 00 43 44 5f 45  6e 71 75 69 72 65 44 61  |N...CD_EnquireDa|
000b22d0  74 61 4d 6f 64 65 0a 23  50 61 72 65 6e 74 20 43  |taMode.#Parent C|
000b22e0  44 5f 0a 3d 3e 09 52 30  20 3d 09 61 64 64 72 65  |D_.=>.R0 =.addre|
000b22f0  73 73 20 6d 6f 64 65 0a  09 52 31 20 3d 09 63 64  |ss mode..R1 =.cd|
000b2300  20 61 64 64 72 65 73 73  0a 09 52 37 20 3d 09 70  | address..R7 =.p|
000b2310  6f 69 6e 74 65 72 20 74  6f 20 3c 43 44 46 53 20  |ointer to <CDFS |
000b2320  63 6f 6e 74 72 6f 6c 20  62 6c 6f 63 6b 3d 3e 43  |control block=>C|
000b2330  44 46 53 5f 63 6f 6e 74  72 6f 6c 62 6c 6f 63 6b  |DFS_controlblock|
000b2340  3e 0a 3c 3d 09 52 30 20  3d 09 3c 44 61 74 61 20  |>.<=.R0 =.<Data |
000b2350  6d 6f 64 65 3d 3e 2e 64  61 74 61 6d 6f 64 65 3e  |mode=>.datamode>|
000b2360  0a 0a 54 68 69 73 20 53  57 49 20 66 69 6e 64 73  |..This SWI finds|
000b2370  20 6f 75 74 20 77 68 61  74 20 6b 69 6e 64 20 6f  | out what kind o|
000b2380  66 20 64 61 74 61 20 69  73 20 6f 6e 20 74 68 65  |f data is on the|
000b2390  20 64 69 73 63 2e 0a 23  53 75 62 70 61 67 65 20  | disc..#Subpage |
000b23a0  64 61 74 61 6d 6f 64 65  0a 44 61 74 61 20 6d 6f  |datamode.Data mo|
000b23b0  64 65 0a 4d 6f 64 65 09  4d 65 61 6e 69 6e 67 0a  |de.Mode.Meaning.|
000b23c0  23 4c 69 6e 65 0a 30 09  41 75 64 69 6f 0a 31 09  |#Line.0.Audio.1.|
000b23d0  44 61 74 61 20 4d 6f 64  65 20 31 0a 32 09 44 61  |Data Mode 1.2.Da|
000b23e0  74 61 20 4d 6f 64 65 20  32 20 66 6f 72 6d 61 74  |ta Mode 2 format|
000b23f0  20 31 0a 33 09 44 61 74  61 20 4d 6f 64 65 20 32  | 1.3.Data Mode 2|
000b2400  20 66 6f 72 6d 61 74 20  32 0a 00 00 44 41 54 41  | format 2...DATA|
000b2410  83 00 00 00 43 44 5f 43  6f 6e 74 72 6f 6c 0a 23  |....CD_Control.#|
000b2420  50 61 72 65 6e 74 20 43  44 5f 0a 3d 3e 09 52 30  |Parent CD_.=>.R0|
000b2430  20 3d 09 31 0a 09 52 37  20 3d 09 70 6f 69 6e 74  | =.1..R7 =.point|
000b2440  65 72 20 74 6f 20 3c 43  44 46 53 20 63 6f 6e 74  |er to <CDFS cont|
000b2450  72 6f 6c 20 62 6c 6f 63  6b 3d 3e 43 44 46 53 5f  |rol block=>CDFS_|
000b2460  63 6f 6e 74 72 6f 6c 62  6c 6f 63 6b 3e 0a 0a 54  |controlblock>..T|
000b2470  68 69 73 20 53 57 49 20  69 6e 69 74 69 61 6c 69  |his SWI initiali|
000b2480  73 65 73 20 74 68 65 20  64 72 69 76 65 2e 0a 00  |ses the drive...|
000b2490  44 41 54 41 3c 01 00 00  43 44 5f 52 65 61 64 44  |DATA<...CD_ReadD|
000b24a0  61 74 61 0a 23 50 61 72  65 6e 74 20 43 44 5f 0a  |ata.#Parent CD_.|
000b24b0  3d 3e 09 52 30 20 3d 09  30 0a 09 52 31 20 3d 09  |=>.R0 =.0..R1 =.|
000b24c0  73 74 61 72 74 20 73 65  63 74 6f 72 0a 09 52 32  |start sector..R2|
000b24d0  20 3d 09 6e 75 6d 62 65  72 20 6f 66 20 73 65 63  | =.number of sec|
000b24e0  74 6f 72 73 20 74 6f 20  72 65 61 64 0a 09 52 33  |tors to read..R3|
000b24f0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 64 65  | =.pointer to de|
000b2500  73 74 69 6e 61 74 69 6f  6e 20 62 75 66 66 65 72  |stination buffer|
000b2510  0a 09 52 34 20 3d 09 6c  65 6e 67 74 68 20 6f 66  |..R4 =.length of|
000b2520  20 62 75 66 66 65 72 0a  09 52 37 20 3d 09 70 6f  | buffer..R7 =.po|
000b2530  69 6e 74 65 72 20 74 6f  20 3c 43 44 46 53 20 63  |inter to <CDFS c|
000b2540  6f 6e 74 72 6f 6c 20 62  6c 6f 63 6b 3d 3e 43 44  |ontrol block=>CD|
000b2550  46 53 5f 63 6f 6e 74 72  6f 6c 62 6c 6f 63 6b 3e  |FS_controlblock>|
000b2560  0a 0a 54 68 69 73 20 53  57 49 20 72 65 61 64 73  |..This SWI reads|
000b2570  20 64 61 74 61 20 66 72  6f 6d 20 74 68 65 20 43  | data from the C|
000b2580  44 2c 20 75 73 69 6e 67  20 74 68 65 20 63 75 72  |D, using the cur|
000b2590  72 65 6e 74 20 6d 6f 64  65 20 28 73 65 65 20 3c  |rent mode (see <|
000b25a0  43 44 5f 53 65 74 50 61  72 61 6d 65 74 65 72 73  |CD_SetParameters|
000b25b0  3e 20 61 6e 64 20 3c 43  44 5f 45 6e 71 75 69 72  |> and <CD_Enquir|
000b25c0  65 44 61 74 61 4d 6f 64  65 3e 29 0a 44 41 54 41  |eDataMode>).DATA|
000b25d0  b7 00 00 00 43 44 5f 43  68 65 63 6b 44 72 69 76  |....CD_CheckDriv|
000b25e0  65 20 28 26 34 31 32 35  30 29 0a 23 50 61 72 65  |e (&41250).#Pare|
000b25f0  6e 74 20 43 44 5f 0a 3d  3e 09 52 37 20 3d 09 70  |nt CD_.=>.R7 =.p|
000b2600  6f 69 6e 74 65 72 20 74  6f 20 3c 43 44 46 53 20  |ointer to <CDFS |
000b2610  63 6f 6e 74 72 6f 6c 20  62 6c 6f 63 6b 3d 3e 43  |control block=>C|
000b2620  44 46 53 5f 63 6f 6e 74  72 6f 6c 62 6c 6f 63 6b  |DFS_controlblock|
000b2630  3e 0a 3c 3d 09 52 30 20  3d 09 30 20 69 66 20 43  |>.<=.R0 =.0 if C|
000b2640  44 20 69 6e 20 64 72 69  76 65 2c 20 65 72 72 6f  |D in drive, erro|
000b2650  72 20 6f 74 68 65 72 77  69 73 65 0a 0a 54 68 69  |r otherwise..Thi|
000b2660  73 20 53 57 49 20 63 68  65 63 6b 73 20 74 68 65  |s SWI checks the|
000b2670  20 64 72 69 76 65 20 66  6f 72 20 61 20 64 69 73  | drive for a dis|
000b2680  63 2e 0a 00 44 41 54 41  da 00 00 00 43 44 5f 49  |c...DATA....CD_I|
000b2690  73 44 72 61 77 65 72 4c  6f 63 6b 65 64 20 28 26  |sDrawerLocked (&|
000b26a0  34 31 32 35 43 29 0a 23  50 61 72 65 6e 74 20 43  |4125C).#Parent C|
000b26b0  44 5f 0a 3d 3e 09 52 37  20 3d 09 70 6f 69 6e 74  |D_.=>.R7 =.point|
000b26c0  65 72 20 74 6f 20 3c 43  44 46 53 20 63 6f 6e 74  |er to <CDFS cont|
000b26d0  72 6f 6c 20 62 6c 6f 63  6b 3d 3e 43 44 46 53 5f  |rol block=>CDFS_|
000b26e0  63 6f 6e 74 72 6f 6c 62  6c 6f 63 6b 3e 0a 3c 3d  |controlblock>.<=|
000b26f0  09 52 30 20 3d 09 30 20  69 66 20 6e 6f 74 20 6c  |.R0 =.0 if not l|
000b2700  6f 63 6b 65 64 2c 20 31  20 69 66 20 6c 6f 63 6b  |ocked, 1 if lock|
000b2710  65 64 2c 20 6f 72 20 61  6e 20 65 72 72 6f 72 20  |ed, or an error |
000b2720  69 66 20 6e 6f 74 20 73  75 70 70 6f 72 74 65 64  |if not supported|
000b2730  0a 0a 54 68 69 73 20 53  57 49 20 63 68 65 63 6b  |..This SWI check|
000b2740  73 20 77 68 65 74 68 65  72 20 74 68 65 20 64 72  |s whether the dr|
000b2750  61 77 20 69 73 20 6c 6f  63 6b 65 64 2e 0a 00 00  |aw is locked....|
000b2760  44 49 52 24 2c 00 00 00  2c 00 00 00 8c 27 0b 00  |DIR$,...,....'..|
000b2770  47 fd ff ff 3d 0f 84 82  50 00 00 00 13 00 00 00  |G...=...P.......|
000b2780  00 00 00 00 21 52 6f 6f  74 00 00 00 44 41 54 41  |....!Root...DATA|
000b2790  50 00 00 00 41 54 41 50  49 0a 23 50 61 72 65 6e  |P...ATAPI.#Paren|
000b27a0  74 20 21 52 6f 6f 74 0a  23 50 72 65 66 69 78 20  |t !Root.#Prefix |
000b27b0  41 54 41 50 49 5f 0a 23  54 61 62 6c 65 20 43 6f  |ATAPI_.#Table Co|
000b27c0  6c 75 6d 6e 73 20 32 0a  47 65 74 44 72 69 76 65  |lumns 2.GetDrive|
000b27d0  73 0a 23 45 6e 64 54 61  62 6c 65 0a 44 49 52 24  |s.#EndTable.DIR$|
000b27e0  2c 00 00 00 2c 00 00 00  08 28 0b 00 46 fd ff ff  |,...,....(..F...|
000b27f0  94 9b bf 55 c4 00 00 00  13 00 00 00 00 00 00 00  |...U............|
000b2800  21 52 6f 6f 74 00 00 00  44 41 54 41 c4 00 00 00  |!Root...DATA....|
000b2810  52 65 6d 6f 74 65 50 72  69 6e 74 65 72 53 75 70  |RemotePrinterSup|
000b2820  70 6f 72 74 0a 23 50 61  72 65 6e 74 20 21 52 6f  |port.#Parent !Ro|
000b2830  6f 74 0a 23 50 72 65 66  69 78 20 52 65 6d 6f 74  |ot.#Prefix Remot|
000b2840  65 50 72 69 6e 74 65 72  53 75 70 70 6f 72 74 5f  |ePrinterSupport_|
000b2850  0a 23 54 61 62 6c 65 20  43 6f 6c 75 6d 6e 73 20  |.#Table Columns |
000b2860  32 0a 52 65 61 64 50 6f  6c 6c 77 6f 72 64 4c 6f  |2.ReadPollwordLo|
000b2870  63 61 74 69 6f 6e 0a 47  65 74 4e 65 78 74 45 76  |cation.GetNextEv|
000b2880  65 6e 74 0a 52 65 61 64  55 6e 69 71 75 65 41 64  |ent.ReadUniqueAd|
000b2890  64 72 65 73 73 0a 45 6e  61 62 6c 65 0a 44 69 73  |dress.Enable.Dis|
000b28a0  61 62 6c 65 0a 45 6e 61  62 6c 65 55 70 63 61 6c  |able.EnableUpcal|
000b28b0  6c 73 0a 44 69 73 61 62  6c 65 55 70 63 61 6c 6c  |ls.DisableUpcall|
000b28c0  73 0a 23 45 6e 64 54 61  62 6c 65 0a 44 49 52 24  |s.#EndTable.DIR$|
000b28d0  50 00 00 00 50 00 00 00  1c 29 0b 00 48 fd ff ff  |P...P....)..H...|
000b28e0  11 fc 1a 0b 5b 00 00 00  13 00 00 00 00 00 00 00  |....[...........|
000b28f0  21 52 6f 6f 74 00 00 00  78 29 0b 00 48 ff ff ff  |!Root...x)..H...|
000b2900  2c ee 1b 0b 4f 00 00 00  13 00 00 00 00 00 00 00  |,...O...........|
000b2910  4d 61 6b 65 46 6f 6e 74  00 00 00 00 44 41 54 41  |MakeFont....DATA|
000b2920  5b 00 00 00 4d 61 6b 65  50 53 46 6f 6e 74 0a 23  |[...MakePSFont.#|
000b2930  50 61 72 65 6e 74 20 21  52 6f 6f 74 0a 23 50 72  |Parent !Root.#Pr|
000b2940  65 66 69 78 20 4d 61 6b  65 50 53 46 6f 6e 74 5f  |efix MakePSFont_|
000b2950  0a 23 54 61 62 6c 65 20  43 6f 6c 75 6d 6e 73 20  |.#Table Columns |
000b2960  32 0a 3c 4d 61 6b 65 46  6f 6e 74 3e 0a 23 45 6e  |2.<MakeFont>.#En|
000b2970  64 54 61 62 6c 65 0a 00  44 41 54 41 4f 00 00 00  |dTable..DATAO...|
000b2980  4d 61 6b 65 50 53 46 6f  6e 74 5f 4d 61 6b 65 46  |MakePSFont_MakeF|
000b2990  6f 6e 74 20 20 28 26 34  33 34 34 30 29 0a 23 50  |ont  (&43440).#P|
000b29a0  61 72 65 6e 74 20 4d 61  6b 65 50 53 46 6f 6e 74  |arent MakePSFont|
000b29b0  0a 46 6f 72 20 69 6e 74  65 72 6e 61 6c 20 75 73  |.For internal us|
000b29c0  65 20 6f 6e 6c 79 2e 00  44 49 52 24 28 01 00 00  |e only..DIR$(...|
000b29d0  28 01 00 00 f0 2a 0b 00  48 fd ff ff dc 7d 40 11  |(....*..H....}@.|
000b29e0  90 00 00 00 33 00 00 00  00 00 00 00 21 52 6f 6f  |....3.......!Roo|
000b29f0  74 00 00 00 80 2b 0b 00  48 fd ff ff e0 ef fc 1c  |t....+..H.......|
000b2a00  91 01 00 00 33 00 00 00  00 00 00 00 42 4d 55 76  |....3.......BMUv|
000b2a10  61 72 73 00 14 2d 0b 00  48 ff ff ff 3a ae 41 11  |ars..-..H...:.A.|
000b2a20  38 01 00 00 13 00 00 00  00 00 00 00 43 6f 6d 6d  |8...........Comm|
000b2a30  61 6e 64 42 4d 55 00 00  4c 2e 0b 00 48 ff ff ff  |andBMU..L...H...|
000b2a40  cf 74 40 11 ff 03 00 00  13 00 00 00 00 00 00 00  |.t@.............|
000b2a50  43 6f 6e 74 72 6f 6c 00  4c 32 0b 00 48 ff ff ff  |Control.L2..H...|
000b2a60  1e 48 41 11 bb 00 00 00  13 00 00 00 00 00 00 00  |.HA.............|
000b2a70  52 65 61 64 42 4d 55 56  61 72 69 61 62 6c 65 00  |ReadBMUVariable.|
000b2a80  08 33 0b 00 48 ff ff ff  0a a5 3f 11 37 01 00 00  |.3..H.....?.7...|
000b2a90  13 00 00 00 00 00 00 00  53 70 65 65 64 00 00 00  |........Speed...|
000b2aa0  40 34 0b 00 48 ff ff ff  8f 60 41 11 12 01 00 00  |@4..H....`A.....|
000b2ab0  13 00 00 00 00 00 00 00  57 72 69 74 65 42 4d 55  |........WriteBMU|
000b2ac0  56 61 72 69 61 62 6c 65  00 00 00 00 54 35 0b 00  |Variable....T5..|
000b2ad0  48 fd ff ff 6e eb fc 1c  e6 00 00 00 33 00 00 00  |H...n.......3...|
000b2ae0  00 00 00 00 42 4d 55 66  6c 61 67 73 00 00 00 00  |....BMUflags....|
000b2af0  44 41 54 41 90 00 00 00  50 6f 72 74 61 62 6c 65  |DATA....Portable|
000b2b00  0a 23 50 61 72 65 6e 74  20 21 52 6f 6f 74 0a 23  |.#Parent !Root.#|
000b2b10  50 72 65 66 69 78 20 50  6f 72 74 61 62 6c 65 5f  |Prefix Portable_|
000b2b20  0a 23 54 61 62 6c 65 20  43 6f 6c 75 6d 6e 73 20  |.#Table Columns |
000b2b30  32 0a 3c 53 70 65 65 64  3e 0a 3c 43 6f 6e 74 72  |2.<Speed>.<Contr|
000b2b40  6f 6c 3e 0a 3c 52 65 61  64 42 4d 55 56 61 72 69  |ol>.<ReadBMUVari|
000b2b50  61 62 6c 65 3e 0a 3c 57  72 69 74 65 42 4d 55 56  |able>.<WriteBMUV|
000b2b60  61 72 69 61 62 6c 65 3e  0a 3c 43 6f 6d 6d 61 6e  |ariable>.<Comman|
000b2b70  64 42 4d 55 3e 0a 23 45  6e 64 54 61 62 6c 65 0a  |dBMU>.#EndTable.|
000b2b80  44 41 54 41 91 01 00 00  42 61 74 74 65 72 79 20  |DATA....Battery |
000b2b90  4d 61 6e 61 67 65 6d 65  6e 74 20 55 6e 69 74 20  |Management Unit |
000b2ba0  56 61 72 69 61 62 6c 65  73 0a 23 50 61 72 65 6e  |Variables.#Paren|
000b2bb0  74 20 50 6f 72 74 61 62  6c 65 5f 0a 4e 75 6d 62  |t Portable_.Numb|
000b2bc0  65 72 09 44 65 73 63 72  69 70 74 69 6f 6e 0a 23  |er.Description.#|
000b2bd0  6c 69 6e 65 0a 30 09 76  65 72 73 69 6f 6e 20 6e  |line.0.version n|
000b2be0  75 6d 62 65 72 20 61 6e  64 20 6d 65 6d 6f 72 79  |umber and memory|
000b2bf0  20 6d 61 70 20 6f 66 20  42 4d 55 20 6d 69 63 72  | map of BMU micr|
000b2c00  6f 63 6f 64 65 0a 31 09  62 61 74 74 65 72 79 20  |ocode.1.battery |
000b2c10  63 61 70 61 63 69 74 79  09 28 6e 6f 6d 69 6e 61  |capacity.(nomina|
000b2c20  6c 29 0a 32 09 20 09 09  09 28 6d 65 61 73 75 72  |l).2. ...(measur|
000b2c30  65 64 29 0a 33 09 20 09  09 09 28 75 73 65 64 29  |ed).3. ...(used)|
000b2c40  0a 34 09 20 09 09 09 28  75 73 65 61 62 6c 65 29  |.4. ...(useable)|
000b2c50  0a 35 09 28 72 65 73 65  72 76 65 64 29 0a 36 09  |.5.(reserved).6.|
000b2c60  63 68 61 72 67 65 20 65  73 74 69 6d 61 74 65 20  |charge estimate |
000b2c70  28 7b 2a 7d 6d 61 79 7b  2a 7d 20 62 65 20 77 72  |({*}may{*} be wr|
000b2c80  69 74 74 65 6e 20 74 6f  29 0a 37 09 69 6e 73 74  |itten to).7.inst|
000b2c90  61 6e 74 61 6e 65 6f 75  73 20 76 6f 6c 74 61 67  |antaneous voltag|
000b2ca0  65 0a 38 09 69 6e 73 74  61 6e 74 61 6e 65 6f 75  |e.8.instantaneou|
000b2cb0  73 20 63 75 72 72 65 6e  74 0a 39 09 69 6e 73 74  |s current.9.inst|
000b2cc0  61 6e 74 61 6e 65 6f 75  73 20 74 65 6d 70 65 72  |antaneous temper|
000b2cd0  61 74 75 72 65 0a 31 30  09 3c 66 6c 61 67 73 3d  |ature.10.<flags=|
000b2ce0  3e 50 6f 72 74 61 62 6c  65 5f 42 4d 55 66 6c 61  |>Portable_BMUfla|
000b2cf0  67 73 3e 0a 31 31 09 63  68 61 72 67 65 20 72 61  |gs>.11.charge ra|
000b2d00  74 65 20 28 69 6e 20 62  69 74 73 20 34 2d 37 29  |te (in bits 4-7)|
000b2d10  0a 00 00 00 44 41 54 41  38 01 00 00 50 6f 72 74  |....DATA8...Port|
000b2d20  61 62 6c 65 5f 43 6f 6d  6d 61 6e 64 42 4d 55 20  |able_CommandBMU |
000b2d30  20 28 26 34 32 46 43 34  29 0a 23 50 61 72 65 6e  | (&42FC4).#Paren|
000b2d40  74 20 50 6f 72 74 61 62  6c 65 5f 0a 3d 3e 09 52  |t Portable_.=>.R|
000b2d50  30 20 3d 09 52 65 61 73  6f 6e 20 63 6f 64 65 0a  |0 =.Reason code.|
000b2d60  09 20 09 31 09 72 65 6d  6f 76 65 20 70 6f 77 65  |. .1.remove powe|
000b2d70  72 0a 09 20 09 34 09 73  65 74 20 61 75 74 6f 73  |r.. .4.set autos|
000b2d80  74 61 72 74 0a 09 52 31  20 3d 09 61 75 74 6f 73  |tart..R1 =.autos|
000b2d90  74 61 72 74 20 64 65 6c  61 79 20 69 6e 20 6d 69  |tart delay in mi|
000b2da0  6e 75 74 65 73 0a 3c 3d  09 61 6c 6c 20 72 65 67  |nutes.<=.all reg|
000b2db0  69 73 74 65 72 73 20 70  72 65 73 65 72 76 65 64  |isters preserved|
000b2dc0  0a 0a 0a 54 68 69 73 20  63 61 6c 6c 20 69 73 73  |...This call iss|
000b2dd0  75 65 73 20 61 20 63 6f  6d 6d 61 6e 64 20 74 6f  |ues a command to|
000b2de0  20 74 68 65 20 42 61 74  74 65 72 79 20 4d 61 6e  | the Battery Man|
000b2df0  61 67 65 6d 65 6e 74 20  55 6e 69 74 2e 20 54 68  |agement Unit. Th|
000b2e00  65 20 76 61 6c 75 65 20  6f 66 20 3c 42 4d 55 20  |e value of <BMU |
000b2e10  76 61 72 69 61 62 6c 65  73 3d 3e 50 6f 72 74 61  |variables=>Porta|
000b2e20  62 6c 65 5f 42 4d 55 76  61 72 73 3e 20 6d 61 79  |ble_BMUvars> may|
000b2e30  20 6e 6f 74 20 69 6d 6d  65 64 69 61 74 65 6c 79  | not immediately|
000b2e40  20 62 65 20 75 70 64 61  74 65 64 2e 44 41 54 41  | be updated.DATA|
000b2e50  ff 03 00 00 50 6f 72 74  61 62 6c 65 5f 43 6f 6e  |....Portable_Con|
000b2e60  74 72 6f 6c 20 20 28 26  34 32 46 43 31 29 0a 23  |trol  (&42FC1).#|
000b2e70  50 61 72 65 6e 74 20 50  6f 72 74 61 62 6c 65 5f  |Parent Portable_|
000b2e80  0a 3d 3e 09 52 30 20 3d  09 45 4f 52 20 6d 61 73  |.=>.R0 =.EOR mas|
000b2e90  6b 0a 09 52 31 20 3d 09  41 4e 44 20 6d 61 73 6b  |k..R1 =.AND mask|
000b2ea0  0a 3c 3d 09 52 30 20 3d  09 6f 6c 64 20 63 6f 6e  |.<=.R0 =.old con|
000b2eb0  74 72 6f 6c 20 76 61 6c  75 65 0a 09 52 31 20 3d  |trol value..R1 =|
000b2ec0  09 6e 65 77 20 63 6f 6e  74 72 6f 6c 20 76 61 6c  |.new control val|
000b2ed0  75 65 0a 0a 54 68 69 73  20 63 61 6c 6c 20 63 6f  |ue..This call co|
000b2ee0  6e 74 72 6f 6c 73 20 70  6f 77 65 72 20 61 6e 64  |ntrols power and|
000b2ef0  20 6d 69 73 63 61 6c 6c  61 6e 65 6f 75 73 20 66  | miscallaneous f|
000b2f00  65 61 74 75 72 65 73 3a  0a 0a 20 20 20 4e 65 77  |eatures:..   New|
000b2f10  20 76 61 6c 75 65 20 3d  20 28 4f 6c 64 20 76 61  | value = (Old va|
000b2f20  6c 75 65 20 41 4e 44 20  52 32 29 20 45 4f 52 20  |lue AND R2) EOR |
000b2f30  52 31 0a 0a 56 61 6c 75  65 20 69 73 20 61 20 62  |R1..Value is a b|
000b2f40  69 74 66 69 65 6c 64 20  73 70 65 63 69 66 79 69  |itfield specifyi|
000b2f50  6e 67 3a 0a 0a 23 74 61  62 0a 62 69 74 09 6d 65  |ng:..#tab.bit.me|
000b2f60  61 6e 69 6e 67 20 77 68  65 6e 20 73 65 74 0a 23  |aning when set.#|
000b2f70  6c 69 6e 65 0a 30 09 45  63 6f 6e 65 74 20 70 6f  |line.0.Econet po|
000b2f80  77 65 72 20 65 6e 61 62  6c 65 64 0a 31 09 4c 43  |wer enabled.1.LC|
000b2f90  44 20 64 69 73 70 6c 61  79 20 70 6f 77 65 72 20  |D display power |
000b2fa0  65 6e 61 62 6c 65 64 0a  32 09 65 78 74 65 72 6e  |enabled.2.extern|
000b2fb0  61 6c 20 76 69 64 65 6f  20 64 69 73 70 6c 61 79  |al video display|
000b2fc0  20 70 6f 77 65 72 20 65  6e 61 62 6c 65 64 0a 33  | power enabled.3|
000b2fd0  09 73 65 72 69 61 6c 20  62 75 66 66 65 72 20 61  |.serial buffer a|
000b2fe0  6e 64 20 6f 73 63 69 6c  6c 61 74 6f 72 20 70 6f  |nd oscillator po|
000b2ff0  77 65 72 20 65 6e 61 62  6c 65 64 0a 34 09 64 75  |wer enabled.4.du|
000b3000  61 6c 20 70 61 6e 65 6c  20 6d 6f 64 65 0a 35 2c  |al panel mode.5,|
000b3010  36 09 76 69 64 65 6f 20  63 6c 6f 63 6b 20 63 6f  |6.video clock co|
000b3020  6e 74 72 6f 6c 3a 0a 20  09 30 09 65 78 74 65 72  |ntrol:. .0.exter|
000b3030  6e 61 6c 20 63 6c 6f 63  6b 0a 20 09 31 09 63 72  |nal clock. .1.cr|
000b3040  79 73 74 61 6c 20 f7 20  32 0a 20 09 32 09 63 72  |ystal . 2. .2.cr|
000b3050  79 73 74 61 6c 0a 20 09  33 09 72 65 73 65 72 76  |ystal. .3.reserv|
000b3060  65 64 0a 37 09 69 6e 76  65 72 74 20 76 69 64 65  |ed.7.invert vide|
000b3070  6f 20 63 6c 6f 63 6b 0a  38 09 65 6e 61 62 6c 65  |o clock.8.enable|
000b3080  20 62 61 63 6b 20 6c 69  67 68 74 0a 39 09 64 69  | back light.9.di|
000b3090  73 70 6c 61 79 20 68 61  73 20 32 20 65 78 74 72  |splay has 2 extr|
000b30a0  61 20 6c 69 6e 65 73 20  28 65 6c 73 65 20 31 20  |a lines (else 1 |
000b30b0  65 78 74 72 61 29 0a 31  30 09 32 20 44 52 41 4d  |extra).10.2 DRAM|
000b30c0  73 20 75 73 65 64 20 66  6f 72 20 64 75 61 6c 20  |s used for dual |
000b30d0  70 61 6e 65 6c 20 28 65  6c 73 65 20 31 29 0a 31  |panel (else 1).1|
000b30e0  34 09 46 44 43 20 6f 73  63 69 6c 6c 61 74 6f 72  |4.FDC oscillator|
000b30f0  20 70 6f 77 65 72 20 65  6e 61 62 6c 65 64 0a 31  | power enabled.1|
000b3100  36 09 4c 43 44 20 70 61  6c 65 74 74 65 20 73 65  |6.LCD palette se|
000b3110  74 20 66 6f 72 20 69 6e  76 65 72 73 65 20 76 69  |t for inverse vi|
000b3120  64 65 6f 0a 31 31 2d 31  33 2c 31 35 2c 31 37 2d  |deo.11-13,15,17-|
000b3130  33 31 09 30 20 28 72 65  73 65 72 76 65 64 29 0a  |31.0 (reserved).|
000b3140  0a 43 68 61 6e 67 69 6e  67 20 62 69 74 73 20 30  |.Changing bits 0|
000b3150  2c 20 33 2c 20 31 34 20  77 69 6c 6c 20 67 65 6e  |, 3, 14 will gen|
000b3160  65 72 61 74 65 20 3c 53  65 72 76 69 63 65 5f 50  |erate <Service_P|
000b3170  6f 72 74 61 62 6c 65 3d  3e 73 65 72 76 69 63 65  |ortable=>service|
000b3180  5f 38 61 3e 2e 0a 0a 54  68 65 20 38 32 43 37 31  |_8a>...The 82C71|
000b3190  31 20 73 68 61 72 65 73  20 6f 6e 65 20 6f 73 63  |1 shares one osc|
000b31a0  69 6c 6c 61 74 6f 72 20  2d 20 74 68 69 73 20 77  |illator - this w|
000b31b0  69 6c 6c 20 6f 6e 6c 79  20 62 65 20 70 6f 77 65  |ill only be powe|
000b31c0  72 65 64 20 64 6f 77 6e  20 69 66 20 62 69 74 73  |red down if bits|
000b31d0  20 33 20 26 20 31 34 20  61 72 65 20 62 6f 74 68  | 3 & 14 are both|
000b31e0  20 63 6c 65 61 72 2e 20  4f 6e 20 73 6f 6d 65 20  | clear. On some |
000b31f0  6d 61 63 68 69 6e 65 73  20 74 68 65 20 6f 73 63  |machines the osc|
000b3200  69 6c 6c 61 74 6f 72 20  69 73 20 75 73 65 64 20  |illator is used |
000b3210  62 79 20 6f 74 68 65 72  20 70 61 72 74 73 20 6f  |by other parts o|
000b3220  66 20 74 68 65 20 73 79  73 74 65 6d 20 61 6e 64  |f the system and|
000b3230  20 63 61 6e 20 6e 65 76  65 72 20 62 65 20 70 6f  | can never be po|
000b3240  77 65 72 65 64 20 64 6f  77 6e 2e 00 44 41 54 41  |wered down..DATA|
000b3250  bb 00 00 00 50 6f 72 74  61 62 6c 65 5f 52 65 61  |....Portable_Rea|
000b3260  64 42 4d 55 56 61 72 69  61 62 6c 65 20 20 28 26  |dBMUVariable  (&|
000b3270  34 32 46 43 32 29 0a 23  50 61 72 65 6e 74 20 50  |42FC2).#Parent P|
000b3280  6f 72 74 61 62 6c 65 5f  0a 3d 3e 09 52 30 20 3d  |ortable_.=>.R0 =|
000b3290  09 3c 42 4d 55 20 76 61  72 69 61 62 6c 65 20 6e  |.<BMU variable n|
000b32a0  75 6d 62 65 72 3d 3e 50  6f 72 74 61 62 6c 65 5f  |umber=>Portable_|
000b32b0  42 4d 55 76 61 72 73 3e  0a 3c 3d 09 52 30 20 70  |BMUvars>.<=.R0 p|
000b32c0  72 65 73 65 72 76 65 64  0a 09 52 31 20 3d 09 76  |reserved..R1 =.v|
000b32d0  61 6c 75 65 0a 0a 54 68  69 73 20 63 61 6c 6c 20  |alue..This call |
000b32e0  72 65 61 64 73 20 42 61  74 74 65 72 79 20 4d 61  |reads Battery Ma|
000b32f0  6e 61 67 65 6d 65 6e 74  20 55 6e 69 74 20 56 61  |nagement Unit Va|
000b3300  72 69 61 62 6c 65 73 00  44 41 54 41 37 01 00 00  |riables.DATA7...|
000b3310  50 6f 72 74 61 62 6c 65  5f 53 70 65 65 64 20 20  |Portable_Speed  |
000b3320  28 26 34 32 46 43 30 29  0a 23 50 61 72 65 6e 74  |(&42FC0).#Parent|
000b3330  20 50 6f 72 74 61 62 6c  65 5f 0a 3d 3e 09 52 30  | Portable_.=>.R0|
000b3340  20 3d 09 45 4f 52 20 6d  61 73 6b 0a 09 52 31 20  | =.EOR mask..R1 |
000b3350  3d 09 41 4e 44 20 6d 61  73 6b 0a 3c 3d 09 52 30  |=.AND mask.<=.R0|
000b3360  20 3d 09 6f 6c 64 20 73  70 65 65 64 0a 09 52 31  | =.old speed..R1|
000b3370  20 3d 09 6e 65 77 20 73  70 65 65 64 0a 0a 54 68  | =.new speed..Th|
000b3380  69 73 20 63 61 6c 6c 20  73 65 74 73 20 74 68 65  |is call sets the|
000b3390  20 70 72 6f 63 65 73 73  6f 72 20 73 70 65 65 64  | processor speed|
000b33a0  2e 20 54 68 65 20 6e 65  77 20 73 70 65 65 64 20  |. The new speed |
000b33b0  69 73 20 73 65 74 20 61  73 3a 0a 0a 20 20 20 4e  |is set as:..   N|
000b33c0  65 77 20 73 70 65 65 64  20 3d 20 28 4f 6c 64 20  |ew speed = (Old |
000b33d0  73 70 65 65 64 20 41 4e  44 20 52 32 29 20 45 4f  |speed AND R2) EO|
000b33e0  52 20 52 31 0a 0a 43 75  72 72 65 6e 74 6c 79 20  |R R1..Currently |
000b33f0  73 75 70 70 6f 72 74 65  64 20 73 70 65 65 64 20  |supported speed |
000b3400  73 65 74 74 69 6e 67 73  20 61 72 65 3a 0a 23 20  |settings are:.# |
000b3410  77 68 61 74 20 61 20 62  65 77 69 6c 64 65 72 69  |what a bewilderi|
000b3420  6e 67 20 72 61 6e 67 65  0a 23 74 61 62 0a 20 09  |ng range.#tab. .|
000b3430  30 09 66 61 73 74 0a 20  09 31 09 73 6c 6f 77 00  |0.fast. .1.slow.|
000b3440  44 41 54 41 12 01 00 00  50 6f 72 74 61 62 6c 65  |DATA....Portable|
000b3450  5f 57 72 69 74 65 42 4d  55 56 61 72 69 61 62 6c  |_WriteBMUVariabl|
000b3460  65 20 20 28 26 34 32 46  43 33 29 0a 23 50 61 72  |e  (&42FC3).#Par|
000b3470  65 6e 74 20 50 6f 72 74  61 62 6c 65 5f 0a 3d 3e  |ent Portable_.=>|
000b3480  09 52 30 20 3d 09 3c 42  4d 55 20 76 61 72 69 61  |.R0 =.<BMU varia|
000b3490  62 6c 65 20 6e 75 6d 62  65 72 3d 3e 50 6f 72 74  |ble number=>Port|
000b34a0  61 62 6c 65 5f 42 4d 55  76 61 72 73 3e 0a 09 52  |able_BMUvars>..R|
000b34b0  31 20 3d 09 6e 65 77 20  76 61 6c 75 65 0a 3c 3d  |1 =.new value.<=|
000b34c0  09 52 30 2c 52 31 20 70  72 65 73 65 72 76 65 64  |.R0,R1 preserved|
000b34d0  0a 0a 54 68 69 73 20 63  61 6c 6c 20 77 72 69 74  |..This call writ|
000b34e0  65 73 20 42 61 74 74 65  72 79 20 4d 61 6e 61 67  |es Battery Manag|
000b34f0  65 6d 65 6e 74 20 55 6e  69 74 20 56 61 72 69 61  |ement Unit Varia|
000b3500  62 6c 65 73 2e 20 56 61  72 69 61 62 6c 65 73 20  |bles. Variables |
000b3510  6f 74 68 65 72 20 74 68  61 6e 20 74 68 65 20 63  |other than the c|
000b3520  68 61 72 67 65 20 65 73  74 69 6d 61 74 65 20 28  |harge estimate (|
000b3530  76 61 72 69 61 62 6c 65  20 36 29 20 73 68 6f 75  |variable 6) shou|
000b3540  6c 64 20 6e 6f 74 20 62  65 20 77 72 69 74 74 65  |ld not be writte|
000b3550  6e 2e 00 00 44 41 54 41  e6 00 00 00 42 61 74 74  |n...DATA....Batt|
000b3560  65 72 79 20 4d 61 6e 61  67 65 6d 65 6e 74 20 55  |ery Management U|
000b3570  6e 69 74 20 46 6c 61 67  73 0a 23 50 61 72 65 6e  |nit Flags.#Paren|
000b3580  74 20 50 6f 72 74 61 62  6c 65 5f 42 4d 55 76 61  |t Portable_BMUva|
000b3590  72 73 0a 42 69 74 09 4d  65 61 6e 69 6e 67 20 77  |rs.Bit.Meaning w|
000b35a0  68 65 6e 20 73 65 74 0a  23 6c 69 6e 65 0a 31 09  |hen set.#line.1.|
000b35b0  6c 69 64 20 6f 70 65 6e  0a 32 09 74 68 72 65 73  |lid open.2.thres|
000b35c0  68 6f 6c 64 20 32 20 72  65 61 63 68 65 64 0a 33  |hold 2 reached.3|
000b35d0  09 74 68 72 65 73 68 6f  6c 64 20 31 20 72 65 61  |.threshold 1 rea|
000b35e0  63 68 65 64 0a 34 09 66  61 75 6c 74 20 69 6e 20  |ched.4.fault in |
000b35f0  63 68 61 72 67 69 6e 67  20 73 79 73 74 65 6d 0a  |charging system.|
000b3600  35 09 63 68 61 72 67 65  20 73 74 61 74 65 20 6b  |5.charge state k|
000b3610  6e 6f 77 6e 0a 36 09 62  61 74 74 65 72 79 20 70  |nown.6.battery p|
000b3620  72 65 73 65 6e 74 0a 37  09 63 68 61 72 67 65 72  |resent.7.charger|
000b3630  20 63 6f 6e 6e 65 63 74  65 64 00 00 44 41 54 41  | connected..DATA|
000b3640  8f 1d 00 00 4f 53 20 53  57 49 73 20 6d 61 6e 75  |....OS SWIs manu|
000b3650  61 6c 0a 23 41 6c 69 67  6e 20 43 65 6e 74 72 65  |al.#Align Centre|
000b3660  0a 7b 66 68 33 7d 4f 53  20 53 57 49 73 20 6d 61  |.{fh3}OS SWIs ma|
000b3670  6e 75 61 6c 7b 66 7d 0a  7b 61 6c 69 67 6e 20 63  |nual{f}.{align c|
000b3680  65 6e 74 72 65 3b 2f 7d  57 69 74 68 20 61 64 64  |entre;/}With add|
000b3690  69 74 69 6f 6e 61 6c 20  6e 6f 74 65 73 20 66 72  |itional notes fr|
000b36a0  6f 6d 20 74 68 65 20 77  69 73 65 20 61 6e 64 20  |om the wise and |
000b36b0  6c 65 61 72 6e 65 64 7b  2f 3b 61 6c 69 67 6e 7d  |learned{/;align}|
000b36c0  0a 23 20 47 65 72 70 68  3e 20 59 6f 75 27 76 65  |.# Gerph> You've|
000b36d0  20 67 6f 74 20 74 6f 20  68 61 76 65 20 61 20 67  | got to have a g|
000b36e0  69 67 67 6c 65 20 73 6f  6d 65 74 69 6d 65 73 20  |iggle sometimes |
000b36f0  3a 2d 29 0a 23 4c 69 6e  65 0a 23 41 6c 69 67 6e  |:-).#Line.#Align|
000b3700  20 4c 65 66 74 0a 54 68  69 73 20 6d 61 6e 75 61  | Left.This manua|
000b3710  6c 20 69 73 20 70 61 72  74 20 6f 66 20 61 20 63  |l is part of a c|
000b3720  6f 6c 6c 65 63 74 69 6f  6e 20 63 6f 6d 70 72 69  |ollection compri|
000b3730  73 69 6e 67 20 74 68 65  20 6d 61 69 6e 20 70 75  |sing the main pu|
000b3740  62 6c 69 63 20 64 6f 6d  61 69 6e 20 70 72 6f 67  |blic domain prog|
000b3750  72 61 6d 6d 69 6e 67 20  72 65 66 65 72 65 6e 63  |ramming referenc|
000b3760  65 2e 20 54 68 65 20 6f  74 68 65 72 20 6d 61 6e  |e. The other man|
000b3770  75 61 6c 73 20 69 6e 20  74 68 65 20 73 65 72 69  |uals in the seri|
000b3780  65 73 20 61 72 65 20 3a  0a 23 49 6e 64 65 6e 74  |es are :.#Indent|
000b3790  20 32 0a 23 50 6f 73 74  66 69 78 20 3a 21 52 6f  | 2.#Postfix :!Ro|
000b37a0  6f 74 0a 3c 4f 53 3e 09  09 54 68 65 20 62 61 73  |ot.<OS>..The bas|
000b37b0  65 20 6f 70 65 72 61 74  69 6e 67 20 73 79 73 74  |e operating syst|
000b37c0  65 6d 20 73 74 75 66 66  0a 3c 57 69 6d 70 3e 09  |em stuff.<Wimp>.|
000b37d0  09 54 68 65 20 64 65 73  6b 74 6f 70 20 70 61 72  |.The desktop par|
000b37e0  74 20 6f 66 20 74 68 65  20 6f 70 65 72 61 74 69  |t of the operati|
000b37f0  6e 67 20 73 79 73 74 65  6d 0a 3c 49 6e 65 74 53  |ng system.<InetS|
000b3800  57 49 73 3e 09 49 6e 74  65 72 6e 65 74 20 62 61  |WIs>.Internet ba|
000b3810  73 65 64 20 53 57 49 73  0a 3c 49 6e 65 74 53 6f  |sed SWIs.<InetSo|
000b3820  63 6b 65 74 3e 09 49 6e  74 65 72 6e 65 74 20 73  |cket>.Internet s|
000b3830  6f 63 6b 65 74 20 63 61  6c 6c 73 0a 3c 4d 69 73  |ocket calls.<Mis|
000b3840  63 53 57 49 73 3e 09 4d  69 73 63 65 6c 6c 61 6e  |cSWIs>.Miscellan|
000b3850  65 6f 75 73 20 53 57 49  73 0a 3c 56 44 55 3e 09  |eous SWIs.<VDU>.|
000b3860  09 56 44 55 20 63 6f 6d  6d 61 6e 64 73 0a 3c 54  |.VDU commands.<T|
000b3870  6f 6f 6c 62 6f 78 3e 09  54 6f 6f 6c 62 6f 78 20  |oolbox>.Toolbox |
000b3880  28 62 79 20 4e 69 65 6c  20 42 69 6e 67 68 61 6d  |(by Niel Bingham|
000b3890  29 0a 23 49 6e 64 65 6e  74 0a 0a 46 6f 72 20 63  |).#Indent..For c|
000b38a0  6f 6d 6d 65 6e 74 73 2c  20 73 75 67 67 65 73 74  |omments, suggest|
000b38b0  69 6f 6e 73 20 61 6e 64  20 73 75 62 6d 69 73 73  |ions and submiss|
000b38c0  69 6f 6e 73 20 66 6f 72  20 74 68 65 73 65 2c 20  |ions for these, |
000b38d0  70 6c 65 61 73 65 20 6d  61 69 6c 20 4a 75 73 74  |please mail Just|
000b38e0  69 6e 20 46 6c 65 74 63  68 65 72 20 3c 5c 3c 67  |in Fletcher <\<g|
000b38f0  65 72 70 68 40 69 6e 6e  6f 63 65 6e 74 2e 63 6f  |erph@innocent.co|
000b3900  6d 5c 3e 3d 3e 23 55 52  4c 20 6d 61 69 6c 74 6f  |m\>=>#URL mailto|
000b3910  3a 67 65 72 70 68 40 69  6e 6e 6f 63 65 6e 74 2e  |:gerph@innocent.|
000b3920  63 6f 6d 3e 20 77 68 6f  20 69 73 20 63 75 72 72  |com> who is curr|
000b3930  65 6e 74 6c 79 20 6d 6f  64 65 72 61 74 69 6e 67  |ently moderating|
000b3940  20 74 68 65 20 63 6f 6c  6c 65 63 74 69 6f 6e 2e  | the collection.|
000b3950  20 41 20 63 6f 6c 6c 65  63 74 69 6f 6e 20 6f 66  | A collection of|
000b3960  20 3c 6e 6f 74 65 73 3d  3e 2e 6e 6f 74 65 73 3e  | <notes=>.notes>|
000b3970  20 61 62 6f 75 74 20 74  68 69 73 20 6d 61 6e 75  | about this manu|
000b3980  61 6c 20 69 73 20 61 76  61 69 6c 61 62 6c 65 2e  |al is available.|
000b3990  20 54 68 65 20 70 72 69  6d 61 72 79 20 6c 6f 63  | The primary loc|
000b39a0  61 74 69 6f 6e 20 66 6f  72 20 74 68 65 73 65 20  |ation for these |
000b39b0  6d 61 6e 75 61 6c 73 20  77 69 6c 6c 20 62 65 20  |manuals will be |
000b39c0  3c 68 74 74 70 3a 2f 2f  66 72 65 65 6e 65 74 2e  |<http://freenet.|
000b39d0  62 61 72 6e 65 74 2e 61  63 2e 75 6b 2f 6d 61 6e  |barnet.ac.uk/man|
000b39e0  75 61 6c 73 2f 3d 3e 23  55 52 4c 20 68 74 74 70  |uals/=>#URL http|
000b39f0  3a 2f 2f 66 72 65 65 6e  65 74 2e 62 61 72 6e 65  |://freenet.barne|
000b3a00  74 2e 61 63 2e 75 6b 2f  6d 61 6e 75 61 6c 73 2f  |t.ac.uk/manuals/|
000b3a10  3e 2e 0a 0a 43 6c 69 63  6b 20 3c 68 65 72 65 3d  |>...Click <here=|
000b3a20  3e 2e 68 69 73 74 33 30  34 3e 20 66 6f 72 20 73  |>.hist304> for s|
000b3a30  6f 6d 65 20 68 69 73 74  6f 72 79 2e 0a 23 53 75  |ome history..#Su|
000b3a40  62 70 61 67 65 20 6e 6f  74 65 73 0a 4e 6f 74 65  |bpage notes.Note|
000b3a50  73 20 6f 6e 20 68 6f 77  20 74 68 65 20 6d 61 6e  |s on how the man|
000b3a60  75 61 6c 20 69 73 20 73  74 72 75 63 74 75 72 65  |ual is structure|
000b3a70  64 0a 54 68 65 73 65 20  61 72 65 20 73 6f 6d 65  |d.These are some|
000b3a80  20 76 65 72 79 20 69 6e  63 6f 6d 70 6c 65 74 65  | very incomplete|
000b3a90  20 6e 6f 74 65 73 20 6f  6e 20 68 6f 77 20 74 68  | notes on how th|
000b3aa0  65 20 6d 61 6e 75 61 6c  20 73 68 6f 75 6c 64 20  |e manual should |
000b3ab0  62 65 20 73 74 72 75 63  74 75 72 65 64 2e 20 49  |be structured. I|
000b3ac0  66 20 61 6e 79 20 70 61  72 74 20 6f 66 20 69 74  |f any part of it|
000b3ad0  20 69 73 6e 27 74 20 74  68 65 6e 20 69 74 20 77  | isn't then it w|
000b3ae0  69 6c 6c 20 65 76 65 6e  74 75 61 6c 6c 79 20 62  |ill eventually b|
000b3af0  65 20 75 70 64 61 74 65  64 2c 20 6f 72 20 49 27  |e updated, or I'|
000b3b00  6c 6c 20 63 68 61 6e 67  65 20 74 68 69 73 20 73  |ll change this s|
000b3b10  70 65 63 69 66 69 63 61  74 69 6f 6e 2e 20 49 74  |pecification. It|
000b3b20  27 73 20 6d 6f 73 74 6c  79 20 68 65 72 65 20 74  |'s mostly here t|
000b3b30  6f 20 72 65 6d 69 6e 64  20 6d 65 20 61 6e 79 68  |o remind me anyh|
000b3b40  6f 77 2e 0a 0a 45 61 63  68 20 53 57 49 20 73 68  |ow...Each SWI sh|
000b3b50  6f 75 6c 64 20 62 65 20  64 6f 63 75 6d 65 6e 74  |ould be document|
000b3b60  65 64 20 69 6e 20 74 68  65 20 66 6f 72 6d 20 3a  |ed in the form :|
000b3b70  0a 0a 23 49 6e 64 65 6e  74 20 32 0a 5c 3c 74 69  |..#Indent 2.\<ti|
000b3b80  74 6c 65 5c 3e 20 28 5c  3c 68 65 78 20 73 77 69  |tle\> (\<hex swi|
000b3b90  20 6e 75 6d 62 65 72 5c  3e 29 0a 5c 23 50 61 72  | number\>).\#Par|
000b3ba0  65 6e 74 20 5c 3c 73 6f  6d 65 74 68 69 6e 67 5c  |ent \<something\|
000b3bb0  3e 0a 3d 3e 5c 3c 74 61  62 5c 3e 09 52 23 20 3d  |>.=>\<tab\>.R# =|
000b3bc0  5c 3c 74 61 62 5c 3e 09  5c 3c 63 6f 6e 74 65 6e  |\<tab\>.\<conten|
000b3bd0  74 73 5c 3e 0a 5c 3c 74  61 62 5c 3e 09 09 52 23  |ts\>.\<tab\>..R#|
000b3be0  20 3d 5c 3c 74 61 62 5c  3e 09 5c 3c 63 6f 6e 74  | =\<tab\>.\<cont|
000b3bf0  65 6e 74 73 5c 3e 0a 5b  65 74 63 5d 0a 3c 3d 09  |ents\>.[etc].<=.|
000b3c00  09 52 23 2d 52 23 20 70  72 65 73 65 72 76 65 64  |.R#-R# preserved|
000b3c10  0a 09 09 52 23 20 63 6f  72 72 75 70 74 65 64 0a  |...R# corrupted.|
000b3c20  5c 3c 74 61 62 5c 3e 09  09 52 23 20 3d 5c 3c 74  |\<tab\>..R# =\<t|
000b3c30  61 62 5c 3e 09 5c 3c 63  6f 6e 74 65 6e 74 73 5c  |ab\>.\<contents\|
000b3c40  3e 0a 5b 65 74 63 5d 0a  0a 54 68 69 73 20 53 57  |>.[etc]..This SW|
000b3c50  49 20 64 6f 65 73 20 78  2c 20 79 20 61 6e 64 20  |I does x, y and |
000b3c60  7a 2e 20 53 68 6f 72 74  20 65 78 61 6d 70 6c 65  |z. Short example|
000b3c70  73 20 6d 61 79 20 62 65  20 67 69 76 65 6e 20 68  |s may be given h|
000b3c80  65 72 65 2e 0a 0a 4e 6f  74 65 3a 20 73 6f 6d 65  |ere...Note: some|
000b3c90  74 68 69 6e 67 20 69 6d  70 6f 72 74 61 6e 74 2e  |thing important.|
000b3ca0  0a 23 49 6e 64 65 6e 74  0a 0a 54 68 65 20 69 6e  |.#Indent..The in|
000b3cb0  70 75 74 20 6f 72 20 6f  75 74 70 75 74 20 70 61  |put or output pa|
000b3cc0  72 61 6d 65 74 65 72 73  20 6d 61 79 20 62 65 20  |rameters may be |
000b3cd0  6f 6d 69 74 74 65 64 20  69 66 20 6e 6f 6e 65 20  |omitted if none |
000b3ce0  61 72 65 20 72 65 71 75  69 72 65 64 2e 20 49 74  |are required. It|
000b3cf0  20 69 73 20 61 73 73 75  6d 65 64 20 74 68 61 74  | is assumed that|
000b3d00  20 74 68 65 20 72 65 67  69 73 74 65 72 73 20 61  | the registers a|
000b3d10  72 65 20 70 72 65 73 65  72 76 65 64 2c 20 62 75  |re preserved, bu|
000b3d20  74 20 74 68 69 73 20 6d  61 79 20 62 65 20 65 78  |t this may be ex|
000b3d30  70 6c 69 63 69 74 6c 79  20 62 65 20 73 74 61 74  |plicitly be stat|
000b3d40  65 64 2e 20 52 65 67 69  73 74 65 72 73 20 73 68  |ed. Registers sh|
000b3d50  6f 75 6c 64 20 62 65 20  6c 69 73 74 65 64 20 69  |ould be listed i|
000b3d60  74 20 61 73 63 65 6e 64  69 6e 67 20 6f 72 64 65  |t ascending orde|
000b3d70  72 2c 20 75 6e 6c 65 73  73 20 61 20 64 69 73 63  |r, unless a disc|
000b3d80  6f 6e 74 69 6e 75 6f 75  73 20 72 61 6e 67 65 20  |ontinuous range |
000b3d90  69 73 20 62 65 69 6e 67  20 67 69 76 65 6e 20 69  |is being given i|
000b3da0  6e 20 77 68 69 63 68 20  63 61 73 65 20 69 74 20  |n which case it |
000b3db0  73 68 6f 75 6c 64 20 61  70 70 65 61 72 20 61 74  |should appear at|
000b3dc0  20 74 68 65 20 74 6f 70  20 6f 66 20 74 68 65 20  | the top of the |
000b3dd0  72 65 74 75 72 6e 20 70  61 72 61 6d 65 74 65 72  |return parameter|
000b3de0  73 20 6c 69 73 74 2e 0a  0a 49 66 20 61 20 72 65  |s list...If a re|
000b3df0  67 69 73 74 65 72 20 6f  72 20 6f 74 68 65 72 20  |gister or other |
000b3e00  65 6e 74 72 79 20 6d 61  79 20 63 6f 6e 73 69 73  |entry may consis|
000b3e10  74 20 6f 66 20 6d 75 6c  74 69 70 6c 65 20 65 6e  |t of multiple en|
000b3e20  74 72 69 65 73 20 69 74  20 73 68 6f 75 6c 64 20  |tries it should |
000b3e30  62 65 20 6c 69 73 74 65  64 20 69 6e 20 61 20 73  |be listed in a s|
000b3e40  75 62 70 61 67 65 2c 20  77 69 74 68 20 61 20 64  |ubpage, with a d|
000b3e50  65 73 63 72 69 70 74 69  76 65 20 72 65 66 65 72  |escriptive refer|
000b3e60  65 6e 63 65 20 74 6f 20  69 74 20 61 73 20 74 68  |ence to it as th|
000b3e70  65 20 6c 69 6e 6b 2e 20  49 66 20 6d 6f 72 65 20  |e link. If more |
000b3e80  74 68 61 6e 20 6f 6e 65  20 53 57 49 20 6d 61 79  |than one SWI may|
000b3e90  20 75 73 65 20 74 68 61  74 20 73 65 74 20 6f 66  | use that set of|
000b3ea0  20 76 61 6c 75 65 73 20  74 68 65 6e 20 74 68 65  | values then the|
000b3eb0  20 73 75 62 70 61 67 65  20 73 68 6f 75 6c 64 20  | subpage should |
000b3ec0  62 65 20 61 20 64 61 74  61 20 66 69 6c 65 20 69  |be a data file i|
000b3ed0  6e 20 61 20 73 65 6e 73  69 62 6c 65 20 6c 6f 63  |n a sensible loc|
000b3ee0  61 74 69 6f 6e 20 28 75  73 75 61 6c 6c 79 20 74  |ation (usually t|
000b3ef0  68 65 20 73 61 6d 65 20  64 69 72 65 63 74 6f 72  |he same director|
000b3f00  79 29 2e 0a 0a 54 68 65  20 5c 3c 63 6f 6e 74 65  |y)...The \<conte|
000b3f10  6e 74 73 5c 3e 20 65 6e  74 72 79 20 73 68 6f 75  |nts\> entry shou|
000b3f20  6c 64 20 62 65 20 61 20  73 69 6e 67 6c 65 20 73  |ld be a single s|
000b3f30  65 6e 74 61 6e 63 65 2c  20 77 69 74 68 20 63 6c  |entance, with cl|
000b3f40  61 72 69 66 69 63 61 74  69 6f 6e 20 6f 72 20 61  |arification or a|
000b3f50  6c 74 65 72 6e 61 74 69  76 65 73 20 69 6e 20 61  |lternatives in a|
000b3f60  20 63 6f 6d 6d 61 20 73  65 70 65 72 61 74 65 64  | comma seperated|
000b3f70  20 6c 69 73 74 2c 20 61  6e 64 20 6f 6e 6c 79 20  | list, and only |
000b3f80  75 73 69 6e 67 20 62 72  61 63 6b 65 74 73 20 74  |using brackets t|
000b3f90  6f 20 69 6e 64 69 63 61  74 65 20 72 61 6e 67 65  |o indicate range|
000b3fa0  73 2e 20 57 68 65 72 65  20 6c 6f 6e 67 20 62 6c  |s. Where long bl|
000b3fb0  6f 63 6b 73 20 6f 66 20  61 6c 74 65 72 6e 61 74  |ocks of alternat|
000b3fc0  69 76 65 73 20 61 72 65  20 6c 69 73 74 65 64 2c  |ives are listed,|
000b3fd0  20 63 6f 6e 73 69 64 65  72 20 75 73 69 6e 67 20  | consider using |
000b3fe0  61 20 74 61 62 6c 65 20  6f 72 20 73 70 6c 69 74  |a table or split|
000b3ff0  20 6c 69 6e 65 73 20 61  6e 64 20 75 73 65 20 74  | lines and use t|
000b4000  61 62 62 69 6e 67 20 74  6f 20 61 6c 69 67 6e 3b  |abbing to align;|
000b4010  20 74 68 65 20 66 6f 72  6d 65 72 20 69 73 20 70  | the former is p|
000b4020  72 65 66 65 72 61 62 6c  65 2e 0a 0a 54 61 62 6c  |referable...Tabl|
000b4030  65 73 20 73 68 6f 75 6c  64 20 63 6f 6e 73 69 73  |es should consis|
000b4040  74 20 6f 66 20 3a 0a 0a  23 49 6e 64 65 6e 74 20  |t of :..#Indent |
000b4050  32 0a 4f 66 66 73 65 74  5c 3c 74 61 62 5c 3e 09  |2.Offset\<tab\>.|
000b4060  4d 65 61 6e 69 6e 67 0a  5c 23 4c 69 6e 65 0a 78  |Meaning.\#Line.x|
000b4070  5c 3c 74 61 62 5c 3e 09  79 0a 5b 65 74 63 5d 0a  |\<tab\>.y.[etc].|
000b4080  6f 74 68 65 72 73 5c 3c  74 61 62 5c 3e 09 72 65  |others\<tab\>.re|
000b4090  73 65 72 76 65 64 2c 20  6d 75 73 74 20 62 65 20  |served, must be |
000b40a0  7a 65 72 6f 0a 23 49 6e  64 65 6e 74 0a 0a 4f 74  |zero.#Indent..Ot|
000b40b0  68 65 72 73 20 6d 61 79  20 62 65 20 6f 6d 69 74  |hers may be omit|
000b40c0  74 65 64 20 69 66 20 6e  6f 74 20 72 65 6c 65 76  |ted if not relev|
000b40d0  61 6e 74 2c 20 6f 66 66  73 65 74 73 20 73 68 6f  |ant, offsets sho|
000b40e0  75 6c 64 20 62 65 20 67  69 76 65 6e 20 69 6e 20  |uld be given in |
000b40f0  64 65 63 69 6d 61 6c 2c  20 75 6e 6c 65 73 73 20  |decimal, unless |
000b4100  6f 74 68 65 72 77 69 73  65 20 73 74 61 74 65 64  |otherwise stated|
000b4110  20 6f 6e 20 74 68 65 20  70 61 67 65 2e 20 42 69  | on the page. Bi|
000b4120  74 20 6d 61 73 6b 73 20  61 72 65 20 64 65 73 63  |t masks are desc|
000b4130  72 69 62 65 64 20 61 73  20 27 4d 65 61 6e 69 6e  |ribed as 'Meanin|
000b4140  67 20 69 66 20 73 65 74  27 2c 20 61 6e 64 20 73  |g if set', and s|
000b4150  68 6f 75 6c 64 20 62 65  20 69 6e 76 65 72 73 65  |hould be inverse|
000b4160  6c 79 20 74 72 75 65 20  69 66 20 75 6e 73 65 74  |ly true if unset|
000b4170  2e 20 49 66 20 74 68 69  73 20 69 73 20 6e 6f 74  |. If this is not|
000b4180  20 74 68 65 20 63 61 73  65 20 74 68 65 6e 20 61  | the case then a|
000b4190  20 73 65 70 65 72 61 74  65 20 64 65 73 63 72 69  | seperate descri|
000b41a0  70 74 69 6f 6e 20 6d 61  79 20 62 65 20 72 65 71  |ption may be req|
000b41b0  75 69 72 65 64 2e 0a 0a  46 6f 72 20 73 65 72 76  |uired...For serv|
000b41c0  69 63 65 73 2c 20 75 70  63 61 6c 6c 73 2c 20 65  |ices, upcalls, e|
000b41d0  76 65 6e 74 73 2c 20 65  74 63 20 74 68 65 20 72  |vents, etc the r|
000b41e0  65 61 73 6f 6e 20 63 6f  64 65 20 6e 65 65 64 20  |eason code need |
000b41f0  6e 6f 74 20 62 65 20 67  69 76 65 6e 20 69 6e 20  |not be given in |
000b4200  74 68 65 20 69 6e 70 75  74 20 70 61 72 61 6d 65  |the input parame|
000b4210  74 65 72 73 2c 20 62 75  74 20 69 73 20 69 74 20  |ters, but is it |
000b4220  69 73 20 69 74 20 73 68  6f 75 6c 64 20 62 65 20  |is it should be |
000b4230  67 69 76 65 6e 20 61 73  20 61 20 6e 75 6d 62 65  |given as a numbe|
000b4240  72 20 61 6e 64 20 66 6f  6c 6c 6f 77 65 64 20 62  |r and followed b|
000b4250  79 20 22 28 72 65 61 73  6f 6e 20 63 6f 64 65 29  |y "(reason code)|
000b4260  22 20 6f 72 20 73 69 6d  69 6c 61 72 2e 0a 0a 43  |" or similar...C|
000b4270  75 72 72 65 6e 74 20 27  6e 6f 72 6d 61 6c 27 20  |urrent 'normal' |
000b4280  63 72 6f 73 73 2d 72 65  66 65 72 65 6e 63 61 62  |cross-referencab|
000b4290  6c 65 20 6f 62 6a 65 63  74 73 20 61 72 65 20 3a  |le objects are :|
000b42a0  0a 0a 23 54 61 62 0a 50  61 67 65 09 09 43 6f 6e  |..#Tab.Page..Con|
000b42b0  74 65 6e 74 73 0a 23 4c  69 6e 65 0a 73 77 69 5f  |tents.#Line.swi_|
000b42c0  64 61 74 65 66 6f 72 6d  61 74 09 09 44 61 74 65  |dateformat..Date|
000b42d0  20 66 6f 72 6d 61 74 20  73 74 72 69 6e 67 20 74  | format string t|
000b42e0  6f 6b 65 6e 73 0a 73 77  69 5f 65 72 72 6f 72 62  |okens.swi_errorb|
000b42f0  6c 6f 63 6b 09 09 45 72  72 6f 72 20 62 6c 6f 63  |lock..Error bloc|
000b4300  6b 20 66 6f 72 6d 61 74  0a 73 77 69 5f 62 62 6f  |k format.swi_bbo|
000b4310  78 09 09 47 65 6e 65 72  69 63 20 62 6f 75 6e 64  |x..Generic bound|
000b4320  69 6e 67 20 62 6f 78 0a  66 73 79 73 5f 69 64 65  |ing box.fsys_ide|
000b4330  6e 74 09 09 4c 69 73 74  20 6f 66 20 46 69 6c 69  |nt..List of Fili|
000b4340  6e 67 20 53 79 73 74 65  6d 20 6e 75 6d 62 65 72  |ng System number|
000b4350  73 0a 66 73 79 73 5f 6f  62 6a 61 74 74 72 09 09  |s.fsys_objattr..|
000b4360  46 69 6c 65 20 61 74 74  72 69 62 75 74 65 20 62  |File attribute b|
000b4370  69 74 73 0a 66 73 79 73  5f 6c 6f 61 64 65 78 65  |its.fsys_loadexe|
000b4380  63 09 09 46 69 6c 65 20  4c 6f 61 64 2f 45 78 65  |c..File Load/Exe|
000b4390  63 20 77 6f 72 64 20 6d  65 61 6e 69 6e 67 0a 6f  |c word meaning.o|
000b43a0  73 5f 6d 6f 75 73 65 62  75 74 74 6f 6e 73 09 09  |s_mousebuttons..|
000b43b0  4d 6f 75 73 65 20 62 75  74 74 6f 6e 20 62 69 74  |Mouse button bit|
000b43c0  20 6d 61 70 70 69 6e 67  0a 6f 73 5f 73 63 61 6c  | mapping.os_scal|
000b43d0  65 66 61 63 74 6f 72 73  09 09 53 74 61 6e 64 61  |efactors..Standa|
000b43e0  72 64 20 73 63 61 6c 65  72 20 62 6c 6f 63 6b 0a  |rd scaler block.|
000b43f0  6f 73 5f 73 65 74 63 6f  6c 6f 75 72 61 63 74 69  |os_setcolouracti|
000b4400  6f 6e 73 09 47 43 4f 4c  20 61 63 74 69 6f 6e 73  |ons.GCOL actions|
000b4410  0a 6f 73 5f 73 70 72 69  74 65 6f 70 5f 61 72 65  |.os_spriteop_are|
000b4420  61 09 53 70 72 69 74 65  20 61 72 65 61 20 62 6c  |a.Sprite area bl|
000b4430  6f 63 6b 0a 6f 73 5f 73  70 72 69 74 65 6f 70 5f  |ock.os_spriteop_|
000b4440  70 74 72 09 09 53 70 72  69 74 65 20 62 6c 6f 63  |ptr..Sprite bloc|
000b4450  6b 0a 62 75 66 66 65 72  5f 62 75 66 66 65 72 73  |k.buffer_buffers|
000b4460  09 09 4c 69 73 74 20 6f  66 20 62 75 66 66 65 72  |..List of buffer|
000b4470  20 6e 75 6d 62 65 72 73  0a 63 6f 6c 6f 75 72 74  | numbers.colourt|
000b4480  72 61 6e 73 5f 70 69 78  74 72 61 6e 73 09 50 69  |rans_pixtrans.Pi|
000b4490  78 65 6c 20 54 72 61 6e  73 6c 61 74 69 6f 6e 20  |xel Translation |
000b44a0  54 61 62 6c 65 20 66 6f  72 6d 61 74 0a 74 65 72  |Table format.ter|
000b44b0  72 69 74 6f 72 79 5f 61  6e 75 6d 62 65 72 73 09  |ritory_anumbers.|
000b44c0  4c 69 73 74 20 6f 66 20  61 6c 70 68 61 62 65 74  |List of alphabet|
000b44d0  20 6e 75 6d 62 65 72 73  0a 74 65 72 72 69 74 6f  | numbers.territo|
000b44e0  72 79 5f 6e 75 6d 62 65  72 73 09 4c 69 73 74 20  |ry_numbers.List |
000b44f0  6f 66 20 74 65 72 72 69  74 6f 72 79 20 6e 75 6d  |of territory num|
000b4500  62 65 72 73 0a 64 72 61  77 66 69 6c 65 5f 66 6f  |bers.drawfile_fo|
000b4510  72 6d 61 74 09 09 44 72  61 77 66 69 6c 65 20 66  |rmat..Drawfile f|
000b4520  6f 72 6d 61 74 0a 64 72  61 77 66 69 6c 65 5f 68  |ormat.drawfile_h|
000b4530  65 61 64 65 72 09 09 44  72 61 77 66 69 6c 65 20  |eader..Drawfile |
000b4540  68 65 61 64 65 72 0a 64  72 61 77 5f 74 72 61 6e  |header.draw_tran|
000b4550  73 66 6f 72 6d 09 09 44  72 61 77 20 74 72 61 6e  |sform..Draw tran|
000b4560  73 66 6f 72 6d 61 74 69  6f 6e 20 6d 61 74 72 69  |sformation matri|
000b4570  78 20 62 6c 6f 63 6b 0a  64 72 61 77 5f 74 72 61  |x block.draw_tra|
000b4580  6e 73 66 6f 72 6d 75 6e  69 74 73 09 44 72 61 77  |nsformunits.Draw|
000b4590  20 74 72 61 6e 73 66 6f  72 6d 20 75 6e 69 74 73  | transform units|
000b45a0  20 28 26 58 58 58 58 2e  58 58 58 58 29 0a 23 53  | (&XXXX.XXXX).#S|
000b45b0  75 62 70 61 67 65 20 68  69 73 74 32 33 35 0a 53  |ubpage hist235.S|
000b45c0  57 49 73 20 48 69 73 74  6f 72 79 20 76 32 2e 33  |WIs History v2.3|
000b45d0  35 0a 8f 09 4d 61 73 73  65 73 20 6f 66 20 65 78  |5...Masses of ex|
000b45e0  74 72 61 20 65 6e 74 72  69 65 73 0a 8f 09 4d 6f  |tra entries...Mo|
000b45f0  73 74 20 6f 66 20 74 68  65 20 52 49 53 43 20 4f  |st of the RISC O|
000b4600  53 20 33 2e 36 20 53 57  49 73 20 61 64 64 65 64  |S 3.6 SWIs added|
000b4610  0a 8f 09 41 20 66 65 77  20 6e 65 77 20 77 69 6d  |...A few new wim|
000b4620  70 20 6d 65 73 73 61 67  65 73 20 61 64 64 65 64  |p messages added|
000b4630  0a 8f 09 53 6f 6d 65 20  52 49 53 43 20 4f 53 20  |...Some RISC OS |
000b4640  33 2e 37 20 53 57 49 73  20 61 64 64 65 64 2c 20  |3.7 SWIs added, |
000b4650  61 20 6e 6f 74 61 62 6c  65 20 65 78 63 65 70 74  |a notable except|
000b4660  69 6f 6e 20 69 73 20 43  61 6c 6c 41 53 57 49 0a  |ion is CallASWI.|
000b4670  8f 09 57 69 6e 64 6f 77  20 4d 61 6e 61 67 65 72  |..Window Manager|
000b4680  20 33 2e 38 20 57 69 6d  70 20 64 6f 63 75 6d 65  | 3.8 Wimp docume|
000b4690  6e 74 61 74 69 6f 6e 20  61 64 64 65 64 20 28 57  |ntation added (W|
000b46a0  65 6c 6c 2c 20 57 69 6d  70 5f 4f 70 65 6e 57 69  |ell, Wimp_OpenWi|
000b46b0  6e 64 6f 77 2c 20 57 69  6d 70 5f 43 6c 6f 73 65  |ndow, Wimp_Close|
000b46c0  57 69 6e 64 6f 77 2c 20  57 69 6d 70 5f 47 65 74  |Window, Wimp_Get|
000b46d0  57 69 6e 64 6f 77 53 74  61 74 65 20 2d 20 61 73  |WindowState - as|
000b46e0  20 49 20 64 65 63 72 79  70 74 20 61 6e 79 20 6f  | I decrypt any o|
000b46f0  74 68 65 72 73 20 49 27  6c 6c 20 61 64 64 20 74  |thers I'll add t|
000b4700  68 65 6d 2e 2e 2e 29 0a  8f 09 53 6f 6d 65 20 50  |hem...)...Some P|
000b4710  72 6f 46 69 6c 65 72 20  53 57 49 73 20 61 64 64  |roFiler SWIs add|
000b4720  65 64 0a 8f 09 4e 65 77  73 42 61 73 65 20 6d 65  |ed...NewsBase me|
000b4730  73 73 61 67 65 73 20 75  70 64 61 74 65 64 20 66  |ssages updated f|
000b4740  72 6f 6d 20 30 2e 35 36  20 64 6f 63 75 6d 65 6e  |rom 0.56 documen|
000b4750  74 61 74 69 6f 6e 0a 8f  09 49 6d 61 67 65 45 6e  |tation...ImageEn|
000b4760  74 72 79 20 61 64 64 65  64 0a 0a 3c 4e 65 78 74  |try added..<Next|
000b4770  20 68 69 73 74 6f 72 79  3d 3e 2e 68 69 73 74 33  | history=>.hist3|
000b4780  30 30 3e 0a 23 53 75 62  70 61 67 65 20 68 69 73  |00>.#Subpage his|
000b4790  74 33 30 30 0a 4f 53 20  48 69 73 74 6f 72 79 20  |t300.OS History |
000b47a0  76 33 2e 30 30 0a 8f 09  54 68 65 20 6e 61 6d 65  |v3.00...The name|
000b47b0  20 21 20 54 68 69 73 20  69 73 20 6e 6f 77 20 74  | ! This is now t|
000b47c0  68 65 20 4f 53 20 6d 61  6e 75 61 6c 2c 20 6d 6f  |he OS manual, mo|
000b47d0  73 74 20 6f 66 20 74 68  69 73 20 73 65 63 74 69  |st of this secti|
000b47e0  6f 6e 20 73 68 6f 75 6c  64 20 72 65 6d 61 69 6e  |on should remain|
000b47f0  20 70 72 65 74 74 79 20  73 74 61 74 69 63 2c 20  | pretty static, |
000b4800  74 68 65 20 6f 74 68 65  72 20 73 65 63 74 69 6f  |the other sectio|
000b4810  6e 73 2c 20 57 69 6d 70  2c 20 4d 69 73 63 20 61  |ns, Wimp, Misc a|
000b4820  6e 64 20 49 6e 65 74 20  73 68 6f 75 6c 64 20 62  |nd Inet should b|
000b4830  65 20 75 70 64 61 74 65  64 20 6d 6f 72 65 20 72  |e updated more r|
000b4840  65 67 75 6c 61 72 6c 79  20 74 68 61 6e 20 74 68  |egularly than th|
000b4850  65 20 6d 61 69 6e 20 6f  70 65 72 61 74 69 6e 67  |e main operating|
000b4860  20 73 79 73 74 65 6d 20  28 68 6f 70 65 66 75 6c  | system (hopeful|
000b4870  6c 79 29 0a 8f 09 41 20  6c 61 72 67 65 20 6e 75  |ly)...A large nu|
000b4880  6d 62 65 72 20 6f 66 20  6e 65 77 20 73 65 72 76  |mber of new serv|
000b4890  69 63 65 73 20 61 6e 64  20 6f 74 68 65 72 20 6c  |ices and other l|
000b48a0  69 74 74 6c 65 20 74 68  69 6e 67 73 20 61 64 64  |ittle things add|
000b48b0  65 64 0a 8f 09 52 65 66  6f 72 6d 61 74 74 69 6e  |ed...Reformattin|
000b48c0  67 20 6f 66 20 73 6f 6d  65 20 70 61 67 65 73 20  |g of some pages |
000b48d0  6d 6f 72 65 20 69 6e 20  6c 69 6e 65 20 77 69 74  |more in line wit|
000b48e0  68 20 74 68 65 20 72 65  73 74 20 6f 66 20 74 68  |h the rest of th|
000b48f0  65 20 6d 61 6e 75 61 6c  0a 8f 09 53 70 72 69 74  |e manual...Sprit|
000b4900  65 4f 70 73 20 75 70 64  61 74 65 64 20 74 6f 20  |eOps updated to |
000b4910  69 6e 63 6c 75 64 65 20  68 65 78 20 6e 75 6d 62  |include hex numb|
000b4920  65 72 2c 20 61 6e 64 20  6e 65 77 20 63 61 6c 6c  |er, and new call|
000b4930  73 0a 8f 09 41 64 64 65  64 20 61 20 66 65 77 20  |s...Added a few |
000b4940  6d 6f 72 65 20 73 65 72  76 69 63 65 73 0a 8f 09  |more services...|
000b4950  46 69 6c 65 45 6e 74 72  79 20 61 64 64 65 64 2c  |FileEntry added,|
000b4960  20 69 6e 63 6f 6d 70 6c  65 74 65 20 61 74 20 70  | incomplete at p|
000b4970  72 65 73 65 6e 74 3b 20  6e 65 65 64 73 20 46 69  |resent; needs Fi|
000b4980  6c 65 45 6e 74 72 79 5f  46 75 6e 63 20 75 70 64  |leEntry_Func upd|
000b4990  61 74 69 6e 67 2c 20 61  6e 64 20 46 69 6c 65 45  |ating, and FileE|
000b49a0  6e 74 72 79 5f 47 42 50  42 20 61 64 64 69 6e 67  |ntry_GBPB adding|
000b49b0  0a 8f 09 52 65 6d 6f 76  65 64 20 6f 62 73 6f 6c  |...Removed obsol|
000b49c0  65 74 65 20 27 5c 5c 5c  3c 3d 27 20 75 73 61 67  |ete '\\\<=' usag|
000b49d0  65 2c 20 65 78 70 61 6e  64 65 64 20 27 70 74 72  |e, expanded 'ptr|
000b49e0  27 2c 20 27 6e 6f 27 20  61 6e 64 20 61 64 64 65  |', 'no' and adde|
000b49f0  64 20 6d 6f 72 65 20 64  65 73 63 72 69 70 74 69  |d more descripti|
000b4a00  6f 6e 73 0a 8f 09 4d 6f  76 65 64 20 73 6f 6d 65  |ons...Moved some|
000b4a10  20 62 6c 6f 63 6b 73 20  66 72 6f 6d 20 4f 53 20  | blocks from OS |
000b4a20  74 6f 20 57 69 6d 70 20  61 73 20 69 74 20 73 65  |to Wimp as it se|
000b4a30  65 6d 73 20 6d 6f 72 65  20 61 70 70 72 6f 70 72  |ems more appropr|
000b4a40  69 61 74 65 2e 0a 0a 23  54 61 62 0a 3c 50 72 65  |iate...#Tab.<Pre|
000b4a50  76 69 6f 75 73 20 68 69  73 74 6f 72 79 3d 3e 2e  |vious history=>.|
000b4a60  68 69 73 74 32 33 35 3e  09 3c 4e 65 78 74 20 68  |hist235>.<Next h|
000b4a70  69 73 74 6f 72 79 3d 3e  2e 68 69 73 74 33 30 32  |istory=>.hist302|
000b4a80  3e 0a 23 53 75 62 70 61  67 65 20 68 69 73 74 33  |>.#Subpage hist3|
000b4a90  30 32 0a 4f 53 20 48 69  73 74 6f 72 79 20 76 33  |02.OS History v3|
000b4aa0  2e 30 32 0a 23 41 6c 69  67 6e 20 52 69 67 68 74  |.02.#Align Right|
000b4ab0  0a 7b 2f 7d 31 35 20 4e  6f 76 20 31 39 39 37 2d  |.{/}15 Nov 1997-|
000b4ac0  31 30 20 4a 61 6e 20 31  39 39 38 7b 2f 7d 0a 23  |10 Jan 1998{/}.#|
000b4ad0  41 6c 69 67 6e 20 4c 65  66 74 0a 8f 09 4b 65 79  |Align Left...Key|
000b4ae0  56 20 75 70 64 61 74 65  64 20 77 69 74 68 20 72  |V updated with r|
000b4af0  65 66 65 72 65 6e 63 65  20 74 6f 20 74 68 65 20  |eference to the |
000b4b00  6b 65 79 62 6f 61 72 64  20 49 44 0a 8f 09 55 70  |keyboard ID...Up|
000b4b10  64 61 74 65 73 20 74 6f  20 43 44 20 73 65 63 74  |dates to CD sect|
000b4b20  69 6f 6e 20 28 44 61 76  65 20 54 68 6f 6d 61 73  |ion (Dave Thomas|
000b4b30  29 0a 8f 09 4d 6f 72 65  20 75 70 64 61 74 65 73  |)...More updates|
000b4b40  20 74 6f 20 43 44 20 73  65 63 74 69 6f 6e 20 28  | to CD section (|
000b4b50  45 64 64 69 65 20 45 64  77 61 72 64 73 29 0a 8f  |Eddie Edwards)..|
000b4b60  09 4d 6f 76 65 64 20 53  65 72 76 69 63 65 5f 41  |.Moved Service_A|
000b4b70  37 20 74 6f 20 49 6e 65  74 53 57 49 73 20 61 73  |7 to InetSWIs as|
000b4b80  20 69 74 27 73 20 6d 6f  72 65 20 6c 6f 67 69 63  | it's more logic|
000b4b90  61 6c 3b 20 6d 6f 72 65  20 73 69 6d 69 6c 61 72  |al; more similar|
000b4ba0  20 63 68 61 6e 67 65 73  20 6d 61 79 20 66 6f 6c  | changes may fol|
000b4bb0  6c 6f 77 2e 0a 8f 09 54  65 72 72 69 74 6f 72 79  |low....Territory|
000b4bc0  20 6d 6f 64 75 6c 65 20  63 6f 6d 70 6c 65 74 65  | module complete|
000b4bd0  6c 79 20 64 6f 63 75 6d  65 6e 74 65 64 20 28 4a  |ly documented (J|
000b4be0  2e 42 2e 42 6c 61 75 6b  6f 70 66 29 0a 8f 09 52  |.B.Blaukopf)...R|
000b4bf0  65 6d 6f 76 65 64 20 73  70 75 72 69 6f 75 73 20  |emoved spurious |
000b4c00  53 63 72 65 65 6e 4d 6f  64 65 73 20 64 6f 63 75  |ScreenModes docu|
000b4c10  6d 65 6e 74 61 74 69 6f  6e 0a 0a 3c 50 72 65 76  |mentation..<Prev|
000b4c20  69 6f 75 73 20 68 69 73  74 6f 72 79 3d 3e 2e 68  |ious history=>.h|
000b4c30  69 73 74 33 30 30 3e 09  3c 4e 65 78 74 20 68 69  |ist300>.<Next hi|
000b4c40  73 74 6f 72 79 3d 3e 2e  68 69 73 74 33 30 33 3e  |story=>.hist303>|
000b4c50  0a 23 53 75 62 70 61 67  65 20 68 69 73 74 33 30  |.#Subpage hist30|
000b4c60  33 0a 4f 53 20 48 69 73  74 6f 72 79 20 76 33 2e  |3.OS History v3.|
000b4c70  30 33 0a 23 41 6c 69 67  6e 20 52 69 67 68 74 0a  |03.#Align Right.|
000b4c80  7b 2f 7d 32 32 20 4a 61  6e 20 31 39 39 38 7b 2f  |{/}22 Jan 1998{/|
000b4c90  7d 0a 23 41 6c 69 67 6e  20 4c 65 66 74 0a 8f 09  |}.#Align Left...|
000b4ca0  46 6f 6e 74 20 72 6f 75  74 69 6e 65 73 20 6e 6f  |Font routines no|
000b4cb0  77 20 63 6f 6d 70 6c 65  74 65 6c 79 20 64 6f 63  |w completely doc|
000b4cc0  75 6d 65 6e 74 65 64 20  28 4e 69 63 68 6f 6c 61  |umented (Nichola|
000b4cd0  73 20 43 6c 61 72 6b 29  0a 8f 09 4d 6f 64 69 66  |s Clark)...Modif|
000b4ce0  69 63 61 74 69 6f 6e 73  20 74 6f 20 76 61 72 69  |ications to vari|
000b4cf0  6f 75 73 20 73 77 69 73  20 28 4e 69 63 68 6f 6c  |ous swis (Nichol|
000b4d00  61 73 20 43 6c 61 72 6b  29 0a 8f 09 46 50 45 6d  |as Clark)...FPEm|
000b4d10  75 6c 61 74 6f 72 2c 20  48 6f 75 72 67 6c 61 73  |ulator, Hourglas|
000b4d20  73 5f 43 6f 6c 6f 75 72  73 2c 20 49 49 43 2c 20  |s_Colours, IIC, |
000b4d30  4d 61 6b 65 50 53 46 6f  6e 74 2c 20 53 75 70 65  |MakePSFont, Supe|
000b4d40  72 20 64 6f 63 75 6d 65  6e 74 65 64 20 28 4e 69  |r documented (Ni|
000b4d50  63 68 6f 6c 61 73 20 43  6c 61 72 6b 29 0a 8f 09  |cholas Clark)...|
000b4d60  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 20 33 37 20  |OS_FSControl 37 |
000b4d70  66 69 78 65 64 2c 20 6d  69 73 63 65 6c 6c 61 6e  |fixed, miscellan|
000b4d80  65 6f 75 73 20 54 65 72  72 69 74 6f 72 79 20 63  |eous Territory c|
000b4d90  61 6c 6c 73 20 6d 6f 64  69 66 69 65 64 2e 0a 8f  |alls modified...|
000b4da0  09 44 72 61 77 46 69 6c  65 20 66 6f 72 6d 61 74  |.DrawFile format|
000b4db0  20 6d 6f 76 65 64 20 69  6e 74 6f 20 44 72 61 77  | moved into Draw|
000b4dc0  46 69 6c 65 20 66 72 6f  6d 20 44 72 61 77 0a 8f  |File from Draw..|
000b4dd0  09 43 6f 6c 6f 75 72 54  72 61 6e 73 20 6e 6f 77  |.ColourTrans now|
000b4de0  20 63 6f 6d 70 6c 65 74  65 6c 79 20 64 6f 63 75  | completely docu|
000b4df0  6d 65 6e 74 65 64 2c 20  61 64 64 69 74 69 6f 6e  |mented, addition|
000b4e00  61 6c 20 76 65 63 74 6f  72 73 20 61 64 64 65 64  |al vectors added|
000b4e10  20 28 76 61 72 69 6f 75  73 29 0a 8f 09 53 6f 75  | (various)...Sou|
000b4e20  6e 64 20 53 57 49 73 20  64 6f 63 75 6d 65 6e 74  |nd SWIs document|
000b4e30  65 64 20 28 4e 69 63 68  6f 6c 61 73 20 43 6c 61  |ed (Nicholas Cla|
000b4e40  72 6b 29 0a 8f 09 53 74  61 72 74 65 64 20 6d 61  |rk)...Started ma|
000b4e50  6b 69 6e 67 20 73 6f 6d  65 20 6e 6f 74 65 73 20  |king some notes |
000b4e60  6f 6e 20 74 68 65 20 73  74 72 75 63 74 75 72 65  |on the structure|
000b4e70  0a 8f 09 54 72 61 6e 73  66 6f 72 6d 61 74 69 6f  |...Transformatio|
000b4e80  6e 20 6d 61 74 72 69 78  20 61 64 64 65 64 2c 20  |n matrix added, |
000b4e90  61 6c 6f 6e 67 20 77 69  74 68 20 66 6f 6e 74 20  |along with font |
000b4ea0  32 34 20 66 6f 72 20 74  68 65 20 53 69 64 6e 65  |24 for the Sidne|
000b4eb0  79 20 66 6f 6e 74 20 73  6f 20 74 68 61 74 20 77  |y font so that w|
000b4ec0  65 20 63 61 6e 20 75 73  65 20 74 68 65 20 6d 61  |e can use the ma|
000b4ed0  74 72 69 78 20 62 6c 6f  63 6b 73 0a 8f 09 52 65  |trix blocks...Re|
000b4ee0  6f 72 67 61 6e 69 73 61  74 69 6f 6e 20 6f 66 20  |organisation of |
000b4ef0  63 65 72 74 61 69 6e 20  70 61 72 74 73 20 6f 66  |certain parts of|
000b4f00  20 74 68 65 20 6d 61 6e  75 61 6c 2c 20 75 70 64  | the manual, upd|
000b4f10  61 74 65 73 20 74 6f 20  73 65 72 76 69 63 65 73  |ates to services|
000b4f20  0a 8f 09 52 65 6c 65 61  73 65 64 20 6f 6e 20 66  |...Released on f|
000b4f30  74 70 3a 2f 2f 66 72 65  65 6e 65 74 2e 62 61 72  |tp://freenet.bar|
000b4f40  6e 65 74 2e 61 63 2e 75  6b 2f 6d 61 6e 75 61 6c  |net.ac.uk/manual|
000b4f50  73 2f 6a 2e 66 6c 65 74  63 68 65 72 2f 0a 09 4e  |s/j.fletcher/..N|
000b4f60  6f 74 65 3a 20 54 68 69  73 20 2f 73 68 6f 75 6c  |ote: This /shoul|
000b4f70  64 2f 20 68 61 76 65 20  62 65 65 6e 20 61 20 62  |d/ have been a b|
000b4f80  65 74 61 20 72 65 6c 65  61 73 65 2c 20 62 75 74  |eta release, but|
000b4f90  20 49 20 6e 65 65 64 65  64 20 74 6f 20 72 65 6c  | I needed to rel|
000b4fa0  65 61 73 65 20 73 6f 6d  65 74 68 69 6e 67 20 6f  |ease something o|
000b4fb0  6e 20 74 68 65 20 6d 61  6e 75 61 6c 73 20 73 69  |n the manuals si|
000b4fc0  74 65 2e 0a 0a 3c 50 72  65 76 69 6f 75 73 20 68  |te...<Previous h|
000b4fd0  69 73 74 6f 72 79 3d 3e  2e 68 69 73 74 33 30 32  |istory=>.hist302|
000b4fe0  3e 09 3c 4e 65 78 74 20  68 69 73 74 6f 72 79 3d  |>.<Next history=|
000b4ff0  3e 2e 68 69 73 74 33 30  34 3e 0a 23 53 75 62 70  |>.hist304>.#Subp|
000b5000  61 67 65 20 68 69 73 74  33 30 34 0a 4f 53 20 48  |age hist304.OS H|
000b5010  69 73 74 6f 72 79 20 76  33 2e 30 34 0a 23 41 6c  |istory v3.04.#Al|
000b5020  69 67 6e 20 52 69 67 68  74 0a 7b 2f 7d 30 39 20  |ign Right.{/}09 |
000b5030  46 65 62 20 31 39 39 38  2d 32 34 20 4d 61 72 20  |Feb 1998-24 Mar |
000b5040  31 39 39 38 7b 2f 7d 0a  23 41 6c 69 67 6e 20 4c  |1998{/}.#Align L|
000b5050  65 66 74 0a 8f 09 4d 61  6e 79 20 63 68 61 6e 67  |eft...Many chang|
000b5060  65 73 20 28 45 63 6f 6e  65 74 2c 20 53 65 72 76  |es (Econet, Serv|
000b5070  69 63 65 2c 20 45 76 65  6e 74 2c 20 56 65 63 74  |ice, Event, Vect|
000b5080  6f 72 2c 20 50 6f 72 74  61 62 6c 65 2c 20 65 74  |or, Portable, et|
000b5090  63 29 20 62 79 20 4e 69  63 68 6f 6c 61 73 20 43  |c) by Nicholas C|
000b50a0  6c 61 72 6b 0a 8f 09 4d  6f 72 65 20 63 68 61 6e  |lark...More chan|
000b50b0  67 65 73 20 28 4e 65 74  46 53 2c 20 52 65 73 6f  |ges (NetFS, Reso|
000b50c0  75 72 63 65 46 53 2c 20  53 71 75 61 73 68 29 20  |urceFS, Squash) |
000b50d0  62 79 20 4e 69 63 68 6f  6c 61 73 20 43 6c 61 72  |by Nicholas Clar|
000b50e0  6b 0a 8f 09 46 69 6e 61  6c 6c 79 20 70 6c 75 63  |k...Finally pluc|
000b50f0  6b 65 64 20 75 70 20 63  6f 75 72 61 67 65 20 74  |ked up courage t|
000b5100  6f 20 72 75 6e 20 53 74  72 6f 6e 67 54 73 74 20  |o run StrongTst |
000b5110  61 63 72 6f 73 73 20 69  74 20 61 67 61 69 6e 2e  |across it again.|
000b5120  20 4d 6f 73 74 20 6f 66  20 74 68 65 20 6c 69 6e  | Most of the lin|
000b5130  6b 73 20 73 68 6f 75 6c  64 20 6e 6f 77 20 62 65  |ks should now be|
000b5140  20 76 61 6c 69 64 2e 0a  8f 09 4f 53 5f 43 6f 6e  | valid....OS_Con|
000b5150  76 65 72 74 42 69 6e 61  72 79 2f 53 70 61 63 65  |vertBinary/Space|
000b5160  64 43 61 72 64 69 6e 61  6c 2f 53 70 61 63 65 64  |dCardinal/Spaced|
000b5170  49 6e 74 65 67 65 72 20  61 64 64 65 64 2e 0a 8f  |Integer added...|
000b5180  09 4d 61 6e 79 20 73 65  72 76 69 63 65 20 63 61  |.Many service ca|
000b5190  6c 6c 73 20 61 64 64 65  64 2c 20 61 20 66 65 77  |lls added, a few|
000b51a0  20 6f 74 68 65 72 20 63  68 61 6e 67 65 73 2e 0a  | other changes..|
000b51b0  8f 09 46 61 72 2c 20 66  61 72 20 74 6f 6f 20 6d  |..Far, far too m|
000b51c0  61 6e 79 20 63 68 61 6e  67 65 73 20 6d 61 64 65  |any changes made|
000b51d0  20 74 6f 20 65 76 65 6e  20 74 68 69 6e 6b 20 61  | to even think a|
000b51e0  62 6f 75 74 20 2d 20 69  74 27 73 20 61 6c 6c 20  |bout - it's all |
000b51f0  4e 69 63 6b 73 20 64 6f  69 6e 67 2e 0a 8f 09 55  |Nicks doing....U|
000b5200  70 64 61 74 65 64 20 46  69 6c 65 43 6f 72 65 20  |pdated FileCore |
000b5210  65 6e 74 72 69 65 73 20  74 6f 20 62 65 20 61 20  |entries to be a |
000b5220  6c 69 74 74 6c 65 20 6d  6f 72 65 20 68 65 6c 70  |little more help|
000b5230  66 75 6c 2e 0a 8f 09 47  65 6e 65 72 69 63 20 62  |ful....Generic b|
000b5240  6f 75 6e 64 69 6e 67 20  62 6f 78 20 61 64 64 65  |ounding box adde|
000b5250  64 2c 20 61 6e 64 20 6c  69 6e 6b 65 64 20 66 72  |d, and linked fr|
000b5260  6f 6d 20 6f 74 68 65 72  20 65 6e 74 72 69 65 73  |om other entries|
000b5270  0a 8f 09 4d 6f 72 65 20  42 79 74 65 2c 20 56 65  |...More Byte, Ve|
000b5280  63 74 6f 72 2c 20 53 65  72 76 69 63 65 2c 20 65  |ctor, Service, e|
000b5290  74 63 20 63 61 6c 6c 73  20 62 79 20 4e 69 63 6b  |tc calls by Nick|
000b52a0  2e 0a 8f 09 44 72 61 77  46 69 6c 65 20 73 65 72  |....DrawFile ser|
000b52b0  76 69 63 65 73 20 61 64  64 65 64 0a 8f 09 53 65  |vices added...Se|
000b52c0  72 69 6f 75 73 20 6e 6f  74 65 20 69 6e 20 4f 53  |rious note in OS|
000b52d0  5f 46 69 6c 65 20 61 62  6f 75 74 20 6e 6f 6e 2d  |_File about non-|
000b52e0  72 65 74 75 72 6e 20 6f  66 20 27 6c 6f 61 64 27  |return of 'load'|
000b52f0  2c 20 61 6e 64 20 65 78  70 61 6e 73 69 6f 6e 20  |, and expansion |
000b5300  6f 66 20 76 61 72 69 61  62 6c 65 2e 0a 8f 09 4e  |of variable....N|
000b5310  65 74 50 72 69 6e 74 20  64 6f 63 75 6d 65 6e 74  |etPrint document|
000b5320  65 64 2c 20 75 70 64 61  74 65 73 20 74 6f 20 76  |ed, updates to v|
000b5330  61 72 69 6f 75 73 20 4f  53 20 53 57 49 73 20 61  |arious OS SWIs a|
000b5340  6e 64 20 52 50 43 20 6b  65 79 62 6f 61 72 64 20  |nd RPC keyboard |
000b5350  64 69 61 67 72 61 6d 20  61 64 64 65 64 20 28 4e  |diagram added (N|
000b5360  69 63 6b 20 43 6c 61 72  6b 29 0a 8f 09 52 65 66  |ick Clark)...Ref|
000b5370  6f 72 6d 61 74 74 65 64  2c 20 6c 69 6e 6b 73 20  |ormatted, links |
000b5380  63 68 65 63 6b 65 64 20  61 6e 64 20 63 6c 65 61  |checked and clea|
000b5390  6e 20 63 6f 70 69 65 64  20 66 6f 72 20 72 65 6c  |n copied for rel|
000b53a0  65 61 73 65 20 28 70 68  65 77 21 29 0a 0a 3c 50  |ease (phew!)..<P|
000b53b0  72 65 76 69 6f 75 73 20  68 69 73 74 6f 72 79 3d  |revious history=|
000b53c0  3e 2e 68 69 73 74 33 30  33 3e 0a 00 44 49 52 24  |>.hist303>..DIR$|
000b53d0  04 02 00 00 04 02 00 00  d0 55 0b 00 48 fd ff ff  |.........U..H...|
000b53e0  fe 31 67 26 60 01 00 00  03 00 00 00 00 00 00 00  |.1g&`...........|
000b53f0  21 52 6f 6f 74 00 00 00  30 57 0b 00 47 ff ff ff  |!Root...0W..G...|
000b5400  a1 84 33 cd d6 00 00 00  03 00 00 00 00 00 00 00  |..3.............|
000b5410  43 6c 6f 73 65 00 00 00  08 58 0b 00 47 ff ff ff  |Close....X..G...|
000b5420  ee 85 33 cd 89 01 00 00  03 00 00 00 00 00 00 00  |..3.............|
000b5430  47 65 74 42 79 74 65 73  00 00 00 00 94 59 0b 00  |GetBytes.....Y..|
000b5440  48 fd ff ff 4c 20 e7 1a  e0 01 00 00 03 00 00 00  |H...L ..........|
000b5450  00 00 00 00 47 65 74 42  79 74 65 73 42 00 00 00  |....GetBytesB...|
000b5460  74 5b 0b 00 48 fd ff ff  f3 a0 34 1f 71 02 00 00  |t[..H.....4.q...|
000b5470  03 00 00 00 00 00 00 00  47 65 74 42 79 74 65 73  |........GetBytes|
000b5480  55 00 00 00 e8 5d 0b 00  47 ff ff ff 01 84 33 cd  |U....]..G.....3.|
000b5490  1f 04 00 00 03 00 00 00  00 00 00 00 4f 70 65 6e  |............Open|
000b54a0  00 00 00 00 08 62 0b 00  47 ff ff ff 05 86 33 cd  |.....b..G.....3.|
000b54b0  8a 01 00 00 03 00 00 00  00 00 00 00 50 75 74 42  |............PutB|
000b54c0  79 74 65 73 00 00 00 00  94 63 0b 00 48 fd ff ff  |ytes.....c..H...|
000b54d0  02 1e e7 1a 4f 01 00 00  03 00 00 00 00 00 00 00  |....O...........|
000b54e0  50 75 74 42 79 74 65 73  42 00 00 00 e4 64 0b 00  |PutBytesB....d..|
000b54f0  48 fd ff ff 12 95 34 1f  7e 01 00 00 03 00 00 00  |H.....4.~.......|
000b5500  00 00 00 00 50 75 74 42  79 74 65 73 55 00 00 00  |....PutBytesU...|
000b5510  64 66 0b 00 48 ff ff ff  9a 8a 34 1f 1b 03 00 00  |df..H.....4.....|
000b5520  03 00 00 00 00 00 00 00  47 42 50 42 00 00 00 00  |........GBPB....|
000b5530  80 69 0b 00 48 fd ff ff  43 ec 66 26 c7 02 00 00  |.i..H...C.f&....|
000b5540  03 00 00 00 00 00 00 00  47 42 50 42 31 00 00 00  |........GBPB1...|
000b5550  48 6c 0b 00 48 fd ff ff  35 e8 66 26 56 03 00 00  |Hl..H...5.f&V...|
000b5560  03 00 00 00 00 00 00 00  47 42 50 42 33 00 00 00  |........GBPB3...|
000b5570  a0 6f 0b 00 48 fd ff ff  99 31 81 2b 60 01 00 00  |.o..H....1.+`...|
000b5580  13 01 00 00 00 00 00 00  41 72 67 73 00 00 00 00  |........Args....|
000b5590  04 83 0b 00 48 fd ff ff  54 32 81 2b 7c 01 00 00  |....H...T2.+|...|
000b55a0  13 01 00 00 00 00 00 00  46 69 6c 65 00 00 00 00  |........File....|
000b55b0  74 99 0b 00 48 fd ff ff  11 33 81 2b ac 03 00 00  |t...H....3.+....|
000b55c0  13 01 00 00 00 00 00 00  46 75 6e 63 00 00 00 00  |........Func....|
000b55d0  44 41 54 41 60 01 00 00  46 53 45 6e 74 72 79 20  |DATA`...FSEntry |
000b55e0  2d 20 46 69 6c 69 6e 67  20 73 79 73 74 65 6d 20  |- Filing system |
000b55f0  65 6e 74 72 79 20 70 6f  69 6e 74 73 0a 23 20 54  |entry points.# T|
000b5600  68 69 73 20 70 61 67 65  20 69 73 20 69 6e 63 6c  |his page is incl|
000b5610  75 64 65 64 20 66 72 6f  6d 20 6f 74 68 65 72 20  |uded from other |
000b5620  70 61 67 65 73 20 49 20  74 68 69 6e 6b 2e 0a 23  |pages I think..#|
000b5630  50 61 72 65 6e 74 20 21  52 6f 6f 74 0a 46 69 6c  |Parent !Root.Fil|
000b5640  69 6e 67 20 73 79 73 74  65 6d 20 65 6e 74 72 79  |ing system entry|
000b5650  20 70 6f 69 6e 74 73 20  61 72 65 20 64 65 66 69  | points are defi|
000b5660  6e 65 64 20 62 79 20 74  68 65 20 66 69 6c 69 6e  |ned by the filin|
000b5670  67 20 73 79 73 74 65 6d  20 69 6e 66 6f 72 6d 61  |g system informa|
000b5680  74 69 6f 6e 20 62 6c 6f  63 6b 20 3a 0a 0a 23 66  |tion block :..#f|
000b5690  48 34 0a 23 49 6e 63 6c  75 64 65 20 66 73 79 73  |H4.#Include fsys|
000b56a0  5f 69 6e 66 6f 62 6c 6f  63 6b 0a 0a 54 6f 20 63  |_infoblock..To c|
000b56b0  72 65 61 74 65 20 61 20  66 69 6c 69 6e 67 20 73  |reate a filing s|
000b56c0  79 73 74 65 6d 2c 20 75  73 65 20 3c 4f 53 5f 46  |ystem, use <OS_F|
000b56d0  53 43 6f 6e 74 72 6f 6c  20 31 32 3d 3e 4f 53 5f  |SControl 12=>OS_|
000b56e0  46 53 43 6f 6e 74 72 6f  6c 31 32 3e 2e 0a 54 6f  |FSControl12>..To|
000b56f0  20 72 65 6d 6f 76 65 20  61 20 66 69 6c 69 6e 67  | remove a filing|
000b5700  20 73 79 73 74 65 6d 2c  20 75 73 65 20 3c 4f 53  | system, use <OS|
000b5710  5f 46 53 43 6f 6e 74 72  6f 6c 20 31 34 3d 3e 4f  |_FSControl 14=>O|
000b5720  53 5f 46 53 43 6f 6e 74  72 6f 6c 31 36 3e 2e 0a  |S_FSControl16>..|
000b5730  44 41 54 41 d6 00 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000b5740  43 6c 6f 73 65 0a 23 50  61 72 65 6e 74 20 46 53  |Close.#Parent FS|
000b5750  45 6e 74 72 79 5f 0a 3d  3e 09 52 31 20 3d 09 69  |Entry_.=>.R1 =.i|
000b5760  6e 74 65 72 6e 61 6c 20  66 69 6c 65 20 68 61 6e  |nternal file han|
000b5770  64 6c 65 20 72 65 74 75  72 6e 65 64 20 62 79 20  |dle returned by |
000b5780  3c 46 53 45 6e 74 72 79  5f 4f 70 65 6e 3e 0a 09  |<FSEntry_Open>..|
000b5790  52 32 20 3d 09 6e 65 77  20 6c 6f 61 64 20 61 64  |R2 =.new load ad|
000b57a0  64 72 65 73 73 20 6f 66  20 66 69 6c 65 0a 09 52  |dress of file..R|
000b57b0  33 20 3d 09 6e 65 77 20  65 78 65 63 20 61 64 64  |3 =.new exec add|
000b57c0  72 65 73 73 20 6f 66 20  66 69 6c 65 0a 0a 54 68  |ress of file..Th|
000b57d0  69 73 20 65 6e 74 72 79  20 70 6f 69 6e 74 20 69  |is entry point i|
000b57e0  73 20 63 61 6c 6c 65 64  20 77 68 65 6e 20 66 69  |s called when fi|
000b57f0  6c 65 73 20 61 72 65 20  62 65 69 6e 67 20 63 6c  |les are being cl|
000b5800  6f 73 65 64 2e 0a 00 00  44 41 54 41 89 01 00 00  |osed....DATA....|
000b5810  46 53 45 6e 74 72 79 5f  47 65 74 42 79 74 65 73  |FSEntry_GetBytes|
000b5820  0a 23 50 61 72 65 6e 74  20 46 53 45 6e 74 72 79  |.#Parent FSEntry|
000b5830  5f 0a 3d 3e 09 52 31 20  3d 09 69 6e 74 65 72 6e  |_.=>.R1 =.intern|
000b5840  61 6c 20 68 61 6e 64 6c  65 20 72 65 74 75 72 6e  |al handle return|
000b5850  65 64 20 62 79 20 3c 46  53 45 6e 74 72 79 5f 4f  |ed by <FSEntry_O|
000b5860  70 65 6e 3e 0a 09 6f 74  68 65 72 73 20 64 65 70  |pen>..others dep|
000b5870  65 6e 64 61 6e 74 20 6f  6e 20 62 75 66 66 65 72  |endant on buffer|
000b5880  69 6e 67 0a 0a 54 68 69  73 20 69 73 20 63 61 6c  |ing..This is cal|
000b5890  6c 65 64 20 74 6f 20 72  65 61 64 20 64 61 74 61  |led to read data|
000b58a0  20 66 72 6f 6d 20 61 20  66 69 6c 65 2e 20 54 68  | from a file. Th|
000b58b0  65 72 65 20 61 72 65 20  74 77 6f 20 66 6f 72 6d  |ere are two form|
000b58c0  73 20 6f 66 20 74 68 65  20 63 61 6c 6c 20 75 73  |s of the call us|
000b58d0  65 64 2c 20 64 65 70 65  6e 64 69 6e 67 20 6f 6e  |ed, depending on|
000b58e0  20 77 68 65 74 68 65 72  20 74 68 65 20 66 69 6c  | whether the fil|
000b58f0  69 6e 67 20 73 79 73 74  65 6d 20 75 73 65 73 20  |ing system uses |
000b5900  73 79 73 74 65 6d 20 62  75 66 66 65 72 65 64 20  |system buffered |
000b5910  66 69 6c 65 73 20 6f 72  20 6e 6f 74 20 3a 0a 23  |files or not :.#|
000b5920  49 6e 64 65 6e 74 20 32  0a 8f 09 3c 46 53 45 6e  |Indent 2...<FSEn|
000b5930  74 72 79 5f 47 65 74 42  79 74 65 73 3d 3e 46 53  |try_GetBytes=>FS|
000b5940  45 6e 74 72 79 5f 47 65  74 42 79 74 65 73 42 3e  |Entry_GetBytesB>|
000b5950  20 28 62 75 66 66 65 72  65 64 29 0a 8f 09 3c 46  | (buffered)...<F|
000b5960  53 45 6e 74 72 79 5f 47  65 74 42 79 74 65 73 3d  |SEntry_GetBytes=|
000b5970  3e 46 53 45 6e 74 72 79  5f 47 65 74 42 79 74 65  |>FSEntry_GetByte|
000b5980  73 55 3e 20 28 75 6e 62  75 66 66 65 72 65 64 29  |sU> (unbuffered)|
000b5990  0a 00 00 00 44 41 54 41  e0 01 00 00 46 53 45 6e  |....DATA....FSEn|
000b59a0  74 72 79 5f 47 65 74 42  79 74 65 73 20 28 62 75  |try_GetBytes (bu|
000b59b0  66 66 65 72 65 64 29 0a  23 50 61 72 65 6e 74 20  |ffered).#Parent |
000b59c0  46 53 45 6e 74 72 79 5f  0a 3d 3e 09 52 31 20 3d  |FSEntry_.=>.R1 =|
000b59d0  09 69 6e 74 65 72 6e 61  6c 20 66 69 6c 65 20 68  |.internal file h|
000b59e0  61 6e 64 6c 65 20 72 65  74 75 72 6e 65 64 20 62  |andle returned b|
000b59f0  79 20 3c 46 53 45 6e 74  72 79 5f 4f 70 65 6e 3e  |y <FSEntry_Open>|
000b5a00  0a 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R2 =.pointer t|
000b5a10  6f 20 62 75 66 66 65 72  20 74 6f 20 72 65 61 64  |o buffer to read|
000b5a20  20 69 6e 74 6f 0a 09 52  33 20 3d 09 6c 65 6e 67  | into..R3 =.leng|
000b5a30  74 68 20 74 6f 20 72 65  61 64 0a 09 52 34 20 3d  |th to read..R4 =|
000b5a40  09 6f 66 66 73 65 74 20  66 72 6f 6d 20 77 68 69  |.offset from whi|
000b5a50  63 68 20 74 6f 20 72 65  61 64 0a 3c 3d 09 61 6c  |ch to read.<=.al|
000b5a60  6c 20 70 72 65 73 65 72  76 65 64 0a 0a 54 68 69  |l preserved..Thi|
000b5a70  73 20 65 6e 74 72 79 20  70 6f 69 6e 74 20 69 73  |s entry point is|
000b5a80  20 63 61 6c 6c 65 64 20  77 68 65 6e 20 64 61 74  | called when dat|
000b5a90  61 20 69 73 20 6e 65 65  64 65 64 20 74 6f 20 62  |a is needed to b|
000b5aa0  65 20 72 65 61 64 20 66  72 6f 6d 20 61 20 66 69  |e read from a fi|
000b5ab0  6c 65 20 66 6f 72 20 77  68 69 63 68 20 46 69 6c  |le for which Fil|
000b5ac0  65 53 77 69 74 63 68 20  68 61 73 20 6e 6f 20 62  |eSwitch has no b|
000b5ad0  75 66 66 65 72 65 64 20  64 61 74 61 2e 20 54 68  |uffered data. Th|
000b5ae0  69 73 20 77 69 6c 6c 20  6e 6f 74 20 62 65 20 70  |is will not be p|
000b5af0  65 72 66 6f 72 6d 65 64  20 6f 6e 20 74 68 65 20  |erformed on the |
000b5b00  69 6e 69 74 69 61 6c 20  6f 70 65 6e 2c 20 62 75  |initial open, bu|
000b5b10  74 20 6f 6e 6c 79 20 6f  6e 20 73 75 62 73 65 71  |t only on subseq|
000b5b20  75 65 6e 74 20 61 63 63  65 73 73 20 74 6f 20 74  |uent access to t|
000b5b30  68 65 20 66 69 6c 65 2e  0a 0a 4d 65 6d 6f 72 79  |he file...Memory|
000b5b40  20 61 64 64 72 65 73 73  65 73 20 61 72 65 20 2a  | addresses are *|
000b5b50  6e 6f 74 2a 20 67 75 61  72 61 6e 74 65 65 64 20  |not* guaranteed |
000b5b60  74 6f 20 62 65 20 77 6f  72 64 20 61 6c 69 67 6e  |to be word align|
000b5b70  65 64 2e 0a 44 41 54 41  71 02 00 00 46 53 45 6e  |ed..DATAq...FSEn|
000b5b80  74 72 79 5f 47 65 74 42  79 74 65 73 20 28 75 6e  |try_GetBytes (un|
000b5b90  62 75 66 66 65 72 65 64  29 0a 23 50 61 72 65 6e  |buffered).#Paren|
000b5ba0  74 20 46 53 45 6e 74 72  79 5f 0a 3d 3e 09 52 31  |t FSEntry_.=>.R1|
000b5bb0  20 3d 09 69 6e 74 65 72  6e 61 6c 20 66 69 6c 65  | =.internal file|
000b5bc0  20 68 61 6e 64 6c 65 20  72 65 74 75 72 6e 65 64  | handle returned|
000b5bd0  20 62 79 20 3c 46 53 45  6e 74 72 79 5f 4f 70 65  | by <FSEntry_Ope|
000b5be0  6e 3e 0a 23 54 61 62 0a  3c 3d 09 49 66 20 43 20  |n>.#Tab.<=.If C |
000b5bf0  63 6c 65 61 72 2c 20 52  30 20 3d 09 62 79 74 65  |clear, R0 =.byte|
000b5c00  20 72 65 61 64 0a 09 49  66 20 43 20 73 65 74 2c  | read..If C set,|
000b5c10  20 52 30 20 3d 09 09 75  6e 64 65 66 69 6e 65 64  | R0 =..undefined|
000b5c20  20 28 61 74 20 65 6e 64  20 6f 66 20 66 69 6c 65  | (at end of file|
000b5c30  29 0a 0a 54 68 69 73 20  65 6e 74 72 79 20 70 6f  |)..This entry po|
000b5c40  69 6e 74 20 69 73 20 63  61 6c 6c 65 64 20 77 68  |int is called wh|
000b5c50  65 6e 20 64 61 74 61 20  69 73 20 6e 65 65 64 65  |en data is neede|
000b5c60  64 20 74 6f 20 62 65 20  72 65 61 64 20 66 72 6f  |d to be read fro|
000b5c70  6d 20 61 20 66 69 6c 65  20 66 6f 72 20 77 68 69  |m a file for whi|
000b5c80  63 68 20 46 69 6c 65 53  77 69 74 63 68 20 68 61  |ch FileSwitch ha|
000b5c90  73 20 6e 6f 20 62 75 66  66 65 72 65 64 20 64 61  |s no buffered da|
000b5ca0  74 61 2e 20 54 68 69 73  20 77 69 6c 6c 20 6e 6f  |ta. This will no|
000b5cb0  74 20 62 65 20 70 65 72  66 6f 72 6d 65 64 20 6f  |t be performed o|
000b5cc0  6e 20 74 68 65 20 69 6e  69 74 69 61 6c 20 6f 70  |n the initial op|
000b5cd0  65 6e 2c 20 62 75 74 20  6f 6e 6c 79 20 6f 6e 20  |en, but only on |
000b5ce0  73 75 62 73 65 71 75 65  6e 74 20 61 63 63 65 73  |subsequent acces|
000b5cf0  73 20 74 6f 20 74 68 65  20 66 69 6c 65 2e 20 59  |s to the file. Y|
000b5d00  6f 75 20 73 68 6f 75 6c  64 20 75 70 64 61 74 65  |ou should update|
000b5d10  20 79 6f 75 72 20 73 65  71 75 65 6e 74 69 61 6c  | your sequential|
000b5d20  20 70 6f 69 6e 74 65 72  20 75 6e 6c 65 73 73 20  | pointer unless |
000b5d30  74 68 65 20 65 6e 64 20  6f 66 20 74 68 65 20 66  |the end of the f|
000b5d40  69 6c 65 20 68 61 73 20  62 65 65 6e 20 72 65 61  |ile has been rea|
000b5d50  63 68 65 64 2e 20 54 68  69 73 20 77 69 6c 6c 20  |ched. This will |
000b5d60  62 65 20 63 61 6c 6c 65  64 20 69 6e 20 70 6c 61  |be called in pla|
000b5d70  63 65 20 6f 66 20 61 20  3c 47 42 50 42 3d 3e 46  |ce of a <GBPB=>F|
000b5d80  53 45 6e 74 72 79 5f 47  42 50 42 3e 20 63 61 6c  |SEntry_GBPB> cal|
000b5d90  6c 20 69 66 20 69 74 20  69 73 20 6e 6f 74 20 61  |l if it is not a|
000b5da0  76 61 69 6c 61 62 6c 65  2e 0a 0a 4d 65 6d 6f 72  |vailable...Memor|
000b5db0  79 20 61 64 64 72 65 73  73 65 73 20 61 72 65 20  |y addresses are |
000b5dc0  2a 6e 6f 74 2a 20 67 75  61 72 61 6e 74 65 65 64  |*not* guaranteed|
000b5dd0  20 74 6f 20 62 65 20 77  6f 72 64 20 61 6c 69 67  | to be word alig|
000b5de0  6e 65 64 2e 0a 00 00 00  44 41 54 41 1f 04 00 00  |ned.....DATA....|
000b5df0  46 53 45 6e 74 72 79 5f  4f 70 65 6e 0a 23 50 61  |FSEntry_Open.#Pa|
000b5e00  72 65 6e 74 20 46 53 45  6e 74 72 79 5f 0a 3d 3e  |rent FSEntry_.=>|
000b5e10  09 52 30 20 3d 09 3c 72  65 61 73 6f 6e 20 63 6f  |.R0 =.<reason co|
000b5e20  64 65 3d 3e 2e 72 65 61  73 6f 6e 3e 0a 09 52 31  |de=>.reason>..R1|
000b5e30  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 66 69  | =.pointer to fi|
000b5e40  6c 65 6e 61 6d 65 0a 09  52 33 20 3d 09 46 69 6c  |lename..R3 =.Fil|
000b5e50  65 53 77 69 74 63 68 20  66 69 6c 65 20 68 61 6e  |eSwitch file han|
000b5e60  64 6c 65 20 77 68 69 63  68 20 77 69 6c 6c 20 62  |dle which will b|
000b5e70  65 20 61 6c 6c 6f 63 61  74 65 64 0a 09 52 36 20  |e allocated..R6 |
000b5e80  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 73 70 65  |=.pointer to spe|
000b5e90  63 69 61 6c 20 66 69 65  6c 64 2c 20 6f 72 20 30  |cial field, or 0|
000b5ea0  20 69 66 20 6e 6f 74 20  70 72 65 73 65 6e 74 0a  | if not present.|
000b5eb0  0a 3c 3d 09 52 30 20 3d  09 3c 66 69 6c 65 20 69  |.<=.R0 =.<file i|
000b5ec0  6e 66 6f 72 6d 61 74 69  6f 6e 20 77 6f 72 64 3d  |nformation word=|
000b5ed0  3e 2e 66 69 6c 65 69 6e  66 6f 3e 0a 09 52 31 20  |>.fileinfo>..R1 |
000b5ee0  3d 09 69 6e 74 65 72 6e  61 6c 20 66 69 6c 65 20  |=.internal file |
000b5ef0  68 61 6e 64 6c 65 2c 20  6f 72 20 30 20 69 66 20  |handle, or 0 if |
000b5f00  75 6e 61 62 6c 65 20 74  6f 20 6f 70 65 6e 0a 09  |unable to open..|
000b5f10  52 32 20 3d 09 62 75 66  66 65 72 20 66 6f 72 20  |R2 =.buffer for |
000b5f20  46 69 6c 65 53 77 69 74  63 68 20 74 6f 20 75 73  |FileSwitch to us|
000b5f30  65 2c 20 6f 72 20 30 20  69 66 20 75 6e 62 75 66  |e, or 0 if unbuf|
000b5f40  66 65 72 65 64 20 28 70  6f 77 65 72 73 20 6f 66  |fered (powers of|
000b5f50  20 32 20 66 72 6f 6d 20  36 34 20 74 6f 20 31 30  | 2 from 64 to 10|
000b5f60  32 34 29 0a 09 52 33 20  3d 09 66 69 6c 65 20 65  |24)..R3 =.file e|
000b5f70  78 74 65 6e 74 20 69 66  20 62 75 66 66 65 72 65  |xtent if buffere|
000b5f80  64 0a 09 52 34 20 3d 09  73 70 61 63 65 20 61 6c  |d..R4 =.space al|
000b5f90  6c 6f 63 61 74 65 64 20  74 6f 20 66 69 6c 65 20  |located to file |
000b5fa0  69 66 20 62 75 66 66 65  72 65 64 20 28 6d 75 73  |if buffered (mus|
000b5fb0  74 20 62 65 20 61 20 6d  75 6c 74 69 70 6c 65 20  |t be a multiple |
000b5fc0  6f 66 20 52 32 29 0a 09  0a 54 68 69 73 20 65 6e  |of R2)...This en|
000b5fd0  74 72 79 20 70 6f 69 6e  74 20 69 73 20 63 61 6c  |try point is cal|
000b5fe0  6c 65 64 20 77 68 65 6e  20 61 6e 20 61 74 74 65  |led when an atte|
000b5ff0  6d 70 74 20 69 73 20 6d  61 64 65 20 74 6f 20 61  |mpt is made to a|
000b6000  63 63 65 73 73 20 61 20  66 69 6c 65 20 69 6e 73  |ccess a file ins|
000b6010  69 64 65 20 61 6e 20 69  6d 61 67 65 2e 20 54 68  |ide an image. Th|
000b6020  65 20 69 6e 74 65 72 6e  61 6c 20 66 69 6c 65 20  |e internal file |
000b6030  68 61 6e 64 6c 65 20 77  69 6c 6c 20 62 65 20 72  |handle will be r|
000b6040  65 66 65 72 72 65 64 20  74 6f 20 62 79 20 46 69  |eferred to by Fi|
000b6050  6c 65 53 77 69 74 63 68  20 69 6e 20 73 75 62 73  |leSwitch in subs|
000b6060  65 71 75 65 6e 74 20 66  69 6c 65 20 61 63 63 65  |equent file acce|
000b6070  73 73 65 73 20 69 66 20  74 68 65 20 66 69 6c 65  |sses if the file|
000b6080  20 77 61 73 20 73 75 63  63 65 73 73 66 75 6c 6c  | was successfull|
000b6090  79 20 6f 70 65 6e 65 64  2e 0a 23 0a 23 53 75 62  |y opened..#.#Sub|
000b60a0  70 61 67 65 20 66 69 6c  65 69 6e 66 6f 0a 46 69  |page fileinfo.Fi|
000b60b0  6c 65 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 77  |le information w|
000b60c0  6f 72 64 0a 42 69 74 09  4d 65 61 6e 69 6e 67 0a  |ord.Bit.Meaning.|
000b60d0  23 4c 69 6e 65 0a 33 31  09 57 72 69 74 65 73 20  |#Line.31.Writes |
000b60e0  61 72 65 20 61 6c 6c 6f  77 65 64 0a 33 30 09 52  |are allowed.30.R|
000b60f0  65 61 64 73 20 61 72 65  20 61 6c 6c 6f 77 65 64  |eads are allowed|
000b6100  0a 32 39 09 46 69 6c 65  20 69 73 20 61 20 64 69  |.29.File is a di|
000b6110  72 65 63 74 6f 72 79 0a  32 38 09 55 6e 62 75 66  |rectory.28.Unbuf|
000b6120  66 65 72 65 64 20 4f 53  5f 47 42 50 42 20 73 75  |fered OS_GBPB su|
000b6130  70 70 6f 72 74 65 64 20  28 6f 6e 6c 79 20 69 66  |pported (only if|
000b6140  20 73 74 72 65 61 6d 2d  74 79 70 65 29 0a 32 37  | stream-type).27|
000b6150  09 53 74 72 65 61 6d 20  69 73 20 69 6e 74 65 72  |.Stream is inter|
000b6160  61 63 74 69 76 65 0a 23  53 75 62 70 61 67 65 20  |active.#Subpage |
000b6170  72 65 61 73 6f 6e 0a 46  53 45 6e 74 72 79 5f 4f  |reason.FSEntry_O|
000b6180  70 65 6e 20 72 65 61 73  6f 6e 73 0a 52 65 61 73  |pen reasons.Reas|
000b6190  6f 6e 09 4d 65 61 6e 69  6e 67 0a 23 4c 69 6e 65  |on.Meaning.#Line|
000b61a0  0a 30 09 46 69 6c 65 20  69 73 20 6f 70 65 6e 69  |.0.File is openi|
000b61b0  6e 67 20 66 6f 72 20 72  65 61 64 0a 31 09 46 69  |ng for read.1.Fi|
000b61c0  6c 65 20 69 73 20 62 65  69 6e 67 20 63 72 65 61  |le is being crea|
000b61d0  74 65 64 20 61 6e 64 20  6f 70 65 6e 65 64 20 66  |ted and opened f|
000b61e0  6f 72 20 75 70 64 61 74  65 0a 32 09 46 69 6c 65  |or update.2.File|
000b61f0  20 69 73 20 6f 70 65 6e  69 6e 67 20 66 6f 72 20  | is opening for |
000b6200  75 70 64 61 74 65 0a 00  44 41 54 41 8a 01 00 00  |update..DATA....|
000b6210  46 53 45 6e 74 72 79 5f  50 75 74 42 79 74 65 73  |FSEntry_PutBytes|
000b6220  0a 23 50 61 72 65 6e 74  20 46 53 45 6e 74 72 79  |.#Parent FSEntry|
000b6230  5f 0a 3d 3e 09 52 31 20  3d 09 69 6e 74 65 72 6e  |_.=>.R1 =.intern|
000b6240  61 6c 20 68 61 6e 64 6c  65 20 72 65 74 75 72 6e  |al handle return|
000b6250  65 64 20 62 79 20 3c 46  53 45 6e 74 72 79 5f 4f  |ed by <FSEntry_O|
000b6260  70 65 6e 3e 0a 09 6f 74  68 65 72 73 20 64 65 70  |pen>..others dep|
000b6270  65 6e 64 61 6e 74 20 6f  6e 20 62 75 66 66 65 72  |endant on buffer|
000b6280  69 6e 67 0a 0a 54 68 69  73 20 69 73 20 63 61 6c  |ing..This is cal|
000b6290  6c 65 64 20 74 6f 20 77  72 6f 74 65 20 64 61 74  |led to wrote dat|
000b62a0  61 20 66 72 6f 6d 20 61  20 66 69 6c 65 2e 20 54  |a from a file. T|
000b62b0  68 65 72 65 20 61 72 65  20 74 77 6f 20 66 6f 72  |here are two for|
000b62c0  6d 73 20 6f 66 20 74 68  65 20 63 61 6c 6c 20 75  |ms of the call u|
000b62d0  73 65 64 2c 20 64 65 70  65 6e 64 69 6e 67 20 6f  |sed, depending o|
000b62e0  6e 20 77 68 65 74 68 65  72 20 74 68 65 20 66 69  |n whether the fi|
000b62f0  6c 69 6e 67 20 73 79 73  74 65 6d 20 75 73 65 73  |ling system uses|
000b6300  20 73 79 73 74 65 6d 20  62 75 66 66 65 72 65 64  | system buffered|
000b6310  20 66 69 6c 65 73 20 6f  72 20 6e 6f 74 20 3a 0a  | files or not :.|
000b6320  23 49 6e 64 65 6e 74 20  32 0a 8f 09 3c 46 53 45  |#Indent 2...<FSE|
000b6330  6e 74 72 79 5f 50 75 74  42 79 74 65 73 3d 3e 46  |ntry_PutBytes=>F|
000b6340  53 45 6e 74 72 79 5f 50  75 74 42 79 74 65 73 42  |SEntry_PutBytesB|
000b6350  3e 20 28 62 75 66 66 65  72 65 64 29 0a 8f 09 3c  |> (buffered)...<|
000b6360  46 53 45 6e 74 72 79 5f  50 75 74 42 79 74 65 73  |FSEntry_PutBytes|
000b6370  3d 3e 46 53 45 6e 74 72  79 5f 50 75 74 42 79 74  |=>FSEntry_PutByt|
000b6380  65 73 55 3e 20 28 75 6e  62 75 66 66 65 72 65 64  |esU> (unbuffered|
000b6390  29 0a 00 00 44 41 54 41  4f 01 00 00 46 53 45 6e  |)...DATAO...FSEn|
000b63a0  74 72 79 5f 50 75 74 42  79 74 65 73 20 28 62 75  |try_PutBytes (bu|
000b63b0  66 66 65 72 65 64 29 0a  23 50 61 72 65 6e 74 20  |ffered).#Parent |
000b63c0  46 53 45 6e 74 72 79 5f  0a 3d 3e 09 52 31 20 3d  |FSEntry_.=>.R1 =|
000b63d0  09 69 6e 74 65 72 6e 61  6c 20 66 69 6c 65 20 68  |.internal file h|
000b63e0  61 6e 64 6c 65 20 72 65  74 75 72 6e 65 64 20 62  |andle returned b|
000b63f0  79 20 3c 46 53 45 6e 74  72 79 5f 4f 70 65 6e 3e  |y <FSEntry_Open>|
000b6400  0a 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R2 =.pointer t|
000b6410  6f 20 62 75 66 66 65 72  20 74 6f 20 77 72 69 74  |o buffer to writ|
000b6420  65 20 66 72 6f 6d 0a 09  52 33 20 3d 09 6c 65 6e  |e from..R3 =.len|
000b6430  67 74 68 20 74 6f 20 77  72 69 74 65 0a 09 52 34  |gth to write..R4|
000b6440  20 3d 09 6f 66 66 73 65  74 20 61 74 20 77 68 69  | =.offset at whi|
000b6450  63 68 20 74 6f 20 77 72  69 74 65 0a 3c 3d 09 61  |ch to write.<=.a|
000b6460  6c 6c 20 70 72 65 73 65  72 76 65 64 0a 0a 54 68  |ll preserved..Th|
000b6470  69 73 20 65 6e 74 72 79  20 70 6f 69 6e 74 20 69  |is entry point i|
000b6480  73 20 63 61 6c 6c 65 64  20 77 68 65 6e 20 64 61  |s called when da|
000b6490  74 61 20 69 73 20 77 72  69 74 74 65 6e 20 74 6f  |ta is written to|
000b64a0  20 61 20 66 69 6c 65 2e  20 4d 65 6d 6f 72 79 20  | a file. Memory |
000b64b0  61 64 64 72 65 73 73 65  73 20 61 72 65 20 2a 6e  |addresses are *n|
000b64c0  6f 74 2a 20 67 75 61 72  61 6e 74 65 65 64 20 74  |ot* guaranteed t|
000b64d0  6f 20 62 65 20 77 6f 72  64 20 61 6c 69 67 6e 65  |o be word aligne|
000b64e0  64 2e 0a 00 44 41 54 41  7e 01 00 00 46 53 45 6e  |d...DATA~...FSEn|
000b64f0  74 72 79 5f 50 75 74 42  79 74 65 73 20 28 75 6e  |try_PutBytes (un|
000b6500  62 75 66 66 65 72 65 64  29 0a 23 50 61 72 65 6e  |buffered).#Paren|
000b6510  74 20 46 53 45 6e 74 72  79 5f 0a 3d 3e 09 52 30  |t FSEntry_.=>.R0|
000b6520  20 3d 09 62 79 74 65 20  74 6f 20 70 75 74 20 74  | =.byte to put t|
000b6530  6f 20 66 69 6c 65 20 28  77 69 6c 6c 20 68 61 76  |o file (will hav|
000b6540  65 20 74 6f 70 20 62 69  74 73 20 63 6c 65 61 72  |e top bits clear|
000b6550  29 0a 09 52 31 20 3d 09  69 6e 74 65 72 6e 61 6c  |)..R1 =.internal|
000b6560  20 66 69 6c 65 20 68 61  6e 64 6c 65 20 72 65 74  | file handle ret|
000b6570  75 72 6e 65 64 20 62 79  20 3c 46 53 45 6e 74 72  |urned by <FSEntr|
000b6580  79 5f 4f 70 65 6e 3e 0a  3c 3d 09 61 6c 6c 20 70  |y_Open>.<=.all p|
000b6590  72 65 73 65 72 76 65 64  0a 0a 54 68 69 73 20 65  |reserved..This e|
000b65a0  6e 74 72 79 20 70 6f 69  6e 74 20 69 73 20 63 61  |ntry point is ca|
000b65b0  6c 6c 65 64 20 77 68 65  6e 20 64 61 74 61 20 69  |lled when data i|
000b65c0  73 20 77 72 69 74 74 65  6e 20 74 6f 20 61 20 66  |s written to a f|
000b65d0  69 6c 65 2e 20 49 74 20  77 69 6c 6c 20 62 65 20  |ile. It will be |
000b65e0  75 73 65 64 20 69 6e 20  70 6c 61 63 65 20 6f 66  |used in place of|
000b65f0  20 61 20 3c 47 42 50 42  3d 3e 46 53 45 6e 74 72  | a <GBPB=>FSEntr|
000b6600  79 5f 47 42 50 42 3e 20  63 61 6c 6c 20 69 66 20  |y_GBPB> call if |
000b6610  74 68 69 73 20 69 73 20  6e 6f 74 20 61 76 61 69  |this is not avai|
000b6620  6c 61 62 6c 65 2e 0a 0a  4d 65 6d 6f 72 79 20 61  |lable...Memory a|
000b6630  64 64 72 65 73 73 65 73  20 61 72 65 20 2a 6e 6f  |ddresses are *no|
000b6640  74 2a 20 67 75 61 72 61  6e 74 65 65 64 20 74 6f  |t* guaranteed to|
000b6650  20 62 65 20 77 6f 72 64  20 61 6c 69 67 6e 65 64  | be word aligned|
000b6660  2e 0a 00 00 44 41 54 41  1b 03 00 00 46 53 45 6e  |....DATA....FSEn|
000b6670  74 72 79 5f 47 42 50 42  0a 23 50 61 72 65 6e 74  |try_GBPB.#Parent|
000b6680  20 46 53 45 6e 74 72 79  5f 0a 23 57 72 61 70 20  | FSEntry_.#Wrap |
000b6690  6f 66 66 0a 3d 3e 09 52  30 20 3d 09 3c 72 65 61  |off.=>.R0 =.<rea|
000b66a0  73 6f 6e 20 63 6f 64 65  3d 3e 2e 72 65 61 73 6f  |son code=>.reaso|
000b66b0  6e 3e 0a 09 52 31 20 3d  09 69 6e 74 65 72 6e 61  |n>..R1 =.interna|
000b66c0  6c 20 66 69 6c 65 20 68  61 6e 64 6c 65 20 72 65  |l file handle re|
000b66d0  74 75 72 6e 65 64 20 62  79 20 3c 46 53 45 6e 74  |turned by <FSEnt|
000b66e0  72 79 5f 4f 70 65 6e 3e  0a 09 52 32 20 3d 09 70  |ry_Open>..R2 =.p|
000b66f0  6f 69 6e 74 65 72 20 74  6f 20 62 75 66 66 65 72  |ointer to buffer|
000b6700  0a 09 52 33 20 3d 09 62  79 74 65 73 20 74 6f 20  |..R3 =.bytes to |
000b6710  74 72 61 6e 73 66 65 72  0a 69 66 20 52 30 20 3d  |transfer.if R0 =|
000b6720  20 31 20 6f 72 20 33 0a  09 52 34 20 3d 09 66 69  | 1 or 3..R4 =.fi|
000b6730  6c 65 20 70 6f 69 6e 74  65 72 0a 23 57 72 61 70  |le pointer.#Wrap|
000b6740  0a 0a 54 68 69 73 20 65  6e 74 72 79 20 70 6f 69  |..This entry poi|
000b6750  6e 74 20 69 73 20 63 61  6c 6c 65 64 20 74 6f 20  |nt is called to |
000b6760  70 65 72 66 6f 72 6d 20  6d 75 6c 74 69 70 6c 65  |perform multiple|
000b6770  20 62 79 74 65 20 6f 70  65 72 61 74 69 6f 6e 73  | byte operations|
000b6780  20 6f 6e 20 75 6e 62 75  66 66 65 72 65 64 20 66  | on unbuffered f|
000b6790  69 6c 65 73 2e 20 49 74  20 69 73 20 6f 6e 6c 79  |iles. It is only|
000b67a0  20 63 61 6c 6c 65 64 20  69 66 20 62 69 74 20 32  | called if bit 2|
000b67b0  38 20 6f 66 20 74 68 65  20 69 6e 66 6f 72 6d 61  |8 of the informa|
000b67c0  74 69 6f 6e 20 77 6f 72  64 20 72 65 74 75 72 6e  |tion word return|
000b67d0  65 64 20 62 79 20 46 53  45 6e 74 72 79 5f 4f 70  |ed by FSEntry_Op|
000b67e0  65 6e 20 69 73 20 73 65  74 2e 20 28 4f 74 68 65  |en is set. (Othe|
000b67f0  72 77 69 73 65 20 66 69  6c 65 73 77 69 74 63 68  |rwise fileswitch|
000b6800  20 75 73 65 73 20 6d 75  6c 74 69 70 6c 65 20 3c  | uses multiple <|
000b6810  46 53 45 6e 74 72 79 5f  47 65 74 42 79 74 65 73  |FSEntry_GetBytes|
000b6820  3d 3e 46 53 45 6e 74 72  79 5f 47 65 74 42 79 74  |=>FSEntry_GetByt|
000b6830  65 73 55 3e 20 6f 72 20  3c 46 53 45 6e 74 72 79  |esU> or <FSEntry|
000b6840  5f 50 75 74 42 79 74 65  73 3d 3e 46 53 45 6e 74  |_PutBytes=>FSEnt|
000b6850  72 79 5f 50 75 74 42 79  74 65 73 55 3e 20 63 61  |ry_PutBytesU> ca|
000b6860  6c 6c 73 29 2e 0a 23 0a  23 53 75 62 70 61 67 65  |lls)..#.#Subpage|
000b6870  20 72 65 61 73 6f 6e 0a  46 53 45 6e 74 72 79 5f  | reason.FSEntry_|
000b6880  47 42 50 42 20 72 65 61  73 6f 6e 20 63 6f 64 65  |GBPB reason code|
000b6890  73 0a 52 65 61 73 6f 6e  09 4d 65 61 6e 69 6e 67  |s.Reason.Meaning|
000b68a0  0a 23 4c 69 6e 65 0a 23  57 72 61 70 20 6f 66 66  |.#Line.#Wrap off|
000b68b0  0a 31 09 3c 50 75 74 20  62 79 74 65 73 20 74 6f  |.1.<Put bytes to|
000b68c0  20 73 70 65 63 69 66 69  65 64 20 70 6f 69 6e 74  | specified point|
000b68d0  65 72 3d 3e 46 53 45 6e  74 72 79 5f 47 42 50 42  |er=>FSEntry_GBPB|
000b68e0  31 3e 0a 32 09 3c 50 75  74 20 62 79 74 65 73 20  |1>.2.<Put bytes |
000b68f0  74 6f 20 63 75 72 72 65  6e 74 20 70 6f 69 6e 74  |to current point|
000b6900  65 72 3d 3e 46 53 45 6e  74 72 79 5f 47 42 50 42  |er=>FSEntry_GBPB|
000b6910  31 3e 0a 33 09 3c 47 65  74 20 62 79 74 65 73 20  |1>.3.<Get bytes |
000b6920  66 72 6f 6d 20 73 70 65  63 69 66 69 65 64 20 70  |from specified p|
000b6930  6f 69 6e 74 65 72 3d 3e  46 53 45 6e 74 72 79 5f  |ointer=>FSEntry_|
000b6940  47 42 50 42 33 3e 0a 34  09 3c 47 65 74 20 62 79  |GBPB3>.4.<Get by|
000b6950  74 65 73 20 66 72 6f 6d  20 63 75 72 72 65 6e 74  |tes from current|
000b6960  20 70 6f 69 6e 74 65 72  3d 3e 46 53 45 6e 74 72  | pointer=>FSEntr|
000b6970  79 5f 47 42 50 42 33 3e  0a 23 57 72 61 70 0a 00  |y_GBPB3>.#Wrap..|
000b6980  44 41 54 41 c7 02 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000b6990  47 42 50 42 20 31 20 61  6e 64 20 32 0a 23 50 61  |GBPB 1 and 2.#Pa|
000b69a0  72 65 6e 74 20 46 53 45  6e 74 72 79 5f 47 42 50  |rent FSEntry_GBP|
000b69b0  42 0a 23 57 72 61 70 20  6f 66 66 0a 3d 3e 09 52  |B.#Wrap off.=>.R|
000b69c0  30 20 3d 09 31 20 28 70  75 74 20 62 79 74 65 73  |0 =.1 (put bytes|
000b69d0  20 74 6f 20 73 70 65 63  69 66 69 65 64 20 70 6f  | to specified po|
000b69e0  69 6e 74 65 72 29 0a 09  20 09 32 20 28 70 75 74  |inter).. .2 (put|
000b69f0  20 62 79 74 65 73 20 74  6f 20 63 75 72 72 65 6e  | bytes to curren|
000b6a00  74 20 70 6f 69 6e 74 65  72 29 0a 09 52 31 20 3d  |t pointer)..R1 =|
000b6a10  09 69 6e 74 65 72 6e 61  6c 20 66 69 6c 65 20 68  |.internal file h|
000b6a20  61 6e 64 6c 65 20 72 65  74 75 72 6e 65 64 20 62  |andle returned b|
000b6a30  79 20 3c 46 53 45 6e 74  72 79 5f 4f 70 65 6e 3e  |y <FSEntry_Open>|
000b6a40  0a 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R2 =.pointer t|
000b6a50  6f 20 62 75 66 66 65 72  0a 09 52 33 20 3d 09 62  |o buffer..R3 =.b|
000b6a60  79 74 65 73 20 74 6f 20  74 72 61 6e 73 66 65 72  |ytes to transfer|
000b6a70  0a 69 66 20 52 30 20 3d  20 31 0a 09 52 34 20 3d  |.if R0 = 1..R4 =|
000b6a80  09 66 69 6c 65 20 70 6f  69 6e 74 65 72 0a 23 57  |.file pointer.#W|
000b6a90  72 61 70 0a 0a 3c 3d 09  52 32 20 3d 09 70 6f 69  |rap..<=.R2 =.poi|
000b6aa0  6e 74 65 72 20 61 66 74  65 72 20 65 6e 64 20 6f  |nter after end o|
000b6ab0  66 20 64 61 74 61 0a 09  52 33 20 3d 09 6e 75 6d  |f data..R3 =.num|
000b6ac0  62 65 72 20 6f 66 20 62  79 74 65 73 20 2a 6e 6f  |ber of bytes *no|
000b6ad0  74 2a 20 74 72 61 6e 73  66 65 72 72 65 64 0a 09  |t* transferred..|
000b6ae0  52 34 20 3d 09 6e 65 77  20 66 69 6c 65 20 70 6f  |R4 =.new file po|
000b6af0  69 6e 74 65 72 0a 0a 54  68 69 73 20 65 6e 74 72  |inter..This entr|
000b6b00  79 20 70 6f 69 6e 74 20  69 73 20 63 61 6c 6c 65  |y point is calle|
000b6b10  64 20 74 6f 20 70 65 72  66 6f 72 6d 20 6d 75 6c  |d to perform mul|
000b6b20  74 69 70 6c 65 20 62 79  74 65 20 77 72 69 74 65  |tiple byte write|
000b6b30  73 20 6f 6e 20 75 6e 62  75 66 66 65 72 65 64 20  |s on unbuffered |
000b6b40  66 69 6c 65 73 2e 20 49  66 20 74 68 65 20 73 70  |files. If the sp|
000b6b50  65 63 69 66 69 65 64 20  70 6f 69 6e 74 65 72 20  |ecified pointer |
000b6b60  69 73 20 62 65 79 6f 6e  64 20 74 68 65 20 63 75  |is beyond the cu|
000b6b70  72 72 65 6e 74 20 65 6e  64 20 6f 66 20 74 68 65  |rrent end of the|
000b6b80  20 66 69 6c 65 2c 20 74  68 65 6e 20 74 68 65 20  | file, then the |
000b6b90  61 72 65 61 20 62 65 74  77 65 65 6e 20 74 68 65  |area between the|
000b6ba0  20 74 77 6f 20 6d 75 73  74 20 62 65 20 66 69 6c  | two must be fil|
000b6bb0  6c 65 64 20 77 69 74 68  20 30 20 62 79 74 65 73  |led with 0 bytes|
000b6bc0  20 62 65 66 6f 72 65 20  74 68 65 20 64 61 74 61  | before the data|
000b6bd0  20 69 73 20 74 72 61 6e  73 66 65 72 72 65 64 2e  | is transferred.|
000b6be0  20 54 68 65 20 66 69 6c  65 20 68 61 6e 64 6c 65  | The file handle|
000b6bf0  20 69 73 20 67 75 61 72  61 6e 74 65 65 64 20 6e  | is guaranteed n|
000b6c00  6f 74 20 74 6f 20 62 65  20 61 20 64 69 72 65 63  |ot to be a direc|
000b6c10  74 6f 72 79 2c 20 61 6e  64 20 74 6f 20 68 61 76  |tory, and to hav|
000b6c20  65 20 68 61 64 20 77 72  69 74 65 20 61 63 63 65  |e had write acce|
000b6c30  73 73 20 61 74 20 74 69  6d 65 20 6f 66 20 6f 70  |ss at time of op|
000b6c40  65 6e 69 6e 67 2e 0a 00  44 41 54 41 56 03 00 00  |ening...DATAV...|
000b6c50  46 53 45 6e 74 72 79 5f  47 42 50 42 20 33 20 61  |FSEntry_GBPB 3 a|
000b6c60  6e 64 20 34 0a 23 50 61  72 65 6e 74 20 46 53 45  |nd 4.#Parent FSE|
000b6c70  6e 74 72 79 5f 47 42 50  42 0a 23 57 72 61 70 20  |ntry_GBPB.#Wrap |
000b6c80  6f 66 66 0a 3d 3e 09 52  30 20 3d 09 33 20 28 67  |off.=>.R0 =.3 (g|
000b6c90  65 74 20 62 79 74 65 73  20 66 72 6f 6d 20 73 70  |et bytes from sp|
000b6ca0  65 63 69 66 69 65 64 20  70 6f 69 6e 74 65 72 29  |ecified pointer)|
000b6cb0  0a 09 20 09 34 20 28 67  65 74 20 62 79 74 65 73  |.. .4 (get bytes|
000b6cc0  20 66 72 6f 6d 20 63 75  72 72 65 6e 74 20 70 6f  | from current po|
000b6cd0  69 6e 74 65 72 29 0a 09  52 31 20 3d 09 69 6e 74  |inter)..R1 =.int|
000b6ce0  65 72 6e 61 6c 20 66 69  6c 65 20 68 61 6e 64 6c  |ernal file handl|
000b6cf0  65 20 72 65 74 75 72 6e  65 64 20 62 79 20 3c 46  |e returned by <F|
000b6d00  53 45 6e 74 72 79 5f 4f  70 65 6e 3e 0a 09 52 32  |SEntry_Open>..R2|
000b6d10  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 62 75  | =.pointer to bu|
000b6d20  66 66 65 72 0a 09 52 33  20 3d 09 62 79 74 65 73  |ffer..R3 =.bytes|
000b6d30  20 74 6f 20 74 72 61 6e  73 66 65 72 0a 69 66 20  | to transfer.if |
000b6d40  52 30 20 3d 20 31 0a 09  52 34 20 3d 09 66 69 6c  |R0 = 1..R4 =.fil|
000b6d50  65 20 70 6f 69 6e 74 65  72 0a 23 57 72 61 70 0a  |e pointer.#Wrap.|
000b6d60  0a 3c 3d 09 52 32 20 3d  09 70 6f 69 6e 74 65 72  |.<=.R2 =.pointer|
000b6d70  20 61 66 74 65 72 20 65  6e 64 20 6f 66 20 64 61  | after end of da|
000b6d80  74 61 0a 09 52 33 20 3d  09 6e 75 6d 62 65 72 20  |ta..R3 =.number |
000b6d90  6f 66 20 62 79 74 65 73  20 2a 6e 6f 74 2a 20 74  |of bytes *not* t|
000b6da0  72 61 6e 73 66 65 72 72  65 64 0a 09 52 34 20 3d  |ransferred..R4 =|
000b6db0  09 6e 65 77 20 66 69 6c  65 20 70 6f 69 6e 74 65  |.new file pointe|
000b6dc0  72 0a 0a 54 68 69 73 20  65 6e 74 72 79 20 70 6f  |r..This entry po|
000b6dd0  69 6e 74 20 69 73 20 63  61 6c 6c 65 64 20 74 6f  |int is called to|
000b6de0  20 70 65 72 66 6f 72 6d  20 6d 75 6c 74 69 70 6c  | perform multipl|
000b6df0  65 20 62 79 74 65 20 72  65 61 64 73 20 6f 6e 20  |e byte reads on |
000b6e00  75 6e 62 75 66 66 65 72  65 64 20 66 69 6c 65 73  |unbuffered files|
000b6e10  2e 20 49 66 20 74 68 65  20 73 70 65 63 69 66 69  |. If the specifi|
000b6e20  65 64 20 70 6f 69 6e 74  65 72 20 69 73 20 62 65  |ed pointer is be|
000b6e30  79 6f 6e 64 20 74 68 65  20 63 75 72 72 65 6e 74  |yond the current|
000b6e40  20 65 6e 64 20 6f 66 20  74 68 65 20 66 69 6c 65  | end of the file|
000b6e50  2c 20 74 68 65 6e 20 79  6f 75 20 6d 75 73 74 20  |, then you must |
000b6e60  6e 6f 74 20 75 70 64 61  74 65 20 74 68 65 20 70  |not update the p|
000b6e70  6f 69 6e 74 65 72 2c 20  61 6e 64 20 6d 75 73 74  |ointer, and must|
000b6e80  20 6e 6f 74 20 72 65 74  75 72 6e 20 61 6e 20 65  | not return an e|
000b6e90  72 72 6f 72 2e 20 54 68  65 20 66 69 6c 65 20 68  |rror. The file h|
000b6ea0  61 6e 64 6c 65 20 69 73  20 67 75 61 72 61 6e 74  |andle is guarant|
000b6eb0  65 65 64 20 6e 6f 74 20  74 6f 20 62 65 20 61 20  |eed not to be a |
000b6ec0  64 69 72 65 63 74 6f 72  79 2c 20 61 6e 64 20 74  |directory, and t|
000b6ed0  6f 20 68 61 76 65 20 68  61 64 20 72 65 61 64 20  |o have had read |
000b6ee0  61 63 63 65 73 73 20 61  74 20 74 69 6d 65 20 6f  |access at time o|
000b6ef0  66 20 6f 70 65 6e 69 6e  67 2e 20 59 6f 75 20 6d  |f opening. You m|
000b6f00  75 73 74 20 6e 6f 74 20  74 72 79 20 74 6f 20 6b  |ust not try to k|
000b6f10  65 65 70 20 79 6f 75 72  20 6f 77 6e 20 27 45 4f  |eep your own 'EO|
000b6f20  46 2d 65 72 72 6f 72 2d  6f 6e 2d 6e 65 78 74 2d  |F-error-on-next-|
000b6f30  72 65 61 64 27 20 66 6c  61 67 20 2d 20 74 68 69  |read' flag - thi|
000b6f40  73 20 69 73 20 46 69 6c  65 53 77 69 74 63 68 27  |s is FileSwitch'|
000b6f50  73 20 6a 6f 62 2e 20 46  69 6c 65 53 77 69 74 63  |s job. FileSwitc|
000b6f60  68 20 77 69 6c 6c 20 73  65 74 20 74 68 65 20 43  |h will set the C|
000b6f70  20 66 6c 61 67 20 69 66  20 52 33 3d 30 20 6f 6e  | flag if R3=0 on|
000b6f80  20 72 65 74 75 72 6e 20  2d 20 79 6f 75 20 64 6f  | return - you do|
000b6f90  20 6e 6f 74 20 6e 65 65  64 20 74 6f 2e 0a 00 00  | not need to....|
000b6fa0  44 49 52 24 60 01 00 00  60 01 00 00 00 71 0b 00  |DIR$`...`....q..|
000b6fb0  47 ff ff ff 1f 84 33 cd  dd 02 00 00 03 00 00 00  |G.....3.........|
000b6fc0  00 00 00 00 21 52 6f 6f  74 00 00 00 e0 73 0b 00  |....!Root....s..|
000b6fd0  47 fd ff ff 1b 86 33 cd  9c 01 00 00 03 00 00 00  |G.....3.........|
000b6fe0  00 00 00 00 30 00 00 00  7c 75 0b 00 47 fd ff ff  |....0...|u..G...|
000b6ff0  2c 86 33 cd 83 01 00 00  03 00 00 00 00 00 00 00  |,.3.............|
000b7000  31 00 00 00 00 77 0b 00  47 fd ff ff 62 86 33 cd  |1....w..G...b.3.|
000b7010  4f 01 00 00 03 00 00 00  00 00 00 00 31 30 00 00  |O...........10..|
000b7020  50 78 0b 00 47 fd ff ff  3e 86 33 cd 77 01 00 00  |Px..G...>.3.w...|
000b7030  03 00 00 00 00 00 00 00  32 00 00 00 c8 79 0b 00  |........2....y..|
000b7040  47 fd ff ff 35 84 33 cd  c5 01 00 00 03 00 00 00  |G...5.3.........|
000b7050  00 00 00 00 33 00 00 00  90 7b 0b 00 47 fd ff ff  |....3....{..G...|
000b7060  44 84 33 cd f5 00 00 00  03 00 00 00 00 00 00 00  |D.3.............|
000b7070  34 00 00 00 88 7c 0b 00  47 fd ff ff 54 86 33 cd  |4....|..G...T.3.|
000b7080  25 01 00 00 03 00 00 00  00 00 00 00 35 00 00 00  |%...........5...|
000b7090  b0 7d 0b 00 47 fd ff ff  58 84 33 cd dd 01 00 00  |.}..G...X.3.....|
000b70a0  03 00 00 00 00 00 00 00  36 00 00 00 90 7f 0b 00  |........6.......|
000b70b0  47 fd ff ff 6e 84 33 cd  56 01 00 00 03 00 00 00  |G...n.3.V.......|
000b70c0  00 00 00 00 37 00 00 00  e8 80 0b 00 47 fd ff ff  |....7.......G...|
000b70d0  7d 84 33 cd f9 00 00 00  03 00 00 00 00 00 00 00  |}.3.............|
000b70e0  38 00 00 00 e4 81 0b 00  47 fd ff ff 92 84 33 cd  |8.......G.....3.|
000b70f0  20 01 00 00 03 00 00 00  00 00 00 00 39 00 00 00  | ...........9...|
000b7100  44 41 54 41 dd 02 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000b7110  41 72 67 73 0a 23 50 61  72 65 6e 74 20 46 53 45  |Args.#Parent FSE|
000b7120  6e 74 72 79 5f 0a 23 57  72 61 70 20 6f 66 66 0a  |ntry_.#Wrap off.|
000b7130  3d 3e 09 52 30 20 3d 09  3c 72 65 61 73 6f 6e 20  |=>.R0 =.<reason |
000b7140  63 6f 64 65 3d 3e 2e 72  65 61 73 6f 6e 3e 0a 09  |code=>.reason>..|
000b7150  52 31 20 3d 09 69 6e 74  65 72 6e 61 6c 20 66 69  |R1 =.internal fi|
000b7160  6c 65 20 68 61 6e 64 6c  65 20 72 65 74 75 72 6e  |le handle return|
000b7170  65 64 20 62 79 20 3c 46  53 45 6e 74 72 79 5f 4f  |ed by <FSEntry_O|
000b7180  70 65 6e 3e 0a 09 6f 74  68 65 72 73 20 64 65 70  |pen>..others dep|
000b7190  65 6e 64 61 6e 74 20 6f  6e 20 63 61 6c 6c 0a 23  |endant on call.#|
000b71a0  57 72 61 70 0a 0a 54 68  69 73 20 65 6e 74 72 79  |Wrap..This entry|
000b71b0  20 70 6f 69 6e 74 20 69  73 20 63 61 6c 6c 65 64  | point is called|
000b71c0  20 77 68 65 6e 20 63 6f  6e 74 72 6f 6c 20 6f 70  | when control op|
000b71d0  65 72 61 74 69 6f 6e 73  20 61 72 65 20 70 65 72  |erations are per|
000b71e0  66 6f 72 6d 65 64 20 6f  6e 20 6f 70 65 6e 20 66  |formed on open f|
000b71f0  69 6c 65 73 2e 0a 23 0a  23 53 75 62 70 61 67 65  |iles..#.#Subpage|
000b7200  20 72 65 61 73 6f 6e 0a  46 53 45 6e 74 72 79 5f  | reason.FSEntry_|
000b7210  41 72 67 73 20 72 65 61  73 6f 6e 20 63 6f 64 65  |Args reason code|
000b7220  73 0a 52 65 61 73 6f 6e  09 4d 65 61 6e 69 6e 67  |s.Reason.Meaning|
000b7230  0a 23 4c 69 6e 65 0a 30  09 3c 52 65 61 64 20 73  |.#Line.0.<Read s|
000b7240  65 71 75 65 6e 74 69 61  6c 20 70 6f 69 6e 74 65  |equential pointe|
000b7250  72 3d 3e 46 53 45 6e 74  72 79 5f 41 72 67 73 30  |r=>FSEntry_Args0|
000b7260  3e 0a 31 09 3c 57 72 69  74 65 20 73 65 71 75 65  |>.1.<Write seque|
000b7270  6e 74 69 61 6c 20 70 6f  69 6e 74 65 72 3d 3e 46  |ntial pointer=>F|
000b7280  53 45 6e 74 72 79 5f 41  72 67 73 31 3e 0a 32 09  |SEntry_Args1>.2.|
000b7290  3c 52 65 61 64 20 66 69  6c 65 20 65 78 74 65 6e  |<Read file exten|
000b72a0  74 3d 3e 46 53 45 6e 74  72 79 5f 41 72 67 73 32  |t=>FSEntry_Args2|
000b72b0  3e 0a 33 09 3c 57 72 69  74 65 20 66 69 6c 65 20  |>.3.<Write file |
000b72c0  65 78 74 65 6e 74 3d 3e  46 53 45 6e 74 72 79 5f  |extent=>FSEntry_|
000b72d0  41 72 67 73 33 3e 0a 34  09 3c 52 65 61 64 20 73  |Args3>.4.<Read s|
000b72e0  69 7a 65 20 61 6c 6c 6f  63 61 74 65 64 20 74 6f  |ize allocated to|
000b72f0  20 66 69 6c 65 3d 3e 46  53 45 6e 74 72 79 5f 41  | file=>FSEntry_A|
000b7300  72 67 73 34 3e 0a 35 09  3c 43 68 65 63 6b 20 66  |rgs4>.5.<Check f|
000b7310  6f 72 20 45 4f 46 3d 3e  46 53 45 6e 74 72 79 5f  |or EOF=>FSEntry_|
000b7320  41 72 67 73 35 3e 0a 36  09 3c 46 6c 75 73 68 20  |Args5>.6.<Flush |
000b7330  6d 6f 64 69 66 69 65 64  20 64 61 74 61 3d 3e 46  |modified data=>F|
000b7340  53 45 6e 74 72 79 5f 41  72 67 73 36 3e 0a 37 09  |SEntry_Args6>.7.|
000b7350  3c 45 6e 73 75 72 65 20  66 69 6c 65 20 73 69 7a  |<Ensure file siz|
000b7360  65 3d 3e 46 53 45 6e 74  72 79 5f 41 72 67 73 37  |e=>FSEntry_Args7|
000b7370  3e 0a 38 09 3c 5a 65 72  6f 20 70 61 64 20 66 69  |>.8.<Zero pad fi|
000b7380  6c 65 3d 3e 46 53 45 6e  74 72 79 5f 41 72 67 73  |le=>FSEntry_Args|
000b7390  38 3e 0a 39 09 3c 52 65  61 64 20 64 61 74 61 73  |8>.9.<Read datas|
000b73a0  74 61 6d 70 3d 3e 46 53  45 6e 74 72 79 5f 41 72  |tamp=>FSEntry_Ar|
000b73b0  67 73 39 3e 0a 31 30 09  3c 55 70 64 61 74 65 20  |gs9>.10.<Update |
000b73c0  69 6d 61 67 65 20 73 74  61 6d 70 3d 3e 46 53 45  |image stamp=>FSE|
000b73d0  6e 74 72 79 5f 41 72 67  73 31 30 3e 0a 00 00 00  |ntry_Args10>....|
000b73e0  44 41 54 41 9c 01 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000b73f0  41 72 67 73 20 30 0a 23  50 61 72 65 6e 74 20 46  |Args 0.#Parent F|
000b7400  53 45 6e 74 72 79 5f 41  72 67 73 0a 3d 3e 09 52  |SEntry_Args.=>.R|
000b7410  30 20 3d 09 30 20 28 52  65 61 64 20 73 65 71 75  |0 =.0 (Read sequ|
000b7420  65 6e 74 69 61 6c 20 70  6f 69 6e 74 65 72 29 0a  |ential pointer).|
000b7430  09 52 31 20 3d 09 69 6e  74 65 72 6e 61 6c 20 66  |.R1 =.internal f|
000b7440  69 6c 65 20 68 61 6e 64  6c 65 20 72 65 74 75 72  |ile handle retur|
000b7450  6e 65 64 20 62 79 20 3c  46 53 45 6e 74 72 79 5f  |ned by <FSEntry_|
000b7460  4f 70 65 6e 3e 0a 3c 3d  09 52 32 20 3d 09 73 65  |Open>.<=.R2 =.se|
000b7470  71 75 65 6e 74 69 61 6c  20 70 6f 69 6e 74 65 72  |quential pointer|
000b7480  2c 20 6f 72 20 30 20 69  66 20 6e 6f 74 20 61 70  |, or 0 if not ap|
000b7490  70 6c 69 63 61 62 6c 65  0a 0a 54 68 69 73 20 63  |plicable..This c|
000b74a0  61 6c 6c 20 69 73 20 6d  61 64 65 20 77 68 65 6e  |all is made when|
000b74b0  20 46 69 6c 65 53 77 69  74 63 68 20 6e 65 65 64  | FileSwitch need|
000b74c0  73 20 74 6f 20 6b 6e 6f  77 20 68 6f 77 20 66 61  |s to know how fa|
000b74d0  72 20 69 6e 74 6f 20 61  20 66 69 6c 65 20 74 68  |r into a file th|
000b74e0  65 20 63 75 72 72 65 6e  74 20 70 6f 69 6e 74 65  |e current pointe|
000b74f0  72 20 69 73 2e 20 54 68  69 73 20 77 69 6c 6c 20  |r is. This will |
000b7500  6f 6e 6c 79 20 62 65 20  63 61 6c 6c 65 64 20 66  |only be called f|
000b7510  6f 72 20 75 6e 62 75 66  66 65 72 65 64 20 66 69  |or unbuffered fi|
000b7520  6c 65 73 2e 0a 0a 4f 6e  20 73 79 73 74 65 6d 73  |les...On systems|
000b7530  20 77 69 74 68 20 6e 6f  20 63 6f 6e 63 65 70 74  | with no concept|
000b7540  20 6f 66 20 65 78 74 65  6e 74 73 20 28 65 67 20  | of extents (eg |
000b7550  73 74 72 65 61 6d 73 29  20 74 68 69 73 20 73 68  |streams) this sh|
000b7560  6f 75 6c 64 20 2a 6e 6f  74 2a 20 72 65 74 75 72  |ould *not* retur|
000b7570  6e 20 61 6e 20 65 72 72  6f 72 2e 0a 44 41 54 41  |n an error..DATA|
000b7580  83 01 00 00 46 53 45 6e  74 72 79 5f 41 72 67 73  |....FSEntry_Args|
000b7590  20 31 0a 23 50 61 72 65  6e 74 20 46 53 45 6e 74  | 1.#Parent FSEnt|
000b75a0  72 79 5f 41 72 67 73 0a  3d 3e 09 52 30 20 3d 09  |ry_Args.=>.R0 =.|
000b75b0  31 20 28 57 72 69 74 65  20 73 65 71 75 65 6e 74  |1 (Write sequent|
000b75c0  69 61 6c 20 70 6f 69 6e  74 65 72 29 0a 09 52 31  |ial pointer)..R1|
000b75d0  20 3d 09 69 6e 74 65 72  6e 61 6c 20 66 69 6c 65  | =.internal file|
000b75e0  20 68 61 6e 64 6c 65 20  72 65 74 75 72 6e 65 64  | handle returned|
000b75f0  20 62 79 20 3c 46 53 45  6e 74 72 79 5f 4f 70 65  | by <FSEntry_Ope|
000b7600  6e 3e 0a 09 52 32 20 3d  09 73 65 71 75 65 6e 74  |n>..R2 =.sequent|
000b7610  69 61 6c 20 70 6f 69 6e  74 65 72 0a 0a 54 68 69  |ial pointer..Thi|
000b7620  73 20 63 61 6c 6c 20 69  73 20 6d 61 64 65 20 77  |s call is made w|
000b7630  68 65 6e 20 46 69 6c 65  53 77 69 74 63 68 20 6e  |hen FileSwitch n|
000b7640  65 65 64 73 20 74 6f 20  6b 6e 6f 77 20 68 6f 77  |eeds to know how|
000b7650  20 66 61 72 20 69 6e 74  6f 20 61 20 66 69 6c 65  | far into a file|
000b7660  20 74 68 65 20 63 75 72  72 65 6e 74 20 70 6f 69  | the current poi|
000b7670  6e 74 65 72 20 69 73 2e  20 54 68 69 73 20 77 69  |nter is. This wi|
000b7680  6c 6c 20 6f 6e 6c 79 20  62 65 20 63 61 6c 6c 65  |ll only be calle|
000b7690  64 20 66 6f 72 20 75 6e  62 75 66 66 65 72 65 64  |d for unbuffered|
000b76a0  20 66 69 6c 65 73 2e 0a  0a 4f 6e 20 73 79 73 74  | files...On syst|
000b76b0  65 6d 73 20 77 69 74 68  20 6e 6f 20 63 6f 6e 63  |ems with no conc|
000b76c0  65 70 74 20 6f 66 20 65  78 74 65 6e 74 73 20 28  |ept of extents (|
000b76d0  65 67 20 73 74 72 65 61  6d 73 29 20 74 68 69 73  |eg streams) this|
000b76e0  20 73 68 6f 75 6c 64 20  2a 6e 6f 74 2a 20 72 65  | should *not* re|
000b76f0  74 75 72 6e 20 61 6e 20  65 72 72 6f 72 2e 0a 00  |turn an error...|
000b7700  44 41 54 41 4f 01 00 00  46 53 45 6e 74 72 79 5f  |DATAO...FSEntry_|
000b7710  41 72 67 73 20 31 30 0a  23 50 61 72 65 6e 74 20  |Args 10.#Parent |
000b7720  46 53 45 6e 74 72 79 5f  41 72 67 73 0a 3d 3e 09  |FSEntry_Args.=>.|
000b7730  52 30 20 3d 09 31 30 20  28 55 70 64 61 74 65 20  |R0 =.10 (Update |
000b7740  69 6d 61 67 65 20 73 74  61 6d 70 29 0a 09 52 31  |image stamp)..R1|
000b7750  20 3d 09 69 6e 74 65 72  6e 61 6c 20 66 69 6c 65  | =.internal file|
000b7760  20 68 61 6e 64 6c 65 20  72 65 74 75 72 6e 65 64  | handle returned|
000b7770  20 62 79 20 3c 46 53 45  6e 74 72 79 5f 4f 70 65  | by <FSEntry_Ope|
000b7780  6e 3e 0a 09 52 32 20 3d  09 6e 65 77 20 69 6d 61  |n>..R2 =.new ima|
000b7790  67 65 20 73 74 61 6d 70  0a 0a 54 68 69 73 20 63  |ge stamp..This c|
000b77a0  61 6c 6c 20 69 73 20 6d  61 64 65 20 74 6f 20 6e  |all is made to n|
000b77b0  6f 74 69 66 79 20 74 68  65 20 66 69 6c 69 6e 67  |otify the filing|
000b77c0  20 73 79 73 74 65 6d 20  6f 66 20 61 20 6e 65 77  | system of a new|
000b77d0  20 69 6d 61 67 65 20 73  74 61 6d 70 20 61 73 73  | image stamp ass|
000b77e0  6f 63 69 61 74 65 64 0a  77 69 74 68 20 74 68 69  |ociated.with thi|
000b77f0  73 20 69 6d 61 67 65 2e  20 54 68 69 73 20 69 73  |s image. This is|
000b7800  20 6f 6e 6c 79 20 61 70  70 6c 69 63 61 62 6c 65  | only applicable|
000b7810  20 69 66 20 74 68 65 20  6f 62 6a 65 63 74 20 77  | if the object w|
000b7820  69 74 68 69 6e 20 77 68  69 63 68 20 74 68 65 20  |ithin which the |
000b7830  66 69 6c 65 68 61 6e 64  6c 65 20 65 78 69 73 74  |filehandle exist|
000b7840  73 20 69 73 20 61 6e 20  69 6d 61 67 65 2e 0a 00  |s is an image...|
000b7850  44 41 54 41 77 01 00 00  46 53 45 6e 74 72 79 5f  |DATAw...FSEntry_|
000b7860  41 72 67 73 20 32 0a 23  50 61 72 65 6e 74 20 46  |Args 2.#Parent F|
000b7870  53 45 6e 74 72 79 5f 41  72 67 73 0a 3d 3e 09 52  |SEntry_Args.=>.R|
000b7880  30 20 3d 09 32 20 28 52  65 61 64 20 66 69 6c 65  |0 =.2 (Read file|
000b7890  20 65 78 74 65 6e 74 29  0a 09 52 31 20 3d 09 69  | extent)..R1 =.i|
000b78a0  6e 74 65 72 6e 61 6c 20  66 69 6c 65 20 68 61 6e  |nternal file han|
000b78b0  64 6c 65 20 72 65 74 75  72 6e 65 64 20 62 79 20  |dle returned by |
000b78c0  3c 46 53 45 6e 74 72 79  5f 4f 70 65 6e 3e 0a 3c  |<FSEntry_Open>.<|
000b78d0  3d 09 52 32 20 3d 09 66  69 6c 65 20 65 78 74 65  |=.R2 =.file exte|
000b78e0  6e 74 2c 20 6f 72 20 30  20 69 66 20 6e 6f 74 20  |nt, or 0 if not |
000b78f0  61 70 70 6c 69 63 61 62  6c 65 0a 0a 54 68 69 73  |applicable..This|
000b7900  20 63 61 6c 6c 20 69 73  20 6d 61 64 65 20 77 68  | call is made wh|
000b7910  65 6e 20 46 69 6c 65 53  77 69 74 63 68 20 6e 65  |en FileSwitch ne|
000b7920  65 64 73 20 74 6f 20 6b  6e 6f 77 20 68 6f 77 20  |eds to know how |
000b7930  6c 6f 6e 67 20 61 20 66  69 6c 65 20 69 73 2e 20  |long a file is. |
000b7940  54 68 69 73 20 77 69 6c  6c 20 6f 6e 6c 79 20 62  |This will only b|
000b7950  65 20 63 61 6c 6c 65 64  20 66 6f 72 20 75 6e 62  |e called for unb|
000b7960  75 66 66 65 72 65 64 20  66 69 6c 65 73 2e 0a 0a  |uffered files...|
000b7970  0a 4f 6e 20 73 79 73 74  65 6d 73 20 77 69 74 68  |.On systems with|
000b7980  20 6e 6f 20 63 6f 6e 63  65 70 74 20 6f 66 20 65  | no concept of e|
000b7990  78 74 65 6e 74 73 20 28  65 67 20 73 74 72 65 61  |xtents (eg strea|
000b79a0  6d 73 29 20 74 68 69 73  20 73 68 6f 75 6c 64 20  |ms) this should |
000b79b0  2a 6e 6f 74 2a 20 72 65  74 75 72 6e 20 61 6e 20  |*not* return an |
000b79c0  65 72 72 6f 72 2e 0a 00  44 41 54 41 c5 01 00 00  |error...DATA....|
000b79d0  46 53 45 6e 74 72 79 5f  41 72 67 73 20 33 0a 23  |FSEntry_Args 3.#|
000b79e0  50 61 72 65 6e 74 20 46  53 45 6e 74 72 79 5f 41  |Parent FSEntry_A|
000b79f0  72 67 73 0a 3d 3e 09 52  30 20 3d 09 33 20 28 57  |rgs.=>.R0 =.3 (W|
000b7a00  72 69 74 65 20 66 69 6c  65 20 65 78 74 65 6e 74  |rite file extent|
000b7a10  29 0a 09 52 31 20 3d 09  69 6e 74 65 72 6e 61 6c  |)..R1 =.internal|
000b7a20  20 66 69 6c 65 20 68 61  6e 64 6c 65 20 72 65 74  | file handle ret|
000b7a30  75 72 6e 65 64 20 62 79  20 3c 46 53 45 6e 74 72  |urned by <FSEntr|
000b7a40  79 5f 4f 70 65 6e 3e 0a  09 52 32 20 3d 09 6e 65  |y_Open>..R2 =.ne|
000b7a50  77 20 66 69 6c 65 20 65  78 74 65 6e 74 0a 0a 54  |w file extent..T|
000b7a60  68 69 73 20 63 61 6c 6c  20 69 73 20 6d 61 64 65  |his call is made|
000b7a70  20 77 68 65 6e 20 46 69  6c 65 53 77 69 74 63 68  | when FileSwitch|
000b7a80  20 6e 65 65 64 73 20 74  6f 20 65 78 74 65 6e 64  | needs to extend|
000b7a90  20 61 20 66 69 6c 65 20  62 65 79 6f 6e 64 20 69  | a file beyond i|
000b7aa0  74 27 73 20 63 75 72 72  65 6e 74 20 6c 65 6e 67  |t's current leng|
000b7ab0  74 68 2e 20 46 6f 72 20  62 75 66 66 65 72 65 64  |th. For buffered|
000b7ac0  20 66 69 6c 65 73 20 74  68 69 73 20 69 73 20 6f  | files this is o|
000b7ad0  6e 6c 79 20 63 61 6c 6c  65 64 20 77 68 65 6e 20  |nly called when |
000b7ae0  74 68 65 20 66 69 6c 65  20 69 73 20 63 6c 6f 73  |the file is clos|
000b7af0  65 64 2e 20 4f 6e 20 75  6e 62 75 66 66 65 72 65  |ed. On unbuffere|
000b7b00  64 20 66 69 6c 65 73 20  74 68 69 73 20 69 73 20  |d files this is |
000b7b10  63 61 6c 6c 65 64 20 77  68 65 6e 65 76 65 72 20  |called whenever |
000b7b20  74 68 65 20 75 73 65 72  20 72 65 71 75 65 73 74  |the user request|
000b7b30  73 20 69 74 2e 0a 0a 4f  6e 20 73 79 73 74 65 6d  |s it...On system|
000b7b40  73 20 77 69 74 68 20 6e  6f 20 63 6f 6e 63 65 70  |s with no concep|
000b7b50  74 20 6f 66 20 65 78 74  65 6e 74 73 20 28 65 67  |t of extents (eg|
000b7b60  20 73 74 72 65 61 6d 73  29 20 74 68 69 73 20 73  | streams) this s|
000b7b70  68 6f 75 6c 64 20 2a 6e  6f 74 2a 20 72 65 74 75  |hould *not* retu|
000b7b80  72 6e 20 61 6e 20 65 72  72 6f 72 2e 0a 00 00 00  |rn an error.....|
000b7b90  44 41 54 41 f5 00 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000b7ba0  41 72 67 73 20 34 0a 23  50 61 72 65 6e 74 20 46  |Args 4.#Parent F|
000b7bb0  53 45 6e 74 72 79 5f 41  72 67 73 0a 3d 3e 09 52  |SEntry_Args.=>.R|
000b7bc0  30 20 3d 09 34 20 28 52  65 61 64 20 73 70 61 63  |0 =.4 (Read spac|
000b7bd0  65 20 61 6c 6c 6f 63 61  74 65 64 29 0a 09 52 31  |e allocated)..R1|
000b7be0  20 3d 09 69 6e 74 65 72  6e 61 6c 20 66 69 6c 65  | =.internal file|
000b7bf0  20 68 61 6e 64 6c 65 20  72 65 74 75 72 6e 65 64  | handle returned|
000b7c00  20 62 79 20 3c 46 53 45  6e 74 72 79 5f 4f 70 65  | by <FSEntry_Ope|
000b7c10  6e 3e 0a 3c 3d 09 52 32  20 3d 09 73 69 7a 65 20  |n>.<=.R2 =.size |
000b7c20  61 6c 6c 6f 63 61 74 65  64 20 74 6f 20 74 68 65  |allocated to the|
000b7c30  20 66 69 6c 65 0a 0a 54  68 69 73 20 63 61 6c 6c  | file..This call|
000b7c40  20 69 73 20 6d 61 64 65  20 77 68 65 6e 20 46 69  | is made when Fi|
000b7c50  6c 65 53 77 69 74 63 68  20 77 69 73 68 65 73 20  |leSwitch wishes |
000b7c60  74 6f 20 66 69 6e 64 20  74 68 65 20 61 63 74 75  |to find the actu|
000b7c70  61 6c 20 6c 65 6e 67 74  68 20 6f 66 20 61 20 66  |al length of a f|
000b7c80  69 6c 65 2e 0a 00 00 00  44 41 54 41 25 01 00 00  |ile.....DATA%...|
000b7c90  46 53 45 6e 74 72 79 5f  41 72 67 73 20 35 0a 23  |FSEntry_Args 5.#|
000b7ca0  50 61 72 65 6e 74 20 46  53 45 6e 74 72 79 5f 41  |Parent FSEntry_A|
000b7cb0  72 67 73 0a 3d 3e 09 52  30 20 3d 09 35 20 28 43  |rgs.=>.R0 =.5 (C|
000b7cc0  68 65 63 6b 20 66 6f 72  20 45 4f 46 29 0a 09 52  |heck for EOF)..R|
000b7cd0  31 20 3d 09 69 6e 74 65  72 6e 61 6c 20 66 69 6c  |1 =.internal fil|
000b7ce0  65 20 68 61 6e 64 6c 65  20 72 65 74 75 72 6e 65  |e handle returne|
000b7cf0  64 20 62 79 20 3c 46 53  45 6e 74 72 79 5f 4f 70  |d by <FSEntry_Op|
000b7d00  65 6e 3e 0a 3c 3d 09 52  32 20 3d 09 2d 31 20 69  |en>.<=.R2 =.-1 i|
000b7d10  66 20 61 74 20 45 4f 46  2c 20 30 20 6f 74 68 65  |f at EOF, 0 othe|
000b7d20  72 77 69 73 65 20 0a 0a  54 68 69 73 20 63 61 6c  |rwise ..This cal|
000b7d30  6c 20 69 73 20 6d 61 64  65 20 77 68 65 6e 20 46  |l is made when F|
000b7d40  69 6c 65 53 77 69 74 63  68 20 77 69 73 68 65 73  |ileSwitch wishes|
000b7d50  20 63 68 65 63 6b 20 77  68 65 74 68 65 72 20 77  | check whether w|
000b7d60  65 20 61 72 65 20 61 74  20 74 68 65 20 65 6e 64  |e are at the end|
000b7d70  20 6f 66 20 74 68 65 20  66 69 6c 65 2e 20 54 68  | of the file. Th|
000b7d80  69 73 20 77 69 6c 6c 20  6f 6e 6c 79 20 62 65 20  |is will only be |
000b7d90  63 61 6c 6c 65 64 20 66  6f 72 20 75 6e 62 75 66  |called for unbuf|
000b7da0  66 65 72 65 64 20 66 69  6c 65 73 2e 0a 00 00 00  |fered files.....|
000b7db0  44 41 54 41 dd 01 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000b7dc0  41 72 67 73 20 36 0a 23  50 61 72 65 6e 74 20 46  |Args 6.#Parent F|
000b7dd0  53 45 6e 74 72 79 5f 41  72 67 73 0a 3d 3e 09 52  |SEntry_Args.=>.R|
000b7de0  30 20 3d 09 36 20 28 46  6c 75 73 68 20 6d 6f 64  |0 =.6 (Flush mod|
000b7df0  69 66 69 65 64 20 64 61  74 61 29 0a 09 52 31 20  |ified data)..R1 |
000b7e00  3d 09 69 6e 74 65 72 6e  61 6c 20 66 69 6c 65 20  |=.internal file |
000b7e10  68 61 6e 64 6c 65 20 72  65 74 75 72 6e 65 64 20  |handle returned |
000b7e20  62 79 20 3c 46 53 45 6e  74 72 79 5f 4f 70 65 6e  |by <FSEntry_Open|
000b7e30  3e 0a 3c 3d 09 52 32 20  3d 09 6c 6f 61 64 20 61  |>.<=.R2 =.load a|
000b7e40  64 64 72 65 73 73 20 6f  66 20 66 69 6c 65 2c 20  |ddress of file, |
000b7e50  6f 72 20 30 20 69 66 20  6e 6f 74 20 70 6f 73 73  |or 0 if not poss|
000b7e60  69 62 6c 65 0a 09 52 33  20 3d 09 65 78 65 63 20  |ible..R3 =.exec |
000b7e70  61 64 64 72 65 73 73 20  6f 66 20 66 69 6c 65 2c  |address of file,|
000b7e80  20 6f 72 20 30 20 69 66  20 6e 6f 74 20 70 6f 73  | or 0 if not pos|
000b7e90  73 69 62 6c 65 0a 0a 54  68 69 73 20 63 61 6c 6c  |sible..This call|
000b7ea0  20 69 73 20 6d 61 64 65  20 77 68 65 6e 20 46 69  | is made when Fi|
000b7eb0  6c 65 53 77 69 74 63 68  20 77 61 6e 74 73 20 79  |leSwitch wants y|
000b7ec0  6f 75 20 74 6f 20 73 74  6f 72 65 20 61 6c 6c 20  |ou to store all |
000b7ed0  63 61 63 68 65 64 20 64  61 74 61 2e 20 54 68 69  |cached data. Thi|
000b7ee0  73 20 77 69 6c 6c 20 6f  6e 6c 79 20 62 65 20 63  |s will only be c|
000b7ef0  61 6c 6c 65 64 20 69 66  20 62 69 74 20 32 37 20  |alled if bit 27 |
000b7f00  6f 66 20 74 68 65 20 3c  69 6e 66 6f 72 6d 61 74  |of the <informat|
000b7f10  69 6f 6e 20 77 6f 72 64  3d 3e 66 73 79 73 5f 69  |ion word=>fsys_i|
000b7f20  6e 66 6f 77 6f 72 64 3e  20 69 73 20 73 65 74 20  |nfoword> is set |
000b7f30  61 6e 64 20 66 69 6c 65  73 20 61 72 65 20 62 75  |and files are bu|
000b7f40  66 66 65 72 65 64 2e 0a  0a 54 68 65 20 6c 6f 61  |ffered...The loa|
000b7f50  64 20 61 6e 64 20 65 78  65 63 20 61 64 64 72 65  |d and exec addre|
000b7f60  73 73 65 73 20 61 72 65  20 75 73 65 64 20 66 6f  |sses are used fo|
000b7f70  72 20 70 75 72 70 6f 73  65 73 20 6f 66 20 64 61  |r purposes of da|
000b7f80  74 65 20 73 74 61 6d 70  69 6e 67 2e 0a 00 00 00  |te stamping.....|
000b7f90  44 41 54 41 56 01 00 00  46 53 45 6e 74 72 79 5f  |DATAV...FSEntry_|
000b7fa0  41 72 67 73 20 37 0a 23  50 61 72 65 6e 74 20 46  |Args 7.#Parent F|
000b7fb0  53 45 6e 74 72 79 5f 41  72 67 73 0a 3d 3e 09 52  |SEntry_Args.=>.R|
000b7fc0  30 20 3d 09 37 20 28 45  6e 73 75 72 65 20 66 69  |0 =.7 (Ensure fi|
000b7fd0  6c 65 20 73 69 7a 65 29  0a 09 52 31 20 3d 09 69  |le size)..R1 =.i|
000b7fe0  6e 74 65 72 6e 61 6c 20  66 69 6c 65 20 68 61 6e  |nternal file han|
000b7ff0  64 6c 65 20 72 65 74 75  72 6e 65 64 20 62 79 20  |dle returned by |
000b8000  3c 46 53 45 6e 74 72 79  5f 4f 70 65 6e 3e 0a 09  |<FSEntry_Open>..|
000b8010  52 32 20 3d 09 73 69 7a  65 20 6f 66 20 66 69 6c  |R2 =.size of fil|
000b8020  65 0a 3c 3d 09 52 32 20  3d 09 73 69 7a 65 20 61  |e.<=.R2 =.size a|
000b8030  63 74 75 61 6c 6c 79 20  65 6e 73 75 72 65 64 0a  |ctually ensured.|
000b8040  0a 54 68 69 73 20 63 61  6c 6c 20 69 73 20 6d 61  |.This call is ma|
000b8050  64 65 20 74 6f 20 65 6e  73 75 72 65 20 74 68 61  |de to ensure tha|
000b8060  74 20 61 20 66 69 6c 65  20 69 73 20 6f 66 20 61  |t a file is of a|
000b8070  20 70 61 72 74 69 63 75  6c 61 72 20 73 69 7a 65  | particular size|
000b8080  2e 20 53 70 61 63 65 20  73 68 6f 75 6c 64 20 62  |. Space should b|
000b8090  65 20 72 65 73 65 72 76  65 64 2c 20 62 75 74 20  |e reserved, but |
000b80a0  69 74 20 69 73 20 6e 6f  74 20 72 65 71 75 69 72  |it is not requir|
000b80b0  65 64 20 74 6f 20 62 65  20 69 6e 69 74 69 61 6c  |ed to be initial|
000b80c0  69 73 65 64 2e 20 54 68  69 73 20 69 73 20 6d 65  |ised. This is me|
000b80d0  61 6e 69 6e 67 6c 65 73  73 20 6f 6e 20 73 74 72  |aningless on str|
000b80e0  65 61 6d 73 2e 0a 00 00  44 41 54 41 f9 00 00 00  |eams....DATA....|
000b80f0  46 53 45 6e 74 72 79 5f  41 72 67 73 20 38 0a 23  |FSEntry_Args 8.#|
000b8100  50 61 72 65 6e 74 20 46  53 45 6e 74 72 79 5f 41  |Parent FSEntry_A|
000b8110  72 67 73 0a 3d 3e 09 52  30 20 3d 09 38 20 28 5a  |rgs.=>.R0 =.8 (Z|
000b8120  65 72 6f 20 70 61 64 20  66 69 6c 65 29 0a 09 52  |ero pad file)..R|
000b8130  31 20 3d 09 69 6e 74 65  72 6e 61 6c 20 66 69 6c  |1 =.internal fil|
000b8140  65 20 68 61 6e 64 6c 65  20 72 65 74 75 72 6e 65  |e handle returne|
000b8150  64 20 62 79 20 3c 46 53  45 6e 74 72 79 5f 4f 70  |d by <FSEntry_Op|
000b8160  65 6e 3e 0a 09 52 32 20  3d 09 6f 66 66 73 65 74  |en>..R2 =.offset|
000b8170  20 61 74 20 77 68 69 63  68 20 74 6f 20 77 72 69  | at which to wri|
000b8180  74 65 0a 09 52 33 20 3d  09 6e 75 6d 62 65 72 20  |te..R3 =.number |
000b8190  6f 66 20 62 79 74 65 73  20 74 6f 20 77 72 69 74  |of bytes to writ|
000b81a0  65 0a 0a 54 68 69 73 20  63 61 6c 6c 20 69 73 20  |e..This call is |
000b81b0  6d 61 64 65 20 74 6f 20  70 61 64 20 61 20 66 69  |made to pad a fi|
000b81c0  6c 65 20 77 69 74 68 20  7a 65 72 6f 65 73 20 74  |le with zeroes t|
000b81d0  6f 20 69 6e 69 74 69 61  6c 69 73 65 20 69 74 2e  |o initialise it.|
000b81e0  0a 00 00 00 44 41 54 41  20 01 00 00 46 53 45 6e  |....DATA ...FSEn|
000b81f0  74 72 79 5f 41 72 67 73  20 39 0a 23 50 61 72 65  |try_Args 9.#Pare|
000b8200  6e 74 20 46 53 45 6e 74  72 79 5f 41 72 67 73 0a  |nt FSEntry_Args.|
000b8210  3d 3e 09 52 30 20 3d 09  39 20 28 52 65 61 64 20  |=>.R0 =.9 (Read |
000b8220  66 69 6c 65 20 64 61 74  65 73 74 61 6d 70 29 0a  |file datestamp).|
000b8230  09 52 31 20 3d 09 69 6e  74 65 72 6e 61 6c 20 66  |.R1 =.internal f|
000b8240  69 6c 65 20 68 61 6e 64  6c 65 20 72 65 74 75 72  |ile handle retur|
000b8250  6e 65 64 20 62 79 20 3c  46 53 45 6e 74 72 79 5f  |ned by <FSEntry_|
000b8260  4f 70 65 6e 3e 0a 3c 3d  09 52 32 20 3d 09 6c 6f  |Open>.<=.R2 =.lo|
000b8270  61 64 20 61 64 64 72 65  73 73 20 6f 66 20 66 69  |ad address of fi|
000b8280  6c 65 2c 20 6f 72 20 30  20 69 66 20 6e 6f 74 20  |le, or 0 if not |
000b8290  70 6f 73 73 69 62 6c 65  0a 09 52 33 20 3d 09 65  |possible..R3 =.e|
000b82a0  78 65 63 20 61 64 64 72  65 73 73 20 6f 66 20 66  |xec address of f|
000b82b0  69 6c 65 2c 20 6f 72 20  30 20 69 66 20 6e 6f 74  |ile, or 0 if not|
000b82c0  20 70 6f 73 73 69 62 6c  65 0a 0a 54 68 69 73 20  | possible..This |
000b82d0  63 61 6c 6c 20 69 73 20  6d 61 64 65 20 74 6f 20  |call is made to |
000b82e0  72 65 61 64 20 74 68 65  20 64 61 74 65 73 74 61  |read the datesta|
000b82f0  6d 70 20 6f 66 20 61 6e  20 6f 70 65 6e 20 66 69  |mp of an open fi|
000b8300  6c 65 2e 0a 44 49 52 24  7c 01 00 00 7c 01 00 00  |le..DIR$|...|...|
000b8310  80 84 0b 00 47 ff ff ff  ca 84 33 cd c5 02 00 00  |....G.....3.....|
000b8320  03 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000b8330  48 87 0b 00 47 fd ff ff  e1 84 33 cd d7 01 00 00  |H...G.....3.....|
000b8340  03 00 00 00 00 00 00 00  30 00 00 00 20 89 0b 00  |........0... ...|
000b8350  47 fd ff ff f7 84 33 cd  7a 01 00 00 03 00 00 00  |G.....3.z.......|
000b8360  00 00 00 00 31 00 00 00  9c 8a 0b 00 47 fd ff ff  |....1.......G...|
000b8370  5b 85 33 cd 0c 01 00 00  03 00 00 00 00 00 00 00  |[.3.............|
000b8380  31 30 00 00 a8 8b 0b 00  47 fd ff ff 73 86 33 cd  |10......G...s.3.|
000b8390  0d 01 00 00 03 00 00 00  00 00 00 00 32 00 00 00  |............2...|
000b83a0  b8 8c 0b 00 47 fd ff ff  bd 86 33 cd b5 01 00 00  |....G.....3.....|
000b83b0  03 00 00 00 00 00 00 00  32 35 35 00 70 8e 0b 00  |........255.p...|
000b83c0  47 fd ff ff 83 86 33 cd  0d 01 00 00 03 00 00 00  |G.....3.........|
000b83d0  00 00 00 00 33 00 00 00  80 8f 0b 00 47 fd ff ff  |....3.......G...|
000b83e0  94 86 33 cd 09 01 00 00  03 00 00 00 00 00 00 00  |..3.............|
000b83f0  34 00 00 00 8c 90 0b 00  47 fd ff ff 0e 85 33 cd  |4.......G.....3.|
000b8400  e2 01 00 00 03 00 00 00  00 00 00 00 35 00 00 00  |............5...|
000b8410  70 92 0b 00 47 fd ff ff  24 85 33 cd 74 01 00 00  |p...G...$.3.t...|
000b8420  03 00 00 00 00 00 00 00  36 00 00 00 e4 93 0b 00  |........6.......|
000b8430  47 fd ff ff 3b 85 33 cd  ce 01 00 00 03 00 00 00  |G...;.3.........|
000b8440  00 00 00 00 37 00 00 00  b4 95 0b 00 47 fd ff ff  |....7.......G...|
000b8450  49 85 33 cd 91 01 00 00  03 00 00 00 00 00 00 00  |I.3.............|
000b8460  38 00 00 00 48 97 0b 00  47 fd ff ff a8 86 33 cd  |8...H...G.....3.|
000b8470  2c 02 00 00 03 00 00 00  00 00 00 00 39 00 00 00  |,...........9...|
000b8480  44 41 54 41 c5 02 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000b8490  46 69 6c 65 0a 23 50 61  72 65 6e 74 20 46 53 45  |File.#Parent FSE|
000b84a0  6e 74 72 79 5f 0a 3d 3e  09 52 30 20 3d 09 3c 72  |ntry_.=>.R0 =.<r|
000b84b0  65 61 73 6f 6e 20 63 6f  64 65 3d 3e 2e 72 65 61  |eason code=>.rea|
000b84c0  73 6f 6e 3e 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |son>..R1 =.point|
000b84d0  65 72 20 74 6f 20 66 69  6c 65 6e 61 6d 65 0a 09  |er to filename..|
000b84e0  6f 74 68 65 72 73 20 64  65 70 65 6e 64 61 6e 74  |others dependant|
000b84f0  20 6f 6e 20 63 61 6c 6c  0a 0a 54 68 69 73 20 65  | on call..This e|
000b8500  6e 74 72 79 20 70 6f 69  6e 74 20 69 73 20 63 61  |ntry point is ca|
000b8510  6c 6c 65 64 20 66 6f 72  20 6f 70 65 72 61 74 69  |lled for operati|
000b8520  6f 6e 73 20 6f 6e 20 77  68 6f 6c 65 20 66 69 6c  |ons on whole fil|
000b8530  65 73 2e 0a 23 0a 23 53  75 62 70 61 67 65 20 72  |es..#.#Subpage r|
000b8540  65 61 73 6f 6e 0a 46 53  45 6e 74 72 79 5f 46 69  |eason.FSEntry_Fi|
000b8550  6c 65 20 72 65 61 73 6f  6e 20 63 6f 64 65 73 0a  |le reason codes.|
000b8560  52 65 61 73 6f 6e 09 4d  65 61 6e 69 6e 67 0a 23  |Reason.Meaning.#|
000b8570  4c 69 6e 65 0a 30 09 3c  53 61 76 65 20 66 69 6c  |Line.0.<Save fil|
000b8580  65 3d 3e 46 53 45 6e 74  72 79 5f 46 69 6c 65 30  |e=>FSEntry_File0|
000b8590  3e 0a 31 09 3c 57 72 69  74 65 20 63 61 74 61 6c  |>.1.<Write catal|
000b85a0  6f 67 75 65 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  |ogue information|
000b85b0  3d 3e 46 53 45 6e 74 72  79 5f 46 69 6c 65 31 3e  |=>FSEntry_File1>|
000b85c0  0a 32 09 3c 57 72 69 74  65 20 6c 6f 61 64 20 61  |.2.<Write load a|
000b85d0  64 64 72 65 73 73 3d 3e  46 53 45 6e 74 72 79 5f  |ddress=>FSEntry_|
000b85e0  46 69 6c 65 32 3e 0a 33  09 3c 57 72 69 74 65 20  |File2>.3.<Write |
000b85f0  65 78 65 63 20 61 64 64  72 65 73 73 3d 3e 46 53  |exec address=>FS|
000b8600  45 6e 74 72 79 5f 46 69  6c 65 33 3e 0a 34 09 3c  |Entry_File3>.4.<|
000b8610  57 72 69 74 65 20 61 74  74 72 69 62 75 74 65 73  |Write attributes|
000b8620  3d 3e 46 53 45 6e 74 72  79 5f 46 69 6c 65 34 3e  |=>FSEntry_File4>|
000b8630  0a 35 09 3c 52 65 61 64  20 63 61 74 61 6c 6f 67  |.5.<Read catalog|
000b8640  75 65 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 3d 3e  |ue information=>|
000b8650  46 53 45 6e 74 72 79 5f  46 69 6c 65 35 3e 0a 36  |FSEntry_File5>.6|
000b8660  09 3c 44 65 6c 65 74 65  20 6f 62 6a 65 63 74 3d  |.<Delete object=|
000b8670  3e 46 53 45 6e 74 72 79  5f 46 69 6c 65 36 3e 0a  |>FSEntry_File6>.|
000b8680  37 09 3c 43 72 65 61 74  65 20 66 69 6c 65 3d 3e  |7.<Create file=>|
000b8690  46 53 45 6e 74 72 79 5f  46 69 6c 65 37 3e 0a 38  |FSEntry_File7>.8|
000b86a0  09 3c 43 72 65 61 74 65  20 64 69 72 65 63 74 6f  |.<Create directo|
000b86b0  72 79 3d 3e 46 53 45 6e  74 72 79 5f 46 69 6c 65  |ry=>FSEntry_File|
000b86c0  38 3e 0a 39 09 3c 52 65  61 64 20 63 61 74 61 6c  |8>.9.<Read catal|
000b86d0  6f 67 75 65 20 69 6e 66  6f 72 6d 61 74 69 6f 6e  |ogue information|
000b86e0  20 77 69 74 68 6f 75 74  20 6c 65 6e 67 74 68 3d  | without length=|
000b86f0  3e 46 53 45 6e 74 72 79  5f 46 69 6c 65 39 3e 0a  |>FSEntry_File9>.|
000b8700  31 30 09 3c 52 65 61 64  20 62 6c 6f 63 6b 20 73  |10.<Read block s|
000b8710  69 7a 65 3d 3e 46 53 45  6e 74 72 79 5f 46 69 6c  |ize=>FSEntry_Fil|
000b8720  65 31 30 3e 0a 32 35 35  09 3c 4c 6f 61 64 20 66  |e10>.255.<Load f|
000b8730  69 6c 65 3d 3e 46 53 45  6e 74 72 79 5f 46 69 6c  |ile=>FSEntry_Fil|
000b8740  65 32 35 35 3e 00 00 00  44 41 54 41 d7 01 00 00  |e255>...DATA....|
000b8750  46 53 45 6e 74 72 79 5f  46 69 6c 65 20 30 0a 23  |FSEntry_File 0.#|
000b8760  50 61 72 65 6e 74 20 46  53 45 6e 74 72 79 5f 46  |Parent FSEntry_F|
000b8770  69 6c 65 0a 3d 3e 09 52  30 20 3d 09 30 20 28 53  |ile.=>.R0 =.0 (S|
000b8780  61 76 65 20 66 69 6c 65  29 0a 09 52 31 20 3d 09  |ave file)..R1 =.|
000b8790  70 6f 69 6e 74 65 72 20  74 6f 20 66 69 6c 65 6e  |pointer to filen|
000b87a0  61 6d 65 0a 09 52 32 20  3d 09 3c 6c 6f 61 64 20  |ame..R2 =.<load |
000b87b0  61 64 64 72 65 73 73 3d  3e 66 73 79 73 5f 6c 6f  |address=>fsys_lo|
000b87c0  61 64 65 78 65 63 3e 20  6f 66 20 66 69 6c 65 0a  |adexec> of file.|
000b87d0  09 52 33 20 3d 09 3c 65  78 65 63 20 61 64 64 72  |.R3 =.<exec addr|
000b87e0  65 73 73 3d 3e 66 73 79  73 5f 6c 6f 61 64 65 78  |ess=>fsys_loadex|
000b87f0  65 63 3e 20 6f 66 20 66  69 6c 65 0a 09 52 34 20  |ec> of file..R4 |
000b8800  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 73 74 61  |=.pointer to sta|
000b8810  72 74 20 6f 66 20 62 75  66 66 65 72 0a 09 52 35  |rt of buffer..R5|
000b8820  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 62 79  | =.pointer to by|
000b8830  74 65 20 61 66 74 65 72  20 65 6e 64 20 6f 66 20  |te after end of |
000b8840  62 75 66 66 65 72 0a 09  52 36 20 3d 09 70 6f 69  |buffer..R6 =.poi|
000b8850  6e 74 65 72 20 74 6f 20  73 70 65 63 69 61 6c 20  |nter to special |
000b8860  66 69 65 6c 64 2c 20 6f  72 20 30 20 69 66 20 6e  |field, or 0 if n|
000b8870  6f 74 20 70 72 65 73 65  6e 74 0a 3c 3d 09 52 36  |ot present.<=.R6|
000b8880  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 6c 65  | =.pointer to le|
000b8890  61 66 6e 61 6d 65 20 66  6f 72 20 70 72 69 6e 74  |afname for print|
000b88a0  69 6e 67 20 2a 4f 50 54  20 31 20 69 6e 66 6f 0a  |ing *OPT 1 info.|
000b88b0  0a 54 68 69 73 20 63 61  6c 6c 20 69 73 20 6d 61  |.This call is ma|
000b88c0  64 65 20 74 6f 20 73 61  76 65 20 61 20 62 6c 6f  |de to save a blo|
000b88d0  63 6b 20 6f 66 20 6d 65  6d 6f 72 79 20 61 73 20  |ck of memory as |
000b88e0  61 20 66 69 6c 65 2e 20  54 68 65 20 62 75 66 66  |a file. The buff|
000b88f0  65 72 20 69 6e 20 77 68  69 63 68 20 52 36 20 65  |er in which R6 e|
000b8900  78 69 73 74 73 20 6e 65  65 64 20 6e 6f 74 20 65  |xists need not e|
000b8910  78 69 73 74 20 66 6f 72  20 6c 6f 6e 67 2e 0a 00  |xist for long...|
000b8920  44 41 54 41 7a 01 00 00  46 53 45 6e 74 72 79 5f  |DATAz...FSEntry_|
000b8930  46 69 6c 65 20 31 0a 23  50 61 72 65 6e 74 20 46  |File 1.#Parent F|
000b8940  53 45 6e 74 72 79 5f 46  69 6c 65 0a 3d 3e 09 52  |SEntry_File.=>.R|
000b8950  30 20 3d 09 31 20 28 57  72 69 74 65 20 63 61 74  |0 =.1 (Write cat|
000b8960  61 6c 6f 67 75 65 20 69  6e 66 6f 72 6d 61 74 69  |alogue informati|
000b8970  6f 6e 29 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |on)..R1 =.pointe|
000b8980  72 20 74 6f 20 77 69 6c  64 63 61 72 64 65 64 20  |r to wildcarded |
000b8990  66 69 6c 65 6e 61 6d 65  0a 09 52 32 20 3d 09 3c  |filename..R2 =.<|
000b89a0  6c 6f 61 64 20 61 64 64  72 65 73 73 3d 3e 66 73  |load address=>fs|
000b89b0  79 73 5f 6c 6f 61 64 65  78 65 63 3e 20 6f 66 20  |ys_loadexec> of |
000b89c0  66 69 6c 65 0a 09 52 33  20 3d 09 3c 65 78 65 63  |file..R3 =.<exec|
000b89d0  20 61 64 64 72 65 73 73  3d 3e 66 73 79 73 5f 6c  | address=>fsys_l|
000b89e0  6f 61 64 65 78 65 63 3e  20 6f 66 20 66 69 6c 65  |oadexec> of file|
000b89f0  0a 09 52 34 20 3d 09 6e  65 77 20 3c 61 74 74 72  |..R4 =.new <attr|
000b8a00  69 62 75 74 65 73 3d 3e  66 73 79 73 5f 6f 62 6a  |ibutes=>fsys_obj|
000b8a10  61 74 74 72 3e 20 6f 66  20 66 69 6c 65 0a 09 52  |attr> of file..R|
000b8a20  36 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 73  |6 =.pointer to s|
000b8a30  70 65 63 69 61 6c 20 66  69 65 6c 64 2c 20 6f 72  |pecial field, or|
000b8a40  20 30 20 69 66 20 6e 6f  74 20 70 72 65 73 65 6e  | 0 if not presen|
000b8a50  74 0a 0a 54 68 69 73 20  63 61 6c 6c 20 69 73 20  |t..This call is |
000b8a60  6d 61 64 65 20 74 6f 20  73 65 74 20 74 68 65 20  |made to set the |
000b8a70  63 61 74 61 6c 6f 67 75  65 20 69 6e 66 6f 72 6d  |catalogue inform|
000b8a80  61 74 69 6f 6e 20 61 62  6f 75 74 20 61 20 67 69  |ation about a gi|
000b8a90  76 65 6e 20 66 69 6c 65  2e 0a 00 00 44 41 54 41  |ven file....DATA|
000b8aa0  0c 01 00 00 46 53 45 6e  74 72 79 5f 46 69 6c 65  |....FSEntry_File|
000b8ab0  20 31 30 0a 23 50 61 72  65 6e 74 20 46 53 45 6e  | 10.#Parent FSEn|
000b8ac0  74 72 79 5f 46 69 6c 65  0a 3d 3e 09 52 30 20 3d  |try_File.=>.R0 =|
000b8ad0  09 31 30 20 28 52 65 61  64 20 62 6c 6f 63 6b 20  |.10 (Read block |
000b8ae0  73 69 7a 65 29 0a 09 52  31 20 3d 09 70 6f 69 6e  |size)..R1 =.poin|
000b8af0  74 65 72 20 74 6f 20 66  69 6c 65 6e 61 6d 65 0a  |ter to filename.|
000b8b00  09 52 36 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R6 =.pointer to|
000b8b10  20 73 70 65 63 69 61 6c  20 66 69 65 6c 64 2c 20  | special field, |
000b8b20  6f 72 20 30 20 69 66 20  6e 6f 74 20 70 72 65 73  |or 0 if not pres|
000b8b30  65 6e 74 0a 3c 3d 09 52  32 20 3d 09 6e 61 74 75  |ent.<=.R2 =.natu|
000b8b40  72 61 6c 20 62 6c 6f 63  6b 20 73 69 7a 65 20 6f  |ral block size o|
000b8b50  66 20 66 69 6c 65 0a 0a  54 68 69 73 20 63 61 6c  |f file..This cal|
000b8b60  6c 20 69 73 20 6d 61 64  65 20 74 6f 20 72 65 61  |l is made to rea|
000b8b70  64 20 74 68 65 20 6e 61  74 75 72 61 6c 20 62 6c  |d the natural bl|
000b8b80  6f 63 6b 20 73 69 7a 65  20 6f 66 20 61 20 66 69  |ock size of a fi|
000b8b90  6c 65 2c 20 73 65 65 20  3c 46 53 45 6e 74 72 79  |le, see <FSEntry|
000b8ba0  5f 4f 70 65 6e 3e 2e 0a  44 41 54 41 0d 01 00 00  |_Open>..DATA....|
000b8bb0  46 53 45 6e 74 72 79 5f  46 69 6c 65 20 32 0a 23  |FSEntry_File 2.#|
000b8bc0  50 61 72 65 6e 74 20 46  53 45 6e 74 72 79 5f 46  |Parent FSEntry_F|
000b8bd0  69 6c 65 0a 3d 3e 09 52  30 20 3d 09 32 20 28 57  |ile.=>.R0 =.2 (W|
000b8be0  72 69 74 65 20 6c 6f 61  64 20 61 64 64 72 65 73  |rite load addres|
000b8bf0  73 29 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |s)..R1 =.pointer|
000b8c00  20 74 6f 20 77 69 6c 64  63 61 72 64 65 64 20 66  | to wildcarded f|
000b8c10  69 6c 65 6e 61 6d 65 0a  09 52 32 20 3d 09 3c 6c  |ilename..R2 =.<l|
000b8c20  6f 61 64 20 61 64 64 72  65 73 73 3d 3e 66 73 79  |oad address=>fsy|
000b8c30  73 5f 6c 6f 61 64 65 78  65 63 3e 20 6f 66 20 66  |s_loadexec> of f|
000b8c40  69 6c 65 0a 09 52 36 20  3d 09 70 6f 69 6e 74 65  |ile..R6 =.pointe|
000b8c50  72 20 74 6f 20 73 70 65  63 69 61 6c 20 66 69 65  |r to special fie|
000b8c60  6c 64 2c 20 6f 72 20 30  20 69 66 20 6e 6f 74 20  |ld, or 0 if not |
000b8c70  70 72 65 73 65 6e 74 0a  0a 54 68 69 73 20 63 61  |present..This ca|
000b8c80  6c 6c 20 69 73 20 6d 61  64 65 20 74 6f 20 73 65  |ll is made to se|
000b8c90  74 20 74 68 65 20 6c 6f  61 64 20 61 64 64 72 65  |t the load addre|
000b8ca0  73 73 20 66 6f 72 20 61  20 67 69 76 65 6e 20 66  |ss for a given f|
000b8cb0  69 6c 65 2e 0a 00 00 00  44 41 54 41 b5 01 00 00  |ile.....DATA....|
000b8cc0  46 53 45 6e 74 72 79 5f  46 69 6c 65 20 32 35 35  |FSEntry_File 255|
000b8cd0  0a 23 50 61 72 65 6e 74  20 46 53 45 6e 74 72 79  |.#Parent FSEntry|
000b8ce0  5f 46 69 6c 65 0a 3d 3e  09 52 30 20 3d 09 32 35  |_File.=>.R0 =.25|
000b8cf0  35 20 28 4c 6f 61 64 20  66 69 6c 65 29 0a 09 52  |5 (Load file)..R|
000b8d00  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 77  |1 =.pointer to w|
000b8d10  69 6c 64 63 61 72 64 65  64 20 66 69 6c 65 6e 61  |ildcarded filena|
000b8d20  6d 65 0a 09 52 32 20 3d  09 61 64 64 72 65 73 73  |me..R2 =.address|
000b8d30  20 74 6f 20 6c 6f 61 64  20 61 74 0a 09 52 36 20  | to load at..R6 |
000b8d40  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 73 70 65  |=.pointer to spe|
000b8d50  63 69 61 6c 20 66 69 65  6c 64 2c 20 6f 72 20 30  |cial field, or 0|
000b8d60  20 69 66 20 6e 6f 74 20  70 72 65 73 65 6e 74 0a  | if not present.|
000b8d70  0a 3c 3d 09 52 30 20 63  6f 72 72 75 70 74 65 64  |.<=.R0 corrupted|
000b8d80  0a 09 52 32 20 3d 09 3c  6c 6f 61 64 20 61 64 64  |..R2 =.<load add|
000b8d90  72 65 73 73 3d 3e 66 73  79 73 5f 6c 6f 61 64 65  |ress=>fsys_loade|
000b8da0  78 65 63 3e 20 6f 66 20  66 69 6c 65 0a 09 52 33  |xec> of file..R3|
000b8db0  20 3d 09 3c 65 78 65 63  20 61 64 64 72 65 73 73  | =.<exec address|
000b8dc0  3d 3e 66 73 79 73 5f 6c  6f 61 64 65 78 65 63 3e  |=>fsys_loadexec>|
000b8dd0  20 6f 66 20 66 69 6c 65  0a 09 52 34 20 3d 09 66  | of file..R4 =.f|
000b8de0  69 6c 65 20 6c 65 6e 67  74 68 0a 09 52 35 20 3d  |ile length..R5 =|
000b8df0  09 3c 61 74 74 72 69 62  75 74 65 73 3d 3e 66 73  |.<attributes=>fs|
000b8e00  79 73 5f 6f 62 6a 61 74  74 72 3e 20 6f 66 20 66  |ys_objattr> of f|
000b8e10  69 6c 65 0a 09 52 36 20  3d 09 70 6f 69 6e 74 65  |ile..R6 =.pointe|
000b8e20  72 20 74 6f 20 66 69 6c  65 6e 61 6d 65 20 66 6f  |r to filename fo|
000b8e30  72 20 2a 4f 50 54 20 31  20 69 6e 66 6f 0a 0a 54  |r *OPT 1 info..T|
000b8e40  68 69 73 20 63 61 6c 6c  20 69 73 20 6d 61 64 65  |his call is made|
000b8e50  20 74 6f 20 6c 6f 61 64  20 61 20 66 69 6c 65 20  | to load a file |
000b8e60  69 6e 74 6f 20 6d 65 6d  6f 72 79 2e 0a 00 00 00  |into memory.....|
000b8e70  44 41 54 41 0d 01 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000b8e80  46 69 6c 65 20 33 0a 23  50 61 72 65 6e 74 20 46  |File 3.#Parent F|
000b8e90  53 45 6e 74 72 79 5f 46  69 6c 65 0a 3d 3e 09 52  |SEntry_File.=>.R|
000b8ea0  30 20 3d 09 33 20 28 57  72 69 74 65 20 65 78 65  |0 =.3 (Write exe|
000b8eb0  63 20 61 64 64 72 65 73  73 29 0a 09 52 31 20 3d  |c address)..R1 =|
000b8ec0  09 70 6f 69 6e 74 65 72  20 74 6f 20 77 69 6c 64  |.pointer to wild|
000b8ed0  63 61 72 64 65 64 20 66  69 6c 65 6e 61 6d 65 0a  |carded filename.|
000b8ee0  09 52 33 20 3d 09 3c 65  78 65 63 20 61 64 64 72  |.R3 =.<exec addr|
000b8ef0  65 73 73 3d 3e 66 73 79  73 5f 6c 6f 61 64 65 78  |ess=>fsys_loadex|
000b8f00  65 63 3e 20 6f 66 20 66  69 6c 65 0a 09 52 36 20  |ec> of file..R6 |
000b8f10  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 73 70 65  |=.pointer to spe|
000b8f20  63 69 61 6c 20 66 69 65  6c 64 2c 20 6f 72 20 30  |cial field, or 0|
000b8f30  20 69 66 20 6e 6f 74 20  70 72 65 73 65 6e 74 0a  | if not present.|
000b8f40  0a 54 68 69 73 20 63 61  6c 6c 20 69 73 20 6d 61  |.This call is ma|
000b8f50  64 65 20 74 6f 20 73 65  74 20 74 68 65 20 65 78  |de to set the ex|
000b8f60  65 63 20 61 64 64 72 65  73 73 20 66 6f 72 20 61  |ec address for a|
000b8f70  20 67 69 76 65 6e 20 66  69 6c 65 2e 0a 00 00 00  | given file.....|
000b8f80  44 41 54 41 09 01 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000b8f90  46 69 6c 65 20 34 0a 23  50 61 72 65 6e 74 20 46  |File 4.#Parent F|
000b8fa0  53 45 6e 74 72 79 5f 46  69 6c 65 0a 3d 3e 09 52  |SEntry_File.=>.R|
000b8fb0  30 20 3d 09 34 20 28 57  72 69 74 65 20 61 74 74  |0 =.4 (Write att|
000b8fc0  72 69 62 75 74 65 73 29  0a 09 52 31 20 3d 09 70  |ributes)..R1 =.p|
000b8fd0  6f 69 6e 74 65 72 20 74  6f 20 77 69 6c 64 63 61  |ointer to wildca|
000b8fe0  72 64 65 64 20 66 69 6c  65 6e 61 6d 65 0a 09 52  |rded filename..R|
000b8ff0  35 20 3d 09 6e 65 77 20  3c 61 74 74 72 69 62 75  |5 =.new <attribu|
000b9000  74 65 73 3d 3e 66 73 79  73 5f 6f 62 6a 61 74 74  |tes=>fsys_objatt|
000b9010  72 3e 20 6f 66 20 66 69  6c 65 0a 09 52 36 20 3d  |r> of file..R6 =|
000b9020  09 70 6f 69 6e 74 65 72  20 74 6f 20 73 70 65 63  |.pointer to spec|
000b9030  69 61 6c 20 66 69 65 6c  64 2c 20 6f 72 20 30 20  |ial field, or 0 |
000b9040  69 66 20 6e 6f 74 20 70  72 65 73 65 6e 74 0a 0a  |if not present..|
000b9050  54 68 69 73 20 63 61 6c  6c 20 69 73 20 6d 61 64  |This call is mad|
000b9060  65 20 74 6f 20 73 65 74  20 74 68 65 20 61 74 74  |e to set the att|
000b9070  72 69 62 75 74 65 73 20  6f 66 20 61 20 67 69 76  |ributes of a giv|
000b9080  65 6e 20 66 69 6c 65 2e  0a 00 00 00 44 41 54 41  |en file.....DATA|
000b9090  e2 01 00 00 46 53 45 6e  74 72 79 5f 46 69 6c 65  |....FSEntry_File|
000b90a0  20 35 0a 23 50 61 72 65  6e 74 20 46 53 45 6e 74  | 5.#Parent FSEnt|
000b90b0  72 79 5f 46 69 6c 65 0a  3d 3e 09 52 30 20 3d 09  |ry_File.=>.R0 =.|
000b90c0  35 20 28 52 65 61 64 20  63 61 74 61 6c 6f 67 75  |5 (Read catalogu|
000b90d0  65 20 69 6e 66 6f 72 6d  61 74 69 6f 6e 29 0a 09  |e information)..|
000b90e0  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
000b90f0  66 69 6c 65 6e 61 6d 65  0a 09 52 36 20 3d 09 70  |filename..R6 =.p|
000b9100  6f 69 6e 74 65 72 20 74  6f 20 73 70 65 63 69 61  |ointer to specia|
000b9110  6c 20 66 69 65 6c 64 2c  20 6f 72 20 30 20 69 66  |l field, or 0 if|
000b9120  20 6e 6f 74 20 70 72 65  73 65 6e 74 0a 0a 3c 3d  | not present..<=|
000b9130  09 52 30 20 3d 09 3c 6f  62 6a 65 63 74 20 74 79  |.R0 =.<object ty|
000b9140  70 65 3d 3e 66 73 79 73  5f 6f 62 6a 74 79 70 65  |pe=>fsys_objtype|
000b9150  3e 0a 09 52 32 20 3d 09  3c 6c 6f 61 64 20 61 64  |>..R2 =.<load ad|
000b9160  64 72 65 73 73 3d 3e 66  73 79 73 5f 6c 6f 61 64  |dress=>fsys_load|
000b9170  65 78 65 63 3e 20 6f 66  20 66 69 6c 65 0a 09 52  |exec> of file..R|
000b9180  33 20 3d 09 3c 65 78 65  63 20 61 64 64 72 65 73  |3 =.<exec addres|
000b9190  73 3d 3e 66 73 79 73 5f  6c 6f 61 64 65 78 65 63  |s=>fsys_loadexec|
000b91a0  3e 20 6f 66 20 66 69 6c  65 0a 09 52 34 20 3d 09  |> of file..R4 =.|
000b91b0  6c 65 6e 67 74 68 20 6f  66 20 66 69 6c 65 0a 09  |length of file..|
000b91c0  52 35 20 3d 09 3c 61 74  74 72 69 62 75 74 65 73  |R5 =.<attributes|
000b91d0  3d 3e 66 73 79 73 5f 6f  62 6a 61 74 74 72 3e 20  |=>fsys_objattr> |
000b91e0  6f 66 20 66 69 6c 65 0a  09 52 36 20 70 72 65 73  |of file..R6 pres|
000b91f0  65 72 76 65 64 0a 0a 54  68 69 73 20 63 61 6c 6c  |erved..This call|
000b9200  20 69 73 20 6d 61 64 65  20 74 6f 20 72 65 61 64  | is made to read|
000b9210  20 74 68 65 20 63 61 74  61 6c 6f 67 75 65 20 69  | the catalogue i|
000b9220  6e 66 6f 72 6d 61 74 69  6f 6e 20 61 62 6f 75 74  |nformation about|
000b9230  20 61 20 67 69 76 65 6e  20 66 69 6c 65 2e 0a 0a  | a given file...|
000b9240  54 68 65 20 6f 62 6a 65  63 74 20 74 79 70 65 20  |The object type |
000b9250  27 49 6d 61 67 65 27 20  6d 75 73 74 20 6e 6f 74  |'Image' must not|
000b9260  20 62 65 20 72 65 74 75  72 6e 65 64 2e 0a 00 00  | be returned....|
000b9270  44 41 54 41 74 01 00 00  46 53 45 6e 74 72 79 5f  |DATAt...FSEntry_|
000b9280  46 69 6c 65 20 36 0a 23  50 61 72 65 6e 74 20 46  |File 6.#Parent F|
000b9290  53 45 6e 74 72 79 5f 46  69 6c 65 0a 3d 3e 09 52  |SEntry_File.=>.R|
000b92a0  30 20 3d 09 36 20 28 44  65 6c 65 74 65 20 6f 62  |0 =.6 (Delete ob|
000b92b0  6a 65 63 74 29 0a 09 52  31 20 3d 09 70 6f 69 6e  |ject)..R1 =.poin|
000b92c0  74 65 72 20 74 6f 20 66  69 6c 65 6e 61 6d 65 0a  |ter to filename.|
000b92d0  09 52 36 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R6 =.pointer to|
000b92e0  20 73 70 65 63 69 61 6c  20 66 69 65 6c 64 2c 20  | special field, |
000b92f0  6f 72 20 30 20 69 66 20  6e 6f 74 20 70 72 65 73  |or 0 if not pres|
000b9300  65 6e 74 0a 0a 3c 3d 09  52 30 20 3d 09 3c 6f 62  |ent..<=.R0 =.<ob|
000b9310  6a 65 63 74 20 74 79 70  65 3d 3e 66 73 79 73 5f  |ject type=>fsys_|
000b9320  6f 62 6a 74 79 70 65 3e  0a 09 52 32 20 3d 09 3c  |objtype>..R2 =.<|
000b9330  6c 6f 61 64 20 61 64 64  72 65 73 73 3d 3e 66 73  |load address=>fs|
000b9340  79 73 5f 6c 6f 61 64 65  78 65 63 3e 20 6f 66 20  |ys_loadexec> of |
000b9350  66 69 6c 65 0a 09 52 33  20 3d 09 3c 65 78 65 63  |file..R3 =.<exec|
000b9360  20 61 64 64 72 65 73 73  3d 3e 66 73 79 73 5f 6c  | address=>fsys_l|
000b9370  6f 61 64 65 78 65 63 3e  20 6f 66 20 66 69 6c 65  |oadexec> of file|
000b9380  0a 09 52 34 20 3d 09 6c  65 6e 67 74 68 20 6f 66  |..R4 =.length of|
000b9390  20 66 69 6c 65 0a 09 52  35 20 3d 09 3c 61 74 74  | file..R5 =.<att|
000b93a0  72 69 62 75 74 65 73 3d  3e 66 73 79 73 5f 6f 62  |ributes=>fsys_ob|
000b93b0  6a 61 74 74 72 3e 20 6f  66 20 66 69 6c 65 0a 0a  |jattr> of file..|
000b93c0  54 68 69 73 20 63 61 6c  6c 20 69 73 20 6d 61 64  |This call is mad|
000b93d0  65 20 74 6f 20 64 65 6c  65 74 65 20 61 20 66 69  |e to delete a fi|
000b93e0  6c 65 2e 0a 44 41 54 41  ce 01 00 00 46 53 45 6e  |le..DATA....FSEn|
000b93f0  74 72 79 5f 46 69 6c 65  20 37 0a 23 50 61 72 65  |try_File 7.#Pare|
000b9400  6e 74 20 46 53 45 6e 74  72 79 5f 46 69 6c 65 0a  |nt FSEntry_File.|
000b9410  3d 3e 09 52 30 20 3d 09  37 20 28 43 72 65 61 74  |=>.R0 =.7 (Creat|
000b9420  65 20 66 69 6c 65 29 0a  09 52 31 20 3d 09 70 6f  |e file)..R1 =.po|
000b9430  69 6e 74 65 72 20 74 6f  20 66 69 6c 65 6e 61 6d  |inter to filenam|
000b9440  65 0a 09 52 32 20 3d 09  3c 6c 6f 61 64 20 61 64  |e..R2 =.<load ad|
000b9450  64 72 65 73 73 3d 3e 66  73 79 73 5f 6c 6f 61 64  |dress=>fsys_load|
000b9460  65 78 65 63 3e 20 6f 66  20 66 69 6c 65 0a 09 52  |exec> of file..R|
000b9470  33 20 3d 09 3c 65 78 65  63 20 61 64 64 72 65 73  |3 =.<exec addres|
000b9480  73 3d 3e 66 73 79 73 5f  6c 6f 61 64 65 78 65 63  |s=>fsys_loadexec|
000b9490  3e 20 6f 66 20 66 69 6c  65 0a 09 52 34 20 3d 09  |> of file..R4 =.|
000b94a0  73 74 61 72 74 20 61 64  64 72 65 73 73 20 69 6e  |start address in|
000b94b0  20 6d 65 6d 6f 72 79 0a  09 52 35 20 3d 09 62 79  | memory..R5 =.by|
000b94c0  74 65 20 61 66 74 65 72  20 65 6e 64 20 61 64 64  |te after end add|
000b94d0  72 65 73 73 20 69 6e 20  6d 65 6d 6f 72 79 0a 09  |ress in memory..|
000b94e0  52 36 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R6 =.pointer to |
000b94f0  73 70 65 63 69 61 6c 20  66 69 65 6c 64 2c 20 6f  |special field, o|
000b9500  72 20 30 20 69 66 20 6e  6f 74 20 70 72 65 73 65  |r 0 if not prese|
000b9510  6e 74 0a 3c 3d 09 52 36  20 3d 09 70 6f 69 6e 74  |nt.<=.R6 =.point|
000b9520  65 72 20 74 6f 20 66 69  6c 65 6e 61 6d 65 20 66  |er to filename f|
000b9530  6f 72 20 2a 4f 50 54 20  31 20 69 6e 66 6f 0a 0a  |or *OPT 1 info..|
000b9540  54 68 69 73 20 63 61 6c  6c 20 69 73 20 6d 61 64  |This call is mad|
000b9550  65 20 74 6f 20 63 72 65  61 74 65 20 61 20 66 69  |e to create a fi|
000b9560  6c 65 2e 20 52 34 20 61  6e 64 20 52 35 20 61 72  |le. R4 and R5 ar|
000b9570  65 20 75 73 65 64 20 74  6f 20 63 61 6c 63 75 6c  |e used to calcul|
000b9580  61 74 65 20 74 68 65 20  6c 65 6e 67 74 68 20 6f  |ate the length o|
000b9590  66 20 74 68 65 20 66 69  6c 65 20 61 6e 64 20 6e  |f the file and n|
000b95a0  6f 20 64 61 74 61 20 69  73 20 73 74 6f 72 65 64  |o data is stored|
000b95b0  2e 0a 00 00 44 41 54 41  91 01 00 00 46 53 45 6e  |....DATA....FSEn|
000b95c0  74 72 79 5f 46 69 6c 65  20 38 0a 23 50 61 72 65  |try_File 8.#Pare|
000b95d0  6e 74 20 46 53 45 6e 74  72 79 5f 46 69 6c 65 0a  |nt FSEntry_File.|
000b95e0  3d 3e 09 52 30 20 3d 09  38 20 28 43 72 65 61 74  |=>.R0 =.8 (Creat|
000b95f0  65 20 64 69 72 65 63 74  6f 72 79 29 0a 09 52 31  |e directory)..R1|
000b9600  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 66 69  | =.pointer to fi|
000b9610  6c 65 6e 61 6d 65 0a 09  52 32 20 3d 09 3c 6c 6f  |lename..R2 =.<lo|
000b9620  61 64 20 61 64 64 72 65  73 73 3d 3e 66 73 79 73  |ad address=>fsys|
000b9630  5f 6c 6f 61 64 65 78 65  63 3e 20 6f 66 20 66 69  |_loadexec> of fi|
000b9640  6c 65 0a 09 52 33 20 3d  09 3c 65 78 65 63 20 61  |le..R3 =.<exec a|
000b9650  64 64 72 65 73 73 3d 3e  66 73 79 73 5f 6c 6f 61  |ddress=>fsys_loa|
000b9660  64 65 78 65 63 3e 20 6f  66 20 66 69 6c 65 0a 09  |dexec> of file..|
000b9670  52 34 20 3d 09 6e 75 6d  62 65 72 20 6f 66 20 65  |R4 =.number of e|
000b9680  6e 74 72 69 65 73 2c 20  6f 72 20 30 20 66 6f 72  |ntries, or 0 for|
000b9690  20 64 65 66 61 75 6c 74  0a 09 52 36 20 3d 09 70  | default..R6 =.p|
000b96a0  6f 69 6e 74 65 72 20 74  6f 20 73 70 65 63 69 61  |ointer to specia|
000b96b0  6c 20 66 69 65 6c 64 2c  20 6f 72 20 30 20 69 66  |l field, or 0 if|
000b96c0  20 6e 6f 74 20 70 72 65  73 65 6e 74 0a 0a 54 68  | not present..Th|
000b96d0  69 73 20 63 61 6c 6c 20  69 73 20 6d 61 64 65 20  |is call is made |
000b96e0  74 6f 20 63 72 65 61 74  65 20 61 20 64 69 72 65  |to create a dire|
000b96f0  63 74 6f 72 79 2e 20 52  34 20 61 6e 64 20 52 35  |ctory. R4 and R5|
000b9700  20 61 72 65 20 75 73 65  64 20 74 6f 20 63 61 6c  | are used to cal|
000b9710  63 75 6c 61 74 65 20 74  68 65 20 6c 65 6e 67 74  |culate the lengt|
000b9720  68 20 6f 66 20 74 68 65  20 66 69 6c 65 20 61 6e  |h of the file an|
000b9730  64 20 6e 6f 20 64 61 74  61 20 69 73 20 73 74 6f  |d no data is sto|
000b9740  72 65 64 2e 0a 00 00 00  44 41 54 41 2c 02 00 00  |red.....DATA,...|
000b9750  46 53 45 6e 74 72 79 5f  46 69 6c 65 20 39 0a 23  |FSEntry_File 9.#|
000b9760  50 61 72 65 6e 74 20 46  53 45 6e 74 72 79 5f 46  |Parent FSEntry_F|
000b9770  69 6c 65 0a 3d 3e 09 52  30 20 3d 09 39 20 28 52  |ile.=>.R0 =.9 (R|
000b9780  65 61 64 20 63 61 74 61  6c 6f 67 75 65 20 69 6e  |ead catalogue in|
000b9790  66 6f 72 6d 61 74 69 6f  6e 20 77 69 74 68 6f 75  |formation withou|
000b97a0  74 20 6c 65 6e 67 74 68  29 0a 09 52 31 20 3d 09  |t length)..R1 =.|
000b97b0  70 6f 69 6e 74 65 72 20  74 6f 20 66 69 6c 65 6e  |pointer to filen|
000b97c0  61 6d 65 0a 09 52 34 20  3d 09 6e 75 6d 62 65 72  |ame..R4 =.number|
000b97d0  20 6f 66 20 65 6e 74 72  69 65 73 2c 20 6f 72 20  | of entries, or |
000b97e0  30 20 66 6f 72 20 64 65  66 61 75 6c 74 0a 09 52  |0 for default..R|
000b97f0  36 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 73  |6 =.pointer to s|
000b9800  70 65 63 69 61 6c 20 66  69 65 6c 64 2c 20 6f 72  |pecial field, or|
000b9810  20 30 20 69 66 20 6e 6f  74 20 70 72 65 73 65 6e  | 0 if not presen|
000b9820  74 0a 3c 3d 09 52 30 20  3d 09 3c 6f 62 6a 65 63  |t.<=.R0 =.<objec|
000b9830  74 20 74 79 70 65 3d 3e  66 73 79 73 5f 6f 62 6a  |t type=>fsys_obj|
000b9840  74 79 70 65 3e 0a 09 52  32 20 3d 09 3c 6c 6f 61  |type>..R2 =.<loa|
000b9850  64 20 61 64 64 72 65 73  73 3d 3e 66 73 79 73 5f  |d address=>fsys_|
000b9860  6c 6f 61 64 65 78 65 63  3e 20 6f 66 20 66 69 6c  |loadexec> of fil|
000b9870  65 0a 09 52 33 20 3d 09  3c 65 78 65 63 20 61 64  |e..R3 =.<exec ad|
000b9880  64 72 65 73 73 3d 3e 66  73 79 73 5f 6c 6f 61 64  |dress=>fsys_load|
000b9890  65 78 65 63 3e 20 6f 66  20 66 69 6c 65 0a 09 52  |exec> of file..R|
000b98a0  35 20 3d 09 3c 61 74 74  72 69 62 75 74 65 73 3d  |5 =.<attributes=|
000b98b0  3e 66 73 79 73 5f 6f 62  6a 61 74 74 72 3e 20 6f  |>fsys_objattr> o|
000b98c0  66 20 66 69 6c 65 0a 0a  54 68 69 73 20 63 61 6c  |f file..This cal|
000b98d0  6c 20 69 73 20 6d 61 64  65 20 74 6f 20 72 65 61  |l is made to rea|
000b98e0  64 20 74 68 65 20 63 61  74 61 6c 6f 67 75 65 20  |d the catalogue |
000b98f0  69 6e 66 6f 72 6d 61 74  69 6f 6e 20 65 78 63 6c  |information excl|
000b9900  75 64 69 6e 67 20 74 68  65 20 6c 65 6e 67 74 68  |uding the length|
000b9910  2e 20 54 68 69 73 20 77  69 6c 6c 20 6f 6e 6c 79  |. This will only|
000b9920  20 62 65 20 63 61 6c 6c  65 64 20 69 66 20 62 69  | be called if bi|
000b9930  74 20 32 36 20 69 66 20  74 68 65 20 66 69 6c 69  |t 26 if the fili|
000b9940  6e 67 20 73 79 73 74 65  6d 20 3c 69 6e 66 6f 72  |ng system <infor|
000b9950  6d 61 74 69 6f 6e 20 77  6f 72 64 3d 3e 66 73 79  |mation word=>fsy|
000b9960  73 5f 69 6e 66 6f 77 6f  72 64 3e 20 69 73 20 73  |s_infoword> is s|
000b9970  65 74 2e 0a 44 49 52 24  ac 03 00 00 ac 03 00 00  |et..DIR$........|
000b9980  20 9d 0b 00 48 ff ff ff  22 39 82 20 c1 06 00 00  | ...H..."9. ....|
000b9990  03 00 00 00 00 00 00 00  21 52 6f 6f 74 00 00 00  |........!Root...|
000b99a0  e4 a3 0b 00 48 fd ff ff  d9 dd 65 26 54 01 00 00  |....H.....e&T...|
000b99b0  03 00 00 00 00 00 00 00  38 00 00 00 38 a5 0b 00  |........8...8...|
000b99c0  48 fd ff ff b5 b8 66 26  18 02 00 00 03 00 00 00  |H.....f&........|
000b99d0  00 00 00 00 30 00 00 00  50 a7 0b 00 48 fd ff ff  |....0...P...H...|
000b99e0  7b e4 b4 1f 90 01 00 00  03 00 00 00 00 00 00 00  |{...............|
000b99f0  31 00 00 00 e0 a8 0b 00  48 fd ff ff b5 de b6 1f  |1.......H.......|
000b9a00  aa 00 00 00 03 00 00 00  00 00 00 00 31 30 00 00  |............10..|
000b9a10  8c a9 0b 00 48 fd ff ff  46 8f b7 1f ba 03 00 00  |....H...F.......|
000b9a20  03 00 00 00 00 00 00 00  31 31 00 00 48 ad 0b 00  |........11..H...|
000b9a30  48 fd ff ff 8d 9b 66 26  7a 04 00 00 03 00 00 00  |H.....f&z.......|
000b9a40  00 00 00 00 31 32 00 00  c4 b1 0b 00 48 fd ff ff  |....12......H...|
000b9a50  e4 fe b0 26 0d 04 00 00  03 00 00 00 00 00 00 00  |...&............|
000b9a60  31 34 00 00 d4 b5 0b 00  48 fd ff ff f5 01 b1 26  |14......H......&|
000b9a70  14 03 00 00 03 00 00 00  00 00 00 00 31 35 00 00  |............15..|
000b9a80  e8 b8 0b 00 48 fd ff ff  9c 08 7c 20 cb 00 00 00  |....H.....| ....|
000b9a90  03 00 00 00 00 00 00 00  31 36 00 00 b4 b9 0b 00  |........16......|
000b9aa0  48 fd ff ff 5e 5f 7c 20  70 01 00 00 03 00 00 00  |H...^_| p.......|
000b9ab0  00 00 00 00 31 37 00 00  24 bb 0b 00 48 fd ff ff  |....17..$...H...|
000b9ac0  be 74 66 26 61 02 00 00  03 00 00 00 00 00 00 00  |.tf&a...........|
000b9ad0  31 38 00 00 88 bd 0b 00  48 fd ff ff 9c 04 b1 26  |18......H......&|
000b9ae0  14 03 00 00 03 00 00 00  00 00 00 00 31 39 00 00  |............19..|
000b9af0  9c c0 0b 00 48 fd ff ff  0e 67 66 26 8a 01 00 00  |....H....gf&....|
000b9b00  03 00 00 00 00 00 00 00  32 00 00 00 28 c2 0b 00  |........2...(...|
000b9b10  48 fd ff ff 48 53 7e 20  0b 02 00 00 03 00 00 00  |H...HS~ ........|
000b9b20  00 00 00 00 32 30 00 00  34 c4 0b 00 48 fd ff ff  |....20..4...H...|
000b9b30  7a 60 7e 20 0a 05 00 00  03 00 00 00 00 00 00 00  |z`~ ............|
000b9b40  32 33 00 00 40 c9 0b 00  48 fd ff ff 1b 90 67 2a  |23..@...H.....g*|
000b9b50  f2 03 00 00 03 00 00 00  00 00 00 00 32 34 00 00  |............24..|
000b9b60  34 cd 0b 00 48 fd ff ff  fb 1d 81 20 03 02 00 00  |4...H...... ....|
000b9b70  03 00 00 00 00 00 00 00  32 35 00 00 38 cf 0b 00  |........25..8...|
000b9b80  48 fd ff ff 82 14 81 20  65 01 00 00 03 00 00 00  |H...... e.......|
000b9b90  00 00 00 00 32 36 00 00  a0 d0 0b 00 48 fd ff ff  |....26......H...|
000b9ba0  d4 3b 81 20 97 01 00 00  03 00 00 00 00 00 00 00  |.;. ............|
000b9bb0  32 37 00 00 38 d2 0b 00  48 fd ff ff c9 40 81 20  |27..8...H....@. |
000b9bc0  98 01 00 00 03 00 00 00  00 00 00 00 32 38 00 00  |............28..|
000b9bd0  d0 d3 0b 00 48 fd ff ff  d4 f4 e6 27 c2 02 00 00  |....H......'....|
000b9be0  03 00 00 00 00 00 00 00  32 39 00 00 94 d6 0b 00  |........29......|
000b9bf0  48 fd ff ff 7e 5f b5 1f  9c 01 00 00 03 00 00 00  |H...~_..........|
000b9c00  00 00 00 00 33 00 00 00  30 d8 0b 00 48 fd ff ff  |....3...0...H...|
000b9c10  5b 82 81 20 ce 01 00 00  03 00 00 00 00 00 00 00  |[.. ............|
000b9c20  33 30 00 00 00 da 0b 00  48 fd ff ff 7f 1c 66 26  |30......H.....f&|
000b9c30  9a 01 00 00 03 00 00 00  00 00 00 00 33 31 00 00  |............31..|
000b9c40  9c db 0b 00 48 fd ff ff  68 34 83 20 c5 01 00 00  |....H...h4. ....|
000b9c50  03 00 00 00 00 00 00 00  33 32 00 00 64 dd 0b 00  |........32..d...|
000b9c60  48 fd ff ff 7c e4 67 2a  89 03 00 00 03 00 00 00  |H...|.g*........|
000b9c70  00 00 00 00 33 33 00 00  f0 e0 0b 00 48 fd ff ff  |....33......H...|
000b9c80  89 06 66 26 f0 01 00 00  03 00 00 00 00 00 00 00  |..f&............|
000b9c90  33 34 00 00 e0 e2 0b 00  48 fd ff ff 51 00 66 26  |34......H...Q.f&|
000b9ca0  a1 01 00 00 03 00 00 00  00 00 00 00 34 00 00 00  |............4...|
000b9cb0  84 e4 0b 00 48 fd ff ff  45 fd 65 26 b5 01 00 00  |....H...E.e&....|
000b9cc0  03 00 00 00 00 00 00 00  35 00 00 00 3c e6 0b 00  |........5...<...|
000b9cd0  48 fd ff ff 2b 2e 7d 20  ab 01 00 00 03 00 00 00  |H...+.} ........|
000b9ce0  00 00 00 00 36 00 00 00  e8 e7 0b 00 48 fd ff ff  |....6.......H...|
000b9cf0  98 f5 65 26 82 01 00 00  03 00 00 00 00 00 00 00  |..e&............|
000b9d00  37 00 00 00 6c e9 0b 00  48 fd ff ff 7d 08 b1 26  |7...l...H...}..&|
000b9d10  8a 01 00 00 03 00 00 00  00 00 00 00 39 00 00 00  |............9...|
000b9d20  44 41 54 41 c1 06 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000b9d30  46 75 6e 63 0a 23 50 61  72 65 6e 74 20 46 53 45  |Func.#Parent FSE|
000b9d40  6e 74 72 79 5f 0a 3d 3e  09 52 30 20 3d 09 3c 72  |ntry_.=>.R0 =.<r|
000b9d50  65 61 73 6f 6e 20 63 6f  64 65 3d 3e 2e 72 65 61  |eason code=>.rea|
000b9d60  73 6f 6e 3e 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |son>..R1 =.point|
000b9d70  65 72 20 74 6f 20 66 69  6c 65 6e 61 6d 65 0a 09  |er to filename..|
000b9d80  6f 74 68 65 72 73 20 64  65 70 65 6e 64 61 6e 74  |others dependant|
000b9d90  20 6f 6e 20 63 61 6c 6c  0a 0a 54 68 69 73 20 65  | on call..This e|
000b9da0  6e 74 72 79 20 70 6f 69  6e 74 20 69 73 20 63 61  |ntry point is ca|
000b9db0  6c 6c 65 64 20 66 6f 72  20 6f 70 65 72 61 74 69  |lled for operati|
000b9dc0  6f 6e 73 20 6f 6e 20 74  68 65 20 66 69 6c 69 6e  |ons on the filin|
000b9dd0  67 20 73 79 73 74 65 6d  20 69 6e 20 67 65 6e 65  |g system in gene|
000b9de0  72 61 6c 2e 0a 23 0a 23  53 75 62 70 61 67 65 20  |ral..#.#Subpage |
000b9df0  72 65 61 73 6f 6e 0a 46  53 45 6e 74 72 79 5f 46  |reason.FSEntry_F|
000b9e00  75 6e 63 20 72 65 61 73  6f 6e 20 63 6f 64 65 73  |unc reason codes|
000b9e10  0a 52 65 61 73 6f 6e 09  4d 65 61 6e 69 6e 67 0a  |.Reason.Meaning.|
000b9e20  23 4c 69 6e 65 0a 30 09  3c 53 65 74 20 63 75 72  |#Line.0.<Set cur|
000b9e30  72 65 6e 74 20 64 69 72  65 63 74 6f 72 79 20 28  |rent directory (|
000b9e40  52 4f 32 29 3d 3e 46 53  45 6e 74 72 79 5f 46 75  |RO2)=>FSEntry_Fu|
000b9e50  6e 63 30 3e 0a 31 09 3c  53 65 74 20 6c 69 62 72  |nc0>.1.<Set libr|
000b9e60  61 72 79 20 64 69 72 65  63 74 6f 72 79 20 28 52  |ary directory (R|
000b9e70  4f 32 29 3d 3e 46 53 45  6e 74 72 79 5f 46 75 6e  |O2)=>FSEntry_Fun|
000b9e80  63 31 3e 0a 32 09 3c 43  61 74 61 6c 6f 67 75 65  |c1>.2.<Catalogue|
000b9e90  20 64 69 72 65 63 74 6f  72 79 20 28 2a 43 61 74  | directory (*Cat|
000b9ea0  29 3d 3e 46 53 45 6e 74  72 79 5f 46 75 6e 63 32  |)=>FSEntry_Func2|
000b9eb0  3e 0a 33 09 3c 45 78 61  6d 69 6e 65 20 64 69 72  |>.3.<Examine dir|
000b9ec0  65 63 74 6f 72 79 20 28  2a 45 78 29 3d 3e 46 53  |ectory (*Ex)=>FS|
000b9ed0  45 6e 74 72 79 5f 46 75  6e 63 33 3e 0a 34 09 3c  |Entry_Func3>.4.<|
000b9ee0  43 61 74 61 6c 6f 67 75  65 20 6c 69 62 72 61 72  |Catalogue librar|
000b9ef0  79 20 28 2a 4c 43 61 74  29 3d 3e 46 53 45 6e 74  |y (*LCat)=>FSEnt|
000b9f00  72 79 5f 46 75 6e 63 34  3e 0a 35 09 3c 45 78 61  |ry_Func4>.5.<Exa|
000b9f10  6d 69 6e 65 20 6c 69 62  72 61 72 79 20 28 2a 4c  |mine library (*L|
000b9f20  45 78 29 3d 3e 46 53 45  6e 74 72 79 5f 46 75 6e  |Ex)=>FSEntry_Fun|
000b9f30  63 35 3e 0a 36 09 3c 45  78 61 6d 69 6e 65 20 6f  |c5>.6.<Examine o|
000b9f40  62 6a 65 63 74 73 20 28  2a 49 6e 66 6f 29 3d 3e  |bjects (*Info)=>|
000b9f50  46 53 45 6e 74 72 79 5f  46 75 6e 63 36 3e 0a 37  |FSEntry_Func6>.7|
000b9f60  09 3c 53 65 74 20 46 53  20 4f 70 74 69 6f 6e 73  |.<Set FS Options|
000b9f70  20 28 2a 4f 70 74 29 3d  3e 46 53 45 6e 74 72 79  | (*Opt)=>FSEntry|
000b9f80  5f 46 75 6e 63 37 3e 0a  38 09 3c 52 65 6e 61 6d  |_Func7>.8.<Renam|
000b9f90  65 20 6f 62 6a 65 63 74  3d 3e 46 53 45 6e 74 72  |e object=>FSEntr|
000b9fa0  79 5f 46 75 6e 63 38 3e  0a 39 09 3c 41 63 63 65  |y_Func8>.9.<Acce|
000b9fb0  73 73 20 6f 62 6a 65 63  74 73 3d 3e 46 53 45 6e  |ss objects=>FSEn|
000b9fc0  74 72 79 5f 46 75 6e 63  39 3e 0a 31 30 09 3c 42  |try_Func9>.10.<B|
000b9fd0  6f 6f 74 20 66 72 6f 6d  20 66 69 6c 69 6e 67 20  |oot from filing |
000b9fe0  73 79 73 74 65 6d 3d 3e  46 53 45 6e 74 72 79 5f  |system=>FSEntry_|
000b9ff0  66 75 6e 63 31 30 3e 0a  31 31 09 3c 52 65 61 64  |func10>.11.<Read|
000ba000  20 6e 61 6d 65 20 61 6e  64 20 62 6f 6f 74 20 6f  | name and boot o|
000ba010  70 74 69 6f 6e 3d 3e 46  53 45 6e 74 72 79 5f 66  |ption=>FSEntry_f|
000ba020  75 6e 63 31 31 3e 0a 31  32 09 3c 52 65 61 64 20  |unc11>.12.<Read |
000ba030  43 53 44 20 61 6e 64 20  70 72 69 76 69 6c 65 64  |CSD and priviled|
000ba040  67 65 20 62 79 74 65 3d  3e 46 53 45 6e 74 72 79  |ge byte=>FSEntry|
000ba050  5f 66 75 6e 63 31 32 3e  0a 31 33 09 3c 52 65 61  |_func12>.13.<Rea|
000ba060  64 20 6c 69 62 72 61 72  79 20 61 6e 64 20 70 72  |d library and pr|
000ba070  69 76 69 6c 65 64 67 65  20 62 79 74 65 3d 3e 46  |iviledge byte=>F|
000ba080  53 45 6e 74 72 79 5f 66  75 6e 63 31 32 3e 0a 31  |SEntry_func12>.1|
000ba090  34 09 3c 52 65 61 64 20  64 69 72 65 63 74 6f 72  |4.<Read director|
000ba0a0  79 20 65 6e 74 72 69 65  73 3d 3e 46 53 45 6e 74  |y entries=>FSEnt|
000ba0b0  72 79 5f 66 75 6e 63 31  34 3e 0a 31 35 09 3c 52  |ry_func14>.15.<R|
000ba0c0  65 61 64 20 64 69 72 65  63 74 6f 72 79 20 65 6e  |ead directory en|
000ba0d0  74 72 69 65 73 20 61 6e  64 20 69 6e 66 6f 3d 3e  |tries and info=>|
000ba0e0  46 53 45 6e 74 72 79 5f  66 75 6e 63 31 35 3e 0a  |FSEntry_func15>.|
000ba0f0  31 36 09 3c 53 68 75 74  64 6f 77 6e 20 66 69 6c  |16.<Shutdown fil|
000ba100  69 6e 67 20 73 79 73 74  65 6d 3d 3e 46 53 45 6e  |ing system=>FSEn|
000ba110  74 72 79 5f 66 75 6e 63  31 36 3e 0a 31 37 09 3c  |try_func16>.17.<|
000ba120  50 72 69 6e 74 20 73 74  61 72 74 75 70 20 62 61  |Print startup ba|
000ba130  6e 6e 65 72 3d 3e 46 53  45 6e 74 72 79 5f 66 75  |nner=>FSEntry_fu|
000ba140  6e 63 31 37 3e 0a 31 38  09 3c 53 65 74 20 64 69  |nc17>.18.<Set di|
000ba150  72 65 63 74 6f 72 79 20  63 6f 6e 74 65 78 74 73  |rectory contexts|
000ba160  20 28 6e 65 76 65 72 20  63 61 6c 6c 65 64 29 3d  | (never called)=|
000ba170  3e 46 53 45 6e 74 72 79  5f 66 75 6e 63 31 38 3e  |>FSEntry_func18>|
000ba180  0a 31 39 09 3c 52 65 61  64 20 64 69 72 65 63 74  |.19.<Read direct|
000ba190  6f 72 79 20 65 6e 74 72  69 65 73 20 61 6e 64 20  |ory entries and |
000ba1a0  69 6e 66 6f 72 6d 61 74  69 6f 6e 3d 3e 46 53 45  |information=>FSE|
000ba1b0  6e 74 72 79 5f 66 75 6e  63 31 39 3e 0a 32 30 09  |ntry_func19>.20.|
000ba1c0  3c 4f 75 74 70 75 74 20  66 75 6c 6c 20 69 6e 66  |<Output full inf|
000ba1d0  6f 72 6d 61 74 69 6f 6e  20 6f 6e 20 6f 62 6a 65  |ormation on obje|
000ba1e0  63 74 73 3d 3e 46 53 45  6e 74 72 79 5f 66 75 6e  |cts=>FSEntry_fun|
000ba1f0  63 32 30 3e 0a 32 33 09  3c 43 61 6e 6f 6e 69 63  |c20>.23.<Canonic|
000ba200  61 6c 69 73 65 20 73 70  65 63 69 61 6c 20 66 69  |alise special fi|
000ba210  65 6c 64 20 61 6e 64 20  64 69 73 63 20 6e 61 6d  |eld and disc nam|
000ba220  65 3d 3e 46 53 45 6e 74  72 79 5f 66 75 6e 63 32  |e=>FSEntry_func2|
000ba230  33 3e 0a 32 34 09 3c 52  65 73 6f 6c 76 65 20 77  |3>.24.<Resolve w|
000ba240  69 6c 64 63 61 72 64 3d  3e 46 53 45 6e 74 72 79  |ildcard=>FSEntry|
000ba250  5f 66 75 6e 63 32 34 3e  0a 32 35 09 3c 52 65 61  |_func24>.25.<Rea|
000ba260  64 20 64 65 66 65 63 74  20 6c 69 73 74 3d 3e 46  |d defect list=>F|
000ba270  53 45 6e 74 72 79 5f 66  75 6e 63 32 35 3e 0a 32  |SEntry_func25>.2|
000ba280  36 09 3c 41 64 64 20 61  20 64 65 66 65 63 74 3d  |6.<Add a defect=|
000ba290  3e 46 53 45 6e 74 72 79  5f 66 75 6e 63 32 36 3e  |>FSEntry_func26>|
000ba2a0  0a 32 37 09 3c 52 65 61  64 20 62 6f 6f 74 20 6f  |.27.<Read boot o|
000ba2b0  70 74 69 6f 6e 3d 3e 46  53 45 6e 74 72 79 5f 66  |ption=>FSEntry_f|
000ba2c0  75 6e 63 32 37 3e 0a 32  38 09 3c 57 72 69 74 65  |unc27>.28.<Write|
000ba2d0  20 62 6f 6f 74 20 6f 70  74 69 6f 6e 3d 3e 46 53  | boot option=>FS|
000ba2e0  45 6e 74 72 79 5f 66 75  6e 63 32 38 3e 0a 32 39  |Entry_func28>.29|
000ba2f0  09 3c 52 65 61 64 20 75  73 65 64 20 73 70 61 63  |.<Read used spac|
000ba300  65 20 6d 61 70 3d 3e 46  53 45 6e 74 72 79 5f 66  |e map=>FSEntry_f|
000ba310  75 6e 63 32 39 3e 0a 33  30 09 3c 52 65 61 64 20  |unc29>.30.<Read |
000ba320  66 72 65 65 20 73 70 61  63 65 20 6d 61 70 3d 3e  |free space map=>|
000ba330  46 53 45 6e 74 72 79 5f  66 75 6e 63 33 30 3e 0a  |FSEntry_func30>.|
000ba340  33 31 09 3c 4e 61 6d 65  20 69 6d 61 67 65 3d 3e  |31.<Name image=>|
000ba350  46 53 45 6e 74 72 79 5f  66 75 6e 63 33 31 3e 0a  |FSEntry_func31>.|
000ba360  33 32 09 3c 53 74 61 6d  70 20 69 6d 61 67 65 3d  |32.<Stamp image=|
000ba370  3e 46 53 45 6e 74 72 79  5f 66 75 6e 63 33 32 3e  |>FSEntry_func32>|
000ba380  0a 33 33 09 3c 47 65 74  20 75 73 61 67 65 20 6f  |.33.<Get usage o|
000ba390  66 20 6f 66 66 73 65 74  3d 3e 46 53 45 6e 74 72  |f offset=>FSEntr|
000ba3a0  79 5f 66 75 6e 63 33 33  3e 0a 33 34 09 3c 4e 6f  |y_func33>.34.<No|
000ba3b0  74 69 66 69 63 61 74 69  6f 6e 20 6f 66 20 63 68  |tification of ch|
000ba3c0  61 6e 67 65 64 20 64 69  72 65 63 74 6f 72 79 3d  |anged directory=|
000ba3d0  3e 46 53 45 6e 74 72 79  5f 66 75 6e 63 33 34 3e  |>FSEntry_func34>|
000ba3e0  0a 00 00 00 44 41 54 41  54 01 00 00 46 53 45 6e  |....DATAT...FSEn|
000ba3f0  74 72 79 5f 46 75 6e 63  20 38 0a 23 50 61 72 65  |try_Func 8.#Pare|
000ba400  6e 74 20 46 53 45 6e 74  72 79 5f 46 75 6e 63 0a  |nt FSEntry_Func.|
000ba410  3d 3e 09 52 30 20 3d 09  38 20 28 52 65 6e 61 6d  |=>.R0 =.8 (Renam|
000ba420  65 20 6f 62 6a 65 63 74  29 0a 09 52 31 20 3d 09  |e object)..R1 =.|
000ba430  70 6f 69 6e 74 65 72 20  74 6f 20 6f 72 69 67 69  |pointer to origi|
000ba440  6e 61 6c 20 66 69 6c 65  6e 61 6d 65 0a 09 52 32  |nal filename..R2|
000ba450  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 6e 65  | =.pointer to ne|
000ba460  77 20 66 69 6c 65 6e 61  6d 65 0a 09 52 36 20 3d  |w filename..R6 =|
000ba470  09 70 6f 69 6e 74 65 72  20 74 6f 20 66 69 72 73  |.pointer to firs|
000ba480  74 20 73 70 65 63 69 61  6c 20 66 69 65 6c 64 2c  |t special field,|
000ba490  20 6f 72 20 30 20 69 66  20 6e 6f 74 20 70 72 65  | or 0 if not pre|
000ba4a0  73 65 6e 74 0a 09 52 37  20 3d 09 70 6f 69 6e 74  |sent..R7 =.point|
000ba4b0  65 72 20 74 6f 20 73 65  63 6f 6e 64 20 73 70 65  |er to second spe|
000ba4c0  63 69 61 6c 20 66 69 65  6c 64 2c 20 6f 72 20 30  |cial field, or 0|
000ba4d0  20 69 66 20 6e 6f 74 20  70 72 65 73 65 6e 74 0a  | if not present.|
000ba4e0  3c 3d 09 52 31 20 3d 09  30 20 69 66 20 72 65 6e  |<=.R1 =.0 if ren|
000ba4f0  61 6d 65 64 2c 20 61 6e  79 20 6f 74 68 65 72 20  |amed, any other |
000ba500  76 61 6c 75 65 20 6f 74  68 65 72 77 69 73 65 0a  |value otherwise.|
000ba510  0a 54 68 69 73 20 63 61  6c 6c 20 69 73 20 6d 61  |.This call is ma|
000ba520  64 65 20 74 6f 20 72 65  6e 61 6d 65 20 61 6e 20  |de to rename an |
000ba530  6f 62 6a 65 63 74 2e 0a  44 41 54 41 18 02 00 00  |object..DATA....|
000ba540  46 53 45 6e 74 72 79 5f  46 75 6e 63 20 30 0a 23  |FSEntry_Func 0.#|
000ba550  50 61 72 65 6e 74 20 46  53 45 6e 74 72 79 5f 46  |Parent FSEntry_F|
000ba560  75 6e 63 0a 3d 3e 09 52  30 20 3d 09 30 20 28 53  |unc.=>.R0 =.0 (S|
000ba570  65 74 20 63 75 72 72 65  6e 74 20 64 69 72 65 63  |et current direc|
000ba580  74 6f 72 79 29 0a 09 52  31 20 3d 09 70 6f 69 6e  |tory)..R1 =.poin|
000ba590  74 65 72 20 74 6f 20 28  77 69 6c 63 61 72 64 65  |ter to (wilcarde|
000ba5a0  64 29 20 64 69 72 65 63  74 6f 72 79 20 6e 61 6d  |d) directory nam|
000ba5b0  65 0a 09 52 36 20 3d 09  70 6f 69 6e 74 65 72 20  |e..R6 =.pointer |
000ba5c0  74 6f 20 73 70 65 63 69  61 6c 20 66 69 65 6c 64  |to special field|
000ba5d0  2c 20 6f 72 20 30 20 69  66 20 6e 6f 74 20 70 72  |, or 0 if not pr|
000ba5e0  65 73 65 6e 74 0a 0a 54  68 69 73 20 63 61 6c 6c  |esent..This call|
000ba5f0  20 69 73 20 6f 6e 6c 79  20 6d 61 64 65 20 62 79  | is only made by|
000ba600  20 52 49 53 43 20 4f 53  20 32 20 28 6f 72 20 74  | RISC OS 2 (or t|
000ba610  6f 20 70 65 72 66 6f 72  6d 20 7b 66 43 6f 64 65  |o perform {fCode|
000ba620  7d 2a 4f 70 74 20 31 7b  66 7d 20 77 68 65 6e 20  |}*Opt 1{f} when |
000ba630  62 69 74 20 32 33 20 6f  66 20 74 68 65 20 66 69  |bit 23 of the fi|
000ba640  6c 69 6e 67 20 73 79 73  74 65 6d 20 3c 69 6e 66  |ling system <inf|
000ba650  6f 72 6d 61 74 69 6f 6e  20 77 6f 72 64 3d 3e 66  |ormation word=>f|
000ba660  73 79 73 5f 69 6e 66 6f  77 6f 72 64 3e 20 69 73  |sys_infoword> is|
000ba670  20 63 6c 65 61 72 2e 20  4e 6f 74 20 74 68 61 74  | clear. Not that|
000ba680  20 74 68 65 20 50 52 4d  20 73 61 79 73 20 68 6f  | the PRM says ho|
000ba690  77 29 2e 20 49 66 20 74  68 65 20 64 69 72 65 63  |w). If the direc|
000ba6a0  74 6f 72 79 20 6e 61 6d  65 20 69 73 20 6e 75 6c  |tory name is nul|
000ba6b0  6c 20 79 6f 75 20 73 68  6f 75 6c 64 20 73 65 74  |l you should set|
000ba6c0  20 74 68 65 20 63 75 72  72 65 6e 74 20 64 69 72  | the current dir|
000ba6d0  65 63 74 6f 72 79 20 74  6f 20 74 68 65 20 75 73  |ectory to the us|
000ba6e0  65 72 20 72 6f 6f 74 20  64 69 72 65 63 74 6f 72  |er root director|
000ba6f0  79 2e 20 54 68 69 73 20  63 61 6c 6c 20 73 68 6f  |y. This call sho|
000ba700  75 6c 64 20 6e 6f 74 20  6d 61 6b 65 20 74 68 65  |uld not make the|
000ba710  20 46 53 20 63 75 72 72  65 6e 74 20 2d 20 79 6f  | FS current - yo|
000ba720  75 20 73 68 6f 75 6c 64  20 70 72 6f 76 69 64 65  |u should provide|
000ba730  20 61 20 73 65 70 61 72  61 74 65 20 63 6f 6d 6d  | a separate comm|
000ba740  61 6e 64 20 74 6f 20 64  6f 20 74 68 69 73 2e 0a  |and to do this..|
000ba750  44 41 54 41 90 01 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000ba760  46 75 6e 63 20 31 0a 23  50 61 72 65 6e 74 20 46  |Func 1.#Parent F|
000ba770  53 45 6e 74 72 79 5f 46  75 6e 63 0a 3d 3e 09 52  |SEntry_Func.=>.R|
000ba780  30 20 3d 09 31 20 28 53  65 74 20 6c 69 62 72 61  |0 =.1 (Set libra|
000ba790  72 79 20 64 69 72 65 63  74 6f 72 79 29 0a 09 52  |ry directory)..R|
000ba7a0  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 28  |1 =.pointer to (|
000ba7b0  77 69 6c 63 61 72 64 65  64 29 20 64 69 72 65 63  |wilcarded) direc|
000ba7c0  74 6f 72 79 20 6e 61 6d  65 0a 09 52 36 20 3d 09  |tory name..R6 =.|
000ba7d0  70 6f 69 6e 74 65 72 20  74 6f 20 73 70 65 63 69  |pointer to speci|
000ba7e0  61 6c 20 66 69 65 6c 64  2c 20 6f 72 20 30 20 69  |al field, or 0 i|
000ba7f0  66 20 6e 6f 74 20 70 72  65 73 65 6e 74 0a 0a 54  |f not present..T|
000ba800  68 69 73 20 63 61 6c 6c  20 69 73 20 6f 6e 6c 79  |his call is only|
000ba810  20 6d 61 64 65 20 62 79  20 52 49 53 43 20 4f 53  | made by RISC OS|
000ba820  20 32 2e 20 49 66 20 74  68 65 20 64 69 72 65 63  | 2. If the direc|
000ba830  74 6f 72 79 20 6e 61 6d  65 20 69 73 20 6e 75 6c  |tory name is nul|
000ba840  6c 20 79 6f 75 20 73 68  6f 75 6c 64 20 73 65 74  |l you should set|
000ba850  20 74 68 65 20 6c 69 62  72 61 72 79 20 64 69 72  | the library dir|
000ba860  65 63 74 6f 72 79 20 74  6f 20 61 20 66 69 6c 69  |ectory to a fili|
000ba870  6e 67 20 73 79 73 74 65  6d 20 64 65 66 61 75 6c  |ng system defaul|
000ba880  74 2e 20 54 68 69 73 20  63 61 6c 6c 20 73 68 6f  |t. This call sho|
000ba890  75 6c 64 20 6e 6f 74 20  6d 61 6b 65 20 74 68 65  |uld not make the|
000ba8a0  20 46 53 20 63 75 72 72  65 6e 74 20 2d 20 79 6f  | FS current - yo|
000ba8b0  75 20 73 68 6f 75 6c 64  20 70 72 6f 76 69 64 65  |u should provide|
000ba8c0  20 61 20 73 65 70 61 72  61 74 65 20 63 6f 6d 6d  | a separate comm|
000ba8d0  61 6e 64 20 74 6f 20 64  6f 20 74 68 69 73 2e 0a  |and to do this..|
000ba8e0  44 41 54 41 aa 00 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000ba8f0  46 75 6e 63 20 31 30 0a  23 50 61 72 65 6e 74 20  |Func 10.#Parent |
000ba900  46 53 45 6e 74 72 79 5f  46 75 6e 63 0a 3d 3e 09  |FSEntry_Func.=>.|
000ba910  52 30 20 3d 09 31 30 20  28 42 6f 6f 74 20 66 72  |R0 =.10 (Boot fr|
000ba920  6f 6d 20 66 69 6c 69 6e  67 20 73 79 73 74 65 6d  |om filing system|
000ba930  29 0a 0a 3c 3d 09 6d 61  79 20 6e 6f 74 20 72 65  |)..<=.may not re|
000ba940  74 75 72 6e 20 69 66 20  69 74 20 72 75 6e 73 20  |turn if it runs |
000ba950  61 6e 20 61 70 70 6c 69  63 61 74 69 6f 6e 0a 0a  |an application..|
000ba960  54 68 69 73 20 63 61 6c  6c 20 73 68 6f 75 6c 64  |This call should|
000ba970  20 62 6f 6f 74 20 79 6f  75 72 20 66 69 6c 69 6e  | boot your filin|
000ba980  67 20 73 79 73 74 65 6d  2e 0a 00 00 44 41 54 41  |g system....DATA|
000ba990  ba 03 00 00 46 53 45 6e  74 72 79 5f 46 75 6e 63  |....FSEntry_Func|
000ba9a0  20 31 31 0a 23 50 61 72  65 6e 74 20 46 53 45 6e  | 11.#Parent FSEn|
000ba9b0  74 72 79 5f 46 75 6e 63  0a 3d 3e 09 52 30 20 3d  |try_Func.=>.R0 =|
000ba9c0  09 31 31 20 28 52 65 61  64 20 6e 61 6d 65 20 61  |.11 (Read name a|
000ba9d0  6e 64 20 62 6f 6f 74 20  6f 70 74 69 6f 6e 29 0a  |nd boot option).|
000ba9e0  09 52 32 20 3d 09 62 75  66 66 65 72 20 74 6f 20  |.R2 =.buffer to |
000ba9f0  77 72 69 74 65 20 64 61  74 61 20 74 6f 0a 09 52  |write data to..R|
000baa00  36 20 3d 09 30 2c 20 61  73 20 73 70 65 63 69 61  |6 =.0, as specia|
000baa10  6c 20 66 69 65 6c 64 20  6e 6f 74 20 61 6c 6c 6f  |l field not allo|
000baa20  77 65 64 20 68 65 72 65  0a 0a 54 68 69 73 20 63  |wed here..This c|
000baa30  61 6c 6c 20 73 68 6f 75  6c 64 20 72 65 74 75 72  |all should retur|
000baa40  6e 20 74 68 65 20 64 69  73 63 20 6e 61 6d 65 20  |n the disc name |
000baa50  66 6f 72 20 74 68 65 20  64 69 73 63 20 63 6f 6e  |for the disc con|
000baa60  74 61 69 6e 69 6e 67 20  74 68 65 20 66 69 6c 69  |taining the fili|
000baa70  6e 67 20 73 79 73 74 65  6d 73 20 43 53 44 2c 20  |ng systems CSD, |
000baa80  61 6e 64 20 69 74 73 20  62 6f 6f 74 20 6f 70 74  |and its boot opt|
000baa90  69 6f 6e 2e 20 54 68 65  20 64 61 74 61 20 69 73  |ion. The data is|
000baaa0  20 74 6f 20 62 65 20 77  72 69 74 74 65 6e 20 3c  | to be written <|
000baab0  69 6e 20 74 68 69 73 20  66 6f 72 6d 61 74 3d 3e  |in this format=>|
000baac0  2e 66 6f 72 6d 61 74 3e  2e 0a 0a 42 65 77 61 72  |.format>...Bewar|
000baad0  65 20 2d 20 74 68 65 20  62 75 66 66 65 72 20 70  |e - the buffer p|
000baae0  6f 69 6e 74 65 64 20 74  6f 20 77 69 6c 6c 20 6e  |ointed to will n|
000baaf0  6f 74 20 68 61 76 65 20  62 65 65 6e 20 76 61 6c  |ot have been val|
000bab00  69 64 61 74 65 64 20 77  69 74 68 20 3c 4f 53 5f  |idated with <OS_|
000bab10  56 61 6c 69 64 61 74 65  41 64 64 72 65 73 73 3e  |ValidateAddress>|
000bab20  20 28 61 73 20 46 69 6c  65 53 77 69 74 63 68 20  | (as FileSwitch |
000bab30  64 6f 65 73 20 6e 6f 74  20 6b 6e 6f 77 20 68 6f  |does not know ho|
000bab40  77 20 62 69 67 20 69 74  20 73 68 6f 75 6c 64 20  |w big it should |
000bab50  62 65 29 20 2d 20 79 6f  75 20 73 68 6f 75 6c 64  |be) - you should|
000bab60  20 62 65 20 70 72 65 70  61 72 61 65 64 20 74 6f  | be preparaed to|
000bab70  20 63 6f 70 65 20 77 69  74 68 20 66 61 75 6c 74  | cope with fault|
000bab80  69 6e 67 20 69 66 20 77  72 69 74 69 6e 67 20 74  |ing if writing t|
000bab90  6f 20 69 6e 76 61 6c 69  64 20 6d 65 6d 6f 72 79  |o invalid memory|
000baba0  2e 20 49 66 20 74 68 65  20 6d 65 6d 6f 72 79 20  |. If the memory |
000babb0  69 73 20 69 6e 76 61 6c  69 64 20 79 6f 75 20 73  |is invalid you s|
000babc0  68 6f 75 6c 64 20 6c 6f  6f 6b 20 75 70 20 74 68  |hould look up th|
000babd0  65 20 65 72 72 6f 72 20  74 6f 6b 65 6e 20 27 42  |e error token 'B|
000babe0  61 64 57 72 74 27 2e 0a  0a 49 74 20 69 73 20 75  |adWrt'...It is u|
000babf0  6e 63 6c 65 61 72 20 68  6f 77 20 74 68 65 20 63  |nclear how the c|
000bac00  61 6c 6c 69 6e 67 20 70  72 6f 67 72 61 6d 20 69  |alling program i|
000bac10  73 20 74 6f 20 66 69 6e  64 20 6f 75 74 20 68 6f  |s to find out ho|
000bac20  77 20 6c 6f 6e 67 20 74  68 65 20 62 75 66 66 65  |w long the buffe|
000bac30  72 20 73 68 6f 75 6c 64  20 62 65 2c 20 73 68 6f  |r should be, sho|
000bac40  72 74 20 6f 66 20 65 6e  73 75 72 69 6e 67 20 74  |rt of ensuring t|
000bac50  68 61 74 20 69 74 20 69  73 20 61 74 20 74 68 65  |hat it is at the|
000bac60  20 74 6f 70 20 6f 66 20  6d 65 6d 6f 72 79 20 73  | top of memory s|
000bac70  6f 20 74 68 61 74 20 6f  76 65 72 72 75 6e 73 20  |o that overruns |
000bac80  77 69 6c 6c 20 63 61 75  73 65 20 6d 65 6d 6f 72  |will cause memor|
000bac90  79 20 65 72 72 6f 72 73  2e 0a 23 73 75 62 70 61  |y errors..#subpa|
000baca0  67 65 20 66 6f 72 6d 61  74 0a 46 53 45 6e 74 72  |ge format.FSEntr|
000bacb0  79 5f 46 75 6e 63 20 31  31 20 62 75 66 66 65 72  |y_Func 11 buffer|
000bacc0  20 66 6f 72 6d 61 74 0a  23 57 72 61 70 20 6f 66  | format.#Wrap of|
000bacd0  66 0a 53 69 7a 65 09 56  61 6c 75 65 09 09 09 56  |f.Size.Value...V|
000bace0  61 6c 75 65 20 69 66 20  43 53 44 20 75 6e 73 65  |alue if CSD unse|
000bacf0  74 0a 23 57 72 61 70 0a  23 4c 69 6e 65 0a 31 09  |t.#Wrap.#Line.1.|
000bad00  6e 61 6d 65 20 6c 65 6e  67 74 68 20 62 79 74 65  |name length byte|
000bad10  09 35 0a 2f 6e 2f 09 6e  61 6d 65 20 28 6e 6f 74  |.5./n/.name (not|
000bad20  20 74 65 72 6d 69 6e 61  74 65 64 29 09 22 55 6e  | terminated)."Un|
000bad30  73 65 74 22 0a 31 09 62  6f 6f 74 20 6f 70 74 69  |set".1.boot opti|
000bad40  6f 6e 09 09 30 0a 00 00  44 41 54 41 7a 04 00 00  |on..0...DATAz...|
000bad50  46 53 45 6e 74 72 79 5f  46 75 6e 63 20 31 32 20  |FSEntry_Func 12 |
000bad60  2f 20 31 33 0a 23 50 61  72 65 6e 74 20 46 53 45  |/ 13.#Parent FSE|
000bad70  6e 74 72 79 5f 46 75 6e  63 0a 3d 3e 09 52 30 20  |ntry_Func.=>.R0 |
000bad80  3d 09 31 32 20 28 52 65  61 64 20 43 53 44 20 61  |=.12 (Read CSD a|
000bad90  6e 64 20 70 72 69 76 69  6c 65 64 67 65 20 62 79  |nd priviledge by|
000bada0  74 65 29 0a 09 20 09 31  33 20 28 52 65 61 64 20  |te).. .13 (Read |
000badb0  6c 69 62 72 61 72 79 20  61 6e 64 20 70 72 69 76  |library and priv|
000badc0  69 6c 65 64 67 65 20 62  79 74 65 29 0a 09 52 32  |iledge byte)..R2|
000badd0  20 3d 09 62 75 66 66 65  72 20 74 6f 20 77 72 69  | =.buffer to wri|
000bade0  74 65 20 64 61 74 61 20  74 6f 0a 09 52 36 20 3d  |te data to..R6 =|
000badf0  09 30 2c 20 61 73 20 73  70 65 63 69 61 6c 20 66  |.0, as special f|
000bae00  69 65 6c 64 20 6e 6f 74  20 61 6c 6c 6f 77 65 64  |ield not allowed|
000bae10  20 68 65 72 65 0a 0a 54  68 69 73 20 63 61 6c 6c  | here..This call|
000bae20  20 73 68 6f 75 6c 64 20  72 65 74 75 72 6e 20 74  | should return t|
000bae30  68 65 20 63 75 72 72 65  6e 74 20 64 69 72 65 63  |he current direc|
000bae40  74 6f 72 79 20 6e 61 6d  65 20 61 6e 64 20 70 72  |tory name and pr|
000bae50  69 76 69 6c 65 67 65 20  62 79 74 65 20 3c 69 6e  |ivilege byte <in|
000bae60  20 74 68 69 73 20 66 6f  72 6d 61 74 3d 3e 2e 66  | this format=>.f|
000bae70  6f 72 6d 61 74 3e 20 2d  20 69 74 20 69 73 20 6f  |ormat> - it is o|
000bae80  6e 6c 79 20 63 61 6c 6c  65 64 20 62 79 20 52 49  |nly called by RI|
000bae90  53 43 20 4f 53 20 32 0a  0a 42 65 77 61 72 65 20  |SC OS 2..Beware |
000baea0  2d 20 74 68 65 20 62 75  66 66 65 72 20 70 6f 69  |- the buffer poi|
000baeb0  6e 74 65 64 20 74 6f 20  77 69 6c 6c 20 6e 6f 74  |nted to will not|
000baec0  20 68 61 76 65 20 62 65  65 6e 20 76 61 6c 69 64  | have been valid|
000baed0  61 74 65 64 20 77 69 74  68 20 3c 4f 53 5f 56 61  |ated with <OS_Va|
000baee0  6c 69 64 61 74 65 41 64  64 72 65 73 73 3e 20 28  |lidateAddress> (|
000baef0  61 73 20 46 69 6c 65 53  77 69 74 63 68 20 64 6f  |as FileSwitch do|
000baf00  65 73 20 6e 6f 74 20 6b  6e 6f 77 20 68 6f 77 20  |es not know how |
000baf10  62 69 67 20 69 74 20 73  68 6f 75 6c 64 20 62 65  |big it should be|
000baf20  29 20 2d 20 79 6f 75 20  73 68 6f 75 6c 64 20 62  |) - you should b|
000baf30  65 20 70 72 65 70 61 72  61 65 64 20 74 6f 20 63  |e preparaed to c|
000baf40  6f 70 65 20 77 69 74 68  20 66 61 75 6c 74 69 6e  |ope with faultin|
000baf50  67 20 69 66 20 77 72 69  74 69 6e 67 20 74 6f 20  |g if writing to |
000baf60  69 6e 76 61 6c 69 64 20  6d 65 6d 6f 72 79 2e 20  |invalid memory. |
000baf70  49 66 20 74 68 65 20 6d  65 6d 6f 72 79 20 69 73  |If the memory is|
000baf80  20 69 6e 76 61 6c 69 64  20 79 6f 75 20 73 68 6f  | invalid you sho|
000baf90  75 6c 64 20 6c 6f 6f 6b  20 75 70 20 74 68 65 20  |uld look up the |
000bafa0  65 72 72 6f 72 20 74 6f  6b 65 6e 20 27 42 61 64  |error token 'Bad|
000bafb0  57 72 74 27 2e 0a 0a 49  74 20 69 73 20 75 6e 63  |Wrt'...It is unc|
000bafc0  6c 65 61 72 20 68 6f 77  20 74 68 65 20 63 61 6c  |lear how the cal|
000bafd0  6c 69 6e 67 20 70 72 6f  67 72 61 6d 20 69 73 20  |ling program is |
000bafe0  74 6f 20 66 69 6e 64 20  6f 75 74 20 68 6f 77 20  |to find out how |
000baff0  6c 6f 6e 67 20 74 68 65  20 62 75 66 66 65 72 20  |long the buffer |
000bb000  73 68 6f 75 6c 64 20 62  65 2c 20 73 68 6f 72 74  |should be, short|
000bb010  20 6f 66 20 65 6e 73 75  72 69 6e 67 20 74 68 61  | of ensuring tha|
000bb020  74 20 69 74 20 69 73 20  61 74 20 74 68 65 20 74  |t it is at the t|
000bb030  6f 70 20 6f 66 20 6d 65  6d 6f 72 79 20 73 6f 20  |op of memory so |
000bb040  74 68 61 74 20 6f 76 65  72 72 75 6e 73 20 77 69  |that overruns wi|
000bb050  6c 6c 20 63 61 75 73 65  20 6d 65 6d 6f 72 79 20  |ll cause memory |
000bb060  65 72 72 6f 72 73 2e 0a  23 73 75 62 70 61 67 65  |errors..#subpage|
000bb070  20 66 6f 72 6d 61 74 0a  46 53 45 6e 74 72 79 5f  | format.FSEntry_|
000bb080  46 75 6e 63 20 31 32 20  2f 20 31 33 20 62 75 66  |Func 12 / 13 buf|
000bb090  66 65 72 20 66 6f 72 6d  61 74 0a 23 57 72 61 70  |fer format.#Wrap|
000bb0a0  20 6f 66 66 0a 53 69 7a  65 09 56 61 6c 75 65 09  | off.Size.Value.|
000bb0b0  09 09 56 61 6c 75 65 20  69 66 20 43 53 44 20 2f  |..Value if CSD /|
000bb0c0  20 4c 69 62 72 61 72 79  20 75 6e 73 65 74 0a 23  | Library unset.#|
000bb0d0  57 72 61 70 0a 23 4c 69  6e 65 0a 31 09 30 09 09  |Wrap.#Line.1.0..|
000bb0e0  09 30 0a 31 09 6e 61 6d  65 20 6c 65 6e 67 74 68  |.0.1.name length|
000bb0f0  20 62 79 74 65 09 35 0a  2f 6e 2f 09 6e 61 6d 65  | byte.5./n/.name|
000bb100  20 28 6e 6f 74 20 74 65  72 6d 69 6e 61 74 65 64  | (not terminated|
000bb110  29 09 22 55 6e 73 65 74  22 0a 31 09 70 72 69 76  |)."Unset".1.priv|
000bb120  69 6c 65 67 65 20 62 79  74 65 09 09 30 0a 0a 23  |ilege byte..0..#|
000bb130  74 61 62 0a 54 68 65 20  70 72 69 76 69 6c 65 67  |tab.The privileg|
000bb140  65 20 62 79 74 65 20 69  73 3a 0a 30 09 69 66 20  |e byte is:.0.if |
000bb150  79 6f 75 20 6f 77 6e 20  74 68 65 20 64 69 72 65  |you own the dire|
000bb160  63 74 6f 72 79 20 28 61  6e 64 20 68 65 6e 63 65  |ctory (and hence|
000bb170  20 6d 61 79 20 63 72 65  61 74 65 20 6f 62 6a 65  | may create obje|
000bb180  63 74 73 20 69 6e 20 69  74 29 0a 32 35 35 09 79  |cts in it).255.y|
000bb190  6f 75 20 64 6f 20 6e 6f  74 20 6f 77 6e 20 74 68  |ou do not own th|
000bb1a0  65 20 64 69 72 65 63 74  6f 72 79 20 28 74 6f 20  |e directory (to |
000bb1b0  79 6f 75 20 69 74 20 69  73 20 70 75 62 6c 69 63  |you it is public|
000bb1c0  29 0a 00 00 44 41 54 41  0d 04 00 00 46 53 45 6e  |)...DATA....FSEn|
000bb1d0  74 72 79 5f 46 75 6e 63  20 31 34 0a 23 50 61 72  |try_Func 14.#Par|
000bb1e0  65 6e 74 20 46 53 45 6e  74 72 79 5f 46 75 6e 63  |ent FSEntry_Func|
000bb1f0  0a 3d 3e 09 52 30 20 3d  09 31 34 20 28 52 65 61  |.=>.R0 =.14 (Rea|
000bb200  64 20 64 69 72 65 63 74  6f 72 79 20 65 6e 74 72  |d directory entr|
000bb210  69 65 73 29 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |ies)..R1 =.point|
000bb220  65 72 20 74 6f 20 28 77  69 6c 63 61 72 64 65 64  |er to (wilcarded|
000bb230  29 20 64 69 72 65 63 74  6f 72 79 20 6e 61 6d 65  |) directory name|
000bb240  0a 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R2 =.pointer t|
000bb250  6f 20 62 75 66 66 65 72  0a 09 52 33 20 3d 09 6e  |o buffer..R3 =.n|
000bb260  75 6d 62 65 72 20 6f 66  20 6f 62 6a 65 63 74 73  |umber of objects|
000bb270  20 74 6f 20 72 65 61 64  0a 09 52 34 20 3d 09 77  | to read..R4 =.w|
000bb280  68 65 72 65 20 74 6f 20  73 74 61 72 74 2c 20 30  |here to start, 0|
000bb290  20 66 6f 72 20 66 69 72  73 74 20 74 69 6d 65 0a  | for first time.|
000bb2a0  09 52 35 20 3d 09 6c 65  6e 67 74 68 20 6f 66 20  |.R5 =.length of |
000bb2b0  62 75 66 66 65 72 0a 09  52 36 20 3d 09 70 6f 69  |buffer..R6 =.poi|
000bb2c0  6e 74 65 72 20 74 6f 20  73 70 65 63 69 61 6c 20  |nter to special |
000bb2d0  66 69 65 6c 64 2c 20 6f  72 20 30 20 69 66 20 6e  |field, or 0 if n|
000bb2e0  6f 74 20 70 72 65 73 65  6e 74 0a 0a 3c 3d 09 52  |ot present..<=.R|
000bb2f0  33 20 3d 09 6e 75 6d 62  65 72 20 6f 66 20 6f 62  |3 =.number of ob|
000bb300  6a 65 63 74 73 20 72 65  61 64 0a 09 52 34 20 3d  |jects read..R4 =|
000bb310  09 77 68 65 72 65 20 74  6f 20 63 6f 6e 74 69 6e  |.where to contin|
000bb320  75 65 2c 20 6f 72 20 2d  31 20 66 6f 72 20 6e 6f  |ue, or -1 for no|
000bb330  20 6d 6f 72 65 0a 0a 54  68 69 73 20 63 61 6c 6c  | more..This call|
000bb340  20 73 68 6f 75 6c 64 20  66 69 6c 6c 20 74 68 65  | should fill the|
000bb350  20 62 75 66 66 65 72 20  69 6e 20 52 32 20 77 69  | buffer in R2 wi|
000bb360  74 68 20 6e 75 6c 6c 20  74 65 72 6d 69 6e 61 74  |th null terminat|
000bb370  65 64 20 6c 65 61 66 20  6e 61 6d 65 73 20 6f 66  |ed leaf names of|
000bb380  20 65 6e 74 72 69 65 73  20 69 6e 20 74 68 65 20  | entries in the |
000bb390  73 70 65 63 69 66 69 65  64 20 64 69 72 65 63 74  |specified direct|
000bb3a0  6f 72 79 2c 20 6f 72 20  74 68 65 20 63 75 72 72  |ory, or the curr|
000bb3b0  65 6e 74 20 64 69 72 65  63 74 6f 72 79 20 69 66  |ent directory if|
000bb3c0  20 74 68 65 20 6e 61 6d  65 20 69 73 20 6e 75 6c  | the name is nul|
000bb3d0  6c 2e 20 54 68 65 20 6c  65 6e 67 74 68 20 6f 66  |l. The length of|
000bb3e0  20 74 68 65 20 62 75 66  66 65 72 20 76 61 6c 69  | the buffer vali|
000bb3f0  64 61 74 65 64 20 64 65  70 65 6e 64 73 20 6f 6e  |dated depends on|
000bb400  20 77 68 69 63 68 20 4f  53 5f 47 42 50 42 20 53  | which OS_GBPB S|
000bb410  57 49 20 63 61 75 73 65  73 20 74 68 69 73 20 63  |WI causes this c|
000bb420  61 6c 6c 3a 0a 0a 23 54  61 62 0a 3c 4f 53 5f 47  |all:..#Tab.<OS_G|
000bb430  42 50 42 20 38 3d 3e 4f  53 5f 47 42 50 42 38 3e  |BPB 8=>OS_GBPB8>|
000bb440  09 31 31 20 2a 20 52 33  20 62 79 74 65 73 0a 3c  |.11 * R3 bytes.<|
000bb450  4f 53 5f 47 42 50 42 20  39 3d 3e 4f 53 5f 47 42  |OS_GBPB 9=>OS_GB|
000bb460  50 42 39 3e 09 52 35 20  62 79 74 65 73 0a 0a 61  |PB9>.R5 bytes..a|
000bb470  6e 64 20 74 68 65 72 65  20 69 73 20 6e 6f 20 77  |nd there is no w|
000bb480  61 79 20 74 6f 20 74 65  6c 6c 20 77 68 69 63 68  |ay to tell which|
000bb490  20 69 73 20 74 68 65 20  63 61 73 65 2e 20 3a 2d  | is the case. :-|
000bb4a0  28 0a 0a 4f 6e 6c 79 20  63 6f 75 6e 74 20 6c 65  |(..Only count le|
000bb4b0  61 66 20 6e 61 6d 65 73  20 74 68 61 74 20 66 69  |af names that fi|
000bb4c0  74 20 63 6f 6d 70 6c 65  74 65 6c 79 20 69 6e 74  |t completely int|
000bb4d0  6f 20 74 68 65 20 62 75  66 66 65 72 2e 20 52 65  |o the buffer. Re|
000bb4e0  74 75 72 6e 20 61 6e 20  65 72 72 6f 72 20 69 66  |turn an error if|
000bb4f0  20 74 68 65 20 63 61 74  61 6c 6f 67 65 64 20 6f  | the cataloged o|
000bb500  62 6a 65 63 74 20 69 73  20 6e 6f 74 20 66 6f 75  |bject is not fou|
000bb510  6e 64 20 6f 72 20 61 20  66 69 6c 65 2c 20 62 75  |nd or a file, bu|
000bb520  74 20 72 65 74 75 72 6e  20 76 61 6c 69 64 20 77  |t return valid w|
000bb530  69 74 68 20 52 33 3d 30  2c 20 52 34 5c 3c 3e 31  |ith R3=0, R4\<>1|
000bb540  20 66 6f 72 20 62 75 66  66 65 72 20 6f 76 65 72  | for buffer over|
000bb550  66 6c 6f 77 20 6f 72 20  6d 6f 72 65 20 6e 61 6d  |flow or more nam|
000bb560  65 73 20 74 6f 20 72 65  61 64 2c 20 52 33 3d 30  |es to read, R3=0|
000bb570  2c 52 34 3d 2d 31 20 69  66 20 74 68 65 20 70 72  |,R4=-1 if the pr|
000bb580  65 76 69 6f 75 73 20 63  61 6c 6c 20 64 69 64 6e  |evious call didn|
000bb590  27 74 20 64 65 74 65 63  74 20 74 68 65 20 65 6e  |'t detect the en|
000bb5a0  64 20 62 75 74 20 79 6f  75 20 6e 6f 77 20 66 69  |d but you now fi|
000bb5b0  6e 64 20 74 68 61 74 20  74 68 65 72 65 20 61 72  |nd that there ar|
000bb5c0  65 20 6e 6f 20 6d 6f 72  65 20 6e 61 6d 65 73 2e  |e no more names.|
000bb5d0  0a 00 00 00 44 41 54 41  14 03 00 00 46 53 45 6e  |....DATA....FSEn|
000bb5e0  74 72 79 5f 46 75 6e 63  20 31 35 0a 23 50 61 72  |try_Func 15.#Par|
000bb5f0  65 6e 74 20 46 53 45 6e  74 72 79 5f 46 75 6e 63  |ent FSEntry_Func|
000bb600  0a 3d 3e 09 52 30 20 3d  09 31 35 20 28 52 65 61  |.=>.R0 =.15 (Rea|
000bb610  64 20 64 69 72 65 63 74  6f 72 79 20 65 6e 74 72  |d directory entr|
000bb620  69 65 73 20 61 6e 64 20  69 6e 66 6f 72 6d 61 74  |ies and informat|
000bb630  69 6f 6e 29 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |ion)..R1 =.point|
000bb640  65 72 20 74 6f 20 28 77  69 6c 63 61 72 64 65 64  |er to (wilcarded|
000bb650  29 20 64 69 72 65 63 74  6f 72 79 20 6e 61 6d 65  |) directory name|
000bb660  0a 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |..R2 =.pointer t|
000bb670  6f 20 62 75 66 66 65 72  0a 09 52 33 20 3d 09 6e  |o buffer..R3 =.n|
000bb680  75 6d 62 65 72 20 6f 66  20 6f 62 6a 65 63 74 73  |umber of objects|
000bb690  20 74 6f 20 72 65 61 64  0a 09 52 34 20 3d 09 77  | to read..R4 =.w|
000bb6a0  68 65 72 65 20 74 6f 20  73 74 61 72 74 2c 20 30  |here to start, 0|
000bb6b0  20 66 6f 72 20 66 69 72  73 74 20 74 69 6d 65 0a  | for first time.|
000bb6c0  09 52 35 20 3d 09 6c 65  6e 67 74 68 20 6f 66 20  |.R5 =.length of |
000bb6d0  62 75 66 66 65 72 0a 09  52 36 20 3d 09 70 6f 69  |buffer..R6 =.poi|
000bb6e0  6e 74 65 72 20 74 6f 20  73 70 65 63 69 61 6c 20  |nter to special |
000bb6f0  66 69 65 6c 64 2c 20 6f  72 20 30 20 69 66 20 6e  |field, or 0 if n|
000bb700  6f 74 20 70 72 65 73 65  6e 74 0a 0a 3c 3d 09 52  |ot present..<=.R|
000bb710  33 20 3d 09 6e 75 6d 62  65 72 20 6f 66 20 6f 62  |3 =.number of ob|
000bb720  6a 65 63 74 73 20 72 65  61 64 0a 09 52 34 20 3d  |jects read..R4 =|
000bb730  09 77 68 65 72 65 20 74  6f 20 63 6f 6e 74 69 6e  |.where to contin|
000bb740  75 65 2c 20 6f 72 20 2d  31 20 66 6f 72 20 6e 6f  |ue, or -1 for no|
000bb750  20 6d 6f 72 65 0a 0a 54  68 69 73 20 63 61 6c 6c  | more..This call|
000bb760  20 73 68 6f 75 6c 64 20  66 69 6c 6c 20 74 68 65  | should fill the|
000bb770  20 62 75 66 66 65 72 20  69 6e 20 52 32 20 77 69  | buffer in R2 wi|
000bb780  74 68 20 65 6e 74 72 69  65 73 20 69 6e 20 3c 4f  |th entries in <O|
000bb790  53 5f 47 42 50 42 20 31  30 20 66 6f 72 6d 61 74  |S_GBPB 10 format|
000bb7a0  3d 3e 4f 53 5f 47 42 50  42 31 30 62 75 66 66 65  |=>OS_GBPB10buffe|
000bb7b0  72 3e 2e 0a 0a 4f 6e 6c  79 20 63 6f 75 6e 74 20  |r>...Only count |
000bb7c0  6c 65 61 66 20 6e 61 6d  65 73 20 74 68 61 74 20  |leaf names that |
000bb7d0  77 69 6c 6c 20 66 69 74  20 63 6f 6d 70 6c 65 74  |will fit complet|
000bb7e0  65 6c 79 20 69 6e 74 6f  20 74 68 65 20 62 75 66  |ely into the buf|
000bb7f0  66 65 72 2e 20 52 65 74  75 72 6e 20 61 6e 20 65  |fer. Return an e|
000bb800  72 72 6f 72 20 69 66 20  74 68 65 20 63 61 74 61  |rror if the cata|
000bb810  6c 6f 67 65 64 20 6f 62  6a 65 63 74 20 69 73 20  |loged object is |
000bb820  6e 6f 74 20 66 6f 75 6e  64 20 6f 72 20 61 20 66  |not found or a f|
000bb830  69 6c 65 2c 20 62 75 74  20 72 65 74 75 72 6e 20  |ile, but return |
000bb840  76 61 6c 69 64 20 77 69  74 68 20 52 33 3d 30 2c  |valid with R3=0,|
000bb850  20 52 34 5c 3c 3e 31 20  66 6f 72 20 62 75 66 66  | R4\<>1 for buff|
000bb860  65 72 20 6f 76 65 72 66  6c 6f 77 20 6f 72 20 6d  |er overflow or m|
000bb870  6f 72 65 20 6e 61 6d 65  73 20 74 6f 20 72 65 61  |ore names to rea|
000bb880  64 2c 20 52 33 3d 30 2c  52 34 3d 2d 31 20 69 66  |d, R3=0,R4=-1 if|
000bb890  20 74 68 65 20 70 72 65  76 69 6f 75 73 20 63 61  | the previous ca|
000bb8a0  6c 6c 20 64 69 64 6e 27  74 20 64 65 74 65 63 74  |ll didn't detect|
000bb8b0  20 74 68 65 20 65 6e 64  20 62 75 74 20 79 6f 75  | the end but you|
000bb8c0  20 6e 6f 77 20 66 69 6e  64 20 74 68 61 74 20 74  | now find that t|
000bb8d0  68 65 72 65 20 61 72 65  20 6e 6f 20 6d 6f 72 65  |here are no more|
000bb8e0  20 6e 61 6d 65 73 2e 0a  44 41 54 41 cb 00 00 00  | names..DATA....|
000bb8f0  46 53 45 6e 74 72 79 5f  46 75 6e 63 20 31 36 0a  |FSEntry_Func 16.|
000bb900  23 50 61 72 65 6e 74 20  46 53 45 6e 74 72 79 5f  |#Parent FSEntry_|
000bb910  46 75 6e 63 0a 3d 3e 09  52 30 20 3d 09 31 36 20  |Func.=>.R0 =.16 |
000bb920  28 53 68 75 74 64 6f 77  6e 29 0a 0a 54 68 69 73  |(Shutdown)..This|
000bb930  20 63 61 6c 6c 20 72 65  71 75 65 73 74 73 20 74  | call requests t|
000bb940  68 65 20 66 69 6c 65 73  79 73 74 65 6d 20 74 6f  |he filesystem to|
000bb950  20 73 68 75 74 20 64 6f  77 6e 20 28 7b 2f 7d 65  | shut down ({/}e|
000bb960  2e 67 2e 7b 2f 7d 20 70  61 72 6b 20 64 69 73 63  |.g.{/} park disc|
000bb970  20 68 65 61 64 73 29 2e  20 41 6c 6c 20 66 69 6c  | heads). All fil|
000bb980  65 73 20 77 69 6c 6c 20  68 61 76 65 20 62 65 65  |es will have bee|
000bb990  6e 20 63 6c 6f 73 65 64  20 62 65 66 6f 72 65 20  |n closed before |
000bb9a0  74 68 69 73 20 63 61 6c  6c 20 69 73 20 6d 61 64  |this call is mad|
000bb9b0  65 2e 0a 00 44 41 54 41  70 01 00 00 46 53 45 6e  |e...DATAp...FSEn|
000bb9c0  74 72 79 5f 46 75 6e 63  20 31 37 0a 23 50 61 72  |try_Func 17.#Par|
000bb9d0  65 6e 74 20 46 53 45 6e  74 72 79 5f 46 75 6e 63  |ent FSEntry_Func|
000bb9e0  0a 3d 3e 09 52 30 20 3d  09 31 37 20 28 50 72 69  |.=>.R0 =.17 (Pri|
000bb9f0  6e 74 20 73 74 61 72 74  75 70 20 62 61 6e 6e 65  |nt startup banne|
000bba00  72 29 0a 09 52 36 20 3d  09 30 2c 20 61 73 20 73  |r)..R6 =.0, as s|
000bba10  70 65 63 69 61 6c 20 66  69 65 6c 64 20 6e 6f 74  |pecial field not|
000bba20  20 61 6c 6c 6f 77 65 64  20 68 65 72 65 0a 0a 54  | allowed here..T|
000bba30  68 69 73 20 63 61 6c 6c  20 69 73 20 6d 61 64 65  |his call is made|
000bba40  20 74 6f 20 72 65 71 75  65 73 74 20 61 20 66 69  | to request a fi|
000bba50  6c 65 73 79 73 74 65 6d  20 74 6f 20 70 72 69 6e  |lesystem to prin|
000bba60  74 20 61 20 62 61 6e 6e  65 72 20 74 6f 20 73 68  |t a banner to sh|
000bba70  6f 77 20 74 68 61 74 20  69 74 20 69 73 20 73 65  |ow that it is se|
000bba80  6c 65 63 74 65 64 20 69  66 20 74 68 65 20 73 74  |lected if the st|
000bba90  61 72 74 75 70 20 74 65  78 74 20 6f 66 66 73 65  |artup text offse|
000bbaa0  74 20 69 6e 20 74 68 65  20 66 69 6c 69 6e 67 20  |t in the filing |
000bbab0  73 79 73 74 65 6d 20 3c  69 6e 66 6f 72 6d 61 74  |system <informat|
000bbac0  69 6f 6e 20 62 6c 6f 63  6b 3d 3e 46 53 45 6e 74  |ion block=>FSEnt|
000bbad0  72 79 5f 3e 20 69 73 20  2d 31 2e 20 49 66 20 61  |ry_> is -1. If a|
000bbae0  6e 20 65 72 72 6f 72 20  64 75 72 69 6e 67 20 70  |n error during p|
000bbaf0  72 69 6e 74 69 6e 67 20  6f 63 63 75 72 73 20 69  |rinting occurs i|
000bbb00  74 20 73 68 6f 75 6c 64  20 62 65 20 72 65 74 75  |t should be retu|
000bbb10  72 6e 65 64 20 74 6f 20  74 68 65 20 63 61 6c 6c  |rned to the call|
000bbb20  65 72 2e 0a 44 41 54 41  61 02 00 00 46 53 45 6e  |er..DATAa...FSEn|
000bbb30  74 72 79 5f 46 75 6e 63  20 31 38 0a 23 50 61 72  |try_Func 18.#Par|
000bbb40  65 6e 74 20 46 53 45 6e  74 72 79 5f 46 75 6e 63  |ent FSEntry_Func|
000bbb50  0a 3d 3e 09 52 30 20 3d  09 31 38 20 28 53 65 74  |.=>.R0 =.18 (Set|
000bbb60  20 64 69 72 65 63 74 6f  72 79 20 63 6f 6e 74 65  | directory conte|
000bbb70  78 74 73 29 0a 23 57 72  61 70 20 6f 66 66 0a 09  |xts).#Wrap off..|
000bbb80  52 31 20 3d 09 6e 65 77  20 63 75 72 72 65 6e 74  |R1 =.new current|
000bbb90  20 64 69 72 65 63 74 6f  72 79 09 2d 31 20 74 6f  | directory.-1 to|
000bbba0  20 75 6e 73 65 74 2c 20  30 20 66 6f 72 20 6e 6f  | unset, 0 for no|
000bbbb0  20 63 68 61 6e 67 65 0a  09 52 32 20 3d 09 6e 65  | change..R2 =.ne|
000bbbc0  77 20 6c 69 62 72 61 72  79 09 09 2d 31 20 74 6f  |w library..-1 to|
000bbbd0  20 75 6e 73 65 74 2c 20  30 20 66 6f 72 20 6e 6f  | unset, 0 for no|
000bbbe0  20 63 68 61 6e 67 65 0a  09 52 33 20 3d 09 6e 65  | change..R3 =.ne|
000bbbf0  77 20 75 73 65 72 20 72  6f 6f 74 20 64 69 72 65  |w user root dire|
000bbc00  63 74 6f 72 79 09 2d 31  20 74 6f 20 75 6e 73 65  |ctory.-1 to unse|
000bbc10  74 2c 20 30 20 66 6f 72  20 6e 6f 20 63 68 61 6e  |t, 0 for no chan|
000bbc20  67 65 0a 23 57 72 61 70  0a 09 52 36 20 3d 09 30  |ge.#Wrap..R6 =.0|
000bbc30  2c 20 61 73 20 73 70 65  63 69 61 6c 20 66 69 65  |, as special fie|
000bbc40  6c 64 20 6e 6f 74 20 61  6c 6c 6f 77 65 64 20 68  |ld not allowed h|
000bbc50  65 72 65 0a 0a 3c 3d 09  52 31 20 3d 09 6f 6c 64  |ere..<=.R1 =.old|
000bbc60  20 43 53 44 09 09 09 2d  31 20 66 6f 72 20 75 6e  | CSD...-1 for un|
000bbc70  73 65 74 0a 09 52 32 20  3d 09 6f 6c 64 20 6c 69  |set..R2 =.old li|
000bbc80  62 72 61 72 79 09 09 2d  31 20 66 6f 72 20 75 6e  |brary..-1 for un|
000bbc90  73 65 74 0a 09 52 33 20  3d 09 6f 6c 64 20 55 52  |set..R3 =.old UR|
000bbca0  44 09 09 09 2d 31 20 66  6f 72 20 75 6e 73 65 74  |D...-1 for unset|
000bbcb0  0a 0a 54 68 69 73 20 46  53 45 6e 74 72 79 5f 46  |..This FSEntry_F|
000bbcc0  75 6e 63 20 31 38 20 69  73 20 6e 6f 77 20 6e 65  |unc 18 is now ne|
000bbcd0  76 65 72 20 63 61 6c 6c  65 64 2e 0a 0a 54 68 69  |ver called...Thi|
000bbce0  73 20 63 61 6c 6c 20 73  68 6f 75 6c 64 20 73 65  |s call should se|
000bbcf0  74 20 28 6f 72 20 72 65  61 64 29 20 74 68 65 20  |t (or read) the |
000bbd00  43 53 44 2c 20 6c 69 62  72 61 72 79 20 61 6e 64  |CSD, library and|
000bbd10  20 55 52 44 2e 20 49 74  20 77 61 73 20 6f 6e 6c  | URD. It was onl|
000bbd20  79 20 63 61 6c 6c 65 64  20 66 6f 72 20 66 69 6c  |y called for fil|
000bbd30  65 73 79 73 74 65 6d 73  20 74 68 61 74 20 68 61  |esystems that ha|
000bbd40  64 20 62 69 74 20 32 34  20 6f 66 20 74 68 65 20  |d bit 24 of the |
000bbd50  66 69 6c 69 6e 67 20 73  79 73 74 65 6d 20 3c 69  |filing system <i|
000bbd60  6e 66 6f 72 6d 61 74 69  6f 6e 20 77 6f 72 64 3d  |nformation word=|
000bbd70  3e 66 73 79 73 5f 69 6e  66 6f 77 6f 72 64 3e 20  |>fsys_infoword> |
000bbd80  73 65 74 2e 0a 00 00 00  44 41 54 41 14 03 00 00  |set.....DATA....|
000bbd90  46 53 45 6e 74 72 79 5f  46 75 6e 63 20 31 39 0a  |FSEntry_Func 19.|
000bbda0  23 50 61 72 65 6e 74 20  46 53 45 6e 74 72 79 5f  |#Parent FSEntry_|
000bbdb0  46 75 6e 63 0a 3d 3e 09  52 30 20 3d 09 31 39 20  |Func.=>.R0 =.19 |
000bbdc0  28 52 65 61 64 20 64 69  72 65 63 74 6f 72 79 20  |(Read directory |
000bbdd0  65 6e 74 72 69 65 73 20  61 6e 64 20 69 6e 66 6f  |entries and info|
000bbde0  72 6d 61 74 69 6f 6e 29  0a 09 52 31 20 3d 09 70  |rmation)..R1 =.p|
000bbdf0  6f 69 6e 74 65 72 20 74  6f 20 28 77 69 6c 63 61  |ointer to (wilca|
000bbe00  72 64 65 64 29 20 64 69  72 65 63 74 6f 72 79 20  |rded) directory |
000bbe10  6e 61 6d 65 0a 09 52 32  20 3d 09 70 6f 69 6e 74  |name..R2 =.point|
000bbe20  65 72 20 74 6f 20 62 75  66 66 65 72 0a 09 52 33  |er to buffer..R3|
000bbe30  20 3d 09 6e 75 6d 62 65  72 20 6f 66 20 6f 62 6a  | =.number of obj|
000bbe40  65 63 74 73 20 74 6f 20  72 65 61 64 0a 09 52 34  |ects to read..R4|
000bbe50  20 3d 09 77 68 65 72 65  20 74 6f 20 73 74 61 72  | =.where to star|
000bbe60  74 2c 20 30 20 66 6f 72  20 66 69 72 73 74 20 74  |t, 0 for first t|
000bbe70  69 6d 65 0a 09 52 35 20  3d 09 6c 65 6e 67 74 68  |ime..R5 =.length|
000bbe80  20 6f 66 20 62 75 66 66  65 72 0a 09 52 36 20 3d  | of buffer..R6 =|
000bbe90  09 70 6f 69 6e 74 65 72  20 74 6f 20 73 70 65 63  |.pointer to spec|
000bbea0  69 61 6c 20 66 69 65 6c  64 2c 20 6f 72 20 30 20  |ial field, or 0 |
000bbeb0  69 66 20 6e 6f 74 20 70  72 65 73 65 6e 74 0a 0a  |if not present..|
000bbec0  3c 3d 09 52 33 20 3d 09  6e 75 6d 62 65 72 20 6f  |<=.R3 =.number o|
000bbed0  66 20 6f 62 6a 65 63 74  73 20 72 65 61 64 0a 09  |f objects read..|
000bbee0  52 34 20 3d 09 77 68 65  72 65 20 74 6f 20 63 6f  |R4 =.where to co|
000bbef0  6e 74 69 6e 75 65 2c 20  6f 72 20 2d 31 20 66 6f  |ntinue, or -1 fo|
000bbf00  72 20 6e 6f 20 6d 6f 72  65 0a 0a 54 68 69 73 20  |r no more..This |
000bbf10  63 61 6c 6c 20 73 68 6f  75 6c 64 20 66 69 6c 6c  |call should fill|
000bbf20  20 74 68 65 20 62 75 66  66 65 72 20 69 6e 20 52  | the buffer in R|
000bbf30  32 20 77 69 74 68 20 65  6e 74 72 69 65 73 20 69  |2 with entries i|
000bbf40  6e 20 3c 4f 53 5f 47 42  50 42 20 31 31 20 66 6f  |n <OS_GBPB 11 fo|
000bbf50  72 6d 61 74 3d 3e 4f 53  5f 47 42 50 42 31 31 62  |rmat=>OS_GBPB11b|
000bbf60  75 66 66 65 72 3e 2e 0a  0a 4f 6e 6c 79 20 63 6f  |uffer>...Only co|
000bbf70  75 6e 74 20 6c 65 61 66  20 6e 61 6d 65 73 20 74  |unt leaf names t|
000bbf80  68 61 74 20 77 69 6c 6c  20 66 69 74 20 63 6f 6d  |hat will fit com|
000bbf90  70 6c 65 74 65 6c 79 20  69 6e 74 6f 20 74 68 65  |pletely into the|
000bbfa0  20 62 75 66 66 65 72 2e  20 52 65 74 75 72 6e 20  | buffer. Return |
000bbfb0  61 6e 20 65 72 72 6f 72  20 69 66 20 74 68 65 20  |an error if the |
000bbfc0  63 61 74 61 6c 6f 67 65  64 20 6f 62 6a 65 63 74  |cataloged object|
000bbfd0  20 69 73 20 6e 6f 74 20  66 6f 75 6e 64 20 6f 72  | is not found or|
000bbfe0  20 61 20 66 69 6c 65 2c  20 62 75 74 20 72 65 74  | a file, but ret|
000bbff0  75 72 6e 20 76 61 6c 69  64 20 77 69 74 68 20 52  |urn valid with R|
000bc000  33 3d 30 2c 20 52 34 5c  3c 3e 31 20 66 6f 72 20  |3=0, R4\<>1 for |
000bc010  62 75 66 66 65 72 20 6f  76 65 72 66 6c 6f 77 20  |buffer overflow |
000bc020  6f 72 20 6d 6f 72 65 20  6e 61 6d 65 73 20 74 6f  |or more names to|
000bc030  20 72 65 61 64 2c 20 52  33 3d 30 2c 52 34 3d 2d  | read, R3=0,R4=-|
000bc040  31 20 69 66 20 74 68 65  20 70 72 65 76 69 6f 75  |1 if the previou|
000bc050  73 20 63 61 6c 6c 20 64  69 64 6e 27 74 20 64 65  |s call didn't de|
000bc060  74 65 63 74 20 74 68 65  20 65 6e 64 20 62 75 74  |tect the end but|
000bc070  20 79 6f 75 20 6e 6f 77  20 66 69 6e 64 20 74 68  | you now find th|
000bc080  61 74 20 74 68 65 72 65  20 61 72 65 20 6e 6f 20  |at there are no |
000bc090  6d 6f 72 65 20 6e 61 6d  65 73 2e 0a 44 41 54 41  |more names..DATA|
000bc0a0  8a 01 00 00 46 53 45 6e  74 72 79 5f 46 75 6e 63  |....FSEntry_Func|
000bc0b0  20 32 0a 23 50 61 72 65  6e 74 20 46 53 45 6e 74  | 2.#Parent FSEnt|
000bc0c0  72 79 5f 46 75 6e 63 0a  3d 3e 09 52 30 20 3d 09  |ry_Func.=>.R0 =.|
000bc0d0  32 20 28 43 61 74 61 6c  6f 67 75 65 20 64 69 72  |2 (Catalogue dir|
000bc0e0  65 63 74 6f 72 79 29 0a  09 52 31 20 3d 09 70 6f  |ectory)..R1 =.po|
000bc0f0  69 6e 74 65 72 20 74 6f  20 28 77 69 6c 63 61 72  |inter to (wilcar|
000bc100  64 65 64 29 20 64 69 72  65 63 74 6f 72 79 20 6e  |ded) directory n|
000bc110  61 6d 65 0a 09 52 36 20  3d 09 70 6f 69 6e 74 65  |ame..R6 =.pointe|
000bc120  72 20 74 6f 20 73 70 65  63 69 61 6c 20 66 69 65  |r to special fie|
000bc130  6c 64 2c 20 6f 72 20 30  20 69 66 20 6e 6f 74 20  |ld, or 0 if not |
000bc140  70 72 65 73 65 6e 74 0a  0a 54 68 69 73 20 63 61  |present..This ca|
000bc150  6c 6c 20 73 68 6f 75 6c  64 20 63 61 74 61 6c 6f  |ll should catalo|
000bc160  67 75 65 20 61 20 64 69  72 65 63 74 6f 72 79 20  |gue a directory |
000bc170  2d 20 69 74 20 69 6d 70  6c 65 6d 65 6e 74 73 20  |- it implements |
000bc180  7b 66 43 6f 64 65 7d 2a  43 61 74 7b 66 7d 2e 20  |{fCode}*Cat{f}. |
000bc190  49 74 20 69 73 20 61 6c  77 61 79 73 20 63 61 6c  |It is always cal|
000bc1a0  6c 65 64 20 62 79 20 52  49 53 43 20 4f 53 20 32  |led by RISC OS 2|
000bc1b0  2c 20 6f 72 20 6f 6e 6c  79 20 62 79 20 6c 61 74  |, or only by lat|
000bc1c0  65 72 20 76 65 72 73 69  6f 6e 73 20 6f 66 20 52  |er versions of R|
000bc1d0  49 53 43 20 4f 53 20 77  68 65 6e 20 62 69 74 20  |ISC OS when bit |
000bc1e0  31 20 6f 66 20 74 68 65  20 3c 65 78 74 72 61 20  |1 of the <extra |
000bc1f0  66 69 6c 69 6e 67 20 73  79 73 74 65 6d 20 69 6e  |filing system in|
000bc200  66 6f 20 77 6f 72 64 3d  3e 66 73 79 73 5f 65 78  |fo word=>fsys_ex|
000bc210  74 72 61 5f 69 6e 66 6f  77 6f 72 64 3e 20 69 73  |tra_infoword> is|
000bc220  20 73 65 74 2e 0a 00 00  44 41 54 41 0b 02 00 00  | set....DATA....|
000bc230  46 53 45 6e 74 72 79 5f  46 75 6e 63 20 32 30 0a  |FSEntry_Func 20.|
000bc240  23 50 61 72 65 6e 74 20  46 53 45 6e 74 72 79 5f  |#Parent FSEntry_|
000bc250  46 75 6e 63 0a 3d 3e 09  52 30 20 3d 09 32 30 20  |Func.=>.R0 =.20 |
000bc260  28 4f 75 74 70 75 74 20  66 75 6c 6c 20 69 6e 66  |(Output full inf|
000bc270  6f 72 6d 61 74 69 6f 6e  20 6f 6e 20 6f 62 6a 65  |ormation on obje|
000bc280  63 74 73 29 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |cts)..R1 =.point|
000bc290  65 72 20 74 6f 20 70 61  74 68 6e 61 6d 65 0a 09  |er to pathname..|
000bc2a0  52 36 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R6 =.pointer to |
000bc2b0  73 70 65 63 69 61 6c 20  66 69 65 6c 64 2c 20 6f  |special field, o|
000bc2c0  72 20 30 20 69 66 20 6e  6f 74 20 70 72 65 73 65  |r 0 if not prese|
000bc2d0  6e 74 0a 0a 49 66 20 62  69 74 20 32 35 20 6f 66  |nt..If bit 25 of|
000bc2e0  20 74 68 65 20 66 69 6c  69 6e 67 20 73 79 73 74  | the filing syst|
000bc2f0  65 6d 20 3c 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |em <information |
000bc300  77 6f 72 64 3d 3e 66 73  79 73 5f 69 6e 66 6f 77  |word=>fsys_infow|
000bc310  6f 72 64 3e 20 69 73 20  63 6c 65 61 72 20 74 68  |ord> is clear th|
000bc320  69 73 20 63 61 6c 6c 20  69 73 20 6e 6f 74 20 6d  |is call is not m|
000bc330  61 64 65 20 2d 20 72 65  70 65 61 74 65 64 20 63  |ade - repeated c|
000bc340  61 6c 6c 73 20 74 6f 20  3c 46 53 5f 45 6e 74 72  |alls to <FS_Entr|
000bc350  79 46 75 6e 63 20 36 3d  3e 46 53 45 6e 74 72 79  |yFunc 6=>FSEntry|
000bc360  5f 46 75 6e 63 36 3e 20  61 72 65 20 75 73 65 64  |_Func6> are used|
000bc370  2e 0a 0a 54 68 69 73 20  63 61 6c 6c 20 73 68 6f  |...This call sho|
000bc380  75 6c 64 20 70 72 69 6e  74 20 69 6e 66 6f 72 6d  |uld print inform|
000bc390  61 74 69 6f 6e 20 6f 6e  20 74 68 65 20 6f 62 6a  |ation on the obj|
000bc3a0  65 63 74 20 6d 61 74 63  68 69 6e 67 20 74 68 65  |ect matching the|
000bc3b0  20 70 61 74 68 6e 61 6d  65 20 2d 20 69 74 20 69  | pathname - it i|
000bc3c0  6d 70 6c 65 6d 65 6e 74  73 20 7b 66 43 6f 64 65  |mplements {fCode|
000bc3d0  7d 2a 46 69 6c 65 49 6e  66 6f 7b 66 7d 2e 20 4f  |}*FileInfo{f}. O|
000bc3e0  6e 20 52 49 53 43 20 4f  53 20 32 20 74 68 69 73  |n RISC OS 2 this|
000bc3f0  20 6d 61 79 20 62 65 20  77 69 6c 64 63 61 72 64  | may be wildcard|
000bc400  65 64 2c 20 61 6e 64 20  61 6c 6c 20 6f 62 6a 65  |ed, and all obje|
000bc410  63 74 73 20 77 68 69 63  68 20 6d 61 74 63 68 20  |cts which match |
000bc420  73 68 6f 75 6c 64 20 62  65 20 70 72 69 6e 74 65  |should be printe|
000bc430  64 2e 0a 00 44 41 54 41  0a 05 00 00 46 53 45 6e  |d...DATA....FSEn|
000bc440  74 72 79 5f 46 75 6e 63  20 32 33 0a 23 50 61 72  |try_Func 23.#Par|
000bc450  65 6e 74 20 46 53 45 6e  74 72 79 5f 46 75 6e 63  |ent FSEntry_Func|
000bc460  0a 3d 3e 09 52 30 20 3d  09 32 33 20 28 43 61 6e  |.=>.R0 =.23 (Can|
000bc470  6f 6e 69 63 61 6c 69 73  65 20 73 70 65 63 69 61  |onicalise specia|
000bc480  6c 20 66 69 65 6c 64 20  61 6e 64 20 64 69 73 63  |l field and disc|
000bc490  20 6e 61 6d 65 29 0a 09  52 31 20 3d 09 70 6f 69  | name)..R1 =.poi|
000bc4a0  6e 74 65 72 20 74 6f 20  73 70 65 63 69 61 6c 20  |nter to special |
000bc4b0  66 69 65 6c 64 2c 20 6f  72 20 30 20 69 66 20 6e  |field, or 0 if n|
000bc4c0  6f 74 20 70 72 65 73 65  6e 74 0a 09 52 32 20 3d  |ot present..R2 =|
000bc4d0  09 70 6f 69 6e 74 65 72  20 74 6f 20 64 69 73 63  |.pointer to disc|
000bc4e0  20 6e 61 6d 65 2c 20 6f  72 20 30 20 69 66 20 6e  | name, or 0 if n|
000bc4f0  6f 74 20 70 72 65 73 65  6e 74 0a 09 52 33 20 3d  |ot present..R3 =|
000bc500  09 70 6f 69 6e 74 65 72  20 62 75 66 66 65 72 20  |.pointer buffer |
000bc510  66 6f 72 20 63 61 6e 6f  6e 69 63 61 6c 20 73 70  |for canonical sp|
000bc520  65 63 69 61 6c 20 66 69  65 6c 64 2c 20 6f 72 20  |ecial field, or |
000bc530  30 20 74 6f 20 66 69 6e  64 20 6c 65 6e 67 74 68  |0 to find length|
000bc540  0a 09 52 34 20 3d 09 70  6f 69 6e 74 65 72 20 62  |..R4 =.pointer b|
000bc550  75 66 66 65 72 20 66 6f  72 20 63 61 6e 6f 6e 69  |uffer for canoni|
000bc560  63 61 6c 20 64 69 73 63  20 6e 61 6d 65 2c 20 6f  |cal disc name, o|
000bc570  72 20 30 20 74 6f 20 66  69 6e 64 20 6c 65 6e 67  |r 0 to find leng|
000bc580  74 68 0a 09 52 35 20 3d  09 6c 65 6e 67 74 68 20  |th..R5 =.length |
000bc590  6f 66 20 52 33 20 62 75  66 66 65 72 0a 09 52 36  |of R3 buffer..R6|
000bc5a0  20 3d 09 6c 65 6e 67 74  68 20 6f 66 20 52 34 20  | =.length of R4 |
000bc5b0  62 75 66 66 65 72 0a 0a  3c 3d 09 52 31 20 3d 09  |buffer..<=.R1 =.|
000bc5c0  30 2c 20 6f 72 20 70 6f  69 6e 74 65 72 20 74 6f  |0, or pointer to|
000bc5d0  20 63 61 6e 6f 6e 69 63  61 6c 20 73 70 65 63 69  | canonical speci|
000bc5e0  61 6c 20 66 69 65 6c 64  0a 09 52 32 20 3d 09 30  |al field..R2 =.0|
000bc5f0  2c 20 6f 72 20 70 6f 69  6e 74 65 72 20 74 6f 20  |, or pointer to |
000bc600  63 61 6e 6f 6e 63 69 61  6c 20 64 69 73 63 20 6e  |canoncial disc n|
000bc610  61 6d 65 0a 09 52 33 20  3d 09 62 79 74 65 73 20  |ame..R3 =.bytes |
000bc620  6f 76 65 72 66 6c 6f 77  20 66 72 6f 6d 20 73 70  |overflow from sp|
000bc630  65 63 69 61 6c 20 66 69  65 6c 64 20 62 75 66 66  |ecial field buff|
000bc640  65 72 0a 09 52 34 20 3d  09 62 79 74 65 73 20 6f  |er..R4 =.bytes o|
000bc650  76 65 72 66 6c 6f 77 20  66 72 6f 6d 20 64 69 73  |verflow from dis|
000bc660  63 20 6e 61 6d 65 20 62  75 66 66 65 72 0a 09 52  |c name buffer..R|
000bc670  35 2c 52 36 20 70 72 65  73 65 72 76 65 64 0a 23  |5,R6 preserved.#|
000bc680  20 4c 65 61 76 65 20 74  68 61 74 20 6f 6e 65 20  | Leave that one |
000bc690  2d 20 69 74 20 6d 61 6b  65 73 20 74 68 65 20 63  |- it makes the c|
000bc6a0  61 6c 6c 73 20 62 65 6c  6f 77 20 63 6c 65 61 72  |alls below clear|
000bc6b0  65 72 0a 0a 54 68 69 73  20 63 61 6c 6c 20 69 73  |er..This call is|
000bc6c0  20 75 73 65 64 20 74 6f  20 63 6f 6e 76 65 72 74  | used to convert|
000bc6d0  20 73 70 65 63 69 61 6c  20 66 69 65 6c 64 20 61  | special field a|
000bc6e0  6e 64 20 64 69 73 63 20  6e 61 6d 65 20 74 6f 20  |nd disc name to |
000bc6f0  63 61 6e 6f 6e 69 63 61  6c 20 66 6f 72 6d 73 2e  |canonical forms.|
000bc700  20 49 74 20 69 73 20 63  61 6c 6c 65 64 20 74 77  | It is called tw|
000bc710  69 63 65 3a 0a 0a 23 74  61 62 0a 3d 3e 09 52 31  |ice:..#tab.=>.R1|
000bc720  2c 52 32 2c 52 33 2c 52  34 09 3d 20 30 0a 09 52  |,R2,R3,R4.= 0..R|
000bc730  35 2c 52 36 20 64 6f 6e  27 74 20 6d 61 74 74 65  |5,R6 don't matte|
000bc740  72 0a 0a 3c 3d 09 52 31  2c 52 32 20 6e 6f 6e 20  |r..<=.R1,R2 non |
000bc750  7a 65 72 6f 0a 09 52 33  20 3d 09 6c 65 6e 67 74  |zero..R3 =.lengt|
000bc760  68 20 6f 66 20 62 75 66  66 65 72 20 66 6f 72 20  |h of buffer for |
000bc770  73 70 65 63 69 61 6c 20  66 69 65 6c 64 20 28 65  |special field (e|
000bc780  78 63 6c 75 64 69 6e 67  20 6e 75 6c 6c 20 74 65  |xcluding null te|
000bc790  72 6d 69 6e 61 74 6f 72  29 0a 09 52 34 20 3d 09  |rminator)..R4 =.|
000bc7a0  6c 65 6e 67 74 68 20 6f  66 20 62 75 66 66 65 72  |length of buffer|
000bc7b0  20 66 6f 72 20 64 69 73  63 20 6e 61 6d 65 20 28  | for disc name (|
000bc7c0  65 78 63 6c 75 64 69 6e  67 20 6e 75 6c 6c 20 74  |excluding null t|
000bc7d0  65 72 6d 69 6e 61 74 6f  72 29 0a 0a 61 6c 6f 63  |erminator)..aloc|
000bc7e0  61 74 65 20 62 75 66 66  65 72 73 0a 23 74 61 62  |ate buffers.#tab|
000bc7f0  0a 0a 3d 3e 09 52 31 20  3d 09 70 6f 69 6e 74 65  |..=>.R1 =.pointe|
000bc800  72 20 74 6f 20 73 70 65  63 69 61 6c 20 66 69 65  |r to special fie|
000bc810  6c 64 0a 09 52 32 20 3d  09 70 6f 69 6e 74 65 72  |ld..R2 =.pointer|
000bc820  20 74 6f 20 64 69 73 63  20 6e 61 6d 65 0a 09 52  | to disc name..R|
000bc830  33 20 3d 09 70 6f 69 6e  74 65 72 20 62 75 66 66  |3 =.pointer buff|
000bc840  65 72 0a 09 52 34 20 3d  09 70 6f 69 6e 74 65 72  |er..R4 =.pointer|
000bc850  20 62 75 66 66 65 72 0a  09 52 35 20 3d 09 6c 65  | buffer..R5 =.le|
000bc860  6e 67 74 68 20 6f 66 20  52 33 20 62 75 66 66 65  |ngth of R3 buffe|
000bc870  72 0a 09 52 36 20 3d 09  6c 65 6e 67 74 68 20 6f  |r..R6 =.length o|
000bc880  66 20 52 34 20 62 75 66  66 65 72 0a 0a 3c 3d 09  |f R4 buffer..<=.|
000bc890  52 31 20 3d 09 65 6e 74  72 79 20 52 33 0a 09 52  |R1 =.entry R3..R|
000bc8a0  32 20 3d 09 65 6e 74 72  79 20 52 34 0a 09 52 33  |2 =.entry R4..R3|
000bc8b0  2c 52 34 20 3d 09 30 20  28 6e 65 69 74 68 65 72  |,R4 =.0 (neither|
000bc8c0  20 62 75 66 66 65 72 20  6f 76 65 72 66 6c 6f 77  | buffer overflow|
000bc8d0  65 64 29 0a 0a 54 68 69  73 20 65 6e 74 72 79 20  |ed)..This entry |
000bc8e0  70 6f 69 6e 74 20 69 73  20 6f 6e 6c 79 20 63 61  |point is only ca|
000bc8f0  6c 6c 65 64 20 69 66 20  62 69 74 20 32 33 20 6f  |lled if bit 23 o|
000bc900  66 20 74 68 65 20 66 69  6c 69 6e 67 20 73 79 73  |f the filing sys|
000bc910  74 65 6d 20 3c 69 6e 66  6f 72 6d 61 74 69 6f 6e  |tem <information|
000bc920  20 77 6f 72 64 3d 3e 66  73 79 73 5f 69 6e 66 6f  | word=>fsys_info|
000bc930  77 6f 72 64 3e 20 69 73  20 73 65 74 2e 0a 00 00  |word> is set....|
000bc940  44 41 54 41 f2 03 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000bc950  46 75 6e 63 20 32 34 0a  23 50 61 72 65 6e 74 20  |Func 24.#Parent |
000bc960  46 53 45 6e 74 72 79 5f  46 75 6e 63 0a 3d 3e 09  |FSEntry_Func.=>.|
000bc970  52 30 20 3d 09 32 34 20  28 52 65 73 6f 6c 76 65  |R0 =.24 (Resolve|
000bc980  20 77 69 6c 64 63 61 72  64 29 0a 09 52 31 20 3d  | wildcard)..R1 =|
000bc990  09 70 6f 69 6e 74 65 72  20 74 6f 20 64 69 72 65  |.pointer to dire|
000bc9a0  63 74 6f 72 79 20 70 61  74 68 6e 61 6d 65 0a 09  |ctory pathname..|
000bc9b0  52 32 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R2 =.pointer to |
000bc9c0  77 69 6c 64 63 61 72 64  65 64 20 6f 62 6a 65 63  |wildcarded objec|
000bc9d0  74 20 6e 61 6d 65 0a 09  52 33 20 3d 09 70 6f 69  |t name..R3 =.poi|
000bc9e0  6e 74 65 72 20 62 75 66  66 65 72 20 66 6f 72 20  |nter buffer for |
000bc9f0  6e 61 6d 65 0a 09 52 35  20 3d 09 6c 65 6e 67 74  |name..R5 =.lengt|
000bca00  68 20 6f 66 20 62 75 66  66 65 72 0a 09 52 36 20  |h of buffer..R6 |
000bca10  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 73 70 65  |=.pointer to spe|
000bca20  63 69 61 6c 20 66 69 65  6c 64 2c 20 6f 72 20 30  |cial field, or 0|
000bca30  20 69 66 20 6e 6f 74 20  70 72 65 73 65 6e 74 0a  | if not present.|
000bca40  0a 3c 3d 09 52 32 20 3d  09 2d 31 20 69 66 20 6e  |.<=.R2 =.-1 if n|
000bca50  6f 74 20 66 6f 75 6e 64  2c 20 65 6c 73 65 20 70  |ot found, else p|
000bca60  72 65 73 65 72 76 65 64  0a 09 52 34 20 3d 09 2d  |reserved..R4 =.-|
000bca70  31 20 69 66 20 46 69 6c  65 53 77 69 74 63 68 20  |1 if FileSwitch |
000bca80  73 68 6f 75 6c 64 20 72  65 73 6f 6c 76 65 2c 20  |should resolve, |
000bca90  65 6c 73 65 20 62 79 74  65 73 20 6f 76 65 72 66  |else bytes overf|
000bcaa0  6c 6f 77 20 66 72 6f 6d  20 64 69 73 63 20 6e 61  |low from disc na|
000bcab0  6d 65 20 62 75 66 66 65  72 0a 0a 54 68 69 73 20  |me buffer..This |
000bcac0  63 61 6c 6c 20 69 73 20  6d 61 64 65 20 74 6f 20  |call is made to |
000bcad0  72 65 73 6f 6c 76 65 20  61 20 77 69 6c 64 63 61  |resolve a wildca|
000bcae0  72 64 65 64 20 6f 62 6a  65 63 74 20 6e 61 6d 65  |rded object name|
000bcaf0  2e 20 49 66 20 74 68 65  20 66 69 6c 69 6e 67 20  |. If the filing |
000bcb00  73 79 73 74 65 6d 20 63  61 6e 20 64 6f 20 6e 6f  |system can do no|
000bcb10  20 62 65 74 74 65 72 20  6a 6f 62 20 74 68 61 74  | better job that|
000bcb20  20 46 69 6c 65 53 77 69  74 63 68 20 63 6f 75 6c  | FileSwitch coul|
000bcb30  64 20 62 79 20 63 61 6c  6c 69 6e 67 20 3c 46 53  |d by calling <FS|
000bcb40  45 6e 74 72 79 5f 46 75  6e 63 20 31 34 3d 3e 46  |Entry_Func 14=>F|
000bcb50  53 45 6e 74 72 79 5f 46  75 6e 63 31 34 3e 20 61  |SEntry_Func14> a|
000bcb60  6e 64 20 66 69 6e 64 69  6e 67 20 74 68 65 20 66  |nd finding the f|
000bcb70  69 72 73 74 20 6d 61 74  63 68 2c 20 72 65 74 75  |irst match, retu|
000bcb80  72 6e 20 52 34 3d 2d 31  2c 20 61 6e 64 20 6c 65  |rn R4=-1, and le|
000bcb90  74 20 46 69 6c 65 53 77  69 74 63 68 20 64 6f 20  |t FileSwitch do |
000bcba0  74 68 65 20 6a 6f 62 2e  0a 0a 54 68 69 73 20 65  |the job...This e|
000bcbb0  6e 74 72 79 20 70 6f 69  6e 74 20 69 73 20 6f 6e  |ntry point is on|
000bcbc0  6c 79 20 63 61 6c 6c 65  64 20 69 66 20 62 69 74  |ly called if bit|
000bcbd0  20 32 33 20 6f 66 20 74  68 65 20 66 69 6c 69 6e  | 23 of the filin|
000bcbe0  67 20 73 79 73 74 65 6d  20 3c 69 6e 66 6f 72 6d  |g system <inform|
000bcbf0  61 74 69 6f 6e 20 77 6f  72 64 3d 3e 66 73 79 73  |ation word=>fsys|
000bcc00  5f 69 6e 66 6f 77 6f 72  64 3e 20 69 73 20 73 65  |_infoword> is se|
000bcc10  74 2e 0a 23 20 47 65 72  70 68 3e 20 54 68 69 73  |t..# Gerph> This|
000bcc20  20 69 73 20 63 6f 6d 6d  65 6e 74 65 64 20 6f 6e  | is commented on|
000bcc30  20 61 6c 6c 20 6f 74 68  65 72 20 65 6e 74 72 69  | all other entri|
000bcc40  65 73 2e 20 49 73 20 74  68 69 73 20 6f 6e 65 20  |es. Is this one |
000bcc50  72 69 67 68 74 20 74 68  65 6e 20 3f 0a 23 20 4e  |right then ?.# N|
000bcc60  3e 20 50 52 4d 20 32 2d  35 37 31 20 73 61 79 73  |> PRM 2-571 says|
000bcc70  20 74 68 61 74 20 74 68  69 73 20 64 6f 65 73 20  | that this does |
000bcc80  68 6f 6e 6f 75 72 20 62  69 74 20 32 33 2e 20 53  |honour bit 23. S|
000bcc90  65 65 6d 73 20 6c 6f 67  69 63 61 6c 20 74 68 61  |eems logical tha|
000bcca0  74 20 61 6c 6c 20 74 68  61 74 0a 23 20 20 20 20  |t all that.#    |
000bccb0  66 6f 6c 6c 6f 77 20 77  69 6c 6c 20 61 6c 73 6f  |follow will also|
000bccc0  2c 20 62 75 74 20 50 52  4d 20 64 6f 65 73 20 6e  |, but PRM does n|
000bccd0  6f 74 20 73 61 79 20 73  6f 2e 20 53 69 6c 6c 79  |ot say so. Silly|
000bcce0  20 50 52 4d 2e 0a 23 20  47 65 72 70 68 3e 20 48  | PRM..# Gerph> H|
000bccf0  6d 6d 6d 2e 2e 2e 2e 20  49 27 6c 6c 20 74 72 79  |mmm.... I'll try|
000bcd00  20 74 6f 20 67 65 74 20  61 72 6f 75 6e 64 20 74  | to get around t|
000bcd10  6f 20 74 65 73 74 69 6e  67 20 74 68 69 73 20 61  |o testing this a|
000bcd20  74 20 73 6f 6d 65 20 70  6f 69 6e 74 20 74 68 65  |t some point the|
000bcd30  6e 0a 00 00 44 41 54 41  03 02 00 00 46 53 45 6e  |n...DATA....FSEn|
000bcd40  74 72 79 5f 46 75 6e 63  20 32 35 0a 23 50 61 72  |try_Func 25.#Par|
000bcd50  65 6e 74 20 46 53 45 6e  74 72 79 5f 46 75 6e 63  |ent FSEntry_Func|
000bcd60  0a 3d 3e 09 52 30 20 3d  09 32 35 20 28 52 65 61  |.=>.R0 =.25 (Rea|
000bcd70  64 20 64 65 66 65 63 74  20 6c 69 73 74 29 0a 09  |d defect list)..|
000bcd80  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
000bcd90  6e 61 6d 65 20 6f 66 20  69 6d 61 67 65 0a 09 52  |name of image..R|
000bcda0  32 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 62  |2 =.pointer to b|
000bcdb0  75 66 66 65 72 0a 09 52  35 20 3d 09 6c 65 6e 67  |uffer..R5 =.leng|
000bcdc0  74 68 20 6f 66 20 62 75  66 66 65 72 0a 09 52 36  |th of buffer..R6|
000bcdd0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 73 70  | =.pointer to sp|
000bcde0  65 63 69 61 6c 20 66 69  65 6c 64 2c 20 6f 72 20  |ecial field, or |
000bcdf0  30 20 69 66 20 6e 6f 74  20 70 72 65 73 65 6e 74  |0 if not present|
000bce00  0a 0a 54 68 69 73 20 63  61 6c 6c 20 66 69 6c 6c  |..This call fill|
000bce10  73 20 74 68 65 20 62 75  66 66 65 72 20 77 69 74  |s the buffer wit|
000bce20  68 20 74 68 65 20 64 65  66 65 63 74 20 6c 69 73  |h the defect lis|
000bce30  74 20 6f 66 20 61 6e 20  69 6d 61 67 65 2e 20 54  |t of an image. T|
000bce40  68 65 20 62 75 66 66 65  72 20 69 73 20 66 69 6c  |he buffer is fil|
000bce50  6c 65 64 20 77 69 74 68  20 77 6f 72 64 73 20 67  |led with words g|
000bce60  69 76 69 6e 67 20 62 79  74 65 20 6f 66 66 73 65  |iving byte offse|
000bce70  74 73 20 6f 66 20 64 65  66 65 63 74 73 2c 20 74  |ts of defects, t|
000bce80  65 72 6d 69 6e 61 74 65  64 20 62 79 20 26 32 30  |erminated by &20|
000bce90  30 30 30 30 30 30 2e 20  49 74 20 69 6d 70 6c 65  |000000. It imple|
000bcea0  6d 65 6e 74 73 20 3c 4f  53 5f 46 53 43 6f 6e 74  |ments <OS_FSCont|
000bceb0  72 6f 6c 20 34 31 3d 3e  4f 53 5f 46 53 43 6f 6e  |rol 41=>OS_FSCon|
000bcec0  74 72 6f 6c 34 31 3e 2e  0a 23 20 0a 23 20 54 68  |trol41>..# .# Th|
000bced0  69 73 20 65 6e 74 72 79  20 70 6f 69 6e 74 20 69  |is entry point i|
000bcee0  73 20 6f 6e 6c 79 20 63  61 6c 6c 65 64 20 69 66  |s only called if|
000bcef0  20 62 69 74 20 32 33 20  6f 66 20 74 68 65 20 66  | bit 23 of the f|
000bcf00  69 6c 69 6e 67 20 73 79  73 74 65 6d 20 3c 69 6e  |iling system <in|
000bcf10  66 6f 72 6d 61 74 69 6f  6e 20 77 6f 72 64 3d 3e  |formation word=>|
000bcf20  66 73 79 73 5f 69 6e 66  6f 77 6f 72 64 3e 20 69  |fsys_infoword> i|
000bcf30  73 20 73 65 74 2e 0a 00  44 41 54 41 65 01 00 00  |s set...DATAe...|
000bcf40  46 53 45 6e 74 72 79 5f  46 75 6e 63 20 32 36 0a  |FSEntry_Func 26.|
000bcf50  23 50 61 72 65 6e 74 20  46 53 45 6e 74 72 79 5f  |#Parent FSEntry_|
000bcf60  46 75 6e 63 0a 3d 3e 09  52 30 20 3d 09 32 36 20  |Func.=>.R0 =.26 |
000bcf70  28 41 64 64 20 61 20 64  65 66 65 63 74 29 0a 09  |(Add a defect)..|
000bcf80  52 31 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R1 =.pointer to |
000bcf90  6e 61 6d 65 20 6f 66 20  69 6d 61 67 65 0a 09 52  |name of image..R|
000bcfa0  32 20 3d 09 62 79 74 65  20 6f 66 66 73 65 74 20  |2 =.byte offset |
000bcfb0  74 6f 20 73 74 61 72 74  20 6f 66 20 64 65 66 65  |to start of defe|
000bcfc0  63 74 0a 09 52 36 20 3d  09 70 6f 69 6e 74 65 72  |ct..R6 =.pointer|
000bcfd0  20 74 6f 20 73 70 65 63  69 61 6c 20 66 69 65 6c  | to special fiel|
000bcfe0  64 2c 20 6f 72 20 30 20  69 66 20 6e 6f 74 20 70  |d, or 0 if not p|
000bcff0  72 65 73 65 6e 74 0a 0a  54 68 69 73 20 63 61 6c  |resent..This cal|
000bd000  6c 20 69 6d 70 6c 65 6d  65 6e 74 73 20 3c 4f 53  |l implements <OS|
000bd010  5f 46 53 43 6f 6e 74 72  6f 6c 20 34 32 3d 3e 4f  |_FSControl 42=>O|
000bd020  53 5f 46 53 43 6f 6e 74  72 6f 6c 34 32 3e 2e 0a  |S_FSControl42>..|
000bd030  23 0a 23 20 54 68 69 73  20 65 6e 74 72 79 20 70  |#.# This entry p|
000bd040  6f 69 6e 74 20 69 73 20  6f 6e 6c 79 20 63 61 6c  |oint is only cal|
000bd050  6c 65 64 20 69 66 20 62  69 74 20 32 33 20 6f 66  |led if bit 23 of|
000bd060  20 74 68 65 20 66 69 6c  69 6e 67 20 73 79 73 74  | the filing syst|
000bd070  65 6d 20 3c 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |em <information |
000bd080  77 6f 72 64 3d 3e 66 73  79 73 5f 69 6e 66 6f 77  |word=>fsys_infow|
000bd090  6f 72 64 3e 20 69 73 20  73 65 74 2e 0a 00 00 00  |ord> is set.....|
000bd0a0  44 41 54 41 97 01 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000bd0b0  46 75 6e 63 20 32 37 0a  23 50 61 72 65 6e 74 20  |Func 27.#Parent |
000bd0c0  46 53 45 6e 74 72 79 5f  46 75 6e 63 0a 3d 3e 09  |FSEntry_Func.=>.|
000bd0d0  52 30 20 3d 09 32 37 20  28 52 65 61 64 20 62 6f  |R0 =.27 (Read bo|
000bd0e0  6f 74 20 6f 70 74 69 6f  6e 29 0a 09 52 31 20 3d  |ot option)..R1 =|
000bd0f0  09 70 6f 69 6e 74 65 72  20 74 6f 20 6e 61 6d 65  |.pointer to name|
000bd100  20 6f 66 20 61 6e 79 20  6f 62 6a 65 63 74 20 6f  | of any object o|
000bd110  6e 20 69 6d 61 67 65 0a  09 52 36 20 3d 09 70 6f  |n image..R6 =.po|
000bd120  69 6e 74 65 72 20 74 6f  20 73 70 65 63 69 61 6c  |inter to special|
000bd130  20 66 69 65 6c 64 2c 20  6f 72 20 30 20 69 66 20  | field, or 0 if |
000bd140  6e 6f 74 20 70 72 65 73  65 6e 74 0a 0a 3c 3d 09  |not present..<=.|
000bd150  52 32 20 3d 09 3c 62 6f  6f 74 20 6f 70 74 69 6f  |R2 =.<boot optio|
000bd160  6e 3d 3e 66 73 79 73 5f  6f 70 74 34 3e 0a 0a 54  |n=>fsys_opt4>..T|
000bd170  68 69 73 20 63 61 6c 6c  20 72 65 61 64 73 20 74  |his call reads t|
000bd180  68 65 20 62 6f 6f 74 20  6f 70 74 69 6f 6e 20 6f  |he boot option o|
000bd190  66 20 61 20 64 69 73 63  2c 20 69 6d 70 6c 65 6d  |f a disc, implem|
000bd1a0  65 6e 74 69 6e 67 20 3c  4f 53 5f 46 53 43 6f 6e  |enting <OS_FSCon|
000bd1b0  74 72 6f 6c 20 34 37 3d  3e 4f 53 5f 46 53 43 6f  |trol 47=>OS_FSCo|
000bd1c0  6e 74 72 6f 6c 34 37 3e  2e 0a 23 0a 23 20 54 68  |ntrol47>..#.# Th|
000bd1d0  69 73 20 65 6e 74 72 79  20 70 6f 69 6e 74 20 69  |is entry point i|
000bd1e0  73 20 6f 6e 6c 79 20 63  61 6c 6c 65 64 20 69 66  |s only called if|
000bd1f0  20 62 69 74 20 32 33 20  6f 66 20 74 68 65 20 66  | bit 23 of the f|
000bd200  69 6c 69 6e 67 20 73 79  73 74 65 6d 20 3c 69 6e  |iling system <in|
000bd210  66 6f 72 6d 61 74 69 6f  6e 20 77 6f 72 64 3d 3e  |formation word=>|
000bd220  66 73 79 73 5f 69 6e 66  6f 77 6f 72 64 3e 20 69  |fsys_infoword> i|
000bd230  73 20 73 65 74 2e 0a 00  44 41 54 41 98 01 00 00  |s set...DATA....|
000bd240  46 53 45 6e 74 72 79 5f  46 75 6e 63 20 32 38 0a  |FSEntry_Func 28.|
000bd250  23 50 61 72 65 6e 74 20  46 53 45 6e 74 72 79 5f  |#Parent FSEntry_|
000bd260  46 75 6e 63 0a 3d 3e 09  52 30 20 3d 09 32 38 20  |Func.=>.R0 =.28 |
000bd270  28 57 72 69 74 65 20 62  6f 6f 74 20 6f 70 74 69  |(Write boot opti|
000bd280  6f 6e 29 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |on)..R1 =.pointe|
000bd290  72 20 74 6f 20 6e 61 6d  65 20 6f 66 20 61 6e 79  |r to name of any|
000bd2a0  20 6f 62 6a 65 63 74 20  6f 6e 20 69 6d 61 67 65  | object on image|
000bd2b0  0a 09 52 32 20 3d 09 6e  65 77 20 3c 62 6f 6f 74  |..R2 =.new <boot|
000bd2c0  20 6f 70 74 69 6f 6e 3d  3e 66 73 79 73 5f 6f 70  | option=>fsys_op|
000bd2d0  74 34 3e 0a 09 52 36 20  3d 09 70 6f 69 6e 74 65  |t4>..R6 =.pointe|
000bd2e0  72 20 74 6f 20 73 70 65  63 69 61 6c 20 66 69 65  |r to special fie|
000bd2f0  6c 64 2c 20 6f 72 20 30  20 69 66 20 6e 6f 74 20  |ld, or 0 if not |
000bd300  70 72 65 73 65 6e 74 0a  0a 54 68 69 73 20 63 61  |present..This ca|
000bd310  6c 6c 20 73 65 74 73 20  74 68 65 20 62 6f 6f 74  |ll sets the boot|
000bd320  20 6f 70 74 69 6f 6e 20  6f 66 20 61 20 64 69 73  | option of a dis|
000bd330  63 2c 20 69 6d 70 6c 65  6d 65 6e 74 69 6e 67 20  |c, implementing |
000bd340  3c 4f 53 5f 46 53 43 6f  6e 74 72 6f 6c 20 34 38  |<OS_FSControl 48|
000bd350  3d 3e 4f 53 5f 46 53 43  6f 6e 74 72 6f 6c 34 37  |=>OS_FSControl47|
000bd360  3e 2e 0a 23 0a 23 20 54  68 69 73 20 65 6e 74 72  |>..#.# This entr|
000bd370  79 20 70 6f 69 6e 74 20  69 73 20 6f 6e 6c 79 20  |y point is only |
000bd380  63 61 6c 6c 65 64 20 69  66 20 62 69 74 20 32 33  |called if bit 23|
000bd390  20 6f 66 20 74 68 65 20  66 69 6c 69 6e 67 20 73  | of the filing s|
000bd3a0  79 73 74 65 6d 20 3c 69  6e 66 6f 72 6d 61 74 69  |ystem <informati|
000bd3b0  6f 6e 20 77 6f 72 64 3d  3e 66 73 79 73 5f 69 6e  |on word=>fsys_in|
000bd3c0  66 6f 77 6f 72 64 3e 20  69 73 20 73 65 74 2e 0a  |foword> is set..|
000bd3d0  44 41 54 41 c2 02 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000bd3e0  46 75 6e 63 20 32 39 0a  23 50 61 72 65 6e 74 20  |Func 29.#Parent |
000bd3f0  46 53 45 6e 74 72 79 5f  46 75 6e 63 0a 3d 3e 09  |FSEntry_Func.=>.|
000bd400  52 30 20 3d 09 32 39 20  28 52 65 61 64 20 75 73  |R0 =.29 (Read us|
000bd410  65 64 20 73 70 61 63 65  20 6d 61 70 29 0a 09 52  |ed space map)..R|
000bd420  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 6e  |1 =.pointer to n|
000bd430  61 6d 65 20 6f 66 20 61  6e 79 20 6f 62 6a 65 63  |ame of any objec|
000bd440  74 20 6f 6e 20 69 6d 61  67 65 0a 09 52 32 20 3d  |t on image..R2 =|
000bd450  09 70 6f 69 6e 74 65 72  20 74 6f 20 62 75 66 66  |.pointer to buff|
000bd460  65 72 0a 09 52 35 20 3d  09 73 69 7a 65 20 6f 66  |er..R5 =.size of|
000bd470  20 62 75 66 66 65 72 0a  09 52 36 20 3d 09 70 6f  | buffer..R6 =.po|
000bd480  69 6e 74 65 72 20 74 6f  20 73 70 65 63 69 61 6c  |inter to special|
000bd490  20 66 69 65 6c 64 2c 20  6f 72 20 30 20 69 66 20  | field, or 0 if |
000bd4a0  6e 6f 74 20 70 72 65 73  65 6e 74 0a 0a 54 68 69  |not present..Thi|
000bd4b0  73 20 63 61 6c 6c 20 72  65 61 64 73 20 74 68 65  |s call reads the|
000bd4c0  20 75 73 65 64 20 73 70  61 63 65 20 6d 61 70 20  | used space map |
000bd4d0  6f 66 20 61 6e 20 69 6d  61 67 65 2c 20 69 6d 70  |of an image, imp|
000bd4e0  6c 65 6d 65 6e 74 69 6e  67 20 3c 4f 53 5f 46 53  |lementing <OS_FS|
000bd4f0  43 6f 6e 74 72 6f 6c 20  34 36 3d 3e 4f 53 5f 46  |Control 46=>OS_F|
000bd500  53 43 6f 6e 74 72 6f 6c  34 36 3e 2e 20 54 68 65  |SControl46>. The|
000bd510  20 62 75 66 66 65 72 20  69 73 20 70 72 65 2d 66  | buffer is pre-f|
000bd520  69 6c 6c 65 64 20 77 69  74 68 20 30 73 20 2d 20  |illed with 0s - |
000bd530  79 6f 75 20 6d 75 73 74  20 66 69 6c 6c 20 69 74  |you must fill it|
000bd540  20 77 69 74 68 20 31 73  20 66 6f 72 20 75 73 65  | with 1s for use|
000bd550  64 20 62 6c 6f 63 6b 73  2c 20 74 6f 20 74 68 65  |d blocks, to the|
000bd560  20 6c 69 6d 69 74 20 6f  66 20 74 68 65 20 69 6d  | limit of the im|
000bd570  61 67 65 2f 74 68 65 20  62 75 66 66 65 72 2e 0a  |age/the buffer..|
000bd580  23 20 47 65 72 70 68 3e  20 54 68 69 73 20 69 6d  |# Gerph> This im|
000bd590  70 6c 69 65 73 20 74 68  61 74 20 79 6f 75 20 6e  |plies that you n|
000bd5a0  65 76 65 72 20 72 65 74  75 72 6e 20 61 6e 20 65  |ever return an e|
000bd5b0  72 72 6f 72 20 69 66 20  74 68 65 20 62 75 66 66  |rror if the buff|
000bd5c0  65 72 20 69 73 20 74 6f  6f 0a 23 20 20 20 20 20  |er is too.#     |
000bd5d0  20 20 20 73 68 6f 72 74  2e 20 57 6f 75 6c 64 20  |   short. Would |
000bd5e0  74 68 61 74 20 62 65 20  72 69 67 68 74 20 3f 0a  |that be right ?.|
000bd5f0  23 20 4e 3e 20 50 52 4d  20 32 2d 35 37 34 20 69  |# N> PRM 2-574 i|
000bd600  6d 70 6c 69 65 73 20 74  68 69 73 2e 20 53 65 65  |mplies this. See|
000bd610  6d 73 20 64 61 66 74 20  69 66 20 79 6f 75 20 61  |ms daft if you a|
000bd620  73 6b 20 6d 65 2e 0a 23  20 54 68 69 73 20 65 6e  |sk me..# This en|
000bd630  74 72 79 20 70 6f 69 6e  74 20 69 73 20 6f 6e 6c  |try point is onl|
000bd640  79 20 63 61 6c 6c 65 64  20 69 66 20 62 69 74 20  |y called if bit |
000bd650  32 33 20 6f 66 20 74 68  65 20 66 69 6c 69 6e 67  |23 of the filing|
000bd660  20 73 79 73 74 65 6d 20  3c 69 6e 66 6f 72 6d 61  | system <informa|
000bd670  74 69 6f 6e 20 77 6f 72  64 3d 3e 66 73 79 73 5f  |tion word=>fsys_|
000bd680  69 6e 66 6f 77 6f 72 64  3e 20 69 73 20 73 65 74  |infoword> is set|
000bd690  2e 0a 00 00 44 41 54 41  9c 01 00 00 46 53 45 6e  |....DATA....FSEn|
000bd6a0  74 72 79 5f 46 75 6e 63  20 33 0a 23 50 61 72 65  |try_Func 3.#Pare|
000bd6b0  6e 74 20 46 53 45 6e 74  72 79 5f 46 75 6e 63 0a  |nt FSEntry_Func.|
000bd6c0  3d 3e 09 52 30 20 3d 09  33 20 28 45 78 61 6d 69  |=>.R0 =.3 (Exami|
000bd6d0  6e 65 20 64 69 72 65 63  74 6f 72 79 29 0a 09 52  |ne directory)..R|
000bd6e0  31 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 28  |1 =.pointer to (|
000bd6f0  77 69 6c 63 61 72 64 65  64 29 20 64 69 72 65 63  |wilcarded) direc|
000bd700  74 6f 72 79 20 6e 61 6d  65 0a 09 52 36 20 3d 09  |tory name..R6 =.|
000bd710  70 6f 69 6e 74 65 72 20  74 6f 20 73 70 65 63 69  |pointer to speci|
000bd720  61 6c 20 66 69 65 6c 64  2c 20 6f 72 20 30 20 69  |al field, or 0 i|
000bd730  66 20 6e 6f 74 20 70 72  65 73 65 6e 74 0a 0a 54  |f not present..T|
000bd740  68 69 73 20 63 61 6c 6c  20 73 68 6f 75 6c 64 20  |his call should |
000bd750  70 72 69 6e 74 20 69 6e  66 6f 72 6d 61 74 69 6f  |print informatio|
000bd760  6e 20 6f 6e 20 6f 62 6a  65 63 74 73 20 69 6e 20  |n on objects in |
000bd770  61 20 64 69 72 65 63 74  6f 72 79 20 2d 20 69 74  |a directory - it|
000bd780  20 69 6d 70 6c 65 6d 65  6e 74 73 20 7b 66 43 6f  | implements {fCo|
000bd790  64 65 7d 2a 45 78 7b 66  7d 2e 20 49 74 20 69 73  |de}*Ex{f}. It is|
000bd7a0  20 61 6c 77 61 79 73 20  63 61 6c 6c 65 64 20 62  | always called b|
000bd7b0  79 20 52 49 53 43 20 4f  53 20 32 2c 20 6f 72 20  |y RISC OS 2, or |
000bd7c0  6f 6e 6c 79 20 62 79 6c  61 74 65 72 20 76 65 72  |only bylater ver|
000bd7d0  73 69 6f 6e 73 20 6f 66  20 52 49 53 43 20 4f 53  |sions of RISC OS|
000bd7e0  20 77 68 65 6e 20 62 69  74 20 32 20 6f 66 20 74  | when bit 2 of t|
000bd7f0  68 65 20 3c 65 78 74 72  61 20 66 69 6c 69 6e 67  |he <extra filing|
000bd800  20 73 79 73 74 65 6d 20  69 6e 66 6f 20 77 6f 72  | system info wor|
000bd810  64 3d 3e 66 73 79 73 5f  65 78 74 72 61 5f 69 6e  |d=>fsys_extra_in|
000bd820  66 6f 77 6f 72 64 3e 20  69 73 20 73 65 74 2e 0a  |foword> is set..|
000bd830  44 41 54 41 ce 01 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000bd840  46 75 6e 63 20 33 30 0a  23 50 61 72 65 6e 74 20  |Func 30.#Parent |
000bd850  46 53 45 6e 74 72 79 5f  46 75 6e 63 0a 3d 3e 09  |FSEntry_Func.=>.|
000bd860  52 30 20 3d 09 33 30 20  28 52 65 61 64 20 66 72  |R0 =.30 (Read fr|
000bd870  65 65 20 73 70 61 63 65  29 0a 09 52 31 20 3d 09  |ee space)..R1 =.|
000bd880  70 6f 69 6e 74 65 72 20  74 6f 20 6e 61 6d 65 20  |pointer to name |
000bd890  6f 66 20 61 6e 79 20 6f  62 6a 65 63 74 20 6f 6e  |of any object on|
000bd8a0  20 69 6d 61 67 65 0a 09  52 36 20 3d 09 70 6f 69  | image..R6 =.poi|
000bd8b0  6e 74 65 72 20 74 6f 20  73 70 65 63 69 61 6c 20  |nter to special |
000bd8c0  66 69 65 6c 64 2c 20 6f  72 20 30 20 69 66 20 6e  |field, or 0 if n|
000bd8d0  6f 74 20 70 72 65 73 65  6e 74 0a 0a 3c 3d 09 52  |ot present..<=.R|
000bd8e0  30 20 3d 09 66 72 65 65  20 73 70 61 63 65 0a 09  |0 =.free space..|
000bd8f0  52 31 20 3d 09 73 69 7a  65 20 6f 66 20 6c 61 72  |R1 =.size of lar|
000bd900  67 65 73 74 20 6f 62 6a  65 63 74 20 74 68 61 74  |gest object that|
000bd910  20 63 61 6e 20 62 65 20  63 72 65 61 74 65 64 2e  | can be created.|
000bd920  0a 09 52 32 20 3d 09 73  69 7a 65 20 6f 66 20 64  |..R2 =.size of d|
000bd930  69 73 63 0a 0a 54 68 69  73 20 63 61 6c 6c 20 72  |isc..This call r|
000bd940  65 61 64 73 20 74 68 65  20 66 72 65 65 20 73 70  |eads the free sp|
000bd950  61 63 65 20 6f 66 20 61  6e 20 69 6d 61 67 65 2c  |ace of an image,|
000bd960  20 69 6d 70 6c 65 6d 65  6e 74 69 6e 67 20 3c 4f  | implementing <O|
000bd970  53 5f 46 53 43 6f 6e 74  72 6f 6c 20 34 39 3d 3e  |S_FSControl 49=>|
000bd980  4f 53 5f 46 53 43 6f 6e  74 72 6f 6c 34 39 3e 2e  |OS_FSControl49>.|
000bd990  0a 23 0a 23 20 54 68 69  73 20 65 6e 74 72 79 20  |.#.# This entry |
000bd9a0  70 6f 69 6e 74 20 69 73  20 6f 6e 6c 79 20 63 61  |point is only ca|
000bd9b0  6c 6c 65 64 20 69 66 20  62 69 74 20 32 33 20 6f  |lled if bit 23 o|
000bd9c0  66 20 74 68 65 20 66 69  6c 69 6e 67 20 73 79 73  |f the filing sys|
000bd9d0  74 65 6d 20 3c 69 6e 66  6f 72 6d 61 74 69 6f 6e  |tem <information|
000bd9e0  20 77 6f 72 64 3d 3e 66  73 79 73 5f 69 6e 66 6f  | word=>fsys_info|
000bd9f0  77 6f 72 64 3e 20 69 73  20 73 65 74 2e 0a 00 00  |word> is set....|
000bda00  44 41 54 41 9a 01 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000bda10  46 75 6e 63 20 33 31 0a  23 50 61 72 65 6e 74 20  |Func 31.#Parent |
000bda20  46 53 45 6e 74 72 79 5f  46 75 6e 63 0a 3d 3e 09  |FSEntry_Func.=>.|
000bda30  52 30 20 3d 09 33 31 20  28 4e 61 6d 65 20 69 6d  |R0 =.31 (Name im|
000bda40  61 67 65 29 0a 09 52 31  20 3d 09 70 6f 69 6e 74  |age)..R1 =.point|
000bda50  65 72 20 74 6f 20 6e 61  6d 65 20 6f 66 20 61 6e  |er to name of an|
000bda60  79 20 6f 62 6a 65 63 74  20 6f 6e 20 69 6d 61 67  |y object on imag|
000bda70  65 0a 09 52 32 20 3d 09  70 6f 69 6e 74 65 72 20  |e..R2 =.pointer |
000bda80  74 6f 20 6e 65 77 20 2a  64 69 73 63 20 6e 61 6d  |to new *disc nam|
000bda90  65 2a 20 66 6f 72 20 69  6d 61 67 65 0a 09 52 36  |e* for image..R6|
000bdaa0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 73 70  | =.pointer to sp|
000bdab0  65 63 69 61 6c 20 66 69  65 6c 64 2c 20 6f 72 20  |ecial field, or |
000bdac0  30 20 69 66 20 6e 6f 74  20 70 72 65 73 65 6e 74  |0 if not present|
000bdad0  0a 0a 54 68 69 73 20 63  61 6c 6c 20 73 65 74 73  |..This call sets|
000bdae0  20 74 68 65 20 64 69 73  63 20 6e 61 6d 65 20 66  | the disc name f|
000bdaf0  6f 72 20 61 6e 20 69 6d  61 67 65 2c 20 69 6d 70  |or an image, imp|
000bdb00  6c 65 6d 65 6e 74 69 6e  67 20 3c 4f 53 5f 46 53  |lementing <OS_FS|
000bdb10  43 6f 6e 74 72 6f 6c 20  35 30 3d 3e 4f 53 5f 46  |Control 50=>OS_F|
000bdb20  53 43 6f 6e 74 72 6f 6c  35 30 3e 2e 0a 23 0a 23  |SControl50>..#.#|
000bdb30  20 54 68 69 73 20 65 6e  74 72 79 20 70 6f 69 6e  | This entry poin|
000bdb40  74 20 69 73 20 6f 6e 6c  79 20 63 61 6c 6c 65 64  |t is only called|
000bdb50  20 69 66 20 62 69 74 20  32 33 20 6f 66 20 74 68  | if bit 23 of th|
000bdb60  65 20 66 69 6c 69 6e 67  20 73 79 73 74 65 6d 20  |e filing system |
000bdb70  3c 69 6e 66 6f 72 6d 61  74 69 6f 6e 20 77 6f 72  |<information wor|
000bdb80  64 3d 3e 66 73 79 73 5f  69 6e 66 6f 77 6f 72 64  |d=>fsys_infoword|
000bdb90  3e 20 69 73 20 73 65 74  2e 0a 00 00 44 41 54 41  |> is set....DATA|
000bdba0  c5 01 00 00 46 53 45 6e  74 72 79 5f 46 75 6e 63  |....FSEntry_Func|
000bdbb0  20 33 32 0a 23 50 61 72  65 6e 74 20 46 53 45 6e  | 32.#Parent FSEn|
000bdbc0  74 72 79 5f 46 75 6e 63  0a 3d 3e 09 52 30 20 3d  |try_Func.=>.R0 =|
000bdbd0  09 33 32 20 28 53 74 61  6d 70 20 69 6d 61 67 65  |.32 (Stamp image|
000bdbe0  29 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |)..R1 =.pointer |
000bdbf0  74 6f 20 6e 61 6d 65 20  6f 66 20 61 6e 79 20 6f  |to name of any o|
000bdc00  62 6a 65 63 74 20 6f 6e  20 69 6d 61 67 65 0a 09  |bject on image..|
000bdc10  52 32 20 3d 09 30 20 28  73 74 61 6d 70 20 77 68  |R2 =.0 (stamp wh|
000bdc20  65 6e 20 75 70 64 61 74  65 64 29 0a 09 20 09 31  |en updated).. .1|
000bdc30  20 28 73 74 61 6d 70 20  6e 6f 77 29 0a 09 52 36  | (stamp now)..R6|
000bdc40  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 73 70  | =.pointer to sp|
000bdc50  65 63 69 61 6c 20 66 69  65 6c 64 2c 20 6f 72 20  |ecial field, or |
000bdc60  30 20 69 66 20 6e 6f 74  20 70 72 65 73 65 6e 74  |0 if not present|
000bdc70  0a 0a 54 68 69 73 20 63  61 6c 6c 20 72 65 71 75  |..This call requ|
000bdc80  65 73 74 73 20 74 68 61  74 20 74 68 65 20 3c 63  |ests that the <c|
000bdc90  79 63 6c 65 20 49 44 3d  3e 46 69 6c 65 43 6f 72  |ycle ID=>FileCor|
000bdca0  65 5f 63 79 63 6c 65 69  64 3e 20 6f 66 20 74 68  |e_cycleid> of th|
000bdcb0  65 20 69 6d 61 67 65 20  62 65 20 75 70 64 61 74  |e image be updat|
000bdcc0  65 64 2c 20 69 6d 70 6c  65 6d 65 6e 74 69 6e 67  |ed, implementing|
000bdcd0  20 3c 4f 53 5f 46 53 43  6f 6e 74 72 6f 6c 20 35  | <OS_FSControl 5|
000bdce0  31 3d 3e 4f 53 5f 46 53  43 6f 6e 74 72 6f 6c 35  |1=>OS_FSControl5|
000bdcf0  31 3e 2e 0a 23 0a 23 20  54 68 69 73 20 65 6e 74  |1>..#.# This ent|
000bdd00  72 79 20 70 6f 69 6e 74  20 69 73 20 6f 6e 6c 79  |ry point is only|
000bdd10  20 63 61 6c 6c 65 64 20  69 66 20 62 69 74 20 32  | called if bit 2|
000bdd20  33 20 6f 66 20 74 68 65  20 66 69 6c 69 6e 67 20  |3 of the filing |
000bdd30  73 79 73 74 65 6d 20 3c  69 6e 66 6f 72 6d 61 74  |system <informat|
000bdd40  69 6f 6e 20 77 6f 72 64  3d 3e 66 73 79 73 5f 69  |ion word=>fsys_i|
000bdd50  6e 66 6f 77 6f 72 64 3e  20 69 73 20 73 65 74 2e  |nfoword> is set.|
000bdd60  0a 00 00 00 44 41 54 41  89 03 00 00 46 53 45 6e  |....DATA....FSEn|
000bdd70  74 72 79 5f 46 75 6e 63  20 33 33 0a 23 50 61 72  |try_Func 33.#Par|
000bdd80  65 6e 74 20 46 53 45 6e  74 72 79 5f 46 75 6e 63  |ent FSEntry_Func|
000bdd90  0a 3d 3e 09 52 30 20 3d  09 33 33 20 28 47 65 74  |.=>.R0 =.33 (Get|
000bdda0  20 75 73 61 67 65 20 6f  66 20 6f 66 66 73 65 74  | usage of offset|
000bddb0  29 0a 09 52 31 20 3d 09  70 6f 69 6e 74 65 72 20  |)..R1 =.pointer |
000bddc0  74 6f 20 6e 61 6d 65 20  6f 66 20 61 6e 79 20 6f  |to name of any o|
000bddd0  62 6a 65 63 74 20 6f 6e  20 69 6d 61 67 65 0a 09  |bject on image..|
000bdde0  52 32 20 3d 09 6f 66 66  73 65 74 20 69 6e 74 6f  |R2 =.offset into|
000bddf0  20 69 6d 61 67 65 20 66  69 6c 65 20 6f 72 20 64  | image file or d|
000bde00  69 73 63 0a 09 52 33 20  3d 09 70 6f 69 6e 74 65  |isc..R3 =.pointe|
000bde10  72 20 74 6f 20 62 75 66  66 65 72 20 74 6f 20 72  |r to buffer to r|
000bde20  65 63 65 69 76 65 20 6f  62 6a 65 63 74 20 6e 61  |eceive object na|
000bde30  6d 65 0a 09 52 34 20 3d  09 62 75 66 66 65 72 20  |me..R4 =.buffer |
000bde40  6c 65 6e 67 74 68 0a 09  52 36 20 3d 09 70 6f 69  |length..R6 =.poi|
000bde50  6e 74 65 72 20 74 6f 20  73 70 65 63 69 61 6c 20  |nter to special |
000bde60  66 69 65 6c 64 2c 20 6f  72 20 30 20 69 66 20 6e  |field, or 0 if n|
000bde70  6f 74 20 70 72 65 73 65  6e 74 0a 0a 3c 3d 09 42  |ot present..<=.B|
000bde80  75 66 66 65 72 20 63 6f  6e 74 61 69 6e 73 20 6f  |uffer contains o|
000bde90  62 6a 65 63 74 20 6e 61  6d 65 20 28 6d 61 79 20  |bject name (may |
000bdea0  62 65 20 63 6f 72 72 75  70 74 65 64 20 69 66 20  |be corrupted if |
000bdeb0  6e 6f 74 20 66 6f 75 6e  64 29 0a 09 52 32 20 3d  |not found)..R2 =|
000bdec0  09 3c 4f 62 6a 65 63 74  20 74 79 70 65 3d 3e 4f  |.<Object type=>O|
000bded0  53 5f 46 53 43 6f 6e 74  72 6f 6c 35 32 6f 62 6a  |S_FSControl52obj|
000bdee0  65 63 74 3e 0a 09 4f 74  68 65 72 20 72 65 67 69  |ect>..Other regi|
000bdef0  73 74 65 72 73 20 70 72  65 73 65 72 76 65 64 0a  |sters preserved.|
000bdf00  0a 54 68 69 73 20 63 61  6c 6c 20 73 63 61 6e 73  |.This call scans|
000bdf10  20 61 20 64 69 73 63 20  6f 72 20 69 6d 61 67 65  | a disc or image|
000bdf20  20 66 69 6c 65 20 74 6f  20 66 69 6e 64 20 77 68  | file to find wh|
000bdf30  69 63 68 20 6f 62 6a 65  63 74 20 6f 63 63 75 70  |ich object occup|
000bdf40  69 65 73 20 61 20 70 61  72 74 69 63 75 6c 61 72  |ies a particular|
000bdf50  20 64 69 73 63 20 61 64  64 72 65 73 73 2c 20 69  | disc address, i|
000bdf60  6d 70 6c 65 6d 65 6e 74  69 6e 67 20 3c 4f 53 5f  |mplementing <OS_|
000bdf70  46 53 43 6f 6e 74 72 6f  6c 20 35 32 3d 3e 4f 53  |FSControl 52=>OS|
000bdf80  5f 46 53 43 6f 6e 74 72  6f 6c 35 32 3e 2e 0a 23  |_FSControl52>..#|
000bdf90  0a 23 20 4e 3e 20 54 68  69 73 20 65 6e 74 72 79  |.# N> This entry|
000bdfa0  20 70 6f 69 6e 74 20 69  73 20 6f 6e 6c 79 20 63  | point is only c|
000bdfb0  61 6c 6c 65 64 20 69 66  20 62 69 74 20 32 33 20  |alled if bit 23 |
000bdfc0  6f 66 20 74 68 65 20 66  69 6c 69 6e 67 20 73 79  |of the filing sy|
000bdfd0  73 74 65 6d 20 3c 69 6e  66 6f 72 6d 61 74 69 6f  |stem <informatio|
000bdfe0  6e 20 77 6f 72 64 3d 3e  66 73 79 73 5f 69 6e 66  |n word=>fsys_inf|
000bdff0  6f 77 6f 72 64 3e 20 69  73 20 73 65 74 2e 0a 23  |oword> is set..#|
000be000  20 47 65 72 70 68 3e 20  48 6d 6d 3f 20 49 73 20  | Gerph> Hmm? Is |
000be010  74 68 61 74 20 6e 6f 74  20 74 72 75 65 20 3f 0a  |that not true ?.|
000be020  23 20 4e 3e 20 57 65 6c  6c 2c 20 49 27 64 27 76  |# N> Well, I'd'v|
000be030  65 20 74 68 6f 75 67 68  74 20 69 74 20 74 6f 20  |e thought it to |
000be040  62 65 20 74 72 75 65 20  28 77 68 69 63 68 20 69  |be true (which i|
000be050  73 20 77 68 79 20 49 20  6c 65 66 74 20 74 68 65  |s why I left the|
000be060  20 74 65 78 74 20 69 6e  29 20 62 75 74 0a 23 20  | text in) but.# |
000be070  20 20 20 74 68 61 74 20  66 6f 6e 74 20 6f 66 20  |   that font of |
000be080  61 6c 6c 20 28 61 63 63  75 72 61 74 65 29 20 6b  |all (accurate) k|
000be090  6e 6f 77 6c 65 64 67 65  20 50 52 4d 20 32 2d 35  |nowledge PRM 2-5|
000be0a0  37 38 20 64 6f 65 73 6e  27 74 20 73 61 79 20 73  |78 doesn't say s|
000be0b0  6f 20 28 62 75 74 20 64  6f 65 73 0a 23 20 20 20  |o (but does.#   |
000be0c0  20 73 61 79 20 73 6f 20  65 78 70 6c 69 63 69 74  | say so explicit|
000be0d0  6c 79 20 66 6f 72 20 46  53 45 6e 74 72 79 5f 46  |ly for FSEntry_F|
000be0e0  75 6e 63 32 34 29 2e 20  44 27 6f 68 0a 00 00 00  |unc24). D'oh....|
000be0f0  44 41 54 41 f0 01 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000be100  46 75 6e 63 20 33 34 0a  23 50 61 72 65 6e 74 20  |Func 34.#Parent |
000be110  46 53 45 6e 74 72 79 5f  46 75 6e 63 0a 3d 3e 09  |FSEntry_Func.=>.|
000be120  52 30 20 3d 09 33 34 20  28 4e 6f 74 69 66 69 63  |R0 =.34 (Notific|
000be130  61 74 69 6f 6e 20 6f 66  20 63 68 61 6e 67 65 64  |ation of changed|
000be140  20 64 69 72 65 63 74 6f  72 79 29 0a 09 52 31 20  | directory)..R1 |
000be150  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 6e 61 6d  |=.pointer to nam|
000be160  65 0a 09 52 32 20 3d 09  3c 63 68 61 6e 67 65 64  |e..R2 =.<changed|
000be170  20 64 69 72 65 63 74 6f  72 79 3d 3e 2e 77 68 61  | directory=>.wha|
000be180  74 3e 0a 09 52 36 20 3d  09 70 6f 69 6e 74 65 72  |t>..R6 =.pointer|
000be190  20 74 6f 20 73 70 65 63  69 61 6c 20 66 69 65 6c  | to special fiel|
000be1a0  64 2c 20 6f 72 20 30 20  69 66 20 6e 6f 74 20 70  |d, or 0 if not p|
000be1b0  72 65 73 65 6e 74 0a 0a  54 68 69 73 20 63 61 6c  |resent..This cal|
000be1c0  6c 20 69 6e 66 6f 72 6d  73 20 61 20 66 69 6c 69  |l informs a fili|
000be1d0  6e 67 20 73 79 73 74 65  6d 20 77 68 65 6e 20 61  |ng system when a|
000be1e0  20 64 69 72 65 63 74 6f  72 79 20 68 61 73 20 63  | directory has c|
000be1f0  68 61 6e 67 65 64 2c 20  77 68 69 63 68 20 6d 61  |hanged, which ma|
000be200  79 20 68 65 6c 70 20 61  20 66 69 6c 69 6e 67 20  |y help a filing |
000be210  73 79 73 74 65 6d 20 74  6f 20 63 68 6f 6f 73 65  |system to choose|
000be220  20 77 68 69 63 68 20 64  69 72 65 63 74 6f 72 69  | which directori|
000be230  65 73 20 74 6f 20 63 61  63 68 65 2e 0a 23 53 75  |es to cache..#Su|
000be240  62 70 61 67 65 20 77 68  61 74 0a 46 53 45 6e 74  |bpage what.FSEnt|
000be250  72 79 5f 46 75 6e 63 20  33 34 20 64 69 72 65 63  |ry_Func 34 direc|
000be260  74 6f 72 79 20 63 6f 64  65 73 0a 5c 23 09 4d 65  |tory codes.\#.Me|
000be270  61 6e 69 6e 67 0a 23 4c  69 6e 65 0a 30 09 43 53  |aning.#Line.0.CS|
000be280  44 09 43 75 72 72 65 6e  74 20 64 69 72 65 63 74  |D.Current direct|
000be290  6f 72 79 0a 31 09 50 53  44 09 50 72 65 76 69 6f  |ory.1.PSD.Previo|
000be2a0  75 73 6c 79 20 73 65 6c  65 63 74 65 64 20 64 69  |usly selected di|
000be2b0  72 65 63 74 6f 72 79 0a  32 09 55 52 44 09 55 73  |rectory.2.URD.Us|
000be2c0  65 72 20 72 6f 6f 74 20  64 69 72 65 63 74 6f 72  |er root director|
000be2d0  79 0a 33 09 4c 69 62 09  4c 69 62 72 61 72 79 0a  |y.3.Lib.Library.|
000be2e0  44 41 54 41 a1 01 00 00  46 53 45 6e 74 72 79 5f  |DATA....FSEntry_|
000be2f0  46 75 6e 63 20 34 0a 23  50 61 72 65 6e 74 20 46  |Func 4.#Parent F|
000be300  53 45 6e 74 72 79 5f 46  75 6e 63 0a 3d 3e 09 52  |SEntry_Func.=>.R|
000be310  30 20 3d 09 34 20 28 43  61 74 61 6c 6f 67 75 65  |0 =.4 (Catalogue|
000be320  20 6c 69 62 72 61 72 79  29 0a 09 52 31 20 3d 09  | library)..R1 =.|
000be330  70 6f 69 6e 74 65 72 20  74 6f 20 28 77 69 6c 63  |pointer to (wilc|
000be340  61 72 64 65 64 29 20 64  69 72 65 63 74 6f 72 79  |arded) directory|
000be350  20 6e 61 6d 65 0a 09 52  36 20 3d 09 70 6f 69 6e  | name..R6 =.poin|
000be360  74 65 72 20 74 6f 20 73  70 65 63 69 61 6c 20 66  |ter to special f|
000be370  69 65 6c 64 2c 20 6f 72  20 30 20 69 66 20 6e 6f  |ield, or 0 if no|
000be380  74 20 70 72 65 73 65 6e  74 0a 0a 54 68 69 73 20  |t present..This |
000be390  63 61 6c 6c 20 73 68 6f  75 6c 64 20 63 61 74 61  |call should cata|
000be3a0  6c 6f 67 75 65 20 61 20  64 69 72 65 63 74 6f 72  |logue a director|
000be3b0  79 20 72 65 6c 61 74 69  76 65 20 74 6f 20 74 68  |y relative to th|
000be3c0  65 20 6c 69 62 72 61 72  79 20 2d 20 69 74 20 69  |e library - it i|
000be3d0  6d 70 6c 65 6d 65 6e 74  73 20 7b 66 43 6f 64 65  |mplements {fCode|
000be3e0  7d 2a 4c 43 61 74 7b 66  7d 2e 20 49 74 20 69 73  |}*LCat{f}. It is|
000be3f0  20 61 6c 77 61 79 73 20  63 61 6c 6c 65 64 20 62  | always called b|
000be400  79 20 52 49 53 43 20 4f  53 20 32 2c 20 6f 72 20  |y RISC OS 2, or |
000be410  6f 6e 6c 79 20 62 79 20  6c 61 74 65 72 20 76 65  |only by later ve|
000be420  72 73 69 6f 6e 73 20 6f  66 20 52 49 53 43 20 4f  |rsions of RISC O|
000be430  53 20 77 68 65 6e 20 62  69 74 20 31 20 6f 66 20  |S when bit 1 of |
000be440  74 68 65 20 3c 65 78 74  72 61 20 66 69 6c 69 6e  |the <extra filin|
000be450  67 20 73 79 73 74 65 6d  20 69 6e 66 6f 20 77 6f  |g system info wo|
000be460  72 64 3d 3e 66 73 79 73  5f 65 78 74 72 61 5f 69  |rd=>fsys_extra_i|
000be470  6e 66 6f 77 6f 72 64 3e  20 69 73 20 73 65 74 2e  |nfoword> is set.|
000be480  0a 00 00 00 44 41 54 41  b5 01 00 00 46 53 45 6e  |....DATA....FSEn|
000be490  74 72 79 5f 46 75 6e 63  20 35 0a 23 50 61 72 65  |try_Func 5.#Pare|
000be4a0  6e 74 20 46 53 45 6e 74  72 79 5f 46 75 6e 63 0a  |nt FSEntry_Func.|
000be4b0  3d 3e 09 52 30 20 3d 09  35 20 28 45 78 61 6d 69  |=>.R0 =.5 (Exami|
000be4c0  6e 65 20 6c 69 62 72 61  72 79 29 0a 09 52 31 20  |ne library)..R1 |
000be4d0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 28 77 69  |=.pointer to (wi|
000be4e0  6c 63 61 72 64 65 64 29  20 64 69 72 65 63 74 6f  |lcarded) directo|
000be4f0  72 79 20 6e 61 6d 65 0a  09 52 36 20 3d 09 70 6f  |ry name..R6 =.po|
000be500  69 6e 74 65 72 20 74 6f  20 73 70 65 63 69 61 6c  |inter to special|
000be510  20 66 69 65 6c 64 2c 20  6f 72 20 30 20 69 66 20  | field, or 0 if |
000be520  6e 6f 74 20 70 72 65 73  65 6e 74 0a 0a 54 68 69  |not present..Thi|
000be530  73 20 63 61 6c 6c 20 73  68 6f 75 6c 64 20 70 72  |s call should pr|
000be540  69 6e 74 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |int information |
000be550  6f 6e 20 6f 62 6a 65 63  74 73 20 69 6e 20 61 20  |on objects in a |
000be560  64 69 72 65 63 74 6f 72  79 20 20 72 65 6c 61 74  |directory  relat|
000be570  69 76 65 20 74 6f 20 74  68 65 20 6c 69 62 72 61  |ive to the libra|
000be580  72 79 20 2d 20 69 74 20  69 6d 70 6c 65 6d 65 6e  |ry - it implemen|
000be590  74 73 20 7b 66 43 6f 64  65 7d 2a 4c 45 78 7b 66  |ts {fCode}*LEx{f|
000be5a0  7d 2e 20 49 74 20 69 73  20 61 6c 77 61 79 73 20  |}. It is always |
000be5b0  63 61 6c 6c 65 64 20 62  79 20 52 49 53 43 20 4f  |called by RISC O|
000be5c0  53 20 32 2c 20 6f 72 20  6f 6e 6c 79 20 62 79 20  |S 2, or only by |
000be5d0  6c 61 74 65 72 20 76 65  72 73 69 6f 6e 73 20 6f  |later versions o|
000be5e0  66 20 52 49 53 43 20 4f  53 20 77 68 65 6e 20 62  |f RISC OS when b|
000be5f0  69 74 20 32 20 6f 66 20  74 68 65 20 3c 65 78 74  |it 2 of the <ext|
000be600  72 61 20 66 69 6c 69 6e  67 20 73 79 73 74 65 6d  |ra filing system|
000be610  20 69 6e 66 6f 20 77 6f  72 64 3d 3e 66 73 79 73  | info word=>fsys|
000be620  5f 65 78 74 72 61 5f 69  6e 66 6f 77 6f 72 64 3e  |_extra_infoword>|
000be630  20 69 73 20 73 65 74 2e  0a 00 00 00 44 41 54 41  | is set.....DATA|
000be640  ab 01 00 00 46 53 45 6e  74 72 79 5f 46 75 6e 63  |....FSEntry_Func|
000be650  20 36 0a 23 50 61 72 65  6e 74 20 46 53 45 6e 74  | 6.#Parent FSEnt|
000be660  72 79 5f 46 75 6e 63 0a  3d 3e 09 52 30 20 3d 09  |ry_Func.=>.R0 =.|
000be670  36 20 28 45 78 61 6d 69  6e 65 20 6f 62 6a 65 63  |6 (Examine objec|
000be680  74 73 29 0a 09 52 31 20  3d 09 70 6f 69 6e 74 65  |ts)..R1 =.pointe|
000be690  72 20 74 6f 20 77 69 6c  63 61 72 64 65 64 20 70  |r to wilcarded p|
000be6a0  61 74 68 6e 61 6d 65 0a  09 52 36 20 3d 09 70 6f  |athname..R6 =.po|
000be6b0  69 6e 74 65 72 20 74 6f  20 73 70 65 63 69 61 6c  |inter to special|
000be6c0  20 66 69 65 6c 64 2c 20  6f 72 20 30 20 69 66 20  | field, or 0 if |
000be6d0  6e 6f 74 20 70 72 65 73  65 6e 74 0a 0a 54 68 69  |not present..Thi|
000be6e0  73 20 63 61 6c 6c 20 73  68 6f 75 6c 64 20 70 72  |s call should pr|
000be6f0  69 6e 74 20 69 6e 66 6f  72 6d 61 74 69 6f 6e 20  |int information |
000be700  6f 6e 20 61 6c 6c 20 6f  62 6a 65 63 74 73 20 6d  |on all objects m|
000be710  61 74 63 68 69 6e 67 20  74 68 65 20 77 69 6c 64  |atching the wild|
000be720  63 61 72 64 65 64 20 70  61 74 68 6e 61 6d 65 20  |carded pathname |
000be730  2d 20 69 74 20 69 6d 70  6c 65 6d 65 6e 74 73 20  |- it implements |
000be740  7b 66 43 6f 64 65 7d 2a  49 6e 66 6f 7b 66 7d 2e  |{fCode}*Info{f}.|
000be750  20 49 74 20 69 73 20 61  6c 77 61 79 73 20 63 61  | It is always ca|
000be760  6c 6c 65 64 20 62 79 20  52 49 53 43 20 4f 53 20  |lled by RISC OS |
000be770  32 2c 20 6f 72 20 6f 6e  6c 79 20 62 79 20 6c 61  |2, or only by la|
000be780  74 65 72 20 76 65 72 73  69 6f 6e 73 20 6f 66 20  |ter versions of |
000be790  52 49 53 43 20 4f 53 20  77 68 65 6e 20 62 69 74  |RISC OS when bit|
000be7a0  20 32 20 6f 66 20 74 68  65 20 3c 65 78 74 72 61  | 2 of the <extra|
000be7b0  20 66 69 6c 69 6e 67 20  73 79 73 74 65 6d 20 69  | filing system i|
000be7c0  6e 66 6f 20 77 6f 72 64  3d 3e 66 73 79 73 5f 65  |nfo word=>fsys_e|
000be7d0  78 74 72 61 5f 69 6e 66  6f 77 6f 72 64 3e 20 69  |xtra_infoword> i|
000be7e0  73 20 73 65 74 2e 0a 00  44 41 54 41 82 01 00 00  |s set...DATA....|
000be7f0  46 53 45 6e 74 72 79 5f  46 75 6e 63 20 37 0a 23  |FSEntry_Func 7.#|
000be800  50 61 72 65 6e 74 20 46  53 45 6e 74 72 79 5f 46  |Parent FSEntry_F|
000be810  75 6e 63 0a 3d 3e 09 52  30 20 3d 09 37 20 28 53  |unc.=>.R0 =.7 (S|
000be820  65 74 20 46 53 20 4f 70  74 69 6f 6e 73 29 0a 09  |et FS Options)..|
000be830  52 31 20 3d 09 3c 6f 70  74 69 6f 6e 20 6e 75 6d  |R1 =.<option num|
000be840  62 65 72 3d 3e 66 73 79  73 5f 6f 70 74 73 3e 0a  |ber=>fsys_opts>.|
000be850  09 52 32 20 3d 09 70 61  72 61 6d 65 74 65 72 0a  |.R2 =.parameter.|
000be860  09 52 36 20 3d 09 30 2c  20 61 73 20 73 70 65 63  |.R6 =.0, as spec|
000be870  69 61 6c 20 66 69 65 6c  64 20 6e 6f 74 20 61 6c  |ial field not al|
000be880  6c 6f 77 65 64 20 68 65  72 65 0a 0a 65 6e 74 72  |lowed here..entr|
000be890  79 20 52 31 09 41 63 74  69 6f 6e 0a 23 4c 69 6e  |y R1.Action.#Lin|
000be8a0  65 0a 30 09 09 74 68 69  73 20 63 61 6c 6c 20 73  |e.0..this call s|
000be8b0  68 6f 75 6c 64 20 72 65  73 65 74 20 61 6c 6c 20  |hould reset all |
000be8c0  66 69 6c 69 6e 67 20 73  79 73 74 65 6d 20 6f 70  |filing system op|
000be8d0  74 69 6f 6e 73 2e 0a 31  09 09 6e 65 76 65 72 20  |tions..1..never |
000be8e0  63 61 6c 6c 65 64 20 2d  20 46 69 6c 65 53 77 69  |called - FileSwi|
000be8f0  74 63 68 20 6d 61 69 6e  74 61 69 6e 73 20 73 65  |tch maintains se|
000be900  74 74 69 6e 67 73 0a 34  09 09 73 65 74 20 3c 62  |ttings.4..set <b|
000be910  6f 6f 74 20 66 69 6c 65  20 61 63 74 69 6f 6e 3d  |oot file action=|
000be920  3e 66 73 79 73 5f 6f 70  74 34 3e 0a 0a 4f 74 68  |>fsys_opt4>..Oth|
000be930  65 72 20 6f 70 74 69 6f  6e 73 20 6d 61 79 20 62  |er options may b|
000be940  65 20 75 73 65 64 2c 20  62 75 74 20 73 68 6f 75  |e used, but shou|
000be950  6c 64 20 62 65 20 61 6c  6c 6f 63 61 74 65 64 20  |ld be allocated |
000be960  62 79 20 41 63 6f 72 6e  2e 0a 00 00 44 41 54 41  |by Acorn....DATA|
000be970  8a 01 00 00 46 53 45 6e  74 72 79 5f 46 75 6e 63  |....FSEntry_Func|
000be980  20 39 0a 23 50 61 72 65  6e 74 20 46 53 45 6e 74  | 9.#Parent FSEnt|
000be990  72 79 5f 46 75 6e 63 0a  3d 3e 09 52 30 20 3d 09  |ry_Func.=>.R0 =.|
000be9a0  39 20 28 41 63 63 65 73  73 20 6f 62 6a 65 63 74  |9 (Access object|
000be9b0  73 29 0a 09 52 31 20 3d  09 70 6f 69 6e 74 65 72  |s)..R1 =.pointer|
000be9c0  20 74 6f 20 28 77 69 6c  63 61 72 64 65 64 29 20  | to (wilcarded) |
000be9d0  70 61 74 68 6e 61 6d 65  0a 09 52 32 20 3d 09 3c  |pathname..R2 =.<|
000be9e0  61 74 74 72 69 62 75 74  65 20 73 74 72 69 6e 67  |attribute string|
000be9f0  3d 3e 66 73 79 73 5f 61  63 63 65 73 73 5f 73 74  |=>fsys_access_st|
000bea00  72 69 6e 67 3e 0a 09 52  36 20 3d 09 70 6f 69 6e  |ring>..R6 =.poin|
000bea10  74 65 72 20 74 6f 20 73  70 65 63 69 61 6c 20 66  |ter to special f|
000bea20  69 65 6c 64 2c 20 6f 72  20 30 20 69 66 20 6e 6f  |ield, or 0 if no|
000bea30  74 20 70 72 65 73 65 6e  74 0a 0a 54 68 69 73 20  |t present..This |
000bea40  63 61 6c 6c 20 73 68 6f  75 6c 64 20 73 65 74 20  |call should set |
000bea50  74 68 65 20 61 63 63 65  73 73 20 61 74 74 72 69  |the access attri|
000bea60  62 75 74 65 73 20 66 6f  72 20 61 6c 6c 20 6d 61  |butes for all ma|
000bea70  74 63 68 69 6e 67 20 66  69 6c 65 73 2e 20 49 74  |tching files. It|
000bea80  20 69 6d 70 6c 65 6d 65  6e 74 73 20 20 7b 66 43  | implements  {fC|
000bea90  6f 64 65 7d 2a 41 63 63  65 73 73 7b 66 7d 2e 20  |ode}*Access{f}. |
000beaa0  49 74 20 69 73 20 6f 6e  6c 79 20 6d 61 64 65 20  |It is only made |
000beab0  69 66 20 62 69 74 20 31  38 20 6f 66 20 74 68 65  |if bit 18 of the|
000beac0  20 66 69 6c 69 6e 67 20  73 79 73 74 65 6d 20 3c  | filing system <|
000bead0  69 6e 66 6f 72 6d 61 74  69 6f 6e 20 77 6f 72 64  |information word|
000beae0  3d 3e 66 73 79 73 5f 69  6e 66 6f 77 6f 72 64 3e  |=>fsys_infoword>|
000beaf0  20 73 65 74 2e 0a 00 00  44 49 52 24 54 02 00 00  | set....DIR$T...|
000beb00  54 02 00 00 4c ed 0b 00  48 fd ff ff 6b a4 f1 0b  |T...L...H...k...|
000beb10  0d 08 00 00 13 00 00 00  00 00 00 00 63 6f 6c 6f  |............colo|
000beb20  75 72 76 00 5c f5 0b 00  47 fd ff ff 80 17 be cd  |urv.\...G.......|
000beb30  17 02 00 00 13 00 00 00  00 00 00 00 65 76 65 6e  |............even|
000beb40  74 76 00 00 74 f7 0b 00  48 fd ff ff 6b 36 08 1d  |tv..t...H...k6..|
000beb50  01 02 00 00 13 00 00 00  00 00 00 00 49 6e 73 56  |............InsV|
000beb60  00 00 00 00 78 f9 0b 00  48 fd ff ff 5c d8 68 1a  |....x...H...\.h.|
000beb70  f5 06 00 00 13 00 00 00  00 00 00 00 69 6e 64 65  |............inde|
000beb80  78 00 00 00 70 00 0c 00  47 fd ff ff 84 5c b0 cd  |x...p...G....\..|
000beb90  98 05 00 00 13 00 00 00  00 00 00 00 63 68 61 69  |............chai|
000beba0  6e 00 00 00 08 06 0c 00  48 fd ff ff e5 6e 4a 11  |n.......H....nJ.|
000bebb0  65 06 00 00 13 00 00 00  00 00 00 00 72 75 6c 65  |e...........rule|
000bebc0  73 00 00 00 70 0c 0c 00  47 fd ff ff 98 26 a6 cd  |s...p...G....&..|
000bebd0  b0 00 00 00 33 00 00 00  00 00 00 00 55 70 43 61  |....3.......UpCa|
000bebe0  6c 6c 56 00 20 0d 0c 00  48 fd ff ff fd b2 05 1d  |llV. ...H.......|
000bebf0  81 01 00 00 13 00 00 00  00 00 00 00 43 6e 70 56  |............CnpV|
000bec00  00 00 00 00 a4 0e 0c 00  48 fd ff ff 62 15 45 21  |........H...b.E!|
000bec10  1c 02 00 00 13 00 00 00  00 00 00 00 75 6b 70 6c  |............ukpl|
000bec20  6f 74 76 00 c0 10 0c 00  48 fd ff ff 7c 1d a4 0b  |otv.....H...|...|
000bec30  20 02 00 00 13 00 00 00  00 00 00 00 75 6b 73 77  | ...........uksw|
000bec40  69 76 00 00 e0 12 0c 00  48 fd ff ff 7c d6 44 21  |iv......H...|.D!|
000bec50  a4 01 00 00 13 00 00 00  00 00 00 00 75 6b 76 64  |............ukvd|
000bec60  75 32 33 76 00 00 00 00  84 14 0c 00 48 fd ff ff  |u23v........H...|
000bec70  39 b0 05 1d 01 03 00 00  13 00 00 00 00 00 00 00  |9...............|
000bec80  52 65 6d 56 00 00 00 00  88 17 0c 00 48 fd ff ff  |RemV........H...|
000bec90  cd 67 d6 15 60 01 00 00  13 00 00 00 00 00 00 00  |.g..`...........|
000beca0  69 72 71 56 00 00 00 00  e8 18 0c 00 48 fd ff ff  |irqV........H...|
000becb0  20 93 d6 15 fc 00 00 00  13 00 00 00 00 00 00 00  | ...............|
000becc0  54 69 63 6b 65 72 56 00  e4 19 0c 00 48 fd ff ff  |TickerV.....H...|
000becd0  43 b1 68 1a 39 09 00 00  13 00 00 00 00 00 00 00  |C.h.9...........|
000bece0  65 63 6f 6e 65 74 76 00  20 23 0c 00 48 fd ff ff  |econetv. #..H...|
000becf0  7a c3 eb 29 c1 05 00 00  13 00 00 00 00 00 00 00  |z..)............|
000bed00  70 61 6c 65 74 74 65 76  00 00 00 00 e4 28 0c 00  |palettev.....(..|
000bed10  48 fd ff ff 19 cb 64 26  35 03 00 00 13 00 00 00  |H.....d&5.......|
000bed20  00 00 00 00 76 64 75 78  76 00 00 00 1c 2c 0c 00  |....vduxv....,..|
000bed30  48 fd ff ff e4 dd d1 18  e4 01 00 00 13 00 00 00  |H...............|
000bed40  00 00 00 00 77 72 63 68  76 00 00 00 44 41 54 41  |....wrchv...DATA|
000bed50  0d 08 00 00 43 6f 6c 6f  75 72 20 76 65 63 74 6f  |....Colour vecto|
000bed60  72 0a 23 50 61 72 65 6e  74 20 56 65 63 74 6f 72  |r.#Parent Vector|
000bed70  5f 69 6e 64 65 78 0a 3d  3e 09 52 38 20 3d 09 3c  |_index.=>.R8 =.<|
000bed80  43 6f 6c 6f 75 72 54 72  61 6e 73 20 53 57 49 20  |ColourTrans SWI |
000bed90  6e 75 6d 62 65 72 3d 3e  2e 73 77 69 73 3e 0a 09  |number=>.swis>..|
000beda0  4f 74 68 65 72 20 72 65  67 69 73 74 65 72 73 20  |Other registers |
000bedb0  64 65 70 65 6e 64 61 6e  74 20 6f 6e 20 63 61 6c  |dependant on cal|
000bedc0  6c 0a 0a 54 68 69 73 20  76 65 63 74 6f 72 20 70  |l..This vector p|
000bedd0  61 73 73 65 73 20 2f 61  6c 6c 2f 20 3c 43 6f 6c  |asses /all/ <Col|
000bede0  6f 75 72 54 72 61 6e 73  3d 3e 43 6f 6c 6f 75 72  |ourTrans=>Colour|
000bedf0  54 72 61 6e 73 5f 3e 20  63 61 6c 6c 73 2e 0a 23  |Trans_> calls..#|
000bee00  0a 23 53 75 62 50 61 67  65 20 73 77 69 73 0a 43  |.#SubPage swis.C|
000bee10  6f 6c 6f 75 72 56 20 53  57 49 20 6e 75 6d 62 65  |olourV SWI numbe|
000bee20  72 73 0a 52 38 09 53 57  49 20 63 61 6c 6c 65 64  |rs.R8.SWI called|
000bee30  0a 23 4c 69 6e 65 0a 30  09 3c 53 65 6c 65 63 74  |.#Line.0.<Select|
000bee40  54 61 62 6c 65 3d 3e 43  6f 6c 6f 75 72 54 72 61  |Table=>ColourTra|
000bee50  6e 73 5f 53 65 6c 65 63  74 54 61 62 6c 65 3e 0a  |ns_SelectTable>.|
000bee60  31 09 3c 53 65 6c 65 63  74 47 43 4f 4c 54 61 62  |1.<SelectGCOLTab|
000bee70  6c 65 3d 3e 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |le=>ColourTrans_|
000bee80  53 65 6c 65 63 74 47 43  4f 4c 54 61 62 6c 65 3e  |SelectGCOLTable>|
000bee90  0a 32 09 3c 52 65 74 75  72 6e 47 43 4f 4c 3d 3e  |.2.<ReturnGCOL=>|
000beea0  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 74 75  |ColourTrans_Retu|
000beeb0  72 6e 47 43 4f 4c 3e 0a  33 09 3c 53 65 74 47 43  |rnGCOL>.3.<SetGC|
000beec0  4f 4c 3d 3e 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |OL=>ColourTrans_|
000beed0  53 65 74 47 43 4f 4c 3e  0a 34 09 3c 52 65 74 75  |SetGCOL>.4.<Retu|
000beee0  72 6e 43 6f 6c 6f 75 72  4e 75 6d 62 65 72 3d 3e  |rnColourNumber=>|
000beef0  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 74 75  |ColourTrans_Retu|
000bef00  72 6e 43 6f 6c 6f 75 72  4e 75 6d 62 65 72 3e 0a  |rnColourNumber>.|
000bef10  35 09 3c 52 65 74 75 72  6e 47 43 4f 4c 46 6f 72  |5.<ReturnGCOLFor|
000bef20  4d 6f 64 65 3d 3e 43 6f  6c 6f 75 72 54 72 61 6e  |Mode=>ColourTran|
000bef30  73 5f 52 65 74 75 72 6e  47 43 4f 4c 46 6f 72 4d  |s_ReturnGCOLForM|
000bef40  6f 64 65 3e 0a 36 09 3c  52 65 74 75 72 6e 43 6f  |ode>.6.<ReturnCo|
000bef50  6c 6f 75 72 4e 75 6d 62  65 72 46 6f 72 4d 6f 64  |lourNumberForMod|
000bef60  65 3d 3e 43 6f 6c 6f 75  72 54 72 61 6e 73 5f 52  |e=>ColourTrans_R|
000bef70  65 74 75 72 6e 43 6f 6c  6f 75 72 4e 75 6d 62 65  |eturnColourNumbe|
000bef80  72 46 6f 72 4d 6f 64 65  3e 0a 37 09 3c 52 65 74  |rForMode>.7.<Ret|
000bef90  75 72 6e 4f 70 70 47 43  4f 4c 3d 3e 43 6f 6c 6f  |urnOppGCOL=>Colo|
000befa0  75 72 54 72 61 6e 73 5f  52 65 74 75 72 6e 4f 70  |urTrans_ReturnOp|
000befb0  70 47 43 4f 4c 3e 0a 38  09 3c 53 65 74 4f 70 70  |pGCOL>.8.<SetOpp|
000befc0  47 43 4f 4c 3d 3e 43 6f  6c 6f 75 72 54 72 61 6e  |GCOL=>ColourTran|
000befd0  73 5f 53 65 74 4f 70 70  47 43 4f 4c 3e 0a 39 09  |s_SetOppGCOL>.9.|
000befe0  3c 52 65 74 75 72 6e 4f  70 70 43 6f 6c 6f 75 72  |<ReturnOppColour|
000beff0  4e 75 6d 62 65 72 3d 3e  43 6f 6c 6f 75 72 54 72  |Number=>ColourTr|
000bf000  61 6e 73 5f 52 65 74 75  72 6e 4f 70 70 43 6f 6c  |ans_ReturnOppCol|
000bf010  6f 75 72 4e 75 6d 62 65  72 3e 0a 31 30 09 3c 52  |ourNumber>.10.<R|
000bf020  65 74 75 72 6e 4f 70 70  47 43 4f 4c 46 6f 72 4d  |eturnOppGCOLForM|
000bf030  6f 64 65 3d 3e 43 6f 6c  6f 75 72 54 72 61 6e 73  |ode=>ColourTrans|
000bf040  5f 52 65 74 75 72 6e 4f  70 70 47 43 4f 4c 46 6f  |_ReturnOppGCOLFo|
000bf050  72 4d 6f 64 65 3e 0a 31  31 09 3c 52 65 74 75 72  |rMode>.11.<Retur|
000bf060  6e 4f 70 70 43 6f 6c 6f  75 72 4e 75 6d 62 65 72  |nOppColourNumber|
000bf070  46 6f 72 4d 6f 64 65 3d  3e 43 6f 6c 6f 75 72 54  |ForMode=>ColourT|
000bf080  72 61 6e 73 5f 52 65 74  75 72 6e 4f 70 70 43 6f  |rans_ReturnOppCo|
000bf090  6c 6f 75 72 4e 75 6d 62  65 72 46 6f 72 4d 6f 64  |lourNumberForMod|
000bf0a0  65 3e 0a 31 32 09 3c 47  43 4f 4c 54 6f 43 6f 6c  |e>.12.<GCOLToCol|
000bf0b0  6f 75 72 4e 75 6d 62 65  72 3d 3e 43 6f 6c 6f 75  |ourNumber=>Colou|
000bf0c0  72 54 72 61 6e 73 5f 47  43 4f 4c 54 6f 43 6f 6c  |rTrans_GCOLToCol|
000bf0d0  6f 75 72 4e 75 6d 62 65  72 3e 0a 31 33 09 3c 43  |ourNumber>.13.<C|
000bf0e0  6f 6c 6f 75 72 4e 75 6d  62 65 72 54 6f 47 43 4f  |olourNumberToGCO|
000bf0f0  4c 3d 3e 43 6f 6c 6f 75  72 54 72 61 6e 73 5f 43  |L=>ColourTrans_C|
000bf100  6f 6c 6f 75 72 4e 75 6d  62 65 72 54 6f 47 43 4f  |olourNumberToGCO|
000bf110  4c 3e 0a 31 34 09 3c 52  65 74 75 72 6e 46 6f 6e  |L>.14.<ReturnFon|
000bf120  74 43 6f 6c 6f 75 72 73  3d 3e 43 6f 6c 6f 75 72  |tColours=>Colour|
000bf130  54 72 61 6e 73 5f 52 65  74 75 72 6e 46 6f 6e 74  |Trans_ReturnFont|
000bf140  43 6f 6c 6f 75 72 73 3e  0a 31 35 09 3c 53 65 74  |Colours>.15.<Set|
000bf150  46 6f 6e 74 43 6f 6c 6f  75 72 73 3d 3e 43 6f 6c  |FontColours=>Col|
000bf160  6f 75 72 54 72 61 6e 73  5f 53 65 74 46 6f 6e 74  |ourTrans_SetFont|
000bf170  43 6f 6c 6f 75 72 73 3e  0a 31 36 09 3c 49 6e 76  |Colours>.16.<Inv|
000bf180  61 6c 69 64 61 74 65 43  61 63 68 65 3d 3e 43 6f  |alidateCache=>Co|
000bf190  6c 6f 75 72 54 72 61 6e  73 5f 49 6e 76 61 6c 69  |lourTrans_Invali|
000bf1a0  64 61 74 65 43 61 63 68  65 3e 0a 31 37 09 3c 53  |dateCache>.17.<S|
000bf1b0  65 74 43 61 6c 69 62 72  61 74 69 6f 6e 3d 3e 43  |etCalibration=>C|
000bf1c0  6f 6c 6f 75 72 54 72 61  6e 73 5f 53 65 74 43 61  |olourTrans_SetCa|
000bf1d0  6c 69 62 72 61 74 69 6f  6e 3e 0a 31 38 09 3c 52  |libration>.18.<R|
000bf1e0  65 61 64 43 61 6c 69 62  72 61 74 69 6f 6e 3d 3e  |eadCalibration=>|
000bf1f0  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 61 64  |ColourTrans_Read|
000bf200  43 61 6c 69 62 72 61 74  69 6f 6e 3e 0a 31 39 09  |Calibration>.19.|
000bf210  3c 43 6f 6e 76 65 72 74  44 65 76 69 63 65 43 6f  |<ConvertDeviceCo|
000bf220  6c 6f 75 72 3d 3e 43 6f  6c 6f 75 72 54 72 61 6e  |lour=>ColourTran|
000bf230  73 5f 43 6f 6e 76 65 72  74 44 65 76 69 63 65 43  |s_ConvertDeviceC|
000bf240  6f 6c 6f 75 72 3e 0a 32  30 09 3c 43 6f 6e 76 65  |olour>.20.<Conve|
000bf250  72 74 44 65 76 69 63 65  50 61 6c 65 74 74 65 3d  |rtDevicePalette=|
000bf260  3e 43 6f 6c 6f 75 72 54  72 61 6e 73 5f 43 6f 6e  |>ColourTrans_Con|
000bf270  76 65 72 74 44 65 76 69  63 65 50 61 6c 65 74 74  |vertDevicePalett|
000bf280  65 3e 0a 32 31 09 3c 43  6f 6e 76 65 72 74 52 47  |e>.21.<ConvertRG|
000bf290  42 54 6f 43 49 45 3d 3e  43 6f 6c 6f 75 72 54 72  |BToCIE=>ColourTr|
000bf2a0  61 6e 73 5f 43 6f 6e 76  65 72 74 52 47 42 54 6f  |ans_ConvertRGBTo|
000bf2b0  43 49 45 3e 0a 32 32 09  3c 43 6f 6e 76 65 72 74  |CIE>.22.<Convert|
000bf2c0  43 49 45 54 6f 52 47 42  3d 3e 43 6f 6c 6f 75 72  |CIEToRGB=>Colour|
000bf2d0  54 72 61 6e 73 5f 43 6f  6e 76 65 72 74 43 49 45  |Trans_ConvertCIE|
000bf2e0  54 6f 52 47 42 3e 0a 32  33 09 3c 57 72 69 74 65  |ToRGB>.23.<Write|
000bf2f0  43 61 6c 69 62 72 61 74  69 6f 6e 54 6f 46 69 6c  |CalibrationToFil|
000bf300  65 3d 3e 43 6f 6c 6f 75  72 54 72 61 6e 73 5f 57  |e=>ColourTrans_W|
000bf310  72 69 74 65 43 61 6c 69  62 72 61 74 69 6f 6e 54  |riteCalibrationT|
000bf320  6f 46 69 6c 65 3e 0a 32  34 09 3c 43 6f 6e 76 65  |oFile>.24.<Conve|
000bf330  72 74 52 47 42 54 6f 48  53 56 3d 3e 43 6f 6c 6f  |rtRGBToHSV=>Colo|
000bf340  75 72 54 72 61 6e 73 5f  43 6f 6e 76 65 72 74 52  |urTrans_ConvertR|
000bf350  47 42 54 6f 48 53 56 3e  0a 32 35 09 3c 43 6f 6e  |GBToHSV>.25.<Con|
000bf360  76 65 72 74 48 53 56 54  6f 52 47 42 3d 3e 43 6f  |vertHSVToRGB=>Co|
000bf370  6c 6f 75 72 54 72 61 6e  73 5f 43 6f 6e 76 65 72  |lourTrans_Conver|
000bf380  74 48 53 56 54 6f 52 47  42 3e 0a 32 36 09 3c 43  |tHSVToRGB>.26.<C|
000bf390  6f 6e 76 65 72 74 52 47  42 54 6f 43 4d 59 4b 3d  |onvertRGBToCMYK=|
000bf3a0  3e 43 6f 6c 6f 75 72 54  72 61 6e 73 5f 43 6f 6e  |>ColourTrans_Con|
000bf3b0  76 65 72 74 52 47 42 54  6f 43 4d 59 4b 3e 0a 32  |vertRGBToCMYK>.2|
000bf3c0  37 09 3c 43 6f 6e 76 65  72 74 43 4d 59 4b 54 6f  |7.<ConvertCMYKTo|
000bf3d0  52 47 42 3d 3e 43 6f 6c  6f 75 72 54 72 61 6e 73  |RGB=>ColourTrans|
000bf3e0  5f 43 6f 6e 76 65 72 74  43 4d 59 4b 54 6f 52 47  |_ConvertCMYKToRG|
000bf3f0  42 3e 0a 32 38 09 3c 52  65 61 64 50 61 6c 65 74  |B>.28.<ReadPalet|
000bf400  74 65 3d 3e 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |te=>ColourTrans_|
000bf410  52 65 61 64 50 61 6c 65  74 74 65 3e 0a 32 39 09  |ReadPalette>.29.|
000bf420  3c 57 72 69 74 65 50 61  6c 65 74 74 65 3d 3e 43  |<WritePalette=>C|
000bf430  6f 6c 6f 75 72 54 72 61  6e 73 5f 57 72 69 74 65  |olourTrans_Write|
000bf440  50 61 6c 65 74 74 65 3e  0a 33 30 09 3c 53 65 74  |Palette>.30.<Set|
000bf450  43 6f 6c 6f 75 72 3d 3e  43 6f 6c 6f 75 72 54 72  |Colour=>ColourTr|
000bf460  61 6e 73 5f 53 65 74 43  6f 6c 6f 75 72 3e 0a 33  |ans_SetColour>.3|
000bf470  31 09 3c 4d 69 73 63 4f  70 3d 3e 43 6f 6c 6f 75  |1.<MiscOp=>Colou|
000bf480  72 54 72 61 6e 73 5f 4d  69 73 63 4f 70 3e 0a 33  |rTrans_MiscOp>.3|
000bf490  32 09 3c 57 72 69 74 65  4c 6f 61 64 69 6e 67 73  |2.<WriteLoadings|
000bf4a0  54 6f 46 69 6c 65 3d 3e  43 6f 6c 6f 75 72 54 72  |ToFile=>ColourTr|
000bf4b0  61 6e 73 5f 57 72 69 74  65 4c 6f 61 64 69 6e 67  |ans_WriteLoading|
000bf4c0  73 54 6f 46 69 6c 65 3e  0a 33 33 09 3c 53 65 74  |sToFile>.33.<Set|
000bf4d0  54 65 78 74 43 6f 6c 6f  75 72 3d 3e 43 6f 6c 6f  |TextColour=>Colo|
000bf4e0  75 72 54 72 61 6e 73 5f  53 65 74 54 65 78 74 43  |urTrans_SetTextC|
000bf4f0  6f 6c 6f 75 72 3e 0a 33  34 09 3c 53 65 74 4f 70  |olour>.34.<SetOp|
000bf500  70 54 65 78 74 43 6f 6c  6f 75 72 3d 3e 43 6f 6c  |pTextColour=>Col|
000bf510  6f 75 72 54 72 61 6e 73  5f 53 65 74 4f 70 70 54  |ourTrans_SetOppT|
000bf520  65 78 74 43 6f 6c 6f 75  72 3e 0a 33 35 09 3c 47  |extColour>.35.<G|
000bf530  65 6e 65 72 61 74 65 54  61 62 6c 65 3d 3e 43 6f  |enerateTable=>Co|
000bf540  6c 6f 75 72 54 72 61 6e  73 5f 47 65 6e 65 72 61  |lourTrans_Genera|
000bf550  74 65 54 61 62 6c 65 3e  0a 00 00 00 44 41 54 41  |teTable>....DATA|
000bf560  17 02 00 00 45 76 65 6e  74 20 76 65 63 74 6f 72  |....Event vector|
000bf570  0a 23 70 61 72 65 6e 74  20 76 65 63 74 6f 72 5f  |.#parent vector_|
000bf580  69 6e 64 65 78 0a 3d 3e  09 52 30 20 3d 09 3c 45  |index.=>.R0 =.<E|
000bf590  76 65 6e 74 20 6e 75 6d  62 65 72 3d 3e 65 76 65  |vent number=>eve|
000bf5a0  6e 74 5f 69 6e 64 65 78  3e 0a 09 4f 74 68 65 72  |nt_index>..Other|
000bf5b0  20 72 65 67 69 73 74 65  72 73 20 64 65 70 65 6e  | registers depen|
000bf5c0  64 61 6e 74 20 6f 6e 20  63 61 6c 6c 0a 0a 57 68  |dant on call..Wh|
000bf5d0  65 6e 20 63 61 6c 6c 65  64 2c 20 41 4c 4c 20 65  |en called, ALL e|
000bf5e0  76 65 6e 74 20 6e 75 6d  62 65 72 73 20 61 72 65  |vent numbers are|
000bf5f0  20 70 61 73 73 65 64 20  74 6f 20 74 68 65 20 72  | passed to the r|
000bf600  6f 75 74 69 6e 65 20 73  70 65 63 69 66 69 65 64  |outine specified|
000bf610  20 69 66 20 74 68 65 79  20 61 72 65 20 65 6e 61  | if they are ena|
000bf620  62 6c 65 64 2e 20 54 68  65 72 65 66 6f 72 65 20  |bled. Therefore |
000bf630  69 74 20 69 73 20 76 69  74 61 6c 20 74 68 61 74  |it is vital that|
000bf640  20 79 6f 75 20 63 68 65  63 6b 20 77 68 65 74 68  | you check wheth|
000bf650  65 72 20 74 68 65 20 65  76 65 6e 74 20 6e 75 6d  |er the event num|
000bf660  62 65 72 20 69 73 20 74  68 65 20 73 61 6d 65 20  |ber is the same |
000bf670  61 73 20 74 68 61 74 20  77 68 69 63 68 20 79 6f  |as that which yo|
000bf680  75 20 77 69 73 68 20 74  6f 20 72 65 63 65 69 76  |u wish to receiv|
000bf690  65 20 28 61 6e 20 65 78  61 6d 70 6c 65 20 6f 66  |e (an example of|
000bf6a0  20 6e 6f 74 20 64 6f 69  6e 67 20 74 68 69 73 20  | not doing this |
000bf6b0  61 72 65 20 74 68 65 20  43 6f 63 6f 6e 69 7a 65  |are the Coconize|
000bf6c0  72 20 74 75 6e 65 20 6d  6f 64 75 6c 65 73 20 77  |r tune modules w|
000bf6d0  68 69 63 68 20 73 70 65  65 64 20 75 70 20 6f 6e  |hich speed up on|
000bf6e0  20 6b 65 79 20 70 72 65  73 73 65 73 20 62 65 63  | key presses bec|
000bf6f0  61 75 73 65 20 4b 65 79  20 54 72 61 6e 73 69 74  |ause Key Transit|
000bf700  69 6f 6e 20 69 73 20 65  6e 61 62 6c 65 64 29 0a  |ion is enabled).|
000bf710  0a 45 76 65 6e 74 73 20  73 68 6f 75 6c 64 20 62  |.Events should b|
000bf720  65 20 65 6e 61 62 6c 65  64 20 77 69 74 68 20 3c  |e enabled with <|
000bf730  4f 53 5f 42 79 74 65 20  31 34 3d 3e 6f 73 5f 62  |OS_Byte 14=>os_b|
000bf740  79 74 65 30 31 34 3e 20  61 6e 64 20 64 69 73 61  |yte014> and disa|
000bf750  62 6c 65 64 20 77 69 74  68 20 3c 4f 53 5f 42 79  |bled with <OS_By|
000bf760  74 65 20 31 33 3d 3e 6f  73 5f 62 79 74 65 30 31  |te 13=>os_byte01|
000bf770  33 3e 2e 00 44 41 54 41  01 02 00 00 49 6e 73 65  |3>..DATA....Inse|
000bf780  72 74 20 76 65 63 74 6f  72 20 28 26 31 34 29 0a  |rt vector (&14).|
000bf790  23 50 61 72 65 6e 74 20  76 65 63 74 6f 72 5f 69  |#Parent vector_i|
000bf7a0  6e 64 65 78 0a 3d 3e 09  52 31 20 3d 09 3c 62 75  |ndex.=>.R1 =.<bu|
000bf7b0  66 66 65 72 20 6e 75 6d  62 65 72 3d 3e 42 75 66  |ffer number=>Buf|
000bf7c0  66 65 72 5f 62 75 66 66  65 72 73 3e 2c 20 62 69  |fer_buffers>, bi|
000bf7d0  74 20 33 31 20 73 65 74  20 66 6f 72 20 62 6c 6f  |t 31 set for blo|
000bf7e0  63 6b 20 69 6e 73 65 72  74 0a 09 52 39 20 3d 09  |ck insert..R9 =.|
000bf7f0  26 31 34 0a 0a 09 49 66  20 73 69 6e 67 6c 65 20  |&14...If single |
000bf800  62 79 74 65 20 3a 0a 09  52 30 20 3d 09 62 79 74  |byte :..R0 =.byt|
000bf810  65 0a 3c 3d 09 52 32 20  63 6f 72 72 75 70 74 0a  |e.<=.R2 corrupt.|
000bf820  09 43 20 66 6c 61 67 09  73 65 74 20 69 66 20 69  |.C flag.set if i|
000bf830  6e 73 65 72 74 69 6f 6e  20 66 61 69 6c 65 64 0a  |nsertion failed.|
000bf840  0a 09 49 66 20 62 6c 6f  63 6b 20 69 6e 73 65 72  |..If block inser|
000bf850  74 20 3a 0a 09 52 32 20  3d 09 70 6f 69 6e 74 65  |t :..R2 =.pointe|
000bf860  72 20 74 6f 20 64 61 74  61 0a 09 52 33 20 3d 09  |r to data..R3 =.|
000bf870  6c 65 6e 67 74 68 20 6f  66 20 64 61 74 61 0a 3c  |length of data.<|
000bf880  3d 09 52 32 20 3d 09 70  6f 69 6e 74 65 72 20 74  |=.R2 =.pointer t|
000bf890  6f 20 64 61 74 61 20 73  74 69 6c 6c 20 74 6f 20  |o data still to |
000bf8a0  69 6e 73 65 72 74 0a 09  52 33 20 3d 09 6e 75 6d  |insert..R3 =.num|
000bf8b0  62 65 72 20 6f 66 20 62  79 74 65 73 20 6c 65 66  |ber of bytes lef|
000bf8c0  74 20 74 6f 20 69 6e 73  65 72 74 0a 09 43 20 66  |t to insert..C f|
000bf8d0  6c 61 67 09 73 65 74 20  69 66 20 69 6e 73 65 72  |lag.set if inser|
000bf8e0  74 69 6f 6e 20 66 61 69  6c 65 64 0a 0a 41 6c 6c  |tion failed..All|
000bf8f0  20 63 68 61 72 61 63 74  65 72 73 20 69 6e 73 65  | characters inse|
000bf900  72 74 65 64 20 69 6e 74  6f 20 62 75 66 66 65 72  |rted into buffer|
000bf910  73 20 61 72 65 20 73 65  6e 74 20 74 68 72 6f 75  |s are sent throu|
000bf920  67 68 20 74 68 69 73 20  76 65 63 74 6f 72 2e 0a  |gh this vector..|
000bf930  49 66 20 63 61 6c 6c 65  64 20 76 69 61 20 3c 4f  |If called via <O|
000bf940  53 5f 43 61 6c 6c 41 56  65 63 74 6f 72 3e 20 74  |S_CallAVector> t|
000bf950  68 65 6e 20 69 6e 74 65  72 75 70 74 73 20 6d 75  |hen interupts mu|
000bf960  73 74 20 62 65 20 64 69  73 61 62 6c 65 64 20 66  |st be disabled f|
000bf970  69 72 73 74 2e 00 00 00  44 41 54 41 f5 06 00 00  |irst....DATA....|
000bf980  4c 69 73 74 20 6f 66 20  53 6f 66 74 77 61 72 65  |List of Software|
000bf990  20 56 65 63 74 6f 72 73  0a 23 50 61 72 65 6e 74  | Vectors.#Parent|
000bf9a0  20 4f 53 5f 43 6c 61 69  6d 0a 56 65 63 74 6f 72  | OS_Claim.Vector|
000bf9b0  09 09 09 09 4e 6f 09 44  65 73 63 72 69 70 74 69  |....No.Descripti|
000bf9c0  6f 6e 20 6f 66 20 76 65  63 74 6f 72 0a 23 4c 69  |on of vector.#Li|
000bf9d0  6e 65 0a 55 73 65 72 56  09 09 09 09 30 30 09 55  |ne.UserV....00.U|
000bf9e0  73 65 72 20 28 72 65 73  65 72 76 65 64 29 0a 45  |ser (reserved).E|
000bf9f0  72 72 6f 72 56 09 09 09  09 30 31 09 45 72 72 6f  |rrorV....01.Erro|
000bfa00  72 20 28 3c 4f 53 5f 47  65 6e 65 72 61 74 65 45  |r (<OS_GenerateE|
000bfa10  72 72 6f 72 3e 29 0a 3c  49 72 71 56 3d 3e 76 65  |rror>).<IrqV=>ve|
000bfa20  63 74 6f 72 5f 69 72 71  76 3e 09 09 30 32 09 55  |ctor_irqv>..02.U|
000bfa30  6e 6b 6e 6f 77 6e 20 69  6e 74 65 72 72 75 70 74  |nknown interrupt|
000bfa40  0a 3c 57 72 63 68 56 3d  3e 76 65 63 74 6f 72 5f  |.<WrchV=>vector_|
000bfa50  77 72 63 68 76 3e 09 09  30 33 09 57 72 69 74 65  |wrchv>..03.Write|
000bfa60  20 63 68 61 72 61 63 74  65 72 20 28 3c 4f 53 5f  | character (<OS_|
000bfa70  57 72 69 74 65 43 3e 29  0a 52 65 61 64 43 56 09  |WriteC>).ReadCV.|
000bfa80  09 09 09 30 34 09 52 65  61 64 20 63 68 61 72 61  |...04.Read chara|
000bfa90  63 74 65 72 20 28 3c 4f  53 5f 52 65 61 64 43 3e  |cter (<OS_ReadC>|
000bfaa0  29 0a 43 4c 49 56 09 09  09 09 30 35 09 43 6f 6d  |).CLIV....05.Com|
000bfab0  6d 61 6e 64 20 6c 69 6e  65 20 69 6e 74 65 72 70  |mand line interp|
000bfac0  72 65 74 65 72 20 28 3c  4f 53 5f 43 4c 49 3e 29  |reter (<OS_CLI>)|
000bfad0  0a 42 79 74 65 56 09 09  09 09 30 36 09 4f 53 5f  |.ByteV....06.OS_|
000bfae0  42 79 74 65 20 69 6e 64  69 72 65 63 74 69 6f 6e  |Byte indirection|
000bfaf0  20 28 3c 4f 53 5f 42 79  74 65 3e 29 0a 57 6f 72  | (<OS_Byte>).Wor|
000bfb00  64 56 09 09 09 09 30 37  09 4f 53 5f 57 6f 72 64  |dV....07.OS_Word|
000bfb10  20 69 6e 64 69 72 65 63  74 69 6f 6e 20 28 3c 4f  | indirection (<O|
000bfb20  53 5f 57 6f 72 64 3e 29  0a 46 69 6c 65 56 09 09  |S_Word>).FileV..|
000bfb30  09 09 30 38 09 46 69 6c  65 20 72 65 61 64 2f 77  |..08.File read/w|
000bfb40  72 69 74 65 20 28 3c 4f  53 5f 46 69 6c 65 3e 29  |rite (<OS_File>)|
000bfb50  0a 41 72 67 73 56 09 09  09 09 30 39 09 46 69 6c  |.ArgsV....09.Fil|
000bfb60  65 20 61 72 67 75 6d 65  6e 74 73 20 72 65 61 64  |e arguments read|
000bfb70  2f 77 72 69 74 65 20 28  3c 4f 53 5f 41 72 67 73  |/write (<OS_Args|
000bfb80  3e 29 0a 42 47 65 74 56  09 09 09 09 30 41 09 46  |>).BGetV....0A.F|
000bfb90  69 6c 65 20 62 79 74 65  20 72 65 61 64 20 28 3c  |ile byte read (<|
000bfba0  4f 53 5f 42 47 65 74 3e  29 0a 42 50 75 74 56 09  |OS_BGet>).BPutV.|
000bfbb0  09 09 09 30 42 09 46 69  6c 65 20 62 79 74 65 20  |...0B.File byte |
000bfbc0  70 75 74 20 28 3c 4f 53  5f 42 50 75 74 3e 29 0a  |put (<OS_BPut>).|
000bfbd0  47 42 50 42 56 09 09 09  09 30 43 09 46 69 6c 65  |GBPBV....0C.File|
000bfbe0  20 62 79 74 65 20 62 6c  6f 63 6b 20 67 65 74 2f  | byte block get/|
000bfbf0  70 75 74 20 28 3c 4f 53  5f 47 42 50 42 3e 29 0a  |put (<OS_GBPB>).|
000bfc00  46 69 6e 64 56 09 09 09  09 30 44 09 46 69 6c 65  |FindV....0D.File|
000bfc10  20 6f 70 65 6e 20 28 3c  4f 53 5f 46 69 6e 64 3e  | open (<OS_Find>|
000bfc20  29 0a 52 65 61 64 4c 69  6e 65 56 09 09 09 30 45  |).ReadLineV...0E|
000bfc30  09 52 65 61 64 20 61 20  6c 69 6e 65 20 6f 66 20  |.Read a line of |
000bfc40  74 65 78 74 20 28 3c 4f  53 5f 52 65 61 64 4c 69  |text (<OS_ReadLi|
000bfc50  6e 65 3e 29 0a 46 53 43  6f 6e 74 72 6f 6c 56 09  |ne>).FSControlV.|
000bfc60  09 09 30 46 09 46 69 6c  69 6e 67 20 73 79 73 74  |..0F.Filing syst|
000bfc70  65 6d 20 63 6f 6e 74 72  6f 6c 20 28 3c 4f 53 5f  |em control (<OS_|
000bfc80  46 53 43 6f 6e 74 72 6f  6c 3e 29 0a 3c 45 76 65  |FSControl>).<Eve|
000bfc90  6e 74 56 3d 3e 76 65 63  74 6f 72 5f 65 76 65 6e  |ntV=>vector_even|
000bfca0  74 76 3e 09 09 31 30 09  45 76 65 6e 74 20 76 65  |tv>..10.Event ve|
000bfcb0  63 74 6f 72 20 28 3c 4f  53 5f 47 65 6e 65 72 61  |ctor (<OS_Genera|
000bfcc0  74 65 45 76 65 6e 74 3e  29 0a 3c 49 6e 73 56 3d  |teEvent>).<InsV=|
000bfcd0  3e 76 65 63 74 6f 72 5f  69 6e 73 76 3e 09 09 31  |>vector_insv>..1|
000bfce0  34 09 42 75 66 66 65 72  20 69 6e 73 65 72 74 20  |4.Buffer insert |
000bfcf0  28 3c 4f 53 5f 42 79 74  65 3e 29 0a 3c 52 65 6d  |(<OS_Byte>).<Rem|
000bfd00  56 3d 3e 76 65 63 74 6f  72 5f 72 65 6d 76 3e 09  |V=>vector_remv>.|
000bfd10  09 31 35 09 42 75 66 66  65 72 20 72 65 6d 6f 76  |.15.Buffer remov|
000bfd20  65 20 28 3c 4f 53 5f 42  79 74 65 3e 29 0a 3c 43  |e (<OS_Byte>).<C|
000bfd30  6e 70 56 3d 3e 76 65 63  74 6f 72 5f 63 6e 70 76  |npV=>vector_cnpv|
000bfd40  3e 09 09 31 36 09 43 6f  75 6e 74 2f 50 75 72 67  |>..16.Count/Purg|
000bfd50  65 20 42 75 66 66 65 72  20 28 3c 4f 53 5f 42 79  |e Buffer (<OS_By|
000bfd60  74 65 3e 29 0a 3c 55 4b  56 44 55 32 33 56 3d 3e  |te>).<UKVDU23V=>|
000bfd70  76 65 63 74 6f 72 5f 75  6b 76 64 75 32 33 76 3e  |vector_ukvdu23v>|
000bfd80  09 31 37 09 55 6e 6b 6e  6f 77 6e 20 56 44 55 32  |.17.Unknown VDU2|
000bfd90  33 20 28 3c 4f 53 5f 57  72 69 74 65 43 20 65 74  |3 (<OS_WriteC et|
000bfda0  63 2e 3d 3e 76 65 63 74  6f 72 5f 77 72 63 68 76  |c.=>vector_wrchv|
000bfdb0  3e 29 0a 3c 55 4b 53 57  49 56 3d 3e 76 65 63 74  |>).<UKSWIV=>vect|
000bfdc0  6f 72 5f 75 6b 73 77 69  76 3e 09 09 31 38 09 55  |or_ukswiv>..18.U|
000bfdd0  6e 6b 6e 6f 77 6e 20 53  57 49 20 28 53 57 49 29  |nknown SWI (SWI)|
000bfde0  0a 3c 55 4b 50 4c 4f 54  56 3d 3e 76 65 63 74 6f  |.<UKPLOTV=>vecto|
000bfdf0  72 5f 75 6b 70 6c 6f 74  76 3e 09 31 39 09 55 6e  |r_ukplotv>.19.Un|
000bfe00  6b 6e 6f 77 6e 20 56 44  55 32 35 20 28 3c 4f 53  |known VDU25 (<OS|
000bfe10  5f 50 6c 6f 74 3e 29 0a  4d 6f 75 73 65 56 09 09  |_Plot>).MouseV..|
000bfe20  09 09 31 41 09 4d 6f 75  73 65 20 28 3c 4f 53 5f  |..1A.Mouse (<OS_|
000bfe30  4d 6f 75 73 65 3e 29 0a  3c 56 44 55 58 56 3d 3e  |Mouse>).<VDUXV=>|
000bfe40  76 65 63 74 6f 72 5f 76  64 75 78 76 3e 09 09 31  |vector_vduxv>..1|
000bfe50  42 09 56 44 55 20 65 78  74 65 6e 73 69 6f 6e 20  |B.VDU extension |
000bfe60  76 65 63 74 6f 72 20 28  3c 4f 53 5f 57 72 69 74  |vector (<OS_Writ|
000bfe70  65 43 20 65 74 63 2e 3d  3e 76 65 63 74 6f 72 5f  |eC etc.=>vector_|
000bfe80  77 72 63 68 76 3e 29 0a  3c 54 69 63 6b 65 72 56  |wrchv>).<TickerV|
000bfe90  3d 3e 76 65 63 74 6f 72  5f 74 69 63 6b 65 72 76  |=>vector_tickerv|
000bfea0  3e 09 31 43 09 31 30 30  48 7a 20 70 61 63 65 6d  |>.1C.100Hz pacem|
000bfeb0  61 6b 65 72 0a 3c 55 70  43 61 6c 6c 56 3d 3e 76  |aker.<UpCallV=>v|
000bfec0  65 63 74 6f 72 5f 75 70  63 61 6c 6c 76 3e 09 31  |ector_upcallv>.1|
000bfed0  44 09 57 61 72 6e 69 6e  67 20 76 65 63 74 6f 72  |D.Warning vector|
000bfee0  0a 43 68 61 6e 67 65 45  6e 76 69 72 6f 6e 6d 65  |.ChangeEnvironme|
000bfef0  6e 74 56 09 09 31 45 09  45 6e 76 69 72 6f 6e 6d  |ntV..1E.Environm|
000bff00  65 6e 74 20 63 68 61 6e  67 65 20 28 3c 4f 53 5f  |ent change (<OS_|
000bff10  43 68 61 6e 67 65 45 6e  76 69 72 6f 6e 6d 65 6e  |ChangeEnvironmen|
000bff20  74 3e 29 0a 53 70 72 69  74 65 56 09 09 09 09 31  |t>).SpriteV....1|
000bff30  46 09 3c 4f 53 5f 53 70  72 69 74 65 4f 70 3e 20  |F.<OS_SpriteOp> |
000bff40  69 6e 64 69 72 65 63 74  69 6f 6e 0a 44 72 61 77  |indirection.Draw|
000bff50  56 09 09 09 09 32 30 09  44 72 61 77 20 53 57 49  |V....20.Draw SWI|
000bff60  20 28 3c 44 72 61 77 5f  78 78 3d 3e 44 72 61 77  | (<Draw_xx=>Draw|
000bff70  5f 3e 29 0a 3c 45 63 6f  6e 65 74 56 3d 3e 76 65  |_>).<EconetV=>ve|
000bff80  63 74 6f 72 5f 65 63 6f  6e 65 74 76 3e 09 32 31  |ctor_econetv>.21|
000bff90  09 45 63 6f 6e 65 74 20  61 63 74 69 76 69 74 79  |.Econet activity|
000bffa0  20 28 3c 45 63 6f 6e 65  74 5f 78 78 3d 3e 45 63  | (<Econet_xx=>Ec|
000bffb0  6f 6e 65 74 5f 3e 29 0a  3c 43 6f 6c 6f 75 72 56  |onet_>).<ColourV|
000bffc0  3d 3e 76 65 63 74 6f 72  5f 63 6f 6c 6f 75 72 76  |=>vector_colourv|
000bffd0  3e 09 32 32 09 43 6f 6c  6f 75 72 54 72 61 6e 73  |>.22.ColourTrans|
000bffe0  20 53 57 49 20 28 3c 43  6f 6c 6f 75 72 54 72 61  | SWI (<ColourTra|
000bfff0  6e 73 5f 78 78 3d 3e 43  6f 6c 6f 75 72 54 72 61  |ns_xx=>ColourTra|
000c0000  6e 73 5f 3e 29 0a 3c 50  61 6c 65 74 74 65 56 3d  |ns_>).<PaletteV=|
000c0010  3e 76 65 63 74 6f 72 5f  70 61 6c 65 74 74 65 76  |>vector_palettev|
000c0020  3e 09 32 33 09 52 65 61  64 2f 57 72 69 74 65 20  |>.23.Read/Write |
000c0030  70 61 6c 65 74 74 65 20  76 65 63 74 6f 72 0a 53  |palette vector.S|
000c0040  65 72 69 61 6c 09 09 09  09 32 34 09 53 65 72 69  |erial....24.Seri|
000c0050  61 6c 20 6f 70 65 72 61  74 69 6f 6e 20 28 3c 4f  |al operation (<O|
000c0060  53 5f 53 65 72 69 61 6c  4f 70 3e 29 0a 00 00 00  |S_SerialOp>)....|
000c0070  44 41 54 41 98 05 00 00  53 6f 66 74 77 61 72 65  |DATA....Software|
000c0080  20 56 65 63 74 6f 72 73  20 43 68 61 69 6e 0a 23  | Vectors Chain.#|
000c0090  50 61 72 65 6e 74 20 76  65 63 74 6f 72 5f 69 6e  |Parent vector_in|
000c00a0  64 65 78 0a 57 68 65 6e  20 4f 53 5f 43 6c 61 69  |dex.When OS_Clai|
000c00b0  6d 20 61 64 64 73 20 61  20 72 6f 75 74 69 6e 65  |m adds a routine|
000c00c0  20 74 6f 20 61 20 76 65  63 74 6f 72 2c 20 69 74  | to a vector, it|
000c00d0  20 61 75 74 6f 6d 61 74  69 63 61 6c 6c 79 20 72  | automatically r|
000c00e0  65 6d 6f 76 65 73 20 61  6e 79 20 65 61 72 6c 69  |emoves any earli|
000c00f0  65 72 20 69 6e 73 74 61  6e 63 65 73 20 6f 66 20  |er instances of |
000c0100  74 68 65 20 73 61 6d 65  20 72 6f 75 74 69 6e 65  |the same routine|
000c0110  20 66 72 6f 6d 20 74 68  65 20 63 68 61 69 6e 2e  | from the chain.|
000c0120  20 49 66 20 79 6f 75 20  64 6f 6e 27 74 20 77 61  | If you don't wa|
000c0130  6e 74 20 74 68 69 73 20  74 6f 20 68 61 70 70 65  |nt this to happe|
000c0140  6e 2c 20 75 73 65 20 3c  4f 53 5f 41 64 64 54 6f  |n, use <OS_AddTo|
000c0150  56 65 63 74 6f 72 3e 20  69 6e 73 74 65 61 64 2e  |Vector> instead.|
000c0160  20 54 68 65 20 72 6f 75  74 69 6e 65 73 20 61 72  | The routines ar|
000c0170  65 20 63 61 6c 6c 65 64  20 69 6e 20 72 65 76 65  |e called in reve|
000c0180  72 73 65 20 6f 72 64 65  72 20 74 6f 20 74 68 65  |rse order to the|
000c0190  20 6f 72 64 65 72 20 69  6e 20 77 68 69 63 68 20  | order in which |
000c01a0  74 68 65 79 20 63 61 6c  6c 65 64 20 3c 4f 53 5f  |they called <OS_|
000c01b0  43 6c 61 69 6d 3e 2e 0a  0a 4c 65 74 27 73 20 67  |Claim>...Let's g|
000c01c0  69 76 65 20 61 20 73 6d  61 6c 6c 20 65 78 61 6d  |ive a small exam|
000c01d0  70 6c 65 20 66 6f 72 20  79 6f 75 20 74 6f 20 69  |ple for you to i|
000c01e0  6d 61 67 69 6e 65 20 68  6f 77 20 74 68 69 73 20  |magine how this |
000c01f0  77 6f 72 6b 73 20 72 6f  75 67 68 6c 79 20 28 64  |works roughly (d|
000c0200  6f 6e 27 74 20 63 6f 75  6e 74 20 6f 6e 20 63 6f  |on't count on co|
000c0210  72 72 65 63 74 20 70 72  65 73 65 6e 74 61 74 69  |rrect presentati|
000c0220  6f 6e 2c 20 6d 79 20 28  45 70 69 63 27 73 29 20  |on, my (Epic's) |
000c0230  6f 77 6e 20 6b 6e 6f 77  6c 65 64 67 65 20 6f 66  |own knowledge of|
000c0240  20 74 68 65 20 4f 53 20  69 73 20 6e 6f 74 20 31  | the OS is not 1|
000c0250  30 30 25 2c 20 79 65 74  2e 2e 2e 20 3b 2d 29 0a  |00%, yet... ;-).|
000c0260  0a 41 20 70 72 6f 67 72  61 6d 20 64 6f 65 73 20  |.A program does |
000c0270  61 6e 20 53 57 49 20 22  58 59 5a 22 20 28 77 68  |an SWI "XYZ" (wh|
000c0280  69 63 68 20 68 61 73 20  62 65 65 6e 20 63 6c 61  |ich has been cla|
000c0290  69 6d 65 64 29 0a 0a 52  49 53 43 20 4f 53 20 68  |imed)..RISC OS h|
000c02a0  61 73 20 61 20 6c 69 73  74 20 66 6f 72 20 74 68  |as a list for th|
000c02b0  69 73 20 76 65 63 74 6f  72 2c 20 77 68 69 63 68  |is vector, which|
000c02c0  20 63 6f 75 6c 64 20 62  65 20 65 78 70 6c 61 69  | could be explai|
000c02d0  6e 65 64 20 6c 69 6b 65  20 74 68 69 73 3a 0a 53  |ned like this:.S|
000c02e0  57 49 20 22 58 59 5a 22  20 67 6f 65 73 20 68 65  |WI "XYZ" goes he|
000c02f0  72 65 3a 09 53 54 4d 46  44 20 52 31 33 21 2c 5c  |re:.STMFD R13!,\|
000c0300  7b 52 31 34 7d 0a 09 09  09 42 4c 20 4c 61 73 74  |{R14}....BL Last|
000c0310  5f 43 6c 69 65 6e 74 0a  09 09 09 42 4c 20 2e 2e  |_Client....BL ..|
000c0320  2e 0a 09 09 09 42 4c 20  43 6c 69 65 6e 74 5f 23  |.....BL Client_#|
000c0330  31 0a 09 09 09 42 4c 20  52 4f 4d 2d 52 6f 75 74  |1....BL ROM-Rout|
000c0340  69 6e 65 0a 09 09 09 4c  44 4d 46 44 20 52 31 33  |ine....LDMFD R13|
000c0350  21 2c 5c 7b 50 43 7d 0a  0a 59 6f 75 72 20 6f 77  |!,\{PC}..Your ow|
000c0360  6e 20 72 6f 75 74 69 6e  65 20 63 61 6e 20 64 6f  |n routine can do|
000c0370  20 6f 6e 65 20 6f 66 20  74 68 65 20 66 6f 6c 6c  | one of the foll|
000c0380  6f 77 69 6e 67 3a 0a 23  54 61 62 0a 8f 09 52 65  |owing:.#Tab...Re|
000c0390  70 6c 61 63 65 20 74 68  65 20 6f 72 69 67 69 6e  |place the origin|
000c03a0  61 6c 20 72 6f 75 74 69  6e 65 2c 20 70 61 73 73  |al routine, pass|
000c03b0  69 6e 67 20 63 6f 6e 74  72 6f 6c 20 64 69 72 65  |ing control dire|
000c03c0  63 74 6c 79 20 62 61 63  6b 20 74 6f 20 74 68 65  |ctly back to the|
000c03d0  20 63 61 6c 6c 65 72 3a  20 42 79 20 3c 69 6e 74  | caller: By <int|
000c03e0  65 72 63 65 70 74 69 6e  67 3d 3e 76 65 63 74 6f  |ercepting=>vecto|
000c03f0  72 5f 72 75 6c 65 73 3e  2e 0a 8f 09 44 6f 20 73  |r_rules>....Do s|
000c0400  6f 6d 65 20 70 72 6f 63  65 73 73 69 6e 67 20 62  |ome processing b|
000c0410  65 66 6f 72 65 20 63 61  6c 6c 69 6e 67 20 74 68  |efore calling th|
000c0420  65 20 73 74 61 6e 64 61  72 64 20 72 6f 75 74 69  |e standard routi|
000c0430  6e 65 2c 20 77 68 69 63  68 20 74 68 65 6e 20 70  |ne, which then p|
000c0440  61 73 73 65 73 20 63 6f  6e 74 72 6f 6c 20 62 61  |asses control ba|
000c0450  63 6b 20 74 6f 20 74 68  65 20 63 61 6c 6c 65 72  |ck to the caller|
000c0460  3a 20 42 79 20 3c 70 61  73 73 69 6e 67 3d 3e 76  |: By <passing=>v|
000c0470  65 63 74 6f 72 5f 72 75  6c 65 73 3e 20 6f 6e 20  |ector_rules> on |
000c0480  74 68 65 20 63 61 6c 6c  2e 0a 8f 09 43 61 6c 6c  |the call....Call|
000c0490  20 74 68 65 20 73 74 61  6e 64 61 72 64 20 72 6f  | the standard ro|
000c04a0  75 74 69 6e 65 2c 20 70  72 6f 63 65 73 73 20 73  |utine, process s|
000c04b0  6f 6d 65 20 6f 66 20 74  68 65 20 72 65 73 75 6c  |ome of the resul|
000c04c0  74 73 20 69 74 20 72 65  74 75 72 6e 73 2c 20 61  |ts it returns, a|
000c04d0  6e 64 20 74 68 65 6e 20  70 61 73 73 20 63 6f 6e  |nd then pass con|
000c04e0  74 72 6f 6c 20 62 61 63  6b 20 74 6f 20 74 68 65  |trol back to the|
000c04f0  20 63 61 6c 6c 65 72 3b  20 62 79 20 61 20 62 69  | caller; by a bi|
000c0500  74 20 6d 6f 72 65 20 73  6f 70 68 69 73 74 69 63  |t more sophistic|
000c0510  61 74 65 64 20 73 74 61  63 6b 20 70 75 73 68 69  |ated stack pushi|
000c0520  6e 67 2e 20 46 6f 72 20  65 78 61 6d 70 6c 65 2c  |ng. For example,|
000c0530  20 70 75 73 68 20 74 68  65 20 61 64 64 72 65 73  | push the addres|
000c0540  73 20 6f 66 20 74 68 65  20 70 61 72 74 20 6f 66  |s of the part of|
000c0550  20 79 6f 75 72 20 72 6f  75 74 69 6e 65 20 77 68  | your routine wh|
000c0560  69 63 68 20 77 69 6c 6c  20 64 6f 20 74 68 65 20  |ich will do the |
000c0570  70 6f 73 74 2d 70 72 6f  63 65 73 73 69 6e 67 20  |post-processing |
000c0580  6f 6e 20 74 68 65 20 73  74 61 63 6b 2c 20 74 68  |on the stack, th|
000c0590  65 6e 20 70 61 73 73 20  6f 6e 20 74 68 65 20 63  |en pass on the c|
000c05a0  61 6c 6c 2e 20 57 68 65  6e 20 74 68 65 20 6e 65  |all. When the ne|
000c05b0  78 74 20 28 6f 72 20 74  68 65 20 52 49 53 43 20  |xt (or the RISC |
000c05c0  4f 53 29 20 72 6f 75 74  69 6e 65 20 6f 6e 20 74  |OS) routine on t|
000c05d0  68 65 20 63 68 61 69 6e  20 68 61 73 20 66 69 6e  |he chain has fin|
000c05e0  69 73 68 65 64 2c 20 74  68 69 73 20 70 6f 73 74  |ished, this post|
000c05f0  2d 72 6f 75 74 69 6e 65  20 77 69 6c 6c 20 62 65  |-routine will be|
000c0600  20 63 61 6c 6c 65 64 2e  44 41 54 41 65 06 00 00  | called.DATAe...|
000c0610  53 6f 66 74 77 61 72 65  20 56 65 63 74 6f 72 73  |Software Vectors|
000c0620  20 52 75 6c 65 73 0a 23  50 61 72 65 6e 74 20 56  | Rules.#Parent V|
000c0630  65 63 74 6f 72 5f 69 6e  64 65 78 0a 49 66 20 79  |ector_index.If y|
000c0640  6f 75 20 77 72 69 74 65  20 61 20 72 6f 75 74 69  |ou write a routi|
000c0650  6e 65 20 74 68 61 74 20  75 73 65 73 20 61 20 76  |ne that uses a v|
000c0660  65 63 74 6f 72 2c 20 69  74 20 6d 75 73 74 20 6f  |ector, it must o|
000c0670  62 65 79 20 74 68 65 20  73 61 6d 65 20 65 6e 74  |bey the same ent|
000c0680  72 79 20 61 6e 64 20 65  78 69 74 20 63 6f 6e 64  |ry and exit cond|
000c0690  69 74 69 6f 6e 73 20 61  73 20 74 68 65 20 63 6f  |itions as the co|
000c06a0  72 72 65 73 70 6f 6e 64  69 6e 67 20 52 49 53 43  |rresponding RISC|
000c06b0  20 4f 53 20 72 6f 75 74  69 6e 65 2e 20 46 6f 72  | OS routine. For|
000c06c0  20 65 78 61 6d 70 6c 65  2c 20 61 20 72 6f 75 74  | example, a rout|
000c06d0  69 6e 65 20 6f 6e 20 57  72 63 68 56 20 6d 75 73  |ine on WrchV mus|
000c06e0  74 20 70 72 65 73 65 72  76 65 20 61 6c 6c 20 72  |t preserve all r|
000c06f0  65 67 69 73 74 65 72 73  2c 20 6a 75 73 74 20 61  |egisters, just a|
000c0700  73 20 74 68 65 20 53 57  49 20 3c 4f 53 5f 57 72  |s the SWI <OS_Wr|
000c0710  69 74 65 43 3e 20 64 6f  65 73 21 0a 0a 54 68 65  |iteC> does!..The|
000c0720  20 70 72 6f 63 65 73 73  6f 72 20 6d 6f 64 65 20  | processor mode |
000c0730  69 6e 20 77 68 69 63 68  20 79 6f 75 72 20 72 6f  |in which your ro|
000c0740  75 74 69 6e 65 20 69 73  20 65 6e 74 65 72 65 64  |utine is entered|
000c0750  20 64 65 70 65 6e 64 73  20 6f 6e 3a 0a 8f 09 52  | depends on:...R|
000c0760  6f 75 74 69 6e 65 73 20  76 65 63 74 6f 72 65 64  |outines vectored|
000c0770  20 74 68 72 6f 75 67 68  20 3c 49 72 71 56 3d 3e  | through <IrqV=>|
000c0780  56 65 63 74 6f 72 5f 49  72 71 56 3e 20 28 56 65  |Vector_IrqV> (Ve|
000c0790  63 74 6f 72 20 26 30 32  29 20 61 72 65 20 61 6c  |ctor &02) are al|
000c07a0  77 61 79 73 20 65 78 65  63 75 74 65 64 20 69 6e  |ways executed in|
000c07b0  20 49 52 51 20 6d 6f 64  65 2e 0a 8f 09 52 6f 75  | IRQ mode....Rou|
000c07c0  74 69 6e 65 73 20 76 65  63 74 6f 72 65 64 20 74  |tines vectored t|
000c07d0  68 72 6f 75 67 68 20 3c  45 76 65 6e 74 56 3d 3e  |hrough <EventV=>|
000c07e0  56 65 63 74 6f 72 5f 45  76 65 6e 74 56 3e 2c 20  |Vector_EventV>, |
000c07f0  3c 49 6e 73 56 3d 3e 56  65 63 74 6f 72 5f 49 6e  |<InsV=>Vector_In|
000c0800  73 56 3e 2c 20 3c 52 65  6d 56 3d 3e 56 65 63 74  |sV>, <RemV=>Vect|
000c0810  6f 72 5f 52 65 6d 56 3e  2c 20 3c 43 6e 70 56 3d  |or_RemV>, <CnpV=|
000c0820  3e 56 65 63 74 6f 72 5f  43 6e 70 56 3e 20 28 56  |>Vector_CnpV> (V|
000c0830  65 63 74 6f 72 73 20 26  31 30 20 74 6f 20 26 31  |ectors &10 to &1|
000c0840  36 29 20 61 6e 64 20 3c  54 69 63 6b 65 72 3d 3e  |6) and <Ticker=>|
000c0850  56 65 63 74 6f 72 5f 54  69 63 6b 65 72 56 3e 20  |Vector_TickerV> |
000c0860  28 26 31 43 29 20 61 72  65 20 67 65 6e 65 72 61  |(&1C) are genera|
000c0870  6c 6c 79 20 65 78 65 63  74 75 65 64 20 69 6e 20  |lly exectued in |
000c0880  49 52 51 20 6d 6f 64 65  2c 20 62 75 74 20 6d 61  |IRQ mode, but ma|
000c0890  79 20 62 65 20 65 78 65  63 75 74 65 64 20 69 6e  |y be executed in|
000c08a0  20 53 56 43 20 6d 6f 64  65 20 69 66 20 63 61 6c  | SVC mode if cal|
000c08b0  6c 65 64 20 75 73 69 6e  67 20 3c 4f 53 5f 43 61  |led using <OS_Ca|
000c08c0  6c 6c 41 56 65 63 74 6f  72 3e 2c 20 61 6e 64 20  |llAVector>, and |
000c08d0  69 6e 20 63 65 72 74 61  69 6e 20 75 6e 73 70 65  |in certain unspe|
000c08e0  63 69 66 69 65 64 20 63  69 72 63 75 6d 73 74 61  |cified circumsta|
000c08f0  6e 63 65 73 2e 0a 8f 09  61 6c 6c 20 6f 74 68 65  |nces....all othe|
000c0900  72 20 72 6f 75 74 69 6e  65 73 20 61 72 65 20 65  |r routines are e|
000c0910  78 65 63 75 74 65 64 20  69 6e 20 53 56 43 20 6d  |xecuted in SVC m|
000c0920  6f 64 65 2e 0a 0a 46 6f  72 20 74 68 65 20 53 56  |ode...For the SV|
000c0930  43 20 6d 6f 64 65 20 79  6f 75 27 76 65 20 74 6f  |C mode you've to|
000c0940  20 62 65 20 63 61 72 65  66 75 6c 6c 79 20 77 69  | be carefully wi|
000c0950  74 68 20 63 61 6c 6c 69  6e 67 20 61 20 53 57 49  |th calling a SWI|
000c0960  2c 20 62 65 63 61 75 73  65 20 6f 66 20 63 6f 72  |, because of cor|
000c0970  72 75 70 74 69 6e 67 20  74 68 65 20 72 65 74 75  |rupting the retu|
000c0980  72 6e 20 61 64 64 72 65  73 73 20 68 65 6c 64 20  |rn address held |
000c0990  69 6e 20 73 76 63 5f 52  31 34 2e 20 46 6f 72 20  |in svc_R14. For |
000c09a0  74 68 65 20 76 65 63 74  6f 72 73 20 65 78 65 63  |the vectors exec|
000c09b0  74 75 65 64 20 69 6e 20  49 52 51 20 6d 6f 64 65  |tued in IRQ mode|
000c09c0  20 69 74 27 73 20 76 69  74 61 6c 20 74 6f 20 6b  | it's vital to k|
000c09d0  6e 6f 77 20 61 6c 6c 20  64 65 74 61 69 6c 73 20  |now all details |
000c09e0  61 62 6f 75 74 20 22 49  6e 74 65 72 72 75 70 74  |about "Interrupt|
000c09f0  73 20 61 6e 64 20 68 61  6e 64 6c 69 6e 67 20 74  |s and handling t|
000c0a00  68 65 6d 22 2e 0a 0a 45  72 72 6f 72 73 20 61 72  |hem"...Errors ar|
000c0a10  65 20 72 65 70 6f 72 74  65 64 20 77 69 74 68 20  |e reported with |
000c0a20  72 65 74 75 72 6e 69 6e  67 20 74 68 65 20 56 20  |returning the V |
000c0a30  66 6c 61 67 20 73 65 74  2c 20 61 6e 64 20 73 74  |flag set, and st|
000c0a40  6f 72 69 6e 67 20 61 6e  20 65 72 72 6f 72 20 70  |oring an error p|
000c0a50  6f 69 6e 74 65 72 20 69  6e 20 52 30 2e 20 54 68  |ointer in R0. Th|
000c0a60  65 20 72 6f 75 74 69 6e  65 20 6d 75 73 74 20 74  |e routine must t|
000c0a70  68 65 72 65 66 6f 72 65  20 6e 6f 74 20 70 61 73  |herefore not pas|
000c0a80  73 20 6f 6e 20 74 68 65  20 63 61 6c 6c 2c 20 61  |s on the call, a|
000c0a90  73 20 52 30 20 68 61 73  20 62 65 65 6e 20 63 68  |s R0 has been ch|
000c0aa0  61 6e 67 65 64 21 20 50  6c 65 61 73 65 20 6e 6f  |anged! Please no|
000c0ab0  74 65 20 74 68 61 74 20  74 68 69 73 20 63 61 6e  |te that this can|
000c0ac0  27 74 20 62 65 20 64 6f  6e 65 20 77 69 74 68 20  |'t be done with |
000c0ad0  61 6c 6c 20 76 65 63 74  6f 72 73 2c 20 73 6f 6d  |all vectors, som|
000c0ae0  65 20 6f 66 20 74 68 65  6d 20 28 74 68 6f 73 65  |e of them (those|
000c0af0  20 69 6e 76 6f 6c 76 69  6e 67 20 49 52 51 20 63  | involving IRQ c|
000c0b00  61 6c 6c 73 20 69 6e 20  70 61 72 74 69 63 75 6c  |alls in particul|
000c0b10  61 72 29 20 68 61 76 65  20 6e 6f 77 68 65 72 65  |ar) have nowhere|
000c0b20  20 74 6f 20 73 65 6e 64  20 74 68 65 20 65 72 72  | to send the err|
000c0b30  6f 72 20 74 6f 2e 2e 2e  0a 0a 0a 46 6f 72 20 72  |or to......For r|
000c0b40  65 74 75 72 6e 69 6e 67  20 66 72 6f 6d 20 61 20  |eturning from a |
000c0b50  76 65 63 74 6f 72 65 64  20 72 6f 75 74 69 6e 65  |vectored routine|
000c0b60  2c 20 74 68 65 72 65 20  61 72 65 20 74 77 6f 20  |, there are two |
000c0b70  6d 65 74 68 6f 64 73 3a  0a 8f 09 50 61 73 73 69  |methods:...Passi|
000c0b80  6e 67 20 6f 6e 20 74 68  65 20 63 61 6c 6c 09 3a  |ng on the call.:|
000c0b90  09 52 65 74 75 72 6e 20  62 79 20 4d 4f 56 53 20  |.Return by MOVS |
000c0ba0  50 43 2c 52 31 34 20 74  6f 20 74 68 65 20 70 72  |PC,R14 to the pr|
000c0bb0  65 76 69 6f 75 73 20 6f  77 6e 65 72 2c 20 62 65  |evious owner, be|
000c0bc0  63 61 75 73 65 20 79 6f  75 20 6d 75 73 74 20 70  |cause you must p|
000c0bd0  72 65 73 65 72 76 65 20  74 68 65 20 56 20 61 6e  |reserve the V an|
000c0be0  64 20 74 68 65 20 43 20  66 6c 61 67 73 2e 0a 8f  |d the C flags...|
000c0bf0  09 49 6e 74 65 72 63 65  70 69 6e 67 20 74 68 65  |.Interceping the|
000c0c00  20 63 61 6c 6c 09 3a 09  59 6f 75 20 73 68 6f 75  | call.:.You shou|
000c0c10  6c 64 20 70 75 6c 6c 20  61 6e 20 65 78 69 74 20  |ld pull an exit |
000c0c20  61 64 64 72 65 73 73 20  28 77 68 69 63 68 20 68  |address (which h|
000c0c30  61 73 20 62 65 65 6e 20  73 65 74 20 62 79 20 52  |as been set by R|
000c0c40  49 53 43 20 4f 53 29 20  66 72 6f 6d 20 74 68 65  |ISC OS) from the|
000c0c50  20 73 74 61 63 6b 20 77  69 74 68 20 4c 44 4d 46  | stack with LDMF|
000c0c60  44 20 52 31 33 21 2c 5c  7b 50 43 7d 2e 00 00 00  |D R13!,\{PC}....|
000c0c70  44 41 54 41 b0 00 00 00  55 70 63 61 6c 6c 56 0a  |DATA....UpcallV.|
000c0c80  23 50 61 72 65 6e 74 20  56 65 63 74 6f 72 5f 69  |#Parent Vector_i|
000c0c90  6e 64 65 78 0a 3d 3e 09  52 30 20 3d 09 3c 75 70  |ndex.=>.R0 =.<up|
000c0ca0  63 61 6c 6c 20 72 65 61  73 6f 6e 3d 3e 4f 53 5f  |call reason=>OS_|
000c0cb0  55 70 63 61 6c 6c 52 65  61 73 6f 6e 73 3e 0a 09  |UpcallReasons>..|
000c0cc0  4f 74 68 65 72 20 72 65  67 69 73 74 65 72 73 20  |Other registers |
000c0cd0  64 65 70 65 6e 64 61 6e  74 20 6f 6e 20 63 61 6c  |dependant on cal|
000c0ce0  6c 0a 0a 54 68 69 73 20  76 65 63 74 6f 72 20 69  |l..This vector i|
000c0cf0  73 20 63 61 6c 6c 65 64  20 77 68 65 6e 20 61 6e  |s called when an|
000c0d00  20 55 70 63 61 6c 6c 20  69 73 20 67 65 6e 65 72  | Upcall is gener|
000c0d10  61 74 65 64 20 62 79 20  74 68 65 20 4f 53 2e 0a  |ated by the OS..|
000c0d20  44 41 54 41 81 01 00 00  43 6f 75 6e 74 2f 50 75  |DATA....Count/Pu|
000c0d30  72 67 65 20 76 65 63 74  6f 72 20 28 26 31 36 29  |rge vector (&16)|
000c0d40  0a 23 50 61 72 65 6e 74  20 76 65 63 74 6f 72 5f  |.#Parent vector_|
000c0d50  69 6e 64 65 78 0a 3d 3e  09 52 31 20 3d 09 3c 62  |index.=>.R1 =.<b|
000c0d60  75 66 66 65 72 20 6e 75  6d 62 65 72 3d 3e 42 75  |uffer number=>Bu|
000c0d70  66 66 65 72 5f 62 75 66  66 65 72 73 3e 0a 09 52  |ffer_buffers>..R|
000c0d80  39 20 3d 09 26 31 36 0a  09 66 6c 61 67 73 09 56  |9 =.&16..flags.V|
000c0d90  20 73 65 74 09 20 09 74  6f 20 66 6c 75 73 68 20  | set. .to flush |
000c0da0  62 75 66 66 65 72 0a 09  20 09 56 20 63 6c 65 61  |buffer.. .V clea|
000c0db0  72 09 43 20 73 65 74 09  74 6f 20 72 65 74 75 72  |r.C set.to retur|
000c0dc0  6e 20 66 72 65 65 20 73  70 61 63 65 0a 09 20 09  |n free space.. .|
000c0dd0  56 20 63 6c 65 61 72 09  43 20 63 6c 65 61 72 09  |V clear.C clear.|
000c0de0  74 6f 20 72 65 74 75 72  6e 20 65 6e 74 72 69 65  |to return entrie|
000c0df0  73 0a 0a 0a 3c 3d 09 52  30 20 63 6f 72 72 75 70  |s...<=.R0 corrup|
000c0e00  74 0a 0a 09 49 66 20 70  75 72 67 65 3a 0a 09 52  |t...If purge:..R|
000c0e10  31 20 70 72 65 73 65 72  76 65 64 0a 09 52 32 20  |1 preserved..R2 |
000c0e20  70 72 65 73 65 72 76 65  64 0a 0a 09 49 66 20 63  |preserved...If c|
000c0e30  6f 75 6e 74 3a 0a 09 52  31 20 3d 09 63 6f 75 6e  |ount:..R1 =.coun|
000c0e40  74 20 41 4e 44 20 26 46  46 0a 09 52 32 20 3d 09  |t AND &FF..R2 =.|
000c0e50  63 6f 75 6e 74 20 3e 3e  20 38 0a 0a 49 66 20 63  |count >> 8..If c|
000c0e60  61 6c 6c 65 64 20 76 69  61 20 3c 4f 53 5f 43 61  |alled via <OS_Ca|
000c0e70  6c 6c 41 56 65 63 74 6f  72 3e 20 74 68 65 6e 20  |llAVector> then |
000c0e80  69 6e 74 65 72 75 70 74  73 20 6d 75 73 74 20 62  |interupts must b|
000c0e90  65 20 64 69 73 61 62 6c  65 64 20 66 69 72 73 74  |e disabled first|
000c0ea0  2e 00 00 00 44 41 54 41  1c 02 00 00 55 6e 6b 6e  |....DATA....Unkn|
000c0eb0  6f 77 6e 20 70 6c 6f 74  20 76 65 63 74 6f 72 0a  |own plot vector.|
000c0ec0  23 70 61 72 65 6e 74 20  76 65 63 74 6f 72 5f 69  |#parent vector_i|
000c0ed0  6e 64 65 78 0a 3d 3e 09  52 30 20 3d 09 70 6c 6f  |ndex.=>.R0 =.plo|
000c0ee0  74 20 63 6f 6d 6d 61 6e  64 20 63 6f 64 65 0a 3c  |t command code.<|
000c0ef0  3d 09 52 30 20 70 72 65  73 65 72 76 65 64 0a 0a  |=.R0 preserved..|
000c0f00  57 68 65 6e 65 76 65 72  20 61 6e 20 75 6e 72 65  |Whenever an unre|
000c0f10  63 6f 67 6e 69 73 65 64  20 62 79 74 65 20 69 73  |cognised byte is|
000c0f20  20 66 6f 75 6e 64 20 66  6f 6c 6c 6f 77 69 6e 67  | found following|
000c0f30  20 32 35 20 69 6e 20 74  68 65 20 56 44 55 20 73  | 25 in the VDU s|
000c0f40  74 72 65 61 6d 2c 20 6f  72 20 3c 4f 53 5f 50 6c  |tream, or <OS_Pl|
000c0f50  6f 74 3e 20 69 73 20 63  61 6c 6c 65 64 20 77 69  |ot> is called wi|
000c0f60  74 68 20 61 6e 20 75 72  65 63 6f 67 6e 69 73 65  |th an urecognise|
000c0f70  64 20 52 30 2c 20 74 68  65 6e 20 74 68 69 73 20  |d R0, then this |
000c0f80  76 65 63 74 6f 72 20 69  73 20 63 61 6c 6c 65 64  |vector is called|
000c0f90  2e 20 52 30 20 63 6f 6e  74 61 69 6e 73 20 74 68  |. R0 contains th|
000c0fa0  69 73 20 75 6e 6b 6e 6f  77 6e 20 70 6c 6f 74 20  |is unknown plot |
000c0fb0  63 6f 6d 6d 61 6e 64 20  63 6f 64 65 20 2d 20 74  |command code - t|
000c0fc0  68 65 20 63 75 72 72 65  6e 74 20 61 6e 64 20 33  |he current and 3|
000c0fd0  20 70 72 65 76 69 6f 75  73 20 70 6f 73 69 74 69  | previous positi|
000c0fe0  6f 6e 73 20 6f 66 20 74  68 65 20 67 72 61 70 68  |ons of the graph|
000c0ff0  69 63 73 20 63 75 72 73  6f 72 20 63 61 6e 20 62  |ics cursor can b|
000c1000  65 20 72 65 61 64 20 77  69 74 68 20 3c 4f 53 5f  |e read with <OS_|
000c1010  52 65 61 64 56 44 55 56  61 72 69 61 62 6c 65 73  |ReadVDUVariables|
000c1020  3e 20 66 72 6f 6d 20 76  61 72 69 61 62 6c 65 73  |> from variables|
000c1030  20 26 38 43 20 2d 20 26  39 33 2c 20 61 6c 6c 6f  | &8C - &93, allo|
000c1040  77 69 6e 67 20 63 75 73  74 6f 6d 20 70 6c 6f 74  |wing custom plot|
000c1050  20 72 6f 75 74 69 6e 65  73 20 74 6f 20 62 65 20  | routines to be |
000c1060  69 6d 70 6c 65 6d 65 6e  74 65 64 2e 0a 0a 54 68  |implemented...Th|
000c1070  65 20 64 65 66 61 75 6c  74 20 6f 77 6e 65 72 20  |e default owner |
000c1080  6f 66 20 74 68 69 73 20  76 65 63 74 6f 72 20 64  |of this vector d|
000c1090  6f 65 73 20 6e 6f 74 68  69 6e 67 20 2d 20 75 6e  |oes nothing - un|
000c10a0  6b 6e 6f 77 6e 20 70 6c  6f 74 20 6f 70 74 69 6f  |known plot optio|
000c10b0  6e 73 20 61 72 65 20 69  67 6e 6f 72 65 64 2e 0a  |ns are ignored..|
000c10c0  44 41 54 41 20 02 00 00  55 6e 6b 6e 6f 77 6e 20  |DATA ...Unknown |
000c10d0  53 57 49 20 76 65 63 74  6f 72 0a 23 70 61 72 65  |SWI vector.#pare|
000c10e0  6e 74 20 76 65 63 74 6f  72 5f 69 6e 64 65 78 0a  |nt vector_index.|
000c10f0  3d 3e 09 52 30 20 2d 20  52 38 20 3d 09 72 65 67  |=>.R0 - R8 =.reg|
000c1100  69 73 74 65 72 20 70 61  72 61 6d 65 74 65 72 73  |ister parameters|
000c1110  20 66 6f 72 20 53 57 49  0a 23 20 57 68 79 20 6e  | for SWI.# Why n|
000c1120  6f 74 20 52 30 20 2d 20  52 38 20 2d 20 69 73 20  |ot R0 - R8 - is |
000c1130  74 68 69 73 20 74 68 65  20 4f 53 20 62 75 67 20  |this the OS bug |
000c1140  72 65 61 72 69 6e 67 20  69 74 73 20 75 67 6c 79  |rearing its ugly|
000c1150  20 68 65 61 64 3f 0a 09  52 31 31 20 3d 09 53 57  | head?..R11 =.SW|
000c1160  49 20 6e 75 6d 62 65 72  0a 23 74 61 62 0a 0a 57  |I number.#tab..W|
000c1170  68 65 6e 20 61 6e 20 53  57 49 20 69 73 20 63 61  |hen an SWI is ca|
000c1180  6c 6c 65 64 20 52 49 53  43 20 4f 53 0a 31 09 43  |lled RISC OS.1.C|
000c1190  68 65 63 6b 73 20 69 66  20 74 68 65 20 53 57 49  |hecks if the SWI|
000c11a0  20 6e 75 6d 62 65 72 20  69 73 20 5c 3c 20 35 31  | number is \< 51|
000c11b0  32 20 2d 20 69 66 20 73  6f 20 69 74 20 63 61 6c  |2 - if so it cal|
000c11c0  6c 73 20 74 68 65 20 61  70 70 72 6f 70 72 69 61  |ls the appropria|
000c11d0  74 65 20 6b 65 72 6e 65  6c 20 53 57 49 0a 32 09  |te kernel SWI.2.|
000c11e0  43 68 65 63 6b 73 20 77  68 65 74 68 65 72 20 61  |Checks whether a|
000c11f0  6e 79 20 72 65 6c 6f 63  61 74 61 62 6c 65 20 6d  |ny relocatable m|
000c1200  6f 64 75 6c 65 20 64 65  66 69 6e 65 73 20 74 68  |odule defines th|
000c1210  61 74 20 53 57 49 20 76  69 61 20 69 74 73 20 53  |at SWI via its S|
000c1220  57 49 20 74 61 62 6c 65  0a 33 09 49 66 20 6e 6f  |WI table.3.If no|
000c1230  20 6d 6f 64 75 6c 65 20  63 6c 61 69 6d 73 20 74  | module claims t|
000c1240  68 65 20 53 57 49 20 69  74 20 69 73 20 70 61 73  |he SWI it is pas|
000c1250  73 65 64 20 74 6f 20 74  68 69 73 20 76 65 63 74  |sed to this vect|
000c1260  6f 72 2c 20 77 68 65 72  65 20 69 74 20 6d 61 79  |or, where it may|
000c1270  20 62 65 20 63 6c 61 69  6d 65 64 0a 34 09 41 6e  | be claimed.4.An|
000c1280  79 20 53 57 49 73 20 73  74 69 6c 6c 20 75 6e 72  |y SWIs still unr|
000c1290  65 63 6f 67 6e 69 73 65  64 20 69 73 20 70 61 73  |ecognised is pas|
000c12a0  73 65 64 20 74 6f 20 74  68 65 20 75 6e 6b 6e 6f  |sed to the unkno|
000c12b0  77 6e 20 53 57 49 20 68  61 6e 64 6c 65 72 2c 20  |wn SWI handler, |
000c12c0  73 65 74 20 75 70 20 62  79 20 3c 4f 53 5f 43 68  |set up by <OS_Ch|
000c12d0  61 6e 67 65 45 6e 76 69  72 6f 6e 6d 65 6e 74 3e  |angeEnvironment>|
000c12e0  44 41 54 41 a4 01 00 00  55 6e 6b 6e 6f 77 6e 20  |DATA....Unknown |
000c12f0  56 44 55 20 32 33 20 76  65 63 74 6f 72 0a 23 70  |VDU 23 vector.#p|
000c1300  61 72 65 6e 74 20 76 65  63 74 6f 72 5f 69 6e 64  |arent vector_ind|
000c1310  65 78 0a 3d 3e 09 52 30  20 3d 09 56 44 55 20 32  |ex.=>.R0 =.VDU 2|
000c1320  33 20 6f 70 74 69 6f 6e  0a 09 52 31 20 3d 09 70  |3 option..R1 =.p|
000c1330  6f 69 6e 74 65 72 20 74  6f 20 56 44 55 20 32 33  |ointer to VDU 23|
000c1340  20 71 75 65 75 65 0a 3c  3d 09 52 30 2c 20 52 31  | queue.<=.R0, R1|
000c1350  20 70 72 65 73 65 72 76  65 64 0a 0a 57 68 65 6e  | preserved..When|
000c1360  65 76 65 72 20 61 6e 20  75 6e 72 65 63 6f 67 6e  |ever an unrecogn|
000c1370  69 73 65 64 20 62 79 74  65 20 28 31 38 2d 32 35  |ised byte (18-25|
000c1380  2c 32 38 2d 33 31 29 20  69 73 20 66 6f 75 6e 64  |,28-31) is found|
000c1390  20 66 6f 6c 6c 6f 77 69  6e 67 20 32 33 20 69 6e  | following 23 in|
000c13a0  20 74 68 65 20 56 44 55  20 73 74 72 65 61 6d 20  | the VDU stream |
000c13b0  74 68 69 73 20 76 65 63  74 6f 72 20 69 73 20 63  |this vector is c|
000c13c0  61 6c 6c 65 64 2e 20 52  30 20 63 6f 6e 74 61 69  |alled. R0 contai|
000c13d0  6e 73 20 74 68 69 73 20  75 6e 6b 6e 6f 77 6e 20  |ns this unknown |
000c13e0  62 79 74 65 20 2d 20 69  74 20 69 73 20 61 6c 73  |byte - it is als|
000c13f0  6f 20 74 68 65 20 66 69  72 73 74 20 6f 66 20 74  |o the first of t|
000c1400  68 65 20 39 20 62 79 74  65 73 20 69 6e 20 74 68  |he 9 bytes in th|
000c1410  65 20 56 44 55 20 71 75  65 75 65 2c 20 70 6f 69  |e VDU queue, poi|
000c1420  6e 74 65 64 20 61 74 20  62 79 20 52 31 2e 0a 0a  |nted at by R1...|
000c1430  54 68 65 20 64 65 66 61  75 6c 74 20 6f 77 6e 65  |The default owne|
000c1440  72 20 6f 66 20 74 68 69  73 20 76 65 63 74 6f 72  |r of this vector|
000c1450  20 64 6f 65 73 20 6e 6f  74 68 69 6e 67 20 2d 20  | does nothing - |
000c1460  75 6e 6b 6e 6f 77 6e 20  56 44 55 20 32 33 20 6f  |unknown VDU 23 o|
000c1470  70 74 69 6f 6e 73 20 61  72 65 20 69 67 6e 6f 72  |ptions are ignor|
000c1480  65 64 2e 0a 44 41 54 41  01 03 00 00 52 65 6d 6f  |ed..DATA....Remo|
000c1490  76 65 20 76 65 63 74 6f  72 20 28 26 31 35 29 0a  |ve vector (&15).|
000c14a0  23 50 61 72 65 6e 74 20  76 65 63 74 6f 72 5f 69  |#Parent vector_i|
000c14b0  6e 64 65 78 0a 3d 3e 09  52 31 20 3d 09 3c 62 75  |ndex.=>.R1 =.<bu|
000c14c0  66 66 65 72 20 6e 75 6d  62 65 72 3d 3e 42 75 66  |ffer number=>Buf|
000c14d0  66 65 72 5f 62 75 66 66  65 72 73 3e 2c 20 62 69  |fer_buffers>, bi|
000c14e0  74 20 33 31 20 73 65 74  20 66 6f 72 20 62 6c 6f  |t 31 set for blo|
000c14f0  63 6b 20 72 65 6d 6f 76  65 0a 09 52 39 20 3d 09  |ck remove..R9 =.|
000c1500  26 31 35 0a 09 56 20 66  6c 61 67 09 73 65 74 20  |&15..V flag.set |
000c1510  69 66 20 65 78 61 6d 69  6e 65 20 6f 6e 6c 79 0a  |if examine only.|
000c1520  09 20 09 63 6c 65 61 72  20 74 6f 20 72 65 6d 6f  |. .clear to remo|
000c1530  76 65 20 64 61 74 61 20  66 72 6f 6d 20 62 75 66  |ve data from buf|
000c1540  66 65 72 0a 0a 09 49 66  20 73 69 6e 67 6c 65 20  |fer...If single |
000c1550  62 79 74 65 20 65 78 61  6d 69 6e 65 3a 0a 3c 3d  |byte examine:.<=|
000c1560  09 52 30 20 3d 09 6e 65  78 74 20 62 79 74 65 20  |.R0 =.next byte |
000c1570  74 68 61 74 20 77 69 6c  6c 20 62 65 20 72 65 6d  |that will be rem|
000c1580  6f 76 65 64 0a 09 52 31  20 70 72 65 73 65 72 76  |oved..R1 preserv|
000c1590  65 64 0a 09 52 32 20 63  6f 72 72 75 70 74 0a 09  |ed..R2 corrupt..|
000c15a0  43 20 66 6c 61 67 09 73  65 74 20 69 66 20 62 75  |C flag.set if bu|
000c15b0  66 66 65 72 20 69 73 20  65 6d 70 74 79 0a 0a 09  |ffer is empty...|
000c15c0  49 66 20 73 69 6e 67 6c  65 20 62 79 74 65 20 72  |If single byte r|
000c15d0  65 6d 6f 76 65 3a 0a 3c  3d 09 52 30 20 63 6f 72  |emove:.<=.R0 cor|
000c15e0  72 75 70 74 0a 09 52 31  20 70 72 65 73 65 72 76  |rupt..R1 preserv|
000c15f0  65 64 0a 09 52 32 20 3d  09 62 79 74 65 20 72 65  |ed..R2 =.byte re|
000c1600  6d 6f 76 65 64 0a 09 43  20 66 6c 61 67 09 73 65  |moved..C flag.se|
000c1610  74 20 69 66 20 62 75 66  66 65 72 20 77 61 73 20  |t if buffer was |
000c1620  65 6d 70 74 79 20 6f 6e  20 65 6e 74 72 79 0a 0a  |empty on entry..|
000c1630  09 49 66 20 62 6c 6f 63  6b 20 72 65 6d 6f 76 65  |.If block remove|
000c1640  2f 65 78 61 6d 69 6e 65  20 3a 0a 09 52 32 20 3d  |/examine :..R2 =|
000c1650  09 70 6f 69 6e 74 65 72  20 74 6f 20 62 75 66 66  |.pointer to buff|
000c1660  65 72 0a 09 52 33 20 3d  09 6c 65 6e 67 74 68 20  |er..R3 =.length |
000c1670  6f 66 20 62 75 66 66 65  72 0a 3c 3d 09 52 30 20  |of buffer.<=.R0 |
000c1680  70 72 65 73 65 72 76 65  64 0a 09 52 31 20 70 72  |preserved..R1 pr|
000c1690  65 73 65 72 76 65 64 0a  09 52 32 20 3d 09 70 6f  |eserved..R2 =.po|
000c16a0  69 6e 74 65 72 20 75 70  64 61 74 65 64 0a 09 52  |inter updated..R|
000c16b0  33 20 3d 09 6e 75 6d 62  65 72 20 6f 66 20 62 79  |3 =.number of by|
000c16c0  74 65 73 20 73 74 69 6c  6c 20 74 6f 20 72 65 6d  |tes still to rem|
000c16d0  6f 76 65 0a 09 43 20 66  6c 61 67 09 73 65 74 20  |ove..C flag.set |
000c16e0  69 66 20 62 75 66 66 65  72 20 77 61 73 20 65 6d  |if buffer was em|
000c16f0  70 74 79 20 6f 6e 20 65  6e 74 72 79 0a 0a 41 6c  |pty on entry..Al|
000c1700  6c 20 63 68 61 72 61 63  74 65 72 73 20 72 65 6d  |l characters rem|
000c1710  6f 76 65 64 20 66 72 6f  6d 20 62 75 66 66 65 72  |oved from buffer|
000c1720  73 20 61 72 65 20 73 65  6e 74 20 74 68 72 6f 75  |s are sent throu|
000c1730  67 68 20 74 68 69 73 20  76 65 63 74 6f 72 2e 0a  |gh this vector..|
000c1740  49 66 20 63 61 6c 6c 65  64 20 76 69 61 20 3c 4f  |If called via <O|
000c1750  53 5f 43 61 6c 6c 41 56  65 63 74 6f 72 3e 20 74  |S_CallAVector> t|
000c1760  68 65 6e 20 69 6e 74 65  72 75 70 74 73 20 6d 75  |hen interupts mu|
000c1770  73 74 20 62 65 20 64 69  73 61 62 6c 65 64 20 66  |st be disabled f|
000c1780  69 72 73 74 2e 00 00 00  44 41 54 41 60 01 00 00  |irst....DATA`...|
000c1790  55 6e 6b 6e 6f 77 6e 20  49 52 51 20 76 65 63 74  |Unknown IRQ vect|
000c17a0  6f 72 20 28 26 30 32 29  0a 23 50 61 72 65 6e 74  |or (&02).#Parent|
000c17b0  20 76 65 63 74 6f 72 5f  69 6e 64 65 78 0a 4e 6f  | vector_index.No|
000c17c0  20 70 61 72 61 6d 65 74  65 72 73 20 69 6e 20 72  | parameters in r|
000c17d0  65 67 69 73 74 65 72 73  0a 0a 54 68 69 73 20 76  |egisters..This v|
000c17e0  65 63 74 6f 72 20 69 73  20 63 61 6c 6c 65 64 20  |ector is called |
000c17f0  77 68 65 6e 20 61 6e 20  75 6e 6b 6e 6f 77 6e 20  |when an unknown |
000c1800  49 52 51 20 69 73 20 64  65 74 65 63 74 65 64 2e  |IRQ is detected.|
000c1810  20 49 74 20 6d 75 73 74  20 6e 6f 74 20 62 65 20  | It must not be |
000c1820  63 61 6c 6c 65 64 20 77  69 74 68 20 3c 4f 53 5f  |called with <OS_|
000c1830  43 61 6c 6c 41 56 65 63  74 6f 72 3e 2e 0a 0a 49  |CallAVector>...I|
000c1840  74 20 77 61 73 20 70 72  6f 76 69 64 65 64 20 69  |t was provided i|
000c1850  6e 20 74 68 65 20 41 72  74 68 75 72 20 4f 53 20  |n the Arthur OS |
000c1860  74 6f 20 61 6c 6c 6f 77  20 68 61 72 64 77 61 72  |to allow hardwar|
000c1870  65 20 65 78 70 61 6e 73  69 6f 6e 20 74 6f 20 67  |e expansion to g|
000c1880  65 6e 65 72 61 74 65 20  49 52 51 73 2e 20 52 49  |enerate IRQs. RI|
000c1890  53 43 20 4f 53 20 70 72  6f 76 69 64 65 73 20 61  |SC OS provides a|
000c18a0  20 6e 65 77 2c 20 6d 6f  72 65 20 65 66 66 69 63  | new, more effic|
000c18b0  69 65 6e 74 20 6d 65 74  68 6f 64 2c 20 61 6e 64  |ient method, and|
000c18c0  20 74 68 69 73 20 76 65  63 74 6f 72 20 69 73 20  | this vector is |
000c18d0  6b 65 70 74 20 66 6f 72  20 63 6f 6d 70 61 74 69  |kept for compati|
000c18e0  62 69 6c 69 74 79 2e 0a  44 41 54 41 fc 00 00 00  |bility..DATA....|
000c18f0  54 69 63 6b 65 72 20 76  65 63 74 6f 72 20 28 26  |Ticker vector (&|
000c1900  31 43 29 0a 23 50 61 72  65 6e 74 20 76 65 63 74  |1C).#Parent vect|
000c1910  6f 72 5f 69 6e 64 65 78  0a 4e 6f 20 70 61 72 61  |or_index.No para|
000c1920  6d 65 74 65 72 73 20 69  6e 20 72 65 67 69 73 74  |meters in regist|
000c1930  65 72 73 0a 0a 54 68 69  73 20 76 65 63 74 6f 72  |ers..This vector|
000c1940  20 69 73 20 63 61 6c 6c  65 64 20 65 76 65 72 79  | is called every|
000c1950  20 63 65 6e 74 69 73 65  63 6f 6e 64 2c 20 61 6e  | centisecond, an|
000c1960  64 20 6d 75 73 74 20 6e  65 76 65 72 20 62 65 20  |d must never be |
000c1970  69 6e 74 65 72 63 65 70  74 65 64 2e 20 49 66 20  |intercepted. If |
000c1980  79 6f 75 72 20 72 6f 75  74 69 6e 65 20 74 61 6b  |your routine tak|
000c1990  65 73 20 3e 20 31 30 30  b5 73 20 79 6f 75 20 6d  |es > 100.s you m|
000c19a0  61 79 20 72 65 2d 65 6e  61 62 6c 65 20 49 52 51  |ay re-enable IRQ|
000c19b0  2c 20 61 73 20 6c 6f 6e  67 20 61 73 20 79 6f 75  |, as long as you|
000c19c0  20 63 61 6e 20 63 6f 70  65 20 77 69 74 68 2f 70  | can cope with/p|
000c19d0  72 65 76 65 6e 74 20 72  65 2d 65 6e 74 72 61 6e  |revent re-entran|
000c19e0  63 79 2e 0a 44 41 54 41  39 09 00 00 45 63 6f 6e  |cy..DATA9...Econ|
000c19f0  65 74 20 76 65 63 74 6f  72 0a 23 50 61 72 65 6e  |et vector.#Paren|
000c1a00  74 20 56 65 63 74 6f 72  5f 69 6e 64 65 78 0a 3d  |t Vector_index.=|
000c1a10  3e 09 52 30 20 3d 09 3c  72 65 61 73 6f 6e 20 63  |>.R0 =.<reason c|
000c1a20  6f 64 65 3d 3e 2e 72 65  61 73 6f 6e 73 3e 0a 09  |ode=>.reasons>..|
000c1a30  52 31 20 3d 09 73 69 7a  65 20 6f 66 20 64 61 74  |R1 =.size of dat|
000c1a40  61 2f 64 61 74 61 20 74  72 61 6e 73 66 65 72 72  |a/data transferr|
000c1a50  65 64 2f 6e 6f 74 20 75  73 65 64 0a 3c 3d 09 52  |ed/not used.<=.R|
000c1a60  30 2c 20 52 31 20 70 72  65 73 65 72 76 65 64 0a  |0, R1 preserved.|
000c1a70  0a 54 68 69 73 20 76 65  63 74 6f 72 20 69 73 20  |.This vector is |
000c1a80  63 61 6c 6c 65 64 20 77  68 65 6e 20 74 68 65 72  |called when ther|
000c1a90  65 20 69 73 20 45 63 6f  6e 65 74 20 61 63 74 69  |e is Econet acti|
000c1aa0  76 69 74 79 2e 20 54 68  65 20 6d 65 61 6e 69 6e  |vity. The meanin|
000c1ab0  67 20 28 69 66 20 61 6e  79 29 20 6f 66 20 52 31  |g (if any) of R1|
000c1ac0  20 64 65 70 65 6e 64 73  20 6f 6e 20 74 68 65 20  | depends on the |
000c1ad0  3c 72 65 61 73 6f 6e 20  63 6f 64 65 3d 3e 2e 72  |<reason code=>.r|
000c1ae0  65 61 73 6f 6e 73 3e 2e  20 54 68 69 73 20 76 65  |easons>. This ve|
000c1af0  63 74 6f 72 20 69 73 20  75 73 75 61 6c 6c 79 20  |ctor is usually |
000c1b00  63 6c 61 69 6d 65 64 20  62 79 20 74 68 65 20 4e  |claimed by the N|
000c1b10  65 74 53 74 61 74 75 73  20 6d 6f 64 75 6c 65 20  |etStatus module |
000c1b20  74 6f 20 61 6c 74 65 72  20 74 68 65 20 48 6f 75  |to alter the Hou|
000c1b30  72 67 6c 61 73 73 20 74  6f 20 72 65 66 6c 65 63  |rglass to reflec|
000c1b40  74 20 74 68 65 20 45 63  6f 6e 65 74 20 73 74 61  |t the Econet sta|
000c1b50  74 75 73 2e 0a 23 53 75  62 50 61 67 65 20 72 65  |tus..#SubPage re|
000c1b60  61 73 6f 6e 73 0a 45 63  6f 6e 65 74 56 20 72 65  |asons.EconetV re|
000c1b70  61 73 6f 6e 20 63 6f 64  65 73 0a 52 30 09 4e 61  |ason codes.R0.Na|
000c1b80  6d 65 09 09 09 09 4d 65  61 6e 69 6e 67 20 6f 66  |me....Meaning of|
000c1b90  20 52 31 09 09 09 09 09  4e 65 74 53 74 61 74 75  | R1.....NetStatu|
000c1ba0  73 20 63 61 6c 6c 73 0a  23 4c 69 6e 65 0a 26 31  |s calls.#Line.&1|
000c1bb0  30 09 4e 65 74 46 53 5f  53 74 61 72 74 4c 6f 61  |0.NetFS_StartLoa|
000c1bc0  64 09 09 09 74 6f 74 61  6c 20 73 69 7a 65 20 6f  |d...total size o|
000c1bd0  66 20 64 61 74 61 09 09  09 09 3c 48 6f 75 72 67  |f data....<Hourg|
000c1be0  6c 61 73 73 5f 4f 6e 3e  0a 26 31 31 09 4e 65 74  |lass_On>.&11.Net|
000c1bf0  46 53 5f 50 61 72 74 4c  6f 61 64 09 09 09 61 6d  |FS_PartLoad...am|
000c1c00  6f 75 6e 74 20 6f 66 20  64 61 74 61 20 74 72 61  |ount of data tra|
000c1c10  6e 73 66 65 72 72 65 64  09 09 09 3c 48 6f 75 72  |nsferred...<Hour|
000c1c20  67 6c 61 73 73 5f 50 65  72 63 65 6e 74 61 67 65  |glass_Percentage|
000c1c30  3e 0a 26 31 32 09 4e 65  74 46 53 5f 46 69 6e 69  |>.&12.NetFS_Fini|
000c1c40  73 68 4c 6f 61 64 09 09  20 09 09 09 09 09 09 3c  |shLoad.. ......<|
000c1c50  48 6f 75 72 67 6c 61 73  73 5f 4f 66 66 3e 0a 26  |Hourglass_Off>.&|
000c1c60  32 30 09 4e 65 74 46 53  5f 53 74 61 72 74 53 61  |20.NetFS_StartSa|
000c1c70  76 65 09 09 09 74 6f 74  61 6c 20 73 69 7a 65 20  |ve...total size |
000c1c80  6f 66 20 64 61 74 61 09  09 09 09 3c 48 6f 75 72  |of data....<Hour|
000c1c90  67 6c 61 73 73 5f 4f 6e  3e 0a 26 32 31 09 4e 65  |glass_On>.&21.Ne|
000c1ca0  74 46 53 5f 50 61 72 74  53 61 76 65 09 09 09 61  |tFS_PartSave...a|
000c1cb0  6d 6f 75 6e 74 20 6f 66  20 64 61 74 61 20 74 72  |mount of data tr|
000c1cc0  61 6e 73 66 65 72 72 65  64 09 09 09 3c 48 6f 75  |ansferred...<Hou|
000c1cd0  72 67 6c 61 73 73 5f 50  65 72 63 65 6e 74 61 67  |rglass_Percentag|
000c1ce0  65 3e 0a 26 32 32 09 4e  65 74 46 53 5f 46 69 6e  |e>.&22.NetFS_Fin|
000c1cf0  69 73 68 53 61 76 65 09  09 20 09 09 09 09 09 09  |ishSave.. ......|
000c1d00  3c 48 6f 75 72 67 6c 61  73 73 5f 4f 66 66 3e 0a  |<Hourglass_Off>.|
000c1d10  26 33 30 09 4e 65 74 46  53 5f 53 74 61 72 74 43  |&30.NetFS_StartC|
000c1d20  72 65 61 74 65 09 09 74  6f 74 61 6c 20 73 69 7a  |reate..total siz|
000c1d30  65 20 6f 66 20 64 61 74  61 09 09 09 09 3c 48 6f  |e of data....<Ho|
000c1d40  75 72 67 6c 61 73 73 5f  4f 6e 3e 0a 26 33 31 09  |urglass_On>.&31.|
000c1d50  4e 65 74 46 53 5f 50 61  72 74 43 72 65 61 74 65  |NetFS_PartCreate|
000c1d60  09 09 61 6d 6f 75 6e 74  20 6f 66 20 64 61 74 61  |..amount of data|
000c1d70  20 74 72 61 6e 73 66 65  72 72 65 64 09 09 09 3c  | transferred...<|
000c1d80  48 6f 75 72 67 6c 61 73  73 5f 50 65 72 63 65 6e  |Hourglass_Percen|
000c1d90  74 61 67 65 3e 0a 26 33  32 09 4e 65 74 46 53 5f  |tage>.&32.NetFS_|
000c1da0  46 69 6e 69 73 68 43 72  65 61 74 65 09 09 20 09  |FinishCreate.. .|
000c1db0  09 09 09 09 09 3c 48 6f  75 72 67 6c 61 73 73 5f  |.....<Hourglass_|
000c1dc0  4f 66 66 3e 0a 26 34 30  09 4e 65 74 46 53 5f 53  |Off>.&40.NetFS_S|
000c1dd0  74 61 72 74 47 65 74 42  79 74 65 73 09 09 74 6f  |tartGetBytes..to|
000c1de0  74 61 6c 20 73 69 7a 65  20 6f 66 20 64 61 74 61  |tal size of data|
000c1df0  09 09 09 09 3c 48 6f 75  72 67 6c 61 73 73 5f 4f  |....<Hourglass_O|
000c1e00  6e 3e 0a 26 34 31 09 4e  65 74 46 53 5f 50 61 72  |n>.&41.NetFS_Par|
000c1e10  74 47 65 74 42 79 74 65  73 09 09 61 6d 6f 75 6e  |tGetBytes..amoun|
000c1e20  74 20 6f 66 20 64 61 74  61 20 74 72 61 6e 73 66  |t of data transf|
000c1e30  65 72 72 65 64 09 09 09  3c 48 6f 75 72 67 6c 61  |erred...<Hourgla|
000c1e40  73 73 5f 50 65 72 63 65  6e 74 61 67 65 3e 0a 26  |ss_Percentage>.&|
000c1e50  34 32 09 4e 65 74 46 53  5f 46 69 6e 69 73 68 47  |42.NetFS_FinishG|
000c1e60  65 74 42 79 74 65 73 09  09 20 09 09 09 09 09 09  |etBytes.. ......|
000c1e70  3c 48 6f 75 72 67 6c 61  73 73 5f 4f 66 66 3e 0a  |<Hourglass_Off>.|
000c1e80  26 35 30 09 4e 65 74 46  53 5f 53 74 61 72 74 50  |&50.NetFS_StartP|
000c1e90  75 74 42 79 74 65 73 09  09 74 6f 74 61 6c 20 73  |utBytes..total s|
000c1ea0  69 7a 65 20 6f 66 20 64  61 74 61 09 09 09 09 3c  |ize of data....<|
000c1eb0  48 6f 75 72 67 6c 61 73  73 5f 4f 6e 3e 0a 26 35  |Hourglass_On>.&5|
000c1ec0  31 09 4e 65 74 46 53 5f  50 61 72 74 50 75 74 42  |1.NetFS_PartPutB|
000c1ed0  79 74 65 73 09 09 61 6d  6f 75 6e 74 20 6f 66 20  |ytes..amount of |
000c1ee0  64 61 74 61 20 74 72 61  6e 73 66 65 72 72 65 64  |data transferred|
000c1ef0  09 09 09 3c 48 6f 75 72  67 6c 61 73 73 5f 50 65  |...<Hourglass_Pe|
000c1f00  72 63 65 6e 74 61 67 65  3e 0a 26 35 32 09 4e 65  |rcentage>.&52.Ne|
000c1f10  74 46 53 5f 46 69 6e 69  73 68 50 75 74 42 79 74  |tFS_FinishPutByt|
000c1f20  65 73 09 09 20 09 09 09  09 09 09 3c 48 6f 75 72  |es.. ......<Hour|
000c1f30  67 6c 61 73 73 5f 4f 66  66 3e 0a 26 36 30 09 4e  |glass_Off>.&60.N|
000c1f40  65 74 46 53 5f 53 74 61  72 74 57 61 69 74 09 09  |etFS_StartWait..|
000c1f50  09 74 6f 74 61 6c 20 73  69 7a 65 20 6f 66 20 64  |.total size of d|
000c1f60  61 74 61 09 09 09 09 3c  48 6f 75 72 67 6c 61 73  |ata....<Hourglas|
000c1f70  73 5f 4c 45 44 73 3e 20  28 62 6f 74 68 20 6f 6e  |s_LEDs> (both on|
000c1f80  29 0a 26 36 32 09 4e 65  74 46 53 5f 46 69 6e 69  |).&62.NetFS_Fini|
000c1f90  73 68 57 61 69 74 09 09  20 09 09 09 09 09 09 3c  |shWait.. ......<|
000c1fa0  48 6f 75 72 67 6c 61 73  73 5f 4c 45 44 73 3e 20  |Hourglass_LEDs> |
000c1fb0  28 62 6f 74 68 20 6f 66  66 29 0a 26 37 30 09 4e  |(both off).&70.N|
000c1fc0  65 74 46 53 5f 53 74 61  72 74 42 72 6f 61 64 63  |etFS_StartBroadc|
000c1fd0  61 73 74 4c 6f 61 64 09  74 6f 74 61 6c 20 73 69  |astLoad.total si|
000c1fe0  7a 65 20 6f 66 20 64 61  74 61 09 09 09 09 3c 48  |ze of data....<H|
000c1ff0  6f 75 72 67 6c 61 73 73  5f 4f 6e 3e 20 26 20 3c  |ourglass_On> & <|
000c2000  48 6f 75 72 67 6c 61 73  73 5f 43 6f 6c 6f 75 72  |Hourglass_Colour|
000c2010  73 3e 20 28 67 72 65 65  6e 2f 62 6c 75 65 29 0a  |s> (green/blue).|
000c2020  26 37 31 09 4e 65 74 46  53 5f 50 61 72 74 42 72  |&71.NetFS_PartBr|
000c2030  6f 61 64 63 61 73 74 4c  6f 61 64 09 09 61 6d 6f  |oadcastLoad..amo|
000c2040  75 6e 74 20 6f 66 20 64  61 74 61 20 74 72 61 6e  |unt of data tran|
000c2050  73 66 65 72 72 65 64 09  09 09 3c 48 6f 75 72 67  |sferred...<Hourg|
000c2060  6c 61 73 73 5f 50 65 72  63 65 6e 74 61 67 65 3e  |lass_Percentage>|
000c2070  0a 26 37 32 09 4e 65 74  46 53 5f 46 69 6e 69 73  |.&72.NetFS_Finis|
000c2080  68 42 72 6f 61 64 63 61  73 74 4c 6f 61 64 09 20  |hBroadcastLoad. |
000c2090  09 09 09 09 09 09 3c 48  6f 75 72 67 6c 61 73 73  |......<Hourglass|
000c20a0  5f 4f 66 66 3e 0a 26 38  30 09 4e 65 74 46 53 5f  |_Off>.&80.NetFS_|
000c20b0  53 74 61 72 74 42 72 6f  61 64 63 61 73 74 53 61  |StartBroadcastSa|
000c20c0  76 65 09 74 6f 74 61 6c  20 73 69 7a 65 20 6f 66  |ve.total size of|
000c20d0  20 64 61 74 61 09 09 09  09 3c 48 6f 75 72 67 6c  | data....<Hourgl|
000c20e0  61 73 73 5f 4f 6e 3e 20  26 20 3c 48 6f 75 72 67  |ass_On> & <Hourg|
000c20f0  6c 61 73 73 5f 43 6f 6c  6f 75 72 73 3e 20 28 72  |lass_Colours> (r|
000c2100  65 64 2f 62 6c 75 65 29  0a 26 38 31 09 4e 65 74  |ed/blue).&81.Net|
000c2110  46 53 5f 50 61 72 74 42  72 6f 61 64 63 61 73 74  |FS_PartBroadcast|
000c2120  53 61 76 65 09 09 61 6d  6f 75 6e 74 20 6f 66 20  |Save..amount of |
000c2130  64 61 74 61 20 74 72 61  6e 73 66 65 72 72 65 64  |data transferred|
000c2140  09 09 09 3c 48 6f 75 72  67 6c 61 73 73 5f 50 65  |...<Hourglass_Pe|
000c2150  72 63 65 6e 74 61 67 65  3e 0a 26 38 32 09 4e 65  |rcentage>.&82.Ne|
000c2160  74 46 53 5f 46 69 6e 69  73 68 42 72 6f 61 64 63  |tFS_FinishBroadc|
000c2170  61 73 74 53 61 76 65 09  20 09 09 09 09 09 09 3c  |astSave. ......<|
000c2180  48 6f 75 72 67 6c 61 73  73 5f 4f 66 66 3e 0a 0a  |Hourglass_Off>..|
000c2190  52 30 09 4e 61 6d 65 09  09 09 09 4d 65 61 6e 69  |R0.Name....Meani|
000c21a0  6e 67 0a 23 4c 69 6e 65  0a 26 43 30 09 4e 65 74  |ng.#Line.&C0.Net|
000c21b0  46 53 5f 53 74 61 72 74  54 72 61 6e 73 6d 69 73  |FS_StartTransmis|
000c21c0  73 69 6f 6e 09 09 63 6f  6d 6d 65 6e 63 65 20 77  |sion..commence w|
000c21d0  61 69 74 69 6e 67 20 66  6f 72 20 65 6e 64 20 6f  |aiting for end o|
000c21e0  66 20 74 72 61 6e 73 6d  69 73 73 69 6f 6e 09 3c  |f transmission.<|
000c21f0  48 6f 75 72 67 6c 61 73  73 5f 4c 45 44 73 3e 20  |Hourglass_LEDs> |
000c2200  28 6f 6e 6c 79 20 74 6f  70 20 6f 6e 29 0a 26 43  |(only top on).&C|
000c2210  32 09 4e 65 74 46 53 5f  46 69 6e 69 73 68 54 72  |2.NetFS_FinishTr|
000c2220  61 6e 73 6d 69 73 73 69  6f 6e 09 3c 45 63 6f 6e  |ansmission.<Econ|
000c2230  65 74 5f 44 6f 54 72 61  6e 73 6d 69 74 3e 20 65  |et_DoTransmit> e|
000c2240  6e 64 73 09 09 09 3c 48  6f 75 72 67 6c 61 73 73  |nds...<Hourglass|
000c2250  5f 4c 45 44 73 3e 20 28  62 6f 74 68 20 6f 66 66  |_LEDs> (both off|
000c2260  29 0a 26 44 30 09 4e 65  74 46 53 5f 53 74 61 72  |).&D0.NetFS_Star|
000c2270  74 52 65 63 65 70 74 69  6f 6e 09 09 63 6f 6d 6d  |tReception..comm|
000c2280  65 6e 63 65 20 77 61 69  74 69 6e 67 20 66 6f 72  |ence waiting for|
000c2290  20 65 6e 64 20 6f 66 20  72 65 63 65 70 74 69 6f  | end of receptio|
000c22a0  6e 09 09 3c 48 6f 75 72  67 6c 61 73 73 5f 4c 45  |n..<Hourglass_LE|
000c22b0  44 73 3e 20 28 6f 6e 6c  79 20 62 6f 74 74 6f 6d  |Ds> (only bottom|
000c22c0  20 6f 6e 29 0a 26 44 32  09 4e 65 74 46 53 5f 46  | on).&D2.NetFS_F|
000c22d0  69 6e 69 73 68 52 65 63  65 70 74 69 6f 6e 09 09  |inishReception..|
000c22e0  3c 45 63 6f 6e 65 74 5f  57 61 69 74 46 6f 72 52  |<Econet_WaitForR|
000c22f0  65 63 65 70 74 69 6f 6e  3e 20 65 6e 64 73 09 09  |eception> ends..|
000c2300  09 3c 48 6f 75 72 67 6c  61 73 73 5f 4c 45 44 73  |.<Hourglass_LEDs|
000c2310  3e 20 28 62 6f 74 68 20  6f 66 66 29 0a 00 00 00  |> (both off)....|
000c2320  44 41 54 41 c1 05 00 00  50 61 6c 65 74 74 65 20  |DATA....Palette |
000c2330  76 65 63 74 6f 72 0a 23  50 61 72 65 6e 74 20 56  |vector.#Parent V|
000c2340  65 63 74 6f 72 5f 69 6e  64 65 78 0a 3d 3e 09 52  |ector_index.=>.R|
000c2350  34 20 3d 09 72 65 61 73  6f 6e 20 63 6f 64 65 3a  |4 =.reason code:|
000c2360  0a 09 20 09 31 09 3c 72  65 61 64 20 70 61 6c 65  |.. .1.<read pale|
000c2370  74 74 65 3d 3e 2e 31 3e  0a 09 20 09 32 09 3c 73  |tte=>.1>.. .2.<s|
000c2380  65 74 20 70 61 6c 65 74  74 65 3d 3e 2e 32 3e 0a  |et palette=>.2>.|
000c2390  09 20 09 33 09 3c 73 65  74 20 66 69 72 73 74 20  |. .3.<set first |
000c23a0  66 6c 61 73 68 20 73 74  61 74 65 3d 3e 2e 33 3e  |flash state=>.3>|
000c23b0  0a 09 20 09 34 09 3c 73  65 74 20 73 65 63 6f 6e  |.. .4.<set secon|
000c23c0  64 20 66 6c 61 73 68 20  73 74 61 74 65 3d 3e 2e  |d flash state=>.|
000c23d0  33 3e 0a 09 20 09 35 09  3c 73 65 74 20 64 65 66  |3>.. .5.<set def|
000c23e0  61 75 6c 74 20 70 61 6c  65 74 74 65 3d 3e 2e 35  |ault palette=>.5|
000c23f0  3e 0a 09 4f 74 68 65 72  20 72 65 67 69 73 74 65  |>..Other registe|
000c2400  72 73 20 64 65 70 65 6e  64 65 6e 74 20 6f 6e 20  |rs dependent on |
000c2410  63 61 6c 6c 0a 0a 54 68  69 73 20 76 65 63 74 6f  |call..This vecto|
000c2420  72 20 69 73 20 63 61 6c  6c 65 64 20 77 68 65 6e  |r is called when|
000c2430  65 76 65 72 20 74 68 65  20 70 61 6c 65 74 74 65  |ever the palette|
000c2440  20 69 73 20 72 65 61 64  20 6f 72 20 77 72 69 74  | is read or writ|
000c2450  74 65 6e 2e 20 53 65 74  20 52 34 20 3d 20 30 20  |ten. Set R4 = 0 |
000c2460  74 6f 20 63 6c 61 69 6d  20 74 68 65 20 63 61 6c  |to claim the cal|
000c2470  6c 2c 20 61 6e 64 20 70  72 65 76 65 6e 74 20 52  |l, and prevent R|
000c2480  49 53 43 20 4f 53 20 66  72 6f 6d 20 70 65 72 66  |ISC OS from perf|
000c2490  6f 72 6d 69 6e 67 20 74  68 65 20 64 65 66 61 75  |orming the defau|
000c24a0  6c 74 20 61 63 74 69 6f  6e 2e 20 49 74 20 69 73  |lt action. It is|
000c24b0  20 75 73 65 64 20 74 6f  20 69 6e 64 69 72 65 63  | used to indirec|
000c24c0  74 20 3c 56 44 55 20 31  39 3d 3e 56 44 55 3a 31  |t <VDU 19=>VDU:1|
000c24d0  39 3e 2c 20 3c 4f 53 5f  57 6f 72 64 20 31 32 3d  |9>, <OS_Word 12=|
000c24e0  3e 4f 53 5f 57 6f 72 64  31 32 3e 2c 20 3c 4f 53  |>OS_Word12>, <OS|
000c24f0  5f 52 65 61 64 50 61 6c  65 74 74 65 3e 2c 20 3c  |_ReadPalette>, <|
000c2500  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 52 65 61 64  |ColourTrans_Read|
000c2510  50 61 6c 65 74 74 65 3e  20 61 6e 64 20 3c 43 6f  |Palette> and <Co|
000c2520  6c 6f 75 72 54 72 61 6e  73 5f 57 72 69 74 65 50  |lourTrans_WriteP|
000c2530  61 6c 65 74 74 65 3e 2e  20 50 52 4d 20 31 2d 31  |alette>. PRM 1-1|
000c2540  30 35 20 73 75 67 67 65  73 74 73 20 74 68 61 74  |05 suggests that|
000c2550  20 74 68 65 72 65 20 6d  61 79 20 62 65 20 6f 74  | there may be ot|
000c2560  68 65 72 20 63 61 6c 6c  73 20 69 74 20 69 6e 64  |her calls it ind|
000c2570  69 72 65 63 74 73 2e 0a  23 53 75 62 50 61 67 65  |irects..#SubPage|
000c2580  20 31 0a 52 65 61 64 20  50 61 6c 65 74 74 65 0a  | 1.Read Palette.|
000c2590  23 57 72 61 70 20 4f 66  66 0a 3d 3e 09 52 30 20  |#Wrap Off.=>.R0 |
000c25a0  3d 09 6c 6f 67 69 63 61  6c 20 63 6f 6c 6f 75 72  |=.logical colour|
000c25b0  0a 09 52 31 20 3d 09 3c  74 79 70 65 20 6f 66 20  |..R1 =.<type of |
000c25c0  63 6f 6c 6f 75 72 3d 3e  56 44 55 3a 31 39 61 3e  |colour=>VDU:19a>|
000c25d0  20 28 31 36 2c 31 37 2c  31 38 2c 32 34 2c 32 35  | (16,17,18,24,25|
000c25e0  29 0a 09 52 34 20 3d 09  31 20 28 72 65 61 73 6f  |)..R4 =.1 (reaso|
000c25f0  6e 20 63 6f 64 65 29 0a  3c 3d 09 52 32 20 3d 09  |n code).<=.R2 =.|
000c2600  31 73 74 20 66 6c 61 73  68 20 63 6f 6c 6f 75 72  |1st flash colour|
000c2610  20 28 26 42 42 47 47 52  52 78 78 29 20 2d 20 3c  | (&BBGGRRxx) - <|
000c2620  64 65 76 69 63 65 20 63  6f 6c 6f 75 72 3d 3e 43  |device colour=>C|
000c2630  6f 6c 6f 75 72 54 72 61  6e 73 5f 43 6f 6e 76 65  |olourTrans_Conve|
000c2640  72 74 44 65 76 69 63 65  43 6f 6c 6f 75 72 3e 0a  |rtDeviceColour>.|
000c2650  09 52 33 20 3d 09 32 6e  64 20 66 6c 61 73 68 20  |.R3 =.2nd flash |
000c2660  63 6f 6c 6f 75 72 20 28  26 42 42 47 47 52 52 78  |colour (&BBGGRRx|
000c2670  78 29 20 2d 20 3c 64 65  76 69 63 65 20 63 6f 6c  |x) - <device col|
000c2680  6f 75 72 3d 3e 43 6f 6c  6f 75 72 54 72 61 6e 73  |our=>ColourTrans|
000c2690  5f 43 6f 6e 76 65 72 74  44 65 76 69 63 65 43 6f  |_ConvertDeviceCo|
000c26a0  6c 6f 75 72 3e 0a 09 52  34 20 3d 09 30 20 69 66  |lour>..R4 =.0 if|
000c26b0  20 6f 70 65 72 61 74 69  6f 6e 20 63 6f 6d 70 6c  | operation compl|
000c26c0  65 74 65 0a 23 53 75 62  50 61 67 65 20 32 0a 53  |ete.#SubPage 2.S|
000c26d0  65 74 20 50 61 6c 65 74  74 65 0a 23 77 72 61 70  |et Palette.#wrap|
000c26e0  20 6f 66 66 0a 3d 3e 09  52 30 20 3d 09 6c 6f 67  | off.=>.R0 =.log|
000c26f0  69 63 61 6c 20 63 6f 6c  6f 75 72 0a 09 52 31 20  |ical colour..R1 |
000c2700  3d 09 3c 74 79 70 65 20  6f 66 20 63 6f 6c 6f 75  |=.<type of colou|
000c2710  72 3d 3e 56 44 55 3a 31  39 61 3e 20 28 31 36 2c  |r=>VDU:19a> (16,|
000c2720  31 37 2c 31 38 2c 32 34  2c 32 35 29 0a 09 52 32  |17,18,24,25)..R2|
000c2730  20 3d 09 31 73 74 20 66  6c 61 73 68 20 63 6f 6c  | =.1st flash col|
000c2740  6f 75 72 20 28 26 42 42  47 47 52 52 78 78 29 20  |our (&BBGGRRxx) |
000c2750  2d 20 3c 64 65 76 69 63  65 20 63 6f 6c 6f 75 72  |- <device colour|
000c2760  3d 3e 43 6f 6c 6f 75 72  54 72 61 6e 73 5f 43 6f  |=>ColourTrans_Co|
000c2770  6e 76 65 72 74 44 65 76  69 63 65 43 6f 6c 6f 75  |nvertDeviceColou|
000c2780  72 3e 0a 09 52 33 20 3d  09 32 6e 64 20 66 6c 61  |r>..R3 =.2nd fla|
000c2790  73 68 20 63 6f 6c 6f 75  72 20 28 26 42 42 47 47  |sh colour (&BBGG|
000c27a0  52 52 78 78 29 20 2d 20  3c 64 65 76 69 63 65 20  |RRxx) - <device |
000c27b0  63 6f 6c 6f 75 72 3d 3e  43 6f 6c 6f 75 72 54 72  |colour=>ColourTr|
000c27c0  61 6e 73 5f 43 6f 6e 76  65 72 74 44 65 76 69 63  |ans_ConvertDevic|
000c27d0  65 43 6f 6c 6f 75 72 3e  0a 09 52 34 20 3d 09 32  |eColour>..R4 =.2|
000c27e0  20 28 72 65 61 73 6f 6e  20 63 6f 64 65 29 0a 3c  | (reason code).<|
000c27f0  3d 09 52 34 20 3d 09 30  20 69 66 20 6f 70 65 72  |=.R4 =.0 if oper|
000c2800  61 74 69 6f 6e 20 63 6f  6d 70 6c 65 74 65 0a 23  |ation complete.#|
000c2810  53 75 62 50 61 67 65 20  33 0a 53 65 74 20 46 6c  |SubPage 3.Set Fl|
000c2820  61 73 68 20 73 74 61 74  65 0a 3d 3e 09 52 34 20  |ash state.=>.R4 |
000c2830  3d 09 33 20 28 73 65 74  20 66 69 72 73 74 20 66  |=.3 (set first f|
000c2840  6c 61 73 68 20 73 74 61  74 65 29 0a 09 20 09 34  |lash state).. .4|
000c2850  20 28 73 65 74 20 73 65  63 6f 6e 64 20 66 6c 61  | (set second fla|
000c2860  73 68 20 73 74 61 74 65  29 0a 3c 3d 09 52 34 20  |sh state).<=.R4 |
000c2870  3d 09 30 20 69 66 20 6f  70 65 72 61 74 69 6f 6e  |=.0 if operation|
000c2880  20 63 6f 6d 70 6c 65 74  65 0a 23 53 75 62 50 61  | complete.#SubPa|
000c2890  67 65 20 35 0a 53 65 74  20 64 65 66 61 75 6c 74  |ge 5.Set default|
000c28a0  20 70 61 6c 65 74 74 65  0a 3d 3e 09 52 34 20 3d  | palette.=>.R4 =|
000c28b0  09 35 20 28 72 65 61 73  6f 6e 20 63 6f 64 65 29  |.5 (reason code)|
000c28c0  0a 3c 3d 09 52 34 20 3d  09 30 20 69 66 20 6f 70  |.<=.R4 =.0 if op|
000c28d0  65 72 61 74 69 6f 6e 20  63 6f 6d 70 6c 65 74 65  |eration complete|
000c28e0  0a 00 00 00 44 41 54 41  35 03 00 00 56 44 55 20  |....DATA5...VDU |
000c28f0  65 78 74 65 6e 73 69 6f  6e 20 76 65 63 74 6f 72  |extension vector|
000c2900  0a 23 70 61 72 65 6e 74  20 76 65 63 74 6f 72 5f  |.#parent vector_|
000c2910  69 6e 64 65 78 0a 3d 3e  09 52 30 20 3d 09 62 79  |index.=>.R0 =.by|
000c2920  74 65 20 73 65 6e 64 20  74 6f 20 74 68 65 20 56  |te send to the V|
000c2930  44 55 0a 3c 3d 09 52 30  20 70 72 65 73 65 72 76  |DU.<=.R0 preserv|
000c2940  65 64 0a 09 43 20 73 65  74 20 69 66 20 62 79 74  |ed..C set if byt|
000c2950  65 20 69 73 20 74 6f 20  62 65 20 73 65 6e 74 20  |e is to be sent |
000c2960  74 6f 20 70 72 69 6e 74  65 72 0a 0a 49 66 20 62  |to printer..If b|
000c2970  69 74 20 35 20 6f 66 20  74 68 65 20 3c 6f 75 74  |it 5 of the <out|
000c2980  70 75 74 20 73 74 72 65  61 6d 20 66 6c 61 67 3d  |put stream flag=|
000c2990  3e 4f 53 5f 42 79 74 65  30 30 33 3e 20 68 61 73  |>OS_Byte003> has|
000c29a0  20 62 65 65 6e 20 73 65  74 20 74 68 65 6e 20 63  | been set then c|
000c29b0  68 61 72 61 63 74 65 72  73 20 77 68 69 63 68 20  |haracters which |
000c29c0  77 6f 75 6c 64 20 68 61  76 65 20 62 65 65 6e 20  |would have been |
000c29d0  73 65 6e 74 20 74 6f 20  74 68 65 20 64 69 73 70  |sent to the disp|
000c29e0  6c 61 79 20 61 72 65 20  72 6f 75 74 65 64 20 74  |lay are routed t|
000c29f0  6f 20 74 68 69 73 20 76  65 63 74 6f 72 20 69 6e  |o this vector in|
000c2a00  73 74 65 61 64 2e 20 43  68 61 72 61 63 74 65 72  |stead. Character|
000c2a10  73 20 73 65 6e 74 20 74  6f 20 6f 74 68 65 72 20  |s sent to other |
000c2a20  6f 75 74 70 75 74 20 73  74 72 65 61 6d 73 20 28  |output streams (|
000c2a30  7b 2f 7d 65 2e 67 2e 7b  2f 7d 20 2a 53 70 6f 6f  |{/}e.g.{/} *Spoo|
000c2a40  6c 20 66 69 6c 65 2c 20  70 72 69 6e 74 65 72 29  |l file, printer)|
000c2a50  20 61 72 65 20 75 6e 61  66 66 65 63 74 65 64 2e  | are unaffected.|
000c2a60  0a 0a 49 66 20 74 68 65  20 43 20 66 6c 61 67 20  |..If the C flag |
000c2a70  69 73 20 73 65 74 20 6f  6e 20 72 65 74 75 72 6e  |is set on return|
000c2a80  2c 20 74 68 65 6e 20 74  68 65 20 63 68 61 72 61  |, then the chara|
000c2a90  63 74 65 72 20 28 75 6e  6c 65 73 73 20 69 74 20  |cter (unless it |
000c2aa0  69 73 20 74 68 65 20 70  72 69 6e 74 65 72 20 69  |is the printer i|
000c2ab0  67 6e 6f 72 65 20 63 68  61 72 61 63 74 65 72 20  |gnore character |
000c2ac0  28 73 65 65 20 3c 4f 53  5f 42 79 74 65 20 36 3d  |(see <OS_Byte 6=|
000c2ad0  3e 4f 53 5f 42 79 74 65  30 30 36 3e 29 29 20 69  |>OS_Byte006>)) i|
000c2ae0  73 20 73 65 6e 74 20 74  6f 20 74 68 65 20 56 44  |s sent to the VD|
000c2af0  55 20 70 72 69 6e 74 65  72 20 73 74 72 65 61 6d  |U printer stream|
000c2b00  20 28 69 66 20 62 69 74  73 20 32 20 61 6e 64 20  | (if bits 2 and |
000c2b10  36 20 61 72 65 20 63 6c  65 61 72 20 69 6e 20 74  |6 are clear in t|
000c2b20  68 65 20 3c 6f 75 74 70  75 74 20 73 74 72 65 61  |he <output strea|
000c2b30  6d 20 66 6c 61 67 3d 3e  4f 53 5f 42 79 74 65 30  |m flag=>OS_Byte0|
000c2b40  30 33 3e 29 2e 20 54 68  69 73 20 69 73 20 69 6e  |03>). This is in|
000c2b50  64 65 70 65 6e 74 65 6e  74 20 6f 66 20 74 68 65  |depentent of the|
000c2b60  20 73 65 74 74 69 6e 67  20 6f 66 20 62 69 74 20  | setting of bit |
000c2b70  33 20 69 6e 20 74 68 65  20 6f 75 74 70 75 74 20  |3 in the output |
000c2b80  73 74 72 65 61 6d 20 66  6c 61 67 2e 20 54 68 65  |stream flag. The|
000c2b90  20 50 52 4d 20 69 73 20  6e 6f 74 20 63 6c 65 61  | PRM is not clea|
000c2ba0  72 20 61 73 20 74 6f 20  77 68 65 74 68 65 72 20  |r as to whether |
000c2bb0  74 68 69 73 20 63 61 6e  20 73 65 6e 64 20 74 68  |this can send th|
000c2bc0  65 20 62 79 74 65 20 74  77 69 63 65 20 69 66 20  |e byte twice if |
000c2bd0  62 69 74 20 33 20 69 73  20 73 65 74 20 28 70 72  |bit 3 is set (pr|
000c2be0  69 6e 74 65 72 20 65 6e  61 62 6c 65 64 29 2e 20  |inter enabled). |
000c2bf0  43 6f 6e 66 75 73 65 64  3f 20 3a 2d 29 0a 23 20  |Confused? :-).# |
000c2c00  59 6f 75 20 77 69 6c 6c  20 62 65 2c 20 61 66 74  |You will be, aft|
000c2c10  65 72 20 53 6f 61 70 2e  0a 00 00 00 44 41 54 41  |er Soap.....DATA|
000c2c20  e4 01 00 00 57 72 69 74  65 20 63 68 61 72 61 63  |....Write charac|
000c2c30  74 65 72 20 76 65 63 74  6f 72 0a 23 70 61 72 65  |ter vector.#pare|
000c2c40  6e 74 20 76 65 63 74 6f  72 5f 69 6e 64 65 78 0a  |nt vector_index.|
000c2c50  3d 3e 09 52 30 20 3d 09  63 68 61 72 61 63 74 65  |=>.R0 =.characte|
000c2c60  72 20 74 6f 20 77 72 69  74 65 20 74 6f 20 3c 61  |r to write to <a|
000c2c70  63 74 69 76 65 20 6f 75  74 70 75 74 20 73 74 72  |ctive output str|
000c2c80  65 61 6d 73 3d 3e 4f 53  5f 42 79 74 65 30 30 33  |eams=>OS_Byte003|
000c2c90  3e 0a 3c 3d 09 52 30 20  70 72 65 73 65 72 76 65  |>.<=.R0 preserve|
000c2ca0  64 0a 0a 54 68 69 73 20  76 65 63 74 6f 72 20 69  |d..This vector i|
000c2cb0  73 20 75 73 65 64 20 74  6f 20 69 6e 64 69 72 65  |s used to indire|
000c2cc0  63 74 20 61 6c 6c 20 63  61 6c 6c 73 20 74 6f 20  |ct all calls to |
000c2cd0  3c 4f 53 5f 57 72 69 74  65 43 3e 2c 20 61 6e 64  |<OS_WriteC>, and|
000c2ce0  20 69 6e 20 74 75 72 6e  20 3c 4f 53 5f 4e 65 77  | in turn <OS_New|
000c2cf0  4c 69 6e 65 3e 2c 20 3c  4f 53 5f 50 72 65 74 74  |Line>, <OS_Prett|
000c2d00  79 50 72 69 6e 74 3e 2c  20 3c 4f 53 5f 57 72 69  |yPrint>, <OS_Wri|
000c2d10  74 65 30 3e 2c 20 3c 4f  53 5f 57 72 69 74 65 49  |te0>, <OS_WriteI|
000c2d20  3e 2c 20 3c 4f 53 5f 57  72 69 74 65 4e 3e 20 61  |>, <OS_WriteN> a|
000c2d30  6e 64 20 3c 4f 53 5f 57  72 69 74 65 53 3e 20 77  |nd <OS_WriteS> w|
000c2d40  68 69 63 68 20 63 61 6c  6c 20 69 74 2e 20 49 6e  |hich call it. In|
000c2d50  20 70 72 61 63 74 69 63  65 20 74 68 65 73 65 20  | practice these |
000c2d60  53 57 49 73 20 6d 61 79  20 6e 6f 74 20 61 63 74  |SWIs may not act|
000c2d70  75 61 6c 6c 79 20 63 61  6c 6c 20 3c 4f 53 5f 57  |ually call <OS_W|
000c2d80  72 69 74 65 43 3e 20 6f  72 20 74 68 69 73 20 76  |riteC> or this v|
000c2d90  65 63 74 6f 72 20 69 66  20 74 68 65 72 65 20 69  |ector if there i|
000c2da0  73 20 6e 6f 20 72 65 61  73 6f 6e 20 74 6f 20 64  |s no reason to d|
000c2db0  6f 20 73 6f 20 28 7b 2f  7d 69 2e 65 2e 7b 2f 7d  |o so ({/}i.e.{/}|
000c2dc0  20 74 68 65 20 76 65 63  74 6f 72 20 69 73 20 6e  | the vector is n|
000c2dd0  6f 74 20 63 6c 61 69 6d  65 64 2c 20 73 70 6f 6f  |ot claimed, spoo|
000c2de0  6c 69 6e 67 20 61 6e 64  20 70 72 69 6e 74 65 72  |ling and printer|
000c2df0  20 61 72 65 20 69 6e 61  63 74 69 76 65 29 2e 0a  | are inactive)..|
000c2e00  44 41 54 41 84 00 00 00  1e 40 2d e9 00 20 d0 e5  |DATA.....@-.. ..|
000c2e10  58 00 52 e3 01 00 80 02  1e 80 fd 08 00 20 d0 e5  |X.R.......... ..|
000c2e20  21 00 52 e3 01 20 d0 05  78 00 52 03 02 20 d0 05  |!.R.. ..x.R.. ..|
000c2e30  32 00 52 03 03 20 d0 05  36 00 52 03 1e 80 fd 18  |2.R.. ..6.R.....|
000c2e40  00 30 a0 e1 01 40 a0 e1  04 10 80 e2 10 00 a0 e3  |.0...@..........|
000c2e50  21 00 02 ef 03 00 a0 61  1e 80 fd 68 02 00 a0 e1  |!......a...h....|
000c2e60  02 08 c0 e3 04 10 a0 e1  40 20 a0 e3 38 00 02 ef  |........@ ..8...|
000c2e70  03 00 a0 61 01 00 a0 71  1e 80 fd e8 21 78 32 36  |...a...q....!x26|
000c2e80  00 00 00 00 44 41 54 41  b8 05 00 00 43 6f 6e 74  |....DATA....Cont|
000c2e90  72 69 62 75 74 69 6f 6e  73 0a 23 50 61 72 65 6e  |ributions.#Paren|
000c2ea0  74 20 4f 53 5f 0a 7b 66  48 34 7d 4d 6f 64 65 72  |t OS_.{fH4}Moder|
000c2eb0  61 74 6f 72 73 20 63 6f  6d 6d 65 6e 74 7b 66 7d  |ators comment{f}|
000c2ec0  0a 49 66 20 79 6f 75 20  77 61 6e 74 20 74 6f 20  |.If you want to |
000c2ed0  63 6f 6e 74 72 69 62 75  74 65 20 73 6f 6d 65 74  |contribute somet|
000c2ee0  68 69 6e 67 20 79 6f 75  72 73 65 6c 66 2c 20 74  |hing yourself, t|
000c2ef0  68 65 6e 20 73 65 6e 64  20 73 75 62 6d 69 73 73  |hen send submiss|
000c2f00  69 6f 6e 73 20 74 6f 20  7b 2a 7d 3c 67 65 72 70  |ions to {*}<gerp|
000c2f10  68 40 69 6e 6e 6f 63 65  6e 74 2e 63 6f 6d 3d 3e  |h@innocent.com=>|
000c2f20  23 55 52 4c 20 6d 61 69  6c 74 6f 3a 67 65 72 70  |#URL mailto:gerp|
000c2f30  68 40 69 6e 6e 6f 63 65  6e 74 2e 63 6f 6d 3e 7b  |h@innocent.com>{|
000c2f40  2a 7d 2e 20 54 72 79 20  74 6f 20 77 72 69 74 65  |*}. Try to write|
000c2f50  20 74 68 65 6d 20 6d 6f  72 65 20 6f 72 20 6c 65  | them more or le|
000c2f60  73 73 20 69 6e 20 74 68  65 20 73 61 6d 65 20 73  |ss in the same s|
000c2f70  74 79 6c 65 20 61 73 20  74 68 65 20 72 65 73 74  |tyle as the rest|
000c2f80  2e 20 7b 2a 7d 44 6f 6e  27 74 20 63 6f 70 79 20  |. {*}Don't copy |
000c2f90  74 68 65 20 50 52 4d 7b  2a 7d 2e 20 49 20 77 69  |the PRM{*}. I wi|
000c2fa0  6c 6c 20 65 64 69 74 20  61 6e 64 20 72 65 6a 65  |ll edit and reje|
000c2fb0  63 74 20 61 73 20 49 20  73 65 65 20 66 69 74 2c  |ct as I see fit,|
000c2fc0  20 61 6c 74 68 6f 75 67  68 20 61 6c 6d 6f 73 74  | although almost|
000c2fd0  20 65 76 65 72 79 74 68  69 6e 67 20 74 68 61 74  | everything that|
000c2fe0  20 67 65 74 73 20 73 65  6e 74 20 69 6e 20 77 69  | gets sent in wi|
000c2ff0  6c 6c 20 62 65 20 69 6e  63 6c 75 64 65 64 20 69  |ll be included i|
000c3000  6e 20 73 6f 6d 65 20 66  6f 72 6d 20 6f 72 20 6f  |n some form or o|
000c3010  74 68 65 72 2e 0a 0a 4c  61 72 67 65 20 6d 6f 64  |ther...Large mod|
000c3020  69 66 69 63 61 74 69 6f  6e 73 20 6d 61 79 20 62  |ifications may b|
000c3030  65 20 73 75 62 6d 69 74  65 64 20 61 73 20 63 6f  |e submited as co|
000c3040  6d 70 6c 65 74 65 20 6d  61 6e 75 61 6c 73 2c 20  |mplete manuals, |
000c3050  62 75 74 20 66 6f 72 20  73 69 6d 70 6c 65 20 61  |but for simple a|
000c3060  6d 65 6e 64 6d 65 6e 74  73 20 49 20 77 6f 75 6c  |mendments I woul|
000c3070  64 20 70 72 65 66 65 72  20 73 6d 61 6c 6c 20 6d  |d prefer small m|
000c3080  61 6e 75 61 6c 73 20 6f  72 20 74 65 78 74 20 66  |anuals or text f|
000c3090  69 6c 65 73 2e 20 43 6f  6d 6d 65 6e 74 73 20 61  |iles. Comments a|
000c30a0  62 6f 75 74 20 62 72 6f  6b 65 6e 20 6c 69 6e 6b  |bout broken link|
000c30b0  73 20 61 72 65 20 77 65  6c 63 6f 6d 65 2c 20 61  |s are welcome, a|
000c30c0  73 20 61 72 65 20 73 75  67 67 65 73 74 69 6f 6e  |s are suggestion|
000c30d0  73 20 66 6f 72 20 6e 65  77 20 73 74 79 6c 65 73  |s for new styles|
000c30e0  2e 0a 0a 23 41 6c 69 67  6e 20 52 69 67 68 74 0a  |...#Align Right.|
000c30f0  7b 2f 7d 4a 75 73 74 69  6e 20 46 6c 65 74 63 68  |{/}Justin Fletch|
000c3100  65 72 0a 47 65 72 70 68  40 69 6e 6e 6f 63 65 6e  |er.Gerph@innocen|
000c3110  74 2e 63 6f 6d 7b 2f 7d  0a 23 4c 69 6e 65 3b 41  |t.com{/}.#Line;A|
000c3120  6c 69 67 6e 20 43 65 6e  74 72 65 0a 3c 43 72 65  |lign Centre.<Cre|
000c3130  64 69 74 73 20 66 6f 72  20 63 6f 6e 74 72 69 62  |dits for contrib|
000c3140  75 74 6f 72 73 3d 3e 2e  63 72 65 64 69 74 73 3e  |utors=>.credits>|
000c3150  0a 23 53 75 62 70 61 67  65 20 63 72 65 64 69 74  |.#Subpage credit|
000c3160  73 0a 43 72 65 64 69 74  73 20 66 6f 72 20 4f 53  |s.Credits for OS|
000c3170  2c 20 57 69 6d 70 2c 20  49 6e 65 74 53 57 49 73  |, Wimp, InetSWIs|
000c3180  20 61 6e 64 20 49 6e 65  74 0a 49 27 76 65 20 74  | and Inet.I've t|
000c3190  72 69 65 64 20 74 6f 20  6c 69 73 74 20 74 68 65  |ried to list the|
000c31a0  20 6d 61 6a 6f 72 69 74  79 20 6f 66 20 70 65 6f  | majority of peo|
000c31b0  70 6c 65 20 77 68 6f 20  49 27 6d 20 61 77 61 72  |ple who I'm awar|
000c31c0  65 20 6f 66 20 74 68 61  74 20 68 61 76 65 20 63  |e of that have c|
000c31d0  6f 6e 74 72 69 62 75 74  65 64 2e 20 49 66 20 79  |ontributed. If y|
000c31e0  6f 75 20 68 61 76 65 20  63 6f 6e 74 72 69 62 75  |ou have contribu|
000c31f0  74 65 64 20 62 75 74 20  61 72 65 20 6e 6f 74 20  |ted but are not |
000c3200  69 6e 20 74 68 65 20 6c  69 73 74 20 49 27 6c 6c  |in the list I'll|
000c3210  20 74 72 79 20 74 6f 20  61 64 64 20 79 6f 75 2e  | try to add you.|
000c3220  20 48 6f 77 65 76 65 72  2c 20 69 66 20 74 68 69  | However, if thi|
000c3230  73 20 6c 69 73 74 20 67  65 74 73 20 74 6f 6f 20  |s list gets too |
000c3240  6c 6f 6e 67 20 28 61 6e  64 20 61 74 20 74 68 65  |long (and at the|
000c3250  20 6d 6f 6d 65 6e 74 20  74 68 65 72 65 27 73 20  | moment there's |
000c3260  6e 6f 74 20 6d 75 63 68  20 63 68 61 6e 63 65 20  |not much chance |
000c3270  6f 66 20 74 68 61 74 29  2c 20 49 27 6c 6c 20 68  |of that), I'll h|
000c3280  61 76 65 20 74 6f 20 73  74 61 74 65 20 73 69 6d  |ave to state sim|
000c3290  70 6c 79 20 74 68 65 20  6d 61 6a 6f 72 20 63 6f  |ply the major co|
000c32a0  6e 74 72 69 62 75 74 6f  72 73 20 6f 72 20 6a 75  |ntributors or ju|
000c32b0  73 74 20 73 61 79 20 74  68 61 74 20 69 74 27 73  |st say that it's|
000c32c0  20 27 54 68 61 6e 6b 73  20 74 6f 20 74 68 65 20  | 'Thanks to the |
000c32d0  41 63 6f 72 6e 20 70 72  6f 67 72 61 6d 6d 69 6e  |Acorn programmin|
000c32e0  67 20 63 6f 6d 6d 75 6e  69 74 79 27 2e 2e 2e 0a  |g community'....|
000c32f0  0a 23 66 48 34 3a 54 68  61 6e 6b 73 20 74 6f 20  |.#fH4:Thanks to |
000c3300  3a 0a 23 54 61 62 6c 65  20 63 6f 6c 75 6d 6e 73  |:.#Table columns|
000c3310  20 34 0a 47 75 74 74 6f  72 6d 20 56 69 6b 0a 4a  | 4.Guttorm Vik.J|
000c3320  75 73 74 69 6e 20 46 6c  65 74 63 68 65 72 0a 4e  |ustin Fletcher.N|
000c3330  69 63 68 6f 6c 61 73 20  43 6c 61 72 6b 0a 44 61  |icholas Clark.Da|
000c3340  76 65 20 54 68 6f 6d 61  73 0a 4d 61 74 74 68 65  |ve Thomas.Matthe|
000c3350  77 20 47 6f 64 62 6f 6c  74 0a 45 64 75 61 72 64  |w Godbolt.Eduard|
000c3360  20 50 66 61 72 72 0a 44  69 63 6b 20 41 6c 73 74  | Pfarr.Dick Alst|
000c3370  65 69 6e 0a 49 61 69 6e  20 54 72 75 73 6b 65 74  |ein.Iain Trusket|
000c3380  74 0a 54 69 6d 20 48 6f  77 61 72 74 68 0a 47 61  |t.Tim Howarth.Ga|
000c3390  76 61 6e 20 46 61 6e 74  6f 6d 0a 41 6e 64 79 20  |van Fantom.Andy |
000c33a0  48 6f 6c 64 73 77 6f 72  74 68 0a 53 74 75 61 72  |Holdsworth.Stuar|
000c33b0  74 20 48 61 6c 6c 69 64  61 79 0a 53 74 65 77 61  |t Halliday.Stewa|
000c33c0  72 74 20 42 72 6f 64 69  65 0a 4d 61 74 74 68 65  |rt Brodie.Matthe|
000c33d0  77 20 57 65 62 73 74 65  72 0a 43 68 72 69 73 20  |w Webster.Chris |
000c33e0  4a 6f 68 6e 73 0a 44 61  76 69 64 20 4d 63 43 6f  |Johns.David McCo|
000c33f0  72 6d 61 63 6b 0a 4a 6f  68 6e 61 74 68 61 6e 20  |rmack.Johnathan |
000c3400  44 75 64 64 69 6e 67 74  6f 6e 0a 45 64 64 69 65  |Duddington.Eddie|
000c3410  20 45 64 77 61 72 64 73  0a 43 61 72 6c 20 45 6c  | Edwards.Carl El|
000c3420  6b 69 6e 73 0a 4a 2e 42  2e 42 6c 61 75 6b 6f 70  |kins.J.B.Blaukop|
000c3430  66 0a 23 65 6e 64 74 61  62 6c 65 0a 44 41 54 41  |f.#endtable.DATA|
000c3440  41 00 00 00 23 43 6f 6d  6d 61 6e 64 73 0a 66 32  |A...#Commands.f2|
000c3450  34 20 3d 20 53 69 64 6e  65 79 20 31 32 20 42 6f  |4 = Sidney 12 Bo|
000c3460  6c 64 20 32 34 20 49 74  61 6c 69 63 20 32 34 20  |ld 24 Italic 24 |
000c3470  42 6f 74 68 20 32 34 0a  23 45 6e 64 0a 00 00 00  |Both 24.#End....|
000c3480  44 49 52 24 48 00 00 00  48 00 00 00 c8 34 0c 00  |DIR$H...H....4..|
000c3490  48 fd ff ff 3f 36 81 2b  44 01 00 00 13 01 00 00  |H...?6.+D.......|
000c34a0  00 00 00 00 52 65 61 73  6f 6e 5f 00 40 47 0c 00  |....Reason_.@G..|
000c34b0  48 fd ff ff bb 36 81 2b  7c 02 00 00 13 01 00 00  |H....6.+|.......|
000c34c0  00 00 00 00 5f 00 00 00  44 49 52 24 44 01 00 00  |...._...DIR$D...|
000c34d0  44 01 00 00 0c 36 0c 00  48 fd ff ff c7 3a 9b 1b  |D....6..H....:..|
000c34e0  1e 01 00 00 13 00 00 00  00 00 00 00 21 52 6f 6f  |............!Roo|
000c34f0  74 00 00 00 2c 37 0c 00  48 fd ff ff 76 7a 9f 1b  |t...,7..H...vz..|
000c3500  aa 01 00 00 13 00 00 00  00 00 00 00 41 62 6f 72  |............Abor|
000c3510  74 4a 6f 62 00 00 00 00  d8 38 0c 00 48 fd ff ff  |tJob.....8..H...|
000c3520  8a 6c 9d 1b f8 01 00 00  13 00 00 00 00 00 00 00  |.l..............|
000c3530  43 6f 6c 6f 75 72 53 65  74 00 00 00 d0 3a 0c 00  |ColourSet....:..|
000c3540  48 fd ff ff de ca 9e 1b  2e 01 00 00 13 00 00 00  |H...............|
000c3550  00 00 00 00 45 6e 64 50  61 67 65 00 00 3c 0c 00  |....EndPage..<..|
000c3560  48 fd ff ff cd c0 9f 1b  27 01 00 00 13 00 00 00  |H.......'.......|
000c3570  00 00 00 00 4d 69 73 63  4f 70 00 00 28 3d 0c 00  |....MiscOp..(=..|
000c3580  48 fd ff ff 69 cd 9c 1b  98 02 00 00 13 00 00 00  |H...i...........|
000c3590  00 00 00 00 4f 75 74 70  75 74 44 75 6d 70 00 00  |....OutputDump..|
000c35a0  c0 3f 0c 00 48 fd ff ff  26 a0 9b 1b bf 01 00 00  |.?..H...&.......|
000c35b0  13 00 00 00 00 00 00 00  53 65 74 44 72 69 76 65  |........SetDrive|
000c35c0  72 00 00 00 80 41 0c 00  48 fd ff ff ab 7d 9f 1b  |r....A..H....}..|
000c35d0  a3 01 00 00 13 00 00 00  00 00 00 00 53 74 61 72  |............Star|
000c35e0  74 4a 6f 62 00 00 00 00  24 43 0c 00 48 fd ff ff  |tJob....$C..H...|
000c35f0  97 aa 9e 1b 1c 04 00 00  13 00 00 00 00 00 00 00  |................|
000c3600  53 74 61 72 74 50 61 67  65 00 00 00 44 41 54 41  |StartPage...DATA|
000c3610  1e 01 00 00 50 44 75 6d  70 65 72 20 72 65 61 73  |....PDumper reas|
000c3620  6f 6e 20 63 6f 64 65 73  0a 23 50 61 72 65 6e 74  |on codes.#Parent|
000c3630  20 50 44 75 6d 70 65 72  5f 43 6f 64 65 0a 4e 75  | PDumper_Code.Nu|
000c3640  6d 62 65 72 09 4e 61 6d  65 0a 23 4c 69 6e 65 0a  |mber.Name.#Line.|
000c3650  30 09 3c 50 44 75 6d 70  65 72 52 65 61 73 6f 6e  |0.<PDumperReason|
000c3660  5f 53 65 74 44 72 69 76  65 72 3e 0a 31 09 3c 50  |_SetDriver>.1.<P|
000c3670  44 75 6d 70 65 72 52 65  61 73 6f 6e 5f 4f 75 74  |DumperReason_Out|
000c3680  70 75 74 44 75 6d 70 3e  0a 32 09 3c 50 44 75 6d  |putDump>.2.<PDum|
000c3690  70 65 72 52 65 61 73 6f  6e 5f 43 6f 6c 6f 75 72  |perReason_Colour|
000c36a0  53 65 74 3e 0a 33 09 3c  50 44 75 6d 70 65 72 52  |Set>.3.<PDumperR|
000c36b0  65 61 73 6f 6e 5f 53 74  61 72 74 50 61 67 65 3e  |eason_StartPage>|
000c36c0  0a 34 09 3c 50 44 75 6d  70 65 72 52 65 61 73 6f  |.4.<PDumperReaso|
000c36d0  6e 5f 45 6e 64 50 61 67  65 3e 0a 35 09 3c 50 44  |n_EndPage>.5.<PD|
000c36e0  75 6d 70 65 72 52 65 61  73 6f 6e 5f 53 74 61 72  |umperReason_Star|
000c36f0  74 4a 6f 62 3e 0a 36 09  3c 50 44 75 6d 70 65 72  |tJob>.6.<PDumper|
000c3700  52 65 61 73 6f 6e 5f 41  62 6f 72 74 4a 6f 62 3e  |Reason_AbortJob>|
000c3710  0a 37 09 3c 50 44 75 6d  70 65 72 52 65 61 73 6f  |.7.<PDumperReaso|
000c3720  6e 5f 4d 69 73 63 4f 70  3e 0a 00 00 44 41 54 41  |n_MiscOp>...DATA|
000c3730  aa 01 00 00 50 44 75 6d  70 65 72 52 65 61 73 6f  |....PDumperReaso|
000c3740  6e 5f 41 62 6f 72 74 4a  6f 62 20 28 36 29 0a 23  |n_AbortJob (6).#|
000c3750  50 61 72 65 6e 74 20 50  44 75 6d 70 65 72 52 65  |Parent PDumperRe|
000c3760  61 73 6f 6e 5f 0a 3d 3e  09 52 30 20 3d 09 70 6f  |ason_.=>.R0 =.po|
000c3770  69 6e 74 65 72 20 74 6f  20 6a 6f 62 20 70 72 69  |inter to job pri|
000c3780  76 61 74 65 20 77 6f 72  64 0a 09 52 31 20 3d 09  |vate word..R1 =.|
000c3790  6f 75 74 70 75 74 20 66  69 6c 65 20 68 61 6e 64  |output file hand|
000c37a0  6c 65 0a 09 52 32 20 3d  09 3c 73 74 72 69 70 20  |le..R2 =.<strip |
000c37b0  74 79 70 65 3d 3e 50 44  75 6d 70 65 72 5f 73 74  |type=>PDumper_st|
000c37c0  72 69 70 74 79 70 65 73  3e 0a 09 52 33 20 3d 09  |riptypes>..R3 =.|
000c37d0  30 20 66 6f 72 20 65 6e  64 20 6f 66 20 70 61 67  |0 for end of pag|
000c37e0  65 2c 20 65 6c 73 65 20  65 6e 64 20 6f 66 20 64  |e, else end of d|
000c37f0  6f 63 75 6d 65 6e 74 0a  09 52 31 31 20 3d 09 36  |ocument..R11 =.6|
000c3800  20 28 72 65 61 73 6f 6e  20 63 6f 64 65 29 0a 09  | (reason code)..|
000c3810  52 31 32 20 3d 09 70 72  69 76 61 74 65 20 77 6f  |R12 =.private wo|
000c3820  72 64 0a 0a 54 68 69 73  20 69 73 20 63 61 6c 6c  |rd..This is call|
000c3830  65 64 20 61 74 20 74 68  65 20 65 6e 64 20 6f 66  |ed at the end of|
000c3840  20 65 61 63 68 20 70 61  67 65 2c 20 61 6e 64 20  | each page, and |
000c3850  61 74 20 74 68 65 20 65  6e 64 20 6f 66 20 74 68  |at the end of th|
000c3860  65 20 6a 6f 62 2e 20 49  66 20 61 6e 20 65 72 72  |e job. If an err|
000c3870  6f 72 20 6f 63 63 75 72  73 20 64 75 72 69 6e 67  |or occurs during|
000c3880  20 70 72 69 6e 74 69 6e  67 20 74 68 69 73 20 77  | printing this w|
000c3890  69 6c 6c 20 62 65 20 63  61 6c 6c 65 64 20 61 73  |ill be called as|
000c38a0  20 22 65 6e 64 20 6f 66  20 6a 6f 62 22 2e 0a 0a  | "end of job"...|
000c38b0  3c 50 44 75 6d 70 65 72  5f 54 69 64 79 4a 6f 62  |<PDumper_TidyJob|
000c38c0  3e 20 6d 61 79 20 62 65  20 75 73 65 66 75 6c 20  |> may be useful |
000c38d0  68 65 72 65 2e 0a 00 00  44 41 54 41 f8 01 00 00  |here....DATA....|
000c38e0  50 44 75 6d 70 65 72 52  65 61 73 6f 6e 5f 43 6f  |PDumperReason_Co|
000c38f0  6c 6f 75 72 53 65 74 20  28 32 29 0a 23 50 61 72  |lourSet (2).#Par|
000c3900  65 6e 74 20 50 44 75 6d  70 65 72 52 65 61 73 6f  |ent PDumperReaso|
000c3910  6e 5f 0a 3d 3e 09 52 30  20 3d 09 70 68 79 73 69  |n_.=>.R0 =.physi|
000c3920  63 61 6c 20 63 6f 6c 6f  75 72 20 28 26 42 42 47  |cal colour (&BBG|
000c3930  47 52 52 30 30 29 0a 09  52 32 20 3d 09 3c 73 74  |GRR00)..R2 =.<st|
000c3940  72 69 70 20 74 79 70 65  3d 3e 50 44 75 6d 70 65  |rip type=>PDumpe|
000c3950  72 5f 73 74 72 69 70 74  79 70 65 73 3e 0a 09 52  |r_striptypes>..R|
000c3960  33 20 3d 09 6a 6f 62 20  70 72 69 76 61 74 65 20  |3 =.job private |
000c3970  77 6f 72 64 20 28 73 65  65 20 3c 50 44 75 6d 70  |word (see <PDump|
000c3980  65 72 52 65 61 73 6f 6e  5f 53 74 61 72 74 4a 6f  |erReason_StartJo|
000c3990  62 3e 29 0a 09 52 34 20  3d 09 3c 68 61 6c 66 74  |b>)..R4 =.<halft|
000c39a0  6f 6e 69 6e 67 20 69 6e  66 6f 72 6d 61 74 69 6f  |oning informatio|
000c39b0  6e 3d 3e 50 44 75 6d 70  65 72 5f 68 61 6c 66 74  |n=>PDumper_halft|
000c39c0  6f 6e 69 6e 67 3e 0a 09  52 35 20 3d 09 3c 63 6f  |oning>..R5 =.<co|
000c39d0  6e 66 69 67 20 64 61 74  61 3d 3e 50 44 75 6d 70  |nfig data=>PDump|
000c39e0  65 72 5f 63 6f 6e 66 69  67 62 6c 6f 63 6b 3e 0a  |er_configblock>.|
000c39f0  09 52 31 31 20 3d 09 32  20 28 72 65 61 73 6f 6e  |.R11 =.2 (reason|
000c3a00  20 63 6f 64 65 29 0a 09  52 31 32 20 3d 09 70 72  | code)..R12 =.pr|
000c3a10  69 76 61 74 65 20 77 6f  72 64 0a 0a 3c 3d 09 52  |ivate word..<=.R|
000c3a20  33 20 3d 09 63 6f 6c 6f  75 72 20 6e 75 6d 62 65  |3 =.colour numbe|
000c3a30  72 20 28 73 74 72 69 70  20 74 79 70 65 20 64 65  |r (strip type de|
000c3a40  70 65 6e 64 65 6e 74 29  0a 0a 54 68 69 73 20 69  |pendent)..This i|
000c3a50  73 20 63 61 6c 6c 65 64  20 77 68 65 6e 20 50 44  |s called when PD|
000c3a60  72 69 76 65 72 44 50 20  77 61 6e 74 73 20 74 6f  |riverDP wants to|
000c3a70  20 63 6f 6e 76 65 72 74  20 61 20 70 68 79 73 69  | convert a physi|
000c3a80  63 61 6c 20 63 6f 6c 6f  75 72 20 74 6f 20 63 6f  |cal colour to co|
000c3a90  6c 6f 75 72 20 6e 75 6d  62 65 72 20 2d 20 3c 50  |lour number - <P|
000c3aa0  44 75 6d 70 65 72 5f 53  65 74 43 6f 6c 6f 75 72  |Dumper_SetColour|
000c3ab0  3e 20 6d 61 79 20 68 65  6c 70 20 69 6e 20 69 6d  |> may help in im|
000c3ac0  70 65 6d 65 6e 74 69 6e  67 20 74 68 69 73 2e 0a  |pementing this..|
000c3ad0  44 41 54 41 2e 01 00 00  50 44 75 6d 70 65 72 52  |DATA....PDumperR|
000c3ae0  65 61 73 6f 6e 5f 45 6e  64 50 61 67 65 20 28 34  |eason_EndPage (4|
000c3af0  29 0a 23 50 61 72 65 6e  74 20 50 44 75 6d 70 65  |).#Parent PDumpe|
000c3b00  72 52 65 61 73 6f 6e 5f  0a 3d 3e 09 52 31 20 3d  |rReason_.=>.R1 =|
000c3b10  09 6f 75 74 70 75 74 20  66 69 6c 65 20 68 61 6e  |.output file han|
000c3b20  64 6c 65 0a 09 52 32 20  3d 09 3c 73 74 72 69 70  |dle..R2 =.<strip|
000c3b30  20 74 79 70 65 3d 3e 50  44 75 6d 70 65 72 5f 73  | type=>PDumper_s|
000c3b40  74 72 69 70 74 79 70 65  73 3e 0a 09 52 33 20 3d  |triptypes>..R3 =|
000c3b50  09 6a 6f 62 20 70 72 69  76 61 74 65 20 77 6f 72  |.job private wor|
000c3b60  64 20 28 73 65 65 20 3c  50 44 75 6d 70 65 72 52  |d (see <PDumperR|
000c3b70  65 61 73 6f 6e 5f 53 74  61 72 74 4a 6f 62 3e 29  |eason_StartJob>)|
000c3b80  0a 09 52 34 20 3d 09 3c  63 6f 6e 66 69 67 20 64  |..R4 =.<config d|
000c3b90  61 74 61 3d 3e 50 44 75  6d 70 65 72 5f 63 6f 6e  |ata=>PDumper_con|
000c3ba0  66 69 67 62 6c 6f 63 6b  3e 0a 09 52 31 31 20 3d  |figblock>..R11 =|
000c3bb0  09 34 20 28 72 65 61 73  6f 6e 20 63 6f 64 65 29  |.4 (reason code)|
000c3bc0  0a 09 52 31 32 20 3d 09  70 72 69 76 61 74 65 20  |..R12 =.private |
000c3bd0  77 6f 72 64 0a 0a 54 68  69 73 20 69 73 20 63 61  |word..This is ca|
000c3be0  6c 6c 65 64 20 61 74 20  74 68 65 20 65 6e 64 20  |lled at the end |
000c3bf0  6f 66 20 65 61 63 68 20  70 61 67 65 2e 0a 00 00  |of each page....|
000c3c00  44 41 54 41 27 01 00 00  50 44 75 6d 70 65 72 52  |DATA'...PDumperR|
000c3c10  65 61 73 6f 6e 5f 4d 69  73 63 4f 70 20 28 37 29  |eason_MiscOp (7)|
000c3c20  0a 23 50 61 72 65 6e 74  20 50 44 75 6d 70 65 72  |.#Parent PDumper|
000c3c30  52 65 61 73 6f 6e 5f 0a  3d 3e 09 52 30 20 3d 09  |Reason_.=>.R0 =.|
000c3c40  50 44 72 69 76 65 72 5f  4d 69 73 63 4f 70 20 3c  |PDriver_MiscOp <|
000c3c50  72 65 61 73 6f 6e 20 63  6f 64 65 3d 3e 50 44 72  |reason code=>PDr|
000c3c60  69 76 65 72 5f 4d 69 73  63 4f 70 2e 6f 70 73 3e  |iver_MiscOp.ops>|
000c3c70  0a 09 52 31 31 20 3d 09  37 20 28 72 65 61 73 6f  |..R11 =.7 (reaso|
000c3c80  6e 20 63 6f 64 65 29 0a  09 52 31 32 20 3d 09 70  |n code)..R12 =.p|
000c3c90  72 69 76 61 74 65 20 77  6f 72 64 0a 09 6f 74 68  |rivate word..oth|
000c3ca0  65 72 20 72 65 67 69 73  74 65 72 73 20 61 73 20  |er registers as |
000c3cb0  66 6f 72 20 3c 50 44 72  69 76 65 72 5f 4d 69 73  |for <PDriver_Mis|
000c3cc0  63 4f 70 3e 20 72 65 61  73 6f 6e 0a 3c 3d 09 64  |cOp> reason.<=.d|
000c3cd0  65 70 65 6e 64 73 20 6f  6e 20 50 44 72 69 76 65  |epends on PDrive|
000c3ce0  72 5f 4d 69 73 63 4f 70  20 72 65 61 73 6f 6e 0a  |r_MiscOp reason.|
000c3cf0  0a 54 68 69 73 20 69 73  20 61 6c 6c 6f 77 73 20  |.This is allows |
000c3d00  63 61 6c 6c 73 20 74 6f  20 62 65 20 6d 61 64 65  |calls to be made|
000c3d10  20 64 69 72 65 63 74 20  74 6f 20 74 68 65 20 64  | direct to the d|
000c3d20  75 6d 70 65 72 2e 0a 00  44 41 54 41 98 02 00 00  |umper...DATA....|
000c3d30  50 44 75 6d 70 65 72 52  65 61 73 6f 6e 5f 4f 75  |PDumperReason_Ou|
000c3d40  74 70 75 74 44 75 6d 70  20 28 31 29 0a 23 50 61  |tputDump (1).#Pa|
000c3d50  72 65 6e 74 20 50 44 75  6d 70 65 72 52 65 61 73  |rent PDumperReas|
000c3d60  6f 6e 5f 0a 3d 3e 09 52  30 20 3d 09 70 6f 69 6e  |on_.=>.R0 =.poin|
000c3d70  74 65 72 20 74 6f 20 73  74 72 69 70 20 64 61 74  |ter to strip dat|
000c3d80  61 20 67 69 76 69 6e 67  20 62 69 74 6d 61 70 20  |a giving bitmap |
000c3d90  66 6f 72 20 73 74 72 69  70 0a 09 52 31 20 3d 09  |for strip..R1 =.|
000c3da0  6f 75 74 70 75 74 20 66  69 6c 65 20 68 61 6e 64  |output file hand|
000c3db0  6c 65 0a 09 52 32 20 3d  09 3c 73 74 72 69 70 20  |le..R2 =.<strip |
000c3dc0  74 79 70 65 3d 3e 50 44  75 6d 70 65 72 5f 73 74  |type=>PDumper_st|
000c3dd0  72 69 70 74 79 70 65 73  3e 0a 09 52 33 20 3d 09  |riptypes>..R3 =.|
000c3de0  64 75 6d 70 20 77 69 64  74 68 20 28 70 69 78 65  |dump width (pixe|
000c3df0  6c 73 29 0a 09 52 34 20  3d 09 73 74 72 69 70 20  |ls)..R4 =.strip |
000c3e00  68 65 69 67 68 74 20 28  70 69 78 65 6c 73 29 0a  |height (pixels).|
000c3e10  09 52 35 20 3d 09 73 74  72 69 70 20 77 69 64 74  |.R5 =.strip widt|
000c3e20  68 20 28 62 79 74 65 73  20 2d 20 61 64 64 20 74  |h (bytes - add t|
000c3e30  6f 20 52 31 20 74 6f 20  64 65 73 63 65 6e 64 20  |o R1 to descend |
000c3e40  31 20 6c 69 6e 65 29 0a  09 52 36 20 3d 09 3c 68  |1 line)..R6 =.<h|
000c3e50  61 6c 66 74 6f 6e 69 6e  67 20 69 6e 66 6f 72 6d  |alftoning inform|
000c3e60  61 74 69 6f 6e 3d 3e 50  44 75 6d 70 65 72 5f 68  |ation=>PDumper_h|
000c3e70  61 6c 66 74 6f 6e 69 6e  67 3e 0a 09 52 37 20 3d  |alftoning>..R7 =|
000c3e80  09 3c 63 6f 6e 66 69 67  20 64 61 74 61 3d 3e 50  |.<config data=>P|
000c3e90  44 75 6d 70 65 72 5f 63  6f 6e 66 69 67 62 6c 6f  |Dumper_configblo|
000c3ea0  63 6b 3e 0a 09 52 38 20  3d 09 6a 6f 62 20 70 72  |ck>..R8 =.job pr|
000c3eb0  69 76 61 74 65 20 77 6f  72 64 20 28 73 65 65 20  |ivate word (see |
000c3ec0  3c 50 44 75 6d 70 65 72  52 65 61 73 6f 6e 5f 53  |<PDumperReason_S|
000c3ed0  74 61 72 74 4a 6f 62 3e  29 0a 09 52 31 31 20 3d  |tartJob>)..R11 =|
000c3ee0  09 31 20 28 72 65 61 73  6f 6e 20 63 6f 64 65 29  |.1 (reason code)|
000c3ef0  0a 09 52 31 32 20 3d 09  70 72 69 76 61 74 65 20  |..R12 =.private |
000c3f00  77 6f 72 64 0a 0a 54 68  69 73 20 69 73 20 63 61  |word..This is ca|
000c3f10  6c 6c 65 64 20 77 68 65  6e 20 50 44 72 69 76 65  |lled when PDrive|
000c3f20  72 44 50 20 68 61 73 20  67 65 6e 65 72 61 74 65  |rDP has generate|
000c3f30  64 20 61 20 73 74 72 69  70 20 28 74 61 6b 69 6e  |d a strip (takin|
000c3f40  67 20 69 6e 74 65 72 6c  61 63 69 6e 67 20 69 6e  |g interlacing in|
000c3f50  74 6f 20 61 63 63 6f 75  6e 74 29 2e 20 52 30 20  |to account). R0 |
000c3f60  70 6f 69 6e 74 73 20 61  74 20 74 68 65 20 73 70  |points at the sp|
000c3f70  72 69 74 65 20 66 6f 72  6d 61 74 20 64 61 74 61  |rite format data|
000c3f80  2c 20 2a 6e 6f 74 2a 20  74 68 65 20 68 65 61 64  |, *not* the head|
000c3f90  65 72 2c 20 77 68 69 63  68 20 77 69 6c 6c 20 62  |er, which will b|
000c3fa0  65 20 65 69 74 68 65 72  20 31 20 6f 72 20 38 20  |e either 1 or 8 |
000c3fb0  62 69 74 73 2d 70 65 72  2d 70 69 78 65 6c 2e 0a  |bits-per-pixel..|
000c3fc0  44 41 54 41 bf 01 00 00  50 44 75 6d 70 65 72 52  |DATA....PDumperR|
000c3fd0  65 61 73 6f 6e 5f 53 65  74 44 72 69 76 65 72 20  |eason_SetDriver |
000c3fe0  28 30 29 0a 23 50 61 72  65 6e 74 20 50 44 75 6d  |(0).#Parent PDum|
000c3ff0  70 65 72 52 65 61 73 6f  6e 5f 0a 3d 3e 09 52 31  |perReason_.=>.R1|
000c4000  20 3d 09 3c 70 72 69 6e  74 65 72 20 64 75 6d 70  | =.<printer dump|
000c4010  65 72 20 6e 75 6d 62 65  72 3d 3e 50 44 75 6d 70  |er number=>PDump|
000c4020  65 72 5f 6e 75 6d 62 65  72 73 3e 0a 09 52 32 20  |er_numbers>..R2 |
000c4030  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 63 6f 6d  |=.pointer to com|
000c4040  6d 61 6e 64 20 74 6f 20  65 6e 73 75 72 65 20 64  |mand to ensure d|
000c4050  75 6d 70 65 72 20 70 72  65 73 65 6e 74 0a 09 52  |umper present..R|
000c4060  33 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 32  |3 =.pointer to 2|
000c4070  35 36 20 62 79 74 65 73  20 6f 66 20 64 75 6d 70  |56 bytes of dump|
000c4080  65 72 20 63 6f 6e 66 69  67 75 72 61 74 69 6f 6e  |er configuration|
000c4090  20 64 61 74 61 0a 09 52  34 20 3d 09 70 6f 69 6e  | data..R4 =.poin|
000c40a0  74 65 72 20 74 6f 20 32  35 36 20 62 79 74 65 73  |ter to 256 bytes|
000c40b0  20 6f 66 20 3c 50 44 72  69 76 65 72 44 50 20 61  | of <PDriverDP a|
000c40c0  6e 64 20 64 75 6d 70 65  72 20 63 6f 6e 66 69 67  |nd dumper config|
000c40d0  75 72 61 74 69 6f 6e 20  64 61 74 61 3d 3e 50 44  |uration data=>PD|
000c40e0  75 6d 70 65 72 5f 63 6f  6e 66 69 67 62 6c 6f 63  |umper_configbloc|
000c40f0  6b 3e 0a 09 52 35 20 3d  09 3c 63 6f 6e 66 69 67  |k>..R5 =.<config|
000c4100  75 72 61 74 69 6f 6e 20  77 6f 72 64 3d 3e 50 44  |uration word=>PD|
000c4110  75 6d 70 65 72 5f 63 6f  6e 66 69 67 77 6f 72 64  |umper_configword|
000c4120  3e 20 66 6f 72 20 64 75  6d 70 65 72 0a 09 52 31  |> for dumper..R1|
000c4130  31 20 3d 09 30 20 28 72  65 61 73 6f 6e 20 63 6f  |1 =.0 (reason co|
000c4140  64 65 29 0a 09 52 31 32  20 3d 09 70 72 69 76 61  |de)..R12 =.priva|
000c4150  74 65 20 77 6f 72 64 0a  0a 54 68 69 73 20 69 73  |te word..This is|
000c4160  20 63 61 6c 6c 65 64 20  62 79 20 3c 50 44 72 69  | called by <PDri|
000c4170  76 65 72 5f 53 65 74 44  72 69 76 65 72 3e 0a 00  |ver_SetDriver>..|
000c4180  44 41 54 41 a3 01 00 00  50 44 75 6d 70 65 72 52  |DATA....PDumperR|
000c4190  65 61 73 6f 6e 5f 53 74  61 72 74 4a 6f 62 20 28  |eason_StartJob (|
000c41a0  35 29 0a 23 50 61 72 65  6e 74 20 50 44 75 6d 70  |5).#Parent PDump|
000c41b0  65 72 52 65 61 73 6f 6e  5f 0a 3d 3e 09 52 30 20  |erReason_.=>.R0 |
000c41c0  3d 09 70 6f 69 6e 74 65  72 20 74 6f 20 6a 6f 62  |=.pointer to job|
000c41d0  20 70 72 69 76 61 74 65  20 77 6f 72 64 0a 09 52  | private word..R|
000c41e0  31 20 3d 09 6f 75 74 70  75 74 20 66 69 6c 65 20  |1 =.output file |
000c41f0  68 61 6e 64 6c 65 0a 09  52 32 20 3d 09 3c 73 74  |handle..R2 =.<st|
000c4200  72 69 70 20 74 79 70 65  3d 3e 50 44 75 6d 70 65  |rip type=>PDumpe|
000c4210  72 5f 73 74 72 69 70 74  79 70 65 73 3e 0a 09 52  |r_striptypes>..R|
000c4220  35 20 3d 09 3c 63 6f 6e  66 69 67 20 64 61 74 61  |5 =.<config data|
000c4230  3d 3e 50 44 75 6d 70 65  72 5f 63 6f 6e 66 69 67  |=>PDumper_config|
000c4240  62 6c 6f 63 6b 3e 0a 09  52 31 31 20 3d 09 35 20  |block>..R11 =.5 |
000c4250  28 72 65 61 73 6f 6e 20  63 6f 64 65 29 0a 09 52  |(reason code)..R|
000c4260  31 32 20 3d 09 70 72 69  76 61 74 65 20 77 6f 72  |12 =.private wor|
000c4270  64 0a 0a 54 68 69 73 20  69 73 20 63 61 6c 6c 65  |d..This is calle|
000c4280  64 20 61 74 20 74 68 65  20 73 74 61 72 74 20 6f  |d at the start o|
000c4290  66 20 65 61 63 68 20 6a  6f 62 2e 20 54 68 65 20  |f each job. The |
000c42a0  70 72 69 76 61 74 65 20  77 6f 72 64 20 69 73 20  |private word is |
000c42b0  66 6f 72 20 74 68 65 20  64 75 6d 70 65 72 27 73  |for the dumper's|
000c42c0  20 6f 77 6e 20 75 73 65  20 2d 20 75 73 75 61 6c  | own use - usual|
000c42d0  6c 79 20 69 74 20 69 73  20 75 73 65 64 20 74 6f  |ly it is used to|
000c42e0  20 73 74 6f 72 65 20 61  20 77 6f 72 6b 73 70 61  | store a workspa|
000c42f0  63 65 20 70 6f 69 6e 74  65 72 2e 20 3c 50 44 75  |ce pointer. <PDu|
000c4300  6d 70 65 72 5f 53 74 61  72 74 4a 6f 62 3e 20 6d  |mper_StartJob> m|
000c4310  61 79 20 62 65 20 75 73  65 66 75 6c 20 68 65 72  |ay be useful her|
000c4320  65 2e 0a 00 44 41 54 41  1c 04 00 00 50 44 75 6d  |e...DATA....PDum|
000c4330  70 65 72 52 65 61 73 6f  6e 5f 53 74 61 72 74 50  |perReason_StartP|
000c4340  61 67 65 20 28 33 29 0a  23 50 61 72 65 6e 74 20  |age (3).#Parent |
000c4350  50 44 75 6d 70 65 72 52  65 61 73 6f 6e 5f 0a 3d  |PDumperReason_.=|
000c4360  3e 09 52 30 20 3d 09 63  6f 70 69 65 73 0a 09 52  |>.R0 =.copies..R|
000c4370  31 20 3d 09 6f 75 74 70  75 74 20 66 69 6c 65 20  |1 =.output file |
000c4380  68 61 6e 64 6c 65 0a 09  52 32 20 3d 09 3c 73 74  |handle..R2 =.<st|
000c4390  72 69 70 20 74 79 70 65  3d 3e 50 44 75 6d 70 65  |rip type=>PDumpe|
000c43a0  72 5f 73 74 72 69 70 74  79 70 65 73 3e 0a 09 52  |r_striptypes>..R|
000c43b0  33 20 3d 09 62 6c 61 6e  6b 20 70 69 78 65 6c 20  |3 =.blank pixel |
000c43c0  72 6f 77 73 20 74 6f 20  73 6b 69 70 20 62 65 66  |rows to skip bef|
000c43d0  6f 72 65 20 74 68 65 20  64 61 74 61 0a 09 52 34  |ore the data..R4|
000c43e0  20 3d 09 6a 6f 62 20 70  72 69 76 61 74 65 20 77  | =.job private w|
000c43f0  6f 72 64 20 28 73 65 65  20 3c 50 44 75 6d 70 65  |ord (see <PDumpe|
000c4400  72 52 65 61 73 6f 6e 5f  53 74 61 72 74 4a 6f 62  |rReason_StartJob|
000c4410  3e 29 0a 09 52 35 20 3d  09 3c 63 6f 6e 66 69 67  |>)..R5 =.<config|
000c4420  20 64 61 74 61 3d 3e 50  44 75 6d 70 65 72 5f 63  | data=>PDumper_c|
000c4430  6f 6e 66 69 67 62 6c 6f  63 6b 3e 0a 09 52 36 20  |onfigblock>..R6 |
000c4440  3d 09 6c 65 66 74 20 6d  61 72 67 69 6e 20 28 70  |=.left margin (p|
000c4450  69 78 65 6c 73 29 0a 09  52 37 20 3d 09 3c 72 65  |ixels)..R7 =.<re|
000c4460  73 6f 6c 75 74 69 6f 6e  3d 3e 50 44 75 6d 70 65  |solution=>PDumpe|
000c4470  72 5f 72 65 73 6f 6c 75  74 69 6f 6e 3e 0a 09 52  |r_resolution>..R|
000c4480  31 31 20 3d 09 33 20 28  72 65 61 73 6f 6e 20 63  |11 =.3 (reason c|
000c4490  6f 64 65 29 0a 09 52 31  32 20 3d 09 70 72 69 76  |ode)..R12 =.priv|
000c44a0  61 74 65 20 77 6f 72 64  0a 0a 3c 3d 09 52 30 20  |ate word..<=.R0 |
000c44b0  3d 09 6e 75 6d 62 65 72  20 6f 66 20 63 6f 70 69  |=.number of copi|
000c44c0  65 73 20 74 6f 20 62 65  20 70 65 72 66 6f 72 6d  |es to be perform|
000c44d0  65 64 0a 09 52 33 20 3d  09 62 6c 61 6e 6b 20 70  |ed..R3 =.blank p|
000c44e0  69 78 65 6c 20 72 6f 77  73 20 73 74 69 6c 6c 20  |ixel rows still |
000c44f0  74 6f 20 73 6b 69 70 0a  0a 54 68 69 73 20 69 73  |to skip..This is|
000c4500  20 63 61 6c 6c 65 64 20  61 74 20 74 68 65 20 73  | called at the s|
000c4510  74 61 72 74 20 6f 66 20  65 61 63 68 20 70 61 67  |tart of each pag|
000c4520  65 2e 20 52 30 20 73 68  6f 75 6c 64 20 72 65 74  |e. R0 should ret|
000c4530  75 72 6e 20 74 68 65 20  6e 75 6d 62 65 72 20 6f  |urn the number o|
000c4540  66 20 63 6f 70 69 65 73  20 74 68 61 74 20 77 69  |f copies that wi|
000c4550  6c 6c 20 61 63 74 75 61  6c 6c 79 20 62 65 20 70  |ll actually be p|
000c4560  72 69 6e 74 65 64 2c 20  61 6e 64 20 65 74 6e 72  |rinted, and etnr|
000c4570  79 20 52 33 20 73 68 6f  75 6c 64 20 62 65 20 72  |y R3 should be r|
000c4580  65 64 75 63 65 64 20 62  79 20 74 68 65 20 6e 75  |educed by the nu|
000c4590  6d 62 65 72 20 6f 66 20  62 6c 61 6e 6b 20 72 6f  |mber of blank ro|
000c45a0  77 73 20 61 63 74 75 61  6c 6c 79 20 73 6b 69 70  |ws actually skip|
000c45b0  70 65 64 20 2d 20 50 44  72 69 76 65 72 44 50 20  |ped - PDriverDP |
000c45c0  77 69 6c 6c 20 73 6b 69  70 20 74 68 65 20 72 65  |will skip the re|
000c45d0  73 74 2e 0a 0a 23 20 44  6f 65 73 20 61 20 53 69  |st...# Does a Si|
000c45e0  6e 63 6c 61 72 20 5a 58  20 70 72 69 6e 74 65 72  |nclar ZX printer|
000c45f0  20 63 6f 75 6e 74 20 66  6f 72 20 74 68 69 73 20  | count for this |
000c4600  6f 6e 65 3f 20 3a 2d 29  0a 47 65 6e 65 72 69 63  |one? :-).Generic|
000c4610  20 64 6f 74 20 6d 61 74  72 69 78 20 77 69 74 68  | dot matrix with|
000c4620  20 72 6f 6c 6c 20 70 61  70 65 72 20 28 3c 63 6f  | roll paper (<co|
000c4630  6e 66 69 67 20 62 6c 6f  63 6b 3d 3e 50 44 72 69  |nfig block=>PDri|
000c4640  76 65 72 5f 53 65 74 44  72 69 76 65 72 62 6c 6f  |ver_SetDriverblo|
000c4650  63 6b 3e 20 3c 6f 66 66  73 65 74 20 32 35 36 2c  |ck> <offset 256,|
000c4660  20 62 69 74 20 31 20 73  65 74 3d 3e 50 44 75 6d  | bit 1 set=>PDum|
000c4670  70 65 72 5f 43 6f 6e 66  69 67 57 6f 72 64 3e 29  |per_ConfigWord>)|
000c4680  20 73 68 6f 75 6c 64 20  69 67 6e 6f 72 65 20 52  | should ignore R|
000c4690  33 2c 20 61 6e 64 20 73  6b 69 70 20 5b 3c 63 6f  |3, and skip [<co|
000c46a0  6e 66 69 67 20 62 6c 6f  63 6b 3d 3e 50 44 75 6d  |nfig block=>PDum|
000c46b0  70 65 72 5f 63 6f 6e 66  69 67 62 6c 6f 63 6b 3e  |per_configblock>|
000c46c0  20 6f 66 66 73 65 74 20  34 34 20 28 7b 2a 7d 6e  | offset 44 ({*}n|
000c46d0  6f 74 7b 2a 7d 20 33 32  2c 20 61 73 20 50 52 4d  |ot{*} 32, as PRM|
000c46e0  73 20 73 61 79 29 5d 20  70 69 78 65 6c 73 20 28  |s say)] pixels (|
000c46f0  72 65 74 75 72 6e 69 6e  67 20 6e 75 6d 62 65 72  |returning number|
000c4700  20 6f 66 20 75 6e 73 6b  69 70 70 61 62 6c 65 20  | of unskippable |
000c4710  70 69 78 65 6c 73 20 69  6e 20 52 33 20 61 73 20  |pixels in R3 as |
000c4720  61 62 6f 76 65 29 0a 23  20 43 6f 6e 66 75 73 65  |above).# Confuse|
000c4730  64 20 2d 20 79 6f 75 20  77 69 6c 6c 20 62 65 21  |d - you will be!|
000c4740  44 49 52 24 7c 02 00 00  7c 02 00 00 bc 49 0c 00  |DIR$|...|....I..|
000c4750  48 fd ff ff dd d0 77 2b  b4 00 00 00 13 00 00 00  |H.....w+........|
000c4760  00 00 00 00 21 52 6f 6f  74 00 00 00 70 4a 0c 00  |....!Root...pJ..|
000c4770  48 ff ff ff ca c1 f7 18  0b 02 00 00 13 00 00 00  |H...............|
000c4780  00 00 00 00 43 6c 61 69  6d 00 00 00 7c 4c 0c 00  |....Claim...|L..|
000c4790  48 fd ff ff 38 a9 9d 1b  5a 01 00 00 13 00 00 00  |H...8...Z.......|
000c47a0  00 00 00 00 63 6f 64 65  00 00 00 00 d8 4d 0c 00  |....code.....M..|
000c47b0  48 fd ff ff 4c 83 9a 1b  b9 01 00 00 13 00 00 00  |H...L...........|
000c47c0  00 00 00 00 63 6f 6e 66  69 67 77 6f 72 64 00 00  |....configword..|
000c47d0  94 4f 0c 00 48 fd ff ff  18 95 9e 1b 50 05 00 00  |.O..H.......P...|
000c47e0  13 00 00 00 00 00 00 00  63 6f 6e 66 69 67 62 6c  |........configbl|
000c47f0  6f 63 6b 00 e4 54 0c 00  48 ff ff ff e9 10 61 26  |ock..T..H.....a&|
000c4800  4d 01 00 00 13 00 00 00  00 00 00 00 43 6f 70 79  |M...........Copy|
000c4810  46 69 6c 65 6e 61 6d 65  00 00 00 00 34 56 0c 00  |Filename....4V..|
000c4820  48 ff ff ff be fb f7 18  7a 01 00 00 13 00 00 00  |H.......z.......|
000c4830  00 00 00 00 46 69 6e 64  00 00 00 00 b0 57 0c 00  |....Find.....W..|
000c4840  48 ff ff ff 70 d9 f7 18  fd 00 00 00 13 00 00 00  |H...p...........|
000c4850  00 00 00 00 46 72 65 65  00 00 00 00 b0 58 0c 00  |....Free.....X..|
000c4860  48 fd ff ff 10 49 f9 18  80 00 00 00 13 00 00 00  |H....I..........|
000c4870  00 00 00 00 68 61 6c 66  74 6f 6e 69 6e 67 00 00  |....halftoning..|
000c4880  30 59 0c 00 48 ff ff ff  29 48 f7 18 52 01 00 00  |0Y..H...)H..R...|
000c4890  13 00 00 00 00 00 00 00  49 6e 66 6f 00 00 00 00  |........Info....|
000c48a0  84 5a 0c 00 48 ff ff ff  35 17 61 26 b7 01 00 00  |.Z..H...5.a&....|
000c48b0  13 00 00 00 00 00 00 00  4c 6f 6f 6b 75 70 45 72  |........LookupEr|
000c48c0  72 6f 72 00 3c 5c 0c 00  48 fd ff ff de a5 9a 1b  |ror.<\..H.......|
000c48d0  f7 00 00 00 13 00 00 00  00 00 00 00 6e 75 6d 62  |............numb|
000c48e0  65 72 73 00 34 5d 0c 00  48 ff ff ff 6f b6 f9 18  |ers.4]..H...o...|
000c48f0  32 02 00 00 13 00 00 00  00 00 00 00 50 72 65 70  |2...........Prep|
000c4900  61 72 65 53 74 72 69 70  00 00 00 00 68 5f 0c 00  |areStrip....h_..|
000c4910  48 fd ff ff 63 d6 9d 1b  7a 00 00 00 13 00 00 00  |H...c...z.......|
000c4920  00 00 00 00 72 65 73 6f  6c 75 74 69 6f 6e 00 00  |....resolution..|
000c4930  e4 5f 0c 00 48 ff ff ff  d8 4d f9 18 06 02 00 00  |._..H....M......|
000c4940  13 00 00 00 00 00 00 00  53 65 74 43 6f 6c 6f 75  |........SetColou|
000c4950  72 00 00 00 ec 61 0c 00  48 ff ff ff bf 2c f8 18  |r....a..H....,..|
000c4960  5d 01 00 00 13 00 00 00  00 00 00 00 53 74 61 72  |]...........Star|
000c4970  74 4a 6f 62 00 00 00 00  4c 63 0c 00 48 fd ff ff  |tJob....Lc..H...|
000c4980  74 af f8 18 68 00 00 00  33 00 00 00 00 00 00 00  |t...h...3.......|
000c4990  73 74 72 69 70 74 79 70  65 73 00 00 b4 63 0c 00  |striptypes...c..|
000c49a0  48 ff ff ff 92 64 f8 18  7a 01 00 00 13 00 00 00  |H....d..z.......|
000c49b0  00 00 00 00 54 69 64 79  4a 6f 62 00 44 41 54 41  |....TidyJob.DATA|
000c49c0  b4 00 00 00 50 44 75 6d  70 65 72 0a 23 50 61 72  |....PDumper.#Par|
000c49d0  65 6e 74 20 21 52 6f 6f  74 0a 23 50 72 65 66 69  |ent !Root.#Prefi|
000c49e0  78 20 50 44 75 6d 70 65  72 5f 0a 23 74 61 62 6c  |x PDumper_.#tabl|
000c49f0  65 20 63 6f 6c 75 6d 6e  73 20 32 0a 3c 43 6c 61  |e columns 2.<Cla|
000c4a00  69 6d 3e 0a 3c 43 6f 70  79 46 69 6c 65 6e 61 6d  |im>.<CopyFilenam|
000c4a10  65 3e 0a 3c 46 69 6e 64  3e 0a 3c 46 72 65 65 3e  |e>.<Find>.<Free>|
000c4a20  0a 3c 49 6e 66 6f 3e 0a  3c 4c 6f 6f 6b 75 70 45  |.<Info>.<LookupE|
000c4a30  72 72 6f 72 3e 0a 3c 50  72 65 70 61 72 65 53 74  |rror>.<PrepareSt|
000c4a40  72 69 70 3e 0a 3c 53 65  74 43 6f 6c 6f 75 72 3e  |rip>.<SetColour>|
000c4a50  0a 3c 53 74 61 72 74 4a  6f 62 3e 0a 3c 54 69 64  |.<StartJob>.<Tid|
000c4a60  79 4a 6f 62 3e 0a 23 65  6e 64 74 61 62 6c 65 0a  |yJob>.#endtable.|
000c4a70  44 41 54 41 0b 02 00 00  50 44 75 6d 70 65 72 5f  |DATA....PDumper_|
000c4a80  43 6c 61 69 6d 20 20 28  26 34 31 42 30 31 29 0a  |Claim  (&41B01).|
000c4a90  23 50 61 72 65 6e 74 20  50 44 75 6d 70 65 72 5f  |#Parent PDumper_|
000c4aa0  0a 3d 3e 09 52 30 20 3d  09 70 6f 69 6e 74 65 72  |.=>.R0 =.pointer|
000c4ab0  20 74 6f 20 61 6e 63 68  6f 72 20 77 6f 72 64 0a  | to anchor word.|
000c4ac0  09 52 33 20 3d 09 73 69  7a 65 20 74 6f 20 63 6c  |.R3 =.size to cl|
000c4ad0  61 69 6d 0a 09 52 34 20  3d 09 74 61 67 20 66 6f  |aim..R4 =.tag fo|
000c4ae0  72 20 62 6c 6f 63 6b 0a  3c 3d 09 52 32 20 3d 09  |r block.<=.R2 =.|
000c4af0  70 6f 69 6e 74 65 72 20  74 6f 20 77 6f 72 64 20  |pointer to word |
000c4b00  61 6c 69 67 6e 65 64 20  62 6c 6f 63 6b 20 61 6c  |aligned block al|
000c4b10  6c 6f 63 61 74 65 64 0a  0a 54 68 69 73 20 53 57  |located..This SW|
000c4b20  49 20 61 6c 6c 6f 63 61  74 65 73 20 61 20 62 6c  |I allocates a bl|
000c4b30  6f 63 6b 20 6f 66 20 6d  65 6d 6f 72 79 20 28 73  |ock of memory (s|
000c4b40  69 7a 65 20 6e 65 65 64  20 6e 6f 74 20 62 65 20  |ize need not be |
000c4b50  61 20 6d 75 6c 74 69 70  6c 65 20 6f 66 20 66 6f  |a multiple of fo|
000c4b60  75 72 29 20 61 6e 64 20  6c 69 6e 6b 73 20 69 6e  |ur) and links in|
000c4b70  74 6f 20 74 68 65 20 64  75 6d 70 65 72 27 73 20  |to the dumper's |
000c4b80  63 68 61 69 6e 20 73 70  65 63 69 66 69 65 64 20  |chain specified |
000c4b90  62 79 20 74 68 65 20 61  6e 63 68 6f 72 20 77 6f  |by the anchor wo|
000c4ba0  72 64 20 70 61 73 73 65  64 20 69 6e 20 52 30 20  |rd passed in R0 |
000c4bb0  28 75 73 75 61 6c 6c 79  20 74 68 65 20 6d 6f 64  |(usually the mod|
000c4bc0  75 6c 65 27 73 20 70 72  69 76 61 74 65 20 77 6f  |ule's private wo|
000c4bd0  72 64 29 2e 20 54 68 65  20 74 61 67 20 69 73 20  |rd). The tag is |
000c4be0  73 74 6f 72 65 64 20 61  66 74 65 72 20 74 68 65  |stored after the|
000c4bf0  20 6c 69 6e 6b 20 70 6f  69 6e 74 20 2d 20 69 74  | link point - it|
000c4c00  20 69 73 20 6e 6f 74 20  61 64 76 69 73 65 64 20  | is not advised |
000c4c10  74 6f 20 63 6c 61 69 6d  20 6d 6f 72 65 20 74 68  |to claim more th|
000c4c20  61 6e 20 6f 6e 65 20 62  6c 6f 63 6b 20 77 69 74  |an one block wit|
000c4c30  68 20 74 68 65 20 73 61  6d 65 20 74 61 67 20 28  |h the same tag (|
000c4c40  73 65 65 20 3c 50 44 75  6d 70 65 72 5f 46 69 6e  |see <PDumper_Fin|
000c4c50  64 3e 29 2e 20 55 73 65  20 3c 50 44 75 6d 70 65  |d>). Use <PDumpe|
000c4c60  72 5f 46 72 65 65 3e 20  74 6f 20 66 72 65 65 20  |r_Free> to free |
000c4c70  74 68 65 20 62 6c 6f 63  6b 2e 0a 00 44 41 54 41  |the block...DATA|
000c4c80  5a 01 00 00 50 44 75 6d  70 65 72 20 72 65 61 73  |Z...PDumper reas|
000c4c90  6f 6e 20 63 6f 64 65 20  68 61 6e 64 6c 65 72 0a  |on code handler.|
000c4ca0  23 50 61 72 65 6e 74 20  50 44 72 69 76 65 72 5f  |#Parent PDriver_|
000c4cb0  4d 69 73 63 4f 70 38 30  30 30 30 30 30 30 0a 3d  |MiscOp80000000.=|
000c4cc0  3e 09 52 31 31 09 3c 72  65 61 73 6f 6e 20 63 6f  |>.R11.<reason co|
000c4cd0  64 65 3d 3e 50 44 75 6d  70 65 72 52 65 61 73 6f  |de=>PDumperReaso|
000c4ce0  6e 5f 3e 0a 09 52 31 32  09 70 72 69 76 61 74 65  |n_>..R12.private|
000c4cf0  20 77 6f 72 64 20 70 6f  69 6e 74 65 72 20 28 66  | word pointer (f|
000c4d00  72 6f 6d 20 52 33 20 69  6e 20 3c 50 44 72 69 76  |rom R3 in <PDriv|
000c4d10  65 72 5f 4d 69 73 63 4f  70 20 38 30 30 30 30 30  |er_MiscOp 800000|
000c4d20  30 30 3d 3e 50 44 72 69  76 65 72 5f 4d 69 73 63  |00=>PDriver_Misc|
000c4d30  4f 70 38 30 30 30 30 30  30 30 3e 29 0a 09 4f 74  |Op80000000>)..Ot|
000c4d40  68 65 72 20 72 65 67 69  73 74 65 72 73 20 64 65  |her registers de|
000c4d50  70 65 6e 64 20 6f 6e 20  72 65 61 73 6f 6e 20 63  |pend on reason c|
000c4d60  6f 64 65 0a 3c 3d 09 69  66 20 65 72 72 6f 72 20  |ode.<=.if error |
000c4d70  56 20 73 65 74 2c 20 65  72 72 6f 72 20 69 6e 20  |V set, error in |
000c4d80  52 30 0a 0a 4e 6f 74 65  3a 20 74 68 65 20 72 65  |R0..Note: the re|
000c4d90  67 69 73 74 65 72 20 75  73 65 64 20 74 6f 20 70  |gister used to p|
000c4da0  61 73 73 20 74 68 65 20  6a 6f 62 20 70 72 69 76  |ass the job priv|
000c4db0  61 74 65 20 77 6f 72 64  20 76 61 72 69 65 73 20  |ate word varies |
000c4dc0  62 65 74 77 65 65 6e 20  72 65 61 73 6f 6e 20 63  |between reason c|
000c4dd0  6f 64 65 73 2e 0a 00 00  44 41 54 41 b9 01 00 00  |odes....DATA....|
000c4de0  50 44 75 6d 70 65 72 20  63 6f 6e 66 69 67 75 72  |PDumper configur|
000c4df0  61 74 69 6f 6e 20 77 6f  72 64 0a 23 50 61 72 65  |ation word.#Pare|
000c4e00  6e 74 20 50 44 72 69 76  65 72 5f 53 65 74 44 72  |nt PDriver_SetDr|
000c4e10  69 76 65 72 0a 42 69 74  73 09 4d 65 61 6e 69 6e  |iver.Bits.Meanin|
000c4e20  67 0a 23 4c 69 6e 65 0a  30 2d 33 09 3c 44 72 69  |g.#Line.0-3.<Dri|
000c4e30  76 65 72 20 73 70 65 63  69 66 69 63 20 66 65 61  |ver specific fea|
000c4e40  74 75 72 65 73 3d 3e 2e  73 70 65 63 69 66 69 63  |tures=>.specific|
000c4e50  3e 0a 32 34 2d 33 31 09  50 44 72 69 76 65 72 44  |>.24-31.PDriverD|
000c4e60  50 20 76 65 72 73 69 6f  6e 20 28 63 75 72 72 65  |P version (curre|
000c4e70  6e 74 6c 79 20 33 29 0a  23 20 53 6f 72 72 79 20  |ntly 3).# Sorry |
000c4e80  74 68 61 74 20 74 68 69  73 20 69 73 20 61 20 6d  |that this is a m|
000c4e90  69 72 65 20 6f 66 20 73  75 62 70 61 67 65 73 0a  |ire of subpages.|
000c4ea0  23 53 75 62 50 61 67 65  20 73 70 65 63 69 66 69  |#SubPage specifi|
000c4eb0  63 0a 50 44 75 6d 70 65  72 20 64 72 69 76 65 72  |c.PDumper driver|
000c4ec0  20 73 70 65 63 69 66 69  63 20 62 69 74 73 0a 23  | specific bits.#|
000c4ed0  57 72 61 70 20 6f 66 66  0a 42 69 74 09 4d 65 61  |Wrap off.Bit.Mea|
000c4ee0  6e 69 6e 67 20 66 6f 72  20 4c 4a 09 09 09 4d 65  |ning for LJ...Me|
000c4ef0  61 6e 69 6e 67 20 66 6f  72 20 44 4d 0a 23 4c 69  |aning for DM.#Li|
000c4f00  6e 65 0a 30 09 53 75 70  70 6f 72 74 73 20 6d 75  |ne.0.Supports mu|
000c4f10  6c 74 69 70 6c 65 20 63  6f 70 69 65 73 09 48 6f  |ltiple copies.Ho|
000c4f20  72 69 7a 6f 6e 74 61 6c  20 6f 75 74 70 75 74 0a  |rizontal output.|
000c4f30  31 09 53 75 70 70 6f 72  74 73 20 63 6f 6d 70 72  |1.Supports compr|
000c4f40  65 73 73 69 6f 6e 09 09  52 6f 6c 6c 20 70 61 70  |ession..Roll pap|
000c4f50  65 72 20 66 65 65 64 0a  32 09 44 6f 6e 27 74 20  |er feed.2.Don't |
000c4f60  73 65 6e 64 20 66 6f 72  6d 20 66 65 65 64 73 0a  |send form feeds.|
000c4f70  33 09 55 73 65 20 50 61  69 6e 74 4a 65 74 20 6d  |3.Use PaintJet m|
000c4f80  6f 76 65 6d 65 6e 74 20  63 6f 6d 6d 61 6e 64 73  |ovement commands|
000c4f90  0a 00 00 00 44 41 54 41  50 05 00 00 50 44 75 6d  |....DATAP...PDum|
000c4fa0  70 65 72 20 63 6f 6e 66  69 67 20 62 6c 6f 63 6b  |per config block|
000c4fb0  0a 23 50 61 72 65 6e 74  20 50 44 75 6d 70 65 72  |.#Parent PDumper|
000c4fc0  52 65 61 73 6f 6e 5f 30  0a 41 6c 6c 20 62 79 74  |Reason_0.All byt|
000c4fd0  65 20 76 61 6c 75 73 20  61 72 65 20 75 6e 73 69  |e valus are unsi|
000c4fe0  67 6e 65 64 2c 20 61 6c  6c 20 77 6f 72 64 73 20  |gned, all words |
000c4ff0  61 72 65 20 73 69 67 6e  65 64 2e 20 53 74 72 69  |are signed. Stri|
000c5000  6e 67 20 61 72 65 20 73  74 6f 72 65 64 20 61 73  |ng are stored as|
000c5010  20 2a 62 79 74 65 2a 20  6f 66 66 73 65 74 73 20  | *byte* offsets |
000c5020  74 6f 20 61 20 3c 73 74  72 69 6e 67 20 73 74 72  |to a <string str|
000c5030  75 63 74 75 72 65 3d 3e  2e 73 74 72 69 6e 67 3e  |ucture=>.string>|
000c5040  2e 20 41 6e 20 6f 66 66  73 65 74 20 6f 66 20 30  |. An offset of 0|
000c5050  20 6d 65 61 6e 73 20 74  68 65 72 65 20 69 73 20  | means there is |
000c5060  6e 6f 20 73 74 72 69 6e  67 2e 20 57 68 65 6e 20  |no string. When |
000c5070  3c 50 44 72 69 76 65 72  5f 53 65 74 44 72 69 76  |<PDriver_SetDriv|
000c5080  65 72 3e 20 63 6f 70 69  65 73 20 74 68 69 73 20  |er> copies this |
000c5090  62 6c 6f 63 6b 20 69 74  20 6d 61 6b 65 73 20 3c  |block it makes <|
000c50a0  74 68 65 73 65 20 61 64  64 69 74 69 6f 6e 73 3d  |these additions=|
000c50b0  3e 50 44 72 69 76 65 72  5f 53 65 74 44 72 69 76  |>PDriver_SetDriv|
000c50c0  65 72 62 6c 6f 63 6b 3e  2e 0a 0a 4f 66 66 73 65  |erblock>...Offse|
000c50d0  74 09 54 79 70 65 09 50  72 69 6e 74 45 64 69 74  |t.Type.PrintEdit|
000c50e0  20 6e 61 6d 65 09 09 4e  6f 74 65 0a 23 4c 69 6e  | name..Note.#Lin|
000c50f0  65 0a 31 32 09 62 79 74  65 09 64 61 74 61 20 6c  |e.12.byte.data l|
000c5100  65 6e 67 74 68 20 6d 75  6c 74 69 70 6c 69 65 72  |ength multiplier|
000c5110  09 20 0a 31 33 09 62 79  74 65 09 64 61 74 61 20  |. .13.byte.data |
000c5120  6c 65 6e 67 74 68 20 61  64 64 65 64 0a 31 34 09  |length added.14.|
000c5130  62 79 74 65 09 64 75 6d  70 20 68 65 69 67 68 74  |byte.dump height|
000c5140  0a 31 35 09 73 74 72 69  6e 67 09 70 61 67 65 20  |.15.string.page |
000c5150  73 74 61 72 74 0a 31 36  09 73 74 72 69 6e 67 09  |start.16.string.|
000c5160  70 61 67 65 20 65 6e 64  0a 31 37 09 73 74 72 69  |page end.17.stri|
000c5170  6e 67 09 6c 69 6e 65 20  72 65 74 75 72 6e 0a 31  |ng.line return.1|
000c5180  38 09 73 74 72 69 6e 67  09 6c 69 6e 65 20 73 6b  |8.string.line sk|
000c5190  69 70 0a 31 39 09 73 74  72 69 6e 67 09 6c 69 6e  |ip.19.string.lin|
000c51a0  65 20 65 6e 64 20 31 0a  32 30 09 73 74 72 69 6e  |e end 1.20.strin|
000c51b0  67 09 6c 69 6e 65 20 65  6e 64 20 32 0a 32 31 09  |g.line end 2.21.|
000c51c0  73 74 72 69 6e 67 09 6c  69 6e 65 20 65 6e 64 20  |string.line end |
000c51d0  33 0a 32 32 09 73 74 72  69 6e 67 09 7a 65 72 6f  |3.22.string.zero|
000c51e0  20 73 6b 69 70 0a 32 33  09 73 74 72 69 6e 67 09  | skip.23.string.|
000c51f0  6c 69 6e 65 20 73 74 61  72 74 20 31 0a 32 34 09  |line start 1.24.|
000c5200  73 74 72 69 6e 67 09 6c  69 6e 65 20 73 74 61 72  |string.line star|
000c5210  74 20 32 0a 32 35 09 73  74 72 69 6e 67 09 6c 69  |t 2.25.string.li|
000c5220  6e 65 20 70 61 73 73 20  31 0a 32 36 09 73 74 72  |ne pass 1.26.str|
000c5230  69 6e 67 09 6c 69 6e 65  20 70 61 73 73 20 31 62  |ing.line pass 1b|
000c5240  0a 32 37 09 73 74 72 69  6e 67 09 6c 69 6e 65 20  |.27.string.line |
000c5250  70 61 73 73 20 32 0a 32  38 09 73 74 72 69 6e 67  |pass 2.28.string|
000c5260  09 6c 69 6e 65 20 70 61  73 73 20 32 62 0a 32 39  |.line pass 2b.29|
000c5270  09 73 74 72 69 6e 67 09  6c 69 6e 65 20 70 61 73  |.string.line pas|
000c5280  73 20 33 0a 33 30 09 73  74 72 69 6e 67 09 6c 69  |s 3.30.string.li|
000c5290  6e 65 20 70 61 73 73 20  33 62 0a 33 31 09 73 74  |ne pass 3b.31.st|
000c52a0  72 69 6e 67 09 6c 69 6e  65 20 70 61 73 73 20 34  |ring.line pass 4|
000c52b0  0a 33 32 09 73 74 72 69  6e 67 09 6c 69 6e 65 20  |.32.string.line |
000c52c0  70 61 73 73 20 34 62 0a  33 33 09 73 74 72 69 6e  |pass 4b.33.strin|
000c52d0  67 09 73 65 74 20 6c 69  6e 65 73 0a 33 34 09 62  |g.set lines.34.b|
000c52e0  79 74 65 09 28 66 72 6f  6d 20 70 61 67 65 20 68  |yte.(from page h|
000c52f0  65 69 67 68 74 29 09 6c  69 6e 65 20 70 65 72 20  |eight).line per |
000c5300  70 61 67 65 0a 33 35 09  62 79 74 65 09 28 61 6c  |page.35.byte.(al|
000c5310  77 61 79 73 20 31 2f 36  22 29 09 09 6c 65 61 64  |ways 1/6")..lead|
000c5320  69 6e 67 20 7a 65 72 6f  73 20 74 6f 20 6c 65 61  |ing zeros to lea|
000c5330  76 65 0a 33 36 09 77 6f  72 64 09 28 66 72 6f 6d  |ve.36.word.(from|
000c5340  20 73 6b 69 70 20 72 65  73 6f 6c 75 74 69 6f 6e  | skip resolution|
000c5350  29 09 6d 75 6c 74 69 70  6c 69 65 72 20 66 72 6f  |).multiplier fro|
000c5360  6d 20 6f 75 74 70 75 74  20 44 50 49 20 74 6f 20  |m output DPI to |
000c5370  73 6b 69 70 0a 34 30 09  77 6f 72 64 09 28 66 72  |skip.40.word.(fr|
000c5380  6f 6d 20 73 6b 69 70 20  72 65 73 6f 6c 75 74 69  |om skip resoluti|
000c5390  6f 6e 29 09 64 69 76 69  64 65 72 20 66 72 6f 6d  |on).divider from|
000c53a0  20 6f 75 74 70 75 74 20  44 50 49 20 74 6f 20 73  | output DPI to s|
000c53b0  6b 69 70 0a 34 34 09 77  6f 72 64 09 28 61 6c 77  |kip.44.word.(alw|
000c53c0  61 79 73 20 31 22 29 09  09 73 68 6f 72 74 20 61  |ays 1")..short a|
000c53d0  64 76 61 6e 63 65 20 66  6f 72 20 72 6f 6c 6c 20  |dvance for roll |
000c53e0  70 61 70 65 72 20 28 70  69 78 65 6c 73 29 0a 34  |paper (pixels).4|
000c53f0  38 09 73 74 72 69 6e 67  09 66 6f 72 6d 20 66 65  |8.string.form fe|
000c5400  65 64 0a 34 39 09 62 79  74 65 09 20 09 09 09 30  |ed.49.byte. ...0|
000c5410  20 28 72 65 73 65 72 76  65 64 29 0a 35 30 09 62  | (reserved).50.b|
000c5420  79 74 65 09 20 09 09 09  30 20 28 72 65 73 65 72  |yte. ...0 (reser|
000c5430  76 65 64 29 0a 35 31 09  62 79 74 65 09 20 09 09  |ved).51.byte. ..|
000c5440  09 30 20 28 72 65 73 65  72 76 65 64 29 0a 35 32  |.0 (reserved).52|
000c5450  09 77 6f 72 64 09 70 61  70 65 72 20 78 20 6f 66  |.word.paper x of|
000c5460  66 73 65 74 0a 35 36 09  77 6f 72 64 09 70 61 70  |fset.56.word.pap|
000c5470  65 72 20 79 20 6f 66 66  73 65 74 0a 23 53 75 62  |er y offset.#Sub|
000c5480  70 61 67 65 20 73 74 72  69 6e 67 0a 53 74 72 69  |page string.Stri|
000c5490  6e 67 20 73 74 72 75 63  74 75 72 65 0a 4f 66 66  |ng structure.Off|
000c54a0  73 65 74 09 43 6f 6e 74  65 6e 74 73 0a 23 4c 69  |set.Contents.#Li|
000c54b0  6e 65 0a 30 09 6c 65 6e  67 74 68 20 6f 66 20 73  |ne.0.length of s|
000c54c0  74 72 69 6e 67 0a 31 09  73 74 72 69 6e 67 20 28  |tring.1.string (|
000c54d0  7b 2a 7d 75 6e 7b 2a 7d  74 65 72 6d 69 6e 61 74  |{*}un{*}terminat|
000c54e0  65 64 29 0a 44 41 54 41  4d 01 00 00 50 44 75 6d  |ed).DATAM...PDum|
000c54f0  70 65 72 5f 43 6f 70 79  46 69 6c 65 6e 61 6d 65  |per_CopyFilename|
000c5500  20 20 28 26 34 31 42 30  39 29 0a 23 50 61 72 65  |  (&41B09).#Pare|
000c5510  6e 74 20 50 44 75 6d 70  65 72 5f 0a 3d 3e 09 52  |nt PDumper_.=>.R|
000c5520  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 62  |0 =.pointer to b|
000c5530  75 66 66 65 72 20 66 6f  72 20 72 65 73 75 6c 74  |uffer for result|
000c5540  69 6e 67 20 73 74 72 69  6e 67 0a 09 52 31 20 3d  |ing string..R1 =|
000c5550  09 73 69 7a 65 20 6f 66  20 62 75 66 66 65 72 0a  |.size of buffer.|
000c5560  09 52 32 20 3d 09 73 74  72 69 6e 67 20 74 6f 20  |.R2 =.string to |
000c5570  62 65 20 63 6f 70 69 65  64 20 28 63 6f 6e 74 72  |be copied (contr|
000c5580  6f 6c 20 6f 72 20 73 70  61 63 65 20 74 65 72 6d  |ol or space term|
000c5590  69 6e 61 74 65 64 29 0a  3c 3d 09 52 30 20 3d 09  |inated).<=.R0 =.|
000c55a0  70 6f 69 6e 74 65 72 20  74 6f 20 62 79 74 65 20  |pointer to byte |
000c55b0  2a 61 66 74 65 72 2a 20  74 65 72 6d 69 6e 61 74  |*after* terminat|
000c55c0  69 6e 67 20 7a 65 72 6f  20 69 6e 20 62 75 66 66  |ing zero in buff|
000c55d0  65 72 0a 09 52 32 20 3d  09 70 6f 69 6e 74 65 72  |er..R2 =.pointer|
000c55e0  20 74 6f 20 6c 61 73 74  20 63 68 61 72 61 63 74  | to last charact|
000c55f0  65 72 20 63 6f 70 69 65  64 20 66 72 6f 6d 20 73  |er copied from s|
000c5600  74 72 69 6e 67 0a 0a 54  68 69 73 20 53 57 49 20  |tring..This SWI |
000c5610  63 6f 70 69 65 73 20 61  20 66 69 6c 65 6e 61 6d  |copies a filenam|
000c5620  65 20 69 6e 74 6f 20 61  20 62 75 66 66 65 72 2e  |e into a buffer.|
000c5630  0a 00 00 00 44 41 54 41  7a 01 00 00 50 44 75 6d  |....DATAz...PDum|
000c5640  70 65 72 5f 46 69 6e 64  20 20 28 26 34 31 42 30  |per_Find  (&41B0|
000c5650  33 29 0a 23 50 61 72 65  6e 74 20 50 44 75 6d 70  |3).#Parent PDump|
000c5660  65 72 5f 0a 3d 3e 09 52  30 20 3d 09 70 6f 69 6e  |er_.=>.R0 =.poin|
000c5670  74 65 72 20 74 6f 20 61  6e 63 68 6f 72 20 77 6f  |ter to anchor wo|
000c5680  72 64 0a 09 52 32 20 3d  09 74 61 67 20 6f 66 20  |rd..R2 =.tag of |
000c5690  62 6c 6f 63 6b 20 74 6f  20 66 69 6e 64 0a 3c 3d  |block to find.<=|
000c56a0  09 52 32 20 3d 09 70 6f  69 6e 74 65 72 20 74 6f  |.R2 =.pointer to|
000c56b0  20 66 6f 75 6e 64 20 62  6c 6f 63 6b 0a 0a 54 68  | found block..Th|
000c56c0  69 73 20 53 57 49 20 73  63 61 6e 73 20 74 68 65  |is SWI scans the|
000c56d0  20 64 75 6d 70 65 72 27  73 20 63 68 61 69 6e 20  | dumper's chain |
000c56e0  73 70 65 63 69 66 69 65  64 20 62 79 20 74 68 65  |specified by the|
000c56f0  20 61 6e 63 68 6f 72 20  77 6f 72 64 20 70 61 73  | anchor word pas|
000c5700  73 65 64 20 69 6e 20 52  30 20 28 75 73 75 61 6c  |sed in R0 (usual|
000c5710  6c 79 20 74 68 65 20 6d  6f 64 75 6c 65 27 73 20  |ly the module's |
000c5720  70 72 69 76 61 74 65 20  77 6f 72 64 29 20 66 6f  |private word) fo|
000c5730  72 20 61 20 62 6c 6f 63  6b 20 74 68 61 74 20 6d  |r a block that m|
000c5740  61 74 63 68 65 73 20 74  68 65 20 73 70 65 63 69  |atches the speci|
000c5750  66 69 65 64 20 74 61 67  2e 20 54 68 65 20 66 69  |fied tag. The fi|
000c5760  72 73 74 20 6d 61 74 63  68 69 6e 67 20 74 61 67  |rst matching tag|
000c5770  20 66 6f 75 6e 64 20 69  73 20 72 65 74 75 72 6e  | found is return|
000c5780  65 64 20 2d 20 69 66 20  6e 6f 6e 65 20 61 72 65  |ed - if none are|
000c5790  20 66 6f 75 6e 64 20 61  6e 20 65 72 72 6f 72 20  | found an error |
000c57a0  69 73 20 67 65 6e 65 72  61 74 65 64 2e 0a 00 00  |is generated....|
000c57b0  44 41 54 41 fd 00 00 00  50 44 75 6d 70 65 72 5f  |DATA....PDumper_|
000c57c0  46 72 65 65 20 20 28 26  34 31 42 30 32 29 0a 23  |Free  (&41B02).#|
000c57d0  50 61 72 65 6e 74 20 50  44 75 6d 70 65 72 5f 0a  |Parent PDumper_.|
000c57e0  3d 3e 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |=>.R0 =.pointer |
000c57f0  74 6f 20 61 6e 63 68 6f  72 20 77 6f 72 64 0a 09  |to anchor word..|
000c5800  52 32 20 3d 09 70 6f 69  6e 74 65 72 20 74 6f 20  |R2 =.pointer to |
000c5810  62 6c 6f 63 6b 20 74 6f  20 72 65 6c 65 61 73 65  |block to release|
000c5820  0a 0a 54 68 69 73 20 53  57 49 20 72 65 6c 65 61  |..This SWI relea|
000c5830  73 65 73 20 61 20 62 6c  6f 63 6b 20 6f 66 20 6d  |ses a block of m|
000c5840  65 6d 6f 72 79 20 66 72  6f 6d 20 74 68 65 20 64  |emory from the d|
000c5850  75 6d 70 65 72 27 73 20  63 68 61 69 6e 20 73 70  |umper's chain sp|
000c5860  65 63 69 66 69 65 64 20  62 79 20 74 68 65 20 61  |ecified by the a|
000c5870  6e 63 68 6f 72 20 77 6f  72 64 20 70 61 73 73 65  |nchor word passe|
000c5880  64 20 69 6e 20 52 30 20  28 75 73 75 61 6c 6c 79  |d in R0 (usually|
000c5890  20 74 68 65 20 6d 6f 64  75 6c 65 27 73 20 70 72  | the module's pr|
000c58a0  69 76 61 74 65 20 77 6f  72 64 29 2e 0a 00 00 00  |ivate word).....|
000c58b0  44 41 54 41 80 00 00 00  50 44 75 6d 70 65 72 20  |DATA....PDumper |
000c58c0  68 61 6c 66 74 6f 6e 69  6e 67 20 69 6e 66 6f 72  |halftoning infor|
000c58d0  6d 61 74 69 6f 6e 20 0a  42 69 74 73 09 4d 65 61  |mation .Bits.Mea|
000c58e0  6e 69 6e 67 0a 23 4c 69  6e 65 0a 30 2d 37 09 68  |ning.#Line.0-7.h|
000c58f0  6f 72 69 7a 6f 6e 74 61  6c 20 72 65 73 6f 6c 75  |orizontal resolu|
000c5900  74 69 6f 6e 20 28 70 69  78 65 6c 73 29 0a 38 2d  |tion (pixels).8-|
000c5910  31 35 09 76 65 72 74 69  63 61 6c 20 72 65 73 6f  |15.vertical reso|
000c5920  6c 75 74 69 6f 6e 20 28  70 69 78 65 6c 73 29 0a  |lution (pixels).|
000c5930  44 41 54 41 52 01 00 00  50 44 75 6d 70 65 72 5f  |DATAR...PDumper_|
000c5940  49 6e 66 6f 20 20 28 26  34 31 42 30 30 29 0a 23  |Info  (&41B00).#|
000c5950  50 61 72 65 6e 74 20 50  44 75 6d 70 65 72 5f 0a  |Parent PDumper_.|
000c5960  23 57 72 61 70 20 6f 66  66 0a 3c 3d 09 52 30 20  |#Wrap off.<=.R0 |
000c5970  3d 09 76 65 72 73 69 6f  6e 20 6e 75 6d 62 65 72  |=.version number|
000c5980  20 2a 20 31 30 30 0a 09  52 31 20 3d 09 3c 6f 70  | * 100..R1 =.<op|
000c5990  74 69 6f 6e 73 20 73 75  70 70 6f 72 74 65 64 3d  |tions supported=|
000c59a0  3e 2e 6f 70 74 69 6f 6e  73 3e 0a 23 57 72 61 70  |>.options>.#Wrap|
000c59b0  20 6f 6e 0a 0a 54 68 69  73 20 53 57 49 20 72 65  | on..This SWI re|
000c59c0  74 75 72 6e 73 20 69 6e  66 6f 72 6d 61 74 69 6f  |turns informatio|
000c59d0  6e 20 61 62 6f 75 74 20  74 68 65 20 50 44 75 6d  |n about the PDum|
000c59e0  70 65 72 20 73 75 70 70  6f 72 74 20 6d 6f 64 75  |per support modu|
000c59f0  6c 65 2e 0a 23 53 75 62  70 61 67 65 20 6f 70 74  |le..#Subpage opt|
000c5a00  69 6f 6e 73 0a 50 44 75  6d 70 65 72 20 6f 70 74  |ions.PDumper opt|
000c5a10  69 6f 6e 73 0a 42 69 74  20 73 65 74 09 4f 70 74  |ions.Bit set.Opt|
000c5a20  69 6f 6e 20 73 75 70 70  6f 72 74 65 64 0a 23 4c  |ion supported.#L|
000c5a30  69 6e 65 0a 30 09 68 61  6c 66 74 6f 6e 65 20 67  |ine.0.halftone g|
000c5a40  72 65 79 0a 31 09 65 72  72 6f 72 20 64 69 66 66  |rey.1.error diff|
000c5a50  75 73 65 20 67 72 65 79  0a 32 09 68 61 6c 66 74  |use grey.2.halft|
000c5a60  6f 6e 65 20 63 6f 6c 6f  75 72 0a 33 09 65 72 72  |one colour.3.err|
000c5a70  6f 72 20 64 69 66 66 75  73 65 20 63 6f 6c 6f 75  |or diffuse colou|
000c5a80  72 0a 00 00 44 41 54 41  b7 01 00 00 50 44 75 6d  |r...DATA....PDum|
000c5a90  70 65 72 5f 4c 6f 6f 6b  75 70 45 72 72 6f 72 20  |per_LookupError |
000c5aa0  20 28 26 34 31 42 30 38  29 0a 23 50 61 72 65 6e  | (&41B08).#Paren|
000c5ab0  74 20 50 44 75 6d 70 65  72 5f 0a 3d 3e 09 52 30  |t PDumper_.=>.R0|
000c5ac0  20 3d 09 70 6f 69 6e 74  65 72 20 74 6f 20 3c 65  | =.pointer to <e|
000c5ad0  72 72 6f 72 20 62 6c 6f  63 6b 3d 3e 4d 65 73 73  |rror block=>Mess|
000c5ae0  61 67 65 54 72 61 6e 73  5f 65 72 72 6f 72 62 6c  |ageTrans_errorbl|
000c5af0  6f 63 6b 3e 20 77 69 74  68 20 6d 65 73 73 61 67  |ock> with messag|
000c5b00  65 20 74 6f 6b 65 6e 0a  09 52 31 20 3d 09 30 2c  |e token..R1 =.0,|
000c5b10  20 6f 72 20 73 74 72 69  6e 67 20 74 6f 20 73 75  | or string to su|
000c5b20  62 73 74 69 74 75 74 65  20 66 6f 72 20 22 25 30  |bstitute for "%0|
000c5b30  22 0a 3c 3d 09 52 30 20  3d 09 72 65 73 6f 6c 76  |".<=.R0 =.resolv|
000c5b40  65 64 20 65 72 72 6f 72  20 62 6c 6f 63 6b 0a 09  |ed error block..|
000c5b50  56 20 73 65 74 0a 0a 54  68 69 73 20 53 57 49 20  |V set..This SWI |
000c5b60  6c 6f 6f 6b 73 20 75 70  20 74 68 65 20 74 6f 6b  |looks up the tok|
000c5b70  65 6e 20 70 61 73 73 65  64 20 69 6e 20 76 69 61  |en passed in via|
000c5b80  20 52 30 20 69 6e 20 52  65 73 6f 75 72 63 65 73  | R0 in Resources|
000c5b90  3a 24 2e 52 65 73 6f 75  72 63 65 73 2e 50 44 72  |:$.Resources.PDr|
000c5ba0  69 76 65 72 73 2e 4d 65  73 73 61 67 65 73 2c 20  |ivers.Messages, |
000c5bb0  61 6e 64 20 70 65 72 66  6f 72 6d 73 20 3c 4d 65  |and performs <Me|
000c5bc0  73 73 61 67 65 54 72 61  6e 73 3d 3e 4d 65 73 73  |ssageTrans=>Mess|
000c5bd0  61 67 65 54 72 61 6e 73  5f 3e 20 73 74 79 6c 65  |ageTrans_> style|
000c5be0  20 73 75 62 73 74 69 74  75 74 69 6f 6e 2e 20 54  | substitution. T|
000c5bf0  68 69 73 20 73 61 76 65  73 20 74 68 65 20 6f 76  |his saves the ov|
000c5c00  65 72 68 65 61 64 20 6f  66 20 4d 65 73 73 61 67  |erhead of Messag|
000c5c10  65 54 72 61 6e 73 20 72  6f 75 74 69 6e 65 73 20  |eTrans routines |
000c5c20  77 69 74 68 69 6e 20 74  68 65 20 70 72 69 6e 74  |within the print|
000c5c30  65 72 20 64 75 6d 70 65  72 2e 0a 00 44 41 54 41  |er dumper...DATA|
000c5c40  f7 00 00 00 50 44 75 6d  70 65 72 20 6e 75 6d 62  |....PDumper numb|
000c5c50  65 72 73 0a 23 50 61 72  65 6e 74 20 50 44 72 69  |ers.#Parent PDri|
000c5c60  76 65 72 5f 4d 69 73 63  4f 70 38 30 30 30 30 30  |ver_MiscOp800000|
000c5c70  30 30 0a 23 57 72 61 70  20 6f 66 66 0a 4e 75 6d  |00.#Wrap off.Num|
000c5c80  62 65 72 09 4d 6f 64 75  6c 65 09 09 50 72 69 6e  |ber.Module..Prin|
000c5c90  74 65 72 0a 23 4c 69 6e  65 0a 30 09 50 44 75 6d  |ter.#Line.0.PDum|
000c5ca0  70 65 72 53 50 09 53 70  72 69 74 65 20 44 65 76  |perSP.Sprite Dev|
000c5cb0  69 63 65 0a 31 09 50 44  75 6d 62 65 72 44 4d 09  |ice.1.PDumberDM.|
000c5cc0  44 6f 74 20 6d 61 74 72  69 78 0a 32 09 50 44 75  |Dot matrix.2.PDu|
000c5cd0  6d 62 65 72 4c 4a 09 4c  61 73 65 72 4a 65 74 0a  |mberLJ.LaserJet.|
000c5ce0  33 09 50 44 75 6d 62 65  72 49 57 09 49 6d 61 67  |3.PDumberIW.Imag|
000c5cf0  65 57 72 69 74 65 72 0a  34 09 50 44 75 6d 62 65  |eWriter.4.PDumbe|
000c5d00  72 32 34 09 44 6f 74 20  72 65 64 75 63 69 6e 67  |r24.Dot reducing|
000c5d10  20 32 34 20 70 69 6e 0a  35 09 50 44 75 6d 62 65  | 24 pin.5.PDumbe|
000c5d20  72 44 4a 09 43 6f 6c 6f  75 72 20 44 65 73 6b 6a  |rDJ.Colour Deskj|
000c5d30  65 74 0a 00 44 41 54 41  32 02 00 00 50 44 75 6d  |et..DATA2...PDum|
000c5d40  70 65 72 5f 50 72 65 70  61 72 65 53 74 72 69 70  |per_PrepareStrip|
000c5d50  20 20 28 26 34 31 42 30  37 29 0a 23 50 61 72 65  |  (&41B07).#Pare|
000c5d60  6e 74 20 50 44 75 6d 70  65 72 5f 0a 3d 3e 09 52  |nt PDumper_.=>.R|
000c5d70  30 20 3d 09 70 6f 69 6e  74 65 72 20 74 6f 20 61  |0 =.pointer to a|
000c5d80  6e 63 68 6f 72 20 77 6f  72 64 0a 09 52 31 20 3d  |nchor word..R1 =|
000c5d90  09 70 6f 69 6e 74 65 72  20 74 6f 20 62 69 74 20  |.pointer to bit |
000c5da0  69 6d 61 67 65 20 64 61  74 61 0a 09 52 32 20 3d  |image data..R2 =|
000c5db0  09 3c 73 74 72 69 70 20  66 6f 72 6d 61 74 3d 3e  |.<strip format=>|
000c5dc0  2e 73 74 72 69 70 3e 0a  09 52 33 20 3d 09 6f 75  |.strip>..R3 =.ou|
000c5dd0  74 70 75 74 20 64 75 6d  70 20 77 69 64 74 68 20  |tput dump width |
000c5de0  28 70 69 78 65 6c 73 29  0a 09 52 34 20 3d 09 73  |(pixels)..R4 =.s|
000c5df0  74 72 69 70 20 68 65 69  67 68 74 20 28 70 69 78  |trip height (pix|
000c5e00  65 6c 73 29 0a 09 52 35  20 3d 09 73 74 72 69 70  |els)..R5 =.strip|
000c5e10  20 77 69 64 74 68 20 28  62 79 74 65 73 20 2d 20  | width (bytes - |
000c5e20  61 64 64 20 74 6f 20 52  31 20 74 6f 20 64 65 73  |add to R1 to des|
000c5e30  63 65 6e 64 20 31 20 6c  69 6e 65 29 0a 09 52 36  |cend 1 line)..R6|
000c5e40  20 3d 09 3c 68 61 6c 66  74 6f 6e 69 6e 67 20 69  | =.<halftoning i|
000c5e50  6e 66 6f 72 6d 61 74 69  6f 6e 3d 3e 50 44 75 6d  |nformation=>PDum|
000c5e60  70 65 72 5f 68 61 6c 66  74 6f 6e 69 6e 67 3e 0a  |per_halftoning>.|
000c5e70  0a 54 68 69 73 20 53 57  49 20 70 72 6f 63 65 73  |.This SWI proces|
000c5e80  73 65 73 20 74 68 65 20  38 20 62 69 74 2d 70 65  |ses the 8 bit-pe|
000c5e90  72 2d 70 69 78 65 6c 20  62 69 74 6d 61 70 20 67  |r-pixel bitmap g|
000c5ea0  65 6e 65 72 61 74 65 64  20 62 79 20 50 44 72 69  |enerated by PDri|
000c5eb0  76 65 72 44 50 20 69 6e  74 6f 20 61 20 66 6f 72  |verDP into a for|
000c5ec0  6d 61 74 20 66 6f 72 20  74 68 65 20 6f 75 74 70  |mat for the outp|
000c5ed0  75 74 20 72 6f 75 74 69  6e 65 2e 0a 23 53 75 62  |ut routine..#Sub|
000c5ee0  70 61 67 65 20 73 74 72  69 70 0a 50 44 75 6d 70  |page strip.PDump|
000c5ef0  65 72 20 73 74 72 69 70  20 66 6f 72 6d 61 74 0a  |er strip format.|
000c5f00  56 61 6c 75 65 09 4d 65  61 6e 69 6e 67 0a 23 4c  |Value.Meaning.#L|
000c5f10  69 6e 65 0a 30 09 68 61  6c 66 74 6f 6e 65 64 20  |ine.0.halftoned |
000c5f20  67 72 65 79 20 6c 65 76  65 6c 0a 31 09 64 69 66  |grey level.1.dif|
000c5f30  66 75 73 65 64 20 67 72  65 79 20 6c 65 76 65 6c  |fused grey level|
000c5f40  0a 32 09 68 61 6c 66 74  6f 6e 65 64 20 63 6f 6c  |.2.halftoned col|
000c5f50  6f 75 72 0a 33 09 64 69  66 66 75 73 65 64 20 63  |our.3.diffused c|
000c5f60  6f 6c 6f 75 72 0a 00 00  44 41 54 41 7a 00 00 00  |olour...DATAz...|
000c5f70  50 44 75 6d 70 65 72 20  72 65 73 6f 6c 75 74 69  |PDumper resoluti|
000c5f80  6f 6e 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 0a  |on information .|
000c5f90  42 69 74 73 09 4d 65 61  6e 69 6e 67 0a 23 4c 69  |Bits.Meaning.#Li|
000c5fa0  6e 65 0a 30 2d 37 09 68  6f 72 69 7a 6f 6e 74 61  |ne.0-7.horizonta|
000c5fb0  6c 20 72 65 73 6f 6c 75  74 69 6f 6e 20 28 44 50  |l resolution (DP|
000c5fc0  49 29 0a 38 2d 31 35 09  76 65 72 74 69 63 61 6c  |I).8-15.vertical|
000c5fd0  20 72 65 73 6f 6c 75 74  69 6f 6e 20 28 44 50 49  | resolution (DPI|
000c5fe0  29 0a 00 00 44 41 54 41  06 02 00 00 50 44 75 6d  |)...DATA....PDum|
000c5ff0  70 65 72 5f 53 65 74 43  6f 6c 6f 75 72 20 20 28  |per_SetColour  (|
000c6000  26 34 31 42 30 36 29 0a  23 50 61 72 65 6e 74 20  |&41B06).#Parent |
000c6010  50 44 75 6d 70 65 72 5f  0a 3d 3e 09 52 30 20 3d  |PDumper_.=>.R0 =|
000c6020  09 70 6f 69 6e 74 65 72  20 74 6f 20 61 6e 63 68  |.pointer to anch|
000c6030  6f 72 20 77 6f 72 64 0a  09 52 31 20 3d 09 70 68  |or word..R1 =.ph|
000c6040  79 73 69 63 61 6c 20 63  6f 6c 6f 75 72 20 28 26  |ysical colour (&|
000c6050  42 42 47 47 52 52 30 30  29 0a 09 52 32 20 3d 09  |BBGGRR00)..R2 =.|
000c6060  3c 73 74 72 69 70 20 69  6e 66 6f 72 6d 61 74 69  |<strip informati|
000c6070  6f 6e 3d 3e 2e 73 74 72  69 70 3e 0a 09 52 34 20  |on=>.strip>..R4 |
000c6080  3d 09 3c 68 61 6c 66 74  6f 6e 69 6e 67 20 69 6e  |=.<halftoning in|
000c6090  66 6f 72 6d 61 74 69 6f  6e 3d 3e 50 44 75 6d 70  |formation=>PDump|
000c60a0  65 72 5f 68 61 6c 66 74  6f 6e 69 6e 67 3e 0a 3c  |er_halftoning>.<|
000c60b0  3d 09 52 33 20 3d 09 73  74 72 69 70 20 74 79 70  |=.R3 =.strip typ|
000c60c0  65 20 64 65 70 65 6e 64  61 6e 74 20 63 6f 6c 6f  |e dependant colo|
000c60d0  75 72 20 6e 75 6d 62 65  72 0a 0a 54 68 69 73 20  |ur number..This |
000c60e0  53 57 49 20 70 72 6f 63  65 73 73 65 73 20 74 68  |SWI processes th|
000c60f0  65 20 63 6f 6c 6f 75 72  20 73 65 74 74 69 6e 67  |e colour setting|
000c6100  2c 20 73 63 61 6e 73 20  74 68 65 20 63 68 61 69  |, scans the chai|
000c6110  6e 20 66 6f 72 20 61 6e  79 20 70 61 6c 65 74 74  |n for any palett|
000c6120  65 20 62 6c 6f 63 6b 2c  20 72 65 74 75 72 6e 69  |e block, returni|
000c6130  6e 67 20 61 20 73 75 69  74 61 62 6c 65 20 63 6f  |ng a suitable co|
000c6140  6c 6f 75 72 20 6e 75 6d  62 65 72 2e 0a 0a 4e 6f  |lour number...No|
000c6150  74 65 3a 20 52 33 20 6d  61 79 20 62 65 63 6f 6d  |te: R3 may becom|
000c6160  65 20 63 6f 72 72 75 70  74 65 64 20 6f 6e 20 65  |e corrupted on e|
000c6170  72 72 6f 72 2e 0a 23 53  75 62 70 61 67 65 20 73  |rror..#Subpage s|
000c6180  74 72 69 70 0a 50 44 75  6d 70 65 72 20 73 74 72  |trip.PDumper str|
000c6190  69 70 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 0a  |ip information .|
000c61a0  42 69 74 73 09 4d 65 61  6e 69 6e 67 0a 23 4c 69  |Bits.Meaning.#Li|
000c61b0  6e 65 0a 30 2d 37 09 3c  73 74 72 69 70 20 74 79  |ne.0-7.<strip ty|
000c61c0  70 65 3d 3e 50 44 75 6d  70 65 72 5f 73 74 72 69  |pe=>PDumper_stri|
000c61d0  70 74 79 70 65 73 3e 0a  32 34 2d 33 31 09 70 61  |ptypes>.24-31.pa|
000c61e0  73 73 20 6e 75 6d 62 65  72 0a 00 00 44 41 54 41  |ss number...DATA|
000c61f0  5d 01 00 00 50 44 75 6d  70 65 72 5f 53 74 61 72  |]...PDumper_Star|
000c6200  74 4a 6f 62 20 20 28 26  34 31 42 30 34 29 0a 23  |tJob  (&41B04).#|
000c6210  50 61 72 65 6e 74 20 50  44 75 6d 70 65 72 5f 0a  |Parent PDumper_.|
000c6220  3d 3e 09 52 30 20 3d 09  70 6f 69 6e 74 65 72 20  |=>.R0 =.pointer |
000c6230  74 6f 20 61 6e 63 68 6f  72 20 77 6f 72 64 0a 09  |to anchor word..|
000c6240  52 31 20 3d 09 30 20 28  66 6c 61 67 73 20 61 6c  |R1 =.0 (flags al|
000c6250  6c 20 72 65 73 65 72 76  65 64 29 0a 09 52 32 20  |l reserved)..R2 |
000c6260  3d 09 66 69 6c 65 6e 61  6d 65 20 6f 66 20 70 61  |=.filename of pa|
000c6270  6c 65 74 74 65 20 74 6f  20 6c 6f 61 64 2c 20 6f  |lette to load, o|
000c6280  72 20 30 20 66 6f 72 20  6e 6f 6e 65 0a 0a 54 68  |r 0 for none..Th|
000c6290  69 73 20 53 57 49 20 73  65 74 73 20 75 70 20 61  |is SWI sets up a|
000c62a0  6e 79 20 77 6f 72 6b 73  70 61 63 65 20 6e 65 65  |ny workspace nee|
000c62b0  64 65 64 20 66 6f 72 20  61 20 6a 6f 62 2c 20 74  |ded for a job, t|
000c62c0  68 65 20 73 75 70 70 6f  72 74 20 6d 6f 64 75 6c  |he support modul|
000c62d0  65 20 6c 69 6e 6b 69 6e  67 20 74 68 69 73 20 69  |e linking this i|
000c62e0  6e 74 6f 20 74 68 65 20  73 70 65 63 69 66 69 65  |nto the specifie|
000c62f0  64 20 63 68 61 69 6e 2e  20 49 66 20 61 20 70 61  |d chain. If a pa|
000c6300  6c 65 74 74 65 20 66 69  6c 65 20 69 73 20 73 70  |lette file is sp|
000c6310  65 63 69 66 69 65 64 20  69 6e 20 52 32 20 69 74  |ecified in R2 it|
000c6320  20 69 73 20 6c 6f 61 64  65 64 20 69 6e 74 6f 20  | is loaded into |
000c6330  61 20 62 6c 6f 63 6b 20  77 69 74 68 20 61 20 74  |a block with a t|
000c6340  61 67 20 6f 66 20 31 2e  0a 00 00 00 44 41 54 41  |ag of 1.....DATA|
000c6350  68 00 00 00 50 44 75 6d  70 65 72 20 73 74 72 69  |h...PDumper stri|
000c6360  70 20 74 79 70 65 73 0a  23 50 61 72 65 6e 74 20  |p types.#Parent |
000c6370  50 44 75 6d 70 65 72 5f  0a 56 61 6c 75 65 09 4d  |PDumper_.Value.M|
000c6380  65 61 6e 69 6e 67 0a 23  4c 69 6e 65 0a 30 09 6d  |eaning.#Line.0.m|
000c6390  6f 6e 6f 63 68 72 6f 6d  65 0a 31 09 67 72 65 79  |onochrome.1.grey|
000c63a0  20 73 63 61 6c 65 0a 32  09 32 35 36 20 63 6f 6c  | scale.2.256 col|
000c63b0  6f 75 72 0a 44 41 54 41  7a 01 00 00 50 44 75 6d  |our.DATAz...PDum|
000c63c0  70 65 72 5f 54 69 64 79  4a 6f 62 20 20 28 26 34  |per_TidyJob  (&4|
000c63d0  31 42 30 35 29 0a 23 50  61 72 65 6e 74 20 50 44  |1B05).#Parent PD|
000c63e0  75 6d 70 65 72 5f 0a 3d  3e 09 52 30 20 3d 09 70  |umper_.=>.R0 =.p|
000c63f0  6f 69 6e 74 65 72 20 74  6f 20 61 6e 63 68 6f 72  |ointer to anchor|
000c6400  20 77 6f 72 64 0a 09 52  31 20 3d 09 30 2c 20 6f  | word..R1 =.0, o|
000c6410  72 20 70 6f 69 6e 74 65  72 20 74 6f 20 6c 69 73  |r pointer to lis|
000c6420  74 20 6f 66 20 74 61 67  73 20 74 65 72 6d 69 6e  |t of tags termin|
000c6430  61 74 65 64 20 62 79 20  30 20 77 6f 72 64 2e 0a  |ated by 0 word..|
000c6440  09 52 32 20 3d 09 30 20  66 6f 72 20 65 6e 64 20  |.R2 =.0 for end |
000c6450  6f 66 20 70 61 67 65 2c  20 65 6c 73 65 20 65 6e  |of page, else en|
000c6460  64 20 6f 66 20 64 6f 63  75 6d 65 6e 74 0a 0a 54  |d of document..T|
000c6470  68 69 73 20 53 57 49 20  72 65 6c 65 61 73 65 73  |his SWI releases|
000c6480  20 61 6e 79 20 77 6f 72  6b 73 70 61 63 65 20 75  | any workspace u|
000c6490  73 65 64 20 66 6f 72 20  61 20 6a 6f 62 2c 20 74  |sed for a job, t|
000c64a0  68 65 20 73 75 70 70 6f  72 74 20 6d 6f 64 75 6c  |he support modul|
000c64b0  65 20 75 6e 6c 69 6e 6b  69 6e 67 20 74 68 69 73  |e unlinking this|
000c64c0  20 66 72 6f 6d 20 74 68  65 20 73 70 65 63 69 66  | from the specif|
000c64d0  69 65 64 20 63 68 61 69  6e 2e 20 41 6e 79 20 74  |ied chain. Any t|
000c64e0  61 67 73 20 73 70 65 63  69 66 65 64 20 76 69 61  |ags specifed via|
000c64f0  20 52 31 2c 20 61 6e 64  20 61 6e 79 20 70 65 72  | R1, and any per|
000c6500  20 70 61 67 65 20 6f 72  20 70 65 72 20 64 6f 63  | page or per doc|
000c6510  75 6d 65 6e 74 20 72 65  73 6f 75 72 63 65 73 20  |ument resources |
000c6520  61 72 65 20 72 65 6c 65  61 73 65 64 2e 0a 00 00  |are released....|
000c6530